Index: genarch/src/mm/as_pt.c
===================================================================
--- genarch/src/mm/as_pt.c	(revision 2299914109fe20b32a7226821981f5eb11a8394a)
+++ genarch/src/mm/as_pt.c	(revision bd72b475cd50bcd70a4ba176ff6b1bb17225c6ca)
@@ -67,13 +67,19 @@
 		memsetb((__address) dst_ptl0, PAGE_SIZE, 0);
 	} else {
+		__address src, dst;
+	
 		/*
 		 * Copy the kernel address space portion to new PTL0.
-		 * TODO: copy only kernel address space.
 		 */
 		 
 		ipl = interrupts_disable();
-		spinlock_lock(&AS_KERNEL->lock);
+		spinlock_lock(&AS_KERNEL->lock);		
 		src_ptl0 = (pte_t *) PA2KA((__address) AS_KERNEL->page_table);
-		memcpy((void *) dst_ptl0,(void *) src_ptl0, PAGE_SIZE);
+
+		src = (__address) &src_ptl0[PTL0_INDEX(KERNEL_ADDRESS_SPACE_START)];
+		dst = (__address) &dst_ptl0[PTL0_INDEX(KERNEL_ADDRESS_SPACE_START)];
+
+		memsetb((__address) dst_ptl0, PAGE_SIZE, 0);
+		memcpy((void *) dst, (void *) src, PAGE_SIZE - (src - (__address) src_ptl0));
 		spinlock_unlock(&AS_KERNEL->lock);
 		interrupts_restore(ipl);
