From 797f2c118a9a1d874d53256039e67cd1b8649e44 Mon Sep 17 00:00:00 2001 From: Matheus Date: Wed, 12 Jun 2024 18:22:30 -0300 Subject: [PATCH] x86_64: properly set kernel data segments on syscall/interrupt entry --- kernel-src/arch/x86-64/isr.asm | 5 +++++ kernel-src/arch/x86-64/syscall.asm | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/kernel-src/arch/x86-64/isr.asm b/kernel-src/arch/x86-64/isr.asm index 8077e442..1521d632 100644 --- a/kernel-src/arch/x86-64/isr.asm +++ b/kernel-src/arch/x86-64/isr.asm @@ -41,6 +41,11 @@ isr_%+ i: mov rdi,cr2 push rdi + ; set up kernel segments + mov rdi, 0x10 + mov ds, rdi + mov es, rdi + ; save ctx pointer and interrupt vector number mov rdi, i mov rsi, rsp diff --git a/kernel-src/arch/x86-64/syscall.asm b/kernel-src/arch/x86-64/syscall.asm index 78179f48..a281e967 100644 --- a/kernel-src/arch/x86-64/syscall.asm +++ b/kernel-src/arch/x86-64/syscall.asm @@ -211,6 +211,10 @@ arch_syscall_entry: mov rbx, cr2 push rbx + mov rbx, 0x10 + mov es, rbx + mov ds, rbx + ; prepare arguments for the functions push r9 mov r9, r8