From 7bab1d0aff897bc23b5677a51ae67b8cc32953dc Mon Sep 17 00:00:00 2001 From: Tuan Ta Date: Mon, 22 Jan 2018 12:54:14 -0500 Subject: base,mem: Support AtomicOpFunctor in the classic memory system AtomicOpFunctor can be used to implement atomic memory operations. AtomicOpFunctor is captured inside a memory request and executed directly in the memory hierarchy in a single step. This patch enables AtomicOpFunctor pointers to be included in a memory request and executed in a single step in the classic cache system. This patch also makes the copy constructor of Request class do a deep copy of AtomicOpFunctor object. This prevents a copy of a Request object from accessing a deleted AtomicOpFunctor object. Change-Id: I6649532b37f711e55f4552ad26893efeb300dd37 Reviewed-on: https://gem5-review.googlesource.com/8185 Reviewed-by: Nikos Nikoleris Maintainer: Nikos Nikoleris --- src/mem/packet.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/mem/packet.hh') diff --git a/src/mem/packet.hh b/src/mem/packet.hh index 5bc466bf1..5c041120a 100644 --- a/src/mem/packet.hh +++ b/src/mem/packet.hh @@ -841,7 +841,7 @@ class Packet : public Printable { if (req->isLLSC()) return MemCmd::StoreCondReq; - else if (req->isSwap()) + else if (req->isSwap() || req->isAtomic()) return MemCmd::SwapReq; else if (req->isCacheInvalidate()) { return req->isCacheClean() ? MemCmd::CleanInvalidReq : -- cgit v1.2.3