1 /** 2 * @file arch/alpha/oprofile/op_impl.h 3 * 4 * @remark Copyright 2002 OProfile authors 5 * @remark Read the file COPYING 6 * 7 * @author Richard Henderson <rth@twiddle.net> 8 */ 9 10 #ifndef OP_IMPL_H 11 #define OP_IMPL_H 1 12 13 /* Per-counter configuration as set via oprofilefs. */ 14 struct op_counter_config { 15 unsigned long enabled; 16 unsigned long event; 17 unsigned long count; 18 /* Dummies because I am too lazy to hack the userspace tools. */ 19 unsigned long kernel; 20 unsigned long user; 21 unsigned long unit_mask; 22 }; 23 24 /* System-wide configuration as set via oprofilefs. */ 25 struct op_system_config { 26 unsigned long enable_pal; 27 unsigned long enable_kernel; 28 unsigned long enable_user; 29 }; 30 31 /* Cached values for the various performance monitoring registers. */ 32 struct op_register_config { 33 unsigned long enable; 34 unsigned long mux_select; 35 unsigned long proc_mode; 36 unsigned long freq; 37 unsigned long reset_values; 38 unsigned long need_reset; 39 }; 40 41 /* Per-architecture configuration and hooks. */ 42 struct op_axp_model { 43 void (*reg_setup) (struct op_register_config *, 44 struct op_counter_config *, 45 struct op_system_config *); 46 void (*cpu_setup) (void *); 47 void (*reset_ctr) (struct op_register_config *, unsigned long); 48 void (*handle_interrupt) (unsigned long, struct pt_regs *, 49 struct op_counter_config *); 50 char *cpu_type; 51 unsigned char num_counters; 52 unsigned char can_set_proc_mode; 53 }; 54 55 #endif 56