mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-24 20:19:44 +00:00
mmu-hash32: Don't look up page tables on BAT permission error
BEHAVIOUR CHANGE Currently, on any failure translating an address with BATs, we proceed to normal segment and page table translation. That's incorrect if the BAT error was due to permissions, rather than not finding a matching BAT. We've gotten away with it because a guest would not usually put translations for the same address in both BATs and page table. Nonetheless this patch corrects the logic, only doing page table lookup if no BAT is found. A matching BAT with bad permissions will now correctly trigger an exception. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
145e52f318
commit
59acbe2855
@ -400,10 +400,7 @@ static int ppc_hash32_translate(CPUPPCState *env, struct mmu_ctx_hash32 *ctx,
|
||||
if (env->nb_BATs != 0) {
|
||||
ctx->raddr = ppc_hash32_bat_lookup(env, eaddr, rwx, &ctx->prot);
|
||||
if (ctx->raddr != -1) {
|
||||
ret = ppc_hash32_check_prot(ctx->prot, rwx);
|
||||
if (ret == 0) {
|
||||
return 0;
|
||||
}
|
||||
return ppc_hash32_check_prot(ctx->prot, rwx);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user