Linux-2.6.12-rc2
[linux-2.6.git] / arch / alpha / oprofile / op_impl.h
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 configury 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