Merge branch 'master' of ssh://master.kernel.org/pub/scm/linux/kernel/git/linville...
[kernel.git] / arch / arm / include / asm / proc-fns.h
1 /*
2  *  arch/arm/include/asm/proc-fns.h
3  *
4  *  Copyright (C) 1997-1999 Russell King
5  *  Copyright (C) 2000 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 #ifndef __ASM_PROCFNS_H
12 #define __ASM_PROCFNS_H
13
14 #ifdef __KERNEL__
15
16
17 /*
18  * Work out if we need multiple CPU support
19  */
20 #undef MULTI_CPU
21 #undef CPU_NAME
22
23 /*
24  * CPU_NAME - the prefix for CPU related functions
25  */
26
27 #ifdef CONFIG_CPU_ARM610
28 # ifdef CPU_NAME
29 #  undef  MULTI_CPU
30 #  define MULTI_CPU
31 # else
32 #  define CPU_NAME cpu_arm6
33 # endif
34 #endif
35
36 #ifdef CONFIG_CPU_ARM7TDMI
37 # ifdef CPU_NAME
38 #  undef  MULTI_CPU
39 #  define MULTI_CPU
40 # else
41 #  define CPU_NAME cpu_arm7tdmi
42 # endif
43 #endif
44
45 #ifdef CONFIG_CPU_ARM710
46 # ifdef CPU_NAME
47 #  undef  MULTI_CPU
48 #  define MULTI_CPU
49 # else
50 #  define CPU_NAME cpu_arm7
51 # endif
52 #endif
53
54 #ifdef CONFIG_CPU_ARM720T
55 # ifdef CPU_NAME
56 #  undef  MULTI_CPU
57 #  define MULTI_CPU
58 # else
59 #  define CPU_NAME cpu_arm720
60 # endif
61 #endif
62
63 #ifdef CONFIG_CPU_ARM740T
64 # ifdef CPU_NAME
65 #  undef  MULTI_CPU
66 #  define MULTI_CPU
67 # else
68 #  define CPU_NAME cpu_arm740
69 # endif
70 #endif
71
72 #ifdef CONFIG_CPU_ARM9TDMI
73 # ifdef CPU_NAME
74 #  undef  MULTI_CPU
75 #  define MULTI_CPU
76 # else
77 #  define CPU_NAME cpu_arm9tdmi
78 # endif
79 #endif
80
81 #ifdef CONFIG_CPU_ARM920T
82 # ifdef CPU_NAME
83 #  undef  MULTI_CPU
84 #  define MULTI_CPU
85 # else
86 #  define CPU_NAME cpu_arm920
87 # endif
88 #endif
89
90 #ifdef CONFIG_CPU_ARM922T
91 # ifdef CPU_NAME
92 #  undef  MULTI_CPU
93 #  define MULTI_CPU
94 # else
95 #  define CPU_NAME cpu_arm922
96 # endif
97 #endif
98
99 #ifdef CONFIG_CPU_FA526
100 # ifdef CPU_NAME
101 #  undef  MULTI_CPU
102 #  define MULTI_CPU
103 # else
104 #  define CPU_NAME cpu_fa526
105 # endif
106 #endif
107
108 #ifdef CONFIG_CPU_ARM925T
109 # ifdef CPU_NAME
110 #  undef  MULTI_CPU
111 #  define MULTI_CPU
112 # else
113 #  define CPU_NAME cpu_arm925
114 # endif
115 #endif
116
117 #ifdef CONFIG_CPU_ARM926T
118 # ifdef CPU_NAME
119 #  undef  MULTI_CPU
120 #  define MULTI_CPU
121 # else
122 #  define CPU_NAME cpu_arm926
123 # endif
124 #endif
125
126 #ifdef CONFIG_CPU_ARM940T
127 # ifdef CPU_NAME
128 #  undef  MULTI_CPU
129 #  define MULTI_CPU
130 # else
131 #  define CPU_NAME cpu_arm940
132 # endif
133 #endif
134
135 #ifdef CONFIG_CPU_ARM946E
136 # ifdef CPU_NAME
137 #  undef  MULTI_CPU
138 #  define MULTI_CPU
139 # else
140 #  define CPU_NAME cpu_arm946
141 # endif
142 #endif
143
144 #ifdef CONFIG_CPU_SA110
145 # ifdef CPU_NAME
146 #  undef  MULTI_CPU
147 #  define MULTI_CPU
148 # else
149 #  define CPU_NAME cpu_sa110
150 # endif
151 #endif
152
153 #ifdef CONFIG_CPU_SA1100
154 # ifdef CPU_NAME
155 #  undef  MULTI_CPU
156 #  define MULTI_CPU
157 # else
158 #  define CPU_NAME cpu_sa1100
159 # endif
160 #endif
161
162 #ifdef CONFIG_CPU_ARM1020
163 # ifdef CPU_NAME
164 #  undef  MULTI_CPU
165 #  define MULTI_CPU
166 # else
167 #  define CPU_NAME cpu_arm1020
168 # endif
169 #endif
170
171 #ifdef CONFIG_CPU_ARM1020E
172 # ifdef CPU_NAME
173 #  undef  MULTI_CPU
174 #  define MULTI_CPU
175 # else
176 #  define CPU_NAME cpu_arm1020e
177 # endif
178 #endif
179
180 #ifdef CONFIG_CPU_ARM1022
181 # ifdef CPU_NAME
182 #  undef  MULTI_CPU
183 #  define MULTI_CPU
184 # else
185 #  define CPU_NAME cpu_arm1022
186 # endif
187 #endif
188
189 #ifdef CONFIG_CPU_ARM1026
190 # ifdef CPU_NAME
191 #  undef  MULTI_CPU
192 #  define MULTI_CPU
193 # else
194 #  define CPU_NAME cpu_arm1026
195 # endif
196 #endif
197
198 #ifdef CONFIG_CPU_XSCALE
199 # ifdef CPU_NAME
200 #  undef  MULTI_CPU
201 #  define MULTI_CPU
202 # else
203 #  define CPU_NAME cpu_xscale
204 # endif
205 #endif
206
207 #ifdef CONFIG_CPU_XSC3
208 # ifdef CPU_NAME
209 #  undef  MULTI_CPU
210 #  define MULTI_CPU
211 # else
212 #  define CPU_NAME cpu_xsc3
213 # endif
214 #endif
215
216 #ifdef CONFIG_CPU_MOHAWK
217 # ifdef CPU_NAME
218 #  undef  MULTI_CPU
219 #  define MULTI_CPU
220 # else
221 #  define CPU_NAME cpu_mohawk
222 # endif
223 #endif
224
225 #ifdef CONFIG_CPU_FEROCEON
226 # ifdef CPU_NAME
227 #  undef  MULTI_CPU
228 #  define MULTI_CPU
229 # else
230 #  define CPU_NAME cpu_feroceon
231 # endif
232 #endif
233
234 #ifdef CONFIG_CPU_V6
235 # ifdef CPU_NAME
236 #  undef  MULTI_CPU
237 #  define MULTI_CPU
238 # else
239 #  define CPU_NAME cpu_v6
240 # endif
241 #endif
242
243 #ifdef CONFIG_CPU_V7
244 # ifdef CPU_NAME
245 #  undef  MULTI_CPU
246 #  define MULTI_CPU
247 # else
248 #  define CPU_NAME cpu_v7
249 # endif
250 #endif
251
252 #ifndef __ASSEMBLY__
253
254 #ifndef MULTI_CPU
255 #include <asm/cpu-single.h>
256 #else
257 #include <asm/cpu-multi32.h>
258 #endif
259
260 #include <asm/memory.h>
261
262 #ifdef CONFIG_MMU
263
264 #define cpu_switch_mm(pgd,mm) cpu_do_switch_mm(virt_to_phys(pgd),mm)
265
266 #define cpu_get_pgd()   \
267         ({                                              \
268                 unsigned long pg;                       \
269                 __asm__("mrc    p15, 0, %0, c2, c0, 0"  \
270                          : "=r" (pg) : : "cc");         \
271                 pg &= ~0x3fff;                          \
272                 (pgd_t *)phys_to_virt(pg);              \
273         })
274
275 #endif
276
277 #endif /* __ASSEMBLY__ */
278 #endif /* __KERNEL__ */
279 #endif /* __ASM_PROCFNS_H */