patch-2.4.0-test10 linux/arch/ia64/boot/bootloader.c

Next file: linux/arch/ia64/config.in
Previous file: linux/arch/ia64/Makefile
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test9/linux/arch/ia64/boot/bootloader.c linux/arch/ia64/boot/bootloader.c
@@ -68,15 +68,16 @@
 void
 enter_virtual_mode (unsigned long new_psr)
 {
+	long tmp;
+
+	asm volatile ("movl %0=1f" : "=r"(tmp));
 	asm volatile ("mov cr.ipsr=%0" :: "r"(new_psr));
-	asm volatile ("mov cr.iip=%0" :: "r"(&&target));
+	asm volatile ("mov cr.iip=%0" :: "r"(tmp));
 	asm volatile ("mov cr.ifs=r0");
-	asm volatile ("rfi;;");		/* must be last insn in an insn group */
-
-  target:
+	asm volatile ("rfi;;");
+	asm volatile ("1:");
 }
 
-
 #define MAX_ARGS 32
 
 void
@@ -96,7 +97,7 @@
 	char *kpath, *args;
 	long arglen = 0;
 
-	asm volatile ("movl gp=__gp" ::: "memory");
+	asm volatile ("movl gp=__gp;;" ::: "memory");
 	asm volatile ("mov sp=%0" :: "r"(stack) : "memory");
 	asm volatile ("bsw.1;;");
 #ifdef CONFIG_ITANIUM_ASTEP_SPECIFIC

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)