From 8a1e343c3be7b99dc6542b2a94e2610a20af617a Mon Sep 17 00:00:00 2001 From: Wunkolo Date: Mon, 6 May 2024 13:13:05 -0700 Subject: [PATCH] [a64] Implement `OPCODE_MEMORY_BARRIER` --- src/xenia/cpu/backend/a64/a64_seq_memory.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/xenia/cpu/backend/a64/a64_seq_memory.cc b/src/xenia/cpu/backend/a64/a64_seq_memory.cc index 28bd3c414..671470eba 100644 --- a/src/xenia/cpu/backend/a64/a64_seq_memory.cc +++ b/src/xenia/cpu/backend/a64/a64_seq_memory.cc @@ -1101,7 +1101,11 @@ EMITTER_OPCODE_TABLE(OPCODE_CACHE_CONTROL, CACHE_CONTROL); struct MEMORY_BARRIER : Sequence> { static void Emit(A64Emitter& e, const EmitArgType& i) { + // mfence on x64 flushes all writes before any later instructions // e.mfence(); + + // This is equivalent to DMB SY + e.DMB(BarrierOp::SY); } }; EMITTER_OPCODE_TABLE(OPCODE_MEMORY_BARRIER, MEMORY_BARRIER);