diff options
Diffstat (limited to 'arch/parisc/kernel/perf_event.c')
| -rw-r--r-- | arch/parisc/kernel/perf_event.c | 27 | 
1 files changed, 27 insertions, 0 deletions
diff --git a/arch/parisc/kernel/perf_event.c b/arch/parisc/kernel/perf_event.c new file mode 100644 index 000000000000..f90b83886ab4 --- /dev/null +++ b/arch/parisc/kernel/perf_event.c @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Performance event support for parisc + * + * Copyright (C) 2025 by Helge Deller <deller@gmx.de> + */ + +#include <linux/kernel.h> +#include <linux/perf_event.h> +#include <asm/unwind.h> + +void perf_callchain_kernel(struct perf_callchain_entry_ctx *entry, +			   struct pt_regs *regs) +{ + +	struct unwind_frame_info info; + +	unwind_frame_init_task(&info, current, NULL); +	while (1) { +		if (unwind_once(&info) < 0 || info.ip == 0) +			break; + +		if (!__kernel_text_address(info.ip) || +			perf_callchain_store(entry, info.ip)) +				return; +	} +}  | 
