diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-09-24 21:03:56 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-09-24 21:04:57 +0200 |
| commit | e5db9aa8741100bb69ba5082e28ffeaf276dfd0e (patch) | |
| tree | 346e633354497804e081bc988190fa90eacd6ba3 /src | |
| parent | 2d0b60898cc4b7d7feaa49f47d3d569d407e93c1 (diff) | |
| download | box64-e5db9aa8741100bb69ba5082e28ffeaf276dfd0e.tar.gz box64-e5db9aa8741100bb69ba5082e28ffeaf276dfd0e.zip | |
[ARM64_DYNAREC] Fixed some issue with a few 16bits opcodes on 64bits operations
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_66.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_66.c b/src/dynarec/arm64/dynarec_arm64_66.c index 9c39182c..3be6dac2 100644 --- a/src/dynarec/arm64/dynarec_arm64_66.c +++ b/src/dynarec/arm64/dynarec_arm64_66.c @@ -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; } |