Using syscalls.inc (moved to src/include) generate trampoline functions for directly calling syscalls with libc functions.
22 lines
436 B
ArmAsm
22 lines
436 B
ArmAsm
%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"
|