diff options
Diffstat (limited to 'meta-toradex-extras/recipes/linux/linux-toradex-fsl/ARM-perf-add-support-for-perf-registers-API.diff')
-rw-r--r-- | meta-toradex-extras/recipes/linux/linux-toradex-fsl/ARM-perf-add-support-for-perf-registers-API.diff | 126 |
1 files changed, 0 insertions, 126 deletions
diff --git a/meta-toradex-extras/recipes/linux/linux-toradex-fsl/ARM-perf-add-support-for-perf-registers-API.diff b/meta-toradex-extras/recipes/linux/linux-toradex-fsl/ARM-perf-add-support-for-perf-registers-API.diff deleted file mode 100644 index e6f44fda..00000000 --- a/meta-toradex-extras/recipes/linux/linux-toradex-fsl/ARM-perf-add-support-for-perf-registers-API.diff +++ /dev/null @@ -1,126 +0,0 @@ -From 49863894db3ed7bd41541b1c17733273966cea71 Mon Sep 17 00:00:00 2001 -From: Will Deacon <will.deacon@arm.com> -Date: Thu, 26 Sep 2013 12:36:35 +0100 -Subject: [PATCH] ARM: perf: add support for perf registers API - -This patch implements the functions required for the perf registers API, -allowing the perf tool to interface kernel register dumps with libunwind -in order to provide userspace backtracing. - -Cc: Jean Pihet <jean.pihet@linaro.org> -Signed-off-by: Will Deacon <will.deacon@arm.com> ---- - arch/arm/Kconfig | 2 ++ - arch/arm/include/uapi/asm/Kbuild | 1 + - arch/arm/include/uapi/asm/perf_regs.h | 23 +++++++++++++++++++++++ - arch/arm/kernel/Makefile | 1 + - arch/arm/kernel/perf_regs.c | 30 ++++++++++++++++++++++++++++++ - 5 files changed, 57 insertions(+) - create mode 100644 arch/arm/include/uapi/asm/perf_regs.h - create mode 100644 arch/arm/kernel/perf_regs.c - -diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig -index 1ad6fb6..899d0c6 100644 ---- a/arch/arm/Kconfig -+++ b/arch/arm/Kconfig -@@ -51,6 +51,8 @@ config ARM - select HAVE_MOD_ARCH_SPECIFIC if ARM_UNWIND - select HAVE_OPROFILE if (HAVE_PERF_EVENTS) - select HAVE_PERF_EVENTS -+ select HAVE_PERF_REGS -+ select HAVE_PERF_USER_STACK_DUMP - select HAVE_REGS_AND_STACK_ACCESS_API - select HAVE_SYSCALL_TRACEPOINTS - select HAVE_UID16 -diff --git a/arch/arm/include/uapi/asm/Kbuild b/arch/arm/include/uapi/asm/Kbuild -index 18d76fd..70a1c9d 100644 ---- a/arch/arm/include/uapi/asm/Kbuild -+++ b/arch/arm/include/uapi/asm/Kbuild -@@ -7,6 +7,7 @@ header-y += hwcap.h - header-y += ioctls.h - header-y += kvm_para.h - header-y += mman.h -+header-y += perf_regs.h - header-y += posix_types.h - header-y += ptrace.h - header-y += setup.h -diff --git a/arch/arm/include/uapi/asm/perf_regs.h b/arch/arm/include/uapi/asm/perf_regs.h -new file mode 100644 -index 0000000..ce59448 ---- /dev/null -+++ b/arch/arm/include/uapi/asm/perf_regs.h -@@ -0,0 +1,23 @@ -+#ifndef _ASM_ARM_PERF_REGS_H -+#define _ASM_ARM_PERF_REGS_H -+ -+enum perf_event_arm_regs { -+ PERF_REG_ARM_R0, -+ PERF_REG_ARM_R1, -+ PERF_REG_ARM_R2, -+ PERF_REG_ARM_R3, -+ PERF_REG_ARM_R4, -+ PERF_REG_ARM_R5, -+ PERF_REG_ARM_R6, -+ PERF_REG_ARM_R7, -+ PERF_REG_ARM_R8, -+ PERF_REG_ARM_R9, -+ PERF_REG_ARM_R10, -+ PERF_REG_ARM_FP, -+ PERF_REG_ARM_IP, -+ PERF_REG_ARM_SP, -+ PERF_REG_ARM_LR, -+ PERF_REG_ARM_PC, -+ PERF_REG_ARM_MAX, -+}; -+#endif /* _ASM_ARM_PERF_REGS_H */ -diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile -index 5140df5f..9b818ca 100644 ---- a/arch/arm/kernel/Makefile -+++ b/arch/arm/kernel/Makefile -@@ -78,6 +78,7 @@ obj-$(CONFIG_CPU_XSC3) += xscale-cp0.o - obj-$(CONFIG_CPU_MOHAWK) += xscale-cp0.o - obj-$(CONFIG_CPU_PJ4) += pj4-cp0.o - obj-$(CONFIG_IWMMXT) += iwmmxt.o -+obj-$(CONFIG_PERF_EVENTS) += perf_regs.o - obj-$(CONFIG_HW_PERF_EVENTS) += perf_event.o perf_event_cpu.o - AFLAGS_iwmmxt.o := -Wa,-mcpu=iwmmxt - obj-$(CONFIG_ARM_CPU_TOPOLOGY) += topology.o -diff --git a/arch/arm/kernel/perf_regs.c b/arch/arm/kernel/perf_regs.c -new file mode 100644 -index 0000000..6e4379c ---- /dev/null -+++ b/arch/arm/kernel/perf_regs.c -@@ -0,0 +1,30 @@ -+ -+#include <linux/errno.h> -+#include <linux/kernel.h> -+#include <linux/perf_event.h> -+#include <linux/bug.h> -+#include <asm/perf_regs.h> -+#include <asm/ptrace.h> -+ -+u64 perf_reg_value(struct pt_regs *regs, int idx) -+{ -+ if (WARN_ON_ONCE((u32)idx >= PERF_REG_ARM_MAX)) -+ return 0; -+ -+ return regs->uregs[idx]; -+} -+ -+#define REG_RESERVED (~((1ULL << PERF_REG_ARM_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_32; -+} --- -1.9.1 - |