target/mips/mips-defs: Rename ISA_MIPS32R6 as ISA_MIPS_R6

The MIPS ISA release 6 is common to 32/64-bit CPUs.

To avoid holes in the insn_flags type, update the
definition with the next available bit.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20210104221154.3127610-16-f4bug@amsat.org>
This commit is contained in:
Philippe Mathieu-Daudé 2020-12-16 12:34:42 +01:00
parent 5f89ce4fc2
commit 2e211e0a12
8 changed files with 237 additions and 237 deletions

View File

@ -385,7 +385,7 @@ void target_cpu_copy_regs(CPUArchState *env, struct target_pt_regs *regs)
prog_req.fre &= interp_req.fre; prog_req.fre &= interp_req.fre;
bool cpu_has_mips_r2_r6 = env->insn_flags & ISA_MIPS_R2 || bool cpu_has_mips_r2_r6 = env->insn_flags & ISA_MIPS_R2 ||
env->insn_flags & ISA_MIPS32R6; env->insn_flags & ISA_MIPS_R6;
if (prog_req.fre && !prog_req.frdefault && !prog_req.fr1) { if (prog_req.fre && !prog_req.frdefault && !prog_req.fr1) {
env->CP0_Config5 |= (1 << CP0C5_FRE); env->CP0_Config5 |= (1 << CP0C5_FRE);

View File

@ -527,7 +527,7 @@ void helper_mtc0_index(CPUMIPSState *env, target_ulong arg1)
uint32_t index_p = env->CP0_Index & 0x80000000; uint32_t index_p = env->CP0_Index & 0x80000000;
uint32_t tlb_index = arg1 & 0x7fffffff; uint32_t tlb_index = arg1 & 0x7fffffff;
if (tlb_index < env->tlb->nb_tlb) { if (tlb_index < env->tlb->nb_tlb) {
if (env->insn_flags & ISA_MIPS32R6) { if (env->insn_flags & ISA_MIPS_R6) {
index_p |= arg1 & 0x80000000; index_p |= arg1 & 0x80000000;
} }
env->CP0_Index = index_p | tlb_index; env->CP0_Index = index_p | tlb_index;
@ -960,7 +960,7 @@ void helper_mtc0_pwfield(CPUMIPSState *env, target_ulong arg1)
uint32_t old_ptei = (env->CP0_PWField >> CP0PF_PTEI) & 0x3FULL; uint32_t old_ptei = (env->CP0_PWField >> CP0PF_PTEI) & 0x3FULL;
uint32_t new_ptei = (arg1 >> CP0PF_PTEI) & 0x3FULL; uint32_t new_ptei = (arg1 >> CP0PF_PTEI) & 0x3FULL;
if ((env->insn_flags & ISA_MIPS32R6)) { if ((env->insn_flags & ISA_MIPS_R6)) {
if (((arg1 >> CP0PF_BDI) & 0x3FULL) < 12) { if (((arg1 >> CP0PF_BDI) & 0x3FULL) < 12) {
mask &= ~(0x3FULL << CP0PF_BDI); mask &= ~(0x3FULL << CP0PF_BDI);
} }
@ -980,7 +980,7 @@ void helper_mtc0_pwfield(CPUMIPSState *env, target_ulong arg1)
env->CP0_PWField = arg1 & mask; env->CP0_PWField = arg1 & mask;
if ((new_ptei >= 32) || if ((new_ptei >= 32) ||
((env->insn_flags & ISA_MIPS32R6) && ((env->insn_flags & ISA_MIPS_R6) &&
(new_ptei == 0 || new_ptei == 1))) { (new_ptei == 0 || new_ptei == 1))) {
env->CP0_PWField = (env->CP0_PWField & ~0x3FULL) | env->CP0_PWField = (env->CP0_PWField & ~0x3FULL) |
(old_ptei << CP0PF_PTEI); (old_ptei << CP0PF_PTEI);
@ -990,7 +990,7 @@ void helper_mtc0_pwfield(CPUMIPSState *env, target_ulong arg1)
uint32_t old_ptew = (env->CP0_PWField >> CP0PF_PTEW) & 0x3F; uint32_t old_ptew = (env->CP0_PWField >> CP0PF_PTEW) & 0x3F;
uint32_t new_ptew = (arg1 >> CP0PF_PTEW) & 0x3F; uint32_t new_ptew = (arg1 >> CP0PF_PTEW) & 0x3F;
if ((env->insn_flags & ISA_MIPS32R6)) { if ((env->insn_flags & ISA_MIPS_R6)) {
if (((arg1 >> CP0PF_GDW) & 0x3F) < 12) { if (((arg1 >> CP0PF_GDW) & 0x3F) < 12) {
mask &= ~(0x3F << CP0PF_GDW); mask &= ~(0x3F << CP0PF_GDW);
} }
@ -1007,7 +1007,7 @@ void helper_mtc0_pwfield(CPUMIPSState *env, target_ulong arg1)
env->CP0_PWField = arg1 & mask; env->CP0_PWField = arg1 & mask;
if ((new_ptew >= 32) || if ((new_ptew >= 32) ||
((env->insn_flags & ISA_MIPS32R6) && ((env->insn_flags & ISA_MIPS_R6) &&
(new_ptew == 0 || new_ptew == 1))) { (new_ptew == 0 || new_ptew == 1))) {
env->CP0_PWField = (env->CP0_PWField & ~0x3F) | env->CP0_PWField = (env->CP0_PWField & ~0x3F) |
(old_ptew << CP0PF_PTEW); (old_ptew << CP0PF_PTEW);
@ -1026,7 +1026,7 @@ void helper_mtc0_pwsize(CPUMIPSState *env, target_ulong arg1)
void helper_mtc0_wired(CPUMIPSState *env, target_ulong arg1) void helper_mtc0_wired(CPUMIPSState *env, target_ulong arg1)
{ {
if (env->insn_flags & ISA_MIPS32R6) { if (env->insn_flags & ISA_MIPS_R6) {
if (arg1 < env->tlb->nb_tlb) { if (arg1 < env->tlb->nb_tlb) {
env->CP0_Wired = arg1; env->CP0_Wired = arg1;
} }
@ -1075,10 +1075,10 @@ void helper_mtc0_hwrena(CPUMIPSState *env, target_ulong arg1)
uint32_t mask = 0x0000000F; uint32_t mask = 0x0000000F;
if ((env->CP0_Config1 & (1 << CP0C1_PC)) && if ((env->CP0_Config1 & (1 << CP0C1_PC)) &&
(env->insn_flags & ISA_MIPS32R6)) { (env->insn_flags & ISA_MIPS_R6)) {
mask |= (1 << 4); mask |= (1 << 4);
} }
if (env->insn_flags & ISA_MIPS32R6) { if (env->insn_flags & ISA_MIPS_R6) {
mask |= (1 << 5); mask |= (1 << 5);
} }
if (env->CP0_Config3 & (1 << CP0C3_ULRI)) { if (env->CP0_Config3 & (1 << CP0C3_ULRI)) {
@ -1149,7 +1149,7 @@ void helper_mtc0_entryhi(CPUMIPSState *env, target_ulong arg1)
/* 1k pages not implemented */ /* 1k pages not implemented */
#if defined(TARGET_MIPS64) #if defined(TARGET_MIPS64)
if (env->insn_flags & ISA_MIPS32R6) { if (env->insn_flags & ISA_MIPS_R6) {
int entryhi_r = extract64(arg1, 62, 2); int entryhi_r = extract64(arg1, 62, 2);
int config0_at = extract32(env->CP0_Config0, 13, 2); int config0_at = extract32(env->CP0_Config0, 13, 2);
bool no_supervisor = (env->CP0_Status_rw_bitmask & 0x8) == 0; bool no_supervisor = (env->CP0_Status_rw_bitmask & 0x8) == 0;

View File

@ -72,7 +72,7 @@ static bool mips_cpu_has_work(CPUState *cs)
if ((cs->interrupt_request & CPU_INTERRUPT_HARD) && if ((cs->interrupt_request & CPU_INTERRUPT_HARD) &&
cpu_mips_hw_interrupts_pending(env)) { cpu_mips_hw_interrupts_pending(env)) {
if (cpu_mips_hw_interrupts_enabled(env) || if (cpu_mips_hw_interrupts_enabled(env) ||
(env->insn_flags & ISA_MIPS32R6)) { (env->insn_flags & ISA_MIPS_R6)) {
has_work = true; has_work = true;
} }
} }
@ -288,13 +288,13 @@ static void cpu_state_reset(CPUMIPSState *env)
/* XKPhys (note, SegCtl2.XR = 0, so XAM won't be used) */ /* XKPhys (note, SegCtl2.XR = 0, so XAM won't be used) */
env->CP0_SegCtl1 |= (CP0SC_AM_UK << CP0SC1_XAM); env->CP0_SegCtl1 |= (CP0SC_AM_UK << CP0SC1_XAM);
#endif /* !CONFIG_USER_ONLY */ #endif /* !CONFIG_USER_ONLY */
if ((env->insn_flags & ISA_MIPS32R6) && if ((env->insn_flags & ISA_MIPS_R6) &&
(env->active_fpu.fcr0 & (1 << FCR0_F64))) { (env->active_fpu.fcr0 & (1 << FCR0_F64))) {
/* Status.FR = 0 mode in 64-bit FPU not allowed in R6 */ /* Status.FR = 0 mode in 64-bit FPU not allowed in R6 */
env->CP0_Status |= (1 << CP0St_FR); env->CP0_Status |= (1 << CP0St_FR);
} }
if (env->insn_flags & ISA_MIPS32R6) { if (env->insn_flags & ISA_MIPS_R6) {
/* PTW = 1 */ /* PTW = 1 */
env->CP0_PWSize = 0x40; env->CP0_PWSize = 0x40;
/* GDI = 12 */ /* GDI = 12 */

View File

@ -145,7 +145,7 @@ void helper_ctc1(CPUMIPSState *env, target_ulong arg1, uint32_t fs, uint32_t rt)
} }
break; break;
case 25: case 25:
if ((env->insn_flags & ISA_MIPS32R6) || (arg1 & 0xffffff00)) { if ((env->insn_flags & ISA_MIPS_R6) || (arg1 & 0xffffff00)) {
return; return;
} }
env->active_fpu.fcr31 = (env->active_fpu.fcr31 & 0x017fffff) | env->active_fpu.fcr31 = (env->active_fpu.fcr31 & 0x017fffff) |
@ -172,7 +172,7 @@ void helper_ctc1(CPUMIPSState *env, target_ulong arg1, uint32_t fs, uint32_t rt)
(env->active_fpu.fcr31 & ~(env->active_fpu.fcr31_rw_bitmask)); (env->active_fpu.fcr31 & ~(env->active_fpu.fcr31_rw_bitmask));
break; break;
default: default:
if (env->insn_flags & ISA_MIPS32R6) { if (env->insn_flags & ISA_MIPS_R6) {
do_raise_exception(env, EXCP_RI, GETPC()); do_raise_exception(env, EXCP_RI, GETPC());
} }
return; return;

View File

@ -397,7 +397,7 @@ void cpu_mips_store_status(CPUMIPSState *env, target_ulong val)
uint32_t mask = env->CP0_Status_rw_bitmask; uint32_t mask = env->CP0_Status_rw_bitmask;
target_ulong old = env->CP0_Status; target_ulong old = env->CP0_Status;
if (env->insn_flags & ISA_MIPS32R6) { if (env->insn_flags & ISA_MIPS_R6) {
bool has_supervisor = extract32(mask, CP0St_KSU, 2) == 0x3; bool has_supervisor = extract32(mask, CP0St_KSU, 2) == 0x3;
#if defined(TARGET_MIPS64) #if defined(TARGET_MIPS64)
uint32_t ksux = (1 << CP0St_KX) & val; uint32_t ksux = (1 << CP0St_KX) & val;
@ -434,7 +434,7 @@ void cpu_mips_store_cause(CPUMIPSState *env, target_ulong val)
if (env->insn_flags & ISA_MIPS_R2) { if (env->insn_flags & ISA_MIPS_R2) {
mask |= 1 << CP0Ca_DC; mask |= 1 << CP0Ca_DC;
} }
if (env->insn_flags & ISA_MIPS32R6) { if (env->insn_flags & ISA_MIPS_R6) {
mask &= ~((1 << CP0Ca_WP) & val); mask &= ~((1 << CP0Ca_WP) & val);
} }
@ -1145,7 +1145,7 @@ void mips_cpu_do_interrupt(CPUState *cs)
enter_debug_mode: enter_debug_mode:
if (env->insn_flags & ISA_MIPS3) { if (env->insn_flags & ISA_MIPS3) {
env->hflags |= MIPS_HFLAG_64; env->hflags |= MIPS_HFLAG_64;
if (!(env->insn_flags & ISA_MIPS32R6) || if (!(env->insn_flags & ISA_MIPS_R6) ||
env->CP0_Status & (1 << CP0St_KX)) { env->CP0_Status & (1 << CP0St_KX)) {
env->hflags &= ~MIPS_HFLAG_AWRAP; env->hflags &= ~MIPS_HFLAG_AWRAP;
} }
@ -1174,7 +1174,7 @@ void mips_cpu_do_interrupt(CPUState *cs)
env->CP0_Status |= (1 << CP0St_ERL) | (1 << CP0St_BEV); env->CP0_Status |= (1 << CP0St_ERL) | (1 << CP0St_BEV);
if (env->insn_flags & ISA_MIPS3) { if (env->insn_flags & ISA_MIPS3) {
env->hflags |= MIPS_HFLAG_64; env->hflags |= MIPS_HFLAG_64;
if (!(env->insn_flags & ISA_MIPS32R6) || if (!(env->insn_flags & ISA_MIPS_R6) ||
env->CP0_Status & (1 << CP0St_KX)) { env->CP0_Status & (1 << CP0St_KX)) {
env->hflags &= ~MIPS_HFLAG_AWRAP; env->hflags &= ~MIPS_HFLAG_AWRAP;
} }
@ -1360,7 +1360,7 @@ void mips_cpu_do_interrupt(CPUState *cs)
env->CP0_Status |= (1 << CP0St_EXL); env->CP0_Status |= (1 << CP0St_EXL);
if (env->insn_flags & ISA_MIPS3) { if (env->insn_flags & ISA_MIPS3) {
env->hflags |= MIPS_HFLAG_64; env->hflags |= MIPS_HFLAG_64;
if (!(env->insn_flags & ISA_MIPS32R6) || if (!(env->insn_flags & ISA_MIPS_R6) ||
env->CP0_Status & (1 << CP0St_KX)) { env->CP0_Status & (1 << CP0St_KX)) {
env->hflags &= ~MIPS_HFLAG_AWRAP; env->hflags &= ~MIPS_HFLAG_AWRAP;
} }

View File

@ -354,7 +354,7 @@ static inline void compute_hflags(CPUMIPSState *env)
} else if (((env->hflags & MIPS_HFLAG_KSU) == MIPS_HFLAG_UM) && } else if (((env->hflags & MIPS_HFLAG_KSU) == MIPS_HFLAG_UM) &&
!(env->CP0_Status & (1 << CP0St_UX))) { !(env->CP0_Status & (1 << CP0St_UX))) {
env->hflags |= MIPS_HFLAG_AWRAP; env->hflags |= MIPS_HFLAG_AWRAP;
} else if (env->insn_flags & ISA_MIPS32R6) { } else if (env->insn_flags & ISA_MIPS_R6) {
/* Address wrapping for Supervisor and Kernel is specified in R6 */ /* Address wrapping for Supervisor and Kernel is specified in R6 */
if ((((env->hflags & MIPS_HFLAG_KSU) == MIPS_HFLAG_SM) && if ((((env->hflags & MIPS_HFLAG_KSU) == MIPS_HFLAG_SM) &&
!(env->CP0_Status & (1 << CP0St_SX))) || !(env->CP0_Status & (1 << CP0St_SX))) ||
@ -365,7 +365,7 @@ static inline void compute_hflags(CPUMIPSState *env)
} }
#endif #endif
if (((env->CP0_Status & (1 << CP0St_CU0)) && if (((env->CP0_Status & (1 << CP0St_CU0)) &&
!(env->insn_flags & ISA_MIPS32R6)) || !(env->insn_flags & ISA_MIPS_R6)) ||
!(env->hflags & MIPS_HFLAG_KSU)) { !(env->hflags & MIPS_HFLAG_KSU)) {
env->hflags |= MIPS_HFLAG_CP0; env->hflags |= MIPS_HFLAG_CP0;
} }

View File

@ -20,7 +20,7 @@
#define ISA_MIPS_R2 0x0000000000000040ULL #define ISA_MIPS_R2 0x0000000000000040ULL
#define ISA_MIPS_R3 0x0000000000000080ULL #define ISA_MIPS_R3 0x0000000000000080ULL
#define ISA_MIPS_R5 0x0000000000000100ULL #define ISA_MIPS_R5 0x0000000000000100ULL
#define ISA_MIPS32R6 0x0000000000002000ULL #define ISA_MIPS_R6 0x0000000000000200ULL
#define ISA_NANOMIPS32 0x0000000000008000ULL #define ISA_NANOMIPS32 0x0000000000008000ULL
/* /*
* bits 24-39: MIPS ASEs * bits 24-39: MIPS ASEs
@ -85,7 +85,7 @@
#define CPU_MIPS64R5 (CPU_MIPS64R3 | CPU_MIPS32R5) #define CPU_MIPS64R5 (CPU_MIPS64R3 | CPU_MIPS32R5)
/* MIPS Technologies "Release 6" */ /* MIPS Technologies "Release 6" */
#define CPU_MIPS32R6 (CPU_MIPS32R5 | ISA_MIPS32R6) #define CPU_MIPS32R6 (CPU_MIPS32R5 | ISA_MIPS_R6)
#define CPU_MIPS64R6 (CPU_MIPS64R5 | CPU_MIPS32R6) #define CPU_MIPS64R6 (CPU_MIPS64R5 | CPU_MIPS32R6)
/* Wave Computing: "nanoMIPS" */ /* Wave Computing: "nanoMIPS" */

File diff suppressed because it is too large Load Diff