blob: 7bef2bf6be51333d67bde44a9f4bd6a0cf3500d5 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
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 */