diff --git a/qloader2.bin b/qloader2.bin index 39b12f50..eab9260f 100644 Binary files a/qloader2.bin and b/qloader2.bin differ diff --git a/src/lib/blib.c b/src/lib/blib.c index 6f0598ff..cd1667d4 100644 --- a/src/lib/blib.c +++ b/src/lib/blib.c @@ -99,9 +99,7 @@ __attribute__((used)) static uint32_t int_08_ticks_counter; __attribute__((naked)) static void int_08_isr(void) { asm ( ".code16\n\t" - "pushf\n\t" "inc dword ptr cs:[int_08_ticks_counter]\n\t" - "popf\n\t" "int 0x40\n\t" // call callback "iret\n\t" ".code32\n\t" diff --git a/src/protos/stivale.c b/src/protos/stivale.c index 30efd465..163ad2e3 100644 --- a/src/protos/stivale.c +++ b/src/protos/stivale.c @@ -227,6 +227,16 @@ void stivale_load(char *cmdline, int boot_drive) { deinit_vga_textmode(); } + if (bits == 64) { + // If we're going 64, we might as well call this BIOS interrupt + // to tell the BIOS that we are entering Long Mode, since it is in + // the specification. + struct rm_regs r = {0}; + r.eax = 0xec00; + r.ebx = 0x02; // Long mode only + rm_int(0x15, &r, &r); + } + rm_flush_irqs(); if (bits == 64) {