Index: kernel/arch/ia64/src/ia64.c
===================================================================
--- kernel/arch/ia64/src/ia64.c	(revision 3a5506af079402a82bae5941d0b9a0bbe79f2de5)
+++ kernel/arch/ia64/src/ia64.c	(revision 9dd79bc772aec18ce4a7944d47ff90f38da9e6bb)
@@ -93,11 +93,4 @@
 void arch_pre_mm_init(void)
 {
-	/*
-	 * Set Interruption Vector Address (i.e. location of interruption vector
-	 * table).
-	 */
-	iva_write((uintptr_t) &ivt);
-	srlz_d();
-	
 }
 
Index: kernel/arch/ia64/src/start.S
===================================================================
--- kernel/arch/ia64/src/start.S	(revision 3a5506af079402a82bae5941d0b9a0bbe79f2de5)
+++ kernel/arch/ia64/src/start.S	(revision 9dd79bc772aec18ce4a7944d47ff90f38da9e6bb)
@@ -156,4 +156,13 @@
 	 * Now we are paging.
 	 */
+
+	#
+	# Set Interruption Vector Address
+	# (i.e. location of interruption vector table)
+	#
+	movl r8 = ivt ;; 
+	mov cr.iva = r8
+	srlz.d ;;	
+
 	
 	# Switch to register bank 1
@@ -165,7 +174,7 @@
 	mov ar.bspstore = r8
 	loadrs
-	
-	#
-	# Initialize memory stack to some sane value and allocate a scratch are
+
+	#
+	# Initialize memory stack to some sane value and allocate a scratch area
 	# on it.
 	#
@@ -187,5 +196,5 @@
 	srlz.i
 	srlz.d ;;
-	
+
 	br.call.sptk.many b0 = arch_pre_main
 0:
