diff options
author | Michael Brown | 2007-08-23 21:50:24 +0200 |
---|---|---|
committer | Michael Brown | 2007-08-23 21:50:24 +0200 |
commit | 01b755704a7ebc235d4e4413e631e97ee1b997e2 (patch) | |
tree | 30def955161bd0ab27b49a4f357a13cab237d30f | |
parent | Allow legacy "make bin/etherboot.%". (diff) | |
download | ipxe-01b755704a7ebc235d4e4413e631e97ee1b997e2.tar.gz ipxe-01b755704a7ebc235d4e4413e631e97ee1b997e2.tar.xz ipxe-01b755704a7ebc235d4e4413e631e97ee1b997e2.zip |
Auto-assign drive number only if set to 0xff; almost all applications
require that we use drive 0x80, so it should probably be the default.
-rw-r--r-- | src/arch/i386/interface/pcbios/int13.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/arch/i386/interface/pcbios/int13.c b/src/arch/i386/interface/pcbios/int13.c index 53817c7a..a26dcff4 100644 --- a/src/arch/i386/interface/pcbios/int13.c +++ b/src/arch/i386/interface/pcbios/int13.c @@ -543,8 +543,9 @@ void register_int13_drive ( struct int13_drive *drive ) { /* Assign drive number if none specified, update BIOS drive count */ get_real ( num_drives, BDA_SEG, BDA_NUM_DRIVES ); - if ( ! drive->drive ) - drive->drive = ( num_drives | 0x80 ); + if ( ( drive->drive & 0xff ) == 0xff ) + drive->drive = num_drives; + drive->drive |= 0x80; num_drives++; if ( num_drives <= ( drive->drive & 0x7f ) ) num_drives = ( ( drive->drive & 0x7f ) + 1 ); |