summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorAnton Blanchard <anton@samba.org>2009-10-18 01:13:00 +0000
committerPaul Mackerras <paulus@samba.org>2009-10-28 16:13:03 +1100
commit196f02bf900c5eb6f85d889c4f70e7cc11fda7e8 (patch)
tree226fc9031be7be1011747ad7573efe664f4e5ce5 /arch
parenteecff81d1fcda22cd0029d11fe2a71dceed11dad (diff)
powerpc: perf_event: Add alignment-faults and emulation-faults software events
Hook up the alignment-faults and emulation-faults events for powerpc. Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/include/asm/emulated_ops.h16
1 files changed, 14 insertions, 2 deletions
diff --git a/arch/powerpc/include/asm/emulated_ops.h b/arch/powerpc/include/asm/emulated_ops.h
index 640c4e456aa5..f0fb4fc1f6e6 100644
--- a/arch/powerpc/include/asm/emulated_ops.h
+++ b/arch/powerpc/include/asm/emulated_ops.h
@@ -19,6 +19,7 @@
#define _ASM_POWERPC_EMULATED_OPS_H
#include <asm/atomic.h>
+#include <linux/perf_event.h>
#ifdef CONFIG_PPC_EMULATED_STATS
@@ -70,7 +71,18 @@ extern void ppc_warn_emulated_print(const char *type);
#endif /* !CONFIG_PPC_EMULATED_STATS */
-#define PPC_WARN_EMULATED(type, regs) __PPC_WARN_EMULATED(type)
-#define PPC_WARN_ALIGNMENT(type, regs) __PPC_WARN_EMULATED(type)
+#define PPC_WARN_EMULATED(type, regs) \
+ do { \
+ perf_sw_event(PERF_COUNT_SW_EMULATION_FAULTS, \
+ 1, 0, regs, 0); \
+ __PPC_WARN_EMULATED(type); \
+ } while (0)
+
+#define PPC_WARN_ALIGNMENT(type, regs) \
+ do { \
+ perf_sw_event(PERF_COUNT_SW_ALIGNMENT_FAULTS, \
+ 1, 0, regs, regs->dar); \
+ __PPC_WARN_EMULATED(type); \
+ } while (0)
#endif /* _ASM_POWERPC_EMULATED_OPS_H */