There are functions which have unused arguments for different architectures. Separate the code for each architecture and move #ifdef arch outside these functions.
Signed-off-by: Muhammad Usama Anjum usama.anjum@collabora.com --- tools/testing/selftests/mm/mseal_test.c | 8 +++++-- .../selftests/mm/pkey_sighandler_tests.c | 21 ++++++++++++++++--- 2 files changed, 24 insertions(+), 5 deletions(-)
diff --git a/tools/testing/selftests/mm/mseal_test.c b/tools/testing/selftests/mm/mseal_test.c index 34c042da4de27..af49f72e1f465 100644 --- a/tools/testing/selftests/mm/mseal_test.c +++ b/tools/testing/selftests/mm/mseal_test.c @@ -131,17 +131,21 @@ static unsigned int __read_pkey_reg(void) return pkey_reg; }
+#if defined(__i386__) || defined(__x86_64__) /* arch */ static void __write_pkey_reg(u64 pkey_reg) { -#if defined(__i386__) || defined(__x86_64__) /* arch */ unsigned int eax = pkey_reg; unsigned int ecx = 0; unsigned int edx = 0;
asm volatile(".byte 0x0f,0x01,0xef\n\t" : : "a" (eax), "c" (ecx), "d" (edx)); -#endif } +#else +static void __write_pkey_reg(u64 __unused pkey_reg) +{ +} +#endif
static unsigned long pkey_bit_position(int pkey) { diff --git a/tools/testing/selftests/mm/pkey_sighandler_tests.c b/tools/testing/selftests/mm/pkey_sighandler_tests.c index 638477494ff3a..68f106d0876a7 100644 --- a/tools/testing/selftests/mm/pkey_sighandler_tests.c +++ b/tools/testing/selftests/mm/pkey_sighandler_tests.c @@ -41,11 +41,12 @@ static siginfo_t siginfo = {0}; * syscall will attempt to access the PLT in order to call a library function * which is protected by MPK 0 which we don't have access to. */ +#ifdef __x86_64__ static __always_inline long syscall_raw(long n, long a1, long a2, long a3, long a4, long a5, long a6) { unsigned long ret; -#ifdef __x86_64__ + register long r10 asm("r10") = a4; register long r8 asm("r8") = a5; register long r9 asm("r9") = a6; @@ -53,12 +54,26 @@ long syscall_raw(long n, long a1, long a2, long a3, long a4, long a5, long a6) : "=a"(ret) : "a"(n), "D"(a1), "S"(a2), "d"(a3), "r"(r10), "r"(r8), "r"(r9) : "rcx", "r11", "memory"); + return ret; +} #elif defined __i386__ +static __always_inline +long syscall_raw(long n, long a1, long a2, long a3, long a4, long a5, long __unused a6) +{ + unsigned long ret; + asm volatile ("int $0x80" : "=a"(ret) : "a"(n), "b"(a1), "c"(a2), "d"(a3), "S"(a4), "D"(a5) : "memory"); + return ret; +} #elif defined __aarch64__ +static __always_inline +long syscall_raw(long n, long a1, long a2, long a3, long a4, long a5, long a6) +{ + unsigned long ret; + register long x0 asm("x0") = a1; register long x1 asm("x1") = a2; register long x2 asm("x2") = a3; @@ -71,11 +86,11 @@ long syscall_raw(long n, long a1, long a2, long a3, long a4, long a5, long a6) : "r"(x0), "r"(x1), "r"(x2), "r"(x3), "r"(x4), "r"(x5), "r"(x8) : "memory"); ret = x0; + return ret; +} #else # error syscall_raw() not implemented #endif - return ret; -}
static inline long clone_raw(unsigned long flags, void *stack, int *parent_tid, int *child_tid)