--- v8
+++ v6
@@ -1,437 +1,212 @@
From: Andrew Pinski <apinski@cavium.com>
-In this patchset ILP32 ABI support is added. Additionally to AARCH32,
-which is binary-compatible with ARM, ILP32 is (mostly) ABI-compatible.
+Defines the macros which allow the signal structures to be the same between
+ILP32 and LP64.
->From now, AARCH32_EL0 (former COMPAT) config option means the support of
-AARCH32 userspace, and ARM64_ILP32 - support of ILP32 ABI (see following
-patches), and COMPAT indicates that one of them or both is enabled.
-
-Where needed, CONFIG_COMPAT is changed over to use CONFIG_AARCH32_EL0 instead
-
-Reviewed-by: David Daney <ddaney@caviumnetworks.com>
-Signed-off-by: Andrew Pinski <Andrew.Pinski@caviumnetworks.com>
-Signed-off-by: Yury Norov <ynorov@caviumnetworks.com>
Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Signed-off-by: Christoph Muellner <christoph.muellner@theobroma-systems.com>
-Signed-off-by: Bamvor Jian Zhang <bamvor.zhangjian@linaro.org>
+Signed-off-by: Yury Norov <ynorov@caviumnetworks.com>
+Signed-off-by: Andrew Pinski <Andrew.Pinski@caviumnetworks.com>
+Reviewed-by: David Daney <david.daney@cavium.com>
---
- arch/arm64/Kconfig | 9 +++++++--
- arch/arm64/include/asm/fpsimd.h | 2 +-
- arch/arm64/include/asm/hwcap.h | 4 ++--
- arch/arm64/include/asm/processor.h | 6 +++---
- arch/arm64/include/asm/ptrace.h | 2 +-
- arch/arm64/include/asm/seccomp.h | 2 +-
- arch/arm64/include/asm/signal32.h | 6 ++++--
- arch/arm64/include/asm/unistd.h | 2 +-
- arch/arm64/kernel/Makefile | 2 +-
- arch/arm64/kernel/asm-offsets.c | 2 +-
- arch/arm64/kernel/cpufeature.c | 8 ++++----
- arch/arm64/kernel/cpuinfo.c | 8 ++++----
- arch/arm64/kernel/entry.S | 6 +++---
- arch/arm64/kernel/head.S | 2 +-
- arch/arm64/kernel/ptrace.c | 8 ++++----
- arch/arm64/kernel/traps.c | 2 +-
- arch/arm64/kernel/vdso.c | 4 ++--
- drivers/clocksource/arm_arch_timer.c | 2 +-
- 18 files changed, 42 insertions(+), 35 deletions(-)
+ arch/arm64/include/uapi/asm/siginfo.h | 21 +++++++++++++++++++++
+ arch/arm64/include/uapi/asm/signal.h | 31 +++++++++++++++++++++++++++++++
+ include/uapi/asm-generic/siginfo.h | 17 +++++++++++++----
+ include/uapi/asm-generic/signal.h | 27 +++++++++++++++++++++++----
+ 4 files changed, 88 insertions(+), 8 deletions(-)
-diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
-index 30cadd9a1dab..8713a2807582 100644
---- a/arch/arm64/Kconfig
-+++ b/arch/arm64/Kconfig
-@@ -407,7 +407,7 @@ config ARM64_ERRATUM_834220
-
- config ARM64_ERRATUM_845719
- bool "Cortex-A53: 845719: a load might read incorrect data"
-- depends on COMPAT
-+ depends on AARCH32_EL0
- default y
- help
- This option adds an alternative code sequence to work around ARM
-@@ -800,7 +800,7 @@ config FORCE_MAX_ZONEORDER
-
- menuconfig ARMV8_DEPRECATED
- bool "Emulate deprecated/obsolete ARMv8 instructions"
-- depends on COMPAT
-+ depends on AARCH32_EL0
- help
- Legacy software support may require certain instructions
- that have been deprecated or obsoleted in the architecture.
-@@ -1078,7 +1078,12 @@ menu "Userspace binary formats"
- source "fs/Kconfig.binfmt"
-
- config COMPAT
-+ def_bool y
-+ depends on AARCH32_EL0
-+
-+config AARCH32_EL0
- bool "Kernel support for 32-bit EL0"
-+ def_bool y
- depends on ARM64_4K_PAGES || EXPERT
- select COMPAT_BINFMT_ELF if BINFMT_ELF
- select HAVE_UID16
-diff --git a/arch/arm64/include/asm/fpsimd.h b/arch/arm64/include/asm/fpsimd.h
-index 50f559f574fe..63b19f128c6c 100644
---- a/arch/arm64/include/asm/fpsimd.h
-+++ b/arch/arm64/include/asm/fpsimd.h
-@@ -52,7 +52,7 @@ struct fpsimd_partial_state {
+diff --git a/arch/arm64/include/uapi/asm/siginfo.h b/arch/arm64/include/uapi/asm/siginfo.h
+index 5a74a08..d9ac7d4 100644
+--- a/arch/arm64/include/uapi/asm/siginfo.h
++++ b/arch/arm64/include/uapi/asm/siginfo.h
+@@ -1,5 +1,6 @@
+ /*
+ * Copyright (C) 2012 ARM Ltd.
++ * Copyright (C) 2015 Cavium Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+@@ -18,6 +19,26 @@
+
+ #define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int))
+
++#ifdef __ILP32__
++# ifdef __AARCH64EB__
++# define __SIGINFO_INNER(type, field) \
++ int __pad#field; \
++ type field
++# else
++# define __SIGINFO_INNER(type, field) \
++ type field; \
++ int __pad#field
++# endif
++
++# undef __SIGINFO_VOIDPOINTER
++# define __SIGINFO_VOIDPOINTER(field) \
++ __SIGINFO_INNER(void __user*, field)
++# undef __SIGINFO_BAND
++
++# define __SIGINFO_BAND(field) \
++ __SIGINFO_INNER(long, field)
++#endif
++
+ #include <asm-generic/siginfo.h>
+
+ #endif
+diff --git a/arch/arm64/include/uapi/asm/signal.h b/arch/arm64/include/uapi/asm/signal.h
+index 991bf5d..5053af4 100644
+--- a/arch/arm64/include/uapi/asm/signal.h
++++ b/arch/arm64/include/uapi/asm/signal.h
+@@ -22,6 +22,37 @@
+ #define MINSIGSTKSZ 5120
+ #define SIGSTKSZ 16384
+
++/* For ILP32, sigset should be the same size fields as LP64 so use
++ unsigned long long. */
++#ifdef __ILP32__
++#define __SIGSET_INNER_TYPE __extension__ unsigned long long
++#define _NSIG_BPW 64
++
++# ifdef __AARCH64EB__
++# define __SIGNAL_INNER(type, field) \
++ __extension__ struct { \
++ int __pad_##field; \
++ type field; \
++ } __attribute__((aligned(8)))
++# else
++# define __SIGNAL_INNER(type, field) \
++ __extension__ struct { \
++ type field; \
++ int __pad_##field; \
++ } __attribute__((aligned(8)))
++# endif
++
++# define __SIGACTION_HANDLER(field) \
++ __SIGNAL_INNER(__sighandler_t, field)
++
++#define __SIGACTION_FLAGS(field) \
++ __extension__ unsigned long long field
++
++#define __SIGACTION_RESTORER(field) \
++ __SIGNAL_INNER(__sigrestore_t, field)
++
++#endif
++
+ #include <asm-generic/signal.h>
+
+ #endif
+diff --git a/include/uapi/asm-generic/siginfo.h b/include/uapi/asm-generic/siginfo.h
+index 1e35520..be640a9 100644
+--- a/include/uapi/asm-generic/siginfo.h
++++ b/include/uapi/asm-generic/siginfo.h
+@@ -4,9 +4,17 @@
+ #include <linux/compiler.h>
+ #include <linux/types.h>
+
++#ifndef __SIGINFO_VOIDPOINTER
++#define __SIGINFO_VOIDPOINTER(field) void __user *field
++#endif
++
++#ifndef __SIGINFO_BAND
++#define __SIGINFO_BAND(field) __ARCH_SI_BAND_T field
++#endif
++
+ typedef union sigval {
+ int sival_int;
+- void __user *sival_ptr;
++ __SIGINFO_VOIDPOINTER(sival_ptr);
+ } sigval_t;
+
+ /*
+@@ -86,7 +94,7 @@ typedef struct siginfo {
+
+ /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
+ struct {
+- void __user *_addr; /* faulting insn/memory ref. */
++ __SIGINFO_VOIDPOINTER(_addr); /* faulting insn/memory ref. */
+ #ifdef __ARCH_SI_TRAPNO
+ int _trapno; /* TRAP # which caused the signal */
+ #endif
+@@ -99,13 +107,13 @@ typedef struct siginfo {
+
+ /* SIGPOLL */
+ struct {
+- __ARCH_SI_BAND_T _band; /* POLL_IN, POLL_OUT, POLL_MSG */
++ __SIGINFO_BAND(_band); /* POLL_IN, POLL_OUT, POLL_MSG */
+ int _fd;
+ } _sigpoll;
+
+ /* SIGSYS */
+ struct {
+- void __user *_call_addr; /* calling user insn */
++ __SIGINFO_VOIDPOINTER(_call_addr); /* calling user insn */
+ int _syscall; /* triggering system call number */
+ unsigned int _arch; /* AUDIT_ARCH_* of syscall */
+ } _sigsys;
+@@ -290,6 +298,7 @@ typedef struct sigevent {
+ int _pad[SIGEV_PAD_SIZE];
+ int _tid;
+
++ /* Note these two are handled only in userspace */
+ struct {
+ void (*_function)(sigval_t);
+ void *_attribute; /* really pthread_attr_t */
+diff --git a/include/uapi/asm-generic/signal.h b/include/uapi/asm-generic/signal.h
+index 3094618..92d8ce3 100644
+--- a/include/uapi/asm-generic/signal.h
++++ b/include/uapi/asm-generic/signal.h
+@@ -4,7 +4,9 @@
+ #include <linux/types.h>
+
+ #define _NSIG 64
++#ifndef _NSIG_BPW
+ #define _NSIG_BPW __BITS_PER_LONG
++#endif
+ #define _NSIG_WORDS (_NSIG / _NSIG_BPW)
+
+ #define SIGHUP 1
+@@ -85,9 +87,13 @@
+ #define SIGSTKSZ 8192
+ #endif
+
++#ifndef __SIGSET_INNER_TYPE
++#define __SIGSET_INNER_TYPE unsigned long
++#endif
++
+ #ifndef __ASSEMBLY__
+ typedef struct {
+- unsigned long sig[_NSIG_WORDS];
++ __SIGSET_INNER_TYPE sig[_NSIG_WORDS];
+ } sigset_t;
+
+ /* not actually used, but required for linux/syscalls.h */
+@@ -100,11 +106,24 @@ typedef unsigned long old_sigset_t;
+ #endif
+
+ #ifndef __KERNEL__
++
++#ifndef __SIGACTION_HANDLER
++#define __SIGACTION_HANDLER(field) __sighandler_t field
++#endif
++
++#ifndef __SIGACTION_FLAGS
++#define __SIGACTION_FLAGS(field) unsigned long field
++#endif
++
++#ifndef __SIGACTION_RESTORER
++#define __SIGACTION_RESTORER(field) __sigrestore_t field
++#endif
++
+ struct sigaction {
+- __sighandler_t sa_handler;
+- unsigned long sa_flags;
++ __SIGACTION_HANDLER(sa_handler);
++ __SIGACTION_FLAGS(sa_flags);
+ #ifdef SA_RESTORER
+- __sigrestore_t sa_restorer;
++ __SIGACTION_RESTORER(sa_restorer);
+ #endif
+ sigset_t sa_mask; /* mask last for extensibility */
};
-
-
--#if defined(__KERNEL__) && defined(CONFIG_COMPAT)
-+#if defined(__KERNEL__) && defined(CONFIG_AARCH32_EL0)
- /* Masks for extracting the FPSR and FPCR from the FPSCR */
- #define VFP_FPSCR_STAT_MASK 0xf800009f
- #define VFP_FPSCR_CTRL_MASK 0x07f79f00
-diff --git a/arch/arm64/include/asm/hwcap.h b/arch/arm64/include/asm/hwcap.h
-index 400b80b49595..2c7fc5d89813 100644
---- a/arch/arm64/include/asm/hwcap.h
-+++ b/arch/arm64/include/asm/hwcap.h
-@@ -46,7 +46,7 @@
- */
- #define ELF_HWCAP (elf_hwcap)
-
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_AARCH32_EL0
- #define COMPAT_ELF_HWCAP (compat_elf_hwcap)
- #define COMPAT_ELF_HWCAP2 (compat_elf_hwcap2)
- extern unsigned int compat_elf_hwcap, compat_elf_hwcap2;
-@@ -54,7 +54,7 @@ extern unsigned int compat_elf_hwcap, compat_elf_hwcap2;
-
- enum {
- CAP_HWCAP = 1,
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_AARCH32_EL0
- CAP_COMPAT_HWCAP,
- CAP_COMPAT_HWCAP2,
- #endif
-diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h
-index 9428b93fefb2..2bbbd33549c0 100644
---- a/arch/arm64/include/asm/processor.h
-+++ b/arch/arm64/include/asm/processor.h
-@@ -81,7 +81,7 @@ struct cpu_context {
- struct thread_struct {
- struct cpu_context cpu_context; /* cpu context */
- unsigned long tp_value; /* TLS register */
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_AARCH32_EL0
- unsigned long tp2_value;
- #endif
- struct fpsimd_state fpsimd_state;
-@@ -90,7 +90,7 @@ struct thread_struct {
- struct debug_info debug; /* debugging */
- };
-
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_AARCH32_EL0
- #define task_user_tls(t) \
- ({ \
- unsigned long *__tls; \
-@@ -121,7 +121,7 @@ static inline void start_thread(struct pt_regs *regs, unsigned long pc,
- regs->sp = sp;
- }
-
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_AARCH32_EL0
- static inline void compat_start_thread(struct pt_regs *regs, unsigned long pc,
- unsigned long sp)
- {
-diff --git a/arch/arm64/include/asm/ptrace.h b/arch/arm64/include/asm/ptrace.h
-index 11403fdd0a50..d668b3900b52 100644
---- a/arch/arm64/include/asm/ptrace.h
-+++ b/arch/arm64/include/asm/ptrace.h
-@@ -125,7 +125,7 @@ struct pt_regs {
-
- #define arch_has_single_step() (1)
-
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_AARCH32_EL0
- #define compat_thumb_mode(regs) \
- (((regs)->pstate & COMPAT_PSR_T_BIT))
- #else
-diff --git a/arch/arm64/include/asm/seccomp.h b/arch/arm64/include/asm/seccomp.h
-index c76fac979629..00ef0bf63230 100644
---- a/arch/arm64/include/asm/seccomp.h
-+++ b/arch/arm64/include/asm/seccomp.h
-@@ -13,7 +13,7 @@
-
- #include <asm/unistd.h>
-
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_AARCH32_EL0
- #define __NR_seccomp_read_32 __NR_compat_read
- #define __NR_seccomp_write_32 __NR_compat_write
- #define __NR_seccomp_exit_32 __NR_compat_exit
-diff --git a/arch/arm64/include/asm/signal32.h b/arch/arm64/include/asm/signal32.h
-index eeaa97559bab..e68fcce538e1 100644
---- a/arch/arm64/include/asm/signal32.h
-+++ b/arch/arm64/include/asm/signal32.h
-@@ -17,7 +17,9 @@
- #define __ASM_SIGNAL32_H
-
- #ifdef __KERNEL__
--#ifdef CONFIG_COMPAT
-+
-+#ifdef CONFIG_AARCH32_EL0
-+
- #include <linux/compat.h>
-
- #define AARCH32_KERN_SIGRET_CODE_OFFSET 0x500
-@@ -47,6 +49,6 @@ static inline int compat_setup_rt_frame(int usig, struct ksignal *ksig, sigset_t
- static inline void compat_setup_restart_syscall(struct pt_regs *regs)
- {
- }
--#endif /* CONFIG_COMPAT */
-+#endif /* CONFIG_AARCH32_EL0 */
- #endif /* __KERNEL__ */
- #endif /* __ASM_SIGNAL32_H */
-diff --git a/arch/arm64/include/asm/unistd.h b/arch/arm64/include/asm/unistd.h
-index a0baa9af5487..99d29290c98b 100644
---- a/arch/arm64/include/asm/unistd.h
-+++ b/arch/arm64/include/asm/unistd.h
-@@ -13,7 +13,7 @@
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_AARCH32_EL0
- #define __ARCH_WANT_COMPAT_STAT64
- #define __ARCH_WANT_SYS_GETHOSTNAME
- #define __ARCH_WANT_SYS_PAUSE
-diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile
-index f2b4e816b6de..49fefa42d136 100644
---- a/arch/arm64/kernel/Makefile
-+++ b/arch/arm64/kernel/Makefile
-@@ -27,7 +27,7 @@ OBJCOPYFLAGS := --prefix-symbols=__efistub_
- $(obj)/%.stub.o: $(obj)/%.o FORCE
- $(call if_changed,objcopy)
-
--arm64-obj-$(CONFIG_COMPAT) += sys32.o kuser32.o signal32.o \
-+arm64-obj-$(CONFIG_AARCH32_EL0) += sys32.o kuser32.o signal32.o \
- sys_compat.o entry32.o
- arm64-obj-$(CONFIG_FUNCTION_TRACER) += ftrace.o entry-ftrace.o
- arm64-obj-$(CONFIG_MODULES) += arm64ksyms.o module.o
-diff --git a/arch/arm64/kernel/asm-offsets.c b/arch/arm64/kernel/asm-offsets.c
-index b3bb7ef97bc8..aec5b6cedc7c 100644
---- a/arch/arm64/kernel/asm-offsets.c
-+++ b/arch/arm64/kernel/asm-offsets.c
-@@ -67,7 +67,7 @@ int main(void)
- DEFINE(S_X28, offsetof(struct pt_regs, regs[28]));
- DEFINE(S_LR, offsetof(struct pt_regs, regs[30]));
- DEFINE(S_SP, offsetof(struct pt_regs, sp));
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_AARCH32_EL0
- DEFINE(S_COMPAT_SP, offsetof(struct pt_regs, compat_sp));
- #endif
- DEFINE(S_PSTATE, offsetof(struct pt_regs, pstate));
-diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
-index 55d5c72a507d..960b4fe86ebd 100644
---- a/arch/arm64/kernel/cpufeature.c
-+++ b/arch/arm64/kernel/cpufeature.c
-@@ -36,7 +36,7 @@
- unsigned long elf_hwcap __read_mostly;
- EXPORT_SYMBOL_GPL(elf_hwcap);
-
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_AARCH32_EL0
- #define COMPAT_ELF_HWCAP_DEFAULT \
- (COMPAT_HWCAP_HALF|COMPAT_HWCAP_THUMB|\
- COMPAT_HWCAP_FAST_MULT|COMPAT_HWCAP_EDSP|\
-@@ -904,7 +904,7 @@ static const struct arm64_cpu_capabilities arm64_elf_hwcaps[] = {
- };
-
- static const struct arm64_cpu_capabilities compat_elf_hwcaps[] = {
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_AARCH32_EL0
- HWCAP_CAP(SYS_ID_ISAR5_EL1, ID_ISAR5_AES_SHIFT, FTR_UNSIGNED, 2, CAP_COMPAT_HWCAP2, COMPAT_HWCAP2_PMULL),
- HWCAP_CAP(SYS_ID_ISAR5_EL1, ID_ISAR5_AES_SHIFT, FTR_UNSIGNED, 1, CAP_COMPAT_HWCAP2, COMPAT_HWCAP2_AES),
- HWCAP_CAP(SYS_ID_ISAR5_EL1, ID_ISAR5_SHA1_SHIFT, FTR_UNSIGNED, 1, CAP_COMPAT_HWCAP2, COMPAT_HWCAP2_SHA1),
-@@ -920,7 +920,7 @@ static void __init cap_set_elf_hwcap(const struct arm64_cpu_capabilities *cap)
- case CAP_HWCAP:
- elf_hwcap |= cap->hwcap;
- break;
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_AARCH32_EL0
- case CAP_COMPAT_HWCAP:
- compat_elf_hwcap |= (u32)cap->hwcap;
- break;
-@@ -943,7 +943,7 @@ static bool cpus_have_elf_hwcap(const struct arm64_cpu_capabilities *cap)
- case CAP_HWCAP:
- rc = (elf_hwcap & cap->hwcap) != 0;
- break;
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_AARCH32_EL0
- case CAP_COMPAT_HWCAP:
- rc = (compat_elf_hwcap & (u32)cap->hwcap) != 0;
- break;
-diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c
-index 68b1f364c515..024d7e81aa33 100644
---- a/arch/arm64/kernel/cpuinfo.c
-+++ b/arch/arm64/kernel/cpuinfo.c
-@@ -71,7 +71,7 @@ static const char *const hwcap_str[] = {
- NULL
- };
-
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_AARCH32_EL0
- static const char *const compat_hwcap_str[] = {
- "swp",
- "half",
-@@ -106,7 +106,7 @@ static const char *const compat_hwcap2_str[] = {
- "crc32",
- NULL
- };
--#endif /* CONFIG_COMPAT */
-+#endif /* CONFIG_AARCH32_EL0 */
-
- static int c_show(struct seq_file *m, void *v)
- {
-@@ -139,7 +139,7 @@ static int c_show(struct seq_file *m, void *v)
- */
- seq_puts(m, "Features\t:");
- if (compat) {
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_AARCH32_EL0
- for (j = 0; compat_hwcap_str[j]; j++)
- if (compat_elf_hwcap & (1 << j))
- seq_printf(m, " %s", compat_hwcap_str[j]);
-@@ -147,7 +147,7 @@ static int c_show(struct seq_file *m, void *v)
- for (j = 0; compat_hwcap2_str[j]; j++)
- if (compat_elf_hwcap2 & (1 << j))
- seq_printf(m, " %s", compat_hwcap2_str[j]);
--#endif /* CONFIG_COMPAT */
-+#endif /* CONFIG_AARCH32_EL0 */
- } else {
- for (j = 0; hwcap_str[j]; j++)
- if (elf_hwcap & (1 << j))
-diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S
-index b738880350f9..279bc2ab10c3 100644
---- a/arch/arm64/kernel/entry.S
-+++ b/arch/arm64/kernel/entry.S
-@@ -330,7 +330,7 @@ ENTRY(vectors)
- ventry el0_fiq_invalid // FIQ 64-bit EL0
- ventry el0_error_invalid // Error 64-bit EL0
-
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_AARCH32_EL0
- ventry el0_sync_compat // Synchronous 32-bit EL0
- ventry el0_irq_compat // IRQ 32-bit EL0
- ventry el0_fiq_invalid_compat // FIQ 32-bit EL0
-@@ -370,7 +370,7 @@ el0_error_invalid:
- inv_entry 0, BAD_ERROR
- ENDPROC(el0_error_invalid)
-
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_AARCH32_EL0
- el0_fiq_invalid_compat:
- inv_entry 0, BAD_FIQ, 32
- ENDPROC(el0_fiq_invalid_compat)
-@@ -539,7 +539,7 @@ el0_sync:
- b.ge el0_dbg
- b el0_inv
-
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_AARCH32_EL0
- .align 6
- el0_sync_compat:
- kernel_entry 0, 32
-diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S
-index 973df7de7bf8..3f64dd138782 100644
---- a/arch/arm64/kernel/head.S
-+++ b/arch/arm64/kernel/head.S
-@@ -461,7 +461,7 @@ set_hcr:
- msr vpidr_el2, x0
- msr vmpidr_el2, x1
-
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_AARCH32_EL0
- msr hstr_el2, xzr // Disable CP15 traps to EL2
- #endif
-
-diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c
-index c142459a88f3..da908f9a1e05 100644
---- a/arch/arm64/kernel/ptrace.c
-+++ b/arch/arm64/kernel/ptrace.c
-@@ -184,7 +184,7 @@ static void ptrace_hbptriggered(struct perf_event *bp,
- .si_addr = (void __user *)(bkpt->trigger),
- };
-
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_AARCH32_EL0
- int i;
-
- if (!is_compat_task())
-@@ -766,7 +766,7 @@ static const struct user_regset_view user_aarch64_view = {
- .regsets = aarch64_regsets, .n = ARRAY_SIZE(aarch64_regsets)
- };
-
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_AARCH32_EL0
- #include <linux/compat.h>
-
- enum compat_regset {
-@@ -1301,11 +1301,11 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request,
-
- return ret;
- }
--#endif /* CONFIG_COMPAT */
-+#endif /* CONFIG_AARCH32_EL0 */
-
- const struct user_regset_view *task_user_regset_view(struct task_struct *task)
- {
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_AARCH32_EL0
- /*
- * Core dumping of 32-bit tasks or compat ptrace requests must use the
- * user_aarch32_view compatible with arm32. Native ptrace requests on
-diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c
-index 3ebfb1d00b53..287a21ee39b3 100644
---- a/arch/arm64/kernel/traps.c
-+++ b/arch/arm64/kernel/traps.c
-@@ -576,7 +576,7 @@ long compat_arm_syscall(struct pt_regs *regs);
-
- asmlinkage long do_ni_syscall(struct pt_regs *regs)
- {
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_AARCH32_EL0
- long ret;
- if (is_compat_task()) {
- ret = compat_arm_syscall(regs);
-diff --git a/arch/arm64/kernel/vdso.c b/arch/arm64/kernel/vdso.c
-index ae35f1855e06..a9f24184da38 100644
---- a/arch/arm64/kernel/vdso.c
-+++ b/arch/arm64/kernel/vdso.c
-@@ -49,7 +49,7 @@ static union {
- } vdso_data_store __page_aligned_data;
- struct vdso_data *vdso_data = &vdso_data_store.data;
-
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_AARCH32_EL0
- /*
- * Create and map the vectors page for AArch32 tasks.
- */
-@@ -108,7 +108,7 @@ int aarch32_setup_vectors_page(struct linux_binprm *bprm, int uses_interp)
-
- return PTR_ERR_OR_ZERO(ret);
- }
--#endif /* CONFIG_COMPAT */
-+#endif /* CONFIG_AARCH32_EL0 */
-
- static struct vm_special_mapping vdso_spec[2] __ro_after_init = {
- {
-diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c
-index a89d41cff915..8e04136b304b 100644
---- a/drivers/clocksource/arm_arch_timer.c
-+++ b/drivers/clocksource/arm_arch_timer.c
-@@ -733,7 +733,7 @@ static void arch_timer_evtstrm_enable(int divider)
- | ARCH_TIMER_VIRT_EVT_EN;
- arch_timer_set_cntkctl(cntkctl);
- elf_hwcap |= HWCAP_EVTSTRM;
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_AARCH32_EL0
- compat_elf_hwcap |= COMPAT_HWCAP_EVTSTRM;
- #endif
- }
--
-2.11.0
+2.1.4