144 lines
1.8 KiB
NASM
144 lines
1.8 KiB
NASM
; /*
|
|
; * AsterOS Kernel
|
|
; * Autor: Pavel Kalaš
|
|
; * Rok: 2026
|
|
; *
|
|
; * Vytvořeno jen tak z nudy a z chuti zkoušet nové věci.
|
|
; */
|
|
|
|
[bits 64]
|
|
section .text
|
|
|
|
extern interrupt_dispatch
|
|
|
|
global isr_stub_table
|
|
|
|
%macro ISR_NOERR 1
|
|
global isr_%1
|
|
isr_%1:
|
|
push qword 0
|
|
push qword %1
|
|
jmp isr_common
|
|
%endmacro
|
|
|
|
%macro ISR_ERR 1
|
|
global isr_%1
|
|
isr_%1:
|
|
push qword %1
|
|
jmp isr_common
|
|
%endmacro
|
|
|
|
ISR_NOERR 0
|
|
ISR_NOERR 1
|
|
ISR_NOERR 2
|
|
ISR_NOERR 3
|
|
ISR_NOERR 4
|
|
ISR_NOERR 5
|
|
ISR_NOERR 6
|
|
ISR_NOERR 7
|
|
ISR_ERR 8
|
|
ISR_NOERR 9
|
|
ISR_ERR 10
|
|
ISR_ERR 11
|
|
ISR_ERR 12
|
|
ISR_ERR 13
|
|
ISR_ERR 14
|
|
ISR_NOERR 15
|
|
ISR_NOERR 16
|
|
ISR_ERR 17
|
|
ISR_NOERR 18
|
|
ISR_NOERR 19
|
|
ISR_NOERR 20
|
|
ISR_ERR 21
|
|
ISR_NOERR 22
|
|
ISR_NOERR 23
|
|
ISR_NOERR 24
|
|
ISR_NOERR 25
|
|
ISR_NOERR 26
|
|
ISR_NOERR 27
|
|
ISR_NOERR 28
|
|
ISR_NOERR 29
|
|
ISR_ERR 30
|
|
ISR_NOERR 31
|
|
ISR_NOERR 32
|
|
ISR_NOERR 33
|
|
ISR_NOERR 128
|
|
|
|
isr_common:
|
|
cld
|
|
push rax
|
|
push rbx
|
|
push rcx
|
|
push rdx
|
|
push rbp
|
|
push rdi
|
|
push rsi
|
|
push r8
|
|
push r9
|
|
push r10
|
|
push r11
|
|
push r12
|
|
push r13
|
|
push r14
|
|
push r15
|
|
|
|
mov rdi, rsp
|
|
call interrupt_dispatch
|
|
|
|
pop r15
|
|
pop r14
|
|
pop r13
|
|
pop r12
|
|
pop r11
|
|
pop r10
|
|
pop r9
|
|
pop r8
|
|
pop rsi
|
|
pop rdi
|
|
pop rbp
|
|
pop rdx
|
|
pop rcx
|
|
pop rbx
|
|
pop rax
|
|
|
|
add rsp, 16
|
|
iretq
|
|
|
|
section .rodata
|
|
isr_stub_table:
|
|
dq isr_0
|
|
dq isr_1
|
|
dq isr_2
|
|
dq isr_3
|
|
dq isr_4
|
|
dq isr_5
|
|
dq isr_6
|
|
dq isr_7
|
|
dq isr_8
|
|
dq isr_9
|
|
dq isr_10
|
|
dq isr_11
|
|
dq isr_12
|
|
dq isr_13
|
|
dq isr_14
|
|
dq isr_15
|
|
dq isr_16
|
|
dq isr_17
|
|
dq isr_18
|
|
dq isr_19
|
|
dq isr_20
|
|
dq isr_21
|
|
dq isr_22
|
|
dq isr_23
|
|
dq isr_24
|
|
dq isr_25
|
|
dq isr_26
|
|
dq isr_27
|
|
dq isr_28
|
|
dq isr_29
|
|
dq isr_30
|
|
dq isr_31
|
|
dq isr_32
|
|
dq isr_33
|
|
dq isr_128
|