Index: kernel/arch/ia64/src/ia64.c
===================================================================
--- kernel/arch/ia64/src/ia64.c	(revision 26aafe8d909ecb61306a77910aeb374da3814391)
+++ kernel/arch/ia64/src/ia64.c	(revision b6f3e7e89f35903bd2012ad022ef70b966d8b246)
@@ -249,8 +249,14 @@
 	rsc.mode = 3;			/* eager mode */
 
+	/*
+	 * Switch to userspace.
+	 *
+	 * When calculating stack addresses, mind the stack split between the
+	 * memory stack and the RSE stack. Each occuppies STACK_SIZE / 2 bytes.
+	 */
 	switch_to_userspace((uintptr_t) kernel_uarg->uspace_entry,
-	    ((uintptr_t) kernel_uarg->uspace_stack) + STACK_SIZE -
+	    ((uintptr_t) kernel_uarg->uspace_stack) + STACK_SIZE / 2 -
 	    ALIGN_UP(STACK_ITEM_SIZE, STACK_ALIGNMENT),
-	    ((uintptr_t) kernel_uarg->uspace_stack) + STACK_SIZE,
+	    ((uintptr_t) kernel_uarg->uspace_stack) + STACK_SIZE / 2,
 	    (uintptr_t) kernel_uarg->uspace_uarg, psr.value, rsc.value);
 
Index: kernel/arch/ia64/src/proc/scheduler.c
===================================================================
--- kernel/arch/ia64/src/proc/scheduler.c	(revision 26aafe8d909ecb61306a77910aeb374da3814391)
+++ kernel/arch/ia64/src/proc/scheduler.c	(revision b6f3e7e89f35903bd2012ad022ef70b966d8b246)
@@ -79,4 +79,7 @@
 	 * Record address of kernel stack to bank 0 r23.
 	 * These values will be found there after switch from userspace.
+	 *
+	 * Mind the 1:1 split of the entire STACK_SIZE long region between the
+	 * memory stack and the RSE stack.
 	 */
 	asm volatile (
@@ -86,6 +89,6 @@
 		"bsw.1\n"
 		:
-		: "r" (&THREAD->kstack[STACK_SIZE]),
-		  "r" (&THREAD->kstack[STACK_SIZE - SP_DELTA])
+		: "r" (&THREAD->kstack[STACK_SIZE / 2]),
+		  "r" (&THREAD->kstack[STACK_SIZE / 2 - SP_DELTA])
 		);
 }
