mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 08:43:55 -06:00
target/sparc: Remove sparcv7 cpu features
The oldest supported cpu is the microsparc 1; all other cpus use CPU_DEFAULT_FEATURES. Remove the features that must always be present for sparcv7: FLOAT, SWAP, FLUSH, FSQRT, FMUL. 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>
This commit is contained in:
parent
de1f52032f
commit
5f25b383a8
5 changed files with 11 additions and 57 deletions
|
@ -3527,11 +3527,9 @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
|
|||
gen_ne_fop_FF(dc, rd, rs2, gen_helper_fabss);
|
||||
break;
|
||||
case 0x29: /* fsqrts */
|
||||
CHECK_FPU_FEATURE(dc, FSQRT);
|
||||
gen_fop_FF(dc, rd, rs2, gen_helper_fsqrts);
|
||||
break;
|
||||
case 0x2a: /* fsqrtd */
|
||||
CHECK_FPU_FEATURE(dc, FSQRT);
|
||||
gen_fop_DD(dc, rd, rs2, gen_helper_fsqrtd);
|
||||
break;
|
||||
case 0x2b: /* fsqrtq */
|
||||
|
@ -3559,16 +3557,13 @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
|
|||
gen_fop_QQQ(dc, rd, rs1, rs2, gen_helper_fsubq);
|
||||
break;
|
||||
case 0x49: /* fmuls */
|
||||
CHECK_FPU_FEATURE(dc, FMUL);
|
||||
gen_fop_FFF(dc, rd, rs1, rs2, gen_helper_fmuls);
|
||||
break;
|
||||
case 0x4a: /* fmuld */
|
||||
CHECK_FPU_FEATURE(dc, FMUL);
|
||||
gen_fop_DDD(dc, rd, rs1, rs2, gen_helper_fmuld);
|
||||
break;
|
||||
case 0x4b: /* fmulq */
|
||||
CHECK_FPU_FEATURE(dc, FLOAT128);
|
||||
CHECK_FPU_FEATURE(dc, FMUL);
|
||||
gen_fop_QQQ(dc, rd, rs1, rs2, gen_helper_fmulq);
|
||||
break;
|
||||
case 0x4d: /* fdivs */
|
||||
|
@ -5105,8 +5100,6 @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
|
|||
goto jmp_insn;
|
||||
#endif
|
||||
case 0x3b: /* flush */
|
||||
if (!((dc)->def->features & CPU_FEATURE_FLUSH))
|
||||
goto unimp_flush;
|
||||
/* nop */
|
||||
break;
|
||||
case 0x3c: /* save */
|
||||
|
@ -5224,7 +5217,6 @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
|
|||
break;
|
||||
case 0x0f:
|
||||
/* swap, swap register with memory. Also atomically */
|
||||
CHECK_IU_FEATURE(dc, SWAP);
|
||||
cpu_src1 = gen_load_gpr(dc, rd);
|
||||
gen_swap(dc, cpu_val, cpu_src1, cpu_addr,
|
||||
dc->mem_idx, MO_TEUL);
|
||||
|
@ -5256,7 +5248,6 @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
|
|||
break;
|
||||
case 0x1f: /* swapa, swap reg with alt. memory. Also
|
||||
atomically */
|
||||
CHECK_IU_FEATURE(dc, SWAP);
|
||||
cpu_src1 = gen_load_gpr(dc, rd);
|
||||
gen_swap_asi(dc, cpu_val, cpu_src1, cpu_addr, insn);
|
||||
break;
|
||||
|
@ -5578,9 +5569,6 @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn)
|
|||
illegal_insn:
|
||||
gen_exception(dc, TT_ILL_INSN);
|
||||
return;
|
||||
unimp_flush:
|
||||
gen_exception(dc, TT_UNIMP_FLUSH);
|
||||
return;
|
||||
#if !defined(CONFIG_USER_ONLY)
|
||||
priv_insn:
|
||||
gen_exception(dc, TT_PRIV_INSN);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue