Index: arch/ia64/include/interrupt.h
===================================================================
--- arch/ia64/include/interrupt.h	(revision 83d2d0e4bbabfdae355ca18dba80470da9b35e38)
+++ arch/ia64/include/interrupt.h	(revision e1c68e0c902e5b4a5c075c1938077031ed1be8ac)
@@ -50,4 +50,5 @@
 	__address ar_bsp;
 	__address ar_bspstore;
+	__address ar_bspstore_new;
 	__u64 ar_rnat;
 	__u64 ar_ifs;
Index: arch/ia64/include/mm/memory_init.h
===================================================================
--- arch/ia64/include/mm/memory_init.h	(revision 83d2d0e4bbabfdae355ca18dba80470da9b35e38)
+++ arch/ia64/include/mm/memory_init.h	(revision e1c68e0c902e5b4a5c075c1938077031ed1be8ac)
@@ -32,5 +32,5 @@
 #include <config.h>
 
-#define get_memory_size()	CONFIG_MEMORY_SIZE
+#define get_memory_size()	(512*1024*1024)		/* 512M */
 
 #endif
Index: arch/ia64/src/ivt.S
===================================================================
--- arch/ia64/src/ivt.S	(revision 83d2d0e4bbabfdae355ca18dba80470da9b35e38)
+++ arch/ia64/src/ivt.S	(revision e1c68e0c902e5b4a5c075c1938077031ed1be8ac)
@@ -33,5 +33,5 @@
 #include <align.h>
 
-#define STACK_ITEMS		13
+#define STACK_ITEMS		14
 #define STACK_FRAME_SIZE	ALIGN_UP((STACK_ITEMS*STACK_ITEM_SIZE) + STACK_SCRATCH_AREA_SIZE, STACK_ALIGNMENT)
 
@@ -142,9 +142,10 @@
 	
 	/* assume kernel backing store */
-	/* mov ar.bspstore = r28 ;; */
+	mov ar.bspstore = r28 ;;
 	
 	mov r29 = ar.bsp
 	
 	st8 [r31] = r27, -8 ;;	/* save ar.rnat */
+	st8 [r31] = r28, -8 ;;	/* save new value written to ar.bspstore */
 	st8 [r31] = r28, -8 ;;	/* save ar.bspstore */
 	st8 [r31] = r29, -8 	/* save ar.bsp */
@@ -162,7 +163,8 @@
 	add r31 = STACK_SCRATCH_AREA_SIZE, r12 ;;
 
-	mov r28 = ar.bspstore   	/* calculate loadrs (step 2) */
-	ld8 r29 = [r31], +8 ;;		/* load ar.bsp */
-	sub r27 = r29 , r28 ;;
+	ld8 r30 = [r31], +8 ;;		/* load ar.bsp */
+	ld8 r29 = [r31], +8 ;;   	/* load ar.bspstore */
+	ld8 r28 = [r31], +8 ;;   	/* load ar.bspstore_new */
+	sub r27 = r30 , r28 ;;		/* calculate loadrs (step 2) */
 	shl r27 = r27, 16
 
@@ -174,5 +176,4 @@
 	loadrs 				/* (step 3) */
 
-	ld8 r28 = [r31], +8 ;;    	/* load ar.bspstore */
 	ld8 r27 = [r31], +8 ;;		/* load ar.rnat */
 	ld8 r26 = [r31], +8 ;;		/* load cr.ifs */
@@ -180,6 +181,6 @@
 	ld8 r24 = [r31], +8 ;;		/* load ar.rsc */
 
-	/* mov ar.bspstore = r28 ;; */	/* (step 4) */
-	/* mov ar.rnat = r27 */		/* (step 5) */
+	mov ar.bspstore = r29 ;;	/* (step 4) */
+	mov ar.rnat = r27		/* (step 5) */
 
 	mov ar.pfs = r25		/* (step 6) */
