xref: /aosp_15_r20/external/musl/arch/x86_64/syscall_arch.h (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker #define __SYSCALL_LL_E(x) (x)
2*c9945492SAndroid Build Coastguard Worker #define __SYSCALL_LL_O(x) (x)
3*c9945492SAndroid Build Coastguard Worker 
__syscall0(long n)4*c9945492SAndroid Build Coastguard Worker static __inline long __syscall0(long n)
5*c9945492SAndroid Build Coastguard Worker {
6*c9945492SAndroid Build Coastguard Worker 	unsigned long ret;
7*c9945492SAndroid Build Coastguard Worker 	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n) : "rcx", "r11", "memory");
8*c9945492SAndroid Build Coastguard Worker 	return ret;
9*c9945492SAndroid Build Coastguard Worker }
10*c9945492SAndroid Build Coastguard Worker 
__syscall1(long n,long a1)11*c9945492SAndroid Build Coastguard Worker static __inline long __syscall1(long n, long a1)
12*c9945492SAndroid Build Coastguard Worker {
13*c9945492SAndroid Build Coastguard Worker 	unsigned long ret;
14*c9945492SAndroid Build Coastguard Worker 	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1) : "rcx", "r11", "memory");
15*c9945492SAndroid Build Coastguard Worker 	return ret;
16*c9945492SAndroid Build Coastguard Worker }
17*c9945492SAndroid Build Coastguard Worker 
__syscall2(long n,long a1,long a2)18*c9945492SAndroid Build Coastguard Worker static __inline long __syscall2(long n, long a1, long a2)
19*c9945492SAndroid Build Coastguard Worker {
20*c9945492SAndroid Build Coastguard Worker 	unsigned long ret;
21*c9945492SAndroid Build Coastguard Worker 	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2)
22*c9945492SAndroid Build Coastguard Worker 						  : "rcx", "r11", "memory");
23*c9945492SAndroid Build Coastguard Worker 	return ret;
24*c9945492SAndroid Build Coastguard Worker }
25*c9945492SAndroid Build Coastguard Worker 
__syscall3(long n,long a1,long a2,long a3)26*c9945492SAndroid Build Coastguard Worker static __inline long __syscall3(long n, long a1, long a2, long a3)
27*c9945492SAndroid Build Coastguard Worker {
28*c9945492SAndroid Build Coastguard Worker 	unsigned long ret;
29*c9945492SAndroid Build Coastguard Worker 	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
30*c9945492SAndroid Build Coastguard Worker 						  "d"(a3) : "rcx", "r11", "memory");
31*c9945492SAndroid Build Coastguard Worker 	return ret;
32*c9945492SAndroid Build Coastguard Worker }
33*c9945492SAndroid Build Coastguard Worker 
__syscall4(long n,long a1,long a2,long a3,long a4)34*c9945492SAndroid Build Coastguard Worker static __inline long __syscall4(long n, long a1, long a2, long a3, long a4)
35*c9945492SAndroid Build Coastguard Worker {
36*c9945492SAndroid Build Coastguard Worker 	unsigned long ret;
37*c9945492SAndroid Build Coastguard Worker 	register long r10 __asm__("r10") = a4;
38*c9945492SAndroid Build Coastguard Worker 	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
39*c9945492SAndroid Build Coastguard Worker 						  "d"(a3), "r"(r10): "rcx", "r11", "memory");
40*c9945492SAndroid Build Coastguard Worker 	return ret;
41*c9945492SAndroid Build Coastguard Worker }
42*c9945492SAndroid Build Coastguard Worker 
__syscall5(long n,long a1,long a2,long a3,long a4,long a5)43*c9945492SAndroid Build Coastguard Worker static __inline long __syscall5(long n, long a1, long a2, long a3, long a4, long a5)
44*c9945492SAndroid Build Coastguard Worker {
45*c9945492SAndroid Build Coastguard Worker 	unsigned long ret;
46*c9945492SAndroid Build Coastguard Worker 	register long r10 __asm__("r10") = a4;
47*c9945492SAndroid Build Coastguard Worker 	register long r8 __asm__("r8") = a5;
48*c9945492SAndroid Build Coastguard Worker 	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
49*c9945492SAndroid Build Coastguard Worker 						  "d"(a3), "r"(r10), "r"(r8) : "rcx", "r11", "memory");
50*c9945492SAndroid Build Coastguard Worker 	return ret;
51*c9945492SAndroid Build Coastguard Worker }
52*c9945492SAndroid Build Coastguard Worker 
__syscall6(long n,long a1,long a2,long a3,long a4,long a5,long a6)53*c9945492SAndroid Build Coastguard Worker static __inline long __syscall6(long n, long a1, long a2, long a3, long a4, long a5, long a6)
54*c9945492SAndroid Build Coastguard Worker {
55*c9945492SAndroid Build Coastguard Worker 	unsigned long ret;
56*c9945492SAndroid Build Coastguard Worker 	register long r10 __asm__("r10") = a4;
57*c9945492SAndroid Build Coastguard Worker 	register long r8 __asm__("r8") = a5;
58*c9945492SAndroid Build Coastguard Worker 	register long r9 __asm__("r9") = a6;
59*c9945492SAndroid Build Coastguard Worker 	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
60*c9945492SAndroid Build Coastguard Worker 						  "d"(a3), "r"(r10), "r"(r8), "r"(r9) : "rcx", "r11", "memory");
61*c9945492SAndroid Build Coastguard Worker 	return ret;
62*c9945492SAndroid Build Coastguard Worker }
63*c9945492SAndroid Build Coastguard Worker 
64*c9945492SAndroid Build Coastguard Worker #define VDSO_USEFUL
65*c9945492SAndroid Build Coastguard Worker #define VDSO_CGT_SYM "__vdso_clock_gettime"
66*c9945492SAndroid Build Coastguard Worker #define VDSO_CGT_VER "LINUX_2.6"
67*c9945492SAndroid Build Coastguard Worker #define VDSO_GETCPU_SYM "__vdso_getcpu"
68*c9945492SAndroid Build Coastguard Worker #define VDSO_GETCPU_VER "LINUX_2.6"
69*c9945492SAndroid Build Coastguard Worker 
70*c9945492SAndroid Build Coastguard Worker #define IPC_64 0
71