106045edb8627846336531a560cb32b5608e85d1
[safe/jmp/linux-2.6] / include / asm-arm / proc-fns.h
1 /*
2  *  linux/include/asm-arm/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 #include <linux/config.h>
17
18 /*
19  * Work out if we need multiple CPU support
20  */
21 #undef MULTI_CPU
22 #undef CPU_NAME
23
24 /*
25  * CPU_NAME - the prefix for CPU related functions
26  */
27
28 #ifdef CONFIG_CPU_32
29 # ifdef CONFIG_CPU_ARM610
30 #  ifdef CPU_NAME
31 #   undef  MULTI_CPU
32 #   define MULTI_CPU
33 #  else
34 #   define CPU_NAME cpu_arm6
35 #  endif
36 # endif
37 # ifdef CONFIG_CPU_ARM710
38 #  ifdef CPU_NAME
39 #   undef  MULTI_CPU
40 #   define MULTI_CPU
41 #  else
42 #   define CPU_NAME cpu_arm7
43 #  endif
44 # endif
45 # ifdef CONFIG_CPU_ARM720T
46 #  ifdef CPU_NAME
47 #   undef  MULTI_CPU
48 #   define MULTI_CPU
49 #  else
50 #   define CPU_NAME cpu_arm720
51 #  endif
52 # endif
53 # ifdef CONFIG_CPU_ARM920T
54 #  ifdef CPU_NAME
55 #   undef  MULTI_CPU
56 #   define MULTI_CPU
57 #  else
58 #   define CPU_NAME cpu_arm920
59 #  endif
60 # endif
61 # ifdef CONFIG_CPU_ARM922T
62 #  ifdef CPU_NAME
63 #   undef  MULTI_CPU
64 #   define MULTI_CPU
65 #  else
66 #   define CPU_NAME cpu_arm922
67 #  endif
68 # endif
69 # ifdef CONFIG_CPU_ARM925T
70 #  ifdef CPU_NAME
71 #   undef  MULTI_CPU
72 #   define MULTI_CPU
73 #  else
74 #   define CPU_NAME cpu_arm925
75 #  endif
76 # endif
77 # ifdef CONFIG_CPU_ARM926T
78 #  ifdef CPU_NAME
79 #   undef  MULTI_CPU
80 #   define MULTI_CPU
81 #  else
82 #   define CPU_NAME cpu_arm926
83 #  endif
84 # endif
85 # ifdef CONFIG_CPU_SA110
86 #  ifdef CPU_NAME
87 #   undef  MULTI_CPU
88 #   define MULTI_CPU
89 #  else
90 #   define CPU_NAME cpu_sa110
91 #  endif
92 # endif
93 # ifdef CONFIG_CPU_SA1100
94 #  ifdef CPU_NAME
95 #   undef  MULTI_CPU
96 #   define MULTI_CPU
97 #  else
98 #   define CPU_NAME cpu_sa1100
99 #  endif
100 # endif
101 # ifdef CONFIG_CPU_ARM1020
102 #  ifdef CPU_NAME
103 #   undef  MULTI_CPU
104 #   define MULTI_CPU
105 #  else
106 #   define CPU_NAME cpu_arm1020
107 #  endif
108 # endif
109 # ifdef CONFIG_CPU_ARM1020E
110 #  ifdef CPU_NAME
111 #   undef  MULTI_CPU
112 #   define MULTI_CPU
113 #  else
114 #   define CPU_NAME cpu_arm1020e
115 #  endif
116 # endif
117 # ifdef CONFIG_CPU_ARM1022
118 #  ifdef CPU_NAME
119 #   undef  MULTI_CPU
120 #   define MULTI_CPU
121 #  else
122 #   define CPU_NAME cpu_arm1022
123 #  endif
124 # endif
125 # ifdef CONFIG_CPU_ARM1026
126 #  ifdef CPU_NAME
127 #   undef  MULTI_CPU
128 #   define MULTI_CPU
129 #  else
130 #   define CPU_NAME cpu_arm1026
131 #  endif
132 # endif
133 # ifdef CONFIG_CPU_XSCALE
134 #  ifdef CPU_NAME
135 #   undef  MULTI_CPU
136 #   define MULTI_CPU
137 #  else
138 #   define CPU_NAME cpu_xscale
139 #  endif
140 # endif
141 # ifdef CONFIG_CPU_XSC3
142 #  ifdef CPU_NAME
143 #   undef  MULTI_CPU
144 #   define MULTI_CPU
145 #  else
146 #   define CPU_NAME cpu_xsc3
147 #  endif
148 # endif
149 # ifdef CONFIG_CPU_V6
150 #  ifdef CPU_NAME
151 #   undef  MULTI_CPU
152 #   define MULTI_CPU
153 #  else
154 #   define CPU_NAME cpu_v6
155 #  endif
156 # endif
157 #endif
158
159 #ifndef __ASSEMBLY__
160
161 #ifndef MULTI_CPU
162 #include "asm/cpu-single.h"
163 #else
164 #include "asm/cpu-multi32.h"
165 #endif
166
167 #include <asm/memory.h>
168
169 #define cpu_switch_mm(pgd,mm) cpu_do_switch_mm(virt_to_phys(pgd),mm)
170
171 #define cpu_get_pgd()   \
172         ({                                              \
173                 unsigned long pg;                       \
174                 __asm__("mrc    p15, 0, %0, c2, c0, 0"  \
175                          : "=r" (pg) : : "cc");         \
176                 pg &= ~0x3fff;                          \
177                 (pgd_t *)phys_to_virt(pg);              \
178         })
179
180 #endif /* __ASSEMBLY__ */
181 #endif /* __KERNEL__ */
182 #endif /* __ASM_PROCFNS_H */