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.
This commit is contained in:
Vladimir Serbinenko 2015-12-31 13:07:16 +01:00
parent 2333a83baa
commit 5919626c90
1 changed files with 11 additions and 11 deletions

View File

@ -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;
}