Jordi Vaquero has submitted this change. (
https://gem5-review.googlesource.com/c/public/gem5/+/19810 )
Change subject: arch-arm: Add TypeAtomicOp class to be used by new atomic
instructions
......................................................................
arch-arm: Add TypeAtomicOp class to be used by new atomic instructions
Creating a new object TypeAtomicOp that will be used by the atomic
instructions following gem5 AMO feature.
Change-Id: If082b596fb37d7a1cb569a4320c23505591df6a5
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19810
Reviewed-by: Giacomo Travaglini <giacomo.travagl...@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travagl...@arm.com>
Tested-by: kokoro <noreply+kok...@google.com>
---
M src/arch/arm/insts/mem64.hh
1 file changed, 46 insertions(+), 0 deletions(-)
Approvals:
Giacomo Travaglini: Looks good to me, approved; Looks good to me, approved
kokoro: Regressions pass
diff --git a/src/arch/arm/insts/mem64.hh b/src/arch/arm/insts/mem64.hh
index 8e21bb3..34eb43f 100644
--- a/src/arch/arm/insts/mem64.hh
+++ b/src/arch/arm/insts/mem64.hh
@@ -260,6 +260,52 @@
std::string generateDisassembly(
Addr pc, const SymbolTable *symtab) const override;
};
+
+/**
+ * A generic atomic op class
+ */
+
+template<typename T>
+class AtomicGeneric2Op : public TypedAtomicOpFunctor<T>
+{
+ public:
+ AtomicGeneric2Op(T _a, std::function<void(T*,T)> _op)
+ : a(_a), op(_op)
+ {}
+ AtomicOpFunctor* clone() override
+ {
+ return new AtomicGeneric2Op<T>(*this);
+ }
+ void execute(T *b) override
+ {
+ op(b, a);
+ }
+ private:
+ T a;
+ std::function<void(T*,T)> op;
+ };
+
+template<typename T>
+class AtomicGeneric3Op : public TypedAtomicOpFunctor<T>
+{
+ public:
+ AtomicGeneric3Op(T _a, T _c, std::function<void(T*, T, T)> _op)
+ : a(_a), c(_c), op(_op)
+ {}
+ AtomicOpFunctor* clone() override
+ {
+ return new AtomicGeneric3Op<T>(*this);
+ }
+ void execute(T *b) override
+ {
+ op(b, a, c);
+ }
+ private:
+ T a;
+ T c;
+ std::function<void(T*, T, T)> op;
+};
+
}
#endif //__ARCH_ARM_INSTS_MEM_HH__
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19810
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings
Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: If082b596fb37d7a1cb569a4320c23505591df6a5
Gerrit-Change-Number: 19810
Gerrit-PatchSet: 5
Gerrit-Owner: Jordi Vaquero <jordi.vaqu...@metempsy.com>
Gerrit-Reviewer: Andreas Sandberg <andreas.sandb...@arm.com>
Gerrit-Reviewer: Giacomo Travaglini <giacomo.travagl...@arm.com>
Gerrit-Reviewer: Jordi Vaquero <jordi.vaqu...@metempsy.com>
Gerrit-Reviewer: kokoro <noreply+kok...@google.com>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev