mirror of
https://github.com/ptitSeb/box64.git
synced 2025-10-14 02:38:54 +08:00
[DYNAREC] Fixed 66 8D opcode and also a regression introduced in last commit (#3050)
This commit is contained in:
@@ -706,13 +706,11 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
|
||||
if(MODREG) { // reg <= reg? that's an invalid operation
|
||||
DEFAULT;
|
||||
} else { // mem <= reg
|
||||
addr = geted(dyn, addr, ninst, nextop, &ed, gd, &fixedaddress, NULL, 0, 0, rex, NULL, 0, 0);
|
||||
if(gd!=ed) { // it's sometimes used as a 3 bytes NOP
|
||||
if(rex.w)
|
||||
MOVx_REG(gd, ed);
|
||||
else
|
||||
BFIx(gd, ed, 0, 16);
|
||||
}
|
||||
addr = geted(dyn, addr, ninst, nextop, &ed, x3, &fixedaddress, NULL, 0, 0, rex, NULL, 0, 0);
|
||||
if (rex.w)
|
||||
MOVx_REG(gd, ed);
|
||||
else
|
||||
BFIx(gd, ed, 0, 16);
|
||||
}
|
||||
break;
|
||||
case 0x8E:
|
||||
|
@@ -380,7 +380,7 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
|
||||
// done
|
||||
if (!rex.w) { B_MARK_nocond; }
|
||||
MOVxw_REG(xRAX, x1);
|
||||
if(!ALIGNED_ATOMICxw && rex.w) {
|
||||
if (!ALIGNED_ATOMICxw) {
|
||||
B_MARK_nocond;
|
||||
}
|
||||
}
|
||||
|
@@ -194,7 +194,7 @@ uintptr_t dynarec64_F0(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
|
||||
BEQZ_MARKLOCK(x4);
|
||||
if (!rex.w) { B_MARK_nocond; }
|
||||
MVxw(xRAX, x1);
|
||||
if (rex.w) { B_MARK_nocond; }
|
||||
B_MARK_nocond;
|
||||
MARK3;
|
||||
// Unaligned
|
||||
ADDI_D(x5, xZR, -(1 << (rex.w + 2)));
|
||||
|
@@ -267,7 +267,7 @@ uintptr_t dynarec64_F0(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
|
||||
BNEZ_MARKLOCK(x4);
|
||||
if (!rex.w) { B_MARK_nocond; }
|
||||
MVxw(xRAX, x1);
|
||||
if (rex.w) { B_MARK_nocond; }
|
||||
B_MARK_nocond;
|
||||
MARK3;
|
||||
// Unaligned
|
||||
ANDI(x5, wback, -(1 << (rex.w + 2)));
|
||||
|
Reference in New Issue
Block a user