提交 04c1ad60 编写于 作者: A Andrew Pinski 提交者: Yang Yingliang

arm64: rename COMPAT to AARCH32_EL0

hulk inclusion
category: feature
bugzilla: NA
CVE: NA
---------------------------

In this patchset ILP32 ABI support is added. Additionally to AARCH32,
which is binary-compatible with ARM, ILP32 is (mostly) ABI-compatible.

From now, AARCH32_EL0 (former COMPAT) config option means the support of
AARCH32 userspace, and ARM64_ILP32 - support of ILP32 ABI (see following
patches). 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: NDavid Daney <ddaney@caviumnetworks.com>
Signed-off-by: NAndrew Pinski <Andrew.Pinski@caviumnetworks.com>
Signed-off-by: NYury Norov <ynorov@caviumnetworks.com>
Signed-off-by: NPhilipp Tomsich <philipp.tomsich@theobroma-systems.com>
Signed-off-by: NChristoph Muellner <christoph.muellner@theobroma-systems.com>
Signed-off-by: NBamvor Jian Zhang <bamv2005@gmail.com>

 Conflicts:
	arch/arm64/kernel/cpufeature.c
[wangxiongfeng: conflicts below 'arm64_cpu_capabilities
compat_elf_hwcaps' because we have the follow commit.
119703e850 arm64: cpufeature: Set the FP/SIMD compat HWCAP bits properly
Fix conflicts by only changing 'CONFIG_COMPAT' to 'CONFIG_AARCH32_EL0']
Signed-off-by: NXiongfeng Wang <wangxiongfeng2@huawei.com>
Reviewed-by: NHanjun Guo &lt;guohanjun@huawei.com <mailto:guohanjun@huawei.com&gt;>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
上级 66604ea0
...@@ -444,7 +444,7 @@ config ARM64_ERRATUM_834220 ...@@ -444,7 +444,7 @@ config ARM64_ERRATUM_834220
config ARM64_ERRATUM_845719 config ARM64_ERRATUM_845719
bool "Cortex-A53: 845719: a load might read incorrect data" bool "Cortex-A53: 845719: a load might read incorrect data"
depends on COMPAT depends on AARCH32_EL0
default y default y
help help
This option adds an alternative code sequence to work around ARM This option adds an alternative code sequence to work around ARM
...@@ -1039,7 +1039,7 @@ config ARM64_SSBD ...@@ -1039,7 +1039,7 @@ config ARM64_SSBD
menuconfig ARMV8_DEPRECATED menuconfig ARMV8_DEPRECATED
bool "Emulate deprecated/obsolete ARMv8 instructions" bool "Emulate deprecated/obsolete ARMv8 instructions"
depends on COMPAT depends on AARCH32_EL0
depends on SYSCTL depends on SYSCTL
help help
Legacy software support may require certain instructions Legacy software support may require certain instructions
...@@ -1456,7 +1456,12 @@ config DMI ...@@ -1456,7 +1456,12 @@ config DMI
endmenu endmenu
config COMPAT config COMPAT
def_bool y
depends on AARCH32_EL0
config AARCH32_EL0
bool "Kernel support for 32-bit EL0" bool "Kernel support for 32-bit EL0"
def_bool y
depends on ARM64_4K_PAGES || EXPERT depends on ARM64_4K_PAGES || EXPERT
select COMPAT_BINFMT_ELF if BINFMT_ELF select COMPAT_BINFMT_ELF if BINFMT_ELF
select HAVE_UID16 select HAVE_UID16
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/stddef.h> #include <linux/stddef.h>
#if defined(__KERNEL__) && defined(CONFIG_COMPAT) #if defined(__KERNEL__) && defined(CONFIG_AARCH32_EL0)
/* Masks for extracting the FPSR and FPCR from the FPSCR */ /* Masks for extracting the FPSR and FPCR from the FPSCR */
#define VFP_FPSCR_STAT_MASK 0xf800009f #define VFP_FPSCR_STAT_MASK 0xf800009f
#define VFP_FPSCR_CTRL_MASK 0x07f79f00 #define VFP_FPSCR_CTRL_MASK 0x07f79f00
......
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
*/ */
#define ELF_HWCAP (elf_hwcap) #define ELF_HWCAP (elf_hwcap)
#ifdef CONFIG_COMPAT #ifdef CONFIG_AARCH32_EL0
#define COMPAT_ELF_HWCAP (compat_elf_hwcap) #define COMPAT_ELF_HWCAP (compat_elf_hwcap)
#define COMPAT_ELF_HWCAP2 (compat_elf_hwcap2) #define COMPAT_ELF_HWCAP2 (compat_elf_hwcap2)
extern unsigned int compat_elf_hwcap, 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; ...@@ -54,7 +54,7 @@ extern unsigned int compat_elf_hwcap, compat_elf_hwcap2;
enum { enum {
CAP_HWCAP = 1, CAP_HWCAP = 1,
#ifdef CONFIG_COMPAT #ifdef CONFIG_AARCH32_EL0
CAP_COMPAT_HWCAP, CAP_COMPAT_HWCAP,
CAP_COMPAT_HWCAP2, CAP_COMPAT_HWCAP2,
#endif #endif
......
...@@ -149,7 +149,7 @@ static inline void arch_thread_struct_whitelist(unsigned long *offset, ...@@ -149,7 +149,7 @@ static inline void arch_thread_struct_whitelist(unsigned long *offset,
*size = sizeof_field(struct thread_struct, uw); *size = sizeof_field(struct thread_struct, uw);
} }
#ifdef CONFIG_COMPAT #ifdef CONFIG_AARCH32_EL0
#define task_user_tls(t) \ #define task_user_tls(t) \
({ \ ({ \
unsigned long *__tls; \ unsigned long *__tls; \
...@@ -202,7 +202,7 @@ static inline void start_thread(struct pt_regs *regs, unsigned long pc, ...@@ -202,7 +202,7 @@ static inline void start_thread(struct pt_regs *regs, unsigned long pc,
regs->sp = sp; regs->sp = sp;
} }
#ifdef CONFIG_COMPAT #ifdef CONFIG_AARCH32_EL0
static inline void compat_start_thread(struct pt_regs *regs, unsigned long pc, static inline void compat_start_thread(struct pt_regs *regs, unsigned long pc,
unsigned long sp) unsigned long sp)
{ {
......
...@@ -207,7 +207,7 @@ static inline void forget_syscall(struct pt_regs *regs) ...@@ -207,7 +207,7 @@ static inline void forget_syscall(struct pt_regs *regs)
#define arch_has_single_step() (1) #define arch_has_single_step() (1)
#ifdef CONFIG_COMPAT #ifdef CONFIG_AARCH32_EL0
#define compat_thumb_mode(regs) \ #define compat_thumb_mode(regs) \
(((regs)->pstate & PSR_AA32_T_BIT)) (((regs)->pstate & PSR_AA32_T_BIT))
#else #else
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
#include <asm/unistd.h> #include <asm/unistd.h>
#ifdef CONFIG_COMPAT #ifdef CONFIG_AARCH32_EL0
#define __NR_seccomp_read_32 __NR_compat_read #define __NR_seccomp_read_32 __NR_compat_read
#define __NR_seccomp_write_32 __NR_compat_write #define __NR_seccomp_write_32 __NR_compat_write
#define __NR_seccomp_exit_32 __NR_compat_exit #define __NR_seccomp_exit_32 __NR_compat_exit
......
...@@ -17,7 +17,9 @@ ...@@ -17,7 +17,9 @@
#define __ASM_SIGNAL32_H #define __ASM_SIGNAL32_H
#ifdef __KERNEL__ #ifdef __KERNEL__
#ifdef CONFIG_COMPAT
#ifdef CONFIG_AARCH32_EL0
#include <linux/compat.h> #include <linux/compat.h>
#define AARCH32_KERN_SIGRET_CODE_OFFSET 0x500 #define AARCH32_KERN_SIGRET_CODE_OFFSET 0x500
...@@ -45,6 +47,6 @@ static inline int compat_setup_rt_frame(int usig, struct ksignal *ksig, sigset_t ...@@ -45,6 +47,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) static inline void compat_setup_restart_syscall(struct pt_regs *regs)
{ {
} }
#endif /* CONFIG_COMPAT */ #endif /* CONFIG_AARCH32_EL0 */
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
#endif /* __ASM_SIGNAL32_H */ #endif /* __ASM_SIGNAL32_H */
...@@ -24,7 +24,7 @@ typedef long (*syscall_fn_t)(const struct pt_regs *regs); ...@@ -24,7 +24,7 @@ typedef long (*syscall_fn_t)(const struct pt_regs *regs);
extern const syscall_fn_t sys_call_table[]; extern const syscall_fn_t sys_call_table[];
#ifdef CONFIG_COMPAT #ifdef CONFIG_AARCH32_EL0
extern const syscall_fn_t compat_sys_call_table[]; extern const syscall_fn_t compat_sys_call_table[];
#endif #endif
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * 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_COMPAT_STAT64
#define __ARCH_WANT_SYS_GETHOSTNAME #define __ARCH_WANT_SYS_GETHOSTNAME
#define __ARCH_WANT_SYS_PAUSE #define __ARCH_WANT_SYS_PAUSE
......
...@@ -27,7 +27,7 @@ OBJCOPYFLAGS := --prefix-symbols=__efistub_ ...@@ -27,7 +27,7 @@ OBJCOPYFLAGS := --prefix-symbols=__efistub_
$(obj)/%.stub.o: $(obj)/%.o FORCE $(obj)/%.stub.o: $(obj)/%.o FORCE
$(call if_changed,objcopy) $(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 sys_compat.o
arm64-obj-$(CONFIG_FUNCTION_TRACER) += ftrace.o entry-ftrace.o arm64-obj-$(CONFIG_FUNCTION_TRACER) += ftrace.o entry-ftrace.o
arm64-obj-$(CONFIG_MODULES) += arm64ksyms.o module.o arm64-obj-$(CONFIG_MODULES) += arm64ksyms.o module.o
......
...@@ -70,7 +70,7 @@ int main(void) ...@@ -70,7 +70,7 @@ int main(void)
DEFINE(S_X28, offsetof(struct pt_regs, regs[28])); DEFINE(S_X28, offsetof(struct pt_regs, regs[28]));
DEFINE(S_LR, offsetof(struct pt_regs, regs[30])); DEFINE(S_LR, offsetof(struct pt_regs, regs[30]));
DEFINE(S_SP, offsetof(struct pt_regs, sp)); 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)); DEFINE(S_COMPAT_SP, offsetof(struct pt_regs, compat_sp));
#endif #endif
DEFINE(S_PSTATE, offsetof(struct pt_regs, pstate)); DEFINE(S_PSTATE, offsetof(struct pt_regs, pstate));
......
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
unsigned long elf_hwcap __read_mostly; unsigned long elf_hwcap __read_mostly;
EXPORT_SYMBOL_GPL(elf_hwcap); EXPORT_SYMBOL_GPL(elf_hwcap);
#ifdef CONFIG_COMPAT #ifdef CONFIG_AARCH32_EL0
#define COMPAT_ELF_HWCAP_DEFAULT \ #define COMPAT_ELF_HWCAP_DEFAULT \
(COMPAT_HWCAP_HALF|COMPAT_HWCAP_THUMB|\ (COMPAT_HWCAP_HALF|COMPAT_HWCAP_THUMB|\
COMPAT_HWCAP_FAST_MULT|COMPAT_HWCAP_EDSP|\ COMPAT_HWCAP_FAST_MULT|COMPAT_HWCAP_EDSP|\
...@@ -1598,7 +1598,7 @@ static bool compat_has_neon(const struct arm64_cpu_capabilities *cap, int scope) ...@@ -1598,7 +1598,7 @@ static bool compat_has_neon(const struct arm64_cpu_capabilities *cap, int scope)
#endif #endif
static const struct arm64_cpu_capabilities compat_elf_hwcaps[] = { static const struct arm64_cpu_capabilities compat_elf_hwcaps[] = {
#ifdef CONFIG_COMPAT #ifdef CONFIG_AARCH32_EL0
HWCAP_CAP_MATCH(compat_has_neon, CAP_COMPAT_HWCAP, COMPAT_HWCAP_NEON), HWCAP_CAP_MATCH(compat_has_neon, CAP_COMPAT_HWCAP, COMPAT_HWCAP_NEON),
HWCAP_CAP(SYS_MVFR1_EL1, MVFR1_SIMDFMAC_SHIFT, FTR_UNSIGNED, 1, CAP_COMPAT_HWCAP, COMPAT_HWCAP_VFPv4), HWCAP_CAP(SYS_MVFR1_EL1, MVFR1_SIMDFMAC_SHIFT, FTR_UNSIGNED, 1, CAP_COMPAT_HWCAP, COMPAT_HWCAP_VFPv4),
/* Arm v8 mandates MVFR0.FPDP == {0, 2}. So, piggy back on this for the presence of VFP support */ /* Arm v8 mandates MVFR0.FPDP == {0, 2}. So, piggy back on this for the presence of VFP support */
...@@ -1619,7 +1619,7 @@ static void __init cap_set_elf_hwcap(const struct arm64_cpu_capabilities *cap) ...@@ -1619,7 +1619,7 @@ static void __init cap_set_elf_hwcap(const struct arm64_cpu_capabilities *cap)
case CAP_HWCAP: case CAP_HWCAP:
elf_hwcap |= cap->hwcap; elf_hwcap |= cap->hwcap;
break; break;
#ifdef CONFIG_COMPAT #ifdef CONFIG_AARCH32_EL0
case CAP_COMPAT_HWCAP: case CAP_COMPAT_HWCAP:
compat_elf_hwcap |= (u32)cap->hwcap; compat_elf_hwcap |= (u32)cap->hwcap;
break; break;
...@@ -1642,7 +1642,7 @@ static bool cpus_have_elf_hwcap(const struct arm64_cpu_capabilities *cap) ...@@ -1642,7 +1642,7 @@ static bool cpus_have_elf_hwcap(const struct arm64_cpu_capabilities *cap)
case CAP_HWCAP: case CAP_HWCAP:
rc = (elf_hwcap & cap->hwcap) != 0; rc = (elf_hwcap & cap->hwcap) != 0;
break; break;
#ifdef CONFIG_COMPAT #ifdef CONFIG_AARCH32_EL0
case CAP_COMPAT_HWCAP: case CAP_COMPAT_HWCAP:
rc = (compat_elf_hwcap & (u32)cap->hwcap) != 0; rc = (compat_elf_hwcap & (u32)cap->hwcap) != 0;
break; break;
......
...@@ -86,7 +86,7 @@ static const char *const hwcap_str[] = { ...@@ -86,7 +86,7 @@ static const char *const hwcap_str[] = {
NULL NULL
}; };
#ifdef CONFIG_COMPAT #ifdef CONFIG_AARCH32_EL0
static const char *const compat_hwcap_str[] = { static const char *const compat_hwcap_str[] = {
"swp", "swp",
"half", "half",
...@@ -121,7 +121,7 @@ static const char *const compat_hwcap2_str[] = { ...@@ -121,7 +121,7 @@ static const char *const compat_hwcap2_str[] = {
"crc32", "crc32",
NULL NULL
}; };
#endif /* CONFIG_COMPAT */ #endif /* CONFIG_AARCH32_EL0 */
static int c_show(struct seq_file *m, void *v) static int c_show(struct seq_file *m, void *v)
{ {
...@@ -154,7 +154,7 @@ static int c_show(struct seq_file *m, void *v) ...@@ -154,7 +154,7 @@ static int c_show(struct seq_file *m, void *v)
*/ */
seq_puts(m, "Features\t:"); seq_puts(m, "Features\t:");
if (compat) { if (compat) {
#ifdef CONFIG_COMPAT #ifdef CONFIG_AARCH32_EL0
for (j = 0; compat_hwcap_str[j]; j++) for (j = 0; compat_hwcap_str[j]; j++)
if (compat_elf_hwcap & (1 << j)) if (compat_elf_hwcap & (1 << j))
seq_printf(m, " %s", compat_hwcap_str[j]); seq_printf(m, " %s", compat_hwcap_str[j]);
...@@ -162,7 +162,7 @@ static int c_show(struct seq_file *m, void *v) ...@@ -162,7 +162,7 @@ static int c_show(struct seq_file *m, void *v)
for (j = 0; compat_hwcap2_str[j]; j++) for (j = 0; compat_hwcap2_str[j]; j++)
if (compat_elf_hwcap2 & (1 << j)) if (compat_elf_hwcap2 & (1 << j))
seq_printf(m, " %s", compat_hwcap2_str[j]); seq_printf(m, " %s", compat_hwcap2_str[j]);
#endif /* CONFIG_COMPAT */ #endif /* CONFIG_AARCH32_EL0 */
} else { } else {
for (j = 0; hwcap_str[j]; j++) for (j = 0; hwcap_str[j]; j++)
if (elf_hwcap & (1 << j)) if (elf_hwcap & (1 << j))
......
...@@ -489,7 +489,7 @@ ENTRY(vectors) ...@@ -489,7 +489,7 @@ ENTRY(vectors)
kernel_ventry 0, fiq_invalid // FIQ 64-bit EL0 kernel_ventry 0, fiq_invalid // FIQ 64-bit EL0
kernel_ventry 0, error // Error 64-bit EL0 kernel_ventry 0, error // Error 64-bit EL0
#ifdef CONFIG_COMPAT #ifdef CONFIG_AARCH32_EL0
kernel_ventry 0, sync_compat, 32 // Synchronous 32-bit EL0 kernel_ventry 0, sync_compat, 32 // Synchronous 32-bit EL0
kernel_ventry 0, irq_compat, 32 // IRQ 32-bit EL0 kernel_ventry 0, irq_compat, 32 // IRQ 32-bit EL0
kernel_ventry 0, fiq_invalid_compat, 32 // FIQ 32-bit EL0 kernel_ventry 0, fiq_invalid_compat, 32 // FIQ 32-bit EL0
...@@ -558,7 +558,7 @@ el0_error_invalid: ...@@ -558,7 +558,7 @@ el0_error_invalid:
inv_entry 0, BAD_ERROR inv_entry 0, BAD_ERROR
ENDPROC(el0_error_invalid) ENDPROC(el0_error_invalid)
#ifdef CONFIG_COMPAT #ifdef CONFIG_AARCH32_EL0
el0_fiq_invalid_compat: el0_fiq_invalid_compat:
inv_entry 0, BAD_FIQ, 32 inv_entry 0, BAD_FIQ, 32
ENDPROC(el0_fiq_invalid_compat) ENDPROC(el0_fiq_invalid_compat)
...@@ -759,7 +759,7 @@ el0_sync: ...@@ -759,7 +759,7 @@ el0_sync:
b.ge el0_dbg b.ge el0_dbg
b el0_inv b el0_inv
#ifdef CONFIG_COMPAT #ifdef CONFIG_AARCH32_EL0
.align 6 .align 6
el0_sync_compat: el0_sync_compat:
kernel_entry 0, 32 kernel_entry 0, 32
......
...@@ -542,7 +542,7 @@ set_hcr: ...@@ -542,7 +542,7 @@ set_hcr:
msr vpidr_el2, x0 msr vpidr_el2, x0
msr vmpidr_el2, x1 msr vmpidr_el2, x1
#ifdef CONFIG_COMPAT #ifdef CONFIG_AARCH32_EL0
msr hstr_el2, xzr // Disable CP15 traps to EL2 msr hstr_el2, xzr // Disable CP15 traps to EL2
#endif #endif
......
...@@ -59,7 +59,7 @@ user_backtrace(struct frame_tail __user *tail, ...@@ -59,7 +59,7 @@ user_backtrace(struct frame_tail __user *tail,
return buftail.fp; return buftail.fp;
} }
#ifdef CONFIG_COMPAT #ifdef CONFIG_AARCH32_EL0
/* /*
* The registers we're interested in are at the end of the variable * The registers we're interested in are at the end of the variable
* length saved register structure. The fp points at the end of this * length saved register structure. The fp points at the end of this
...@@ -104,7 +104,7 @@ compat_user_backtrace(struct compat_frame_tail __user *tail, ...@@ -104,7 +104,7 @@ compat_user_backtrace(struct compat_frame_tail __user *tail,
return (struct compat_frame_tail __user *)compat_ptr(buftail.fp) - 1; return (struct compat_frame_tail __user *)compat_ptr(buftail.fp) - 1;
} }
#endif /* CONFIG_COMPAT */ #endif /* CONFIG_AARCH32_EL0 */
void perf_callchain_user(struct perf_callchain_entry_ctx *entry, void perf_callchain_user(struct perf_callchain_entry_ctx *entry,
struct pt_regs *regs) struct pt_regs *regs)
...@@ -126,7 +126,7 @@ void perf_callchain_user(struct perf_callchain_entry_ctx *entry, ...@@ -126,7 +126,7 @@ void perf_callchain_user(struct perf_callchain_entry_ctx *entry,
tail && !((unsigned long)tail & 0xf)) tail && !((unsigned long)tail & 0xf))
tail = user_backtrace(tail, entry); tail = user_backtrace(tail, entry);
} else { } else {
#ifdef CONFIG_COMPAT #ifdef CONFIG_AARCH32_EL0
/* AARCH32 compat mode */ /* AARCH32 compat mode */
struct compat_frame_tail __user *tail; struct compat_frame_tail __user *tail;
......
...@@ -190,7 +190,7 @@ static void ptrace_hbptriggered(struct perf_event *bp, ...@@ -190,7 +190,7 @@ static void ptrace_hbptriggered(struct perf_event *bp,
info.si_code = TRAP_HWBKPT; info.si_code = TRAP_HWBKPT;
info.si_addr = (void __user *)(bkpt->trigger); info.si_addr = (void __user *)(bkpt->trigger);
#ifdef CONFIG_COMPAT #ifdef CONFIG_AARCH32_EL0
if (is_compat_task()) { if (is_compat_task()) {
int si_errno = 0; int si_errno = 0;
int i; int i;
...@@ -1060,7 +1060,9 @@ static const struct user_regset_view user_aarch64_view = { ...@@ -1060,7 +1060,9 @@ static const struct user_regset_view user_aarch64_view = {
.regsets = aarch64_regsets, .n = ARRAY_SIZE(aarch64_regsets) .regsets = aarch64_regsets, .n = ARRAY_SIZE(aarch64_regsets)
}; };
#ifdef CONFIG_COMPAT #ifdef CONFIG_AARCH32_EL0
#include <linux/compat.h>
enum compat_regset { enum compat_regset {
REGSET_COMPAT_GPR, REGSET_COMPAT_GPR,
REGSET_COMPAT_VFP, REGSET_COMPAT_VFP,
...@@ -1603,11 +1605,11 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request, ...@@ -1603,11 +1605,11 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request,
return ret; return ret;
} }
#endif /* CONFIG_COMPAT */ #endif /* CONFIG_AARCH32_EL0 */
const struct user_regset_view *task_user_regset_view(struct task_struct *task) 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 * Core dumping of 32-bit tasks or compat ptrace requests must use the
* user_aarch32_view compatible with arm32. Native ptrace requests on * user_aarch32_view compatible with arm32. Native ptrace requests on
......
...@@ -19,7 +19,7 @@ long sys_ni_syscall(void); ...@@ -19,7 +19,7 @@ long sys_ni_syscall(void);
static long do_ni_syscall(struct pt_regs *regs, int scno) static long do_ni_syscall(struct pt_regs *regs, int scno)
{ {
#ifdef CONFIG_COMPAT #ifdef CONFIG_AARCH32_EL0
long ret; long ret;
if (is_compat_task()) { if (is_compat_task()) {
ret = compat_arm_syscall(regs, scno); ret = compat_arm_syscall(regs, scno);
...@@ -163,7 +163,7 @@ asmlinkage void el0_svc_handler(struct pt_regs *regs) ...@@ -163,7 +163,7 @@ asmlinkage void el0_svc_handler(struct pt_regs *regs)
el0_svc_common(regs, regs->regs[8], __NR_syscalls, sys_call_table); el0_svc_common(regs, regs->regs[8], __NR_syscalls, sys_call_table);
} }
#ifdef CONFIG_COMPAT #ifdef CONFIG_AARCH32_EL0
asmlinkage void el0_svc_compat_handler(struct pt_regs *regs) asmlinkage void el0_svc_compat_handler(struct pt_regs *regs)
{ {
el0_svc_common(regs, regs->regs[7], __NR_compat_syscalls, el0_svc_common(regs, regs->regs[7], __NR_compat_syscalls,
......
...@@ -49,7 +49,7 @@ static union { ...@@ -49,7 +49,7 @@ static union {
} vdso_data_store __page_aligned_data; } vdso_data_store __page_aligned_data;
struct vdso_data *vdso_data = &vdso_data_store.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. * 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) ...@@ -108,7 +108,7 @@ int aarch32_setup_vectors_page(struct linux_binprm *bprm, int uses_interp)
return PTR_ERR_OR_ZERO(ret); return PTR_ERR_OR_ZERO(ret);
} }
#endif /* CONFIG_COMPAT */ #endif /* CONFIG_AARCH32_EL0 */
static int vdso_mremap(const struct vm_special_mapping *sm, static int vdso_mremap(const struct vm_special_mapping *sm,
struct vm_area_struct *new_vma) struct vm_area_struct *new_vma)
......
...@@ -821,7 +821,7 @@ static void arch_timer_evtstrm_enable(int divider) ...@@ -821,7 +821,7 @@ static void arch_timer_evtstrm_enable(int divider)
| ARCH_TIMER_VIRT_EVT_EN; | ARCH_TIMER_VIRT_EVT_EN;
arch_timer_set_cntkctl(cntkctl); arch_timer_set_cntkctl(cntkctl);
elf_hwcap |= HWCAP_EVTSTRM; elf_hwcap |= HWCAP_EVTSTRM;
#ifdef CONFIG_COMPAT #ifdef CONFIG_AARCH32_EL0
compat_elf_hwcap |= COMPAT_HWCAP_EVTSTRM; compat_elf_hwcap |= COMPAT_HWCAP_EVTSTRM;
#endif #endif
cpumask_set_cpu(smp_processor_id(), &evtstrm_available); cpumask_set_cpu(smp_processor_id(), &evtstrm_available);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册