blob: 2e60313c74668ad9a25c6a584358f0d84c58fe05 [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 *
6 * ARCH_NR #define's.
7 */
8
9#ifndef ARCH_H
10#define ARCH_H
11
12#include <linux/audit.h>
13
Luis Hector Chavez06862d62018-11-02 19:07:55 -070014/* clang-format off */
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070015#if defined(__i386__)
16# define ARCH_NR AUDIT_ARCH_I386
Luis Hector Chavez06862d62018-11-02 19:07:55 -070017# define ARCH_NAME "x86"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070018#elif defined(__x86_64__)
19# define ARCH_NR AUDIT_ARCH_X86_64
Luis Hector Chavez06862d62018-11-02 19:07:55 -070020# define ARCH_NAME "x86_64"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070021#elif defined(__arm__)
22/*
23 * <linux/audit.h> includes <linux/elf-em.h>, which does not define EM_ARM.
24 * <linux/elf.h> only includes <asm/elf.h> if we're in the kernel.
25 */
26# ifndef EM_ARM
27# define EM_ARM 40
28# endif
29# define ARCH_NR AUDIT_ARCH_ARM
Luis Hector Chavez06862d62018-11-02 19:07:55 -070030# define ARCH_NAME "arm"
Jorge Lucangeli Obesa21c8fc2015-07-15 16:22:34 -070031#elif defined(__aarch64__)
32# define ARCH_NR AUDIT_ARCH_AARCH64
Luis Hector Chavez06862d62018-11-02 19:07:55 -070033# define ARCH_NAME "arm64"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070034#elif defined(__hppa__)
35# define ARCH_NR AUDIT_ARCH_PARISC
Luis Hector Chavez06862d62018-11-02 19:07:55 -070036# define ARCH_NAME "parisc"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070037#elif defined(__ia64__)
38# define ARCH_NR AUDIT_ARCH_IA64
Luis Hector Chavez06862d62018-11-02 19:07:55 -070039# define ARCH_NAME "ia64"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070040#elif defined(__mips__)
41# if defined(__mips64)
42# if defined(__MIPSEB__)
43# define ARCH_NR AUDIT_ARCH_MIPS64
Luis Hector Chavez06862d62018-11-02 19:07:55 -070044# define ARCH_NAME "mips64"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070045# else
46# define ARCH_NR AUDIT_ARCH_MIPSEL64
Luis Hector Chavez06862d62018-11-02 19:07:55 -070047# define ARCH_NAME "mipsel64"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070048# endif
49# else
50# if defined(__MIPSEB__)
51# define ARCH_NR AUDIT_ARCH_MIPS
Luis Hector Chavez06862d62018-11-02 19:07:55 -070052# define ARCH_NAME "mips"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070053# else
54# define ARCH_NR AUDIT_ARCH_MIPSEL
Luis Hector Chavez06862d62018-11-02 19:07:55 -070055# define ARCH_NAME "mipsel"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070056# endif
57# endif
58#elif defined(__powerpc64__)
59# define ARCH_NR AUDIT_ARCH_PPC64
Luis Hector Chavez06862d62018-11-02 19:07:55 -070060# define ARCH_NAME "ppc64"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070061#elif defined(__powerpc__)
62# define ARCH_NR AUDIT_ARCH_PPC
Luis Hector Chavez06862d62018-11-02 19:07:55 -070063# define ARCH_NAME "ppc"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070064#elif defined(__s390x__)
65# define ARCH_NR AUDIT_ARCH_S390X
Luis Hector Chavez06862d62018-11-02 19:07:55 -070066# define ARCH_NAME "s390x"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070067#elif defined(__s390__)
68# define ARCH_NR AUDIT_ARCH_S390
Luis Hector Chavez06862d62018-11-02 19:07:55 -070069# define ARCH_NAME "s390"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070070#elif defined(__sparc__)
71# if defined(__arch64__)
72# define AUDIT_ARCH_SPARC64
Luis Hector Chavez06862d62018-11-02 19:07:55 -070073# define ARCH_NAME "sparc64"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070074# else
75# define AUDIT_ARCH_SPARC
Luis Hector Chavez06862d62018-11-02 19:07:55 -070076# define ARCH_NAME "sparc"
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070077# endif
78#else
79# error "AUDIT_ARCH value unavailable"
80#endif
Luis Hector Chavez06862d62018-11-02 19:07:55 -070081/* clang-format on */
Jorge Lucangeli Obes8b488a52014-09-26 14:40:37 -070082
83#endif /* ARCH_H */