2026-06-11 23:23:39 -05:00
|
|
|
.code32
|
|
|
|
|
|
|
|
|
|
.macro ISR_NOERRCODE num
|
|
|
|
|
.global isr\num
|
|
|
|
|
isr\num:
|
|
|
|
|
pushl $0
|
|
|
|
|
pushl $\num
|
|
|
|
|
jmp isr_common_stub
|
|
|
|
|
.endm
|
|
|
|
|
|
|
|
|
|
.macro ISR_ERRCODE num
|
|
|
|
|
.global isr\num
|
|
|
|
|
isr\num:
|
|
|
|
|
pushl $\num
|
|
|
|
|
jmp isr_common_stub
|
|
|
|
|
.endm
|
|
|
|
|
|
|
|
|
|
.extern common_interrupt_handler
|
|
|
|
|
isr_common_stub:
|
|
|
|
|
pushal
|
|
|
|
|
|
|
|
|
|
pushl %esp
|
|
|
|
|
call common_interrupt_handler
|
|
|
|
|
addl $4, %esp
|
|
|
|
|
|
|
|
|
|
popal
|
|
|
|
|
addl $8, %esp
|
|
|
|
|
iret
|
|
|
|
|
|
|
|
|
|
.extern idtr
|
|
|
|
|
.global load_idt
|
|
|
|
|
load_idt:
|
|
|
|
|
lidt idtr
|
|
|
|
|
ret
|
|
|
|
|
|
|
|
|
|
.global enable_int
|
|
|
|
|
enable_int:
|
|
|
|
|
sti
|
|
|
|
|
ret
|
|
|
|
|
|
|
|
|
|
ISR_NOERRCODE 0 # Divide by Zero
|
|
|
|
|
ISR_NOERRCODE 1 # Debug
|
|
|
|
|
ISR_ERRCODE 8 # Double Fault (Has Error Code!)
|
|
|
|
|
ISR_ERRCODE 13 # General Protection Fault (Has Error Code!)
|
|
|
|
|
ISR_ERRCODE 14 # Page Fault (Has Error Code!)
|
|
|
|
|
|
|
|
|
|
ISR_NOERRCODE 32 # IRQ0 - Timer
|
2026-06-23 23:19:49 -05:00
|
|
|
ISR_NOERRCODE 33 # IRQ1 - Keyboard
|
|
|
|
|
|
|
|
|
|
ISR_NOERRCODE 46 # IRQ14
|
|
|
|
|
ISR_NOERRCODE 47 # IRQ15
|