From b26098268eb443f1ed3dc50d902b2beee40c8342 Mon Sep 17 00:00:00 2001 From: dzwdz Date: Sat, 16 Jul 2022 19:35:05 +0200 Subject: amd64: seemingly working syscalls (SYSCALL/SYSRET) --- src/user/lib/syscall.s | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) (limited to 'src/user/lib/syscall.s') diff --git a/src/user/lib/syscall.s b/src/user/lib/syscall.s index 0f9e444..07f5631 100644 --- a/src/user/lib/syscall.s +++ b/src/user/lib/syscall.s @@ -2,24 +2,8 @@ .global _syscall .type _syscall, @function _syscall: - push %rbx // preserve registers - push %rsi - push %rdi - push %rbp - - // NOT the calling convention TODO you lazy fuck - mov 20(%rsp), %rax - mov 24(%rsp), %rbx - mov %rsp, %rcx - mov $_syscall_ret, %rdx - mov 28(%rsp), %rsi - mov 32(%rsp), %rdi - mov 36(%rsp), %rbp - sysenter - -_syscall_ret: - pop %rbp - pop %rdi - pop %rsi - pop %rbx + push %r10 + mov %rcx, %r10 + syscall + pop %r10 ret -- cgit v1.2.3