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:
parent
2333a83baa
commit
5919626c90
1 changed files with 11 additions and 11 deletions
|
@ -140,17 +140,17 @@ grub_linux_boot (void)
|
||||||
grub_dprintf ("loader", "Jumping to Linux...\n");
|
grub_dprintf ("loader", "Jumping to Linux...\n");
|
||||||
|
|
||||||
/* Boot the kernel. */
|
/* Boot the kernel. */
|
||||||
asm volatile ("sethi %hi(grub_ieee1275_entry_fn), %o1\n"
|
asm volatile ("ldx %0, %%o4\n"
|
||||||
"ldx [%o1 + %lo(grub_ieee1275_entry_fn)], %o4\n"
|
"ldx %1, %%o6\n"
|
||||||
"sethi %hi(grub_ieee1275_original_stack), %o1\n"
|
"ldx %2, %%o5\n"
|
||||||
"ldx [%o1 + %lo(grub_ieee1275_original_stack)], %o6\n"
|
"mov %%g0, %%o0\n"
|
||||||
"sethi %hi(linux_addr), %o1\n"
|
"mov %%g0, %%o2\n"
|
||||||
"ldx [%o1 + %lo(linux_addr)], %o5\n"
|
"mov %%g0, %%o3\n"
|
||||||
"mov %g0, %o0\n"
|
"jmp %%o5\n"
|
||||||
"mov %g0, %o2\n"
|
"mov %%g0, %%o1\n": :
|
||||||
"mov %g0, %o3\n"
|
"m"(grub_ieee1275_entry_fn),
|
||||||
"jmp %o5\n"
|
"m"(grub_ieee1275_original_stack),
|
||||||
"mov %g0, %o1\n");
|
"m"(linux_addr));
|
||||||
|
|
||||||
return GRUB_ERR_NONE;
|
return GRUB_ERR_NONE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue