mirror of https://github.com/xemu-project/xemu.git
PPC: e500: Fix TLB lookup for 32bit CPUs
When we run 32bit guest CPUs (or 32bit guest code on 64bit CPUs) on qemu-system-ppc64 the TLB lookup will use the full effective address as pointer. However, only the first 32bits are valid when MSR.CM = 0. Check for that condition. This makes QEMU boot an e500v2 guest with more than 1G of RAM for me. Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
f2e2bc9ca0
commit
deb6ed13eb
|
@ -903,6 +903,11 @@ static int ppcmas_tlb_check(CPUPPCState *env, ppcmas_tlb_t *tlb,
|
||||||
target_ulong mask;
|
target_ulong mask;
|
||||||
uint32_t tlb_pid;
|
uint32_t tlb_pid;
|
||||||
|
|
||||||
|
if (!msr_cm) {
|
||||||
|
/* In 32bit mode we can only address 32bit EAs */
|
||||||
|
address = (uint32_t)address;
|
||||||
|
}
|
||||||
|
|
||||||
/* Check valid flag */
|
/* Check valid flag */
|
||||||
if (!(tlb->mas1 & MAS1_VALID)) {
|
if (!(tlb->mas1 & MAS1_VALID)) {
|
||||||
return -1;
|
return -1;
|
||||||
|
|
Loading…
Reference in New Issue