github.com/afumu/libc@v0.0.6/musl/arch/riscv64/syscall_arch.h (about)

     1  #define __SYSCALL_LL_E(x) (x)
     2  #define __SYSCALL_LL_O(x) (x)
     3  
     4  #define __asm_syscall(...) \
     5  	__asm__ __volatile__ ("ecall\n\t" \
     6  	: "=r"(a0) : __VA_ARGS__ : "memory"); \
     7  	return a0; \
     8  
     9  static inline long __syscall0(long n)
    10  {
    11  	register long a7 __asm__("a7") = n;
    12  	register long a0 __asm__("a0");
    13  	__asm_syscall("r"(a7))
    14  }
    15  
    16  static inline long __syscall1(long n, long a)
    17  {
    18  	register long a7 __asm__("a7") = n;
    19  	register long a0 __asm__("a0") = a;
    20  	__asm_syscall("r"(a7), "0"(a0))
    21  }
    22  
    23  static inline long __syscall2(long n, long a, long b)
    24  {
    25  	register long a7 __asm__("a7") = n;
    26  	register long a0 __asm__("a0") = a;
    27  	register long a1 __asm__("a1") = b;
    28  	__asm_syscall("r"(a7), "0"(a0), "r"(a1))
    29  }
    30  
    31  static inline long __syscall3(long n, long a, long b, long c)
    32  {
    33  	register long a7 __asm__("a7") = n;
    34  	register long a0 __asm__("a0") = a;
    35  	register long a1 __asm__("a1") = b;
    36  	register long a2 __asm__("a2") = c;
    37  	__asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2))
    38  }
    39  
    40  static inline long __syscall4(long n, long a, long b, long c, long d)
    41  {
    42  	register long a7 __asm__("a7") = n;
    43  	register long a0 __asm__("a0") = a;
    44  	register long a1 __asm__("a1") = b;
    45  	register long a2 __asm__("a2") = c;
    46  	register long a3 __asm__("a3") = d;
    47  	__asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3))
    48  }
    49  
    50  static inline long __syscall5(long n, long a, long b, long c, long d, long e)
    51  {
    52  	register long a7 __asm__("a7") = n;
    53  	register long a0 __asm__("a0") = a;
    54  	register long a1 __asm__("a1") = b;
    55  	register long a2 __asm__("a2") = c;
    56  	register long a3 __asm__("a3") = d;
    57  	register long a4 __asm__("a4") = e;
    58  	__asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3), "r"(a4))
    59  }
    60  
    61  static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f)
    62  {
    63  	register long a7 __asm__("a7") = n;
    64  	register long a0 __asm__("a0") = a;
    65  	register long a1 __asm__("a1") = b;
    66  	register long a2 __asm__("a2") = c;
    67  	register long a3 __asm__("a3") = d;
    68  	register long a4 __asm__("a4") = e;
    69  	register long a5 __asm__("a5") = f;
    70  	__asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3), "r"(a4), "r"(a5))
    71  }
    72  
    73  #define VDSO_USEFUL
    74  /* We don't have a clock_gettime function.
    75  #define VDSO_CGT_SYM "__vdso_clock_gettime"
    76  #define VDSO_CGT_VER "LINUX_2.6" */
    77  
    78  #define IPC_64 0