Macro-ify asm IDT entry loading

This commit is contained in:
greg
2015-11-18 02:11:09 -08:00
parent 8106038690
commit cb4d718af1

View File

@@ -145,32 +145,27 @@ handle_timer:
pop rax
iretq
;expects name of label, offset in table
%macro load_IDT_entry 2
%define IDT_SIZE 16
mov rax, %1
mov [idt64 + %2*IDT_SIZE], ax
mov word [idt64 + %2*IDT_SIZE + 2], cs
mov word [idt64 + %2*IDT_SIZE + 4], 0x8e00
shr rax, 16
mov [idt64 + %2*IDT_SIZE + 6], ax
shr rax, 16
mov [idt64 + %2*IDT_SIZE + 8], eax
%endmacro
setup_IDT:
lidt [idt64.pointer]
%define timer_int 8
mov rax, handle_timer
mov [idt64 + timer_int*16], ax
mov word [idt64 + timer_int*16 + 2], cs
mov word [idt64 + timer_int*16 + 4], 0x8e00
shr rax, 16
mov [idt64 + timer_int*16 + 6], ax
shr rax, 16
mov [idt64 + timer_int*16 + 8], eax
%define int_num 9
mov rax, handle_keyboard
mov [idt64 + int_num*16], ax
mov word [idt64 + int_num*16 +2], cs
mov word [idt64 + int_num*16 + 4], 0x8e00
shr rax, 16
mov [idt64 + int_num*16 + 6], ax
shr rax, 16
mov [idt64 + int_num*16 + 8], eax
load_IDT_entry handle_timer, 8
load_IDT_entry handle_keyboard, 9
ret
;setup_PIC:
; mov al, 0xfc ;timer and keyboard, no more
; out byte 0x21, al