Index: arch/ia64/src/context.S
===================================================================
--- arch/ia64/src/context.S	(revision 8005218da49f92970bd2b4a73804c8fff6a56821)
+++ arch/ia64/src/context.S	(revision 37e9dbd5a7af25bc32f775aad0e1301bf5df7289)
@@ -114,5 +114,5 @@
 
 context_restore_arch:
-	alloc loc0 = ar.pfs, 1, 8, 0, 0	;;
+	alloc loc0 = ar.pfs, 1, 9, 0, 0	;;
 
 	ld8 loc0 = [in0], 8	;;	/* load ar.pfs */
@@ -132,9 +132,22 @@
 
 	/*
+	 * Put RSE to enforced lazy mode.
+	 * So that ar.bspstore and ar.rnat can be written.
+	 */
+	movl loc8 = ~3
+	and loc8 = loc3, loc8
+	mov ar.rsc = loc8
+
+	/*
+	 * Flush dirty registers to backing store.
+	 * We do this because we want the following move
+	 * to ar.bspstore to assign the same value to ar.bsp.
+	 */
+	flushrs
+
+	/*
 	 * Restore application registers
 	 */
-
-	/* TODO: ensure RSE lazy mode */
-	mov ar.bspstore = loc4
+	mov ar.bspstore = loc4	/* rse.bspload = ar.bsp = ar.bspstore = loc4 */
 	mov ar.rnat = loc5
 	mov ar.pfs = loc0
