46 lines
		
	
	
	
		
			1.1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			46 lines
		
	
	
	
		
			1.1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /*
 | ||
|  |  * Copyright (C) 2004 Anton Blanchard <anton@au.ibm.com>, IBM | ||
|  |  * | ||
|  |  * Based on alpha version. | ||
|  |  * | ||
|  |  * This program is free software; you can redistribute it and/or | ||
|  |  * modify it under the terms of the GNU General Public License | ||
|  |  * as published by the Free Software Foundation; either version | ||
|  |  * 2 of the License, or (at your option) any later version. | ||
|  |  */ | ||
|  | 
 | ||
|  | #ifndef OP_IMPL_H
 | ||
|  | #define OP_IMPL_H 1
 | ||
|  | 
 | ||
|  | #define OP_MAX_COUNTER 8
 | ||
|  | 
 | ||
|  | /* Per-counter configuration as set via oprofilefs.  */ | ||
|  | struct op_counter_config { | ||
|  | 	unsigned long enabled; | ||
|  | 	unsigned long event; | ||
|  | 	unsigned long count; | ||
|  | 	unsigned long kernel; | ||
|  | 	unsigned long user; | ||
|  | 	unsigned long unit_mask; | ||
|  | }; | ||
|  | 
 | ||
|  | /* System-wide configuration as set via oprofilefs.  */ | ||
|  | struct op_system_config { | ||
|  | 	unsigned long enable_kernel; | ||
|  | 	unsigned long enable_user; | ||
|  | }; | ||
|  | 
 | ||
|  | /* Per-arch configuration */ | ||
|  | struct op_ppc32_model { | ||
|  | 	void (*reg_setup) (struct op_counter_config *, | ||
|  | 			   struct op_system_config *, | ||
|  | 			   int num_counters); | ||
|  | 	void (*start) (struct op_counter_config *); | ||
|  | 	void (*stop) (void); | ||
|  | 	void (*handle_interrupt) (struct pt_regs *, | ||
|  | 				  struct op_counter_config *); | ||
|  | 	int num_counters; | ||
|  | }; | ||
|  | 
 | ||
|  | #endif /* OP_IMPL_H */
 |