mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-16 06:31:51 -06:00
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
1 changed files with 19 additions and 24 deletions
|
@ -99,31 +99,26 @@ static int ppc6xx_tlb_pte_check(mmu_ctx_t *ctx, target_ulong pte0,
|
||||||
MMUAccessType access_type)
|
MMUAccessType access_type)
|
||||||
{
|
{
|
||||||
/* Check validity and table match */
|
/* Check validity and table match */
|
||||||
if (pte_is_valid(pte0) && ((pte0 >> 6) & 1) == pteh) {
|
if (!pte_is_valid(pte0) || ((pte0 >> 6) & 1) != pteh ||
|
||||||
/* Check vsid & api */
|
(pte0 & PTE_PTEM_MASK) != ctx->ptem) {
|
||||||
if ((pte0 & PTE_PTEM_MASK) == ctx->ptem) {
|
return -1;
|
||||||
if (ctx->raddr != (hwaddr)-1ULL) {
|
}
|
||||||
/* all matches should have equal RPN, WIMG & PP */
|
/* all matches should have equal RPN, WIMG & PP */
|
||||||
if ((ctx->raddr & PTE_CHECK_MASK) != (pte1 & PTE_CHECK_MASK)) {
|
if (ctx->raddr != (hwaddr)-1ULL &&
|
||||||
qemu_log_mask(CPU_LOG_MMU, "Bad RPN/WIMG/PP\n");
|
(ctx->raddr & PTE_CHECK_MASK) != (pte1 & PTE_CHECK_MASK)) {
|
||||||
return -3;
|
qemu_log_mask(CPU_LOG_MMU, "Bad RPN/WIMG/PP\n");
|
||||||
}
|
return -3;
|
||||||
}
|
}
|
||||||
/* Keep the matching PTE information */
|
/* Keep the matching PTE information */
|
||||||
ctx->raddr = pte1;
|
ctx->raddr = pte1;
|
||||||
ctx->prot = ppc_hash32_prot(ctx->key, pte1 & HPTE32_R_PP, ctx->nx);
|
ctx->prot = ppc_hash32_prot(ctx->key, pte1 & HPTE32_R_PP, ctx->nx);
|
||||||
if (check_prot_access_type(ctx->prot, access_type)) {
|
if (check_prot_access_type(ctx->prot, access_type)) {
|
||||||
/* Access granted */
|
qemu_log_mask(CPU_LOG_MMU, "PTE access granted !\n");
|
||||||
qemu_log_mask(CPU_LOG_MMU, "PTE access granted !\n");
|
return 0;
|
||||||
return 0;
|
} else {
|
||||||
} else {
|
qemu_log_mask(CPU_LOG_MMU, "PTE access rejected\n");
|
||||||
/* Access right violation */
|
return -2;
|
||||||
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,
|
static int pte_update_flags(mmu_ctx_t *ctx, target_ulong *pte1p,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue