From 06615f62b17d7de6e12d2f5ec6b88cf30af08413 Mon Sep 17 00:00:00 2001 From: Ralf Baechle Date: Thu, 23 Nov 2000 02:00:47 +0000 Subject: Merge with Linux 2.4.0-test10. --- arch/ia64/boot/bootloader.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'arch/ia64/boot') diff --git a/arch/ia64/boot/bootloader.c b/arch/ia64/boot/bootloader.c index b73f396dc..5d1778ee3 100644 --- a/arch/ia64/boot/bootloader.c +++ b/arch/ia64/boot/bootloader.c @@ -68,15 +68,16 @@ cons_write (const char *buf) 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 @@ _start (void) 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 -- cgit v1.2.3