mirror of
https://github.com/torvalds/linux.git
synced 2024-12-27 05:11:48 +00:00
52da443ec4
We currently bundle the callchain handling code with the PMU code, despite the fact the two are distinct, and the former can be useful even in the absence of the latter. Follow the example of arch/arm and factor the callchain handling into its own file dependent on CONFIG_PERF_EVENTS rather than CONFIG_HW_PERF_EVENTS. Signed-off-by: Mark Rutland <mark.rutland@arm.com> Cc: Will Deacon <will.deacon@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
35 lines
1.1 KiB
C
35 lines
1.1 KiB
C
/*
|
|
* Copyright (C) 2012 ARM Ltd.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef __ASM_PERF_EVENT_H
|
|
#define __ASM_PERF_EVENT_H
|
|
|
|
#ifdef CONFIG_PERF_EVENTS
|
|
struct pt_regs;
|
|
extern unsigned long perf_instruction_pointer(struct pt_regs *regs);
|
|
extern unsigned long perf_misc_flags(struct pt_regs *regs);
|
|
#define perf_misc_flags(regs) perf_misc_flags(regs)
|
|
#endif
|
|
|
|
#define perf_arch_fetch_caller_regs(regs, __ip) { \
|
|
(regs)->pc = (__ip); \
|
|
(regs)->regs[29] = (unsigned long) __builtin_frame_address(0); \
|
|
(regs)->sp = current_stack_pointer; \
|
|
(regs)->pstate = PSR_MODE_EL1h; \
|
|
}
|
|
|
|
#endif
|