From 7a2eee56607218d017af8d26c2c41dba83629708 Mon Sep 17 00:00:00 2001 From: "Andrew G. Morgan" Date: Thu, 17 Apr 2025 20:20:09 -0700 Subject: [PATCH] First attempt at PSX support for microblaze, arc and openrisc. I found some confusing macrology for openrisc. I'm optimistic that this is recognized with the __or1k__ gcc macro. See for details: https://bugzilla.kernel.org/show_bug.cgi?id=219915 Signed-off-by: Andrew G. Morgan Upstream: https://git.kernel.org/pub/scm/libs/libcap/libcap.git/commit/?id=7a2eee56607218d017af8d26c2c41dba83629708 Signed-off-by: Thomas Petazzoni --- psx/psx_calls.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/psx/psx_calls.c b/psx/psx_calls.c index 9662fbd..8195964 100644 --- a/psx/psx_calls.c +++ b/psx/psx_calls.c @@ -48,7 +48,8 @@ || defined(__mips__) || defined(__loongarch__) \ || defined(__powerpc__) || defined(__s390__) || defined(__riscv) \ || defined(__alpha__) || defined(__hppa__) || defined(__sh__) \ - || defined(__m68k__) || defined(__sparc__) + || defined(__m68k__) || defined(__sparc__) || defined(__arc__) \ + || defined(__microblaze__) || defined(__or1k__) #undef _NSIG #undef _NSIG_BPW @@ -69,7 +70,8 @@ #if defined(__x86_64__) || defined(__i386__) \ || defined(__arm__) \ - || defined(__powerpc__) + || defined(__powerpc__) \ + || defined(__arc__) /* field used */ #define SA_RESTORER 0x04000000 #endif /* architectures that use SA_RESTORER */ @@ -201,6 +203,8 @@ static void psx_posix_syscall_actor(int signum, siginfo_t *info, void *ignore) { __asm__ __volatile__("\npsx_restorer:\n\tmov r7,#173\n\tswi 0\n"); #elif defined(__powerpc__) __asm__ __volatile__("\npsx_restorer:\n\tli 0, 172\n\tsc\n"); +#elif defined(__arc__) + __asm__ __volatile__("\npsx_restorer:\n\tmov r8, 139\n\ttrap_s 0\n"); #else #error "unsupported architecture - https://bugzilla.kernel.org/show_bug.cgi?id=219687" #endif /* supported architectures */ -- 2.49.0