mirror of
https://github.com/ipxe/ipxe
synced 2025-12-21 12:30:20 +03:00
[int13] Allow drive to be hooked using the natural drive number
Interpret the maximum drive number (0xff for hard disks, 0x7f for floppy disks) as meaning "use natural drive number". Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -1588,7 +1588,7 @@ static void int13_free ( struct refcnt *refcnt ) {
|
||||
*
|
||||
* @v uri URI
|
||||
* @v drive Drive number
|
||||
* @ret rc Return status code
|
||||
* @ret drive Drive number, or negative error
|
||||
*
|
||||
* Registers the drive with the INT 13 emulation subsystem, and hooks
|
||||
* the INT 13 interrupt vector (if not already hooked).
|
||||
@@ -1603,6 +1603,10 @@ static int int13_hook ( struct uri *uri, unsigned int drive ) {
|
||||
int13_sync_num_drives();
|
||||
natural_drive = ( ( drive & 0x80 ) ? ( num_drives | 0x80 ) : num_fdds );
|
||||
|
||||
/* Use natural drive number if directed to do so */
|
||||
if ( ( drive & 0x7f ) == 0x7f )
|
||||
drive = natural_drive;
|
||||
|
||||
/* Check that drive number is not in use */
|
||||
list_for_each_entry ( int13, &int13s, list ) {
|
||||
if ( int13->drive == drive ) {
|
||||
@@ -1661,7 +1665,7 @@ static int int13_hook ( struct uri *uri, unsigned int drive ) {
|
||||
int13_sync_num_drives();
|
||||
|
||||
free ( scratch );
|
||||
return 0;
|
||||
return drive;
|
||||
|
||||
err_guess_geometry:
|
||||
err_parse_iso9660:
|
||||
|
||||
Reference in New Issue
Block a user