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