merge linus head to drm-mm branch
[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_V6
142 #  ifdef CPU_NAME
143 #   undef  MULTI_CPU
144 #   define MULTI_CPU
145 #  else
146 #   define CPU_NAME cpu_v6
147 #  endif
148 # endif
149 #endif
150
151 #ifndef __ASSEMBLY__
152
153 #ifndef MULTI_CPU
154 #include "asm/cpu-single.h"
155 #else
156 #include "asm/cpu-multi32.h"
157 #endif
158
159 #include <asm/memory.h>
160
161 #define cpu_switch_mm(pgd,mm) cpu_do_switch_mm(virt_to_phys(pgd),mm)
162
163 #define cpu_get_pgd()   \
164         ({                                              \
165                 unsigned long pg;                       \
166                 __asm__("mrc    p15, 0, %0, c2, c0, 0"  \
167                          : "=r" (pg) : : "cc");         \
168                 pg &= ~0x3fff;                          \
169                 (pgd_t *)phys_to_virt(pg);              \
170         })
171
172 #endif /* __ASSEMBLY__ */
173 #endif /* __KERNEL__ */
174 #endif /* __ASM_PROCFNS_H */