[ARM] nommu: add ARM946E-S core support
[cascardo/linux.git] / arch / arm / mm / Kconfig
1 comment "Processor Type"
2
3 config CPU_32
4         bool
5         default y
6
7 # Select CPU types depending on the architecture selected.  This selects
8 # which CPUs we support in the kernel image, and the compiler instruction
9 # optimiser behaviour.
10
11 # ARM610
12 config CPU_ARM610
13         bool "Support ARM610 processor"
14         depends on ARCH_RPC
15         select CPU_32v3
16         select CPU_CACHE_V3
17         select CPU_CACHE_VIVT
18         select CPU_CP15_MMU
19         select CPU_COPY_V3 if MMU
20         select CPU_TLB_V3 if MMU
21         help
22           The ARM610 is the successor to the ARM3 processor
23           and was produced by VLSI Technology Inc.
24
25           Say Y if you want support for the ARM610 processor.
26           Otherwise, say N.
27
28 # ARM7TDMI
29 config CPU_ARM7TDMI
30         bool "Support ARM7TDMI processor"
31         select CPU_32v4T
32         select CPU_ABRT_LV4T
33         select CPU_CACHE_V4
34         help
35           A 32-bit RISC microprocessor based on the ARM7 processor core
36           which has no memory control unit and cache.
37
38           Say Y if you want support for the ARM7TDMI processor.
39           Otherwise, say N.
40
41 # ARM710
42 config CPU_ARM710
43         bool "Support ARM710 processor" if !ARCH_CLPS7500 && ARCH_RPC
44         default y if ARCH_CLPS7500
45         select CPU_32v3
46         select CPU_CACHE_V3
47         select CPU_CACHE_VIVT
48         select CPU_CP15_MMU
49         select CPU_COPY_V3 if MMU
50         select CPU_TLB_V3 if MMU
51         help
52           A 32-bit RISC microprocessor based on the ARM7 processor core
53           designed by Advanced RISC Machines Ltd. The ARM710 is the
54           successor to the ARM610 processor. It was released in
55           July 1994 by VLSI Technology Inc.
56
57           Say Y if you want support for the ARM710 processor.
58           Otherwise, say N.
59
60 # ARM720T
61 config CPU_ARM720T
62         bool "Support ARM720T processor" if !ARCH_CLPS711X && !ARCH_L7200 && !ARCH_CDB89712 && ARCH_INTEGRATOR
63         default y if ARCH_CLPS711X || ARCH_L7200 || ARCH_CDB89712 || ARCH_H720X
64         select CPU_32v4T
65         select CPU_ABRT_LV4T
66         select CPU_CACHE_V4
67         select CPU_CACHE_VIVT
68         select CPU_CP15_MMU
69         select CPU_COPY_V4WT if MMU
70         select CPU_TLB_V4WT if MMU
71         help
72           A 32-bit RISC processor with 8kByte Cache, Write Buffer and
73           MMU built around an ARM7TDMI core.
74
75           Say Y if you want support for the ARM720T processor.
76           Otherwise, say N.
77
78 # ARM740T
79 config CPU_ARM740T
80         bool "Support ARM740T processor" if ARCH_INTEGRATOR
81         select CPU_32v4T
82         select CPU_ABRT_LV4T
83         select CPU_CACHE_V3     # although the core is v4t
84         select CPU_CP15_MPU
85         help
86           A 32-bit RISC processor with 8KB cache or 4KB variants,
87           write buffer and MPU(Protection Unit) built around
88           an ARM7TDMI core.
89
90           Say Y if you want support for the ARM740T processor.
91           Otherwise, say N.
92
93 # ARM9TDMI
94 config CPU_ARM9TDMI
95         bool "Support ARM9TDMI processor"
96         select CPU_32v4T
97         select CPU_ABRT_EV4T
98         select CPU_CACHE_V4
99         help
100           A 32-bit RISC microprocessor based on the ARM9 processor core
101           which has no memory control unit and cache.
102
103           Say Y if you want support for the ARM9TDMI processor.
104           Otherwise, say N.
105
106 # ARM920T
107 config CPU_ARM920T
108         bool "Support ARM920T processor"
109         depends on ARCH_EP93XX || ARCH_INTEGRATOR || CPU_S3C2410 || CPU_S3C2440 || CPU_S3C2442 || ARCH_IMX || ARCH_AAEC2000 || ARCH_AT91RM9200
110         default y if CPU_S3C2410 || CPU_S3C2440 || CPU_S3C2442 || ARCH_AT91RM9200
111         select CPU_32v4T
112         select CPU_ABRT_EV4T
113         select CPU_CACHE_V4WT
114         select CPU_CACHE_VIVT
115         select CPU_CP15_MMU
116         select CPU_COPY_V4WB if MMU
117         select CPU_TLB_V4WBI if MMU
118         help
119           The ARM920T is licensed to be produced by numerous vendors,
120           and is used in the Maverick EP9312 and the Samsung S3C2410.
121
122           More information on the Maverick EP9312 at
123           <http://linuxdevices.com/products/PD2382866068.html>.
124
125           Say Y if you want support for the ARM920T processor.
126           Otherwise, say N.
127
128 # ARM922T
129 config CPU_ARM922T
130         bool "Support ARM922T processor" if ARCH_INTEGRATOR
131         depends on ARCH_LH7A40X || ARCH_INTEGRATOR
132         default y if ARCH_LH7A40X
133         select CPU_32v4T
134         select CPU_ABRT_EV4T
135         select CPU_CACHE_V4WT
136         select CPU_CACHE_VIVT
137         select CPU_CP15_MMU
138         select CPU_COPY_V4WB if MMU
139         select CPU_TLB_V4WBI if MMU
140         help
141           The ARM922T is a version of the ARM920T, but with smaller
142           instruction and data caches. It is used in Altera's
143           Excalibur XA device family.
144
145           Say Y if you want support for the ARM922T processor.
146           Otherwise, say N.
147
148 # ARM925T
149 config CPU_ARM925T
150         bool "Support ARM925T processor" if ARCH_OMAP1
151         depends on ARCH_OMAP15XX
152         default y if ARCH_OMAP15XX
153         select CPU_32v4T
154         select CPU_ABRT_EV4T
155         select CPU_CACHE_V4WT
156         select CPU_CACHE_VIVT
157         select CPU_CP15_MMU
158         select CPU_COPY_V4WB if MMU
159         select CPU_TLB_V4WBI if MMU
160         help
161           The ARM925T is a mix between the ARM920T and ARM926T, but with
162           different instruction and data caches. It is used in TI's OMAP
163           device family.
164
165           Say Y if you want support for the ARM925T processor.
166           Otherwise, say N.
167
168 # ARM926T
169 config CPU_ARM926T
170         bool "Support ARM926T processor"
171         depends on ARCH_INTEGRATOR || ARCH_VERSATILE_PB || MACH_VERSATILE_AB || ARCH_OMAP730 || ARCH_OMAP16XX || MACH_REALVIEW_EB || ARCH_PNX4008 || ARCH_NETX || CPU_S3C2412 || ARCH_AT91SAM9260 || ARCH_AT91SAM9261
172         default y if ARCH_VERSATILE_PB || MACH_VERSATILE_AB || ARCH_OMAP730 || ARCH_OMAP16XX || ARCH_PNX4008 || ARCH_NETX || CPU_S3C2412 || ARCH_AT91SAM9260 || ARCH_AT91SAM9261
173         select CPU_32v5
174         select CPU_ABRT_EV5TJ
175         select CPU_CACHE_VIVT
176         select CPU_CP15_MMU
177         select CPU_COPY_V4WB if MMU
178         select CPU_TLB_V4WBI if MMU
179         help
180           This is a variant of the ARM920.  It has slightly different
181           instruction sequences for cache and TLB operations.  Curiously,
182           there is no documentation on it at the ARM corporate website.
183
184           Say Y if you want support for the ARM926T processor.
185           Otherwise, say N.
186
187 # ARM940T
188 config CPU_ARM940T
189         bool "Support ARM940T processor" if ARCH_INTEGRATOR
190         select CPU_32v4T
191         select CPU_ABRT_EV4T
192         select CPU_CACHE_VIVT
193         select CPU_CP15_MPU
194         help
195           ARM940T is a member of the ARM9TDMI family of general-
196           purpose microprocessors with MPU and seperate 4KB
197           instruction and 4KB data cases, each with a 4-word line
198           length.
199
200           Say Y if you want support for the ARM940T processor.
201           Otherwise, say N.
202
203 # ARM946E-S
204 config CPU_ARM946E
205         bool "Support ARM946E-S processor" if ARCH_INTEGRATOR
206         select CPU_32v5
207         select CPU_ABRT_EV5T
208         select CPU_CACHE_VIVT
209         select CPU_CP15_MPU
210         help
211           ARM946E-S is a member of the ARM9E-S family of high-
212           performance, 32-bit system-on-chip processor solutions.
213           The TCM and ARMv5TE 32-bit instruction set is supported.
214
215           Say Y if you want support for the ARM946E-S processor.
216           Otherwise, say N.
217
218 # ARM1020 - needs validating
219 config CPU_ARM1020
220         bool "Support ARM1020T (rev 0) processor"
221         depends on ARCH_INTEGRATOR
222         select CPU_32v5
223         select CPU_ABRT_EV4T
224         select CPU_CACHE_V4WT
225         select CPU_CACHE_VIVT
226         select CPU_CP15_MMU
227         select CPU_COPY_V4WB if MMU
228         select CPU_TLB_V4WBI if MMU
229         help
230           The ARM1020 is the 32K cached version of the ARM10 processor,
231           with an addition of a floating-point unit.
232
233           Say Y if you want support for the ARM1020 processor.
234           Otherwise, say N.
235
236 # ARM1020E - needs validating
237 config CPU_ARM1020E
238         bool "Support ARM1020E processor"
239         depends on ARCH_INTEGRATOR
240         select CPU_32v5
241         select CPU_ABRT_EV4T
242         select CPU_CACHE_V4WT
243         select CPU_CACHE_VIVT
244         select CPU_CP15_MMU
245         select CPU_COPY_V4WB if MMU
246         select CPU_TLB_V4WBI if MMU
247         depends on n
248
249 # ARM1022E
250 config CPU_ARM1022
251         bool "Support ARM1022E processor"
252         depends on ARCH_INTEGRATOR
253         select CPU_32v5
254         select CPU_ABRT_EV4T
255         select CPU_CACHE_VIVT
256         select CPU_CP15_MMU
257         select CPU_COPY_V4WB if MMU # can probably do better
258         select CPU_TLB_V4WBI if MMU
259         help
260           The ARM1022E is an implementation of the ARMv5TE architecture
261           based upon the ARM10 integer core with a 16KiB L1 Harvard cache,
262           embedded trace macrocell, and a floating-point unit.
263
264           Say Y if you want support for the ARM1022E processor.
265           Otherwise, say N.
266
267 # ARM1026EJ-S
268 config CPU_ARM1026
269         bool "Support ARM1026EJ-S processor"
270         depends on ARCH_INTEGRATOR
271         select CPU_32v5
272         select CPU_ABRT_EV5T # But need Jazelle, but EV5TJ ignores bit 10
273         select CPU_CACHE_VIVT
274         select CPU_CP15_MMU
275         select CPU_COPY_V4WB if MMU # can probably do better
276         select CPU_TLB_V4WBI if MMU
277         help
278           The ARM1026EJ-S is an implementation of the ARMv5TEJ architecture
279           based upon the ARM10 integer core.
280
281           Say Y if you want support for the ARM1026EJ-S processor.
282           Otherwise, say N.
283
284 # SA110
285 config CPU_SA110
286         bool "Support StrongARM(R) SA-110 processor" if !ARCH_EBSA110 && !FOOTBRIDGE && !ARCH_TBOX && !ARCH_SHARK && !ARCH_NEXUSPCI && ARCH_RPC
287         default y if ARCH_EBSA110 || FOOTBRIDGE || ARCH_TBOX || ARCH_SHARK || ARCH_NEXUSPCI
288         select CPU_32v3 if ARCH_RPC
289         select CPU_32v4 if !ARCH_RPC
290         select CPU_ABRT_EV4
291         select CPU_CACHE_V4WB
292         select CPU_CACHE_VIVT
293         select CPU_CP15_MMU
294         select CPU_COPY_V4WB if MMU
295         select CPU_TLB_V4WB if MMU
296         help
297           The Intel StrongARM(R) SA-110 is a 32-bit microprocessor and
298           is available at five speeds ranging from 100 MHz to 233 MHz.
299           More information is available at
300           <http://developer.intel.com/design/strong/sa110.htm>.
301
302           Say Y if you want support for the SA-110 processor.
303           Otherwise, say N.
304
305 # SA1100
306 config CPU_SA1100
307         bool
308         depends on ARCH_SA1100
309         default y
310         select CPU_32v4
311         select CPU_ABRT_EV4
312         select CPU_CACHE_V4WB
313         select CPU_CACHE_VIVT
314         select CPU_CP15_MMU
315         select CPU_TLB_V4WB if MMU
316
317 # XScale
318 config CPU_XSCALE
319         bool
320         depends on ARCH_IOP32X || ARCH_IOP33X || ARCH_PXA || ARCH_IXP4XX || ARCH_IXP2000
321         default y
322         select CPU_32v5
323         select CPU_ABRT_EV5T
324         select CPU_CACHE_VIVT
325         select CPU_CP15_MMU
326         select CPU_TLB_V4WBI if MMU
327
328 # XScale Core Version 3
329 config CPU_XSC3
330         bool
331         depends on ARCH_IXP23XX
332         default y
333         select CPU_32v5
334         select CPU_ABRT_EV5T
335         select CPU_CACHE_VIVT
336         select CPU_CP15_MMU
337         select CPU_TLB_V4WBI if MMU
338         select IO_36
339
340 # ARMv6
341 config CPU_V6
342         bool "Support ARM V6 processor"
343         depends on ARCH_INTEGRATOR || MACH_REALVIEW_EB || ARCH_OMAP2
344         select CPU_32v6
345         select CPU_ABRT_EV6
346         select CPU_CACHE_V6
347         select CPU_CACHE_VIPT
348         select CPU_CP15_MMU
349         select CPU_COPY_V6 if MMU
350         select CPU_TLB_V6 if MMU
351
352 # ARMv6k
353 config CPU_32v6K
354         bool "Support ARM V6K processor extensions" if !SMP
355         depends on CPU_V6
356         default y if SMP
357         help
358           Say Y here if your ARMv6 processor supports the 'K' extension.
359           This enables the kernel to use some instructions not present
360           on previous processors, and as such a kernel build with this
361           enabled will not boot on processors with do not support these
362           instructions.
363
364 # Figure out what processor architecture version we should be using.
365 # This defines the compiler instruction set which depends on the machine type.
366 config CPU_32v3
367         bool
368         select TLS_REG_EMUL if SMP || !MMU
369         select NEEDS_SYSCALL_FOR_CMPXCHG if SMP
370
371 config CPU_32v4
372         bool
373         select TLS_REG_EMUL if SMP || !MMU
374         select NEEDS_SYSCALL_FOR_CMPXCHG if SMP
375
376 config CPU_32v4T
377         bool
378         select TLS_REG_EMUL if SMP || !MMU
379         select NEEDS_SYSCALL_FOR_CMPXCHG if SMP
380
381 config CPU_32v5
382         bool
383         select TLS_REG_EMUL if SMP || !MMU
384         select NEEDS_SYSCALL_FOR_CMPXCHG if SMP
385
386 config CPU_32v6
387         bool
388
389 # The abort model
390 config CPU_ABRT_EV4
391         bool
392
393 config CPU_ABRT_EV4T
394         bool
395
396 config CPU_ABRT_LV4T
397         bool
398
399 config CPU_ABRT_EV5T
400         bool
401
402 config CPU_ABRT_EV5TJ
403         bool
404
405 config CPU_ABRT_EV6
406         bool
407
408 # The cache model
409 config CPU_CACHE_V3
410         bool
411
412 config CPU_CACHE_V4
413         bool
414
415 config CPU_CACHE_V4WT
416         bool
417
418 config CPU_CACHE_V4WB
419         bool
420
421 config CPU_CACHE_V6
422         bool
423
424 config CPU_CACHE_VIVT
425         bool
426
427 config CPU_CACHE_VIPT
428         bool
429
430 if MMU
431 # The copy-page model
432 config CPU_COPY_V3
433         bool
434
435 config CPU_COPY_V4WT
436         bool
437
438 config CPU_COPY_V4WB
439         bool
440
441 config CPU_COPY_V6
442         bool
443
444 # This selects the TLB model
445 config CPU_TLB_V3
446         bool
447         help
448           ARM Architecture Version 3 TLB.
449
450 config CPU_TLB_V4WT
451         bool
452         help
453           ARM Architecture Version 4 TLB with writethrough cache.
454
455 config CPU_TLB_V4WB
456         bool
457         help
458           ARM Architecture Version 4 TLB with writeback cache.
459
460 config CPU_TLB_V4WBI
461         bool
462         help
463           ARM Architecture Version 4 TLB with writeback cache and invalidate
464           instruction cache entry.
465
466 config CPU_TLB_V6
467         bool
468
469 endif
470
471 config CPU_CP15
472         bool
473         help
474           Processor has the CP15 register.
475
476 config CPU_CP15_MMU
477         bool
478         select CPU_CP15
479         help
480           Processor has the CP15 register, which has MMU related registers.
481
482 config CPU_CP15_MPU
483         bool
484         select CPU_CP15
485         help
486           Processor has the CP15 register, which has MPU related registers.
487
488 #
489 # CPU supports 36-bit I/O
490 #
491 config IO_36
492         bool
493
494 comment "Processor Features"
495
496 config ARM_THUMB
497         bool "Support Thumb user binaries"
498         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_V6
499         default y
500         help
501           Say Y if you want to include kernel support for running user space
502           Thumb binaries.
503
504           The Thumb instruction set is a compressed form of the standard ARM
505           instruction set resulting in smaller binaries at the expense of
506           slightly less efficient code.
507
508           If you don't know what this all is, saying Y is a safe choice.
509
510 config CPU_BIG_ENDIAN
511         bool "Build big-endian kernel"
512         depends on ARCH_SUPPORTS_BIG_ENDIAN
513         help
514           Say Y if you plan on running a kernel in big-endian mode.
515           Note that your board must be properly built and your board
516           port must properly enable any big-endian related features
517           of your chipset/board/processor.
518
519 config CPU_ICACHE_DISABLE
520         bool "Disable I-Cache (I-bit)"
521         depends on CPU_CP15 && !(CPU_ARM610 || CPU_ARM710 || CPU_ARM720T || CPU_ARM740T || CPU_XSCALE || CPU_XSC3)
522         help
523           Say Y here to disable the processor instruction cache. Unless
524           you have a reason not to or are unsure, say N.
525
526 config CPU_DCACHE_DISABLE
527         bool "Disable D-Cache (C-bit)"
528         depends on CPU_CP15
529         help
530           Say Y here to disable the processor data cache. Unless
531           you have a reason not to or are unsure, say N.
532
533 config CPU_DCACHE_SIZE
534         hex
535         depends on CPU_ARM740T || CPU_ARM946E
536         default 0x00001000 if CPU_ARM740T
537         default 0x00002000 # default size for ARM946E-S
538         help
539           Some cores are synthesizable to have various sized cache. For
540           ARM946E-S case, it can vary from 0KB to 1MB.
541           To support such cache operations, it is efficient to know the size
542           before compile time.
543           If your SoC is configured to have a different size, define the value
544           here with proper conditions.
545
546 config CPU_DCACHE_WRITETHROUGH
547         bool "Force write through D-cache"
548         depends on (CPU_ARM740T || CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM940T || CPU_ARM946E || CPU_ARM1020 || CPU_V6) && !CPU_DCACHE_DISABLE
549         default y if CPU_ARM925T
550         help
551           Say Y here to use the data cache in writethrough mode. Unless you
552           specifically require this or are unsure, say N.
553
554 config CPU_CACHE_ROUND_ROBIN
555         bool "Round robin I and D cache replacement algorithm"
556         depends on (CPU_ARM926T || CPU_ARM946E || CPU_ARM1020) && (!CPU_ICACHE_DISABLE || !CPU_DCACHE_DISABLE)
557         help
558           Say Y here to use the predictable round-robin cache replacement
559           policy.  Unless you specifically require this or are unsure, say N.
560
561 config CPU_BPREDICT_DISABLE
562         bool "Disable branch prediction"
563         depends on CPU_ARM1020 || CPU_V6
564         help
565           Say Y here to disable branch prediction.  If unsure, say N.
566
567 config TLS_REG_EMUL
568         bool
569         help
570           An SMP system using a pre-ARMv6 processor (there are apparently
571           a few prototypes like that in existence) and therefore access to
572           that required register must be emulated.
573
574 config HAS_TLS_REG
575         bool
576         depends on !TLS_REG_EMUL
577         default y if SMP || CPU_32v7
578         help
579           This selects support for the CP15 thread register.
580           It is defined to be available on some ARMv6 processors (including
581           all SMP capable ARMv6's) or later processors.  User space may
582           assume directly accessing that register and always obtain the
583           expected value only on ARMv7 and above.
584
585 config NEEDS_SYSCALL_FOR_CMPXCHG
586         bool
587         help
588           SMP on a pre-ARMv6 processor?  Well OK then.
589           Forget about fast user space cmpxchg support.
590           It is just not possible.
591