17ada189fSJamie Iles /* 27ada189fSJamie Iles * linux/arch/arm/include/asm/perf_event.h 37ada189fSJamie Iles * 47ada189fSJamie Iles * Copyright (C) 2009 picoChip Designs Ltd, Jamie Iles 57ada189fSJamie Iles * 67ada189fSJamie Iles * This program is free software; you can redistribute it and/or modify 77ada189fSJamie Iles * it under the terms of the GNU General Public License version 2 as 87ada189fSJamie Iles * published by the Free Software Foundation. 97ada189fSJamie Iles * 107ada189fSJamie Iles */ 117ada189fSJamie Iles 127ada189fSJamie Iles #ifndef __ARM_PERF_EVENT_H__ 137ada189fSJamie Iles #define __ARM_PERF_EVENT_H__ 147ada189fSJamie Iles 15d39976f0SMark Rutland #ifdef CONFIG_PERF_EVENTS 16e50c5418SMarc Zyngier struct pt_regs; 17e50c5418SMarc Zyngier extern unsigned long perf_instruction_pointer(struct pt_regs *regs); 18e50c5418SMarc Zyngier extern unsigned long perf_misc_flags(struct pt_regs *regs); 19e50c5418SMarc Zyngier #define perf_misc_flags(regs) perf_misc_flags(regs) 20c7cc504bSMarc Zyngier #endif 21e50c5418SMarc Zyngier 22*b3eac026SHou Pengyang #define perf_arch_fetch_caller_regs(regs, __ip) { \ 23*b3eac026SHou Pengyang (regs)->ARM_pc = (__ip); \ 24*b3eac026SHou Pengyang (regs)->ARM_fp = (unsigned long) __builtin_frame_address(0); \ 25*b3eac026SHou Pengyang (regs)->ARM_sp = current_stack_pointer; \ 26*b3eac026SHou Pengyang (regs)->ARM_cpsr = SVC_MODE; \ 27*b3eac026SHou Pengyang } 28*b3eac026SHou Pengyang 297ada189fSJamie Iles #endif /* __ARM_PERF_EVENT_H__ */ 30