From 7ec221c36dd37130bc91442762c27b8d152f1cef Mon Sep 17 00:00:00 2001 From: apio Date: Wed, 19 Oct 2022 17:50:09 +0200 Subject: [PATCH] libc: Move __luna_syscall* declarations to asm --- libs/libc/src/luna/syscall.asm | 50 ++++++++++++++++++++++++++++++++++ libs/libc/src/luna/syscall.c | 48 -------------------------------- 2 files changed, 50 insertions(+), 48 deletions(-) create mode 100644 libs/libc/src/luna/syscall.asm delete mode 100644 libs/libc/src/luna/syscall.c diff --git a/libs/libc/src/luna/syscall.asm b/libs/libc/src/luna/syscall.asm new file mode 100644 index 00000000..b6c1797c --- /dev/null +++ b/libs/libc/src/luna/syscall.asm @@ -0,0 +1,50 @@ +global __luna_syscall0 +__luna_syscall0: + mov rax, rdi + int 0x42 + ret + +global __luna_syscall1 +__luna_syscall1: + mov rax, rdi + mov rdi, rsi + int 0x42 + ret + +global __luna_syscall2 +__luna_syscall2: + mov rax, rdi + mov rdi, rsi + mov rsi, rdx + int 0x42 + ret + +global __luna_syscall3 +__luna_syscall3: + mov rax, rdi + mov rdi, rsi + mov rsi, rdx + mov rdx, rcx + int 0x42 + ret + +global __luna_syscall4 +__luna_syscall4: + mov rax, rdi + mov rdi, rsi + mov rsi, rdx + mov rdx, rcx + mov r10, r8 + int 0x42 + ret + +global __luna_syscall5 +__luna_syscall5: + mov rax, rdi + mov rdi, rsi + mov rsi, rdx + mov rdx, rcx + mov r10, r8 + mov r8, r9 + int 0x42 + ret \ No newline at end of file diff --git a/libs/libc/src/luna/syscall.c b/libs/libc/src/luna/syscall.c deleted file mode 100644 index 011c3ea7..00000000 --- a/libs/libc/src/luna/syscall.c +++ /dev/null @@ -1,48 +0,0 @@ -#include - -long int __luna_syscall0(long int sys_num) -{ - long int result; - asm volatile("int $0x42" : "=a"(result) : "a"(sys_num)); - return result; -} - -long int __luna_syscall1(long int sys_num, unsigned long int arg0) -{ - long int result; - asm volatile("int $0x42" : "=a"(result) : "a"(sys_num), "D"(arg0)); - return result; -} - -long int __luna_syscall2(long int sys_num, unsigned long int arg0, unsigned long int arg1) -{ - long int result; - asm volatile("int $0x42" : "=a"(result) : "a"(sys_num), "D"(arg0), "S"(arg1)); - return result; -} - -long int __luna_syscall3(long int sys_num, unsigned long int arg0, unsigned long int arg1, unsigned long int arg2) -{ - long int result; - asm volatile("int $0x42" : "=a"(result) : "a"(sys_num), "D"(arg0), "S"(arg1), "d"(arg2)); - return result; -} - -long int __luna_syscall4(long int sys_num, unsigned long int arg0, unsigned long int arg1, unsigned long int arg2, - unsigned long int arg3) -{ - long int result; - register unsigned long int value0 asm("r10") = arg3; - asm volatile("int $0x42" : "=a"(result) : "a"(sys_num), "D"(arg0), "S"(arg1), "d"(arg2), "r"(value0)); - return result; -} - -long int __luna_syscall5(long int sys_num, unsigned long int arg0, unsigned long int arg1, unsigned long int arg2, - unsigned long int arg3, unsigned long int arg4) -{ - long int result; - register unsigned long int value0 asm("r10") = arg3; - register unsigned long int value1 asm("r8") = arg4; - asm volatile("int $0x42" : "=a"(result) : "a"(sys_num), "D"(arg0), "S"(arg1), "d"(arg2), "r"(value0), "r"(value1)); - return result; -} \ No newline at end of file