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:
parent
5f89ce4fc2
commit
2e211e0a12
@ -385,7 +385,7 @@ void target_cpu_copy_regs(CPUArchState *env, struct target_pt_regs *regs)
|
||||
prog_req.fre &= interp_req.fre;
|
||||
|
||||
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) {
|
||||
env->CP0_Config5 |= (1 << CP0C5_FRE);
|
||||
|
@ -527,7 +527,7 @@ void helper_mtc0_index(CPUMIPSState *env, target_ulong arg1)
|
||||
uint32_t index_p = env->CP0_Index & 0x80000000;
|
||||
uint32_t tlb_index = arg1 & 0x7fffffff;
|
||||
if (tlb_index < env->tlb->nb_tlb) {
|
||||
if (env->insn_flags & ISA_MIPS32R6) {
|
||||
if (env->insn_flags & ISA_MIPS_R6) {
|
||||
index_p |= arg1 & 0x80000000;
|
||||
}
|
||||
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 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) {
|
||||
mask &= ~(0x3FULL << CP0PF_BDI);
|
||||
}
|
||||
@ -980,7 +980,7 @@ void helper_mtc0_pwfield(CPUMIPSState *env, target_ulong arg1)
|
||||
env->CP0_PWField = arg1 & mask;
|
||||
|
||||
if ((new_ptei >= 32) ||
|
||||
((env->insn_flags & ISA_MIPS32R6) &&
|
||||
((env->insn_flags & ISA_MIPS_R6) &&
|
||||
(new_ptei == 0 || new_ptei == 1))) {
|
||||
env->CP0_PWField = (env->CP0_PWField & ~0x3FULL) |
|
||||
(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 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) {
|
||||
mask &= ~(0x3F << CP0PF_GDW);
|
||||
}
|
||||
@ -1007,7 +1007,7 @@ void helper_mtc0_pwfield(CPUMIPSState *env, target_ulong arg1)
|
||||
env->CP0_PWField = arg1 & mask;
|
||||
|
||||
if ((new_ptew >= 32) ||
|
||||
((env->insn_flags & ISA_MIPS32R6) &&
|
||||
((env->insn_flags & ISA_MIPS_R6) &&
|
||||
(new_ptew == 0 || new_ptew == 1))) {
|
||||
env->CP0_PWField = (env->CP0_PWField & ~0x3F) |
|
||||
(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)
|
||||
{
|
||||
if (env->insn_flags & ISA_MIPS32R6) {
|
||||
if (env->insn_flags & ISA_MIPS_R6) {
|
||||
if (arg1 < env->tlb->nb_tlb) {
|
||||
env->CP0_Wired = arg1;
|
||||
}
|
||||
@ -1075,10 +1075,10 @@ void helper_mtc0_hwrena(CPUMIPSState *env, target_ulong arg1)
|
||||
uint32_t mask = 0x0000000F;
|
||||
|
||||
if ((env->CP0_Config1 & (1 << CP0C1_PC)) &&
|
||||
(env->insn_flags & ISA_MIPS32R6)) {
|
||||
(env->insn_flags & ISA_MIPS_R6)) {
|
||||
mask |= (1 << 4);
|
||||
}
|
||||
if (env->insn_flags & ISA_MIPS32R6) {
|
||||
if (env->insn_flags & ISA_MIPS_R6) {
|
||||
mask |= (1 << 5);
|
||||
}
|
||||
if (env->CP0_Config3 & (1 << CP0C3_ULRI)) {
|
||||
@ -1149,7 +1149,7 @@ void helper_mtc0_entryhi(CPUMIPSState *env, target_ulong arg1)
|
||||
|
||||
/* 1k pages not implemented */
|
||||
#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 config0_at = extract32(env->CP0_Config0, 13, 2);
|
||||
bool no_supervisor = (env->CP0_Status_rw_bitmask & 0x8) == 0;
|
||||
|
@ -72,7 +72,7 @@ static bool mips_cpu_has_work(CPUState *cs)
|
||||
if ((cs->interrupt_request & CPU_INTERRUPT_HARD) &&
|
||||
cpu_mips_hw_interrupts_pending(env)) {
|
||||
if (cpu_mips_hw_interrupts_enabled(env) ||
|
||||
(env->insn_flags & ISA_MIPS32R6)) {
|
||||
(env->insn_flags & ISA_MIPS_R6)) {
|
||||
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) */
|
||||
env->CP0_SegCtl1 |= (CP0SC_AM_UK << CP0SC1_XAM);
|
||||
#endif /* !CONFIG_USER_ONLY */
|
||||
if ((env->insn_flags & ISA_MIPS32R6) &&
|
||||
if ((env->insn_flags & ISA_MIPS_R6) &&
|
||||
(env->active_fpu.fcr0 & (1 << FCR0_F64))) {
|
||||
/* Status.FR = 0 mode in 64-bit FPU not allowed in R6 */
|
||||
env->CP0_Status |= (1 << CP0St_FR);
|
||||
}
|
||||
|
||||
if (env->insn_flags & ISA_MIPS32R6) {
|
||||
if (env->insn_flags & ISA_MIPS_R6) {
|
||||
/* PTW = 1 */
|
||||
env->CP0_PWSize = 0x40;
|
||||
/* GDI = 12 */
|
||||
|
@ -145,7 +145,7 @@ void helper_ctc1(CPUMIPSState *env, target_ulong arg1, uint32_t fs, uint32_t rt)
|
||||
}
|
||||
break;
|
||||
case 25:
|
||||
if ((env->insn_flags & ISA_MIPS32R6) || (arg1 & 0xffffff00)) {
|
||||
if ((env->insn_flags & ISA_MIPS_R6) || (arg1 & 0xffffff00)) {
|
||||
return;
|
||||
}
|
||||
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));
|
||||
break;
|
||||
default:
|
||||
if (env->insn_flags & ISA_MIPS32R6) {
|
||||
if (env->insn_flags & ISA_MIPS_R6) {
|
||||
do_raise_exception(env, EXCP_RI, GETPC());
|
||||
}
|
||||
return;
|
||||
|
@ -397,7 +397,7 @@ void cpu_mips_store_status(CPUMIPSState *env, target_ulong val)
|
||||
uint32_t mask = env->CP0_Status_rw_bitmask;
|
||||
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;
|
||||
#if defined(TARGET_MIPS64)
|
||||
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) {
|
||||
mask |= 1 << CP0Ca_DC;
|
||||
}
|
||||
if (env->insn_flags & ISA_MIPS32R6) {
|
||||
if (env->insn_flags & ISA_MIPS_R6) {
|
||||
mask &= ~((1 << CP0Ca_WP) & val);
|
||||
}
|
||||
|
||||
@ -1145,7 +1145,7 @@ void mips_cpu_do_interrupt(CPUState *cs)
|
||||
enter_debug_mode:
|
||||
if (env->insn_flags & ISA_MIPS3) {
|
||||
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->hflags &= ~MIPS_HFLAG_AWRAP;
|
||||
}
|
||||
@ -1174,7 +1174,7 @@ void mips_cpu_do_interrupt(CPUState *cs)
|
||||
env->CP0_Status |= (1 << CP0St_ERL) | (1 << CP0St_BEV);
|
||||
if (env->insn_flags & ISA_MIPS3) {
|
||||
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->hflags &= ~MIPS_HFLAG_AWRAP;
|
||||
}
|
||||
@ -1360,7 +1360,7 @@ void mips_cpu_do_interrupt(CPUState *cs)
|
||||
env->CP0_Status |= (1 << CP0St_EXL);
|
||||
if (env->insn_flags & ISA_MIPS3) {
|
||||
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->hflags &= ~MIPS_HFLAG_AWRAP;
|
||||
}
|
||||
|
@ -354,7 +354,7 @@ static inline void compute_hflags(CPUMIPSState *env)
|
||||
} else if (((env->hflags & MIPS_HFLAG_KSU) == MIPS_HFLAG_UM) &&
|
||||
!(env->CP0_Status & (1 << CP0St_UX))) {
|
||||
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 */
|
||||
if ((((env->hflags & MIPS_HFLAG_KSU) == MIPS_HFLAG_SM) &&
|
||||
!(env->CP0_Status & (1 << CP0St_SX))) ||
|
||||
@ -365,7 +365,7 @@ static inline void compute_hflags(CPUMIPSState *env)
|
||||
}
|
||||
#endif
|
||||
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_CP0;
|
||||
}
|
||||
|
@ -20,7 +20,7 @@
|
||||
#define ISA_MIPS_R2 0x0000000000000040ULL
|
||||
#define ISA_MIPS_R3 0x0000000000000080ULL
|
||||
#define ISA_MIPS_R5 0x0000000000000100ULL
|
||||
#define ISA_MIPS32R6 0x0000000000002000ULL
|
||||
#define ISA_MIPS_R6 0x0000000000000200ULL
|
||||
#define ISA_NANOMIPS32 0x0000000000008000ULL
|
||||
/*
|
||||
* bits 24-39: MIPS ASEs
|
||||
@ -85,7 +85,7 @@
|
||||
#define CPU_MIPS64R5 (CPU_MIPS64R3 | CPU_MIPS32R5)
|
||||
|
||||
/* 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)
|
||||
|
||||
/* Wave Computing: "nanoMIPS" */
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user