.code64 .extern printk .extern ack .macro call_printk msg mov \msg, %rdi mov $0, %eax # Required for variadic functions call printk .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 .globl INT_KBD INT_KBD: call_printk $MSG_INT_KBD call ack iretq MSG_INT_0: .asciz "Zero Division error!" MSG_INT_14: .asciz "Page fault!" MSG_INT_KBD: .asciz "Key press!" MSG: .asciz "Called :)\n"