Home | History | Annotate | Download | only in lib
History log of /src/sys/arch/i386/stand/lib/bios_disk.S
RevisionDateAuthorComments
 1.23  10-Sep-2022  rillig fix misspellings of 'available' and nearby typos
 1.22  19-Jul-2014  erh Fix bootxx_* and boot on machines where the bios sets high bits of %eax on success.
 1.21  16-Jun-2011  joerg branches: 1.21.12; 1.21.26;
Add an optional MD calling convention flag for use in libsa when space
optimisation is critical. Use this on i386 to switch to register passing
calling convention for the file system entry points and most assembler
call backs that have to preserve at least 3 registers.
 1.20  29-Dec-2010  jakllsch branches: 1.20.6;
Utilize movz[bw]l to save a few instrutions and bytes of .text.
 1.19  21-Nov-2009  dsl branches: 1.19.4;
Preserve %ds over bios calls.
Not strickly necessary because real_to_prot doesn't normally rely on in.
However it caused much confusion while debugging, and does no harm.
 1.18  11-Dec-2005  christos branches: 1.18.78; 1.18.92;
merge ktrace-lwp.
 1.17  29-Jun-2005  junyoung Massive renames for consistency:
biosdiskreset -> biosdisk_reset
biosread -> biosdisk_read
get_diskinfo -> biosdisk_getinfo
int13_extension -> biosdisk_int13ext
biosextread -> biosdisk_extread
int13_getextinfo -> biosdisk_getextinfo
struct biosdisk_ext13info -> biosdisk_extinfo
BIOSDISK_EXT13 -> BIOSDISK_INT13EXT
BIOSDISK_EXT13INFO_V{2,3} -> BIOSDISK_EXTINFO_V{2,3}
EXT13_* -> EXTINFO_*
 1.16  29-Jun-2005  junyoung get_diskinfo():
Return status code in bits [31:24] of %eax. 0 for success, otherwise failure.
 1.15  22-Jun-2005  junyoung Do not mix assembly-style comments and C-style comments.
 1.14  13-Jun-2005  junyoung Remove trailing spaces.
 1.13  16-Apr-2003  dsl branches: 1.13.2;
C code now sets length of disk info structure
 1.12  08-Mar-2003  dsl Don't trust %bp to point to same place in real and protected modes.
prot_to_real preserves %ebp but changes %ss and %sp.
(ok if real %ss is offset n*64k from protected %ss - which it has been)
 1.11  05-Feb-2003  dsl Remove unused defines
 1.10  01-Feb-2003  dsl Change all .S files to use .code16 and .code32
Support 32bit addresses >64k as valid on bios calls.
Move stack for dosboot and biosboot to >64 so stack doesn't hit data.
Use disk sector number passed by mbr code to select default partition
(the mbr code doesn't do this yet).
NB only biosboot and dosboot have been tested so far.
(changes approved by christos and fvdl)
 1.9  10-Oct-2002  dyoung Introduce biosdiskreset(), and call it to reset the disk (with Int
0x13 Function 0) after a read error. This is a requirement mentioned
in most BIOS documentation.

This answers PR 18591.

Incidentally, on the Soekris Engineering net45x1 single-board
computer, this fixes a bug where the bootloader corrupts the kernel
while loading it from certain varieties of CompactFlash card
(especially varieties identified by NetBSD as <TOSHIBA THNCF064MBA>).
 1.8  21-May-2000  perry branches: 1.8.6; 1.8.8;
Actually return the BIOS error code (if any) generated by the reads
 1.7  30-Mar-1999  fvdl branches: 1.7.8;
Shifting ecx without explicit prefix in real mode won't work.
 1.6  30-Mar-1999  drochner fix some disk handling problems introduced in the last commits:
-read retries were botched, use the right sector count
-read-ahead buffer was effectively unused
-concentrate the handling of the weird BIOS geometry report at one place
-fallback for old floppies left cylinder count uninitialized
 1.5  08-Mar-1999  fvdl * query BIOS geometry information, possibly using the int 13 extensions.
* pass them on to the kernel
* print a message if the 2nd stage bootloader returns (i.e. fails)
instead of just hanging.
 1.4  30-Oct-1998  ws Fix a thinko which still prevented this to run on non-int13-ext machines.
Thanks to entropy@zippy.bernstein.com for pointing this out and testing the fix.
 1.3  27-Oct-1998  ws Fix typo which prevented this from working
on disks without int13-extension support.
 1.2  15-Oct-1998  ws Add int13 extension support
 1.1  14-Mar-1997  perry branches: 1.1.1;
Initial revision
 1.1.1.1  14-Mar-1997  perry Initial import of new boot code, created by Matthias Drochner with a
little hacking by me. This isn't strictly identical to his 920312
release -- I've hacked it a bit -- but since we are taking over change
control it doesn't matter much.
 1.7.8.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.8.8.1  18-Oct-2002  nathanw Catch up to -current.
 1.8.6.2  21-May-2000  perry Actually return the BIOS error code (if any) generated by the reads
 1.8.6.1  21-May-2000  perry file bios_disk.S was added on branch sommerfeld_i386mp_1 on 2000-05-21 16:59:29 +0000
 1.13.2.1  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.18.92.3  27-Aug-2011  jym Sync with HEAD. Most notably: uvm/pmap work done by rmind@, and MP Xen
work of cherry@.

No regression observed on suspend/restore.
 1.18.92.2  10-Jan-2011  jym Sync with HEAD
 1.18.92.1  24-Oct-2010  jym Sync with HEAD
 1.18.78.1  11-Mar-2010  yamt sync with head
 1.19.4.1  05-Mar-2011  rmind sync with head
 1.20.6.1  23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.21.26.1  10-Aug-2014  tls Rebase.
 1.21.12.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.

RSS XML Feed