Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/i386/stand/lib Fix bootxx_* and boot on machines wh...



details:   https://anonhg.NetBSD.org/src/rev/fb6ca583b66b
branches:  trunk
changeset: 797483:fb6ca583b66b
user:      erh <erh%NetBSD.org@localhost>
date:      Sat Jul 19 14:50:21 2014 +0000

description:
Fix bootxx_* and boot on machines where the bios sets high bits of %eax on success.

diffstat:

 sys/arch/i386/stand/lib/bios_disk.S |  5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diffs (19 lines):

diff -r 785f144a793c -r fb6ca583b66b sys/arch/i386/stand/lib/bios_disk.S
--- a/sys/arch/i386/stand/lib/bios_disk.S       Sat Jul 19 14:35:10 2014 +0000
+++ b/sys/arch/i386/stand/lib/bios_disk.S       Sat Jul 19 14:50:21 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: bios_disk.S,v 1.21 2011/06/16 13:27:59 joerg Exp $     */
+/*     $NetBSD: bios_disk.S,v 1.22 2014/07/19 14:50:21 erh Exp $       */
 
 /*
  * Ported to boot 386BSD by Julian Elischer (julian%tfs.com@localhost) Sept 1992
@@ -133,6 +133,9 @@
        calll   _C_LABEL(real_to_prot) # back to protected mode
        .code32
 
+       andl    $0x0000FFFF, %eax  # Some bioses set high bits in %eax
+                                  #  on success, interfering with our
+                                  #  return value.  Clear those out.
        movl    %eax, 28(%esp)
 
        popa



Home | Main Index | Thread Index | Old Index