cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

perf_regs.c (778B)


      1// SPDX-License-Identifier: GPL-2.0
      2
      3#include <linux/errno.h>
      4#include <linux/kernel.h>
      5#include <linux/perf_event.h>
      6#include <linux/bug.h>
      7#include <linux/sched/task_stack.h>
      8#include <asm/perf_regs.h>
      9#include <asm/ptrace.h>
     10
     11u64 perf_reg_value(struct pt_regs *regs, int idx)
     12{
     13	if (WARN_ON_ONCE((u32)idx >= PERF_REG_ARM_MAX))
     14		return 0;
     15
     16	return regs->uregs[idx];
     17}
     18
     19#define REG_RESERVED (~((1ULL << PERF_REG_ARM_MAX) - 1))
     20
     21int perf_reg_validate(u64 mask)
     22{
     23	if (!mask || mask & REG_RESERVED)
     24		return -EINVAL;
     25
     26	return 0;
     27}
     28
     29u64 perf_reg_abi(struct task_struct *task)
     30{
     31	return PERF_SAMPLE_REGS_ABI_32;
     32}
     33
     34void perf_get_regs_user(struct perf_regs *regs_user,
     35			struct pt_regs *regs)
     36{
     37	regs_user->regs = task_pt_regs(current);
     38	regs_user->abi = perf_reg_abi(current);
     39}