target/ppc/mmu_common.c: Simplify ppc6xx_tlb_pte_check()
Invert conditions to avoid deep nested ifs and return early instead. Remove some obvious comments that don't add more clarity. Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> Reviewed-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
This commit is contained in:
parent
0e65cea1bd
commit
9e2d6802b5
@ -99,31 +99,26 @@ static int ppc6xx_tlb_pte_check(mmu_ctx_t *ctx, target_ulong pte0,
|
||||
MMUAccessType access_type)
|
||||
{
|
||||
/* Check validity and table match */
|
||||
if (pte_is_valid(pte0) && ((pte0 >> 6) & 1) == pteh) {
|
||||
/* Check vsid & api */
|
||||
if ((pte0 & PTE_PTEM_MASK) == ctx->ptem) {
|
||||
if (ctx->raddr != (hwaddr)-1ULL) {
|
||||
/* all matches should have equal RPN, WIMG & PP */
|
||||
if ((ctx->raddr & PTE_CHECK_MASK) != (pte1 & PTE_CHECK_MASK)) {
|
||||
qemu_log_mask(CPU_LOG_MMU, "Bad RPN/WIMG/PP\n");
|
||||
return -3;
|
||||
}
|
||||
}
|
||||
/* Keep the matching PTE information */
|
||||
ctx->raddr = pte1;
|
||||
ctx->prot = ppc_hash32_prot(ctx->key, pte1 & HPTE32_R_PP, ctx->nx);
|
||||
if (check_prot_access_type(ctx->prot, access_type)) {
|
||||
/* Access granted */
|
||||
qemu_log_mask(CPU_LOG_MMU, "PTE access granted !\n");
|
||||
return 0;
|
||||
} else {
|
||||
/* Access right violation */
|
||||
qemu_log_mask(CPU_LOG_MMU, "PTE access rejected\n");
|
||||
return -2;
|
||||
}
|
||||
}
|
||||
if (!pte_is_valid(pte0) || ((pte0 >> 6) & 1) != pteh ||
|
||||
(pte0 & PTE_PTEM_MASK) != ctx->ptem) {
|
||||
return -1;
|
||||
}
|
||||
/* all matches should have equal RPN, WIMG & PP */
|
||||
if (ctx->raddr != (hwaddr)-1ULL &&
|
||||
(ctx->raddr & PTE_CHECK_MASK) != (pte1 & PTE_CHECK_MASK)) {
|
||||
qemu_log_mask(CPU_LOG_MMU, "Bad RPN/WIMG/PP\n");
|
||||
return -3;
|
||||
}
|
||||
/* Keep the matching PTE information */
|
||||
ctx->raddr = pte1;
|
||||
ctx->prot = ppc_hash32_prot(ctx->key, pte1 & HPTE32_R_PP, ctx->nx);
|
||||
if (check_prot_access_type(ctx->prot, access_type)) {
|
||||
qemu_log_mask(CPU_LOG_MMU, "PTE access granted !\n");
|
||||
return 0;
|
||||
} else {
|
||||
qemu_log_mask(CPU_LOG_MMU, "PTE access rejected\n");
|
||||
return -2;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int pte_update_flags(mmu_ctx_t *ctx, target_ulong *pte1p,
|
||||
|
Loading…
Reference in New Issue
Block a user