]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
fix a bug in chain_stage2.
authorokuji <okuji@localhost>
Wed, 7 Feb 2001 23:47:40 +0000 (23:47 +0000)
committerokuji <okuji@localhost>
Wed, 7 Feb 2001 23:47:40 +0000 (23:47 +0000)
ChangeLog
stage2/asm.S

index 3b699c412b397c5944b509b115cbfe75819f1a37..0db7ea3447ab1ddf24767c1ab443c151d6a0c8b6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2001-02-08  OKUJI Yoshinori  <okuji@gnu.org>
+
+       * stage2/asm.S [STAGE1_5] (chain_stage2): Save the second sector
+       of stage2 in %ecx temporarily, and set %ebp to %ecx after
+       switching to protected mode. I forgot that %ebp is broken by
+       rot_to_real. Reported by Torvald Riegel
+       <tr16@inf.tu-dresden.de>.
+       
 2001-02-08  OKUJI Yoshinori  <okuji@gnu.org>
 
        * docs/grub-new.texi: Moved to ...
index dc490c1374efbdc9327468d1eff64f65b8d735c4..b555cabbe578f2157cf17a84628550397a1fdf0f 100644 (file)
@@ -792,11 +792,13 @@ ENTRY(chain_stage2)
        movb    EXT_C(current_drive), %dl
 
        /* set up to pass the second sector of stage2 */
-       movl    0xc(%esp), %ebp
+       movl    0xc(%esp), %ecx
 
        call    EXT_C(prot_to_real)
        .code16
 
+       movl    %ecx, %ebp
+
 #ifdef ABSOLUTE_WITHOUT_ASTERISK
        DATA32  ADDR32  ljmp    (offset)
 #else