From 397eff97122677eb72ccce5d808765cbc79b8ee5 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Mon, 29 Mar 2021 19:20:31 +0200 Subject: [DYNAREC] Fixed 0F 18 opcodes --- src/dynarec/arm64_emitter.h | 12 ++++++------ src/dynarec/dynarec_arm64_0f.c | 8 ++++---- 2 files changed, 10 insertions(+), 10 deletions(-) (limited to 'src') 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)"); -- cgit 1.4.1