11 #define KMSG_COMPONENT "perf"
12 #define pr_fmt(fmt) KMSG_COMPONENT ": " fmt
14 #include <linux/kernel.h>
15 #include <linux/perf_event.h>
17 #include <linux/export.h>
21 #include <asm/processor.h>
25 if (cpum_cf_avail() || cpum_sf_avail())
26 return "CPU-measurement facilities (CPUMF)";
54 memset(&cf_info, 0,
sizeof(cf_info));
55 if (!qctri(&cf_info)) {
56 pr_info(
"CPU[%i] CPUM_CF: ver=%u.%u A=%04x E=%04x C=%04x\n",
60 &cf_info,
sizeof(cf_info));
69 unsigned long low,
unsigned long high)
76 if (sp < low || sp > high -
sizeof(*sf))
79 perf_callchain_store(entry, sf->
gprs[8] & PSW_ADDR_INSN);
86 if (sp <= low || sp > high -
sizeof(*sf))
89 perf_callchain_store(entry,
90 sf->
gprs[8] & PSW_ADDR_INSN);
93 sp = (
unsigned long) (sf + 1);
94 if (sp <= low || sp > high -
sizeof(*regs))
97 perf_callchain_store(entry, sf->
gprs[8] & PSW_ADDR_INSN);
112 head = regs->
gprs[15];