1 #ifndef __ASM_SH_PERF_EVENT_H
2 #define __ASM_SH_PERF_EVENT_H
3 
4 struct hw_perf_event;
5 
6 #define MAX_HWEVENTS	2
7 
8 struct sh_pmu {
9 	const char	*name;
10 	unsigned int	num_events;
11 	void		(*disable_all)(void);
12 	void		(*enable_all)(void);
13 	void		(*enable)(struct hw_perf_event *, int);
14 	void		(*disable)(struct hw_perf_event *, int);
15 	u64		(*read)(int);
16 	int		(*event_map)(int);
17 	unsigned int	max_events;
18 	unsigned long	raw_event_mask;
19 	const int	(*cache_events)[PERF_COUNT_HW_CACHE_MAX]
20 				       [PERF_COUNT_HW_CACHE_OP_MAX]
21 				       [PERF_COUNT_HW_CACHE_RESULT_MAX];
22 };
23 
24 /* arch/sh/kernel/perf_event.c */
25 extern int register_sh_pmu(struct sh_pmu *);
26 extern int reserve_pmc_hardware(void);
27 extern void release_pmc_hardware(void);
28 
29 #endif /* __ASM_SH_PERF_EVENT_H */
30