Merge master.kernel.org:/home/rmk/linux-2.6-arm
[linux-2.6] / arch / ppc / oprofile / op_impl.h
1 /*
2  * Copyright (C) 2004 Anton Blanchard <anton@au.ibm.com>, IBM
3  *
4  * Based on alpha version.
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version
9  * 2 of the License, or (at your option) any later version.
10  */
11
12 #ifndef OP_IMPL_H
13 #define OP_IMPL_H 1
14
15 #define OP_MAX_COUNTER 8
16
17 /* Per-counter configuration as set via oprofilefs.  */
18 struct op_counter_config {
19         unsigned long enabled;
20         unsigned long event;
21         unsigned long count;
22         unsigned long kernel;
23         unsigned long user;
24         unsigned long unit_mask;
25 };
26
27 /* System-wide configuration as set via oprofilefs.  */
28 struct op_system_config {
29         unsigned long enable_kernel;
30         unsigned long enable_user;
31 };
32
33 /* Per-arch configuration */
34 struct op_ppc32_model {
35         void (*reg_setup) (struct op_counter_config *,
36                            struct op_system_config *,
37                            int num_counters);
38         void (*start) (struct op_counter_config *);
39         void (*stop) (void);
40         void (*handle_interrupt) (struct pt_regs *,
41                                   struct op_counter_config *);
42         int num_counters;
43 };
44
45 #endif /* OP_IMPL_H */