2021-04-27 19:02:17 +02:00
|
|
|
.code64
|
|
|
|
|
2021-04-21 18:54:50 +02:00
|
|
|
.extern printk
|
2021-04-25 12:41:24 +02:00
|
|
|
.extern ack
|
2021-04-21 18:54:50 +02:00
|
|
|
|
|
|
|
.macro call_printk msg
|
|
|
|
mov \msg, %rdi
|
|
|
|
mov $0, %eax # Required for variadic functions
|
2021-04-30 09:31:30 +02:00
|
|
|
mov $printk,%rcx
|
|
|
|
call *(%rcx)
|
2021-04-21 18:54:50 +02:00
|
|
|
.endm
|
|
|
|
|
|
|
|
.globl INT_DEFAULT
|
|
|
|
INT_DEFAULT:
|
|
|
|
iretq
|
|
|
|
|
|
|
|
.globl INT_0
|
|
|
|
INT_0:
|
|
|
|
call_printk $MSG_INT_0
|
|
|
|
INT_0_INFINITE:
|
|
|
|
jmp INT_0_INFINITE
|
|
|
|
iretq
|
|
|
|
|
|
|
|
.globl INT_14
|
|
|
|
INT_14:
|
|
|
|
call_printk $MSG_INT_14
|
|
|
|
mov $0, %eax
|
|
|
|
call printk
|
|
|
|
INT_14_INFINITE:
|
|
|
|
jmp INT_14_INFINITE
|
|
|
|
iretq
|
|
|
|
|
2021-04-25 12:41:24 +02:00
|
|
|
.globl INT_KBD
|
|
|
|
INT_KBD:
|
2021-05-01 11:37:52 +02:00
|
|
|
#call_printk $MSG_INT_KBD
|
|
|
|
call ack
|
|
|
|
iretq
|
|
|
|
|
|
|
|
.globl INT_CLK
|
|
|
|
.extern clock
|
|
|
|
INT_CLK:
|
|
|
|
call clock
|
2021-04-25 12:41:24 +02:00
|
|
|
call ack
|
|
|
|
iretq
|
2021-04-21 18:54:50 +02:00
|
|
|
|
|
|
|
MSG_INT_0:
|
|
|
|
.asciz "Zero Division error!"
|
|
|
|
MSG_INT_14:
|
|
|
|
.asciz "Page fault!"
|
2021-04-25 12:41:24 +02:00
|
|
|
MSG_INT_KBD:
|
|
|
|
.asciz "Key press!"
|
|
|
|
MSG:
|
2021-04-27 19:02:17 +02:00
|
|
|
.asciz "Called :)\n"
|