@@ -98,13 +98,12 @@ static int ppc6xx_tlb_pte_check(mmu_ctx_t *ctx, target_ulong pte0,
target_ulong pte1, int pteh,
MMUAccessType access_type)
{
- int ret, pp;
+ int ret;
ret = -1;
/* Check validity and table match */
if (pte_is_valid(pte0) && ((pte0 >> 6) & 1) == pteh) {
/* Check vsid & api */
- pp = pte1 & 0x00000003;
if ((pte0 & PTE_PTEM_MASK) == ctx->ptem) {
if (ctx->raddr != (hwaddr)-1ULL) {
/* all matches should have equal RPN, WIMG & PP */
@@ -115,7 +114,7 @@ static int ppc6xx_tlb_pte_check(mmu_ctx_t *ctx, target_ulong pte0,
}
/* Keep the matching PTE information */
ctx->raddr = pte1;
- ctx->prot = ppc_hash32_prot(ctx->key, 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)) {
/* Access granted */
qemu_log_mask(CPU_LOG_MMU, "PTE access granted !\n");