From 99dbd8b489de3ee80a315d61bc9c9478a040a128 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Fri, 25 Mar 2005 18:40:27 +0000 Subject: [PATCH] Added set_user_intr_gate() and made "int 3" accessible to userland (the breakpoint exception). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11997 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kernel/core/arch/x86/arch_int.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/kernel/core/arch/x86/arch_int.c b/src/kernel/core/arch/x86/arch_int.c index c7931d8ab0..d0459519bf 100644 --- a/src/kernel/core/arch/x86/arch_int.c +++ b/src/kernel/core/arch/x86/arch_int.c @@ -70,7 +70,7 @@ interrupt_ack(int n) static void -set_gate(desc_table *gate_addr, unsigned int addr, int type, int dpl) +set_gate(desc_table *gate_addr, addr_t addr, int type, int dpl) { unsigned int gate1; // first byte of gate desc unsigned int gate2; // second byte of gate desc @@ -86,7 +86,14 @@ set_gate(desc_table *gate_addr, unsigned int addr, int type, int dpl) static void set_intr_gate(int n, void *addr) { - set_gate(&idt[n], (unsigned int)addr, 14, DPL_KERNEL); + set_gate(&idt[n], (addr_t)addr, 14, DPL_KERNEL); +} + + +static void +set_user_intr_gate(int n, void *addr) +{ + set_gate(&idt[n], (addr_t)addr, 14, DPL_USER); } @@ -341,7 +348,7 @@ arch_int_init(kernel_args *args) set_intr_gate(0, &trap0); set_intr_gate(1, &trap1); set_intr_gate(2, &trap2); - set_intr_gate(3, &trap3); + set_user_intr_gate(3, &trap3); set_intr_gate(4, &trap4); set_intr_gate(5, &trap5); set_intr_gate(6, &trap6);