ARC: Add support for nSIM OSCI System C model
[cascardo/linux.git] / arch / arc / Kconfig
1 #
2 # Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
3 #
4 # This program is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License version 2 as
6 # published by the Free Software Foundation.
7 #
8
9 config ARC
10         def_bool y
11         select CLONE_BACKWARDS
12         # ARC Busybox based initramfs absolutely relies on DEVTMPFS for /dev
13         select DEVTMPFS if !INITRAMFS_SOURCE=""
14         select GENERIC_ATOMIC64
15         select GENERIC_CLOCKEVENTS
16         select GENERIC_FIND_FIRST_BIT
17         # for now, we don't need GENERIC_IRQ_PROBE, CONFIG_GENERIC_IRQ_CHIP
18         select GENERIC_IRQ_SHOW
19         select GENERIC_PENDING_IRQ if SMP
20         select GENERIC_SMP_IDLE_THREAD
21         select HAVE_ARCH_KGDB
22         select HAVE_ARCH_TRACEHOOK
23         select HAVE_GENERIC_HARDIRQS
24         select HAVE_IOREMAP_PROT
25         select HAVE_KPROBES
26         select HAVE_KRETPROBES
27         select HAVE_MEMBLOCK
28         select HAVE_MOD_ARCH_SPECIFIC if ARC_DW2_UNWIND
29         select HAVE_OPROFILE
30         select HAVE_PERF_EVENTS
31         select IRQ_DOMAIN
32         select MODULES_USE_ELF_RELA
33         select NO_BOOTMEM
34         select OF
35         select OF_EARLY_FLATTREE
36         select PERF_USE_VMALLOC
37
38 config SCHED_OMIT_FRAME_POINTER
39         def_bool y
40
41 config GENERIC_CSUM
42         def_bool y
43
44 config RWSEM_GENERIC_SPINLOCK
45         def_bool y
46
47 config ARCH_FLATMEM_ENABLE
48         def_bool y
49
50 config MMU
51         def_bool y
52
53 config NO_IOPORT
54         def_bool y
55
56 config GENERIC_CALIBRATE_DELAY
57         def_bool y
58
59 config GENERIC_HWEIGHT
60         def_bool y
61
62 config STACKTRACE_SUPPORT
63         def_bool y
64         select STACKTRACE
65
66 config HAVE_LATENCYTOP_SUPPORT
67         def_bool y
68
69 config NO_DMA
70         def_bool n
71
72 source "init/Kconfig"
73 source "kernel/Kconfig.freezer"
74
75 menu "ARC Architecture Configuration"
76
77 menu "ARC Platform/SoC/Board"
78
79 source "arch/arc/plat-arcfpga/Kconfig"
80 source "arch/arc/plat-tb10x/Kconfig"
81 #New platform adds here
82
83 endmenu
84
85 menu "ARC CPU Configuration"
86
87 choice
88         prompt "ARC Core"
89         default ARC_CPU_770
90
91 config ARC_CPU_750D
92         bool "ARC750D"
93         help
94           Support for ARC750 core
95
96 config ARC_CPU_770
97         bool "ARC770"
98         select ARC_CPU_REL_4_10
99         help
100           Support for ARC770 core introduced with Rel 4.10 (Summer 2011)
101           This core has a bunch of cool new features:
102           -MMU-v3: Variable Page Sz (4k, 8k, 16k), bigger J-TLB (128x4)
103                    Shared Address Spaces (for sharing TLB entires in MMU)
104           -Caches: New Prog Model, Region Flush
105           -Insns: endian swap, load-locked/store-conditional, time-stamp-ctr
106
107 endchoice
108
109 config CPU_BIG_ENDIAN
110         bool "Enable Big Endian Mode"
111         default n
112         help
113           Build kernel for Big Endian Mode of ARC CPU
114
115 # If a platform can't work with 0x8000_0000 based dma_addr_t
116 config ARC_PLAT_NEEDS_CPU_TO_DMA
117         bool
118
119 config SMP
120         bool "Symmetric Multi-Processing (Incomplete)"
121         default n
122         select USE_GENERIC_SMP_HELPERS
123         help
124           This enables support for systems with more than one CPU. If you have
125           a system with only one CPU, like most personal computers, say N. If
126           you have a system with more than one CPU, say Y.
127
128 if SMP
129
130 config ARC_HAS_COH_CACHES
131         def_bool n
132
133 config ARC_HAS_COH_RTSC
134         def_bool n
135
136 config ARC_HAS_REENTRANT_IRQ_LV2
137         def_bool n
138
139 endif
140
141 config NR_CPUS
142         int "Maximum number of CPUs (2-32)"
143         range 2 32
144         depends on SMP
145         default "2"
146
147 menuconfig ARC_CACHE
148         bool "Enable Cache Support"
149         default y
150         # if SMP, cache enabled ONLY if ARC implementation has cache coherency
151         depends on !SMP || ARC_HAS_COH_CACHES
152
153 if ARC_CACHE
154
155 config ARC_CACHE_LINE_SHIFT
156         int "Cache Line Length (as power of 2)"
157         range 5 7
158         default "6"
159         help
160           Starting with ARC700 4.9, Cache line length is configurable,
161           This option specifies "N", with Line-len = 2 power N
162           So line lengths of 32, 64, 128 are specified by 5,6,7, respectively
163           Linux only supports same line lengths for I and D caches.
164
165 config ARC_HAS_ICACHE
166         bool "Use Instruction Cache"
167         default y
168
169 config ARC_HAS_DCACHE
170         bool "Use Data Cache"
171         default y
172
173 config ARC_CACHE_PAGES
174         bool "Per Page Cache Control"
175         default y
176         depends on ARC_HAS_ICACHE || ARC_HAS_DCACHE
177         help
178           This can be used to over-ride the global I/D Cache Enable on a
179           per-page basis (but only for pages accessed via MMU such as
180           Kernel Virtual address or User Virtual Address)
181           TLB entries have a per-page Cache Enable Bit.
182           Note that Global I/D ENABLE + Per Page DISABLE works but corollary
183           Global DISABLE + Per Page ENABLE won't work
184
185 endif   #ARC_CACHE
186
187 config ARC_HAS_ICCM
188         bool "Use ICCM"
189         help
190           Single Cycle RAMS to store Fast Path Code
191         default n
192
193 config ARC_ICCM_SZ
194         int "ICCM Size in KB"
195         default "64"
196         depends on ARC_HAS_ICCM
197
198 config ARC_HAS_DCCM
199         bool "Use DCCM"
200         help
201           Single Cycle RAMS to store Fast Path Data
202         default n
203
204 config ARC_DCCM_SZ
205         int "DCCM Size in KB"
206         default "64"
207         depends on ARC_HAS_DCCM
208
209 config ARC_DCCM_BASE
210         hex "DCCM map address"
211         default "0xA0000000"
212         depends on ARC_HAS_DCCM
213
214 config ARC_HAS_HW_MPY
215         bool "Use Hardware Multiplier (Normal or Faster XMAC)"
216         default y
217         help
218           Influences how gcc generates code for MPY operations.
219           If enabled, MPYxx insns are generated, provided by Standard/XMAC
220           Multipler. Otherwise software multipy lib is used
221
222 choice
223         prompt "ARC700 MMU Version"
224         default ARC_MMU_V3 if ARC_CPU_770
225         default ARC_MMU_V2 if ARC_CPU_750D
226
227 config ARC_MMU_V1
228         bool "MMU v1"
229         help
230           Orig ARC700 MMU
231
232 config ARC_MMU_V2
233         bool "MMU v2"
234         help
235           Fixed the deficiency of v1 - possible thrashing in memcpy sceanrio
236           when 2 D-TLB and 1 I-TLB entries index into same 2way set.
237
238 config ARC_MMU_V3
239         bool "MMU v3"
240         depends on ARC_CPU_770
241         help
242           Introduced with ARC700 4.10: New Features
243           Variable Page size (1k-16k), var JTLB size 128 x (2 or 4)
244           Shared Address Spaces (SASID)
245
246 endchoice
247
248
249 choice
250         prompt "MMU Page Size"
251         default ARC_PAGE_SIZE_8K
252
253 config ARC_PAGE_SIZE_8K
254         bool "8KB"
255         help
256           Choose between 8k vs 16k
257
258 config ARC_PAGE_SIZE_16K
259         bool "16KB"
260         depends on ARC_MMU_V3
261
262 config ARC_PAGE_SIZE_4K
263         bool "4KB"
264         depends on ARC_MMU_V3
265
266 endchoice
267
268 config ARC_COMPACT_IRQ_LEVELS
269         bool "ARCompact IRQ Priorities: High(2)/Low(1)"
270         default n
271         # Timer HAS to be high priority, for any other high priority config
272         select ARC_IRQ3_LV2
273         # if SMP, LV2 enabled ONLY if ARC implementation has LV2 re-entrancy
274         depends on !SMP || ARC_HAS_REENTRANT_IRQ_LV2
275
276 if ARC_COMPACT_IRQ_LEVELS
277
278 config ARC_IRQ3_LV2
279         bool
280
281 config ARC_IRQ5_LV2
282         bool
283
284 config ARC_IRQ6_LV2
285         bool
286
287 endif
288
289 config ARC_FPU_SAVE_RESTORE
290         bool "Enable FPU state persistence across context switch"
291         default n
292         help
293           Double Precision Floating Point unit had dedictaed regs which
294           need to be saved/restored across context-switch.
295           Note that ARC FPU is overly simplistic, unlike say x86, which has
296           hardware pieces to allow software to conditionally save/restore,
297           based on actual usage of FPU by a task. Thus our implemn does
298           this for all tasks in system.
299
300 config ARC_CANT_LLSC
301         def_bool n
302
303 menuconfig ARC_CPU_REL_4_10
304         bool "Enable support for Rel 4.10 features"
305         default n
306         help
307           -ARC770 (and dependent features) enabled
308           -ARC750 also shares some of the new features with 770
309
310 config ARC_HAS_LLSC
311         bool "Insn: LLOCK/SCOND (efficient atomic ops)"
312         default y
313         depends on ARC_CPU_770 && !ARC_CANT_LLSC
314
315 config ARC_HAS_SWAPE
316         bool "Insn: SWAPE (endian-swap)"
317         default y
318         depends on ARC_CPU_REL_4_10
319
320 config ARC_HAS_RTSC
321         bool "Insn: RTSC (64-bit r/o cycle counter)"
322         default y
323         depends on ARC_CPU_REL_4_10
324         # if SMP, enable RTSC only if counter is coherent across cores
325         depends on !SMP || ARC_HAS_COH_RTSC
326
327 endmenu   # "ARC CPU Configuration"
328
329 config LINUX_LINK_BASE
330         hex "Linux Link Address"
331         default "0x80000000"
332         help
333           ARC700 divides the 32 bit phy address space into two equal halves
334           -Lower 2G (0 - 0x7FFF_FFFF ) is user virtual, translated by MMU
335           -Upper 2G (0x8000_0000 onwards) is untranslated, for kernel
336           Typically Linux kernel is linked at the start of untransalted addr,
337           hence the default value of 0x8zs.
338           However some customers have peripherals mapped at this addr, so
339           Linux needs to be scooted a bit.
340           If you don't know what the above means, leave this setting alone.
341
342 config ARC_CURR_IN_REG
343         bool "Dedicate Register r25 for current_task pointer"
344         default y
345         help
346           This reserved Register R25 to point to Current Task in
347           kernel mode. This saves memory access for each such access
348
349
350 config ARC_MISALIGN_ACCESS
351         bool "Emulate unaligned memory access (userspace only)"
352         default N
353         select SYSCTL_ARCH_UNALIGN_NO_WARN
354         select SYSCTL_ARCH_UNALIGN_ALLOW
355         help
356           This enables misaligned 16 & 32 bit memory access from user space.
357           Use ONLY-IF-ABS-NECESSARY as it will be very slow and also can hide
358           potential bugs in code
359
360 config ARC_STACK_NONEXEC
361         bool "Make stack non-executable"
362         default n
363         help
364           To disable the execute permissions of stack/heap of processes
365           which are enabled by default.
366
367 config HZ
368         int "Timer Frequency"
369         default 100
370
371 config ARC_METAWARE_HLINK
372         bool "Support for Metaware debugger assisted Host access"
373         default n
374         help
375           This options allows a Linux userland apps to directly access
376           host file system (open/creat/read/write etc) with help from
377           Metaware Debugger. This can come in handy for Linux-host communication
378           when there is no real usable peripheral such as EMAC.
379
380 menuconfig ARC_DBG
381         bool "ARC debugging"
382         default y
383
384 config ARC_DW2_UNWIND
385         bool "Enable DWARF specific kernel stack unwind"
386         depends on ARC_DBG
387         default y
388         select KALLSYMS
389         help
390           Compiles the kernel with DWARF unwind information and can be used
391           to get stack backtraces.
392
393           If you say Y here the resulting kernel image will be slightly larger
394           but not slower, and it will give very useful debugging information.
395           If you don't debug the kernel, you can say N, but we may not be able
396           to solve problems without frame unwind information
397
398 config ARC_DBG_TLB_PARANOIA
399         bool "Paranoia Checks in Low Level TLB Handlers"
400         depends on ARC_DBG
401         default n
402
403 config ARC_DBG_TLB_MISS_COUNT
404         bool "Profile TLB Misses"
405         default n
406         select DEBUG_FS
407         depends on ARC_DBG
408         help
409           Counts number of I and D TLB Misses and exports them via Debugfs
410           The counters can be cleared via Debugfs as well
411
412 config CMDLINE_UBOOT
413         bool "Support U-boot kernel command line passing"
414         default n
415         help
416           If you are using U-boot (www.denx.de) and wish to pass the kernel
417           command line from the U-boot environment to the Linux kernel then
418           switch this option on.
419           ARC U-boot will setup the cmdline in RAM/flash and set r2 to point
420           to it. kernel startup code will append this to DeviceTree
421           /bootargs provided cmdline args.
422
423 config ARC_BUILTIN_DTB_NAME
424         string "Built in DTB"
425         help
426           Set the name of the DTB to embed in the vmlinux binary
427           Leaving it blank selects the minimal "skeleton" dtb
428
429 source "kernel/Kconfig.preempt"
430
431 menu "Executable file formats"
432 source "fs/Kconfig.binfmt"
433 endmenu
434
435 endmenu  # "ARC Architecture Configuration"
436
437 source "mm/Kconfig"
438 source "net/Kconfig"
439 source "drivers/Kconfig"
440 source "fs/Kconfig"
441 source "arch/arc/Kconfig.debug"
442 source "security/Kconfig"
443 source "crypto/Kconfig"
444 source "lib/Kconfig"