target/ppc: Remove unneeded local variable from booke tlb checks
In mmubooke_check_tlb() and mmubooke206_check_tlb() we can assign the value of prot2 directly to the destination, no need to have a separate local variable for it. Reviewed-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
This commit is contained in:
parent
3f520078de
commit
750fbe3342
@ -628,8 +628,6 @@ static int mmubooke_check_tlb(CPUPPCState *env, ppcemb_tlb_t *tlb,
|
||||
hwaddr *raddr, int *prot, target_ulong address,
|
||||
MMUAccessType access_type, int i)
|
||||
{
|
||||
int prot2;
|
||||
|
||||
if (!mmubooke_check_pid(env, tlb, raddr, address, i)) {
|
||||
qemu_log_mask(CPU_LOG_MMU, "%s: TLB entry not found\n", __func__);
|
||||
return -1;
|
||||
@ -644,17 +642,16 @@ static int mmubooke_check_tlb(CPUPPCState *env, ppcemb_tlb_t *tlb,
|
||||
}
|
||||
|
||||
if (FIELD_EX64(env->msr, MSR, PR)) {
|
||||
prot2 = tlb->prot & 0xF;
|
||||
*prot = tlb->prot & 0xF;
|
||||
} else {
|
||||
prot2 = (tlb->prot >> 4) & 0xF;
|
||||
*prot = (tlb->prot >> 4) & 0xF;
|
||||
}
|
||||
*prot = prot2;
|
||||
if (prot2 & prot_for_access_type(access_type)) {
|
||||
if (*prot & prot_for_access_type(access_type)) {
|
||||
qemu_log_mask(CPU_LOG_MMU, "%s: good TLB!\n", __func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
qemu_log_mask(CPU_LOG_MMU, "%s: no prot match: %x\n", __func__, prot2);
|
||||
qemu_log_mask(CPU_LOG_MMU, "%s: no prot match: %x\n", __func__, *prot);
|
||||
return access_type == MMU_INST_FETCH ? -3 : -2;
|
||||
}
|
||||
|
||||
@ -795,7 +792,6 @@ static int mmubooke206_check_tlb(CPUPPCState *env, ppcmas_tlb_t *tlb,
|
||||
target_ulong address,
|
||||
MMUAccessType access_type, int mmu_idx)
|
||||
{
|
||||
int prot2 = 0;
|
||||
uint32_t epid;
|
||||
bool as, pr;
|
||||
bool use_epid = mmubooke206_get_as(env, mmu_idx, &epid, &as, &pr);
|
||||
@ -841,34 +837,34 @@ found_tlb:
|
||||
return -1;
|
||||
}
|
||||
|
||||
*prot = 0;
|
||||
if (pr) {
|
||||
if (tlb->mas7_3 & MAS3_UR) {
|
||||
prot2 |= PAGE_READ;
|
||||
*prot |= PAGE_READ;
|
||||
}
|
||||
if (tlb->mas7_3 & MAS3_UW) {
|
||||
prot2 |= PAGE_WRITE;
|
||||
*prot |= PAGE_WRITE;
|
||||
}
|
||||
if (tlb->mas7_3 & MAS3_UX) {
|
||||
prot2 |= PAGE_EXEC;
|
||||
*prot |= PAGE_EXEC;
|
||||
}
|
||||
} else {
|
||||
if (tlb->mas7_3 & MAS3_SR) {
|
||||
prot2 |= PAGE_READ;
|
||||
*prot |= PAGE_READ;
|
||||
}
|
||||
if (tlb->mas7_3 & MAS3_SW) {
|
||||
prot2 |= PAGE_WRITE;
|
||||
*prot |= PAGE_WRITE;
|
||||
}
|
||||
if (tlb->mas7_3 & MAS3_SX) {
|
||||
prot2 |= PAGE_EXEC;
|
||||
*prot |= PAGE_EXEC;
|
||||
}
|
||||
}
|
||||
*prot = prot2;
|
||||
if (prot2 & prot_for_access_type(access_type)) {
|
||||
if (*prot & prot_for_access_type(access_type)) {
|
||||
qemu_log_mask(CPU_LOG_MMU, "%s: good TLB!\n", __func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
qemu_log_mask(CPU_LOG_MMU, "%s: no prot match: %x\n", __func__, prot2);
|
||||
qemu_log_mask(CPU_LOG_MMU, "%s: no prot match: %x\n", __func__, *prot);
|
||||
return access_type == MMU_INST_FETCH ? -3 : -2;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user