From 0613dadeaffdeb50abd94730be4271678a4abf3d Mon Sep 17 00:00:00 2001 From: pointer-to-bios Date: Sun, 18 Feb 2024 03:54:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=80=E4=B8=AA=E4=BB=8Ec?= =?UTF-8?q?=E8=AF=AD=E8=A8=80=E4=BD=BF=E7=94=A8x86=5F64=E4=B8=ADsysret?= =?UTF-8?q?=E6=8C=87=E4=BB=A4=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/kernel/arch/x86_64/entry.s | 3 +++ src/kernel/arch/x86_64/syscall_x86_64.s | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/src/kernel/arch/x86_64/entry.s b/src/kernel/arch/x86_64/entry.s index efbb1ad..54a341c 100644 --- a/src/kernel/arch/x86_64/entry.s +++ b/src/kernel/arch/x86_64/entry.s @@ -26,6 +26,9 @@ init64: lea rax, [systemcall_procedure] wrmsr + ; 加载中断相关寄存器 + ; 需要加载寄存器IA32_INTERRUPT_SSP_TABLE + jmp kmain section .multiboot2 align=8 diff --git a/src/kernel/arch/x86_64/syscall_x86_64.s b/src/kernel/arch/x86_64/syscall_x86_64.s index 8b9ae7a..d8220b7 100644 --- a/src/kernel/arch/x86_64/syscall_x86_64.s +++ b/src/kernel/arch/x86_64/syscall_x86_64.s @@ -50,6 +50,10 @@ set_kernel_stack_cache: pop rax ret +; void return_from_systemcall() +return_from_systemcall: + sysret + save_kernel_stack: endbr64 lea rbx, [kernel_stack_cache]