2023-01-15 19:25:25 +00:00
|
|
|
[BITS 32]
|
|
|
|
section .text
|
|
|
|
global setup_idt
|
|
|
|
setup_idt:
|
2023-01-17 10:35:11 +00:00
|
|
|
%assign i 0
|
|
|
|
extern isr %+ i
|
|
|
|
mov eax, isr %+ i
|
|
|
|
mov [idt_entries + i * 4], ax
|
|
|
|
shr eax, 16
|
|
|
|
mov word [idt_entries + i * 4 + 2], 0x8
|
|
|
|
mov byte [idt_entries + i * 4 + 5], 0x8E
|
|
|
|
mov [idt_entries + i * 4 + 6], ax
|
|
|
|
|
|
|
|
%assign i i+1
|
|
|
|
%rep 32
|
|
|
|
%endrep
|
2023-01-15 19:25:25 +00:00
|
|
|
lidt [idt_ptr]
|
2023-01-17 10:35:11 +00:00
|
|
|
sti
|
2023-01-15 19:25:25 +00:00
|
|
|
ret
|
|
|
|
|
|
|
|
section .data
|
|
|
|
|
|
|
|
idt_ptr:
|
2023-01-17 10:35:11 +00:00
|
|
|
dw 256 * 8
|
2023-01-15 19:25:25 +00:00
|
|
|
dd idt_entries
|
|
|
|
|
|
|
|
idt_entries:
|
|
|
|
times 256 dd 0x00000000, 0x00000000
|
2023-01-17 10:35:11 +00:00
|
|
|
;; dw isr_low
|
|
|
|
;; dw kernel cs
|
|
|
|
;; db zero
|
|
|
|
;; db attr
|
|
|
|
;; dw isr_high
|
2023-01-15 19:25:25 +00:00
|
|
|
.end:
|