[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 09/16] lib: Add _sys_call_5 for Linux RV64.
From: |
W. J. van der Laan |
Subject: |
[PATCH 09/16] lib: Add _sys_call_5 for Linux RV64. |
Date: |
Sat, 24 Apr 2021 14:25:25 +0000 |
* include/linux/syscall.h: Add 5-argument syscall needed for
SYS_renameat2, currently only used on RV64.
* lib/linux/riscv64-mes-gcc/syscall.c: Same.
---
include/linux/syscall.h | 1 +
lib/linux/riscv64-mes-gcc/syscall.c | 31 +++++++++++++++++++++++++++++
2 files changed, 32 insertions(+)
diff --git a/include/linux/syscall.h b/include/linux/syscall.h
index
0af5fd70180c608eb73cd4367e638d9bd7a1cd5e..5dc149239e4cb03712e7ba343fd29f9be410a7a2
100644
--- a/include/linux/syscall.h
+++ b/include/linux/syscall.h
@@ -26,6 +26,7 @@ long _sys_call1 (long sys_call, long one);
long _sys_call2 (long sys_call, long one, long two);
long _sys_call3 (long sys_call, long one, long two, long three);
long _sys_call4 (long sys_call, long one, long two, long three, long four);
+long _sys_call5 (long sys_call, long one, long two, long three, long four,
long five);
long _sys_call6 (long sys_call, long one, long two, long three, long four,
long five, long six);
#endif //__MES_SYSCALL_H
diff --git a/lib/linux/riscv64-mes-gcc/syscall.c
b/lib/linux/riscv64-mes-gcc/syscall.c
index
b9006a495492718b137f00a1465b3d6026659de3..45d679c9ceeb3751d7bc2f3e408eb89984222b96
100644
--- a/lib/linux/riscv64-mes-gcc/syscall.c
+++ b/lib/linux/riscv64-mes-gcc/syscall.c
@@ -93,6 +93,23 @@ __sys_call4 (long sys_call, long one, long two, long three,
long four)
);
return __a0;
}
+
+long
+__sys_call5 (long sys_call, long one, long two, long three, long four, long
five)
+{
+ register long __a7 asm ("a7") = sys_call;
+ register long __a0 asm ("a0") = one;
+ register long __a1 asm ("a1") = two;
+ register long __a2 asm ("a2") = three;
+ register long __a3 asm ("a3") = four;
+ register long __a4 asm ("a4") = five;
+ asm volatile (
+ "ecall\n\t"
+ : "+r" (__a0)
+ : "r" (__a7), "r" (__a1), "r" (__a2), "r" (__a3), "r" (__a4)
+ );
+ return __a0;
+}
// *INDENT-ON*
long
@@ -164,3 +181,17 @@ _sys_call4 (long sys_call, long one, long two, long three,
long four)
errno = 0;
return r;
}
+
+long
+_sys_call5 (long sys_call, long one, long two, long three, long four, long
five)
+{
+ long r = __sys_call5 (sys_call, one, two, three, four, five);
+ if (r < 0)
+ {
+ errno = -r;
+ r = -1;
+ }
+ else
+ errno = 0;
+ return r;
+}
--
2.27.0
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH 09/16] lib: Add _sys_call_5 for Linux RV64.,
W. J. van der Laan <=