summaryrefslogtreecommitdiff
path: root/src/kernel/arch/i386/sysenter.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/arch/i386/sysenter.c')
-rw-r--r--src/kernel/arch/i386/sysenter.c26
1 files changed, 0 insertions, 26 deletions
diff --git a/src/kernel/arch/i386/sysenter.c b/src/kernel/arch/i386/sysenter.c
deleted file mode 100644
index 5837474..0000000
--- a/src/kernel/arch/i386/sysenter.c
+++ /dev/null
@@ -1,26 +0,0 @@
-#include <kernel/arch/generic.h>
-#include <kernel/arch/i386/sysenter.h>
-#include <kernel/proc.h>
-#include <shared/syscalls.h>
-
-struct registers _sysexit_regs;
-
-void sysexit(struct registers regs) {
- _sysexit_regs = regs;
- _sysexit_regs.ecx = (uintptr_t) regs.esp;
- _sysexit_regs.edx = (uintptr_t) regs.eip;
- _sysexit_real();
- __builtin_unreachable();
-}
-
-_Noreturn void sysenter_stage2(void) {
- struct registers *regs = &process_current->regs;
-
- *regs = _sysexit_regs; // save the registers
- regs->esp = (userptr_t) regs->ecx; // fix them up
- regs->eip = (userptr_t) regs->edx;
-
- _syscall(regs->eax, regs->ebx,
- regs->esi, regs->edi, (uintptr_t)regs->ebp);
- process_switch_any();
-}