#include "arch/processor.h" #include "syscall/handler.h" __attribute__((naked)) void _syscall_entry() { __asm__ volatile(" \ pushq %%r11; \ pushq %%rcx; \ swapgs; \ movq %%gs:%c[tcb], %%rax; \ movq %%rsp, %c[sp](%%rax); \ movq %c[ksp](%%rax), %%rsp; \ pushq %c[sp](%%rax); \ callq _syscall_handler; \ swapgs; \ popq %%rsp; \ popq %%rcx; \ popq %%r11; \ sysretq; \ " :: [tcb] "i"(offsetof(processor_t, tcb)), [sp] "i"(offsetof(tcb_t, sp)), [ksp] "i"(offsetof(tcb_t, ksp))); }