Auto-assign drive number only if set to 0xff; almost all applications
authorMichael Brown <mcb30@etherboot.org>
Thu, 23 Aug 2007 19:50:24 +0000 (20:50 +0100)
committerMichael Brown <mcb30@etherboot.org>
Thu, 23 Aug 2007 19:50:24 +0000 (20:50 +0100)
require that we use drive 0x80, so it should probably be the default.

src/arch/i386/interface/pcbios/int13.c

index 53817c7..a26dcff 100644 (file)
@@ -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 );