From 5f0006cfa7c499a501969641ac7bd630cb4706de Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Thu, 4 Mar 2021 15:43:28 +0200 Subject: pass cpu_state_t to interrupt handler --- src/idt/stubs.S | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 src/idt/stubs.S (limited to 'src/idt') diff --git a/src/idt/stubs.S b/src/idt/stubs.S new file mode 100644 index 0000000..97f1797 --- /dev/null +++ b/src/idt/stubs.S @@ -0,0 +1,82 @@ +.set IRQ_BASE, 0x20 + +.section .text +.extern handle_interrupt + +.macro interrupt num +.global interrupt\num +interrupt\num: + push $0 + push $\num + IRQ_BASE + jmp interrupt_common +.endm + +.macro exception num +.global exception\num +exception\num: + push $0 + push $\num + jmp interrupt_common +.endm + +.macro exception_ec num +.global exception\num +exception\num: + push $\num + jmp interrupt_common +.endm + +/* exceptions */ +exception 0x00 +exception 0x01 +exception 0x02 +exception 0x03 +exception 0x04 +exception 0x05 +exception 0x06 +exception 0x07 +exception_ec 0x08 +exception 0x09 +exception_ec 0x0a +exception_ec 0x0b +exception_ec 0x0c +exception_ec 0x0d +exception_ec 0x0e +exception 0x0f +exception 0x10 +exception_ec 0x11 +exception 0x12 +exception 0x13 + +/* interrupts - master pic */ +interrupt 0x00 # system timer +interrupt 0x01 # keyboard controller +interrupt 0x02 # slave pic +interrupt 0x03 # serial port 2 and 4 +interrupt 0x04 # serial port 1 and 3 +interrupt 0x05 # parallel port 2 and 3, sound card +interrupt 0x06 # floppy controller +interrupt 0x07 # parallel port 1 +/* interrupts - slave pic */ +interrupt 0x08 # real-time clock +interrupt 0x09 # acpi +interrupt 0x0a # +interrupt 0x0b # +interrupt 0x0c # mouse on ps/2 +interrupt 0x0d # fpu +interrupt 0x0e # primary ATA +interrupt 0x0f # secondary ATA + +interrupt_common: + pusha + + push %esp + call handle_interrupt + mov %eax, %esp + + popa + /* remove error code and irq from stack */ + add $8, %esp + + iret + -- cgit v1.2.1