mirror of
https://github.com/ptitSeb/box64.git
synced 2024-10-07 03:43:33 +00:00
[ARM64_DYNAREC] Fixed some issue with a few 16bits opcodes on 64bits operations
This commit is contained in:
parent
2d0b60898c
commit
e5db9aa874
@ -330,7 +330,7 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
|
||||
gd = xRAX + (opcode&7);
|
||||
UXTHw(x1, gd);
|
||||
emit_inc16(dyn, ninst, x1, x2, x3);
|
||||
BFIw(gd, x1, 0, 16);
|
||||
BFIz(gd, x1, 0, 16);
|
||||
break;
|
||||
case 0x48:
|
||||
case 0x49:
|
||||
@ -345,7 +345,7 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
|
||||
gd = xRAX + (opcode&7);
|
||||
UXTHw(x1, gd);
|
||||
emit_dec16(dyn, ninst, x1, x2, x3);
|
||||
BFIw(gd, x1, 0, 16);
|
||||
BFIz(gd, x1, 0, 16);
|
||||
break;
|
||||
case 0x50:
|
||||
case 0x51:
|
||||
@ -375,7 +375,7 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
|
||||
INST_NAME("POP reg");
|
||||
gd = xRAX+(opcode&0x07)+(rex.b<<3);
|
||||
POP1_16(x1);
|
||||
BFIw(gd, x1, 0, 16);
|
||||
BFIz(gd, x1, 0, 16);
|
||||
break;
|
||||
case 0x60:
|
||||
if(rex.is32bits) {
|
||||
@ -397,20 +397,20 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
|
||||
if(rex.is32bits) {
|
||||
INST_NAME("POPA 16bits (32bits)");
|
||||
POP1_16(x1);
|
||||
BFIw(xRDI, x1, 0, 16);
|
||||
BFIz(xRDI, x1, 0, 16);
|
||||
POP1_16(x1);
|
||||
BFIw(xRSI, x1, 0, 16);
|
||||
BFIz(xRSI, x1, 0, 16);
|
||||
POP1_16(x1);
|
||||
BFIw(xRBP, x1, 0, 16);
|
||||
BFIz(xRBP, x1, 0, 16);
|
||||
POP1_16(x1); // RSP ignored
|
||||
POP1_16(x1);
|
||||
BFIw(xRBX, x1, 0, 16);
|
||||
BFIz(xRBX, x1, 0, 16);
|
||||
POP1_16(x1);
|
||||
BFIw(xRDX, x1, 0, 16);
|
||||
BFIz(xRDX, x1, 0, 16);
|
||||
POP1_16(x1);
|
||||
BFIw(xRCX, x1, 0, 16);
|
||||
BFIz(xRCX, x1, 0, 16);
|
||||
POP1_16(x1);
|
||||
BFIw(xRAX, x1, 0, 16);
|
||||
BFIz(xRAX, x1, 0, 16);
|
||||
} else {
|
||||
DEFAULT;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user