SET_IVT(0x12, FUNC16(entry_12));
SET_IVT(0x13, FUNC16(entry_13_official));
SET_IVT(0x14, FUNC16(entry_14));
- SET_IVT(0x15, FUNC16(entry_15));
+ SET_IVT(0x15, FUNC16(entry_15_official));
SET_IVT(0x16, FUNC16(entry_16));
SET_IVT(0x17, FUNC16(entry_17));
SET_IVT(0x18, FUNC16(entry_18));
ENTRY_ARG handle_pcibios
iretw
+// int 1589 entry point
+ DECLFUNC entry_1589
+entry_1589:
+ ENTRY_ARG handle_1589
+ iretw
+
// BIOS32 support
.code32
DECLFUNC entry_bios32
IRQ_ENTRY_ARG 11
ORG 0xf859
+ .global entry_15_official
+entry_15_official:
+ cmpb $0x89, %ah
+ je entry_1589 // 1589 calls return in protected mode
IRQ_ENTRY_ARG 15
// 0xfa6e - vgafont8 in font.c
}
// Switch to protected mode
-static void
+void VISIBLE16
handle_1589(struct bregs *regs)
{
+ debug_enter(regs, DEBUG_HDL_15);
set_a20(1);
pic_reset(regs->bl, regs->bh);
case 0x86: handle_1586(regs); break;
case 0x87: handle_1587(regs); break;
case 0x88: handle_1588(regs); break;
- case 0x89: handle_1589(regs); break;
case 0x90: handle_1590(regs); break;
case 0x91: handle_1591(regs); break;
case 0xc0: handle_15c0(regs); break;