Index: arch/ia32/include/mm/page.h
===================================================================
--- arch/ia32/include/mm/page.h	(revision bfb87dfa5a2db236f9520a16f8ba1d59d1d9c11c)
+++ arch/ia32/include/mm/page.h	(revision 0882a9a17a26cf3ed328548c95dfadf23263a59f)
@@ -78,4 +78,5 @@
 #include <typedefs.h>
 
+/** Page Table Entry. */
 struct page_specifier {
 	unsigned present : 1;
@@ -88,5 +89,6 @@
 	unsigned pat : 1;
 	unsigned global : 1;
-	unsigned avl : 3;
+	unsigned soft_valid : 1;	/**< Valid content even if the present bit is not set. */
+	unsigned avl : 2;
 	unsigned frame_address : 20;
 } __attribute__ ((packed));
@@ -116,4 +118,9 @@
 	p->writeable = (flags & PAGE_WRITE) != 0;
 	p->global = (flags & PAGE_GLOBAL) != 0;
+	
+	/*
+	 * Ensure that there is at least one bit set even if the present bit is cleared.
+	 */
+	p->soft_valid = true;
 }
 
