Index: kernel/genarch/include/genarch/mm/page_pt.h
===================================================================
--- kernel/genarch/include/genarch/mm/page_pt.h	(revision 5df19638ae7b362a07b4f8c7b1647a3adcb53862)
+++ kernel/genarch/include/genarch/mm/page_pt.h	(revision b11f6fb94c92ea221255fe8e522492de3a3a0829)
@@ -63,4 +63,10 @@
 #define PTL2_FRAMES  PTL2_FRAMES_ARCH
 #define PTL3_FRAMES  PTL3_FRAMES_ARCH
+
+/* Table sizes in each level (in bytes) */
+#define PTL0_SIZE  FRAMES2SIZE(PTL0_FRAMES)
+#define PTL1_SIZE  FRAMES2SIZE(PTL1_FRAMES)
+#define PTL2_SIZE  FRAMES2SIZE(PTL2_FRAMES)
+#define PTL3_SIZE  FRAMES2SIZE(PTL3_FRAMES)
 
 /*
Index: kernel/genarch/src/mm/as_pt.c
===================================================================
--- kernel/genarch/src/mm/as_pt.c	(revision 5df19638ae7b362a07b4f8c7b1647a3adcb53862)
+++ kernel/genarch/src/mm/as_pt.c	(revision b11f6fb94c92ea221255fe8e522492de3a3a0829)
@@ -74,9 +74,8 @@
 {
 	pte_t *dst_ptl0 = (pte_t *)
-	    PA2KA(frame_alloc(PTL0_FRAMES, FRAME_LOWMEM, 0));
-	size_t table_size = FRAMES2SIZE(PTL0_FRAMES);
+	    PA2KA(frame_alloc(PTL0_FRAMES, FRAME_LOWMEM, PTL0_SIZE - 1));
 	
 	if (flags & FLAG_AS_KERNEL)
-		memsetb(dst_ptl0, table_size, 0);
+		memsetb(dst_ptl0, PTL0_SIZE, 0);
 	else {
 		/*
@@ -94,7 +93,7 @@
 		    &dst_ptl0[PTL0_INDEX(KERNEL_ADDRESS_SPACE_START)];
 		
-		memsetb(dst_ptl0, table_size, 0);
+		memsetb(dst_ptl0, PTL0_SIZE, 0);
 		memcpy((void *) dst, (void *) src,
-		    table_size - (src - (uintptr_t) src_ptl0));
+		    PTL0_SIZE - (src - (uintptr_t) src_ptl0));
 		
 		mutex_unlock(&AS_KERNEL->lock);
Index: kernel/genarch/src/mm/page_pt.c
===================================================================
--- kernel/genarch/src/mm/page_pt.c	(revision 5df19638ae7b362a07b4f8c7b1647a3adcb53862)
+++ kernel/genarch/src/mm/page_pt.c	(revision b11f6fb94c92ea221255fe8e522492de3a3a0829)
@@ -83,6 +83,6 @@
 	if (GET_PTL1_FLAGS(ptl0, PTL0_INDEX(page)) & PAGE_NOT_PRESENT) {
 		pte_t *newpt = (pte_t *)
-		    PA2KA(frame_alloc(PTL1_FRAMES, FRAME_LOWMEM, 0));
-		memsetb(newpt, FRAMES2SIZE(PTL1_FRAMES), 0);
+		    PA2KA(frame_alloc(PTL1_FRAMES, FRAME_LOWMEM, PTL1_SIZE - 1));
+		memsetb(newpt, PTL1_SIZE, 0);
 		SET_PTL1_ADDRESS(ptl0, PTL0_INDEX(page), KA2PA(newpt));
 		SET_PTL1_FLAGS(ptl0, PTL0_INDEX(page),
@@ -102,6 +102,6 @@
 	if (GET_PTL2_FLAGS(ptl1, PTL1_INDEX(page)) & PAGE_NOT_PRESENT) {
 		pte_t *newpt = (pte_t *)
-		    PA2KA(frame_alloc(PTL2_FRAMES, FRAME_LOWMEM, 0));
-		memsetb(newpt, FRAMES2SIZE(PTL2_FRAMES), 0);
+		    PA2KA(frame_alloc(PTL2_FRAMES, FRAME_LOWMEM, PTL2_SIZE - 1));
+		memsetb(newpt, PTL2_SIZE, 0);
 		SET_PTL2_ADDRESS(ptl1, PTL1_INDEX(page), KA2PA(newpt));
 		SET_PTL2_FLAGS(ptl1, PTL1_INDEX(page),
@@ -119,6 +119,6 @@
 	if (GET_PTL3_FLAGS(ptl2, PTL2_INDEX(page)) & PAGE_NOT_PRESENT) {
 		pte_t *newpt = (pte_t *)
-		    PA2KA(frame_alloc(PTL3_FRAMES, FRAME_LOWMEM, 0));
-		memsetb(newpt, FRAMES2SIZE(PTL3_FRAMES), 0);
+		    PA2KA(frame_alloc(PTL3_FRAMES, FRAME_LOWMEM, PTL2_SIZE - 1));
+		memsetb(newpt, PTL2_SIZE, 0);
 		SET_PTL3_ADDRESS(ptl2, PTL2_INDEX(page), KA2PA(newpt));
 		SET_PTL3_FLAGS(ptl2, PTL2_INDEX(page),
