Yu-hsin Wang has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/44645 )

Change subject: fastmodel: add amba_to_tlm_bridge hooks before going to gem5
......................................................................

fastmodel: add amba_to_tlm_bridge hooks before going to gem5

To handle atomic transaction, we need to convert amba far atomic
extension into gem5 atomic extension before going to gem5 world. This cl
prepares hooks that enables us to do the conversion.

Change-Id: I1b5a99c38f619689bd318253356928091a4fdb02
---
M src/arch/arm/fastmodel/amba_to_tlm_bridge.cc
M src/arch/arm/fastmodel/amba_to_tlm_bridge.hh
2 files changed, 55 insertions(+), 4 deletions(-)



diff --git a/src/arch/arm/fastmodel/amba_to_tlm_bridge.cc b/src/arch/arm/fastmodel/amba_to_tlm_bridge.cc
index a011e35..c306c12 100644
--- a/src/arch/arm/fastmodel/amba_to_tlm_bridge.cc
+++ b/src/arch/arm/fastmodel/amba_to_tlm_bridge.cc
@@ -32,11 +32,23 @@
 namespace FastModel
 {

-AmbaToTlmBridge64::AmbaToTlmBridge64(const char *name) :
+AmbaToTlmBridge64::AmbaToTlmBridge64(const sc_core::sc_module_name& name) :
     amba_pv::amba_pv_to_tlm_bridge<64>(name),
-    tlmWrapper(tlm_m, std::string(name) + ".tlm", -1),
+    proxy_tlm_s("proxy_tlm_s"),
+    proxy_tlm_m("proxy_tlm_m"),
+    tlmWrapper(proxy_tlm_m, std::string(name) + ".tlm", -1),
     ambaWrapper(amba_pv_s, std::string(name) + ".amba", -1)
-{}
+{
+    proxy_tlm_s.register_b_transport(
+        this, &AmbaToTlmBridge64::proxy_b_transport);
+    proxy_tlm_s.register_get_direct_mem_ptr(
+        this, &AmbaToTlmBridge64::proxy_get_direct_mem_ptr);
+    proxy_tlm_s.register_transport_dbg(
+        this, &AmbaToTlmBridge64::proxy_transport_dbg);
+    proxy_tlm_m.register_invalidate_direct_mem_ptr(
+        this, &AmbaToTlmBridge64::proxy_invalidate_direct_mem_ptr);
+    tlm_m(proxy_tlm_s);
+}

 Port &
 AmbaToTlmBridge64::gem5_getPort(const std::string &if_name, int idx)
@@ -49,6 +61,33 @@
return amba_pv::amba_pv_to_tlm_bridge<64>::gem5_getPort(if_name, idx);
 }

+void
+AmbaToTlmBridge64::proxy_b_transport(amba_pv::amba_pv_transaction &trans,
+                                     sc_core::sc_time &t)
+{
+    return proxy_tlm_m->b_transport(trans, t);
+}
+
+bool
+AmbaToTlmBridge64::proxy_get_direct_mem_ptr(amba_pv::amba_pv_transaction &trans,
+                                            tlm::tlm_dmi &dmi_data)
+{
+    return proxy_tlm_m->get_direct_mem_ptr(trans, dmi_data);
+}
+
+unsigned int
+AmbaToTlmBridge64::proxy_transport_dbg(amba_pv::amba_pv_transaction &trans)
+{
+    return proxy_tlm_m->transport_dbg(trans);
+}
+
+void
+AmbaToTlmBridge64::proxy_invalidate_direct_mem_ptr(sc_dt::uint64 start_range,
+                                                   sc_dt::uint64 end_range)
+{
+    proxy_tlm_s->invalidate_direct_mem_ptr(start_range, end_range);
+}
+
 } // namespace FastModel

 FastModel::AmbaToTlmBridge64 *
diff --git a/src/arch/arm/fastmodel/amba_to_tlm_bridge.hh b/src/arch/arm/fastmodel/amba_to_tlm_bridge.hh
index 8baee6a..ec8bed4 100644
--- a/src/arch/arm/fastmodel/amba_to_tlm_bridge.hh
+++ b/src/arch/arm/fastmodel/amba_to_tlm_bridge.hh
@@ -43,11 +43,23 @@
 class AmbaToTlmBridge64 : public amba_pv::amba_pv_to_tlm_bridge<64>
 {
   public:
-    AmbaToTlmBridge64(const char *name);
+    AmbaToTlmBridge64(const sc_core::sc_module_name &name);

     ::Port &gem5_getPort(const std::string &if_name, int idx=-1) override;

   private:
+    void proxy_b_transport(amba_pv::amba_pv_transaction &trans,
+                           sc_core::sc_time &t);
+    bool proxy_get_direct_mem_ptr(amba_pv::amba_pv_transaction &trans,
+                                  tlm::tlm_dmi &dmi_data);
+    unsigned int proxy_transport_dbg(amba_pv::amba_pv_transaction &trans);
+    void proxy_invalidate_direct_mem_ptr(sc_dt::uint64 start_range,
+                                         sc_dt::uint64 end_range);
+
+    tlm_utils::simple_target_socket<
+        AmbaToTlmBridge64, 64, tlm::tlm_base_protocol_types> proxy_tlm_s;
+    tlm_utils::simple_initiator_socket<
+        AmbaToTlmBridge64, 64, tlm::tlm_base_protocol_types> proxy_tlm_m;
     sc_gem5::TlmInitiatorWrapper<64> tlmWrapper;
     AmbaTarget ambaWrapper;
 };

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/44645
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I1b5a99c38f619689bd318253356928091a4fdb02
Gerrit-Change-Number: 44645
Gerrit-PatchSet: 1
Gerrit-Owner: Yu-hsin Wang <yuhsi...@google.com>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to