summaryrefslogtreecommitdiffstats
path: root/src/arch
diff options
context:
space:
mode:
authorMichael Brown2007-08-23 21:50:24 +0200
committerMichael Brown2007-08-23 21:50:24 +0200
commit01b755704a7ebc235d4e4413e631e97ee1b997e2 (patch)
tree30def955161bd0ab27b49a4f357a13cab237d30f /src/arch
parentAllow legacy "make bin/etherboot.%". (diff)
downloadipxe-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.
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/i386/interface/pcbios/int13.c5
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 );