diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2022-12-11 20:45:45 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2022-12-11 20:45:45 +0100 |
| commit | 63ba377f6fa0a1a3c52ac1449950cbc4d00bdf19 (patch) | |
| tree | 3abac66ede38f0785e561f07f44fc49d0bb2e379 /src | |
| parent | a15cdb4c1d306ef1ff8170e89bc3c949ba33df70 (diff) | |
| download | box64-63ba377f6fa0a1a3c52ac1449950cbc4d00bdf19.tar.gz box64-63ba377f6fa0a1a3c52ac1449950cbc4d00bdf19.zip | |
[DYNAREC] Fixed F0 80 opcodes (helps #210, but is not enough)
Diffstat (limited to 'src')
| -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 133d4aa4..c5bce3b7 100644 --- a/src/dynarec/arm64/dynarec_arm64_f0.c +++ b/src/dynarec/arm64/dynarec_arm64_f0.c @@ -372,6 +372,7 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin u8 = F8; emit_add8c(dyn, ninst, x1, u8, x2, x4); wb1 = 0; + EBBACK; } else { addr = geted(dyn, addr, ninst, nextop, &wback, x5, &fixedaddress, 0, 0, rex, LOCK_LOCK, 0, 1); u8 = F8; @@ -382,7 +383,6 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin STLXRB(x3, x1, wback); CBNZx_MARKLOCK(x3); } - EBBACK; break; case 1: //OR INST_NAME("OR Eb, Ib"); @@ -392,6 +392,7 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin u8 = F8; emit_or8c(dyn, ninst, x1, u8, x2, x4); wb1 = 0; + EBBACK; } else { addr = geted(dyn, addr, ninst, nextop, &wback, x5, &fixedaddress, 0, 0, rex, LOCK_LOCK, 0, 1); u8 = F8; @@ -402,7 +403,6 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin STLXRB(x3, x1, wback); CBNZx_MARKLOCK(x3); } - EBBACK; break; case 2: //ADC INST_NAME("ADC Eb, Ib"); @@ -413,6 +413,7 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin u8 = F8; emit_adc8c(dyn, ninst, x1, u8, x2, x4, x5); wb1 = 0; + EBBACK; } else { addr = geted(dyn, addr, ninst, nextop, &wback, x5, &fixedaddress, 0, 0, rex, LOCK_LOCK, 0, 1); u8 = F8; @@ -423,7 +424,6 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin STLXRB(x3, x1, wback); CBNZx_MARKLOCK(x3); } - EBBACK; break; case 3: //SBB INST_NAME("SBB Eb, Ib"); @@ -434,6 +434,7 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin u8 = F8; emit_sbb8c(dyn, ninst, x1, u8, x2, x4, x5); wb1 = 0; + EBBACK; } else { addr = geted(dyn, addr, ninst, nextop, &wback, x5, &fixedaddress, 0, 0, rex, LOCK_LOCK, 0, 1); u8 = F8; @@ -444,7 +445,6 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin STLXRB(x3, x1, wback); CBNZx_MARKLOCK(x3); } - EBBACK; break; case 4: //AND INST_NAME("AND Eb, Ib"); @@ -454,6 +454,7 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin u8 = F8; emit_and8c(dyn, ninst, x1, u8, x2, x4); wb1 = 0; + EBBACK; } else { addr = geted(dyn, addr, ninst, nextop, &wback, x5, &fixedaddress, 0, 0, rex, LOCK_LOCK, 0, 1); u8 = F8; @@ -464,7 +465,6 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin STLXRB(x3, x1, wback); CBNZx_MARKLOCK(x3); } - EBBACK; break; case 5: //SUB INST_NAME("SUB Eb, Ib"); @@ -474,6 +474,7 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin u8 = F8; emit_sub8c(dyn, ninst, x1, u8, x2, x4, x5); wb1 = 0; + EBBACK; } else { addr = geted(dyn, addr, ninst, nextop, &wback, x5, &fixedaddress, 0, 0, rex, LOCK_LOCK, 0, 1); u8 = F8; @@ -484,7 +485,6 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin STLXRB(x3, x1, wback); CBNZx_MARKLOCK(x3); } - EBBACK; break; case 6: //XOR INST_NAME("XOR Eb, Ib"); @@ -494,6 +494,7 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin u8 = F8; emit_xor8c(dyn, ninst, x1, u8, x2, x4); wb1 = 0; + EBBACK; } else { addr = geted(dyn, addr, ninst, nextop, &wback, x5, &fixedaddress, 0, 0, rex, LOCK_LOCK, 0, 1); u8 = F8; @@ -504,7 +505,6 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin STLXRB(x3, x1, wback); CBNZx_MARKLOCK(x3); } - EBBACK; break; case 7: //CMP INST_NAME("CMP Eb, Ib"); |