Files
my-os-project2/kernel/hal/x86_64/intr0.S
2025-08-22 12:37:48 +02:00

280 lines
4.5 KiB
ArmAsm

.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_vec9
.global intr_vec10
.global intr_vec11
.global intr_vec12
.global intr_vec13
.global intr_vec14
.global intr_vec15
.global intr_vec16
.global intr_vec17
.global intr_vec18
.global intr_vec19
.global intr_vec20
.global intr_vec21
.global intr_vec22
.global intr_vec23
.global intr_vec24
.global intr_vec25
.global intr_vec26
.global intr_vec27
.global intr_vec28
.global intr_vec29
.global intr_vec30
.global intr_vec31
.global intr_vec32
.global intr_vec33
.global intr_vec34
.global intr_vec35
.global intr_vec36
.global intr_vec37
.global intr_vec38
.global intr_vec39
.global intr_vec40
.global intr_vec41
.global intr_vec42
.global intr_vec43
.global intr_vec44
.global intr_vec45
.global intr_vec46
.global intr_vec47
.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 _POPACR
add $0x28, %rsp
.endm
.macro _vecintr_errorcode_present_save num
pushq $\num
_PUSHAQ
_PUSHACR
.endm
.macro _vecintr_plain_save num
pushq $0x0
pushq $\num
_PUSHAQ
_PUSHACR
.endm
siema:
jmp siema
.macro _vecintr_bodygen
mov %rsp, %rdi
call intr_handleintr
_POPACR
_POPAQ
add $0x10, %rsp
iretq
.endm
intr_vec0:
_vecintr_plain_save 0
_vecintr_bodygen
intr_vec1:
_vecintr_plain_save 1
_vecintr_bodygen
intr_vec2:
_vecintr_plain_save 2
_vecintr_bodygen
intr_vec3:
_vecintr_plain_save 3
_vecintr_bodygen
intr_vec4:
_vecintr_plain_save 4
_vecintr_bodygen
intr_vec5:
_vecintr_plain_save 5
_vecintr_bodygen
intr_vec6:
_vecintr_plain_save 6
_vecintr_bodygen
intr_vec7:
_vecintr_plain_save 7
_vecintr_bodygen
intr_vec8:
_vecintr_errorcode_present_save 8
_vecintr_bodygen
intr_vec9:
_vecintr_plain_save 9
_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_vec15:
_vecintr_plain_save 15
_vecintr_bodygen
intr_vec16:
_vecintr_plain_save 16
_vecintr_bodygen
intr_vec17:
_vecintr_errorcode_present_save 17
_vecintr_bodygen
intr_vec18:
_vecintr_plain_save 18
_vecintr_bodygen
intr_vec19:
_vecintr_plain_save 19
_vecintr_bodygen
intr_vec20:
_vecintr_plain_save 20
_vecintr_bodygen
intr_vec21:
_vecintr_errorcode_present_save 21
_vecintr_bodygen
intr_vec22:
_vecintr_plain_save 22
_vecintr_bodygen
intr_vec23:
_vecintr_plain_save 23
_vecintr_bodygen
intr_vec24:
_vecintr_plain_save 24
_vecintr_bodygen
intr_vec25:
_vecintr_plain_save 25
_vecintr_bodygen
intr_vec26:
_vecintr_plain_save 26
_vecintr_bodygen
intr_vec27:
_vecintr_plain_save 27
_vecintr_bodygen
intr_vec28:
_vecintr_plain_save 28
_vecintr_bodygen
intr_vec29:
_vecintr_errorcode_present_save 29
_vecintr_bodygen
intr_vec30:
_vecintr_errorcode_present_save 30
_vecintr_bodygen
intr_vec31:
_vecintr_plain_save 31
_vecintr_bodygen
intr_vec32:
_vecintr_plain_save 32
_vecintr_bodygen
intr_vec33:
_vecintr_plain_save 33
_vecintr_bodygen
intr_vec34:
_vecintr_plain_save 34
_vecintr_bodygen
intr_vec35:
_vecintr_plain_save 35
_vecintr_bodygen
intr_vec36:
_vecintr_plain_save 36
_vecintr_bodygen
intr_vec37:
_vecintr_plain_save 37
_vecintr_bodygen
intr_vec38:
_vecintr_plain_save 38
_vecintr_bodygen
intr_vec39:
_vecintr_plain_save 39
_vecintr_bodygen
intr_vec40:
_vecintr_plain_save 40
_vecintr_bodygen
intr_vec41:
_vecintr_plain_save 41
_vecintr_bodygen
intr_vec42:
_vecintr_plain_save 42
_vecintr_bodygen
intr_vec43:
_vecintr_plain_save 43
_vecintr_bodygen
intr_vec44:
_vecintr_plain_save 44
_vecintr_bodygen
intr_vec45:
_vecintr_plain_save 45
_vecintr_bodygen
intr_vec46:
_vecintr_plain_save 46
_vecintr_bodygen
intr_vec47:
_vecintr_plain_save 47
_vecintr_bodygen