From: Vladimir Serbinenko Date: Thu, 31 Dec 2015 12:07:16 +0000 (+0100) Subject: sparc64: Fix assembly to let compiler to fill in memory references. X-Git-Tag: 2.02-beta3~145 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5919626c907a2d141bfeffa4ec04d71e521fbbaa;p=thirdparty%2Fgrub.git sparc64: Fix assembly to let compiler to fill in memory references. This fixes the use of not fully relocatable (they assume that variables are under 4G limit in virtual memory) references. --- diff --git a/grub-core/loader/sparc64/ieee1275/linux.c b/grub-core/loader/sparc64/ieee1275/linux.c index 346d9538e..d44d7a113 100644 --- a/grub-core/loader/sparc64/ieee1275/linux.c +++ b/grub-core/loader/sparc64/ieee1275/linux.c @@ -140,17 +140,17 @@ grub_linux_boot (void) grub_dprintf ("loader", "Jumping to Linux...\n"); /* Boot the kernel. */ - asm volatile ("sethi %hi(grub_ieee1275_entry_fn), %o1\n" - "ldx [%o1 + %lo(grub_ieee1275_entry_fn)], %o4\n" - "sethi %hi(grub_ieee1275_original_stack), %o1\n" - "ldx [%o1 + %lo(grub_ieee1275_original_stack)], %o6\n" - "sethi %hi(linux_addr), %o1\n" - "ldx [%o1 + %lo(linux_addr)], %o5\n" - "mov %g0, %o0\n" - "mov %g0, %o2\n" - "mov %g0, %o3\n" - "jmp %o5\n" - "mov %g0, %o1\n"); + asm volatile ("ldx %0, %%o4\n" + "ldx %1, %%o6\n" + "ldx %2, %%o5\n" + "mov %%g0, %%o0\n" + "mov %%g0, %%o2\n" + "mov %%g0, %%o3\n" + "jmp %%o5\n" + "mov %%g0, %%o1\n": : + "m"(grub_ieee1275_entry_fn), + "m"(grub_ieee1275_original_stack), + "m"(linux_addr)); return GRUB_ERR_NONE; }