arm:allow to lookup physical addresses of sections.
Change-Id: If4716b81cceee5d8b30d5f103b772b0ac99fc807
This commit is contained in:
parent
6595e79da8
commit
a88bc73e4c
@ -309,17 +309,17 @@ int vm_lookup(const struct proc *proc, const vir_bytes virtual,
|
|||||||
assert(pde >= 0 && pde < ARM_VM_DIR_ENTRIES);
|
assert(pde >= 0 && pde < ARM_VM_DIR_ENTRIES);
|
||||||
pde_v = phys_get32((u32_t) (root + pde));
|
pde_v = phys_get32((u32_t) (root + pde));
|
||||||
|
|
||||||
if(!(pde_v & ARM_VM_PDE_PRESENT)) {
|
if(! ((pde_v & ARM_VM_PDE_PRESENT)
|
||||||
|
|| (pde_v & ARM_VM_SECTION_PRESENT)
|
||||||
|
)) {
|
||||||
return EFAULT;
|
return EFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We don't expect to ever see this.
|
|
||||||
* LSC Impossible with the previous test.
|
|
||||||
if(pde_v & ARM_VM_SECTION) {
|
if(pde_v & ARM_VM_SECTION) {
|
||||||
*physical = pde_v & ARM_VM_SECTION_MASK;
|
*physical = pde_v & ARM_VM_SECTION_MASK;
|
||||||
if(ptent) *ptent = pde_v;
|
if(ptent) *ptent = pde_v;
|
||||||
*physical += virtual & ARM_VM_OFFSET_MASK_1MB;
|
*physical += virtual & ARM_VM_OFFSET_MASK_1MB;
|
||||||
} else */ {
|
} else {
|
||||||
/* Retrieve page table entry. */
|
/* Retrieve page table entry. */
|
||||||
pt = (u32_t *) (pde_v & ARM_VM_PDE_MASK);
|
pt = (u32_t *) (pde_v & ARM_VM_PDE_MASK);
|
||||||
assert(!((u32_t) pt % ARM_PAGETABLE_SIZE));
|
assert(!((u32_t) pt % ARM_PAGETABLE_SIZE));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user