diff --git a/lib/metalkit/bios.c b/lib/metalkit/bios.c index b736850..7d517c6 100644 --- a/lib/metalkit/bios.c +++ b/lib/metalkit/bios.c @@ -157,6 +157,14 @@ BIOSCallInternal(void) asm volatile("BIOSTrampolineVector: \n" "int $0xFF"); + /* + * Some BIOS routines will turn interrupts back on. If an interrupt + * occurs while we're partway through our 16-to-32 transition + * below, any interrupts will cause the ISR to fault, so we must + * make sure interrupts are still off. + */ + asm volatile("cli"); + /* * Push Regs back onto the stack. */