1 # SPDX-License-Identifier: GPL-2.0-only
2 comment "Processor Features"
5 def_bool !CPU_LITTLE_ENDIAN
7 config CPU_LITTLE_ENDIAN
15 If FPU ISA is used in user space, this configuration shall be Y to
16 enable required support in kernel such as fpu context switch and
17 fpu exception handler.
19 If no FPU ISA is used in user space, say N.
22 bool "lazy FPU support"
26 Say Y here to enable the lazy FPU scheme. The lazy FPU scheme can
27 enhance system performance by reducing the context switch
28 frequency of the FPU register.
30 For normal case, say Y.
32 config SUPPORT_DENORMAL_ARITHMETIC
33 bool "Denormal arithmetic support"
37 Say Y here to enable arithmetic of denormalized number. Enabling
38 this feature can enhance the precision for tininess number.
39 However, performance loss in float point calculations is
40 possibly significant due to additional FPU exception.
42 If the calculated tolerance for tininess number is not critical,
43 say N to prevent performance loss.
46 bool "hardware zero overhead loop support"
47 depends on CPU_D10 || CPU_D15
50 A set of Zero-Overhead Loop mechanism is provided to reduce the
51 instruction fetch and execution overhead of loop-control instructions.
52 It will save 3 registers($LB, $LC, $LE) for context saving if say Y.
53 You don't need to save these registers if you can make sure your user
54 program doesn't use these registers.
58 config CPU_CACHE_ALIASING
60 depends on CPU_N10 || CPU_D10 || CPU_N13 || CPU_V3
63 If this CPU is using VIPT data cache and its cache way size is larger
64 than page size, say Y. If it is using PIPT data cache, say N.
69 prompt "minimum CPU type"
72 The data cache of N15/D15 is implemented as PIPT and it will not cause
73 the cache aliasing issue. The rest cpus(N13, N10 and D10) are
74 implemented as VIPT data cache. It may cause the cache aliasing issue
75 if its cache way size is larger than page size. You can specify the
76 CPU type directly or choose CPU_V3 if unsure.
78 A kernel built for N10 is able to run on N15, D15, N13, N10 or D10.
79 A kernel built for N15 is able to run on N15 or D15.
80 A kernel built for D10 is able to run on D10 or D15.
81 A kernel built for D15 is able to run on D15.
82 A kernel built for N13 is able to run on N15, N13 or D15.
88 select CPU_CACHE_ALIASING if ANDES_PAGE_SIZE_4KB
91 select CPU_CACHE_ALIASING
96 select CPU_CACHE_ALIASING
98 bool "AndesCore v3 compatible"
99 select CPU_CACHE_ALIASING
102 prompt "Paging -- page size "
103 default ANDES_PAGE_SIZE_4KB
104 config ANDES_PAGE_SIZE_4KB
105 bool "use 4KB page size"
106 config ANDES_PAGE_SIZE_8KB
107 bool "use 8KB page size"
110 config CPU_ICACHE_DISABLE
111 bool "Disable I-Cache"
113 Say Y here to disable the processor instruction cache. Unless
114 you have a reason not to or are unsure, say N.
116 config CPU_DCACHE_DISABLE
117 bool "Disable D-Cache"
119 Say Y here to disable the processor data cache. Unless
120 you have a reason not to or are unsure, say N.
122 config CPU_DCACHE_WRITETHROUGH
123 bool "Force write through D-cache"
124 depends on !CPU_DCACHE_DISABLE
126 Say Y here to use the data cache in writethrough mode. Unless you
127 specifically require this or are unsure, say N.
133 Say Y here to enable write-back memory with no-write-allocation policy.
135 config ALIGNMENT_TRAP
136 bool "Kernel support unaligned access handling by sw"
140 Andes processors cannot load/store information which is not
141 naturally aligned on the bus, i.e., a 4 byte load must start at an
142 address divisible by 4. On 32-bit Andes processors, these non-aligned
143 load/store instructions will be emulated in software if you say Y
144 here, which has a severe performance impact. With an IP-only
145 configuration it is safe to say N, otherwise say Y.
147 config HW_SUPPORT_UNALIGNMENT_ACCESS
148 bool "Kernel support unaligned access handling by hw"
149 depends on !ALIGNMENT_TRAP
152 Andes processors load/store world/half-word instructions can access
153 unaligned memory locations without generating the Data Alignment
154 Check exceptions. With an IP-only configuration it is safe to say N,
158 bool "High Memory Support"
159 depends on MMU && !CPU_CACHE_ALIASING
161 The address space of Andes processors is only 4 Gigabytes large
162 and it has to accommodate user address space, kernel address
163 space as well as some memory mapped IO. That means that, if you
164 have a large amount of physical memory and/or IO, not all of the
165 memory can be "permanently mapped" by the kernel. The physical
166 memory that is not permanently mapped is called "high memory".
168 Depending on the selected kernel/user memory split, minimum
169 vmalloc space and actual amount of RAM, you may not need this
170 option which should result in a slightly faster kernel.
175 bool "Support L2 cache"
178 Say Y here to enable L2 cache if your SoC are integrated with L2CC.
182 bool "Enable hardware prefetcher"
185 Say Y here to enable hardware prefetcher feature.
186 Only when CPU_VER.REV >= 0x09 can support.
188 menu "Memory configuration"
191 prompt "Memory split"
193 default VMSPLIT_3G_OPT
195 Select the desired split between kernel and user memory.
197 If you are not absolutely sure what you are doing, leave this
201 bool "3G/1G user/kernel split"
202 config VMSPLIT_3G_OPT
203 bool "3G/1G user/kernel split (for full 1G low memory)"
205 bool "2G/2G user/kernel split"
207 bool "1G/3G user/kernel split"
212 default 0x40000000 if VMSPLIT_1G
213 default 0x80000000 if VMSPLIT_2G
214 default 0xB0000000 if VMSPLIT_3G_OPT