diff --git a/ChangeLog b/ChangeLog index c92168b9d..62ad8d941 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-02-03 Pavel Roskin + + * a/kern/i386/pc/startup.S (grub_chainloader_real_boot): Pop + %edx and %esi from stack only after grub_gate_a20() is called. + grub_gate_a20() clobbers %edx. + 2008-02-03 Yoshinori K. Okuji * configure.ac (AC_INIT): Bumped to 1.96. diff --git a/kern/i386/pc/startup.S b/kern/i386/pc/startup.S index e4101a655..0bfe2b37d 100644 --- a/kern/i386/pc/startup.S +++ b/kern/i386/pc/startup.S @@ -594,16 +594,16 @@ FUNCTION(grub_chainloader_real_boot) call EXT_C(grub_dl_unload_all) + /* Turn off Gate A20 */ + xorl %eax, %eax + call EXT_C(grub_gate_a20) + /* set up to pass boot drive */ popl %edx /* ESI must point to a partition table entry */ popl %esi - /* Turn off Gate A20 */ - xorl %eax, %eax - call EXT_C(grub_gate_a20) - call prot_to_real .code16 ljmp $0, $GRUB_MEMORY_MACHINE_BOOT_LOADER_ADDR