Don't overwrite %dl with a (potentially) modified drive number if we
[people/sha0/gpxe.git] / src / arch / i386 / interface / pcbios / int13.c
index 27a033b..f7cb679 100644 (file)
@@ -317,38 +317,6 @@ static int int13_get_extended_parameters ( struct int13_drive *drive,
        return 0;
 }
 
-struct int13_cdrom_specification {
-       /** Size of packet in bytes */
-       uint8_t size;
-       /** Boot media type */
-       uint8_t media_type;
-       /** Drive number */
-       uint8_t drive;
-};
-
-/**
- * INT 13, 4b - Get CD-ROM status / terminate emulation
- *
- * @v drive            Emulated drive
- * @v ds:si            El Torito specification packet to fill in
- * @ret status         Status code
- */
-static int int13_cdrom_status_terminate ( struct int13_drive *drive,
-                                         struct i386_all_regs *ix86 ) {
-       struct int13_cdrom_specification specification;
-
-       DBG ( "Get CD-ROM emulation parameters to %04x:%04x\n",
-             ix86->segs.ds, ix86->regs.di );
-
-       memset ( &specification, 0, sizeof ( specification ) );
-       specification.size = sizeof ( specification );
-       specification.drive = drive->drive;
-
-       copy_to_real ( ix86->segs.ds, ix86->regs.si, &specification,
-                      sizeof ( specification ) );
-       return 0;
-}
-
 /**
  * INT 13 handler
  *
@@ -401,9 +369,6 @@ static void int13 ( struct i386_all_regs *ix86 ) {
                case INT13_GET_EXTENDED_PARAMETERS:
                        status = int13_get_extended_parameters ( drive, ix86 );
                        break;
-               case INT13_CDROM_STATUS_TERMINATE:
-                       status = int13_cdrom_status_terminate ( drive, ix86 );
-                       break;
                default:
                        DBG ( "*** Unrecognised INT 13 ***\n" );
                        status = -INT13_STATUS_INVALID;
@@ -425,7 +390,7 @@ static void int13 ( struct i386_all_regs *ix86 ) {
                /* Set OF to indicate to wrapper not to chain this call */
                ix86->flags |= OF;
 
-               break;
+               return;
        }
 
        /* Remap BIOS drive */
@@ -646,6 +611,7 @@ int int13_boot ( unsigned int drive ) {
                                           "pushw $0\n\t"
                                           "popw %%es\n\t"
                                           "stc\n\t"
+                                          "sti\n\t"
                                           "int $0x13\n\t"
                                           "sti\n\t" /* BIOS bugs */
                                           "jc 1f\n\t"