Fix XScale MMU's extended small pages.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3093 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
ae5d8053a1
commit
330c4d61a6
@ -516,16 +516,16 @@ static int get_phys_addr(CPUState *env, uint32_t address, int access_type,
|
|||||||
ap = (desc >> (4 + ((address >> 13) & 6))) & 3;
|
ap = (desc >> (4 + ((address >> 13) & 6))) & 3;
|
||||||
break;
|
break;
|
||||||
case 3: /* 1k page. */
|
case 3: /* 1k page. */
|
||||||
|
if (type == 1) {
|
||||||
if (arm_feature(env, ARM_FEATURE_XSCALE))
|
if (arm_feature(env, ARM_FEATURE_XSCALE))
|
||||||
phys_addr = (desc & 0xfffff000) | (address & 0xfff);
|
phys_addr = (desc & 0xfffff000) | (address & 0xfff);
|
||||||
else {
|
else {
|
||||||
if (type == 1) {
|
|
||||||
/* Page translation fault. */
|
/* Page translation fault. */
|
||||||
code = 7;
|
code = 7;
|
||||||
goto do_fault;
|
goto do_fault;
|
||||||
}
|
}
|
||||||
|
} else
|
||||||
phys_addr = (desc & 0xfffffc00) | (address & 0x3ff);
|
phys_addr = (desc & 0xfffffc00) | (address & 0x3ff);
|
||||||
}
|
|
||||||
ap = (desc >> 4) & 3;
|
ap = (desc >> 4) & 3;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
Loading…
Reference in New Issue
Block a user