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:
Víctor Colombo 2022-05-04 18:05:28 -03:00 committed by Daniel Henrique Barboza
parent acc861c2e9
commit 8e54ad65c2
3 changed files with 8 additions and 8 deletions

View File

@ -354,6 +354,7 @@ typedef enum {
#define MSR_RI 1 /* Recoverable interrupt 1 */ #define MSR_RI 1 /* Recoverable interrupt 1 */
#define MSR_LE 0 /* Little-endian mode 1 hflags */ #define MSR_LE 0 /* Little-endian mode 1 hflags */
FIELD(MSR, POW, MSR_POW, 1)
FIELD(MSR, CE, MSR_CE, 1) FIELD(MSR, CE, MSR_CE, 1)
FIELD(MSR, ILE, MSR_ILE, 1) FIELD(MSR, ILE, MSR_ILE, 1)
FIELD(MSR, EE, MSR_EE, 1) FIELD(MSR, EE, MSR_EE, 1)
@ -478,7 +479,6 @@ FIELD(MSR, LE, MSR_LE, 1)
#endif #endif
#define msr_cm ((env->msr >> MSR_CM) & 1) #define msr_cm ((env->msr >> MSR_CM) & 1)
#define msr_gs ((env->msr >> MSR_GS) & 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_fp ((env->msr >> MSR_FP) & 1)
#define msr_me ((env->msr >> MSR_ME) & 1) #define msr_me ((env->msr >> MSR_ME) & 1)
#define msr_fe0 ((env->msr >> MSR_FE0) & 1) #define msr_fe0 ((env->msr >> MSR_FE0) & 1)

View File

@ -661,7 +661,7 @@ static void powerpc_excp_6xx(PowerPCCPU *cpu, int excp)
case POWERPC_EXCP_ITLB: /* Instruction TLB error */ case POWERPC_EXCP_ITLB: /* Instruction TLB error */
break; break;
case POWERPC_EXCP_RESET: /* System reset exception */ 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 " cpu_abort(cs, "Trying to deliver power-saving system reset "
"exception %d with no HV support\n", excp); "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 */ case POWERPC_EXCP_DECR: /* Decrementer exception */
break; break;
case POWERPC_EXCP_RESET: /* System reset exception */ 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 " cpu_abort(cs, "Trying to deliver power-saving system reset "
"exception %d with no HV support\n", excp); "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 */ case POWERPC_EXCP_DECR: /* Decrementer exception */
break; break;
case POWERPC_EXCP_RESET: /* System reset exception */ 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 " cpu_abort(cs, "Trying to deliver power-saving system reset "
"exception %d with no HV support\n", excp); "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; env->spr[SPR_BOOKE_ESR] = ESR_SPV;
break; break;
case POWERPC_EXCP_RESET: /* System reset exception */ 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 " cpu_abort(cs, "Trying to deliver power-saving system reset "
"exception %d with no HV support\n", excp); "exception %d with no HV support\n", excp);
} }
@ -1507,7 +1507,7 @@ static void powerpc_excp_books(PowerPCCPU *cpu, int excp)
break; break;
case POWERPC_EXCP_RESET: /* System reset exception */ case POWERPC_EXCP_RESET: /* System reset exception */
/* A power-saving exception sets ME, otherwise it is unchanged */ /* 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 */ /* indicate that we resumed from power save mode */
msr |= 0x10000; msr |= 0x10000;
new_msr |= ((target_ulong)1 << MSR_ME); 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; new_msr |= (target_ulong)MSR_HVB;
} else { } else {
if (msr_pow) { if (FIELD_EX64(env->msr, MSR, POW)) {
cpu_abort(cs, "Trying to deliver power-saving system reset " cpu_abort(cs, "Trying to deliver power-saving system reset "
"exception %d with no HV support\n", excp); "exception %d with no HV support\n", excp);
} }

View File

@ -261,7 +261,7 @@ int hreg_store_msr(CPUPPCState *env, target_ulong value, int alter_hv)
env->msr = value; env->msr = value;
hreg_compute_hflags(env); hreg_compute_hflags(env);
#if !defined(CONFIG_USER_ONLY) #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)) { if (!env->pending_interrupts && (*env->check_pow)(env)) {
cs->halted = 1; cs->halted = 1;
excp = EXCP_HALTED; excp = EXCP_HALTED;