diff options
| author | Michael Brown | 2006-05-15 01:46:28 +0200 |
|---|---|---|
| committer | Michael Brown | 2006-05-15 01:46:28 +0200 |
| commit | 295e11b2b0a6a9b3fd08c7ba13fdf76d3c637d77 (patch) | |
| tree | c23c91a5bb427dfef7d1b64477988e576700e2d2 /src/arch/i386/interface | |
| parent | Split "iSCSI as a SCSI device" out from "iSCSI as a TCP protocol". (diff) | |
| download | ipxe-295e11b2b0a6a9b3fd08c7ba13fdf76d3c637d77.tar.gz ipxe-295e11b2b0a6a9b3fd08c7ba13fdf76d3c637d77.tar.xz ipxe-295e11b2b0a6a9b3fd08c7ba13fdf76d3c637d77.zip | |
Add INT 13,41 (extensions installation check). LILO's MBR now uses
linear calls to load the MS-DOS boot sector in my test setup.
Diffstat (limited to 'src/arch/i386/interface')
| -rw-r--r-- | src/arch/i386/interface/pcbios/int13.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/arch/i386/interface/pcbios/int13.c b/src/arch/i386/interface/pcbios/int13.c index 0dd96ac6a..d4d15c16a 100644 --- a/src/arch/i386/interface/pcbios/int13.c +++ b/src/arch/i386/interface/pcbios/int13.c @@ -268,6 +268,27 @@ static int int13_get_parameters ( struct int13_drive *drive, } /** + * INT 13, 41 - Extensions installation check + * + * @v drive Emulated drive + * @v bx 0x55aa + * @ret bx 0xaa55 + * @ret cx Extensions API support bitmap + * @ret status Status code + */ +static int int13_extension_check ( struct int13_drive *drive __unused, + struct i386_all_regs *ix86 ) { + if ( ix86->regs.bx == 0x55aa ) { + DBG ( "INT 13 extensions installation check\n" ); + ix86->regs.bx = 0xaa55; + ix86->regs.cx = INT13_EXTENSION_LINEAR; + return 0; + } else { + return INT13_STATUS_INVALID; + } +} + +/** * INT 13, 42 - Extended read * * @v drive Emulated drive @@ -357,6 +378,9 @@ static void int13 ( struct i386_all_regs *ix86 ) { case INT13_GET_PARAMETERS: status = int13_get_parameters ( drive, ix86 ); break; + case INT13_EXTENSION_CHECK: + status = int13_extension_check ( drive, ix86 ); + break; case INT13_EXTENDED_READ: status = int13_extended_read ( drive, ix86 ); break; |
