diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/post.c | 2 | ||||
-rw-r--r-- | src/romlayout.S | 10 | ||||
-rw-r--r-- | src/system.c | 4 |
3 files changed, 13 insertions, 3 deletions
@@ -61,7 +61,7 @@ ivt_init(void) 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)); diff --git a/src/romlayout.S b/src/romlayout.S index f6b7979..57e8bcc 100644 --- a/src/romlayout.S +++ b/src/romlayout.S @@ -378,6 +378,12 @@ entry_pcibios16: 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 @@ -682,6 +688,10 @@ entry_10_0x0f: 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 diff --git a/src/system.c b/src/system.c index 3cb2228..756dc31 100644 --- a/src/system.c +++ b/src/system.c @@ -191,9 +191,10 @@ handle_1588(struct bregs *regs) } // 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); @@ -355,7 +356,6 @@ handle_15(struct bregs *regs) 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; |