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]