[libc] Created syscall trampolines in libc

Using syscalls.inc (moved to src/include) generate trampoline functions
for directly calling syscalls with libc functions.
This commit is contained in:
2020-08-23 18:14:45 -07:00
parent 44e29b3c4a
commit 773617cbf3
7 changed files with 64 additions and 72 deletions

View File

@@ -0,0 +1,21 @@
%macro SYSCALL 2
global _syscall_%1
_syscall_%1:
push rbp
mov rbp, rsp
; address of args should already be in rdi, etc
mov rax, %2
syscall
; result is now already in rax, so just return
pop rbp
ret
%endmacro
%define SYSCALL(n, name) SYSCALL name, n
%define SYSCALL(n, name, a) SYSCALL name, n
%define SYSCALL(n, name, a, b) SYSCALL name, n
%define SYSCALL(n, name, a, b, c) SYSCALL name, n
%include "syscalls.inc"

View File

@@ -0,0 +1,13 @@
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
#define SYSCALL(n, name, ...) j6_status_t _syscall_ ## name (__VA_ARGS__);
#include "syscalls.inc"
#undef SYSCALL
#ifdef __cplusplus
}
#endif