fastmodel: handling amba control signals
Change-Id: I7a62bdd4bfdb2bba4f7e186b049491b48782d7d8 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/59652 Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Jason Lowe-Power <power.jg@gmail.com> Maintainer: Jason Lowe-Power <power.jg@gmail.com>
This commit is contained in:
@@ -104,6 +104,7 @@ AmbaToTlmBridge64::bTransport(amba_pv::amba_pv_transaction &trans,
|
||||
sc_core::sc_time &t)
|
||||
{
|
||||
maybeSetupAtomicExtension(trans);
|
||||
setupControlExtension(trans);
|
||||
return initiatorProxy->b_transport(trans, t);
|
||||
}
|
||||
|
||||
@@ -169,6 +170,34 @@ AmbaToTlmBridge64::maybeSetupAtomicExtension(
|
||||
trans.set_extension(atomic_ex);
|
||||
}
|
||||
|
||||
void
|
||||
AmbaToTlmBridge64::setupControlExtension(amba_pv::amba_pv_transaction &trans)
|
||||
{
|
||||
Gem5SystemC::ControlExtension *control_ex = nullptr;
|
||||
trans.get_extension(control_ex);
|
||||
if (control_ex) {
|
||||
return;
|
||||
}
|
||||
|
||||
amba_pv::amba_pv_extension *amba_ex = nullptr;
|
||||
trans.get_extension(amba_ex);
|
||||
if (!amba_ex) {
|
||||
return;
|
||||
}
|
||||
|
||||
control_ex = new Gem5SystemC::ControlExtension();
|
||||
|
||||
control_ex->setPrivileged(amba_ex->is_privileged());
|
||||
control_ex->setSecure(!amba_ex->is_non_secure());
|
||||
control_ex->setInstruction(amba_ex->is_instruction());
|
||||
|
||||
if (trans.has_mm()) {
|
||||
trans.set_auto_extension(control_ex);
|
||||
} else {
|
||||
trans.set_extension(control_ex);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace fastmodel
|
||||
|
||||
fastmodel::AmbaToTlmBridge64 *
|
||||
|
||||
@@ -59,6 +59,7 @@ class AmbaToTlmBridge64 : public amba_pv::amba_pv_to_tlm_bridge<64>
|
||||
void invalidateDirectMemPtr(sc_dt::uint64 start_range,
|
||||
sc_dt::uint64 end_range);
|
||||
void maybeSetupAtomicExtension(amba_pv::amba_pv_transaction &trans);
|
||||
void setupControlExtension(amba_pv::amba_pv_transaction &trans);
|
||||
|
||||
tlm_utils::simple_target_socket<
|
||||
AmbaToTlmBridge64, 64, tlm::tlm_base_protocol_types> targetProxy;
|
||||
|
||||
Reference in New Issue
Block a user