blob: e02783177f0bcd2d19061b56d08796936f5988d6 [file] [log] [blame]
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -07001/* arch.h
2 * Copyright 2014 The Chromium OS Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file.
5 *
Luis Hector Chavezf6f26252019-12-13 08:04:50 -08006 * MINIJAIL_ARCH_NR #define's.
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -07007 */
8
9#ifndef ARCH_H
10#define ARCH_H
11
12#include <linux/audit.h>
Luis Hector Chavezf6f26252019-12-13 08:04:50 -080013#include <stdint.h>
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070014
Luis Hector Chavez06862d62018-11-02 19:07:55 -070015/* clang-format off */
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070016#if defined(__i386__)
Luis Hector Chavezf6f26252019-12-13 08:04:50 -080017# define MINIJAIL_ARCH_NR AUDIT_ARCH_I386
18# define MINIJAIL_ARCH_NAME "x86"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070019#elif defined(__x86_64__)
Luis Hector Chavezf6f26252019-12-13 08:04:50 -080020# define MINIJAIL_ARCH_NR AUDIT_ARCH_X86_64
21# define MINIJAIL_ARCH_NAME "x86_64"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070022#elif defined(__arm__)
23/*
24 * <linux/audit.h> includes <linux/elf-em.h>, which does not define EM_ARM.
25 * <linux/elf.h> only includes <asm/elf.h> if we're in the kernel.
26 */
27# ifndef EM_ARM
28# define EM_ARM 40
29# endif
Luis Hector Chavezf6f26252019-12-13 08:04:50 -080030# define MINIJAIL_ARCH_NR AUDIT_ARCH_ARM
31# define MINIJAIL_ARCH_NAME "arm"
Jorge Lucangeli Obesa21c8fc2015-07-15 16:22:34 -070032#elif defined(__aarch64__)
Luis Hector Chavezf6f26252019-12-13 08:04:50 -080033# define MINIJAIL_ARCH_NR AUDIT_ARCH_AARCH64
34# define MINIJAIL_ARCH_NAME "arm64"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070035#elif defined(__hppa__)
Luis Hector Chavezf6f26252019-12-13 08:04:50 -080036# define MINIJAIL_ARCH_NR AUDIT_ARCH_PARISC
37# define MINIJAIL_ARCH_NAME "parisc"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070038#elif defined(__ia64__)
Luis Hector Chavezf6f26252019-12-13 08:04:50 -080039# define MINIJAIL_ARCH_NR AUDIT_ARCH_IA64
40# define MINIJAIL_ARCH_NAME "ia64"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070041#elif defined(__mips__)
42# if defined(__mips64)
43# if defined(__MIPSEB__)
Luis Hector Chavezf6f26252019-12-13 08:04:50 -080044# define MINIJAIL_ARCH_NR AUDIT_ARCH_MIPS64
45# define MINIJAIL_ARCH_NAME "mips64"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070046# else
Luis Hector Chavezf6f26252019-12-13 08:04:50 -080047# define MINIJAIL_ARCH_NR AUDIT_ARCH_MIPSEL64
48# define MINIJAIL_ARCH_NAME "mipsel64"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070049# endif
50# else
51# if defined(__MIPSEB__)
Luis Hector Chavezf6f26252019-12-13 08:04:50 -080052# define MINIJAIL_ARCH_NR AUDIT_ARCH_MIPS
53# define MINIJAIL_ARCH_NAME "mips"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070054# else
Luis Hector Chavezf6f26252019-12-13 08:04:50 -080055# define MINIJAIL_ARCH_NR AUDIT_ARCH_MIPSEL
56# define MINIJAIL_ARCH_NAME "mipsel"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070057# endif
58# endif
59#elif defined(__powerpc64__)
Luis Hector Chavezf6f26252019-12-13 08:04:50 -080060# define MINIJAIL_ARCH_NR AUDIT_ARCH_PPC64
61# define MINIJAIL_ARCH_NAME "ppc64"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070062#elif defined(__powerpc__)
Luis Hector Chavezf6f26252019-12-13 08:04:50 -080063# define MINIJAIL_ARCH_NR AUDIT_ARCH_PPC
64# define MINIJAIL_ARCH_NAME "ppc"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070065#elif defined(__s390x__)
Luis Hector Chavezf6f26252019-12-13 08:04:50 -080066# define MINIJAIL_ARCH_NR AUDIT_ARCH_S390X
67# define MINIJAIL_ARCH_NAME "s390x"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070068#elif defined(__s390__)
Luis Hector Chavezf6f26252019-12-13 08:04:50 -080069# define MINIJAIL_ARCH_NR AUDIT_ARCH_S390
70# define MINIJAIL_ARCH_NAME "s390"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070071#elif defined(__sparc__)
72# if defined(__arch64__)
73# define AUDIT_ARCH_SPARC64
Luis Hector Chavezf6f26252019-12-13 08:04:50 -080074# define MINIJAIL_ARCH_NAME "sparc64"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070075# else
76# define AUDIT_ARCH_SPARC
Luis Hector Chavezf6f26252019-12-13 08:04:50 -080077# define MINIJAIL_ARCH_NAME "sparc"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070078# endif
79#else
80# error "AUDIT_ARCH value unavailable"
81#endif
Luis Hector Chavez06862d62018-11-02 19:07:55 -070082/* clang-format on */
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070083
Luis Hector Chavezf6f26252019-12-13 08:04:50 -080084#define MINIJAIL_ARCH_BITS sizeof(uintptr_t) * 8
85
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070086#endif /* ARCH_H */