Files
RockOS/kernel/idt_stubs.S

51 lines
936 B
ArmAsm

.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
ISR_NOERRCODE 33 # IRQ1 - Keyboard
ISR_NOERRCODE 46 # IRQ14
ISR_NOERRCODE 47 # IRQ15