[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 14/20] target/ppc: Substitute msr_ir macro with new M_MSR_IR macr
From: |
Víctor Colombo |
Subject: |
[PATCH 14/20] target/ppc: Substitute msr_ir macro with new M_MSR_IR macro |
Date: |
Fri, 22 Apr 2022 15:54:44 -0300 |
Suggested-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Víctor Colombo <victor.colombo@eldorado.org.br>
---
target/ppc/cpu.h | 2 +-
target/ppc/helper_regs.c | 2 +-
target/ppc/mmu_common.c | 11 ++++++-----
3 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h
index e26530fa09..cc0b5d72de 100644
--- a/target/ppc/cpu.h
+++ b/target/ppc/cpu.h
@@ -362,6 +362,7 @@ typedef enum {
#define M_MSR_PR (1ull << MSR_PR)
#define M_MSR_FP (1ull << MSR_FP)
#define M_MSR_ME (1ull << MSR_ME)
+#define M_MSR_IR (1ull << MSR_IR)
#define M_MSR_DS (1ull << MSR_DS)
#define M_MSR_LE (1ull << MSR_LE)
@@ -483,7 +484,6 @@ typedef enum {
#define msr_fe0 ((env->msr >> MSR_FE0) & 1)
#define msr_fe1 ((env->msr >> MSR_FE1) & 1)
#define msr_ep ((env->msr >> MSR_EP) & 1)
-#define msr_ir ((env->msr >> MSR_IR) & 1)
#define msr_dr ((env->msr >> MSR_DR) & 1)
#define msr_ts ((env->msr >> MSR_TS1) & 3)
diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c
index 2742938abf..fa8f213cd5 100644
--- a/target/ppc/helper_regs.c
+++ b/target/ppc/helper_regs.c
@@ -227,7 +227,7 @@ int hreg_store_msr(CPUPPCState *env, target_ulong value,
int alter_hv)
value &= ~MSR_HVB;
value |= env->msr & MSR_HVB;
}
- if (((value >> MSR_IR) & 1) != msr_ir ||
+ if (!(value & env->msr & M_MSR_IR) ||
((value >> MSR_DR) & 1) != msr_dr) {
cpu_interrupt_exittb(cs);
}
diff --git a/target/ppc/mmu_common.c b/target/ppc/mmu_common.c
index a82649f2ff..918c15f78d 100644
--- a/target/ppc/mmu_common.c
+++ b/target/ppc/mmu_common.c
@@ -388,7 +388,7 @@ static int get_segment_6xx_tlb(CPUPPCState *env, mmu_ctx_t
*ctx,
" nip=" TARGET_FMT_lx " lr=" TARGET_FMT_lx
" ir=%d dr=%d pr=%d %d t=%d\n",
eaddr, (int)(eaddr >> 28), sr, env->nip, env->lr,
- (int)msr_ir, (int)msr_dr, pr ? 1 : 0,
+ !!(env->msr & M_MSR_IR), (int)msr_dr, pr ? 1 : 0,
access_type == MMU_DATA_STORE, type);
pgidx = (eaddr & ~SEGMENT_MASK_256M) >> target_page_bits;
hash = vsid ^ pgidx;
@@ -626,7 +626,8 @@ found_tlb:
}
/* Check the address space */
- if ((access_type == MMU_INST_FETCH ? msr_ir : msr_dr) != (tlb->attr & 1)) {
+ if ((access_type == MMU_INST_FETCH ?
+ !!(env->msr & M_MSR_IR) : msr_dr) != (tlb->attr & 1)) {
qemu_log_mask(CPU_LOG_MMU, "%s: AS doesn't match\n", __func__);
return -1;
}
@@ -839,7 +840,7 @@ found_tlb:
if (access_type == MMU_INST_FETCH) {
/* There is no way to fetch code using epid load */
assert(!use_epid);
- as = msr_ir;
+ as = env->msr & M_MSR_IR;
}
if (as != ((tlb->mas1 & MAS1_TS) >> MAS1_TS_SHIFT)) {
@@ -1169,7 +1170,7 @@ int get_physical_address_wtlb(CPUPPCState *env, mmu_ctx_t
*ctx,
int mmu_idx)
{
int ret = -1;
- bool real_mode = (type == ACCESS_CODE && msr_ir == 0)
+ bool real_mode = (type == ACCESS_CODE && !(env->msr & M_MSR_IR))
|| (type != ACCESS_CODE && msr_dr == 0);
switch (env->mmu_model) {
@@ -1231,7 +1232,7 @@ static void booke206_update_mas_tlb_miss(CPUPPCState
*env, target_ulong address,
bool use_epid = mmubooke206_get_as(env, mmu_idx, &epid, &as, &pr);
if (access_type == MMU_INST_FETCH) {
- as = msr_ir;
+ as = env->msr & M_MSR_IR;
}
env->spr[SPR_BOOKE_MAS0] = env->spr[SPR_BOOKE_MAS4] & MAS4_TLBSELD_MASK;
env->spr[SPR_BOOKE_MAS1] = env->spr[SPR_BOOKE_MAS4] & MAS4_TSIZED_MASK;
--
2.25.1
- Re: [PATCH 04/20] target/ppc: Substitute msr_le macro with new M_MSR_LE macro, (continued)
- [PATCH 05/20] target/ppc: Substitute msr_ds macro with new M_MSR_DS macro, Víctor Colombo, 2022/04/22
- [PATCH 06/20] target/ppc: Substitute msr_ile macro with new M_MSR_ILE macro, Víctor Colombo, 2022/04/22
- [PATCH 07/20] target/ppc: Substitute msr_ee macro with new M_MSR_EE macro, Víctor Colombo, 2022/04/22
- [PATCH 08/20] target/ppc: Substitute msr_ce macro with new M_MSR_CE macro, Víctor Colombo, 2022/04/22
- [PATCH 09/20] target/ppc: Substitute msr_pow macro with new M_MSR_POW macro, Víctor Colombo, 2022/04/22
- [PATCH 10/20] target/ppc: Substitute msr_me macro with new M_MSR_ME macro, Víctor Colombo, 2022/04/22
- [PATCH 11/20] target/ppc: Substitute msr_gs macro with new M_MSR_GS macro, Víctor Colombo, 2022/04/22
- [PATCH 12/20] target/ppc: Substitute msr_fp macro with new M_MSR_FP macro, Víctor Colombo, 2022/04/22
- [PATCH 13/20] target/ppc: Substitute msr_cm macro with new M_MSR_CM macro, Víctor Colombo, 2022/04/22
- [PATCH 14/20] target/ppc: Substitute msr_ir macro with new M_MSR_IR macro,
Víctor Colombo <=
- [PATCH 16/20] target/ppc: Substitute msr_ep macro with new M_MSR_EP macro, Víctor Colombo, 2022/04/22
- [PATCH 15/20] target/ppc: Substitute msr_dr macro with new M_MSR_DR macro, Víctor Colombo, 2022/04/22
- [PATCH 17/20] target/ppc: Substitute msr_fe macro with new M_MSR_FE macro, Víctor Colombo, 2022/04/22
- [PATCH 18/20] target/ppc: Substitute msr_ts macro with new M_MSR_TS macro, Víctor Colombo, 2022/04/22
- [PATCH 19/20] target/ppc: Substitute msr_hv macro with new M_MSR_HV macro, Víctor Colombo, 2022/04/22
- [PATCH 20/20] target/ppc: Add unused M_MSR_* macros, Víctor Colombo, 2022/04/22
- Re: [PATCH 00/20] target/ppc: Remove hidden usages of *env, Richard Henderson, 2022/04/26