StupidOS/kernel/isr.s

90 lines
986 B
ArmAsm

[BITS 32]
%include "base.inc"
%macro ISR_NO_ERR 1
global isr%1
isr%1:
cli
push byte 0
push byte %1
jmp isr_handler
%endmacro
%macro ISR_ERR 1
global isr%1
isr%1:
cli
push byte %1
jmp isr_handler
%endmacro
section .text
ISR_NO_ERR 0
ISR_NO_ERR 1
ISR_NO_ERR 2
ISR_NO_ERR 3
ISR_NO_ERR 4
ISR_NO_ERR 5
ISR_NO_ERR 6
ISR_NO_ERR 7
ISR_ERR 8
ISR_NO_ERR 9
ISR_ERR 10
ISR_ERR 11
ISR_ERR 12
ISR_ERR 13
ISR_ERR 14
ISR_NO_ERR 15
ISR_NO_ERR 16
ISR_NO_ERR 17
ISR_NO_ERR 18
ISR_NO_ERR 19
ISR_NO_ERR 20
ISR_NO_ERR 21
ISR_NO_ERR 22
ISR_NO_ERR 23
ISR_NO_ERR 24
ISR_NO_ERR 25
ISR_NO_ERR 26
ISR_NO_ERR 27
ISR_NO_ERR 28
ISR_NO_ERR 29
ISR_NO_ERR 30
ISR_NO_ERR 31
global isr_handler
isr_handler:
pusha
mov ax, ds
push eax
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
LOG msg_interrupt
extern pic_eoi
call pic_eoi
pop eax
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
popa
add esp, 8
sti
iret
section .rodata
msg_interrupt db "interrupt", 0
file db __FILE__, 0