Skip to content

Commit

Permalink
ARC: perf: Add kernel callchain support
Browse files Browse the repository at this point in the history
Signed-off-by: Mischa Jonker <mjonker@synopsys.com>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
  • Loading branch information
Vineet Gupta committed Apr 20, 2015
1 parent 0a8a476 commit 389e316
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions arch/arc/kernel/perf_event.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
#include <linux/perf_event.h>
#include <linux/platform_device.h>
#include <asm/arcregs.h>
#include <asm/stacktrace.h>

struct arc_pmu {
struct pmu pmu;
Expand All @@ -25,6 +26,34 @@ struct arc_pmu {
int ev_hw_idx[PERF_COUNT_ARC_HW_MAX];
};

struct arc_callchain_trace {
int depth;
void *perf_stuff;
};

static int callchain_trace(unsigned int addr, void *data)
{
struct arc_callchain_trace *ctrl = data;
struct perf_callchain_entry *entry = ctrl->perf_stuff;
perf_callchain_store(entry, addr);

if (ctrl->depth++ < 3)
return 0;

return -1;
}

void
perf_callchain_kernel(struct perf_callchain_entry *entry, struct pt_regs *regs)
{
struct arc_callchain_trace ctrl = {
.depth = 0,
.perf_stuff = entry,
};

arc_unwind_core(NULL, regs, callchain_trace, &ctrl);
}

static struct arc_pmu *arc_pmu;

/* read counter #idx; note that counter# != event# on ARC! */
Expand Down

0 comments on commit 389e316

Please sign in to comment.