aboutsummaryrefslogtreecommitdiff
path: root/i386/intel
diff options
context:
space:
mode:
Diffstat (limited to 'i386/intel')
-rw-r--r--i386/intel/pmap.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/i386/intel/pmap.c b/i386/intel/pmap.c
index a9879340..1a20f38b 100644
--- a/i386/intel/pmap.c
+++ b/i386/intel/pmap.c
@@ -1477,9 +1477,11 @@ void pmap_destroy(pmap_t p)
pt_entry_t *pdebase = (pt_entry_t*) ptetokv(pde);
if (
#ifdef __x86_64__
- l4i <= lin2l4num(VM_MAX_USER_ADDRESS) &&
+ l4i < lin2l4num(VM_MAX_USER_ADDRESS) ||
+ (l4i == lin2l4num(VM_MAX_USER_ADDRESS) && l3i <= lin2pdpnum(VM_MAX_USER_ADDRESS)))
+#else /* __x86_64__ */
+ l3i <= lin2pdpnum(VM_MAX_USER_ADDRESS)
#endif /* __x86_64__ */
- l3i <= lin2pdpnum(VM_MAX_USER_ADDRESS))
for (int l2i = 0; l2i < NPTES; l2i++)
#else /* PAE */
pt_entry_t *pdebase = p->dirbase;