mirror of
https://github.com/azahar-emu/dynarmic
synced 2025-11-07 15:40:00 +01:00
backend/arm64: Fix exclusive writes
This commit is contained in:
parent
bd570e093c
commit
7660da4909
@ -73,6 +73,7 @@ static void EmitExclusiveWriteMemory(oaknut::CodeGenerator& code, EmitContext& c
|
|||||||
if (ordered) {
|
if (ordered) {
|
||||||
code.DMB(oaknut::BarrierOp::ISH);
|
code.DMB(oaknut::BarrierOp::ISH);
|
||||||
}
|
}
|
||||||
|
code.MOV(W0, 1);
|
||||||
code.LDRB(Wscratch0, Xstate, offsetof(A32JitState, exclusive_state));
|
code.LDRB(Wscratch0, Xstate, offsetof(A32JitState, exclusive_state));
|
||||||
code.CBZ(Wscratch0, end);
|
code.CBZ(Wscratch0, end);
|
||||||
code.STRB(WZR, Xstate, offsetof(A32JitState, exclusive_state));
|
code.STRB(WZR, Xstate, offsetof(A32JitState, exclusive_state));
|
||||||
|
|||||||
@ -101,6 +101,7 @@ static void EmitExclusiveWriteMemory(oaknut::CodeGenerator& code, EmitContext& c
|
|||||||
if (ordered) {
|
if (ordered) {
|
||||||
code.DMB(oaknut::BarrierOp::ISH);
|
code.DMB(oaknut::BarrierOp::ISH);
|
||||||
}
|
}
|
||||||
|
code.MOV(W0, 1);
|
||||||
code.LDRB(Wscratch0, Xstate, offsetof(A64JitState, exclusive_state));
|
code.LDRB(Wscratch0, Xstate, offsetof(A64JitState, exclusive_state));
|
||||||
code.CBZ(Wscratch0, end);
|
code.CBZ(Wscratch0, end);
|
||||||
code.STRB(WZR, Xstate, offsetof(A64JitState, exclusive_state));
|
code.STRB(WZR, Xstate, offsetof(A64JitState, exclusive_state));
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user