| Index: sandbox/linux/seccomp-bpf/linux_seccomp.h
|
| diff --git a/sandbox/linux/seccomp-bpf/linux_seccomp.h b/sandbox/linux/seccomp-bpf/linux_seccomp.h
|
| index 1716655f1f35e6f56c0eeecf3382a10bf67366de..4dd306ff042b1762971abefaa21ac46ac3fc0e1b 100644
|
| --- a/sandbox/linux/seccomp-bpf/linux_seccomp.h
|
| +++ b/sandbox/linux/seccomp-bpf/linux_seccomp.h
|
| @@ -42,6 +42,9 @@
|
| #ifndef EM_MIPS
|
| #define EM_MIPS 8
|
| #endif
|
| +#ifndef EM_AARCH64
|
| +#define EM_AARCH64 183
|
| +#endif
|
|
|
| #ifndef __AUDIT_ARCH_64BIT
|
| #define __AUDIT_ARCH_64BIT 0x80000000
|
| @@ -61,6 +64,9 @@
|
| #ifndef AUDIT_ARCH_MIPSEL
|
| #define AUDIT_ARCH_MIPSEL (EM_MIPS|__AUDIT_ARCH_LE)
|
| #endif
|
| +#ifndef AUDIT_ARCH_AARCH64
|
| +#define AUDIT_ARCH_AARCH64 (EM_AARCH64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
|
| +#endif
|
|
|
| // For prctl.h
|
| #ifndef PR_SET_SECCOMP
|
| @@ -354,6 +360,51 @@ struct regs_struct {
|
| #define SECCOMP_PT_PARM3(_regs) (_regs).REG_a2
|
| #define SECCOMP_PT_PARM4(_regs) (_regs).REG_a3
|
|
|
| +#elif defined(__aarch64__)
|
| +struct regs_struct {
|
| + unsigned long long regs[31];
|
| + unsigned long long sp;
|
| + unsigned long long pc;
|
| + unsigned long long pstate;
|
| +};
|
| +
|
| +#define MIN_SYSCALL 0u
|
| +#define MAX_PUBLIC_SYSCALL 279u
|
| +#define MAX_SYSCALL MAX_PUBLIC_SYSCALL
|
| +#define SECCOMP_ARCH AUDIT_ARCH_AARCH64
|
| +
|
| +#define SECCOMP_REG(_ctx, _reg) ((_ctx)->uc_mcontext.regs[_reg])
|
| +
|
| +#define SECCOMP_RESULT(_ctx) SECCOMP_REG(_ctx, 0)
|
| +#define SECCOMP_SYSCALL(_ctx) SECCOMP_REG(_ctx, 8)
|
| +#define SECCOMP_IP(_ctx) (_ctx)->uc_mcontext.pc
|
| +#define SECCOMP_PARM1(_ctx) SECCOMP_REG(_ctx, 0)
|
| +#define SECCOMP_PARM2(_ctx) SECCOMP_REG(_ctx, 1)
|
| +#define SECCOMP_PARM3(_ctx) SECCOMP_REG(_ctx, 2)
|
| +#define SECCOMP_PARM4(_ctx) SECCOMP_REG(_ctx, 3)
|
| +#define SECCOMP_PARM5(_ctx) SECCOMP_REG(_ctx, 4)
|
| +#define SECCOMP_PARM6(_ctx) SECCOMP_REG(_ctx, 5)
|
| +
|
| +#define SECCOMP_NR_IDX (offsetof(struct arch_seccomp_data, nr))
|
| +#define SECCOMP_ARCH_IDX (offsetof(struct arch_seccomp_data, arch))
|
| +#define SECCOMP_IP_MSB_IDX \
|
| + (offsetof(struct arch_seccomp_data, instruction_pointer) + 4)
|
| +#define SECCOMP_IP_LSB_IDX \
|
| + (offsetof(struct arch_seccomp_data, instruction_pointer) + 0)
|
| +#define SECCOMP_ARG_MSB_IDX(nr) \
|
| + (offsetof(struct arch_seccomp_data, args) + 8 * (nr) + 4)
|
| +#define SECCOMP_ARG_LSB_IDX(nr) \
|
| + (offsetof(struct arch_seccomp_data, args) + 8 * (nr) + 0)
|
| +
|
| +#define SECCOMP_PT_RESULT(_regs) (_regs).regs[0]
|
| +#define SECCOMP_PT_SYSCALL(_regs) (_regs).regs[8]
|
| +#define SECCOMP_PT_IP(_regs) (_regs).pc
|
| +#define SECCOMP_PT_PARM1(_regs) (_regs).regs[0]
|
| +#define SECCOMP_PT_PARM2(_regs) (_regs).regs[1]
|
| +#define SECCOMP_PT_PARM3(_regs) (_regs).regs[2]
|
| +#define SECCOMP_PT_PARM4(_regs) (_regs).regs[3]
|
| +#define SECCOMP_PT_PARM5(_regs) (_regs).regs[4]
|
| +#define SECCOMP_PT_PARM6(_regs) (_regs).regs[5]
|
| #else
|
| #error Unsupported target platform
|
|
|
|
|