Commit 2a963a21 authored by Yury Norov's avatar Yury Norov Committed by Yang Yingliang
Browse files

arm64: rename functions that reference compat term



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

The ILP32 for ARM64 patch series introduces another 'compat' mode additionally
to aarch32_el0. So to avoid confusing, aarch32-only functions renamed in
according to it.

Signed-off-by: default avatarYury Norov <ynorov@caviumnetworks.com>

 Conflicts:
	arch/arm64/kernel/cpufeature.c
	arch/arm64/kernel/sys32.c
	arch/arm64/kernel/sys_compat.c
	arch/arm64/kernel/syscall.c
	arch/arm64/kernel/traps.c

[wangxiongfeng: conflicts because of the following commit.
acf2a6efa arm64: use the correct function type for
__arm64_sys_ni_syscall
f5b984c22 arm64: compat: Don't pull syscall number from regs in
arm_compat_syscall
119703e85 arm64: cpufeature: Set the FP/SIMD compat HWCAP
So we only change 'compat_*' to 'a32_*'.

6a605e36 arm64: Force SSBS on context switch
Above commit add 'compat_user_mode()' in 'ssbs_thread_switch()'. We also
need to change it.
]

Signed-off-by: default avatarXiongfeng Wang <wangxiongfeng2@huawei.com>
Reviewed-by: default avatarHanjun Guo &lt;guohanjun@huawei.com <mailto:guohanjun@huawei.com&gt;>
Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
parent dabbb8fb
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -207,16 +207,16 @@ static inline void forget_syscall(struct pt_regs *regs)
#define arch_has_single_step()	(1)

#ifdef CONFIG_AARCH32_EL0
#define compat_thumb_mode(regs) \
#define a32_thumb_mode(regs) \
	(((regs)->pstate & PSR_AA32_T_BIT))
#else
#define compat_thumb_mode(regs) (0)
#define a32_thumb_mode(regs) (0)
#endif

#define user_mode(regs)	\
	(((regs)->pstate & PSR_MODE_MASK) == PSR_MODE_EL0t)

#define compat_user_mode(regs)	\
#define a32_user_mode(regs)	\
	(((regs)->pstate & (PSR_MODE32_BIT | PSR_MODE_MASK)) == \
	 (PSR_MODE32_BIT | PSR_MODE_EL0t))

@@ -235,10 +235,10 @@ static inline void forget_syscall(struct pt_regs *regs)
	(!((regs)->pstate & PSR_F_BIT))

#define GET_USP(regs) \
	(!compat_user_mode(regs) ? (regs)->sp : (regs)->compat_sp)
	(!a32_user_mode(regs) ? (regs)->sp : (regs)->compat_sp)

#define SET_USP(ptregs, value) \
	(!compat_user_mode(regs) ? ((regs)->sp = value) : ((regs)->compat_sp = value))
	(!a32_user_mode(regs) ? ((regs)->sp = value) : ((regs)->compat_sp = value))

extern int regs_query_register_offset(const char *name);
extern unsigned long regs_get_kernel_stack_nth(struct pt_regs *regs,
+7 −6
Original line number Diff line number Diff line
@@ -24,27 +24,28 @@

#define AARCH32_KERN_SIGRET_CODE_OFFSET	0x500

int compat_setup_frame(int usig, struct ksignal *ksig, sigset_t *set,
int a32_setup_frame(int usig, struct ksignal *ksig, sigset_t *set,
		       struct pt_regs *regs);
int compat_setup_rt_frame(int usig, struct ksignal *ksig, sigset_t *set,

int a32_setup_rt_frame(int usig, struct ksignal *ksig, sigset_t *set,
			  struct pt_regs *regs);

void compat_setup_restart_syscall(struct pt_regs *regs);
void a32_setup_restart_syscall(struct pt_regs *regs);
#else

static inline int compat_setup_frame(int usid, struct ksignal *ksig,
static inline int a32_setup_frame(int usid, struct ksignal *ksig,
				     sigset_t *set, struct pt_regs *regs)
{
	return -ENOSYS;
}

static inline int compat_setup_rt_frame(int usig, struct ksignal *ksig, sigset_t *set,
static inline int a32_setup_rt_frame(int usig, struct ksignal *ksig, sigset_t *set,
					struct pt_regs *regs)
{
	return -ENOSYS;
}

static inline void compat_setup_restart_syscall(struct pt_regs *regs)
static inline void a32_setup_restart_syscall(struct pt_regs *regs)
{
}
#endif /* CONFIG_AARCH32_EL0 */
+1 −1
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ typedef long (*syscall_fn_t)(const struct pt_regs *regs);
extern const syscall_fn_t sys_call_table[];

#ifdef CONFIG_AARCH32_EL0
extern const syscall_fn_t compat_sys_call_table[];
extern const syscall_fn_t a32_sys_call_table[];
#endif

static inline int syscall_get_nr(struct task_struct *task,
+3 −3
Original line number Diff line number Diff line
@@ -559,7 +559,7 @@ static int setend_set_hw_mode(bool enable)
	return 0;
}

static int compat_setend_handler(struct pt_regs *regs, u32 big_endian)
static int __a32_setend_handler(struct pt_regs *regs, u32 big_endian)
{
	char *insn;

@@ -582,14 +582,14 @@ static int compat_setend_handler(struct pt_regs *regs, u32 big_endian)

static int a32_setend_handler(struct pt_regs *regs, u32 instr)
{
	int rc = compat_setend_handler(regs, (instr >> 9) & 1);
	int rc = __a32_setend_handler(regs, (instr >> 9) & 1);
	arm64_skip_faulting_instruction(regs, 4);
	return rc;
}

static int t16_setend_handler(struct pt_regs *regs, u32 instr)
{
	int rc = compat_setend_handler(regs, (instr >> 3) & 1);
	int rc = __a32_setend_handler(regs, (instr >> 3) & 1);
	arm64_skip_faulting_instruction(regs, 2);
	return rc;
}
+3 −3
Original line number Diff line number Diff line
@@ -1518,7 +1518,7 @@ static const struct arm64_cpu_capabilities arm64_elf_hwcaps[] = {
	{},
};

static const struct arm64_cpu_capabilities compat_elf_hwcaps[] = {
static const struct arm64_cpu_capabilities a32_elf_hwcaps[] = {
#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),
@@ -1812,7 +1812,7 @@ static void verify_local_cpu_capabilities(void)
	verify_local_elf_hwcaps(arm64_elf_hwcaps);

	if (system_supports_32bit_el0())
		verify_local_elf_hwcaps(compat_elf_hwcaps);
		verify_local_elf_hwcaps(a32_elf_hwcaps);

	if (system_supports_sve())
		verify_sve_features();
@@ -1883,7 +1883,7 @@ void __init setup_cpu_features(void)
	setup_elf_hwcaps(arm64_elf_hwcaps);

	if (system_supports_32bit_el0())
		setup_elf_hwcaps(compat_elf_hwcaps);
		setup_elf_hwcaps(a32_elf_hwcaps);

	if (system_uses_ttbr0_pan())
		pr_info("emulated: Privileged Access Never (PAN) using TTBR0_EL1 switching\n");
Loading