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:
Yu-hsin Wang
2022-05-13 14:01:25 +08:00
parent b07af1076c
commit c1b709e46d
2 changed files with 30 additions and 0 deletions

View File

@@ -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 *

View File

@@ -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;