diff options
author | dzwdz | 2022-07-16 13:33:00 +0200 |
---|---|---|
committer | dzwdz | 2022-07-16 13:33:00 +0200 |
commit | 912d2e3c7eb1baa71dda2c0a28aa5809eaa96f27 (patch) | |
tree | 4e27f3538466d5fd63a311d50916039a7a15a485 /src/kernel/arch/i386/sysenter.c | |
parent | 1eeb66af44ab335888410d716d604e569f20866e (diff) |
amd64: barely boot into kernel code
Diffstat (limited to 'src/kernel/arch/i386/sysenter.c')
-rw-r--r-- | src/kernel/arch/i386/sysenter.c | 26 |
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(); -} |