Init IOAPIC nad LAPICs

This commit is contained in:
2025-08-21 00:47:58 +02:00
parent 3f6df79885
commit 9d8849a425
25 changed files with 801 additions and 306 deletions

175
kernel/hal/x86_64/intr0.S Normal file
View File

@ -0,0 +1,175 @@
.extern intr_handleintr
.global intr_vec0
.global intr_vec1
.global intr_vec2
.global intr_vec3
.global intr_vec4
.global intr_vec5
.global intr_vec6
.global intr_vec7
.global intr_vec8
.global intr_vec10
.global intr_vec11
.global intr_vec12
.global intr_vec13
.global intr_vec14
.global intr_vec16
.global intr_vec17
.global intr_vec18
.global intr_vec19
.global intr_vec20
.global intr_vec21
.global intr_vec32
.global intr_vec33
.global intr_vec39
.macro _PUSHAQ
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
.endm
.macro _POPAQ
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
.endm
.macro _PUSHACR
mov %cr0, %rax
push %rax
mov %cr2, %rax
push %rax
mov %cr3, %rax
push %rax
mov %cr4, %rax
push %rax
mov %cr8, %rax
push %rax
.endm
.macro _vecintr_errorcode_present_save num
push $\num
_PUSHAQ
_PUSHACR
.endm
.macro _vecintr_plain_save num errorno
push $\errorno
push $\num
_PUSHAQ
_PUSHACR
.endm
.macro _vecintr_restore
add 40, %rsp
_POPAQ
add 16, %rsp
.endm
.macro _vecintr_bodygen
cld
mov %rsp, %rdi
call intr_handleintr
_vecintr_restore
iretq
.endm
intr_vec0:
_vecintr_plain_save 0, 0
_vecintr_bodygen
intr_vec1:
_vecintr_plain_save 1, 0
_vecintr_bodygen
intr_vec2:
_vecintr_plain_save 2, 0
_vecintr_bodygen
intr_vec3:
_vecintr_plain_save 3, 0
_vecintr_bodygen
intr_vec4:
_vecintr_plain_save 4, 0
_vecintr_bodygen
intr_vec5:
_vecintr_plain_save 5, 0
_vecintr_bodygen
intr_vec6:
_vecintr_plain_save 6, 0
_vecintr_bodygen
intr_vec7:
_vecintr_plain_save 7, 0
_vecintr_bodygen
intr_vec8:
_vecintr_errorcode_present_save 8
_vecintr_bodygen
intr_vec10:
_vecintr_errorcode_present_save 10
_vecintr_bodygen
intr_vec11:
_vecintr_errorcode_present_save 11
_vecintr_bodygen
intr_vec12:
_vecintr_errorcode_present_save 12
_vecintr_bodygen
intr_vec13:
_vecintr_errorcode_present_save 13
_vecintr_bodygen
intr_vec14:
_vecintr_errorcode_present_save 14
_vecintr_bodygen
intr_vec16:
_vecintr_plain_save 16, 0
_vecintr_bodygen
intr_vec17:
_vecintr_errorcode_present_save 17
_vecintr_bodygen
intr_vec18:
_vecintr_plain_save 18, 0
_vecintr_bodygen
intr_vec19:
_vecintr_plain_save 19, 0
_vecintr_bodygen
intr_vec20:
_vecintr_plain_save 20, 0
_vecintr_bodygen
intr_vec21:
_vecintr_errorcode_present_save 21
_vecintr_bodygen
intr_vec32:
_vecintr_plain_save 32, 0
_vecintr_bodygen
intr_vec33:
_vecintr_plain_save 33, 0
_vecintr_bodygen
intr_vec39:
_vecintr_plain_save 39, 0
_vecintr_bodygen