Init IOAPIC nad LAPICs
This commit is contained in:
175
kernel/hal/x86_64/intr0.S
Normal file
175
kernel/hal/x86_64/intr0.S
Normal 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
|
Reference in New Issue
Block a user