summaryrefslogtreecommitdiff
path: root/kernel/interrupts.asm
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/interrupts.asm')
-rw-r--r--kernel/interrupts.asm10
1 files changed, 7 insertions, 3 deletions
diff --git a/kernel/interrupts.asm b/kernel/interrupts.asm
index c375ee4..4827cfd 100644
--- a/kernel/interrupts.asm
+++ b/kernel/interrupts.asm
@@ -64,6 +64,8 @@ exception_info:
resq 1
.r15:
resq 1
+.cr2:
+ resq 1
.cr3:
resq 1
.rip:
@@ -181,6 +183,8 @@ exception_common:
pop rax
mov qword [exception_info.rsp], rax
+ mov rax, cr2
+ mov qword [exception_info.cr2], rax
mov rax, cr3
mov qword [exception_info.cr3], rax
@@ -200,7 +204,7 @@ set_isr:
shr rdx, 16
mov dword [rdi + 8], edx
- or sil, 0xef
+ or sil, 0x8e
mov byte [rdi + 5], sil
mov word [rdi + 2], 0x28
mov byte [rdi + 4], 1
@@ -225,13 +229,13 @@ section .text
load_gdt_and_idt:
- mov rcx, 8
+ mov rcx, 16
.loop:
mov rdi, rcx
dec rdi
- mov sil, 1
+ mov sil, 0
mov rdx, qword [exception_isrs + rdi * 8]
call set_isr