Index: arch/mips32/include/asm.h
===================================================================
--- arch/mips32/include/asm.h	(revision e1be3b6b980efbd59c66cd0b6f3c2dc4a505b824)
+++ arch/mips32/include/asm.h	(revision 9cbd27bda027a69ffbcba03ec98a8179d37e83f0)
@@ -58,5 +58,6 @@
 extern void cpu_halt(void);
 extern void asm_delay_loop(__u32 t);
-extern void userspace_asm(__address ustack, __address uspace_uarg);
+extern void userspace_asm(__address ustack, __address uspace_uarg,
+			  __address entry);
 
 #endif
Index: arch/mips32/src/mips32.c
===================================================================
--- arch/mips32/src/mips32.c	(revision e1be3b6b980efbd59c66cd0b6f3c2dc4a505b824)
+++ arch/mips32/src/mips32.c	(revision 9cbd27bda027a69ffbcba03ec98a8179d37e83f0)
@@ -130,5 +130,7 @@
 					      cp0_status_ie_enabled_bit));
 	cp0_epc_write((__address) kernel_uarg->uspace_entry);
-	userspace_asm(((__address) kernel_uarg->uspace_stack+PAGE_SIZE), (__address) kernel_uarg->uspace_uarg);
+	userspace_asm(((__address) kernel_uarg->uspace_stack+PAGE_SIZE), 
+		      (__address) kernel_uarg->uspace_uarg,
+		      (__address) kernel_uarg->uspace_entry);
 	while (1)
 		;
Index: arch/mips32/src/start.S
===================================================================
--- arch/mips32/src/start.S	(revision e1be3b6b980efbd59c66cd0b6f3c2dc4a505b824)
+++ arch/mips32/src/start.S	(revision 9cbd27bda027a69ffbcba03ec98a8179d37e83f0)
@@ -304,5 +304,6 @@
 userspace_asm:
 	add $sp, $a0, 0
-	add $v0, $a1, 0
-	eret
-
+	add $v0, $a1, 0 
+	add $t9, $a2, 0   # Set up correct entry into PIC code 
+	eret
+
