diff options
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_f0.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_f0.c b/src/dynarec/arm64/dynarec_arm64_f0.c index 85d0a87c..0eda1a0a 100644 --- a/src/dynarec/arm64/dynarec_arm64_f0.c +++ b/src/dynarec/arm64/dynarec_arm64_f0.c @@ -644,17 +644,17 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin break; case 0xC7: + nextop = F8; switch(rep) { case 0: switch((nextop>>3)&7) { case 1: INST_NAME("LOCK CMPXCHG8B Gq, Eq"); SETFLAGS(X_ZF, SF_SUBSET); - nextop = F8; addr = geted(dyn, addr, ninst, nextop, &wback, x1, &fixedaddress, NULL, 0, 0, rex, LOCK_LOCK, 0, 0); if(!ALIGNED_ATOMICxw) { TSTx_mask(wback, 1, 0, 1+rex.w); // mask=3 or 7 - B_MARK(cNE); // unaligned + B_MARK2(cNE); // unaligned } if(arm64_atomics) { MOVx_REG(x2, xRAX); @@ -670,7 +670,7 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin MOVx_REG(xRAX, x2); MOVx_REG(xRDX, x3); if(!ALIGNED_ATOMICxw) { - B_NEXT_nocond; + B_MARK3_nocond; } } else { MARKLOCK; @@ -695,20 +695,20 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin } } if(!ALIGNED_ATOMICxw) { - MARK; + MARK2; LDPxw_S7_offset(x2, x3, wback, 0); LDAXRB(x4, wback); CMPSxw_REG(xRAX, x2); CCMPxw(xRDX, x3, 0, cEQ); - B_MARK(cNE); // EAX!=ED[0] || EDX!=Ed[1] + B_MARKSEG(cNE); // EAX!=ED[0] || EDX!=Ed[1] STLXRB(x4, xRBX, wback); - CBNZx_MARK(x4); + CBNZx_MARK2(x4); STPxw_S7_offset(xRBX, xRCX, wback, 0); UFLAG_IF { MOV32w(x1, 1); } B_MARK3_nocond; - MARK; + MARKSEG; MOVxw_REG(xRAX, x2); MOVxw_REG(xRDX, x3); UFLAG_IF { |