Tuan Ta has uploaded this change for review. ( https://gem5-review.googlesource.com/8186

Change subject: arch: support issuing Atomic Mem Operation (AMO) requests
......................................................................

arch: support issuing Atomic Mem Operation (AMO) requests

This patch adds two new functions named amoMemAtomic used in Atomic CPU
model and initiateMemAMO used in Timing CPU models to issue AMO requests
to the memory system.

Change-Id: I962bdc0e5f25b72c170d96ebc136f29a2b230d5e
---
M src/arch/generic/memhelpers.hh
1 file changed, 32 insertions(+), 0 deletions(-)



diff --git a/src/arch/generic/memhelpers.hh b/src/arch/generic/memhelpers.hh
index 35e666b..6fe1707 100644
--- a/src/arch/generic/memhelpers.hh
+++ b/src/arch/generic/memhelpers.hh
@@ -121,4 +121,36 @@
     return fault;
 }

+/// Do atomic read-modify-write (AMO) in atomic mode
+template <class XC, class MemT>
+Fault
+amoMemAtomic(XC *xc, Trace::InstRecord *traceData, MemT &mem, Addr addr,
+             Request::Flags flags, AtomicOpFunctor *amo_op)
+{
+    assert(amo_op);
+
+    // mem will hold the previous value at addr after the AMO completes
+    memset(&mem, 0, sizeof(mem));
+
+    Fault fault = xc->amoMem(addr, (uint8_t *)&mem, sizeof(MemT), flags,
+                             amo_op);
+
+    if (fault == NoFault) {
+        mem = TheISA::gtoh(mem);
+        if (traceData)
+            traceData->setData(mem);
+    }
+    return fault;
+}
+
+/// Do atomic read-modify-wrote (AMO) in timing mode
+template <class XC, class MemT>
+Fault
+initiateMemAMO(XC *xc, Trace::InstRecord *traceData, Addr addr, MemT& mem,
+               Request::Flags flags, AtomicOpFunctor *amo_op)
+{
+    assert(amo_op);
+    return xc->initiateMemAMO(addr, sizeof(MemT), flags, amo_op);
+}
+
 #endif

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

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I962bdc0e5f25b72c170d96ebc136f29a2b230d5e
Gerrit-Change-Number: 8186
Gerrit-PatchSet: 1
Gerrit-Owner: Tuan Ta <q...@cornell.edu>
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to