Inter-revision diff: patch 5

Comparing v8 (message) to v6 (message)

--- 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help