xref: /OK3568_Linux_fs/kernel/arch/nds32/Kconfig.cpu (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only
2*4882a593Smuzhiyuncomment "Processor Features"
3*4882a593Smuzhiyun
4*4882a593Smuzhiyunconfig CPU_BIG_ENDIAN
5*4882a593Smuzhiyun	def_bool !CPU_LITTLE_ENDIAN
6*4882a593Smuzhiyun
7*4882a593Smuzhiyunconfig CPU_LITTLE_ENDIAN
8*4882a593Smuzhiyun	bool "Little endian"
9*4882a593Smuzhiyun	default y
10*4882a593Smuzhiyun
11*4882a593Smuzhiyunconfig FPU
12*4882a593Smuzhiyun	bool "FPU support"
13*4882a593Smuzhiyun	default n
14*4882a593Smuzhiyun	help
15*4882a593Smuzhiyun	  If FPU ISA is used in user space, this configuration shall be Y to
16*4882a593Smuzhiyun          enable required support in kernel such as fpu context switch and
17*4882a593Smuzhiyun          fpu exception handler.
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun	  If no FPU ISA is used in user space, say N.
20*4882a593Smuzhiyun
21*4882a593Smuzhiyunconfig LAZY_FPU
22*4882a593Smuzhiyun	bool "lazy FPU support"
23*4882a593Smuzhiyun	depends on FPU
24*4882a593Smuzhiyun	default y
25*4882a593Smuzhiyun	help
26*4882a593Smuzhiyun	  Say Y here to enable the lazy FPU scheme. The lazy FPU scheme can
27*4882a593Smuzhiyun          enhance system performance by reducing the context switch
28*4882a593Smuzhiyun	  frequency of the FPU register.
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun	  For normal case, say Y.
31*4882a593Smuzhiyun
32*4882a593Smuzhiyunconfig SUPPORT_DENORMAL_ARITHMETIC
33*4882a593Smuzhiyun	bool "Denormal arithmetic support"
34*4882a593Smuzhiyun	depends on FPU
35*4882a593Smuzhiyun	default n
36*4882a593Smuzhiyun	help
37*4882a593Smuzhiyun	  Say Y here to enable arithmetic of denormalized number. Enabling
38*4882a593Smuzhiyun	  this feature can enhance the precision for tininess number.
39*4882a593Smuzhiyun	  However, performance loss in float point calculations is
40*4882a593Smuzhiyun	  possibly significant due to additional FPU exception.
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun	  If the calculated tolerance for tininess number is not critical,
43*4882a593Smuzhiyun	  say N to prevent performance loss.
44*4882a593Smuzhiyun
45*4882a593Smuzhiyunconfig HWZOL
46*4882a593Smuzhiyun	bool "hardware zero overhead loop support"
47*4882a593Smuzhiyun	depends on CPU_D10 || CPU_D15
48*4882a593Smuzhiyun	default n
49*4882a593Smuzhiyun	help
50*4882a593Smuzhiyun	  A set of Zero-Overhead Loop mechanism is provided to reduce the
51*4882a593Smuzhiyun	  instruction fetch and execution overhead of loop-control instructions.
52*4882a593Smuzhiyun	  It will save 3 registers($LB, $LC, $LE) for context saving if say Y.
53*4882a593Smuzhiyun	  You don't need to save these registers if you can make sure your user
54*4882a593Smuzhiyun	  program doesn't use these registers.
55*4882a593Smuzhiyun
56*4882a593Smuzhiyun	  If unsure, say N.
57*4882a593Smuzhiyun
58*4882a593Smuzhiyunconfig CPU_CACHE_ALIASING
59*4882a593Smuzhiyun	bool "Aliasing cache"
60*4882a593Smuzhiyun	depends on CPU_N10 || CPU_D10 || CPU_N13 || CPU_V3
61*4882a593Smuzhiyun	default y
62*4882a593Smuzhiyun	help
63*4882a593Smuzhiyun	  If this CPU is using VIPT data cache and its cache way size is larger
64*4882a593Smuzhiyun	  than page size, say Y. If it is using PIPT data cache, say N.
65*4882a593Smuzhiyun
66*4882a593Smuzhiyun	  If unsure, say Y.
67*4882a593Smuzhiyun
68*4882a593Smuzhiyunchoice
69*4882a593Smuzhiyun	prompt "minimum CPU type"
70*4882a593Smuzhiyun	default CPU_V3
71*4882a593Smuzhiyun	help
72*4882a593Smuzhiyun	  The data cache of N15/D15 is implemented as PIPT and it will not cause
73*4882a593Smuzhiyun	  the cache aliasing issue. The rest cpus(N13, N10 and D10) are
74*4882a593Smuzhiyun	  implemented as VIPT data cache. It may cause the cache aliasing issue
75*4882a593Smuzhiyun	  if its cache way size is larger than page size. You can specify the
76*4882a593Smuzhiyun	  CPU type directly or choose CPU_V3 if unsure.
77*4882a593Smuzhiyun
78*4882a593Smuzhiyun          A kernel built for N10 is able to run on N15, D15, N13, N10 or D10.
79*4882a593Smuzhiyun          A kernel built for N15 is able to run on N15 or D15.
80*4882a593Smuzhiyun          A kernel built for D10 is able to run on D10 or D15.
81*4882a593Smuzhiyun          A kernel built for D15 is able to run on D15.
82*4882a593Smuzhiyun          A kernel built for N13 is able to run on N15, N13 or D15.
83*4882a593Smuzhiyun
84*4882a593Smuzhiyunconfig CPU_N15
85*4882a593Smuzhiyun	bool "AndesCore N15"
86*4882a593Smuzhiyunconfig CPU_N13
87*4882a593Smuzhiyun	bool "AndesCore N13"
88*4882a593Smuzhiyun	select CPU_CACHE_ALIASING if ANDES_PAGE_SIZE_4KB
89*4882a593Smuzhiyunconfig CPU_N10
90*4882a593Smuzhiyun	bool "AndesCore N10"
91*4882a593Smuzhiyun	select CPU_CACHE_ALIASING
92*4882a593Smuzhiyunconfig CPU_D15
93*4882a593Smuzhiyun	bool "AndesCore D15"
94*4882a593Smuzhiyunconfig CPU_D10
95*4882a593Smuzhiyun	bool "AndesCore D10"
96*4882a593Smuzhiyun	select CPU_CACHE_ALIASING
97*4882a593Smuzhiyunconfig CPU_V3
98*4882a593Smuzhiyun	bool "AndesCore v3 compatible"
99*4882a593Smuzhiyun	select CPU_CACHE_ALIASING
100*4882a593Smuzhiyunendchoice
101*4882a593Smuzhiyunchoice
102*4882a593Smuzhiyun	prompt "Paging -- page size "
103*4882a593Smuzhiyun	default ANDES_PAGE_SIZE_4KB
104*4882a593Smuzhiyunconfig  ANDES_PAGE_SIZE_4KB
105*4882a593Smuzhiyun	bool "use 4KB page size"
106*4882a593Smuzhiyunconfig  ANDES_PAGE_SIZE_8KB
107*4882a593Smuzhiyun	bool "use 8KB page size"
108*4882a593Smuzhiyunendchoice
109*4882a593Smuzhiyun
110*4882a593Smuzhiyunconfig CPU_ICACHE_DISABLE
111*4882a593Smuzhiyun	bool "Disable I-Cache"
112*4882a593Smuzhiyun	help
113*4882a593Smuzhiyun	  Say Y here to disable the processor instruction cache. Unless
114*4882a593Smuzhiyun	  you have a reason not to or are unsure, say N.
115*4882a593Smuzhiyun
116*4882a593Smuzhiyunconfig CPU_DCACHE_DISABLE
117*4882a593Smuzhiyun	bool "Disable D-Cache"
118*4882a593Smuzhiyun	help
119*4882a593Smuzhiyun	  Say Y here to disable the processor data cache. Unless
120*4882a593Smuzhiyun	  you have a reason not to or are unsure, say N.
121*4882a593Smuzhiyun
122*4882a593Smuzhiyunconfig CPU_DCACHE_WRITETHROUGH
123*4882a593Smuzhiyun	bool "Force write through D-cache"
124*4882a593Smuzhiyun	depends on !CPU_DCACHE_DISABLE
125*4882a593Smuzhiyun	help
126*4882a593Smuzhiyun	  Say Y here to use the data cache in writethrough mode. Unless you
127*4882a593Smuzhiyun	  specifically require this or are unsure, say N.
128*4882a593Smuzhiyun
129*4882a593Smuzhiyunconfig WBNA
130*4882a593Smuzhiyun	bool "WBNA"
131*4882a593Smuzhiyun	default n
132*4882a593Smuzhiyun	help
133*4882a593Smuzhiyun	  Say Y here to enable write-back memory with no-write-allocation policy.
134*4882a593Smuzhiyun
135*4882a593Smuzhiyunconfig ALIGNMENT_TRAP
136*4882a593Smuzhiyun	bool "Kernel support unaligned access handling by sw"
137*4882a593Smuzhiyun	depends on PROC_FS
138*4882a593Smuzhiyun	default n
139*4882a593Smuzhiyun	help
140*4882a593Smuzhiyun	  Andes processors cannot load/store information which is not
141*4882a593Smuzhiyun	  naturally aligned on the bus, i.e., a 4 byte load must start at an
142*4882a593Smuzhiyun	  address divisible by 4. On 32-bit Andes processors, these non-aligned
143*4882a593Smuzhiyun	  load/store instructions will be emulated in software if you say Y
144*4882a593Smuzhiyun	  here, which has a severe performance impact. With an IP-only
145*4882a593Smuzhiyun	  configuration it is safe to say N, otherwise say Y.
146*4882a593Smuzhiyun
147*4882a593Smuzhiyunconfig HW_SUPPORT_UNALIGNMENT_ACCESS
148*4882a593Smuzhiyun	bool "Kernel support unaligned access handling by hw"
149*4882a593Smuzhiyun	depends on !ALIGNMENT_TRAP
150*4882a593Smuzhiyun	default n
151*4882a593Smuzhiyun	help
152*4882a593Smuzhiyun	  Andes processors load/store world/half-word instructions can access
153*4882a593Smuzhiyun	  unaligned memory locations without generating the Data Alignment
154*4882a593Smuzhiyun	  Check exceptions. With an IP-only configuration it is safe to say N,
155*4882a593Smuzhiyun	  otherwise say Y.
156*4882a593Smuzhiyun
157*4882a593Smuzhiyunconfig HIGHMEM
158*4882a593Smuzhiyun	bool "High Memory Support"
159*4882a593Smuzhiyun	depends on MMU && !CPU_CACHE_ALIASING
160*4882a593Smuzhiyun	help
161*4882a593Smuzhiyun	  The address space of Andes processors is only 4 Gigabytes large
162*4882a593Smuzhiyun	  and it has to accommodate user address space, kernel address
163*4882a593Smuzhiyun	  space as well as some memory mapped IO. That means that, if you
164*4882a593Smuzhiyun	  have a large amount of physical memory and/or IO, not all of the
165*4882a593Smuzhiyun	  memory can be "permanently mapped" by the kernel. The physical
166*4882a593Smuzhiyun	  memory that is not permanently mapped is called "high memory".
167*4882a593Smuzhiyun
168*4882a593Smuzhiyun	  Depending on the selected kernel/user memory split, minimum
169*4882a593Smuzhiyun	  vmalloc space and actual amount of RAM, you may not need this
170*4882a593Smuzhiyun	  option which should result in a slightly faster kernel.
171*4882a593Smuzhiyun
172*4882a593Smuzhiyun	  If unsure, say N.
173*4882a593Smuzhiyun
174*4882a593Smuzhiyunconfig CACHE_L2
175*4882a593Smuzhiyun	bool "Support L2 cache"
176*4882a593Smuzhiyun        default y
177*4882a593Smuzhiyun	help
178*4882a593Smuzhiyun	  Say Y here to enable L2 cache if your SoC are integrated with L2CC.
179*4882a593Smuzhiyun	  If unsure, say N.
180*4882a593Smuzhiyun
181*4882a593Smuzhiyunconfig HW_PRE
182*4882a593Smuzhiyun	bool "Enable hardware prefetcher"
183*4882a593Smuzhiyun	default y
184*4882a593Smuzhiyun	help
185*4882a593Smuzhiyun	  Say Y here to enable hardware prefetcher feature.
186*4882a593Smuzhiyun	  Only when CPU_VER.REV >= 0x09 can support.
187*4882a593Smuzhiyun
188*4882a593Smuzhiyunmenu "Memory configuration"
189*4882a593Smuzhiyun
190*4882a593Smuzhiyunchoice
191*4882a593Smuzhiyun	prompt "Memory split"
192*4882a593Smuzhiyun	depends on MMU
193*4882a593Smuzhiyun	default VMSPLIT_3G_OPT
194*4882a593Smuzhiyun	help
195*4882a593Smuzhiyun	  Select the desired split between kernel and user memory.
196*4882a593Smuzhiyun
197*4882a593Smuzhiyun	  If you are not absolutely sure what you are doing, leave this
198*4882a593Smuzhiyun	  option alone!
199*4882a593Smuzhiyun
200*4882a593Smuzhiyun	config VMSPLIT_3G
201*4882a593Smuzhiyun		bool "3G/1G user/kernel split"
202*4882a593Smuzhiyun	config VMSPLIT_3G_OPT
203*4882a593Smuzhiyun		bool "3G/1G user/kernel split (for full 1G low memory)"
204*4882a593Smuzhiyun	config VMSPLIT_2G
205*4882a593Smuzhiyun		bool "2G/2G user/kernel split"
206*4882a593Smuzhiyun	config VMSPLIT_1G
207*4882a593Smuzhiyun		bool "1G/3G user/kernel split"
208*4882a593Smuzhiyunendchoice
209*4882a593Smuzhiyun
210*4882a593Smuzhiyunconfig PAGE_OFFSET
211*4882a593Smuzhiyun	hex
212*4882a593Smuzhiyun	default 0x40000000 if VMSPLIT_1G
213*4882a593Smuzhiyun	default 0x80000000 if VMSPLIT_2G
214*4882a593Smuzhiyun	default 0xB0000000 if VMSPLIT_3G_OPT
215*4882a593Smuzhiyun	default 0xC0000000
216*4882a593Smuzhiyun
217*4882a593Smuzhiyunendmenu
218