blob: e02783177f0bcd2d19061b56d08796936f5988d6 [file] [log] [blame]
/* arch.h
* Copyright 2014 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
* MINIJAIL_ARCH_NR #define's.
*/
#ifndef ARCH_H
#define ARCH_H
#include <linux/audit.h>
#include <stdint.h>
/* clang-format off */
#if defined(__i386__)
# define MINIJAIL_ARCH_NR AUDIT_ARCH_I386
# define MINIJAIL_ARCH_NAME "x86"
#elif defined(__x86_64__)
# define MINIJAIL_ARCH_NR AUDIT_ARCH_X86_64
# define MINIJAIL_ARCH_NAME "x86_64"
#elif defined(__arm__)
/*
* <linux/audit.h> includes <linux/elf-em.h>, which does not define EM_ARM.
* <linux/elf.h> only includes <asm/elf.h> if we're in the kernel.
*/
# ifndef EM_ARM
# define EM_ARM 40
# endif
# define MINIJAIL_ARCH_NR AUDIT_ARCH_ARM
# define MINIJAIL_ARCH_NAME "arm"
#elif defined(__aarch64__)
# define MINIJAIL_ARCH_NR AUDIT_ARCH_AARCH64
# define MINIJAIL_ARCH_NAME "arm64"
#elif defined(__hppa__)
# define MINIJAIL_ARCH_NR AUDIT_ARCH_PARISC
# define MINIJAIL_ARCH_NAME "parisc"
#elif defined(__ia64__)
# define MINIJAIL_ARCH_NR AUDIT_ARCH_IA64
# define MINIJAIL_ARCH_NAME "ia64"
#elif defined(__mips__)
# if defined(__mips64)
# if defined(__MIPSEB__)
# define MINIJAIL_ARCH_NR AUDIT_ARCH_MIPS64
# define MINIJAIL_ARCH_NAME "mips64"
# else
# define MINIJAIL_ARCH_NR AUDIT_ARCH_MIPSEL64
# define MINIJAIL_ARCH_NAME "mipsel64"
# endif
# else
# if defined(__MIPSEB__)
# define MINIJAIL_ARCH_NR AUDIT_ARCH_MIPS
# define MINIJAIL_ARCH_NAME "mips"
# else
# define MINIJAIL_ARCH_NR AUDIT_ARCH_MIPSEL
# define MINIJAIL_ARCH_NAME "mipsel"
# endif
# endif
#elif defined(__powerpc64__)
# define MINIJAIL_ARCH_NR AUDIT_ARCH_PPC64
# define MINIJAIL_ARCH_NAME "ppc64"
#elif defined(__powerpc__)
# define MINIJAIL_ARCH_NR AUDIT_ARCH_PPC
# define MINIJAIL_ARCH_NAME "ppc"
#elif defined(__s390x__)
# define MINIJAIL_ARCH_NR AUDIT_ARCH_S390X
# define MINIJAIL_ARCH_NAME "s390x"
#elif defined(__s390__)
# define MINIJAIL_ARCH_NR AUDIT_ARCH_S390
# define MINIJAIL_ARCH_NAME "s390"
#elif defined(__sparc__)
# if defined(__arch64__)
# define AUDIT_ARCH_SPARC64
# define MINIJAIL_ARCH_NAME "sparc64"
# else
# define AUDIT_ARCH_SPARC
# define MINIJAIL_ARCH_NAME "sparc"
# endif
#else
# error "AUDIT_ARCH value unavailable"
#endif
/* clang-format on */
#define MINIJAIL_ARCH_BITS sizeof(uintptr_t) * 8
#endif /* ARCH_H */