target/ppc: Remove msr_pow macro
msr_pow macro hides the usage of env->msr, which is a bad behavior Substitute it with FIELD_EX64 calls that explicitly use env->msr as a parameter. Suggested-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Víctor Colombo <victor.colombo@eldorado.org.br> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20220504210541.115256-10-victor.colombo@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
This commit is contained in:
parent
acc861c2e9
commit
8e54ad65c2
@ -354,6 +354,7 @@ typedef enum {
|
||||
#define MSR_RI 1 /* Recoverable interrupt 1 */
|
||||
#define MSR_LE 0 /* Little-endian mode 1 hflags */
|
||||
|
||||
FIELD(MSR, POW, MSR_POW, 1)
|
||||
FIELD(MSR, CE, MSR_CE, 1)
|
||||
FIELD(MSR, ILE, MSR_ILE, 1)
|
||||
FIELD(MSR, EE, MSR_EE, 1)
|
||||
@ -478,7 +479,6 @@ FIELD(MSR, LE, MSR_LE, 1)
|
||||
#endif
|
||||
#define msr_cm ((env->msr >> MSR_CM) & 1)
|
||||
#define msr_gs ((env->msr >> MSR_GS) & 1)
|
||||
#define msr_pow ((env->msr >> MSR_POW) & 1)
|
||||
#define msr_fp ((env->msr >> MSR_FP) & 1)
|
||||
#define msr_me ((env->msr >> MSR_ME) & 1)
|
||||
#define msr_fe0 ((env->msr >> MSR_FE0) & 1)
|
||||
|
@ -661,7 +661,7 @@ static void powerpc_excp_6xx(PowerPCCPU *cpu, int excp)
|
||||
case POWERPC_EXCP_ITLB: /* Instruction TLB error */
|
||||
break;
|
||||
case POWERPC_EXCP_RESET: /* System reset exception */
|
||||
if (msr_pow) {
|
||||
if (FIELD_EX64(env->msr, MSR, POW)) {
|
||||
cpu_abort(cs, "Trying to deliver power-saving system reset "
|
||||
"exception %d with no HV support\n", excp);
|
||||
}
|
||||
@ -853,7 +853,7 @@ static void powerpc_excp_7xx(PowerPCCPU *cpu, int excp)
|
||||
case POWERPC_EXCP_DECR: /* Decrementer exception */
|
||||
break;
|
||||
case POWERPC_EXCP_RESET: /* System reset exception */
|
||||
if (msr_pow) {
|
||||
if (FIELD_EX64(env->msr, MSR, POW)) {
|
||||
cpu_abort(cs, "Trying to deliver power-saving system reset "
|
||||
"exception %d with no HV support\n", excp);
|
||||
}
|
||||
@ -1038,7 +1038,7 @@ static void powerpc_excp_74xx(PowerPCCPU *cpu, int excp)
|
||||
case POWERPC_EXCP_DECR: /* Decrementer exception */
|
||||
break;
|
||||
case POWERPC_EXCP_RESET: /* System reset exception */
|
||||
if (msr_pow) {
|
||||
if (FIELD_EX64(env->msr, MSR, POW)) {
|
||||
cpu_abort(cs, "Trying to deliver power-saving system reset "
|
||||
"exception %d with no HV support\n", excp);
|
||||
}
|
||||
@ -1248,7 +1248,7 @@ static void powerpc_excp_booke(PowerPCCPU *cpu, int excp)
|
||||
env->spr[SPR_BOOKE_ESR] = ESR_SPV;
|
||||
break;
|
||||
case POWERPC_EXCP_RESET: /* System reset exception */
|
||||
if (msr_pow) {
|
||||
if (FIELD_EX64(env->msr, MSR, POW)) {
|
||||
cpu_abort(cs, "Trying to deliver power-saving system reset "
|
||||
"exception %d with no HV support\n", excp);
|
||||
}
|
||||
@ -1507,7 +1507,7 @@ static void powerpc_excp_books(PowerPCCPU *cpu, int excp)
|
||||
break;
|
||||
case POWERPC_EXCP_RESET: /* System reset exception */
|
||||
/* A power-saving exception sets ME, otherwise it is unchanged */
|
||||
if (msr_pow) {
|
||||
if (FIELD_EX64(env->msr, MSR, POW)) {
|
||||
/* indicate that we resumed from power save mode */
|
||||
msr |= 0x10000;
|
||||
new_msr |= ((target_ulong)1 << MSR_ME);
|
||||
@ -1519,7 +1519,7 @@ static void powerpc_excp_books(PowerPCCPU *cpu, int excp)
|
||||
*/
|
||||
new_msr |= (target_ulong)MSR_HVB;
|
||||
} else {
|
||||
if (msr_pow) {
|
||||
if (FIELD_EX64(env->msr, MSR, POW)) {
|
||||
cpu_abort(cs, "Trying to deliver power-saving system reset "
|
||||
"exception %d with no HV support\n", excp);
|
||||
}
|
||||
|
@ -261,7 +261,7 @@ int hreg_store_msr(CPUPPCState *env, target_ulong value, int alter_hv)
|
||||
env->msr = value;
|
||||
hreg_compute_hflags(env);
|
||||
#if !defined(CONFIG_USER_ONLY)
|
||||
if (unlikely(msr_pow == 1)) {
|
||||
if (unlikely(FIELD_EX64(env->msr, MSR, POW))) {
|
||||
if (!env->pending_interrupts && (*env->check_pow)(env)) {
|
||||
cs->halted = 1;
|
||||
excp = EXCP_HALTED;
|
||||
|
Loading…
Reference in New Issue
Block a user