35 lines
756 B
Diff
35 lines
756 B
Diff
--- src/lib/sandbox/sandbox.c
|
|
+++ src/lib/sandbox/sandbox.c
|
|
@@ -115,6 +115,16 @@
|
|
#define REG_SYSCALL 8
|
|
#define M_SYSCALL regs[REG_SYSCALL]
|
|
|
|
+#elif defined(__powerpc64__)
|
|
+
|
|
+#define REG_SYSCALL 0
|
|
+#define M_SYSCALL gp_regs[REG_SYSCALL]
|
|
+
|
|
+#elif defined(__powerpc__)
|
|
+
|
|
+#define REG_SYSCALL 0
|
|
+#define M_SYSCALL gregs[REG_SYSCALL]
|
|
+
|
|
#endif /* defined(__i386__) || ... */
|
|
|
|
#ifdef M_SYSCALL
|
|
@@ -1654,7 +1664,15 @@
|
|
static int
|
|
get_syscall_from_ucontext(const ucontext_t *ctx)
|
|
{
|
|
+#if defined(__powerpc__) && !defined(__powerpc64__)
|
|
+#if defined(__GLIBC__)
|
|
+ return (int) ctx->uc_mcontext.uc_regs->M_SYSCALL;
|
|
+#else
|
|
+ return (int) ctx->uc_regs->M_SYSCALL;
|
|
+#endif
|
|
+#else
|
|
return (int) ctx->uc_mcontext.M_SYSCALL;
|
|
+#endif
|
|
}
|
|
#else
|
|
static const char *
|