Merge master.kernel.org:/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog
[linux-2.6] / include / asm-arm / glue.h
1 /*
2  *  linux/include/asm-arm/glue.h
3  *
4  *  Copyright (C) 1997-1999 Russell King
5  *  Copyright (C) 2000-2002 Deep Blue Solutions Ltd.
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License version 2 as
9  * published by the Free Software Foundation.
10  *
11  *  This file provides the glue to stick the processor-specific bits
12  *  into the kernel in an efficient manner.  The idea is to use branches
13  *  when we're only targetting one class of TLB, or indirect calls
14  *  when we're targetting multiple classes of TLBs.
15  */
16 #ifdef __KERNEL__
17
18
19 #ifdef __STDC__
20 #define ____glue(name,fn)       name##fn
21 #else
22 #define ____glue(name,fn)       name/**/fn
23 #endif
24 #define __glue(name,fn)         ____glue(name,fn)
25
26
27
28 /*
29  *      Data Abort Model
30  *      ================
31  *
32  *      We have the following to choose from:
33  *        arm6          - ARM6 style
34  *        arm7          - ARM7 style
35  *        v4_early      - ARMv4 without Thumb early abort handler
36  *        v4t_late      - ARMv4 with Thumb late abort handler
37  *        v4t_early     - ARMv4 with Thumb early abort handler
38  *        v5tej_early   - ARMv5 with Thumb and Java early abort handler
39  *        xscale        - ARMv5 with Thumb with Xscale extensions
40  *        v6_early      - ARMv6 generic early abort handler
41  */
42 #undef CPU_ABORT_HANDLER
43 #undef MULTI_ABORT
44
45 #if defined(CONFIG_CPU_ARM610)
46 # ifdef CPU_ABORT_HANDLER
47 #  define MULTI_ABORT 1
48 # else
49 #  define CPU_ABORT_HANDLER cpu_arm6_data_abort
50 # endif
51 #endif
52
53 #if defined(CONFIG_CPU_ARM710)
54 # ifdef CPU_ABORT_HANDLER
55 #  define MULTI_ABORT 1
56 # else
57 #  define CPU_ABORT_HANDLER cpu_arm7_data_abort
58 # endif
59 #endif
60
61 #ifdef CONFIG_CPU_ABRT_LV4T
62 # ifdef CPU_ABORT_HANDLER
63 #  define MULTI_ABORT 1
64 # else
65 #  define CPU_ABORT_HANDLER v4t_late_abort
66 # endif
67 #endif
68
69 #ifdef CONFIG_CPU_ABRT_EV4
70 # ifdef CPU_ABORT_HANDLER
71 #  define MULTI_ABORT 1
72 # else
73 #  define CPU_ABORT_HANDLER v4_early_abort
74 # endif
75 #endif
76
77 #ifdef CONFIG_CPU_ABRT_EV4T
78 # ifdef CPU_ABORT_HANDLER
79 #  define MULTI_ABORT 1
80 # else
81 #  define CPU_ABORT_HANDLER v4t_early_abort
82 # endif
83 #endif
84
85 #ifdef CONFIG_CPU_ABRT_EV5TJ
86 # ifdef CPU_ABORT_HANDLER
87 #  define MULTI_ABORT 1
88 # else
89 #  define CPU_ABORT_HANDLER v5tj_early_abort
90 # endif
91 #endif
92
93 #ifdef CONFIG_CPU_ABRT_EV5T
94 # ifdef CPU_ABORT_HANDLER
95 #  define MULTI_ABORT 1
96 # else
97 #  define CPU_ABORT_HANDLER v5t_early_abort
98 # endif
99 #endif
100
101 #ifdef CONFIG_CPU_ABRT_EV6
102 # ifdef CPU_ABORT_HANDLER
103 #  define MULTI_ABORT 1
104 # else
105 #  define CPU_ABORT_HANDLER v6_early_abort
106 # endif
107 #endif
108
109 #ifndef CPU_ABORT_HANDLER
110 #error Unknown data abort handler type
111 #endif
112
113 #endif