mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-26 13:01:19 -04:00
There shouldn't be any 31 bit code around anymore that matters. Remove the compat layer support required to run 31 bit code. Reason for removal is code simplification and reduced test effort. Note that this comes without any deprecation warnings added to config options, or kernel messages, since most likely those would be ignored anyway. If it turns out there is still a reason to keep the compat layer this can be reverted at any time in the future. Reviewed-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
64 lines
1.4 KiB
C
64 lines
1.4 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
#include <linux/perf_event.h>
|
|
#include <linux/perf_regs.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/errno.h>
|
|
#include <linux/bug.h>
|
|
#include <asm/ptrace.h>
|
|
#include <asm/fpu.h>
|
|
|
|
u64 perf_reg_value(struct pt_regs *regs, int idx)
|
|
{
|
|
freg_t fp;
|
|
|
|
if (idx >= PERF_REG_S390_R0 && idx <= PERF_REG_S390_R15)
|
|
return regs->gprs[idx];
|
|
|
|
if (idx >= PERF_REG_S390_FP0 && idx <= PERF_REG_S390_FP15) {
|
|
if (!user_mode(regs))
|
|
return 0;
|
|
|
|
idx -= PERF_REG_S390_FP0;
|
|
fp = *(freg_t *)(current->thread.ufpu.vxrs + idx);
|
|
return fp.ui;
|
|
}
|
|
|
|
if (idx == PERF_REG_S390_MASK)
|
|
return regs->psw.mask;
|
|
if (idx == PERF_REG_S390_PC)
|
|
return regs->psw.addr;
|
|
|
|
WARN_ON_ONCE((u32)idx >= PERF_REG_S390_MAX);
|
|
return 0;
|
|
}
|
|
|
|
#define REG_RESERVED (~((1UL << PERF_REG_S390_MAX) - 1))
|
|
|
|
int perf_reg_validate(u64 mask)
|
|
{
|
|
if (!mask || mask & REG_RESERVED)
|
|
return -EINVAL;
|
|
|
|
return 0;
|
|
}
|
|
|
|
u64 perf_reg_abi(struct task_struct *task)
|
|
{
|
|
return PERF_SAMPLE_REGS_ABI_64;
|
|
}
|
|
|
|
void perf_get_regs_user(struct perf_regs *regs_user,
|
|
struct pt_regs *regs)
|
|
{
|
|
/*
|
|
* Use the regs from the first interruption and let
|
|
* perf_sample_regs_intr() handle interrupts (regs == get_irq_regs()).
|
|
*
|
|
* Also save FPU registers for user-space tasks only.
|
|
*/
|
|
regs_user->regs = task_pt_regs(current);
|
|
if (user_mode(regs_user->regs))
|
|
save_user_fpu_regs();
|
|
regs_user->abi = perf_reg_abi(current);
|
|
}
|