Changeset View
Changeset View
Standalone View
Standalone View
head/lib/libc/aarch64/SYS.h
Show All 39 Lines | |||||
#define SYSCALL(name) \ | #define SYSCALL(name) \ | ||||
ENTRY(__sys_##name); \ | ENTRY(__sys_##name); \ | ||||
WEAK_REFERENCE(__sys_##name, name); \ | WEAK_REFERENCE(__sys_##name, name); \ | ||||
WEAK_REFERENCE(__sys_##name, _##name); \ | WEAK_REFERENCE(__sys_##name, _##name); \ | ||||
_SYSCALL(name); \ | _SYSCALL(name); \ | ||||
ret; \ | ret; \ | ||||
END(__sys_##name) | END(__sys_##name) | ||||
/* | |||||
* Conditional jumps can only go up to one megabyte in either | |||||
* direction, and cerror can be located anywhere, so we have | |||||
* to jump around to use more capable unconditional branch | |||||
* instruction. | |||||
*/ | |||||
#define PSEUDO(name) \ | #define PSEUDO(name) \ | ||||
ENTRY(__sys_##name); \ | ENTRY(__sys_##name); \ | ||||
WEAK_REFERENCE(__sys_##name, _##name); \ | WEAK_REFERENCE(__sys_##name, _##name); \ | ||||
_SYSCALL(name); \ | _SYSCALL(name); \ | ||||
b.cs cerror; \ | b.cs 1f; \ | ||||
ret; \ | ret; \ | ||||
1: b cerror; \ | |||||
END(__sys_##name) | END(__sys_##name) | ||||
#define RSYSCALL(name) \ | #define RSYSCALL(name) \ | ||||
ENTRY(__sys_##name); \ | ENTRY(__sys_##name); \ | ||||
WEAK_REFERENCE(__sys_##name, name); \ | WEAK_REFERENCE(__sys_##name, name); \ | ||||
WEAK_REFERENCE(__sys_##name, _##name); \ | WEAK_REFERENCE(__sys_##name, _##name); \ | ||||
_SYSCALL(name); \ | _SYSCALL(name); \ | ||||
b.cs cerror; \ | b.cs 1f; \ | ||||
ret; \ | ret; \ | ||||
1: b cerror; \ | |||||
END(__sys_##name) | END(__sys_##name) |