mirror of
https://git.savannah.gnu.org/git/grub.git
synced 2026-10-28 18:19:23 +00:00
2009-06-04 Vladimir Serbinenko <phcoder@gmail.com>
Address in trampolines based on 32-bit registers when compiled with Apple's CC * loader/i386/xnu_helper.S [APPLE_CC]: use 32-bit registers for addresses * loader/i386/linux_trampoline.S [APPLE_CC]: likewise
This commit is contained in:
1 parent
6c68847712
commit
e93cdc3db1
3 files changed
+45
No files matched your search
@@ -30,7 +30,22 @@ VARIABLE(grub_linux_trampoline_start)
|
||||
call base
|
||||
base:
|
||||
pop %rsi
|
||||
|
||||
#ifdef APPLE_CC
|
||||
lea (cont1 - base) (%esi, 1), %rax
|
||||
mov %eax, (jump_vector - base) (%esi, 1)
|
||||
|
||||
lea (gdt - base) (%esi, 1), %rax
|
||||
mov %rax, (gdtaddr - base) (%esi, 1)
|
||||
|
||||
/* Switch to compatibility mode. */
|
||||
|
||||
lidt (idtdesc - base) (%esi, 1)
|
||||
lgdt (gdtdesc - base) (%esi, 1)
|
||||
|
||||
/* Update %cs. Thanks to David Miller for pointing this mistake out. */
|
||||
ljmp *(jump_vector - base) (%esi, 1)
|
||||
#else
|
||||
lea (cont1 - base) (%rsi, 1), %rax
|
||||
mov %eax, (jump_vector - base) (%rsi, 1)
|
||||
|
||||
@@ -44,6 +59,8 @@ base:
|
||||
|
||||
/* Update %cs. Thanks to David Miller for pointing this mistake out. */
|
||||
ljmp *(jump_vector - base) (%rsi, 1)
|
||||
#endif
|
||||
|
||||
cont1:
|
||||
.code32
|
||||
|
||||
|
||||
Reference in new issue
Block a user