According to manpage the syscall nr is stored in r0
and return value in r3 for powerpc. Define it so we
can use seccomp and utrace on powerpc.

Signed-off-by: Wojciech Dubowik <wojciech.dubo...@neratec.com>
---
 jail/seccomp-bpf.h | 3 +++
 trace/trace.c      | 3 +++
 2 files changed, 6 insertions(+)

diff --git a/jail/seccomp-bpf.h b/jail/seccomp-bpf.h
index fc3ffe7..fd6b3e2 100644
--- a/jail/seccomp-bpf.h
+++ b/jail/seccomp-bpf.h
@@ -81,6 +81,9 @@ struct seccomp_data {
 # else
 #  define ARCH_NR      AUDIT_ARCH_ARMEB
 # endif
+#elif defined(__PPC__)
+# define REG_SYSCALL   regs.gpr[0]
+# define ARCH_NR       AUDIT_ARCH_PPC
 #else
 # warning "Platform does not support seccomp filter yet"
 # define REG_SYSCALL   0
diff --git a/trace/trace.c b/trace/trace.c
index 665c22e..78b99dd 100644
--- a/trace/trace.c
+++ b/trace/trace.c
@@ -58,6 +58,9 @@
 # if defined(__ARM_EABI__)
 # define reg_retval_nr _offsetof(struct user, regs.uregs[0])
 # endif
+#elif defined(__PPC__)
+#define reg_syscall_nr _offsetof(struct user, regs.gpr[0])
+#define reg_retval_nr  _offsetof(struct user, regs.gpr[3])
 #else
 #error tracing is not supported on this architecture
 #endif
-- 
2.17.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to