diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-03-29 19:20:31 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-03-29 19:20:31 +0200 |
| commit | 397eff97122677eb72ccce5d808765cbc79b8ee5 (patch) | |
| tree | a81469c6630a0e986802e58245e26290add5cc3e /src | |
| parent | 51c23856f33c9c7cc45a456a1d7ff0e2f0388b79 (diff) | |
| download | box64-397eff97122677eb72ccce5d808765cbc79b8ee5.tar.gz box64-397eff97122677eb72ccce5d808765cbc79b8ee5.zip | |
[DYNAREC] Fixed 0F 18 opcodes
Diffstat (limited to 'src')
| -rwxr-xr-x | src/dynarec/arm64_emitter.h | 12 | ||||
| -rwxr-xr-x | src/dynarec/dynarec_arm64_0f.c | 8 |
2 files changed, 10 insertions, 10 deletions
diff --git a/src/dynarec/arm64_emitter.h b/src/dynarec/arm64_emitter.h index 6fe29a96..252b2e35 100755 --- a/src/dynarec/arm64_emitter.h +++ b/src/dynarec/arm64_emitter.h @@ -337,12 +337,12 @@ #define PLD_L3_STREAM(Rn, Rm) EMIT(PRFM_register(Rm, 0b011, 0, Rn, 0b00101)) #define PRFM_imm(imm12, Rn, Rt) (0b11<<30 | 0b111<<27 | 0b01<<24 | 0b10<<2 | (imm12)<<10 | (Rn)<<5 | (Rt)) -#define PLD_L1_KEEP_U12(Rn, imm12) EMIT(PRFM_register(((imm12)>>3)&0xfff, Rn, 0b00000)) -#define PLD_L2_KEEP_U12(Rn, imm12) EMIT(PRFM_register(((imm12)>>3)&0xfff, Rn, 0b00010)) -#define PLD_L3_KEEP_U12(Rn, imm12) EMIT(PRFM_register(((imm12)>>3)&0xfff, Rn, 0b00100)) -#define PLD_L1_KEEP_STREAM(Rn, imm12) EMIT(PRFM_register(((imm12)>>3)&0xfff, Rn, 0b00001)) -#define PLD_L2_KEEP_STREAM(Rn, imm12) EMIT(PRFM_register(((imm12)>>3)&0xfff, Rn, 0b00011)) -#define PLD_L3_KEEP_STREAM(Rn, imm12) EMIT(PRFM_register(((imm12)>>3)&0xfff, Rn, 0b00101)) +#define PLD_L1_KEEP_U12(Rn, imm12) EMIT(PRFM_imm(((imm12)>>3)&0xfff, Rn, 0b00000)) +#define PLD_L2_KEEP_U12(Rn, imm12) EMIT(PRFM_imm(((imm12)>>3)&0xfff, Rn, 0b00010)) +#define PLD_L3_KEEP_U12(Rn, imm12) EMIT(PRFM_imm(((imm12)>>3)&0xfff, Rn, 0b00100)) +#define PLD_L1_STREAM_U12(Rn, imm12) EMIT(PRFM_imm(((imm12)>>3)&0xfff, Rn, 0b00001)) +#define PLD_L2_STREAM_U12(Rn, imm12) EMIT(PRFM_imm(((imm12)>>3)&0xfff, Rn, 0b00011)) +#define PLD_L3_STREAM_U12(Rn, imm12) EMIT(PRFM_imm(((imm12)>>3)&0xfff, Rn, 0b00101)) // BR and Branches diff --git a/src/dynarec/dynarec_arm64_0f.c b/src/dynarec/dynarec_arm64_0f.c index 8f264f5d..0c4ea485 100755 --- a/src/dynarec/dynarec_arm64_0f.c +++ b/src/dynarec/dynarec_arm64_0f.c @@ -201,22 +201,22 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin case 0: INST_NAME("PREFETCHh Ed"); addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, 0xfff, 7, rex, 0, 0); - PLD_L1_STREAM(ed, fixedaddress); + PLD_L1_STREAM_U12(ed, fixedaddress); break; case 1: INST_NAME("PREFETCHh Ed"); addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, 0xfff, 7, rex, 0, 0); - PLD_L1_KEEP(ed, fixedaddress); + PLD_L1_KEEP_U12(ed, fixedaddress); break; case 2: INST_NAME("PREFETCHh Ed"); addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, 0xfff, 7, rex, 0, 0); - PLD_L2_KEEP(ed, fixedaddress); + PLD_L2_KEEP_U12(ed, fixedaddress); break; case 3: INST_NAME("PREFETCHh Ed"); addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, 0xfff, 7, rex, 0, 0); - PLD_L3_KEEP(ed, fixedaddress); + PLD_L3_KEEP_U12(ed, fixedaddress); break; default: INST_NAME("NOP (multibyte)"); |