Index: src/arm64/macro-assembler-arm64.h |
diff --git a/src/arm64/macro-assembler-arm64.h b/src/arm64/macro-assembler-arm64.h |
index 67e64f4d672fb451cee506f7e7df151321f07d45..246d574257e78b045718fb8bce50548967116f19 100644 |
--- a/src/arm64/macro-assembler-arm64.h |
+++ b/src/arm64/macro-assembler-arm64.h |
@@ -68,6 +68,21 @@ namespace internal { |
V(Stp, CPURegister&, rt, rt2, StorePairOpFor(rt, rt2)) \ |
V(Ldpsw, CPURegister&, rt, rt2, LDPSW_x) |
+#define LDA_STL_MACRO_LIST(V) \ |
+ V(Ldarb, ldarb) \ |
+ V(Ldarh, ldarh) \ |
+ V(Ldar, ldar) \ |
+ V(Ldaxrb, ldaxrb) \ |
+ V(Ldaxrh, ldaxrh) \ |
+ V(Ldaxr, ldaxr) \ |
+ V(Stlrb, stlrb) \ |
+ V(Stlrh, stlrh) \ |
+ V(Stlr, stlr) |
+ |
+#define STLX_MACRO_LIST(V) \ |
+ V(Stlxrb, stlxrb) \ |
+ V(Stlxrh, stlxrh) \ |
+ V(Stlxr, stlxr) |
// ---------------------------------------------------------------------------- |
// Static helper functions |
@@ -295,6 +310,17 @@ class MacroAssembler : public Assembler { |
void LoadStorePairMacro(const CPURegister& rt, const CPURegister& rt2, |
const MemOperand& addr, LoadStorePairOp op); |
+// Load-acquire/store-release macros. |
+#define DECLARE_FUNCTION(FN, OP) \ |
+ inline void FN(const Register& rt, const Register& rn); |
+ LDA_STL_MACRO_LIST(DECLARE_FUNCTION) |
+#undef DECLARE_FUNCTION |
+ |
+#define DECLARE_FUNCTION(FN, OP) \ |
+ inline void FN(const Register& rs, const Register& rt, const Register& rn); |
+ STLX_MACRO_LIST(DECLARE_FUNCTION) |
+#undef DECLARE_FUNCTION |
+ |
// V8-specific load/store helpers. |
void Load(const Register& rt, const MemOperand& addr, Representation r); |
void Store(const Register& rt, const MemOperand& addr, Representation r); |