149863894db3ed7bd41541b1c17733273966cea71Will Deacon 249863894db3ed7bd41541b1c17733273966cea71Will Deacon#include <linux/errno.h> 349863894db3ed7bd41541b1c17733273966cea71Will Deacon#include <linux/kernel.h> 449863894db3ed7bd41541b1c17733273966cea71Will Deacon#include <linux/perf_event.h> 549863894db3ed7bd41541b1c17733273966cea71Will Deacon#include <linux/bug.h> 649863894db3ed7bd41541b1c17733273966cea71Will Deacon#include <asm/perf_regs.h> 749863894db3ed7bd41541b1c17733273966cea71Will Deacon#include <asm/ptrace.h> 849863894db3ed7bd41541b1c17733273966cea71Will Deacon 949863894db3ed7bd41541b1c17733273966cea71Will Deaconu64 perf_reg_value(struct pt_regs *regs, int idx) 1049863894db3ed7bd41541b1c17733273966cea71Will Deacon{ 1149863894db3ed7bd41541b1c17733273966cea71Will Deacon if (WARN_ON_ONCE((u32)idx >= PERF_REG_ARM_MAX)) 1249863894db3ed7bd41541b1c17733273966cea71Will Deacon return 0; 1349863894db3ed7bd41541b1c17733273966cea71Will Deacon 1449863894db3ed7bd41541b1c17733273966cea71Will Deacon return regs->uregs[idx]; 1549863894db3ed7bd41541b1c17733273966cea71Will Deacon} 1649863894db3ed7bd41541b1c17733273966cea71Will Deacon 1749863894db3ed7bd41541b1c17733273966cea71Will Deacon#define REG_RESERVED (~((1ULL << PERF_REG_ARM_MAX) - 1)) 1849863894db3ed7bd41541b1c17733273966cea71Will Deacon 1949863894db3ed7bd41541b1c17733273966cea71Will Deaconint perf_reg_validate(u64 mask) 2049863894db3ed7bd41541b1c17733273966cea71Will Deacon{ 2149863894db3ed7bd41541b1c17733273966cea71Will Deacon if (!mask || mask & REG_RESERVED) 2249863894db3ed7bd41541b1c17733273966cea71Will Deacon return -EINVAL; 2349863894db3ed7bd41541b1c17733273966cea71Will Deacon 2449863894db3ed7bd41541b1c17733273966cea71Will Deacon return 0; 2549863894db3ed7bd41541b1c17733273966cea71Will Deacon} 2649863894db3ed7bd41541b1c17733273966cea71Will Deacon 2749863894db3ed7bd41541b1c17733273966cea71Will Deaconu64 perf_reg_abi(struct task_struct *task) 2849863894db3ed7bd41541b1c17733273966cea71Will Deacon{ 2949863894db3ed7bd41541b1c17733273966cea71Will Deacon return PERF_SAMPLE_REGS_ABI_32; 3049863894db3ed7bd41541b1c17733273966cea71Will Deacon} 31