aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/post.c2
-rw-r--r--src/romlayout.S10
-rw-r--r--src/system.c4
3 files changed, 13 insertions, 3 deletions
diff --git a/src/post.c b/src/post.c
index 0d9e66f..0fdd28e 100644
--- a/src/post.c
+++ b/src/post.c
@@ -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;