[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v5 57/94] target/sparc: Move PREFETCH, PREFETCHA to decodetree
|
From: |
Richard Henderson |
|
Subject: |
[PATCH v5 57/94] target/sparc: Move PREFETCH, PREFETCHA to decodetree |
|
Date: |
Sun, 22 Oct 2023 16:28:55 -0700 |
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
target/sparc/insns.decode | 8 ++++++--
target/sparc/translate.c | 23 ++++++++---------------
2 files changed, 14 insertions(+), 17 deletions(-)
diff --git a/target/sparc/insns.decode b/target/sparc/insns.decode
index 82c484fbc7..aa452f1d00 100644
--- a/target/sparc/insns.decode
+++ b/target/sparc/insns.decode
@@ -231,6 +231,9 @@ RESTORE 10 ..... 111101 ..... . .............
@r_r_ri
DONE 10 00000 111110 00000 0 0000000000000
RETRY 10 00001 111110 00000 0 0000000000000
+NCP 10 ----- 110110 ----- --------- ----- # v8 CPop1
+NCP 10 ----- 110111 ----- --------- ----- # v8 CPop2
+
##
## Major Opcode 11 -- load and store instructions
##
@@ -299,8 +302,9 @@ CASA 11 ..... 111100 ..... . .............
@casa_imm
CASXA 11 ..... 111110 ..... . ............. @r_r_r_asi
CASXA 11 ..... 111110 ..... . ............. @casa_imm
-NCP 10 ----- 110110 ----- --------- ----- # v8 CPop1
-NCP 10 ----- 110111 ----- --------- ----- # v8 CPop2
+NOP_v9 11 ----- 101101 ----- 0 00000000 ----- # PREFETCH
+NOP_v9 11 ----- 101101 ----- 1 ------------- # PREFETCH
+NOP_v9 11 ----- 111101 ----- - ------------- # PREFETCHA
NCP 11 ----- 110000 ----- --------- ----- # v8 LDC
NCP 11 ----- 110001 ----- --------- ----- # v8 LDCSR
diff --git a/target/sparc/translate.c b/target/sparc/translate.c
index 6f2636303d..a65bf9ebd6 100644
--- a/target/sparc/translate.c
+++ b/target/sparc/translate.c
@@ -4031,17 +4031,12 @@ static bool trans_NOP(DisasContext *dc, arg_NOP *a)
return advance_pc(dc);
}
-static bool trans_NOP_v7(DisasContext *dc, arg_NOP_v7 *a)
-{
- /*
- * TODO: Need a feature bit for sparcv8.
- * In the meantime, treat all 32-bit cpus like sparcv7.
- */
- if (avail_32(dc)) {
- return advance_pc(dc);
- }
- return false;
-}
+/*
+ * TODO: Need a feature bit for sparcv8.
+ * In the meantime, treat all 32-bit cpus like sparcv7.
+ */
+TRANS(NOP_v7, 32, trans_NOP, a)
+TRANS(NOP_v9, 64, trans_NOP, a)
static bool do_arith_int(DisasContext *dc, arg_r_r_ri_cc *a, int cc_op,
void (*func)(TCGv, TCGv, TCGv),
@@ -5454,10 +5449,10 @@ static void disas_sparc_legacy(DisasContext *dc,
unsigned int insn)
case 0x0b: /* V9 ldx */
case 0x18: /* V9 ldswa */
case 0x1b: /* V9 ldxa */
+ case 0x2d: /* V9 prefetch */
+ case 0x3d: /* V9 prefetcha */
goto illegal_insn; /* in decodetree */
#ifdef TARGET_SPARC64
- case 0x2d: /* V9 prefetch, no effect */
- goto skip_move;
case 0x30: /* V9 ldfa */
if (gen_trap_ifnofpu(dc)) {
goto jmp_insn;
@@ -5472,8 +5467,6 @@ static void disas_sparc_legacy(DisasContext *dc, unsigned
int insn)
gen_ldf_asi(dc, cpu_addr, insn, 8, DFPREG(rd));
gen_update_fprs_dirty(dc, DFPREG(rd));
goto skip_move;
- case 0x3d: /* V9 prefetcha, no effect */
- goto skip_move;
case 0x32: /* V9 ldqfa */
CHECK_FPU_FEATURE(dc, FLOAT128);
if (gen_trap_ifnofpu(dc)) {
--
2.34.1
- [PATCH v5 52/94] target/sparc: Move simple integer load/store to decodetree, (continued)
- [PATCH v5 52/94] target/sparc: Move simple integer load/store to decodetree, Richard Henderson, 2023/10/22
- [PATCH v5 47/94] target/sparc: Move DONE, RETRY to decodetree, Richard Henderson, 2023/10/22
- [PATCH v5 58/94] target/sparc: Split out fp ldst functions with asi precomputed, Richard Henderson, 2023/10/22
- [PATCH v5 50/94] target/sparc: Split out ldst functions with asi pre-computed, Richard Henderson, 2023/10/22
- [PATCH v5 53/94] target/sparc: Move asi integer load/store to decodetree, Richard Henderson, 2023/10/22
- [PATCH v5 56/94] target/sparc: Move CASA, CASXA to decodetree, Richard Henderson, 2023/10/22
- [PATCH v5 61/94] target/sparc: Move LDFSR, STFSR to decodetree, Richard Henderson, 2023/10/22
- [PATCH v5 55/94] target/sparc: Move SWAP, SWAPA to decodetree, Richard Henderson, 2023/10/22
- [PATCH v5 64/94] target/sparc: Move ARRAY* to decodetree, Richard Henderson, 2023/10/22
- [PATCH v5 59/94] target/sparc: Move simple fp load/store to decodetree, Richard Henderson, 2023/10/22
- [PATCH v5 57/94] target/sparc: Move PREFETCH, PREFETCHA to decodetree,
Richard Henderson <=
- [PATCH v5 54/94] target/sparc: Move LDSTUB, LDSTUBA to decodetree, Richard Henderson, 2023/10/22
- [PATCH v5 66/94] target/sparc: Move BMASK to decodetree, Richard Henderson, 2023/10/22
- [PATCH v5 67/94] target/sparc: Move FMOVS, FNEGS, FABSS, FSRC*S, FNOT*S to decodetree, Richard Henderson, 2023/10/22
- [PATCH v5 65/94] target/sparc: Move ADDRALIGN* to decodetree, Richard Henderson, 2023/10/22
- [PATCH v5 63/94] target/sparc: Move EDGE* to decodetree, Richard Henderson, 2023/10/22
- [PATCH v5 68/94] target/sparc: Move FMOVD, FNEGD, FABSD, FSRC*D, FNOT*D to decodetree, Richard Henderson, 2023/10/22
- [PATCH v5 70/94] target/sparc: Move gen_ne_fop_FFF insns to decodetree, Richard Henderson, 2023/10/22
- [PATCH v5 62/94] target/sparc: Merge LDFSR, LDXFSR implementations, Richard Henderson, 2023/10/22
- [PATCH v5 74/94] target/sparc: Move gen_fop_FF insns to decodetree, Richard Henderson, 2023/10/22
- [PATCH v5 77/94] target/sparc: Move gen_fop_FFF insns to decodetree, Richard Henderson, 2023/10/22