Blame view

arch/arm/mm/Kconfig 28.2 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
  comment "Processor Type"
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
2
3
4
  # Select CPU types depending on the architecture selected.  This selects
  # which CPUs we support in the kernel image, and the compiler instruction
  # optimiser behaviour.
07e0da78a   Hyok S. Choi   [ARM] nommu: add ...
5
6
  # ARM7TDMI
  config CPU_ARM7TDMI
c32b76557   Arnd Bergmann   ARM: 8374/1: no l...
7
  	bool
6b237a355   Russell King   [ARM] Make !MMU C...
8
  	depends on !MMU
07e0da78a   Hyok S. Choi   [ARM] nommu: add ...
9
10
11
  	select CPU_32v4T
  	select CPU_ABRT_LV4T
  	select CPU_CACHE_V4
b1b3f49ce   Russell King   ARM: config: sort...
12
  	select CPU_PABRT_LEGACY
07e0da78a   Hyok S. Choi   [ARM] nommu: add ...
13
14
15
16
17
18
  	help
  	  A 32-bit RISC microprocessor based on the ARM7 processor core
  	  which has no memory control unit and cache.
  
  	  Say Y if you want support for the ARM7TDMI processor.
  	  Otherwise, say N.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
19
20
  # ARM720T
  config CPU_ARM720T
17d44d7d8   Arnd Bergmann   ARM: no longer ma...
21
  	bool
260e98edc   Lennert Buytenhek   [ARM] 3761/1: fix...
22
  	select CPU_32v4T
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
23
24
25
  	select CPU_ABRT_LV4T
  	select CPU_CACHE_V4
  	select CPU_CACHE_VIVT
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
26
  	select CPU_COPY_V4WT if MMU
b1b3f49ce   Russell King   ARM: config: sort...
27
28
  	select CPU_CP15_MMU
  	select CPU_PABRT_LEGACY
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
29
  	select CPU_TLB_V4WT if MMU
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
30
31
32
33
34
35
  	help
  	  A 32-bit RISC processor with 8kByte Cache, Write Buffer and
  	  MMU built around an ARM7TDMI core.
  
  	  Say Y if you want support for the ARM720T processor.
  	  Otherwise, say N.
b731c3118   Hyok S. Choi   [ARM] nommu: add ...
36
37
  # ARM740T
  config CPU_ARM740T
17d44d7d8   Arnd Bergmann   ARM: no longer ma...
38
  	bool
6b237a355   Russell King   [ARM] Make !MMU C...
39
  	depends on !MMU
b731c3118   Hyok S. Choi   [ARM] nommu: add ...
40
41
  	select CPU_32v4T
  	select CPU_ABRT_LV4T
82d9b0d0c   Will Deacon   ARM: cache: remov...
42
  	select CPU_CACHE_V4
b731c3118   Hyok S. Choi   [ARM] nommu: add ...
43
  	select CPU_CP15_MPU
b1b3f49ce   Russell King   ARM: config: sort...
44
  	select CPU_PABRT_LEGACY
b731c3118   Hyok S. Choi   [ARM] nommu: add ...
45
46
47
48
49
50
51
  	help
  	  A 32-bit RISC processor with 8KB cache or 4KB variants,
  	  write buffer and MPU(Protection Unit) built around
  	  an ARM7TDMI core.
  
  	  Say Y if you want support for the ARM740T processor.
  	  Otherwise, say N.
43f5f0146   Hyok S. Choi   [ARM] nommu: add ...
52
53
  # ARM9TDMI
  config CPU_ARM9TDMI
c32b76557   Arnd Bergmann   ARM: 8374/1: no l...
54
  	bool
6b237a355   Russell King   [ARM] Make !MMU C...
55
  	depends on !MMU
43f5f0146   Hyok S. Choi   [ARM] nommu: add ...
56
  	select CPU_32v4T
0f45d7f36   Hyok S. Choi   [ARM] nommu: abor...
57
  	select CPU_ABRT_NOMMU
43f5f0146   Hyok S. Choi   [ARM] nommu: add ...
58
  	select CPU_CACHE_V4
b1b3f49ce   Russell King   ARM: config: sort...
59
  	select CPU_PABRT_LEGACY
43f5f0146   Hyok S. Choi   [ARM] nommu: add ...
60
61
62
63
64
65
  	help
  	  A 32-bit RISC microprocessor based on the ARM9 processor core
  	  which has no memory control unit and cache.
  
  	  Say Y if you want support for the ARM9TDMI processor.
  	  Otherwise, say N.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
66
67
  # ARM920T
  config CPU_ARM920T
17d44d7d8   Arnd Bergmann   ARM: no longer ma...
68
  	bool
260e98edc   Lennert Buytenhek   [ARM] 3761/1: fix...
69
  	select CPU_32v4T
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
70
71
72
  	select CPU_ABRT_EV4T
  	select CPU_CACHE_V4WT
  	select CPU_CACHE_VIVT
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
73
  	select CPU_COPY_V4WB if MMU
b1b3f49ce   Russell King   ARM: config: sort...
74
75
  	select CPU_CP15_MMU
  	select CPU_PABRT_LEGACY
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
76
  	select CPU_TLB_V4WBI if MMU
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
77
78
  	help
  	  The ARM920T is licensed to be produced by numerous vendors,
c768e6762   Hartley Sweeten   ARM: 5769/1: CPU_...
79
  	  and is used in the Cirrus EP93xx and the Samsung S3C2410.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
80
81
82
83
84
85
  
  	  Say Y if you want support for the ARM920T processor.
  	  Otherwise, say N.
  
  # ARM922T
  config CPU_ARM922T
17d44d7d8   Arnd Bergmann   ARM: no longer ma...
86
  	bool
260e98edc   Lennert Buytenhek   [ARM] 3761/1: fix...
87
  	select CPU_32v4T
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
88
89
90
  	select CPU_ABRT_EV4T
  	select CPU_CACHE_V4WT
  	select CPU_CACHE_VIVT
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
91
  	select CPU_COPY_V4WB if MMU
b1b3f49ce   Russell King   ARM: config: sort...
92
93
  	select CPU_CP15_MMU
  	select CPU_PABRT_LEGACY
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
94
  	select CPU_TLB_V4WBI if MMU
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
95
96
97
  	help
  	  The ARM922T is a version of the ARM920T, but with smaller
  	  instruction and data caches. It is used in Altera's
c53c9cf60   Andrew Victor   [ARM] 4331/3: Sup...
98
  	  Excalibur XA device family and Micrel's KS8695 Centaur.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
99
100
101
102
103
104
  
  	  Say Y if you want support for the ARM922T processor.
  	  Otherwise, say N.
  
  # ARM925T
  config CPU_ARM925T
17d44d7d8   Arnd Bergmann   ARM: no longer ma...
105
  	bool
260e98edc   Lennert Buytenhek   [ARM] 3761/1: fix...
106
  	select CPU_32v4T
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
107
108
109
  	select CPU_ABRT_EV4T
  	select CPU_CACHE_V4WT
  	select CPU_CACHE_VIVT
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
110
  	select CPU_COPY_V4WB if MMU
b1b3f49ce   Russell King   ARM: config: sort...
111
112
  	select CPU_CP15_MMU
  	select CPU_PABRT_LEGACY
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
113
  	select CPU_TLB_V4WBI if MMU
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
114
115
116
117
118
119
120
121
122
123
   	help
   	  The ARM925T is a mix between the ARM920T and ARM926T, but with
  	  different instruction and data caches. It is used in TI's OMAP
   	  device family.
  
   	  Say Y if you want support for the ARM925T processor.
   	  Otherwise, say N.
  
  # ARM926T
  config CPU_ARM926T
17d44d7d8   Arnd Bergmann   ARM: no longer ma...
124
  	bool
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
125
126
127
  	select CPU_32v5
  	select CPU_ABRT_EV5TJ
  	select CPU_CACHE_VIVT
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
128
  	select CPU_COPY_V4WB if MMU
b1b3f49ce   Russell King   ARM: config: sort...
129
130
  	select CPU_CP15_MMU
  	select CPU_PABRT_LEGACY
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
131
  	select CPU_TLB_V4WBI if MMU
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
132
133
134
135
136
137
138
  	help
  	  This is a variant of the ARM920.  It has slightly different
  	  instruction sequences for cache and TLB operations.  Curiously,
  	  there is no documentation on it at the ARM corporate website.
  
  	  Say Y if you want support for the ARM926T processor.
  	  Otherwise, say N.
28853ac8f   Paulius Zaleckas   ARM: Add support ...
139
140
141
142
143
  # FA526
  config CPU_FA526
  	bool
  	select CPU_32v4
  	select CPU_ABRT_EV4
28853ac8f   Paulius Zaleckas   ARM: Add support ...
144
  	select CPU_CACHE_FA
b1b3f49ce   Russell King   ARM: config: sort...
145
  	select CPU_CACHE_VIVT
28853ac8f   Paulius Zaleckas   ARM: Add support ...
146
  	select CPU_COPY_FA if MMU
b1b3f49ce   Russell King   ARM: config: sort...
147
148
  	select CPU_CP15_MMU
  	select CPU_PABRT_LEGACY
28853ac8f   Paulius Zaleckas   ARM: Add support ...
149
150
151
152
153
154
155
  	select CPU_TLB_FA if MMU
  	help
  	  The FA526 is a version of the ARMv4 compatible processor with
  	  Branch Target Buffer, Unified TLB and cache line size 16.
  
  	  Say Y if you want support for the FA526 processor.
  	  Otherwise, say N.
d60674eb5   Hyok S. Choi   [ARM] nommu: add ...
156
157
  # ARM940T
  config CPU_ARM940T
17d44d7d8   Arnd Bergmann   ARM: no longer ma...
158
  	bool
6b237a355   Russell King   [ARM] Make !MMU C...
159
  	depends on !MMU
d60674eb5   Hyok S. Choi   [ARM] nommu: add ...
160
  	select CPU_32v4T
0f45d7f36   Hyok S. Choi   [ARM] nommu: abor...
161
  	select CPU_ABRT_NOMMU
d60674eb5   Hyok S. Choi   [ARM] nommu: add ...
162
163
  	select CPU_CACHE_VIVT
  	select CPU_CP15_MPU
b1b3f49ce   Russell King   ARM: config: sort...
164
  	select CPU_PABRT_LEGACY
d60674eb5   Hyok S. Choi   [ARM] nommu: add ...
165
166
  	help
  	  ARM940T is a member of the ARM9TDMI family of general-
3cb2fccc5   Matt LaPlante   Fix misc Kconfig ...
167
  	  purpose microprocessors with MPU and separate 4KB
d60674eb5   Hyok S. Choi   [ARM] nommu: add ...
168
169
170
171
172
  	  instruction and 4KB data cases, each with a 4-word line
  	  length.
  
  	  Say Y if you want support for the ARM940T processor.
  	  Otherwise, say N.
f37f46eb1   Hyok S. Choi   [ARM] nommu: add ...
173
174
  # ARM946E-S
  config CPU_ARM946E
17d44d7d8   Arnd Bergmann   ARM: no longer ma...
175
  	bool
6b237a355   Russell King   [ARM] Make !MMU C...
176
  	depends on !MMU
f37f46eb1   Hyok S. Choi   [ARM] nommu: add ...
177
  	select CPU_32v5
0f45d7f36   Hyok S. Choi   [ARM] nommu: abor...
178
  	select CPU_ABRT_NOMMU
f37f46eb1   Hyok S. Choi   [ARM] nommu: add ...
179
180
  	select CPU_CACHE_VIVT
  	select CPU_CP15_MPU
b1b3f49ce   Russell King   ARM: config: sort...
181
  	select CPU_PABRT_LEGACY
f37f46eb1   Hyok S. Choi   [ARM] nommu: add ...
182
183
184
185
186
187
188
  	help
  	  ARM946E-S is a member of the ARM9E-S family of high-
  	  performance, 32-bit system-on-chip processor solutions.
  	  The TCM and ARMv5TE 32-bit instruction set is supported.
  
  	  Say Y if you want support for the ARM946E-S processor.
  	  Otherwise, say N.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
189
190
  # ARM1020 - needs validating
  config CPU_ARM1020
17d44d7d8   Arnd Bergmann   ARM: no longer ma...
191
  	bool
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
192
193
194
195
  	select CPU_32v5
  	select CPU_ABRT_EV4T
  	select CPU_CACHE_V4WT
  	select CPU_CACHE_VIVT
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
196
  	select CPU_COPY_V4WB if MMU
b1b3f49ce   Russell King   ARM: config: sort...
197
198
  	select CPU_CP15_MMU
  	select CPU_PABRT_LEGACY
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
199
  	select CPU_TLB_V4WBI if MMU
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
200
201
202
203
204
205
206
207
208
  	help
  	  The ARM1020 is the 32K cached version of the ARM10 processor,
  	  with an addition of a floating-point unit.
  
  	  Say Y if you want support for the ARM1020 processor.
  	  Otherwise, say N.
  
  # ARM1020E - needs validating
  config CPU_ARM1020E
17d44d7d8   Arnd Bergmann   ARM: no longer ma...
209
  	bool
b1b3f49ce   Russell King   ARM: config: sort...
210
  	depends on n
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
211
212
213
214
  	select CPU_32v5
  	select CPU_ABRT_EV4T
  	select CPU_CACHE_V4WT
  	select CPU_CACHE_VIVT
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
215
  	select CPU_COPY_V4WB if MMU
b1b3f49ce   Russell King   ARM: config: sort...
216
217
  	select CPU_CP15_MMU
  	select CPU_PABRT_LEGACY
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
218
  	select CPU_TLB_V4WBI if MMU
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
219
220
221
  
  # ARM1022E
  config CPU_ARM1022
17d44d7d8   Arnd Bergmann   ARM: no longer ma...
222
  	bool
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
223
224
225
  	select CPU_32v5
  	select CPU_ABRT_EV4T
  	select CPU_CACHE_VIVT
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
226
  	select CPU_COPY_V4WB if MMU # can probably do better
b1b3f49ce   Russell King   ARM: config: sort...
227
228
  	select CPU_CP15_MMU
  	select CPU_PABRT_LEGACY
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
229
  	select CPU_TLB_V4WBI if MMU
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
230
231
232
233
234
235
236
237
238
239
  	help
  	  The ARM1022E is an implementation of the ARMv5TE architecture
  	  based upon the ARM10 integer core with a 16KiB L1 Harvard cache,
  	  embedded trace macrocell, and a floating-point unit.
  
  	  Say Y if you want support for the ARM1022E processor.
  	  Otherwise, say N.
  
  # ARM1026EJ-S
  config CPU_ARM1026
17d44d7d8   Arnd Bergmann   ARM: no longer ma...
240
  	bool
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
241
242
243
  	select CPU_32v5
  	select CPU_ABRT_EV5T # But need Jazelle, but EV5TJ ignores bit 10
  	select CPU_CACHE_VIVT
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
244
  	select CPU_COPY_V4WB if MMU # can probably do better
b1b3f49ce   Russell King   ARM: config: sort...
245
246
  	select CPU_CP15_MMU
  	select CPU_PABRT_LEGACY
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
247
  	select CPU_TLB_V4WBI if MMU
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
248
249
250
251
252
253
254
255
256
  	help
  	  The ARM1026EJ-S is an implementation of the ARMv5TEJ architecture
  	  based upon the ARM10 integer core.
  
  	  Say Y if you want support for the ARM1026EJ-S processor.
  	  Otherwise, say N.
  
  # SA110
  config CPU_SA110
fa04e209a   Arnd Bergmann   ARM: rpc: autosel...
257
  	bool
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
258
259
260
261
262
  	select CPU_32v3 if ARCH_RPC
  	select CPU_32v4 if !ARCH_RPC
  	select CPU_ABRT_EV4
  	select CPU_CACHE_V4WB
  	select CPU_CACHE_VIVT
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
263
  	select CPU_COPY_V4WB if MMU
b1b3f49ce   Russell King   ARM: config: sort...
264
265
  	select CPU_CP15_MMU
  	select CPU_PABRT_LEGACY
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
266
  	select CPU_TLB_V4WB if MMU
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
267
268
269
270
271
272
273
274
275
276
277
278
  	help
  	  The Intel StrongARM(R) SA-110 is a 32-bit microprocessor and
  	  is available at five speeds ranging from 100 MHz to 233 MHz.
  	  More information is available at
  	  <http://developer.intel.com/design/strong/sa110.htm>.
  
  	  Say Y if you want support for the SA-110 processor.
  	  Otherwise, say N.
  
  # SA1100
  config CPU_SA1100
  	bool
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
279
280
281
282
  	select CPU_32v4
  	select CPU_ABRT_EV4
  	select CPU_CACHE_V4WB
  	select CPU_CACHE_VIVT
fefdaa06c   Hyok S. Choi   [ARM] nommu: defi...
283
  	select CPU_CP15_MMU
b1b3f49ce   Russell King   ARM: config: sort...
284
  	select CPU_PABRT_LEGACY
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
285
  	select CPU_TLB_V4WB if MMU
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
286
287
288
289
  
  # XScale
  config CPU_XSCALE
  	bool
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
290
291
292
  	select CPU_32v5
  	select CPU_ABRT_EV5T
  	select CPU_CACHE_VIVT
fefdaa06c   Hyok S. Choi   [ARM] nommu: defi...
293
  	select CPU_CP15_MMU
b1b3f49ce   Russell King   ARM: config: sort...
294
  	select CPU_PABRT_LEGACY
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
295
  	select CPU_TLB_V4WBI if MMU
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
296

23bdf86aa   Lennert Buytenhek   [ARM] 3377/2: add...
297
298
299
  # XScale Core Version 3
  config CPU_XSC3
  	bool
23bdf86aa   Lennert Buytenhek   [ARM] 3377/2: add...
300
301
302
  	select CPU_32v5
  	select CPU_ABRT_EV5T
  	select CPU_CACHE_VIVT
fefdaa06c   Hyok S. Choi   [ARM] nommu: defi...
303
  	select CPU_CP15_MMU
b1b3f49ce   Russell King   ARM: config: sort...
304
  	select CPU_PABRT_LEGACY
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
305
  	select CPU_TLB_V4WBI if MMU
23bdf86aa   Lennert Buytenhek   [ARM] 3377/2: add...
306
  	select IO_36
49cbe7863   Eric Miao   [ARM] pxa: add ba...
307
308
309
310
311
  # Marvell PJ1 (Mohawk)
  config CPU_MOHAWK
  	bool
  	select CPU_32v5
  	select CPU_ABRT_EV5T
49cbe7863   Eric Miao   [ARM] pxa: add ba...
312
  	select CPU_CACHE_VIVT
b1b3f49ce   Russell King   ARM: config: sort...
313
  	select CPU_COPY_V4WB if MMU
49cbe7863   Eric Miao   [ARM] pxa: add ba...
314
  	select CPU_CP15_MMU
b1b3f49ce   Russell King   ARM: config: sort...
315
  	select CPU_PABRT_LEGACY
49cbe7863   Eric Miao   [ARM] pxa: add ba...
316
  	select CPU_TLB_V4WBI if MMU
49cbe7863   Eric Miao   [ARM] pxa: add ba...
317

e50d64097   Assaf Hoffman   [ARM] Marvell Fer...
318
319
320
  # Feroceon
  config CPU_FEROCEON
  	bool
e50d64097   Assaf Hoffman   [ARM] Marvell Fer...
321
322
323
  	select CPU_32v5
  	select CPU_ABRT_EV5T
  	select CPU_CACHE_VIVT
0ed150718   Lennert Buytenhek   [ARM] Feroceon: F...
324
  	select CPU_COPY_FEROCEON if MMU
b1b3f49ce   Russell King   ARM: config: sort...
325
326
  	select CPU_CP15_MMU
  	select CPU_PABRT_LEGACY
99c6dc117   Lennert Buytenhek   [ARM] Feroceon: L...
327
  	select CPU_TLB_FEROCEON if MMU
e50d64097   Assaf Hoffman   [ARM] Marvell Fer...
328

d910a0aa2   Tzachi Perelstein   [ARM] Feroceon: s...
329
330
331
332
333
334
335
336
  config CPU_FEROCEON_OLD_ID
  	bool "Accept early Feroceon cores with an ARM926 ID"
  	depends on CPU_FEROCEON && !CPU_ARM926T
  	default y
  	help
  	  This enables the usage of some old Feroceon cores
  	  for which the CPU ID is equal to the ARM926 ID.
  	  Relevant for Feroceon-1850 and early Feroceon-2850.
a4553358d   Haojian Zhuang   ARM: pxa: support...
337
338
339
  # Marvell PJ4
  config CPU_PJ4
  	bool
a4553358d   Haojian Zhuang   ARM: pxa: support...
340
  	select ARM_THUMBEE
b1b3f49ce   Russell King   ARM: config: sort...
341
  	select CPU_V7
a4553358d   Haojian Zhuang   ARM: pxa: support...
342

de4901933   Gregory CLEMENT   arm: mm: Add supp...
343
344
345
  config CPU_PJ4B
  	bool
  	select CPU_V7
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
346
347
  # ARMv6
  config CPU_V6
17d44d7d8   Arnd Bergmann   ARM: no longer ma...
348
  	bool
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
349
350
351
352
  	select CPU_32v6
  	select CPU_ABRT_EV6
  	select CPU_CACHE_V6
  	select CPU_CACHE_VIPT
b1b3f49ce   Russell King   ARM: config: sort...
353
  	select CPU_COPY_V6 if MMU
fefdaa06c   Hyok S. Choi   [ARM] nommu: defi...
354
  	select CPU_CP15_MMU
7b4c965a0   Catalin Marinas   [ARM] 4504/1: nom...
355
  	select CPU_HAS_ASID if MMU
b1b3f49ce   Russell King   ARM: config: sort...
356
  	select CPU_PABRT_V6
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
357
  	select CPU_TLB_V6 if MMU
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
358

4a5f79e7e   Russell King   [ARM SMP] Add con...
359
  # ARMv6k
e399b1a4e   Russell King   ARM: v6k: introdu...
360
  config CPU_V6K
17d44d7d8   Arnd Bergmann   ARM: no longer ma...
361
  	bool
e399b1a4e   Russell King   ARM: v6k: introdu...
362
  	select CPU_32v6
60799c6dd   Russell King   ARM: v6k: do not ...
363
  	select CPU_32v6K
e399b1a4e   Russell King   ARM: v6k: introdu...
364
  	select CPU_ABRT_EV6
e399b1a4e   Russell King   ARM: v6k: introdu...
365
366
  	select CPU_CACHE_V6
  	select CPU_CACHE_VIPT
b1b3f49ce   Russell King   ARM: config: sort...
367
  	select CPU_COPY_V6 if MMU
e399b1a4e   Russell King   ARM: v6k: introdu...
368
369
  	select CPU_CP15_MMU
  	select CPU_HAS_ASID if MMU
b1b3f49ce   Russell King   ARM: config: sort...
370
  	select CPU_PABRT_V6
e399b1a4e   Russell King   ARM: v6k: introdu...
371
  	select CPU_TLB_V6 if MMU
4a5f79e7e   Russell King   [ARM SMP] Add con...
372

23688e999   Catalin Marinas   [ARM] armv7: add ...
373
374
  # ARMv7
  config CPU_V7
17d44d7d8   Arnd Bergmann   ARM: no longer ma...
375
  	bool
15490ef8f   Russell King   ARM: Avoid buildi...
376
  	select CPU_32v6K
23688e999   Catalin Marinas   [ARM] armv7: add ...
377
378
379
380
  	select CPU_32v7
  	select CPU_ABRT_EV7
  	select CPU_CACHE_V7
  	select CPU_CACHE_VIPT
b1b3f49ce   Russell King   ARM: config: sort...
381
  	select CPU_COPY_V6 if MMU
66567618f   Jonathan Austin   ARM: select CPU_C...
382
383
  	select CPU_CP15_MMU if MMU
  	select CPU_CP15_MPU if !MMU
2eb8c82bc   Catalin Marinas   [ARM] 4503/1: nom...
384
  	select CPU_HAS_ASID if MMU
b1b3f49ce   Russell King   ARM: config: sort...
385
  	select CPU_PABRT_V7
2ccdd1e77   Catalin Marinas   [ARM] 4394/1: ARM...
386
  	select CPU_TLB_V7 if MMU
23688e999   Catalin Marinas   [ARM] armv7: add ...
387

4477ca45f   Uwe Kleine-König   ARM: ARMv7-M: All...
388
389
390
391
392
  # ARMv7M
  config CPU_V7M
  	bool
  	select CPU_32v7M
  	select CPU_ABRT_NOMMU
bc0ee9d24   Jonathan Austin   ARM: 8607/1: V7M:...
393
  	select CPU_CACHE_V7M
4477ca45f   Uwe Kleine-König   ARM: ARMv7-M: All...
394
395
396
  	select CPU_CACHE_NOP
  	select CPU_PABRT_LEGACY
  	select CPU_THUMBONLY
bc7dea00a   Uwe Kleine-König   ARM: let CPUs not...
397
398
399
400
401
402
  config CPU_THUMBONLY
  	bool
  	# There are no CPUs available with MMU that don't implement an ARM ISA:
  	depends on !MMU
  	help
  	  Select this if your CPU doesn't support the 32 bit ARM instructions.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
403
404
405
406
  # Figure out what processor architecture version we should be using.
  # This defines the compiler instruction set which depends on the machine type.
  config CPU_32v3
  	bool
8762df4d5   Russell King   ARM: v6k: use CPU...
407
  	select CPU_USE_DOMAINS if MMU
f6f91b0d9   Russell King   ARM: allow kuser ...
408
  	select NEED_KUSER_HELPERS
51aaf81fa   Russell King   ARM: keep arch/ar...
409
  	select TLS_REG_EMUL if SMP || !MMU
fff7fb0b2   Zhaoxiu Zeng   lib/GCD.c: use bi...
410
  	select CPU_NO_EFFICIENT_FFS
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
411
412
413
  
  config CPU_32v4
  	bool
8762df4d5   Russell King   ARM: v6k: use CPU...
414
  	select CPU_USE_DOMAINS if MMU
f6f91b0d9   Russell King   ARM: allow kuser ...
415
  	select NEED_KUSER_HELPERS
51aaf81fa   Russell King   ARM: keep arch/ar...
416
  	select TLS_REG_EMUL if SMP || !MMU
fff7fb0b2   Zhaoxiu Zeng   lib/GCD.c: use bi...
417
  	select CPU_NO_EFFICIENT_FFS
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
418

260e98edc   Lennert Buytenhek   [ARM] 3761/1: fix...
419
420
  config CPU_32v4T
  	bool
8762df4d5   Russell King   ARM: v6k: use CPU...
421
  	select CPU_USE_DOMAINS if MMU
f6f91b0d9   Russell King   ARM: allow kuser ...
422
  	select NEED_KUSER_HELPERS
51aaf81fa   Russell King   ARM: keep arch/ar...
423
  	select TLS_REG_EMUL if SMP || !MMU
fff7fb0b2   Zhaoxiu Zeng   lib/GCD.c: use bi...
424
  	select CPU_NO_EFFICIENT_FFS
260e98edc   Lennert Buytenhek   [ARM] 3761/1: fix...
425

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
426
427
  config CPU_32v5
  	bool
8762df4d5   Russell King   ARM: v6k: use CPU...
428
  	select CPU_USE_DOMAINS if MMU
f6f91b0d9   Russell King   ARM: allow kuser ...
429
  	select NEED_KUSER_HELPERS
51aaf81fa   Russell King   ARM: keep arch/ar...
430
  	select TLS_REG_EMUL if SMP || !MMU
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
431
432
433
  
  config CPU_32v6
  	bool
b1b3f49ce   Russell King   ARM: config: sort...
434
  	select TLS_REG_EMUL if !CPU_32v6K && !MMU
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
435

e399b1a4e   Russell King   ARM: v6k: introdu...
436
  config CPU_32v6K
60799c6dd   Russell King   ARM: v6k: do not ...
437
  	bool
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
438

23688e999   Catalin Marinas   [ARM] armv7: add ...
439
440
  config CPU_32v7
  	bool
4477ca45f   Uwe Kleine-König   ARM: ARMv7-M: All...
441
442
  config CPU_32v7M
  	bool
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
443
  # The abort model
0f45d7f36   Hyok S. Choi   [ARM] nommu: abor...
444
445
  config CPU_ABRT_NOMMU
  	bool
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
  config CPU_ABRT_EV4
  	bool
  
  config CPU_ABRT_EV4T
  	bool
  
  config CPU_ABRT_LV4T
  	bool
  
  config CPU_ABRT_EV5T
  	bool
  
  config CPU_ABRT_EV5TJ
  	bool
  
  config CPU_ABRT_EV6
  	bool
23688e999   Catalin Marinas   [ARM] armv7: add ...
463
464
  config CPU_ABRT_EV7
  	bool
4fb284743   Kirill A. Shutemov   ARM: 5727/1: Pass...
465
  config CPU_PABRT_LEGACY
48d7927bd   Paul Brook   Add a prefetch ab...
466
  	bool
4fb284743   Kirill A. Shutemov   ARM: 5727/1: Pass...
467
468
469
470
  config CPU_PABRT_V6
  	bool
  
  config CPU_PABRT_V7
48d7927bd   Paul Brook   Add a prefetch ab...
471
  	bool
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
472
  # The cache model
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
473
474
475
476
477
478
479
480
481
482
483
  config CPU_CACHE_V4
  	bool
  
  config CPU_CACHE_V4WT
  	bool
  
  config CPU_CACHE_V4WB
  	bool
  
  config CPU_CACHE_V6
  	bool
23688e999   Catalin Marinas   [ARM] armv7: add ...
484
485
  config CPU_CACHE_V7
  	bool
4477ca45f   Uwe Kleine-König   ARM: ARMv7-M: All...
486
487
  config CPU_CACHE_NOP
  	bool
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
488
489
490
491
492
  config CPU_CACHE_VIVT
  	bool
  
  config CPU_CACHE_VIPT
  	bool
28853ac8f   Paulius Zaleckas   ARM: Add support ...
493
494
  config CPU_CACHE_FA
  	bool
bc0ee9d24   Jonathan Austin   ARM: 8607/1: V7M:...
495
496
  config CPU_CACHE_V7M
  	bool
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
497
  if MMU
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
498
  # The copy-page model
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
499
500
501
502
503
  config CPU_COPY_V4WT
  	bool
  
  config CPU_COPY_V4WB
  	bool
0ed150718   Lennert Buytenhek   [ARM] Feroceon: F...
504
505
  config CPU_COPY_FEROCEON
  	bool
28853ac8f   Paulius Zaleckas   ARM: Add support ...
506
507
  config CPU_COPY_FA
  	bool
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
508
509
510
511
  config CPU_COPY_V6
  	bool
  
  # This selects the TLB model
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
  config CPU_TLB_V4WT
  	bool
  	help
  	  ARM Architecture Version 4 TLB with writethrough cache.
  
  config CPU_TLB_V4WB
  	bool
  	help
  	  ARM Architecture Version 4 TLB with writeback cache.
  
  config CPU_TLB_V4WBI
  	bool
  	help
  	  ARM Architecture Version 4 TLB with writeback cache and invalidate
  	  instruction cache entry.
99c6dc117   Lennert Buytenhek   [ARM] Feroceon: L...
527
528
529
530
  config CPU_TLB_FEROCEON
  	bool
  	help
  	  Feroceon TLB (v4wbi with non-outer-cachable page table walks).
28853ac8f   Paulius Zaleckas   ARM: Add support ...
531
532
533
534
535
536
  config CPU_TLB_FA
  	bool
  	help
  	  Faraday ARM FA526 architecture, unified TLB with writeback cache
  	  and invalidate instruction cache entry. Branch target buffer is
  	  also supported.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
537
538
  config CPU_TLB_V6
  	bool
2ccdd1e77   Catalin Marinas   [ARM] 4394/1: ARM...
539
540
  config CPU_TLB_V7
  	bool
e220ba602   Dave Estes   arm: mm: qsd8x50:...
541
542
  config VERIFY_PERMISSION_FAULT
  	bool
f9c21a6ee   Hyok S. Choi   [ARM] nommu: avoi...
543
  endif
516793c61   Russell King   [ARM] ARMv6: add ...
544
545
546
547
548
  config CPU_HAS_ASID
  	bool
  	help
  	  This indicates whether the CPU has the ASID register; used to
  	  tag TLB and possibly cache entries.
fefdaa06c   Hyok S. Choi   [ARM] nommu: defi...
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
  config CPU_CP15
  	bool
  	help
  	  Processor has the CP15 register.
  
  config CPU_CP15_MMU
  	bool
  	select CPU_CP15
  	help
  	  Processor has the CP15 register, which has MMU related registers.
  
  config CPU_CP15_MPU
  	bool
  	select CPU_CP15
  	help
  	  Processor has the CP15 register, which has MPU related registers.
247055aa2   Catalin Marinas   ARM: 6384/1: Remo...
565
566
  config CPU_USE_DOMAINS
  	bool
247055aa2   Catalin Marinas   ARM: 6384/1: Remo...
567
568
569
  	help
  	  This option enables or disables the use of domain switching
  	  via the set_fs() function.
6b1814cde   Maxime Coquelin stm32   ARM: 8340/1: ARMv...
570
571
572
573
574
  config CPU_V7M_NUM_IRQ
  	int "Number of external interrupts connected to the NVIC"
  	depends on CPU_V7M
  	default 90 if ARCH_STM32
  	default 38 if ARCH_EFM32
45b0fa09c   Stefan Agner   ARM: 8369/1: ARMv...
575
  	default 112 if SOC_VF610
6b1814cde   Maxime Coquelin stm32   ARM: 8340/1: ARMv...
576
577
578
579
580
581
582
583
584
  	default 240
  	help
  	  This option indicates the number of interrupts connected to the NVIC.
  	  The value can be larger than the real number of interrupts supported
  	  by the system, but must not be lower.
  	  The default value is 240, corresponding to the maximum number of
  	  interrupts supported by the NVIC on Cortex-M family.
  
  	  If unsure, keep default value.
23bdf86aa   Lennert Buytenhek   [ARM] 3377/2: add...
585
586
587
588
589
  #
  # CPU supports 36-bit I/O
  #
  config IO_36
  	bool
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
590
  comment "Processor Features"
497b7e943   Catalin Marinas   ARM: LPAE: Add th...
591
592
  config ARM_LPAE
  	bool "Support for the Large Physical Address Extension"
08a183f02   Catalin Marinas   ARM: 7323/1: Do n...
593
594
  	depends on MMU && CPU_32v7 && !CPU_32v6 && !CPU_32v5 && \
  		!CPU_32v4 && !CPU_32v3
497b7e943   Catalin Marinas   ARM: LPAE: Add th...
595
596
597
598
599
600
601
  	help
  	  Say Y if you have an ARMv7 processor supporting the LPAE page
  	  table format and you would like to access memory beyond the
  	  4GB limit. The resulting kernel image will not run on
  	  processors without the LPA extension.
  
  	  If unsure, say N.
d8dc7fbd5   Russell King   ARM: re-implement...
602
603
604
  config ARM_PV_FIXUP
  	def_bool y
  	depends on ARM_LPAE && ARM_PATCH_PHYS_VIRT && ARCH_KEYSTONE
497b7e943   Catalin Marinas   ARM: LPAE: Add th...
605
606
607
608
609
  config ARCH_PHYS_ADDR_T_64BIT
  	def_bool ARM_LPAE
  
  config ARCH_DMA_ADDR_T_64BIT
  	bool
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
610
  config ARM_THUMB
bc7dea00a   Uwe Kleine-König   ARM: let CPUs not...
611
  	bool "Support Thumb user binaries" if !CPU_THUMBONLY
4477ca45f   Uwe Kleine-König   ARM: ARMv7-M: All...
612
613
614
615
616
  	depends on CPU_ARM720T || CPU_ARM740T || CPU_ARM920T || CPU_ARM922T || \
  		CPU_ARM925T || CPU_ARM926T || CPU_ARM940T || CPU_ARM946E || \
  		CPU_ARM1020 || CPU_ARM1020E || CPU_ARM1022 || CPU_ARM1026 || \
  		CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_V6 || CPU_V6K || \
  		CPU_V7 || CPU_FEROCEON || CPU_V7M
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
617
618
619
620
621
622
623
624
625
626
  	default y
  	help
  	  Say Y if you want to include kernel support for running user space
  	  Thumb binaries.
  
  	  The Thumb instruction set is a compressed form of the standard ARM
  	  instruction set resulting in smaller binaries at the expense of
  	  slightly less efficient code.
  
  	  If you don't know what this all is, saying Y is a safe choice.
d7f864be8   Catalin Marinas   ARMv7: Add suppor...
627
628
629
630
631
632
  config ARM_THUMBEE
  	bool "Enable ThumbEE CPU extension"
  	depends on CPU_V7
  	help
  	  Say Y here if you have a CPU with the ThumbEE extension and code to
  	  make use of it. Say N for code that can run on CPUs without ThumbEE.
5b6728d41   Dave Martin   ARM: virt: Add CO...
633
  config ARM_VIRT_EXT
651134b01   Will Deacon   ARM: virt: hide C...
634
635
636
  	bool
  	depends on MMU
  	default y if CPU_V7
5b6728d41   Dave Martin   ARM: virt: Add CO...
637
638
639
640
641
642
643
644
  	help
  	  Enable the kernel to make use of the ARM Virtualization
  	  Extensions to install hypervisors without run-time firmware
  	  assistance.
  
  	  A compliant bootloader is required in order to make maximum
  	  use of this feature.  Refer to Documentation/arm/Booting for
  	  details.
64d2dc384   Leif Lindholm   ARM: 6396/1: Add ...
645
  config SWP_EMULATE
e61bf2e0b   Shengjiu Wang   MLK-11676 ARM: im...
646
  	bool "Emulate SWP/SWPB instructions"
b6ccb9803   Will Deacon   ARM: 7954/1: mm: ...
647
  	depends on CPU_V7
64d2dc384   Leif Lindholm   ARM: 6396/1: Add ...
648
  	default y if SMP
b1b3f49ce   Russell King   ARM: config: sort...
649
  	select HAVE_PROC_CPU if PROC_FS
64d2dc384   Leif Lindholm   ARM: 6396/1: Add ...
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
  	help
  	  ARMv6 architecture deprecates use of the SWP/SWPB instructions.
  	  ARMv7 multiprocessing extensions introduce the ability to disable
  	  these instructions, triggering an undefined instruction exception
  	  when executed. Say Y here to enable software emulation of these
  	  instructions for userspace (not kernel) using LDREX/STREX.
  	  Also creates /proc/cpu/swp_emulation for statistics.
  
  	  In some older versions of glibc [<=2.8] SWP is used during futex
  	  trylock() operations with the assumption that the code will not
  	  be preempted. This invalid assumption may be more likely to fail
  	  with SWP emulation enabled, leading to deadlock of the user
  	  application.
  
  	  NOTE: when accessing uncached shared regions, LDREX/STREX rely
  	  on an external transaction monitoring block called a global
  	  monitor to maintain update atomicity. If your system does not
  	  implement a global monitor, this option can cause programs that
  	  perform SWP operations to uncached memory to deadlock.
  
  	  If unsure, say Y.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
671
672
673
674
675
676
677
678
  config CPU_BIG_ENDIAN
  	bool "Build big-endian kernel"
  	depends on ARCH_SUPPORTS_BIG_ENDIAN
  	help
  	  Say Y if you plan on running a kernel in big-endian mode.
  	  Note that your board must be properly built and your board
  	  port must properly enable any big-endian related features
  	  of your chipset/board/processor.
26584853a   Catalin Marinas   Add core support ...
679
680
681
  config CPU_ENDIAN_BE8
  	bool
  	depends on CPU_BIG_ENDIAN
e399b1a4e   Russell King   ARM: v6k: introdu...
682
  	default CPU_V6 || CPU_V6K || CPU_V7
26584853a   Catalin Marinas   Add core support ...
683
684
685
686
687
688
689
690
691
  	help
  	  Support for the BE-8 (big-endian) mode on ARMv6 and ARMv7 processors.
  
  config CPU_ENDIAN_BE32
  	bool
  	depends on CPU_BIG_ENDIAN
  	default !CPU_ENDIAN_BE8
  	help
  	  Support for the BE-32 (big-endian) mode on pre-ARMv6 processors.
6afd6fae1   Hyok S. Choi   [ARM] nommu: conf...
692
  config CPU_HIGH_VECTOR
6340aa61b   Robert P. J. Day   kbuild: Replace r...
693
  	depends on !MMU && CPU_CP15 && !CPU_ARM740T
6afd6fae1   Hyok S. Choi   [ARM] nommu: conf...
694
  	bool "Select the High exception vector"
6afd6fae1   Hyok S. Choi   [ARM] nommu: conf...
695
696
  	help
  	  Say Y here to select high exception vector(0xFFFF0000~).
9b7333a9c   Will Deacon   ARM: 7381/1: nomm...
697
  	  The exception vector can vary depending on the platform
6afd6fae1   Hyok S. Choi   [ARM] nommu: conf...
698
699
700
701
  	  design in nommu mode. If your platform needs to select
  	  high exception vector, say Y.
  	  Otherwise or if you are unsure, say N, and the low exception
  	  vector (0x00000000~) will be used.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
702
  config CPU_ICACHE_DISABLE
f12d0d7c7   Hyok S. Choi   [ARM] nommu: mana...
703
  	bool "Disable I-Cache (I-bit)"
bc0ee9d24   Jonathan Austin   ARM: 8607/1: V7M:...
704
  	depends on (CPU_CP15 && !(CPU_ARM720T || CPU_ARM740T || CPU_XSCALE || CPU_XSC3)) || CPU_V7M
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
705
706
707
708
709
  	help
  	  Say Y here to disable the processor instruction cache. Unless
  	  you have a reason not to or are unsure, say N.
  
  config CPU_DCACHE_DISABLE
f12d0d7c7   Hyok S. Choi   [ARM] nommu: mana...
710
  	bool "Disable D-Cache (C-bit)"
bc0ee9d24   Jonathan Austin   ARM: 8607/1: V7M:...
711
  	depends on (CPU_CP15 && !SMP) || CPU_V7M
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
712
713
714
  	help
  	  Say Y here to disable the processor data cache. Unless
  	  you have a reason not to or are unsure, say N.
f37f46eb1   Hyok S. Choi   [ARM] nommu: add ...
715
716
717
718
719
720
721
722
723
724
725
726
  config CPU_DCACHE_SIZE
  	hex
  	depends on CPU_ARM740T || CPU_ARM946E
  	default 0x00001000 if CPU_ARM740T
  	default 0x00002000 # default size for ARM946E-S
  	help
  	  Some cores are synthesizable to have various sized cache. For
  	  ARM946E-S case, it can vary from 0KB to 1MB.
  	  To support such cache operations, it is efficient to know the size
  	  before compile time.
  	  If your SoC is configured to have a different size, define the value
  	  here with proper conditions.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
727
728
  config CPU_DCACHE_WRITETHROUGH
  	bool "Force write through D-cache"
28853ac8f   Paulius Zaleckas   ARM: Add support ...
729
  	depends on (CPU_ARM740T || CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM940T || CPU_ARM946E || CPU_ARM1020 || CPU_FA526) && !CPU_DCACHE_DISABLE
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
730
731
732
733
734
735
736
  	default y if CPU_ARM925T
  	help
  	  Say Y here to use the data cache in writethrough mode. Unless you
  	  specifically require this or are unsure, say N.
  
  config CPU_CACHE_ROUND_ROBIN
  	bool "Round robin I and D cache replacement algorithm"
f37f46eb1   Hyok S. Choi   [ARM] nommu: add ...
737
  	depends on (CPU_ARM926T || CPU_ARM946E || CPU_ARM1020) && (!CPU_ICACHE_DISABLE || !CPU_DCACHE_DISABLE)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
738
739
740
741
742
743
  	help
  	  Say Y here to use the predictable round-robin cache replacement
  	  policy.  Unless you specifically require this or are unsure, say N.
  
  config CPU_BPREDICT_DISABLE
  	bool "Disable branch prediction"
bc0ee9d24   Jonathan Austin   ARM: 8607/1: V7M:...
744
  	depends on CPU_ARM1020 || CPU_V6 || CPU_V6K || CPU_MOHAWK || CPU_XSC3 || CPU_V7 || CPU_FA526 || CPU_V7M
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
745
746
  	help
  	  Say Y here to disable branch prediction.  If unsure, say N.
2d2669b62   Nicolas Pitre   [PATCH] ARM: 2651...
747

4b0e07a55   Nicolas Pitre   [PATCH] ARM: 2663...
748
749
  config TLS_REG_EMUL
  	bool
f6f91b0d9   Russell King   ARM: allow kuser ...
750
  	select NEED_KUSER_HELPERS
4b0e07a55   Nicolas Pitre   [PATCH] ARM: 2663...
751
  	help
70489c88d   Nicolas Pitre   [PATCH] ARM: 2680...
752
753
754
  	  An SMP system using a pre-ARMv6 processor (there are apparently
  	  a few prototypes like that in existence) and therefore access to
  	  that required register must be emulated.
4b0e07a55   Nicolas Pitre   [PATCH] ARM: 2663...
755

f6f91b0d9   Russell King   ARM: allow kuser ...
756
757
758
759
760
  config NEED_KUSER_HELPERS
  	bool
  
  config KUSER_HELPERS
  	bool "Enable kuser helpers in vector page" if !NEED_KUSER_HELPERS
08b964ff3   Nathan Lynch   ARM: 8198/1: make...
761
  	depends on MMU
f6f91b0d9   Russell King   ARM: allow kuser ...
762
763
764
765
766
767
768
769
770
  	default y
  	help
  	  Warning: disabling this option may break user programs.
  
  	  Provide kuser helpers in the vector page.  The kernel provides
  	  helper code to userspace in read only form at a fixed location
  	  in the high vector page to allow userspace to be independent of
  	  the CPU type fitted to the system.  This permits binaries to be
  	  run on ARMv4 through to ARMv7 without modification.
ac124504e   Nicolas Pitre   ARM: 7816/1: CONF...
771
  	  See Documentation/arm/kernel_user_helpers.txt for details.
f6f91b0d9   Russell King   ARM: allow kuser ...
772
773
774
775
776
777
  	  However, the fixed address nature of these helpers can be used
  	  by ROP (return orientated programming) authors when creating
  	  exploits.
  
  	  If all of the binaries and libraries which run on your platform
  	  are built specifically for your platform, and make no use of
ac124504e   Nicolas Pitre   ARM: 7816/1: CONF...
778
779
780
781
  	  these helpers, then you can turn this option off to hinder
  	  such exploits. However, in that case, if a binary or library
  	  relying on those helpers is run, it will receive a SIGILL signal,
  	  which will terminate the program.
f6f91b0d9   Russell King   ARM: allow kuser ...
782
783
784
  
  	  Say N here only if you are absolutely certain that you do not
  	  need these helpers; otherwise, the safe option is to say Y.
e5b61deb3   Nathan Lynch   ARM: 8332/1: add ...
785
786
  config VDSO
  	bool "Enable VDSO for acceleration of some system calls"
5d38000b3   Nathan Lynch   ARM: 8342/1: VDSO...
787
  	depends on AEABI && MMU && CPU_V7
e5b61deb3   Nathan Lynch   ARM: 8332/1: add ...
788
789
790
791
792
793
794
795
796
797
  	default y if ARM_ARCH_TIMER
  	select GENERIC_TIME_VSYSCALL
  	help
  	  Place in the process address space an ELF shared object
  	  providing fast implementations of gettimeofday and
  	  clock_gettime.  Systems that implement the ARM architected
  	  timer will receive maximum benefit.
  
  	  You must have glibc 2.22 or later for programs to seamlessly
  	  take advantage of this.
ad642d9f5   Catalin Marinas   ARM: 6188/1: Add ...
798
799
  config DMA_CACHE_RWFO
  	bool "Enable read/write for ownership DMA cache maintenance"
3bc28c8ed   Russell King   ARM: v6k: DMA_CAC...
800
  	depends on CPU_V6K && SMP
ad642d9f5   Catalin Marinas   ARM: 6188/1: Add ...
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
  	default y
  	help
  	  The Snoop Control Unit on ARM11MPCore does not detect the
  	  cache maintenance operations and the dma_{map,unmap}_area()
  	  functions may leave stale cache entries on other CPUs. By
  	  enabling this option, Read or Write For Ownership in the ARMv6
  	  DMA cache maintenance functions is performed. These LDR/STR
  	  instructions change the cache line state to shared or modified
  	  so that the cache operation has the desired effect.
  
  	  Note that the workaround is only valid on processors that do
  	  not perform speculative loads into the D-cache. For such
  	  processors, if cache maintenance operations are not broadcast
  	  in hardware, other workarounds are needed (e.g. cache
  	  maintenance broadcasting in software via FIQ).
953233dc9   Catalin Marinas   [ARM] 4134/1: Add...
816
817
  config OUTER_CACHE
  	bool
382266ad5   Catalin Marinas   [ARM] 4135/1: Add...
818

319f551a0   Catalin Marinas   ARM: 5994/1: ARM:...
819
820
  config OUTER_CACHE_SYNC
  	bool
f81309067   Russell King   ARM: move heavy b...
821
  	select ARM_HEAVY_MB
319f551a0   Catalin Marinas   ARM: 5994/1: ARM:...
822
823
824
  	help
  	  The outer cache has a outer_cache_fns.sync function pointer
  	  that can be used to drain the write buffer of the outer cache.
99c6dc117   Lennert Buytenhek   [ARM] Feroceon: L...
825
826
  config CACHE_FEROCEON_L2
  	bool "Enable the Feroceon L2 cache controller"
ba364fc75   Andrew Lunn   ARM: Kirkwood: Re...
827
  	depends on ARCH_MV78XX0 || ARCH_MVEBU
99c6dc117   Lennert Buytenhek   [ARM] Feroceon: L...
828
829
830
831
  	default y
  	select OUTER_CACHE
  	help
  	  This option enables the Feroceon L2 cache controller.
4360bb419   Ronen Shitrit   [ARM] Kirkwood: a...
832
833
834
  config CACHE_FEROCEON_L2_WRITETHROUGH
  	bool "Force Feroceon L2 cache write through"
  	depends on CACHE_FEROCEON_L2
4360bb419   Ronen Shitrit   [ARM] Kirkwood: a...
835
836
837
  	help
  	  Say Y here to use the Feroceon L2 cache in writethrough mode.
  	  Unless you specifically require this, say N for writeback mode.
ce5ea9f37   Dave Martin   ARM: l2x0/pl310: ...
838
839
840
841
842
843
844
845
846
847
848
849
850
  config MIGHT_HAVE_CACHE_L2X0
  	bool
  	help
  	  This option should be selected by machines which have a L2x0
  	  or PL310 cache controller, but where its use is optional.
  
  	  The only effect of this option is to make CACHE_L2X0 and
  	  related options available to the user for configuration.
  
  	  Boards or SoCs which always require the cache controller
  	  support to be present should select CACHE_L2X0 directly
  	  instead of this option, thus preventing the user from
  	  inadvertently configuring a broken kernel.
382266ad5   Catalin Marinas   [ARM] 4135/1: Add...
851
  config CACHE_L2X0
ce5ea9f37   Dave Martin   ARM: l2x0/pl310: ...
852
853
  	bool "Enable the L2x0 outer cache controller" if MIGHT_HAVE_CACHE_L2X0
  	default MIGHT_HAVE_CACHE_L2X0
382266ad5   Catalin Marinas   [ARM] 4135/1: Add...
854
  	select OUTER_CACHE
23107c542   Catalin Marinas   ARM: 5995/1: ARM:...
855
  	select OUTER_CACHE_SYNC
ba9279519   Catalin Marinas   Allow the L2X0 ou...
856
857
  	help
  	  This option enables the L2x0 PrimeCell.
905a09d57   Eric Miao   [ARM] pxa: add su...
858

b828f9602   Mark Rutland   ARM: 8611/1: l2x0...
859
860
861
862
863
864
  config CACHE_L2X0_PMU
  	bool "L2x0 performance monitor support" if CACHE_L2X0
  	depends on PERF_EVENTS
  	help
  	  This option enables support for the performance monitoring features
  	  of the L220 and PL310 outer cache controllers.
a641f3a6a   Russell King   ARM: l2c: fix dep...
865
  if CACHE_L2X0
c0fe18ba3   Russell King   ARM: l2c: move er...
866
867
  config PL310_ERRATA_588369
  	bool "PL310 errata: Clean & Invalidate maintenance operations do not invalidate clean lines"
c0fe18ba3   Russell King   ARM: l2c: move er...
868
869
870
871
872
873
874
  	help
  	   The PL310 L2 cache controller implements three types of Clean &
  	   Invalidate maintenance operations: by Physical Address
  	   (offset 0x7F0), by Index/Way (0x7F8) and by Way (0x7FC).
  	   They are architecturally defined to behave as the execution of a
  	   clean operation followed immediately by an invalidate operation,
  	   both performing to the same memory location. This functionality
80d3cb913   Shawn Guo   ARM: 8090/1: add ...
875
876
  	   is not correctly implemented in PL310 prior to r2p0 (fixed in r2p0)
  	   as clean lines are not invalidated as a result of these operations.
c0fe18ba3   Russell King   ARM: l2c: move er...
877
878
879
  
  config PL310_ERRATA_727915
  	bool "PL310 errata: Background Clean & Invalidate by Way operation can cause data corruption"
c0fe18ba3   Russell King   ARM: l2c: move er...
880
881
882
883
884
885
  	help
  	  PL310 implements the Clean & Invalidate by Way L2 cache maintenance
  	  operation (offset 0x7FC). This operation runs in background so that
  	  PL310 can handle normal accesses while it is in progress. Under very
  	  rare circumstances, due to this erratum, write data can be lost when
  	  PL310 treats a cacheable write transaction during a Clean &
80d3cb913   Shawn Guo   ARM: 8090/1: add ...
886
887
  	  Invalidate by Way operation.  Revisions prior to r3p1 are affected by
  	  this errata (fixed in r3p1).
c0fe18ba3   Russell King   ARM: l2c: move er...
888
889
890
  
  config PL310_ERRATA_753970
  	bool "PL310 errata: cache sync operation may be faulty"
c0fe18ba3   Russell King   ARM: l2c: move er...
891
892
893
894
895
896
897
898
899
900
901
902
903
904
  	help
  	  This option enables the workaround for the 753970 PL310 (r3p0) erratum.
  
  	  Under some condition the effect of cache sync operation on
  	  the store buffer still remains when the operation completes.
  	  This means that the store buffer is always asked to drain and
  	  this prevents it from merging any further writes. The workaround
  	  is to replace the normal offset of cache sync operation (0x730)
  	  by another offset targeting an unmapped PL310 register 0x740.
  	  This has the same effect as the cache sync operation: store buffer
  	  drain and waiting for all buffers empty.
  
  config PL310_ERRATA_769419
  	bool "PL310 errata: no automatic Store Buffer drain"
c0fe18ba3   Russell King   ARM: l2c: move er...
905
906
907
908
909
910
911
912
  	help
  	  On revisions of the PL310 prior to r3p2, the Store Buffer does
  	  not automatically drain. This can cause normal, non-cacheable
  	  writes to be retained when the memory system is idle, leading
  	  to suboptimal I/O performance for drivers using coherent DMA.
  	  This option adds a write barrier to the cpu_idle loop so that,
  	  on systems with an outer cache, the store buffer is drained
  	  explicitly.
a641f3a6a   Russell King   ARM: l2c: fix dep...
913
  endif
573a652fb   Lennert Buytenhek   ARM: Add Tauros2 ...
914
915
  config CACHE_TAUROS2
  	bool "Enable the Tauros2 L2 cache controller"
3f408fa07   Haojian Zhuang   ARM: mmp: select ...
916
  	depends on (ARCH_DOVE || ARCH_MMP || CPU_PJ4)
573a652fb   Lennert Buytenhek   ARM: Add Tauros2 ...
917
918
919
920
921
  	default y
  	select OUTER_CACHE
  	help
  	  This option enables the Tauros2 L2 cache controller (as
  	  found on PJ1/PJ4).
e7ecbc057   Masahiro Yamada   ARM: uniphier: ad...
922
923
924
925
926
927
928
929
930
  config CACHE_UNIPHIER
  	bool "Enable the UniPhier outer cache controller"
  	depends on ARCH_UNIPHIER
  	default y
  	select OUTER_CACHE
  	select OUTER_CACHE_SYNC
  	help
  	  This option enables the UniPhier outer cache (system cache)
  	  controller.
905a09d57   Eric Miao   [ARM] pxa: add su...
931
932
933
934
935
936
937
  config CACHE_XSC3L2
  	bool "Enable the L2 cache on XScale3"
  	depends on CPU_XSC3
  	default y
  	select OUTER_CACHE
  	help
  	  This option enables the L2 cache on XScale3.
910a17e57   Kirill A. Shutemov   ARM: 5700/1: ARM:...
938

5637a1264   Russell King   ARM: move L1_CACH...
939
940
  config ARM_L1_CACHE_SHIFT_6
  	bool
a092f2b15   Will Deacon   ARM: 7291/1: cach...
941
  	default y if CPU_V7
5637a1264   Russell King   ARM: move L1_CACH...
942
943
  	help
  	  Setting ARM L1 cache line size to 64 Bytes.
910a17e57   Kirill A. Shutemov   ARM: 5700/1: ARM:...
944
945
  config ARM_L1_CACHE_SHIFT
  	int
d6d502fa4   Kukjin Kim   ARM: 5952/1: ARM:...
946
  	default 6 if ARM_L1_CACHE_SHIFT_6
910a17e57   Kirill A. Shutemov   ARM: 5700/1: ARM:...
947
  	default 5
47ab0dee6   Russell King   ARM: Optionally a...
948
949
  
  config ARM_DMA_MEM_BUFFERABLE
e399b1a4e   Russell King   ARM: v6k: introdu...
950
  	bool "Use non-cacheable memory for DMA" if (CPU_V6 || CPU_V6K) && !CPU_V7
e399b1a4e   Russell King   ARM: v6k: introdu...
951
  	default y if CPU_V6 || CPU_V6K || CPU_V7
47ab0dee6   Russell King   ARM: Optionally a...
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
  	help
  	  Historically, the kernel has used strongly ordered mappings to
  	  provide DMA coherent memory.  With the advent of ARMv7, mapping
  	  memory with differing types results in unpredictable behaviour,
  	  so on these CPUs, this option is forced on.
  
  	  Multiple mappings with differing attributes is also unpredictable
  	  on ARMv6 CPUs, but since they do not have aggressive speculative
  	  prefetch, no harm appears to occur.
  
  	  However, drivers may be missing the necessary barriers for ARMv6,
  	  and therefore turning this on may result in unpredictable driver
  	  behaviour.  Therefore, we offer this as an option.
  
  	  You are recommended say 'Y' here and debug any affected drivers.
ac1d426e8   Russell King   Merge branch 'dev...
967

f81309067   Russell King   ARM: move heavy b...
968
969
  config ARM_HEAVY_MB
  	bool
d10d2d485   Ben Dooks   ARM: fix ARCH_IXP...
970
971
972
973
974
  config ARCH_SUPPORTS_BIG_ENDIAN
  	bool
  	help
  	  This option specifies the architecture can support big endian
  	  operation.
1e6b48116   Kees Cook   ARM: mm: allow no...
975

25362dc49   Kees Cook   ARM: 8501/1: mm: ...
976
977
  config DEBUG_RODATA
  	bool "Make kernel text and rodata read-only"
ac96680d2   Arnd Bergmann   ARM: 8535/1: mm: ...
978
  	depends on MMU && !XIP_KERNEL
25362dc49   Kees Cook   ARM: 8501/1: mm: ...
979
  	default y if CPU_V7
1e6b48116   Kees Cook   ARM: mm: allow no...
980
  	help
25362dc49   Kees Cook   ARM: 8501/1: mm: ...
981
982
983
984
985
986
  	  If this is set, kernel text and rodata memory will be made
  	  read-only, and non-text kernel memory will be made non-executable.
  	  The tradeoff is that each region is padded to section-size (1MiB)
  	  boundaries (because their permissions are different and splitting
  	  the 1M pages into 4K ones causes TLB performance problems), which
  	  can waste memory.
80d6b0c2e   Kees Cook   ARM: mm: allow te...
987

25362dc49   Kees Cook   ARM: 8501/1: mm: ...
988
989
990
  config DEBUG_ALIGN_RODATA
  	bool "Make rodata strictly non-executable"
  	depends on DEBUG_RODATA
80d6b0c2e   Kees Cook   ARM: mm: allow te...
991
992
  	default y
  	help
25362dc49   Kees Cook   ARM: 8501/1: mm: ...
993
994
995
996
997
998
  	  If this is set, rodata will be made explicitly non-executable. This
  	  provides protection on the rare chance that attackers might find and
  	  use ROP gadgets that exist in the rodata section. This adds an
  	  additional section-aligned split of rodata from kernel text so it
  	  can be made explicitly non-executable. This padding may waste memory
  	  space to gain the additional protection.