mirror of
https://github.com/BoredDevNL/BoredOS.git
synced 2026-05-15 10:48:38 +00:00
65 lines
1 KiB
NASM
65 lines
1 KiB
NASM
section .text
|
|
global isr0_wrapper
|
|
global isr1_wrapper
|
|
global isr12_wrapper
|
|
extern timer_handler
|
|
extern keyboard_handler
|
|
extern mouse_handler
|
|
|
|
; Helper to send EOI (End of Interrupt) to PIC
|
|
send_eoi:
|
|
push rax
|
|
mov al, 0x20
|
|
out 0x20, al ; Master PIC
|
|
; If IRQ > 7, send to Slave too (Mouse is IRQ 12)
|
|
; We'll handle this in the specific wrappers or C code.
|
|
; Actually, simpler to do EOI in C or here.
|
|
; Let's just do it in C.
|
|
pop rax
|
|
ret
|
|
|
|
%macro ISR_NOERRCODE 1
|
|
push rdi
|
|
push rsi
|
|
push rdx
|
|
push rcx
|
|
push r8
|
|
push r9
|
|
push rax
|
|
push rbx
|
|
push rbp
|
|
push r10
|
|
push r11
|
|
push r12
|
|
push r13
|
|
push r14
|
|
push r15
|
|
|
|
call %1
|
|
|
|
pop r15
|
|
pop r14
|
|
pop r13
|
|
pop r12
|
|
pop r11
|
|
pop r10
|
|
pop rbp
|
|
pop rbx
|
|
pop rax
|
|
pop r9
|
|
pop r8
|
|
pop rcx
|
|
pop rdx
|
|
pop rsi
|
|
pop rdi
|
|
iretq
|
|
%endmacro
|
|
|
|
isr0_wrapper:
|
|
ISR_NOERRCODE timer_handler
|
|
|
|
isr1_wrapper:
|
|
ISR_NOERRCODE keyboard_handler
|
|
|
|
isr12_wrapper:
|
|
ISR_NOERRCODE mouse_handler
|