Index: kernel/arch/amd64/src/userspace.c
===================================================================
--- kernel/arch/amd64/src/userspace.c	(revision b5a1730ff354c85c5705e67a0537b3a6768217ac)
+++ kernel/arch/amd64/src/userspace.c	(revision c98e6ee244a8e271a395a052069c23bca4f8b538)
@@ -62,4 +62,6 @@
 			  "pushq %4\n"
 			  "movq %5, %%rax\n"
+			  /* %rdi is defined to hold pcb_ptr - set it to 0 */
+			  "xorq %%rdi, %%rdi\n"
 			  "iretq\n"
 			  : : 
Index: kernel/arch/arm32/src/userspace.c
===================================================================
--- kernel/arch/arm32/src/userspace.c	(revision b5a1730ff354c85c5705e67a0537b3a6768217ac)
+++ kernel/arch/arm32/src/userspace.c	(revision c98e6ee244a8e271a395a052069c23bca4f8b538)
@@ -71,6 +71,9 @@
 	ustate.r0 = (uintptr_t) kernel_uarg->uspace_uarg;
 
+	/* %r1 is defined to hold pcb_ptr - set it to 0 */
+	ustate.r1 = 0;
+
 	/* clear other registers */
-	ustate.r1 = ustate.r2  = ustate.r3  = ustate.r4  = ustate.r5 =
+	ustate.r2 = ustate.r3  = ustate.r4  = ustate.r5 =
 	    ustate.r6  = ustate.r7  = ustate.r8  = ustate.r9 = ustate.r10 = 
 	    ustate.r11 = ustate.r12 = ustate.lr = 0;
Index: kernel/arch/ia32/src/userspace.c
===================================================================
--- kernel/arch/ia32/src/userspace.c	(revision b5a1730ff354c85c5705e67a0537b3a6768217ac)
+++ kernel/arch/ia32/src/userspace.c	(revision c98e6ee244a8e271a395a052069c23bca4f8b538)
@@ -71,4 +71,8 @@
 		"pushl %4\n"
 		"movl %5, %%eax\n"
+
+		/* %ebx is defined to hold pcb_ptr - set it to 0 */
+		"xorl %%ebx, %%ebx\n"	
+
 		"iret\n"
 		: 
Index: kernel/arch/ia32xen/src/userspace.c
===================================================================
--- kernel/arch/ia32xen/src/userspace.c	(revision b5a1730ff354c85c5705e67a0537b3a6768217ac)
+++ kernel/arch/ia32xen/src/userspace.c	(revision c98e6ee244a8e271a395a052069c23bca4f8b538)
@@ -69,4 +69,8 @@
 		"pushl %4\n"
 		"movl %5, %%eax\n"
+
+		/* %ebx is defined to hold pcb_ptr - set it to 0 */
+		"xorl %%ebx, %%ebx\n"
+
 		"iret\n"
 		: 
Index: kernel/arch/ia64/src/asm.S
===================================================================
--- kernel/arch/ia64/src/asm.S	(revision b5a1730ff354c85c5705e67a0537b3a6768217ac)
+++ kernel/arch/ia64/src/asm.S	(revision c98e6ee244a8e271a395a052069c23bca4f8b538)
@@ -164,4 +164,7 @@
 	xor r1 = r1, r1
 	
+	/* r2 is defined to hold pcb_ptr - set it to 0 */
+	xor r2 = r2, r2
+	
 	mov loc1 = cr.ifs
 	movl loc2 = PFM_MASK ;;
Index: kernel/arch/mips32/src/start.S
===================================================================
--- kernel/arch/mips32/src/start.S	(revision b5a1730ff354c85c5705e67a0537b3a6768217ac)
+++ kernel/arch/mips32/src/start.S	(revision c98e6ee244a8e271a395a052069c23bca4f8b538)
@@ -350,4 +350,6 @@
 	add $sp, $a0, 0
 	add $v0, $a1, 0 
-	add $t9, $a2, 0			# Set up correct entry into PIC code 
-	eret
+	add $t9, $a2, 0			# Set up correct entry into PIC code
+	xor $a0, $a0, $a0		# $a0 is defined to hold pcb_ptr
+					# set it to 0
+	eret
Index: kernel/arch/ppc32/src/asm.S
===================================================================
--- kernel/arch/ppc32/src/asm.S	(revision b5a1730ff354c85c5705e67a0537b3a6768217ac)
+++ kernel/arch/ppc32/src/asm.S	(revision c98e6ee244a8e271a395a052069c23bca4f8b538)
@@ -66,4 +66,8 @@
 	
 	mr sp, r4
+
+	# %r3 is defined to hold pcb_ptr - set it to 0
+
+	xor r3, r3, r3
 	
 	# jump to userspace
Index: kernel/arch/ppc64/src/asm.S
===================================================================
--- kernel/arch/ppc64/src/asm.S	(revision b5a1730ff354c85c5705e67a0537b3a6768217ac)
+++ kernel/arch/ppc64/src/asm.S	(revision c98e6ee244a8e271a395a052069c23bca4f8b538)
@@ -67,4 +67,8 @@
 	mr sp, r4
 	
+	# %r3 is defined to hold pcb_ptr - set it to 0
+
+	xor r3, r3, r3
+
 	# jump to userspace
 	
Index: kernel/arch/sparc64/src/asm.S
===================================================================
--- kernel/arch/sparc64/src/asm.S	(revision b5a1730ff354c85c5705e67a0537b3a6768217ac)
+++ kernel/arch/sparc64/src/asm.S	(revision c98e6ee244a8e271a395a052069c23bca4f8b538)
@@ -275,4 +275,6 @@
 
 	mov %i2, %o0			! uarg
+	xor %o1, %o1, %o1		! %o1 is defined to hold pcb_ptr
+					! set it to 0
 
 	clr %i2
