From f6cd825ab96ae489026fd5062d0d61321a618482 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Wed, 15 May 2024 16:47:49 +0200 Subject: [ARM64_DYNAREC] Fixed a potential issue with 0F B1 opcode --- src/dynarec/arm64/dynarec_arm64_0f.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/dynarec/arm64/dynarec_arm64_0f.c b/src/dynarec/arm64/dynarec_arm64_0f.c index 8f6a46e9..1172789a 100644 --- a/src/dynarec/arm64/dynarec_arm64_0f.c +++ b/src/dynarec/arm64/dynarec_arm64_0f.c @@ -1899,7 +1899,13 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin UFLAG_IF {emit_cmp32(dyn, ninst, rex, xRAX, ed, x3, x4, x5);} MOVxw_REG(x1, ed); // save value CMPSxw_REG(xRAX, x1); - CSELxw(ed, gd, ed, cEQ); + if(rex.w) { + CSELxw(ed, gd, ed, cEQ); + } else { + B_MARK2(cNE); + MOVw_REG(ed, gd); + MARK2; + } } else { addr = geted(dyn, addr, ninst, nextop, &wback, x2, &fixedaddress, &unscaled, 0xfff<<(2+rex.w), (1<<(2+rex.w))-1, rex, NULL, 0, 0); LDxw(x1, wback, fixedaddress); -- cgit 1.4.1