syscall.h (692B)
1 #ifndef TA_SYSCALL_H
2 #define TA_SYSCALL_H
3
4 #include <stdint.h>
5
6 static inline uint32_t ta_syscall(uint32_t number, uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5) {
7 register uint32_t reg0 __asm__("a0") = arg0;
8 register uint32_t reg1 __asm__("a1") = arg1;
9 register uint32_t reg2 __asm__("a2") = arg2;
10 register uint32_t reg3 __asm__("a3") = arg3;
11 register uint32_t reg4 __asm__("a4") = arg4;
12 register uint32_t reg5 __asm__("a5") = arg5;
13 register uint32_t reg7 __asm__("a7") = number;
14
15 __asm__ volatile("ecall" : "+r"(reg0) : "r"(reg1), "r"(reg2), "r"(reg3), "r"(reg4), "r"(reg5), "r"(reg7) : "memory");
16
17 return reg0;
18 }
19
20 #endif // TA_SYSCALL_H