18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_cicomment "Processor Type" 38c2ecf20Sopenharmony_ci 48c2ecf20Sopenharmony_ci# Select CPU types depending on the architecture selected. This selects 58c2ecf20Sopenharmony_ci# which CPUs we support in the kernel image, and the compiler instruction 68c2ecf20Sopenharmony_ci# optimiser behaviour. 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci# ARM7TDMI 98c2ecf20Sopenharmony_ciconfig CPU_ARM7TDMI 108c2ecf20Sopenharmony_ci bool 118c2ecf20Sopenharmony_ci depends on !MMU 128c2ecf20Sopenharmony_ci select CPU_32v4T 138c2ecf20Sopenharmony_ci select CPU_ABRT_LV4T 148c2ecf20Sopenharmony_ci select CPU_CACHE_V4 158c2ecf20Sopenharmony_ci select CPU_PABRT_LEGACY 168c2ecf20Sopenharmony_ci help 178c2ecf20Sopenharmony_ci A 32-bit RISC microprocessor based on the ARM7 processor core 188c2ecf20Sopenharmony_ci which has no memory control unit and cache. 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ci Say Y if you want support for the ARM7TDMI processor. 218c2ecf20Sopenharmony_ci Otherwise, say N. 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ci# ARM720T 248c2ecf20Sopenharmony_ciconfig CPU_ARM720T 258c2ecf20Sopenharmony_ci bool 268c2ecf20Sopenharmony_ci select CPU_32v4T 278c2ecf20Sopenharmony_ci select CPU_ABRT_LV4T 288c2ecf20Sopenharmony_ci select CPU_CACHE_V4 298c2ecf20Sopenharmony_ci select CPU_CACHE_VIVT 308c2ecf20Sopenharmony_ci select CPU_COPY_V4WT if MMU 318c2ecf20Sopenharmony_ci select CPU_CP15_MMU 328c2ecf20Sopenharmony_ci select CPU_PABRT_LEGACY 338c2ecf20Sopenharmony_ci select CPU_THUMB_CAPABLE 348c2ecf20Sopenharmony_ci select CPU_TLB_V4WT if MMU 358c2ecf20Sopenharmony_ci help 368c2ecf20Sopenharmony_ci A 32-bit RISC processor with 8kByte Cache, Write Buffer and 378c2ecf20Sopenharmony_ci MMU built around an ARM7TDMI core. 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci Say Y if you want support for the ARM720T processor. 408c2ecf20Sopenharmony_ci Otherwise, say N. 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ci# ARM740T 438c2ecf20Sopenharmony_ciconfig CPU_ARM740T 448c2ecf20Sopenharmony_ci bool 458c2ecf20Sopenharmony_ci depends on !MMU 468c2ecf20Sopenharmony_ci select CPU_32v4T 478c2ecf20Sopenharmony_ci select CPU_ABRT_LV4T 488c2ecf20Sopenharmony_ci select CPU_CACHE_V4 498c2ecf20Sopenharmony_ci select CPU_CP15_MPU 508c2ecf20Sopenharmony_ci select CPU_PABRT_LEGACY 518c2ecf20Sopenharmony_ci select CPU_THUMB_CAPABLE 528c2ecf20Sopenharmony_ci help 538c2ecf20Sopenharmony_ci A 32-bit RISC processor with 8KB cache or 4KB variants, 548c2ecf20Sopenharmony_ci write buffer and MPU(Protection Unit) built around 558c2ecf20Sopenharmony_ci an ARM7TDMI core. 568c2ecf20Sopenharmony_ci 578c2ecf20Sopenharmony_ci Say Y if you want support for the ARM740T processor. 588c2ecf20Sopenharmony_ci Otherwise, say N. 598c2ecf20Sopenharmony_ci 608c2ecf20Sopenharmony_ci# ARM9TDMI 618c2ecf20Sopenharmony_ciconfig CPU_ARM9TDMI 628c2ecf20Sopenharmony_ci bool 638c2ecf20Sopenharmony_ci depends on !MMU 648c2ecf20Sopenharmony_ci select CPU_32v4T 658c2ecf20Sopenharmony_ci select CPU_ABRT_NOMMU 668c2ecf20Sopenharmony_ci select CPU_CACHE_V4 678c2ecf20Sopenharmony_ci select CPU_PABRT_LEGACY 688c2ecf20Sopenharmony_ci help 698c2ecf20Sopenharmony_ci A 32-bit RISC microprocessor based on the ARM9 processor core 708c2ecf20Sopenharmony_ci which has no memory control unit and cache. 718c2ecf20Sopenharmony_ci 728c2ecf20Sopenharmony_ci Say Y if you want support for the ARM9TDMI processor. 738c2ecf20Sopenharmony_ci Otherwise, say N. 748c2ecf20Sopenharmony_ci 758c2ecf20Sopenharmony_ci# ARM920T 768c2ecf20Sopenharmony_ciconfig CPU_ARM920T 778c2ecf20Sopenharmony_ci bool 788c2ecf20Sopenharmony_ci select CPU_32v4T 798c2ecf20Sopenharmony_ci select CPU_ABRT_EV4T 808c2ecf20Sopenharmony_ci select CPU_CACHE_V4WT 818c2ecf20Sopenharmony_ci select CPU_CACHE_VIVT 828c2ecf20Sopenharmony_ci select CPU_COPY_V4WB if MMU 838c2ecf20Sopenharmony_ci select CPU_CP15_MMU 848c2ecf20Sopenharmony_ci select CPU_PABRT_LEGACY 858c2ecf20Sopenharmony_ci select CPU_THUMB_CAPABLE 868c2ecf20Sopenharmony_ci select CPU_TLB_V4WBI if MMU 878c2ecf20Sopenharmony_ci help 888c2ecf20Sopenharmony_ci The ARM920T is licensed to be produced by numerous vendors, 898c2ecf20Sopenharmony_ci and is used in the Cirrus EP93xx and the Samsung S3C2410. 908c2ecf20Sopenharmony_ci 918c2ecf20Sopenharmony_ci Say Y if you want support for the ARM920T processor. 928c2ecf20Sopenharmony_ci Otherwise, say N. 938c2ecf20Sopenharmony_ci 948c2ecf20Sopenharmony_ci# ARM922T 958c2ecf20Sopenharmony_ciconfig CPU_ARM922T 968c2ecf20Sopenharmony_ci bool 978c2ecf20Sopenharmony_ci select CPU_32v4T 988c2ecf20Sopenharmony_ci select CPU_ABRT_EV4T 998c2ecf20Sopenharmony_ci select CPU_CACHE_V4WT 1008c2ecf20Sopenharmony_ci select CPU_CACHE_VIVT 1018c2ecf20Sopenharmony_ci select CPU_COPY_V4WB if MMU 1028c2ecf20Sopenharmony_ci select CPU_CP15_MMU 1038c2ecf20Sopenharmony_ci select CPU_PABRT_LEGACY 1048c2ecf20Sopenharmony_ci select CPU_THUMB_CAPABLE 1058c2ecf20Sopenharmony_ci select CPU_TLB_V4WBI if MMU 1068c2ecf20Sopenharmony_ci help 1078c2ecf20Sopenharmony_ci The ARM922T is a version of the ARM920T, but with smaller 1088c2ecf20Sopenharmony_ci instruction and data caches. It is used in Altera's 1098c2ecf20Sopenharmony_ci Excalibur XA device family and the ARM Integrator. 1108c2ecf20Sopenharmony_ci 1118c2ecf20Sopenharmony_ci Say Y if you want support for the ARM922T processor. 1128c2ecf20Sopenharmony_ci Otherwise, say N. 1138c2ecf20Sopenharmony_ci 1148c2ecf20Sopenharmony_ci# ARM925T 1158c2ecf20Sopenharmony_ciconfig CPU_ARM925T 1168c2ecf20Sopenharmony_ci bool 1178c2ecf20Sopenharmony_ci select CPU_32v4T 1188c2ecf20Sopenharmony_ci select CPU_ABRT_EV4T 1198c2ecf20Sopenharmony_ci select CPU_CACHE_V4WT 1208c2ecf20Sopenharmony_ci select CPU_CACHE_VIVT 1218c2ecf20Sopenharmony_ci select CPU_COPY_V4WB if MMU 1228c2ecf20Sopenharmony_ci select CPU_CP15_MMU 1238c2ecf20Sopenharmony_ci select CPU_PABRT_LEGACY 1248c2ecf20Sopenharmony_ci select CPU_THUMB_CAPABLE 1258c2ecf20Sopenharmony_ci select CPU_TLB_V4WBI if MMU 1268c2ecf20Sopenharmony_ci help 1278c2ecf20Sopenharmony_ci The ARM925T is a mix between the ARM920T and ARM926T, but with 1288c2ecf20Sopenharmony_ci different instruction and data caches. It is used in TI's OMAP 1298c2ecf20Sopenharmony_ci device family. 1308c2ecf20Sopenharmony_ci 1318c2ecf20Sopenharmony_ci Say Y if you want support for the ARM925T processor. 1328c2ecf20Sopenharmony_ci Otherwise, say N. 1338c2ecf20Sopenharmony_ci 1348c2ecf20Sopenharmony_ci# ARM926T 1358c2ecf20Sopenharmony_ciconfig CPU_ARM926T 1368c2ecf20Sopenharmony_ci bool 1378c2ecf20Sopenharmony_ci select CPU_32v5 1388c2ecf20Sopenharmony_ci select CPU_ABRT_EV5TJ 1398c2ecf20Sopenharmony_ci select CPU_CACHE_VIVT 1408c2ecf20Sopenharmony_ci select CPU_COPY_V4WB if MMU 1418c2ecf20Sopenharmony_ci select CPU_CP15_MMU 1428c2ecf20Sopenharmony_ci select CPU_PABRT_LEGACY 1438c2ecf20Sopenharmony_ci select CPU_THUMB_CAPABLE 1448c2ecf20Sopenharmony_ci select CPU_TLB_V4WBI if MMU 1458c2ecf20Sopenharmony_ci help 1468c2ecf20Sopenharmony_ci This is a variant of the ARM920. It has slightly different 1478c2ecf20Sopenharmony_ci instruction sequences for cache and TLB operations. Curiously, 1488c2ecf20Sopenharmony_ci there is no documentation on it at the ARM corporate website. 1498c2ecf20Sopenharmony_ci 1508c2ecf20Sopenharmony_ci Say Y if you want support for the ARM926T processor. 1518c2ecf20Sopenharmony_ci Otherwise, say N. 1528c2ecf20Sopenharmony_ci 1538c2ecf20Sopenharmony_ci# FA526 1548c2ecf20Sopenharmony_ciconfig CPU_FA526 1558c2ecf20Sopenharmony_ci bool 1568c2ecf20Sopenharmony_ci select CPU_32v4 1578c2ecf20Sopenharmony_ci select CPU_ABRT_EV4 1588c2ecf20Sopenharmony_ci select CPU_CACHE_FA 1598c2ecf20Sopenharmony_ci select CPU_CACHE_VIVT 1608c2ecf20Sopenharmony_ci select CPU_COPY_FA if MMU 1618c2ecf20Sopenharmony_ci select CPU_CP15_MMU 1628c2ecf20Sopenharmony_ci select CPU_PABRT_LEGACY 1638c2ecf20Sopenharmony_ci select CPU_TLB_FA if MMU 1648c2ecf20Sopenharmony_ci help 1658c2ecf20Sopenharmony_ci The FA526 is a version of the ARMv4 compatible processor with 1668c2ecf20Sopenharmony_ci Branch Target Buffer, Unified TLB and cache line size 16. 1678c2ecf20Sopenharmony_ci 1688c2ecf20Sopenharmony_ci Say Y if you want support for the FA526 processor. 1698c2ecf20Sopenharmony_ci Otherwise, say N. 1708c2ecf20Sopenharmony_ci 1718c2ecf20Sopenharmony_ci# ARM940T 1728c2ecf20Sopenharmony_ciconfig CPU_ARM940T 1738c2ecf20Sopenharmony_ci bool 1748c2ecf20Sopenharmony_ci depends on !MMU 1758c2ecf20Sopenharmony_ci select CPU_32v4T 1768c2ecf20Sopenharmony_ci select CPU_ABRT_NOMMU 1778c2ecf20Sopenharmony_ci select CPU_CACHE_VIVT 1788c2ecf20Sopenharmony_ci select CPU_CP15_MPU 1798c2ecf20Sopenharmony_ci select CPU_PABRT_LEGACY 1808c2ecf20Sopenharmony_ci select CPU_THUMB_CAPABLE 1818c2ecf20Sopenharmony_ci help 1828c2ecf20Sopenharmony_ci ARM940T is a member of the ARM9TDMI family of general- 1838c2ecf20Sopenharmony_ci purpose microprocessors with MPU and separate 4KB 1848c2ecf20Sopenharmony_ci instruction and 4KB data cases, each with a 4-word line 1858c2ecf20Sopenharmony_ci length. 1868c2ecf20Sopenharmony_ci 1878c2ecf20Sopenharmony_ci Say Y if you want support for the ARM940T processor. 1888c2ecf20Sopenharmony_ci Otherwise, say N. 1898c2ecf20Sopenharmony_ci 1908c2ecf20Sopenharmony_ci# ARM946E-S 1918c2ecf20Sopenharmony_ciconfig CPU_ARM946E 1928c2ecf20Sopenharmony_ci bool 1938c2ecf20Sopenharmony_ci depends on !MMU 1948c2ecf20Sopenharmony_ci select CPU_32v5 1958c2ecf20Sopenharmony_ci select CPU_ABRT_NOMMU 1968c2ecf20Sopenharmony_ci select CPU_CACHE_VIVT 1978c2ecf20Sopenharmony_ci select CPU_CP15_MPU 1988c2ecf20Sopenharmony_ci select CPU_PABRT_LEGACY 1998c2ecf20Sopenharmony_ci select CPU_THUMB_CAPABLE 2008c2ecf20Sopenharmony_ci help 2018c2ecf20Sopenharmony_ci ARM946E-S is a member of the ARM9E-S family of high- 2028c2ecf20Sopenharmony_ci performance, 32-bit system-on-chip processor solutions. 2038c2ecf20Sopenharmony_ci The TCM and ARMv5TE 32-bit instruction set is supported. 2048c2ecf20Sopenharmony_ci 2058c2ecf20Sopenharmony_ci Say Y if you want support for the ARM946E-S processor. 2068c2ecf20Sopenharmony_ci Otherwise, say N. 2078c2ecf20Sopenharmony_ci 2088c2ecf20Sopenharmony_ci# ARM1020 - needs validating 2098c2ecf20Sopenharmony_ciconfig CPU_ARM1020 2108c2ecf20Sopenharmony_ci bool 2118c2ecf20Sopenharmony_ci select CPU_32v5 2128c2ecf20Sopenharmony_ci select CPU_ABRT_EV4T 2138c2ecf20Sopenharmony_ci select CPU_CACHE_V4WT 2148c2ecf20Sopenharmony_ci select CPU_CACHE_VIVT 2158c2ecf20Sopenharmony_ci select CPU_COPY_V4WB if MMU 2168c2ecf20Sopenharmony_ci select CPU_CP15_MMU 2178c2ecf20Sopenharmony_ci select CPU_PABRT_LEGACY 2188c2ecf20Sopenharmony_ci select CPU_THUMB_CAPABLE 2198c2ecf20Sopenharmony_ci select CPU_TLB_V4WBI if MMU 2208c2ecf20Sopenharmony_ci help 2218c2ecf20Sopenharmony_ci The ARM1020 is the 32K cached version of the ARM10 processor, 2228c2ecf20Sopenharmony_ci with an addition of a floating-point unit. 2238c2ecf20Sopenharmony_ci 2248c2ecf20Sopenharmony_ci Say Y if you want support for the ARM1020 processor. 2258c2ecf20Sopenharmony_ci Otherwise, say N. 2268c2ecf20Sopenharmony_ci 2278c2ecf20Sopenharmony_ci# ARM1020E - needs validating 2288c2ecf20Sopenharmony_ciconfig CPU_ARM1020E 2298c2ecf20Sopenharmony_ci bool 2308c2ecf20Sopenharmony_ci depends on n 2318c2ecf20Sopenharmony_ci select CPU_32v5 2328c2ecf20Sopenharmony_ci select CPU_ABRT_EV4T 2338c2ecf20Sopenharmony_ci select CPU_CACHE_V4WT 2348c2ecf20Sopenharmony_ci select CPU_CACHE_VIVT 2358c2ecf20Sopenharmony_ci select CPU_COPY_V4WB if MMU 2368c2ecf20Sopenharmony_ci select CPU_CP15_MMU 2378c2ecf20Sopenharmony_ci select CPU_PABRT_LEGACY 2388c2ecf20Sopenharmony_ci select CPU_THUMB_CAPABLE 2398c2ecf20Sopenharmony_ci select CPU_TLB_V4WBI if MMU 2408c2ecf20Sopenharmony_ci 2418c2ecf20Sopenharmony_ci# ARM1022E 2428c2ecf20Sopenharmony_ciconfig CPU_ARM1022 2438c2ecf20Sopenharmony_ci bool 2448c2ecf20Sopenharmony_ci select CPU_32v5 2458c2ecf20Sopenharmony_ci select CPU_ABRT_EV4T 2468c2ecf20Sopenharmony_ci select CPU_CACHE_VIVT 2478c2ecf20Sopenharmony_ci select CPU_COPY_V4WB if MMU # can probably do better 2488c2ecf20Sopenharmony_ci select CPU_CP15_MMU 2498c2ecf20Sopenharmony_ci select CPU_PABRT_LEGACY 2508c2ecf20Sopenharmony_ci select CPU_THUMB_CAPABLE 2518c2ecf20Sopenharmony_ci select CPU_TLB_V4WBI if MMU 2528c2ecf20Sopenharmony_ci help 2538c2ecf20Sopenharmony_ci The ARM1022E is an implementation of the ARMv5TE architecture 2548c2ecf20Sopenharmony_ci based upon the ARM10 integer core with a 16KiB L1 Harvard cache, 2558c2ecf20Sopenharmony_ci embedded trace macrocell, and a floating-point unit. 2568c2ecf20Sopenharmony_ci 2578c2ecf20Sopenharmony_ci Say Y if you want support for the ARM1022E processor. 2588c2ecf20Sopenharmony_ci Otherwise, say N. 2598c2ecf20Sopenharmony_ci 2608c2ecf20Sopenharmony_ci# ARM1026EJ-S 2618c2ecf20Sopenharmony_ciconfig CPU_ARM1026 2628c2ecf20Sopenharmony_ci bool 2638c2ecf20Sopenharmony_ci select CPU_32v5 2648c2ecf20Sopenharmony_ci select CPU_ABRT_EV5T # But need Jazelle, but EV5TJ ignores bit 10 2658c2ecf20Sopenharmony_ci select CPU_CACHE_VIVT 2668c2ecf20Sopenharmony_ci select CPU_COPY_V4WB if MMU # can probably do better 2678c2ecf20Sopenharmony_ci select CPU_CP15_MMU 2688c2ecf20Sopenharmony_ci select CPU_PABRT_LEGACY 2698c2ecf20Sopenharmony_ci select CPU_THUMB_CAPABLE 2708c2ecf20Sopenharmony_ci select CPU_TLB_V4WBI if MMU 2718c2ecf20Sopenharmony_ci help 2728c2ecf20Sopenharmony_ci The ARM1026EJ-S is an implementation of the ARMv5TEJ architecture 2738c2ecf20Sopenharmony_ci based upon the ARM10 integer core. 2748c2ecf20Sopenharmony_ci 2758c2ecf20Sopenharmony_ci Say Y if you want support for the ARM1026EJ-S processor. 2768c2ecf20Sopenharmony_ci Otherwise, say N. 2778c2ecf20Sopenharmony_ci 2788c2ecf20Sopenharmony_ci# SA110 2798c2ecf20Sopenharmony_ciconfig CPU_SA110 2808c2ecf20Sopenharmony_ci bool 2818c2ecf20Sopenharmony_ci select CPU_32v3 if ARCH_RPC 2828c2ecf20Sopenharmony_ci select CPU_32v4 if !ARCH_RPC 2838c2ecf20Sopenharmony_ci select CPU_ABRT_EV4 2848c2ecf20Sopenharmony_ci select CPU_CACHE_V4WB 2858c2ecf20Sopenharmony_ci select CPU_CACHE_VIVT 2868c2ecf20Sopenharmony_ci select CPU_COPY_V4WB if MMU 2878c2ecf20Sopenharmony_ci select CPU_CP15_MMU 2888c2ecf20Sopenharmony_ci select CPU_PABRT_LEGACY 2898c2ecf20Sopenharmony_ci select CPU_TLB_V4WB if MMU 2908c2ecf20Sopenharmony_ci help 2918c2ecf20Sopenharmony_ci The Intel StrongARM(R) SA-110 is a 32-bit microprocessor and 2928c2ecf20Sopenharmony_ci is available at five speeds ranging from 100 MHz to 233 MHz. 2938c2ecf20Sopenharmony_ci More information is available at 2948c2ecf20Sopenharmony_ci <http://developer.intel.com/design/strong/sa110.htm>. 2958c2ecf20Sopenharmony_ci 2968c2ecf20Sopenharmony_ci Say Y if you want support for the SA-110 processor. 2978c2ecf20Sopenharmony_ci Otherwise, say N. 2988c2ecf20Sopenharmony_ci 2998c2ecf20Sopenharmony_ci# SA1100 3008c2ecf20Sopenharmony_ciconfig CPU_SA1100 3018c2ecf20Sopenharmony_ci bool 3028c2ecf20Sopenharmony_ci select CPU_32v4 3038c2ecf20Sopenharmony_ci select CPU_ABRT_EV4 3048c2ecf20Sopenharmony_ci select CPU_CACHE_V4WB 3058c2ecf20Sopenharmony_ci select CPU_CACHE_VIVT 3068c2ecf20Sopenharmony_ci select CPU_CP15_MMU 3078c2ecf20Sopenharmony_ci select CPU_PABRT_LEGACY 3088c2ecf20Sopenharmony_ci select CPU_TLB_V4WB if MMU 3098c2ecf20Sopenharmony_ci 3108c2ecf20Sopenharmony_ci# XScale 3118c2ecf20Sopenharmony_ciconfig CPU_XSCALE 3128c2ecf20Sopenharmony_ci bool 3138c2ecf20Sopenharmony_ci select CPU_32v5 3148c2ecf20Sopenharmony_ci select CPU_ABRT_EV5T 3158c2ecf20Sopenharmony_ci select CPU_CACHE_VIVT 3168c2ecf20Sopenharmony_ci select CPU_CP15_MMU 3178c2ecf20Sopenharmony_ci select CPU_PABRT_LEGACY 3188c2ecf20Sopenharmony_ci select CPU_THUMB_CAPABLE 3198c2ecf20Sopenharmony_ci select CPU_TLB_V4WBI if MMU 3208c2ecf20Sopenharmony_ci 3218c2ecf20Sopenharmony_ci# XScale Core Version 3 3228c2ecf20Sopenharmony_ciconfig CPU_XSC3 3238c2ecf20Sopenharmony_ci bool 3248c2ecf20Sopenharmony_ci select CPU_32v5 3258c2ecf20Sopenharmony_ci select CPU_ABRT_EV5T 3268c2ecf20Sopenharmony_ci select CPU_CACHE_VIVT 3278c2ecf20Sopenharmony_ci select CPU_CP15_MMU 3288c2ecf20Sopenharmony_ci select CPU_PABRT_LEGACY 3298c2ecf20Sopenharmony_ci select CPU_THUMB_CAPABLE 3308c2ecf20Sopenharmony_ci select CPU_TLB_V4WBI if MMU 3318c2ecf20Sopenharmony_ci select IO_36 3328c2ecf20Sopenharmony_ci 3338c2ecf20Sopenharmony_ci# Marvell PJ1 (Mohawk) 3348c2ecf20Sopenharmony_ciconfig CPU_MOHAWK 3358c2ecf20Sopenharmony_ci bool 3368c2ecf20Sopenharmony_ci select CPU_32v5 3378c2ecf20Sopenharmony_ci select CPU_ABRT_EV5T 3388c2ecf20Sopenharmony_ci select CPU_CACHE_VIVT 3398c2ecf20Sopenharmony_ci select CPU_COPY_V4WB if MMU 3408c2ecf20Sopenharmony_ci select CPU_CP15_MMU 3418c2ecf20Sopenharmony_ci select CPU_PABRT_LEGACY 3428c2ecf20Sopenharmony_ci select CPU_THUMB_CAPABLE 3438c2ecf20Sopenharmony_ci select CPU_TLB_V4WBI if MMU 3448c2ecf20Sopenharmony_ci 3458c2ecf20Sopenharmony_ci# Feroceon 3468c2ecf20Sopenharmony_ciconfig CPU_FEROCEON 3478c2ecf20Sopenharmony_ci bool 3488c2ecf20Sopenharmony_ci select CPU_32v5 3498c2ecf20Sopenharmony_ci select CPU_ABRT_EV5T 3508c2ecf20Sopenharmony_ci select CPU_CACHE_VIVT 3518c2ecf20Sopenharmony_ci select CPU_COPY_FEROCEON if MMU 3528c2ecf20Sopenharmony_ci select CPU_CP15_MMU 3538c2ecf20Sopenharmony_ci select CPU_PABRT_LEGACY 3548c2ecf20Sopenharmony_ci select CPU_THUMB_CAPABLE 3558c2ecf20Sopenharmony_ci select CPU_TLB_FEROCEON if MMU 3568c2ecf20Sopenharmony_ci 3578c2ecf20Sopenharmony_ciconfig CPU_FEROCEON_OLD_ID 3588c2ecf20Sopenharmony_ci bool "Accept early Feroceon cores with an ARM926 ID" 3598c2ecf20Sopenharmony_ci depends on CPU_FEROCEON && !CPU_ARM926T 3608c2ecf20Sopenharmony_ci default y 3618c2ecf20Sopenharmony_ci help 3628c2ecf20Sopenharmony_ci This enables the usage of some old Feroceon cores 3638c2ecf20Sopenharmony_ci for which the CPU ID is equal to the ARM926 ID. 3648c2ecf20Sopenharmony_ci Relevant for Feroceon-1850 and early Feroceon-2850. 3658c2ecf20Sopenharmony_ci 3668c2ecf20Sopenharmony_ci# Marvell PJ4 3678c2ecf20Sopenharmony_ciconfig CPU_PJ4 3688c2ecf20Sopenharmony_ci bool 3698c2ecf20Sopenharmony_ci select ARM_THUMBEE 3708c2ecf20Sopenharmony_ci select CPU_V7 3718c2ecf20Sopenharmony_ci 3728c2ecf20Sopenharmony_ciconfig CPU_PJ4B 3738c2ecf20Sopenharmony_ci bool 3748c2ecf20Sopenharmony_ci select CPU_V7 3758c2ecf20Sopenharmony_ci 3768c2ecf20Sopenharmony_ci# ARMv6 3778c2ecf20Sopenharmony_ciconfig CPU_V6 3788c2ecf20Sopenharmony_ci bool 3798c2ecf20Sopenharmony_ci select CPU_32v6 3808c2ecf20Sopenharmony_ci select CPU_ABRT_EV6 3818c2ecf20Sopenharmony_ci select CPU_CACHE_V6 3828c2ecf20Sopenharmony_ci select CPU_CACHE_VIPT 3838c2ecf20Sopenharmony_ci select CPU_COPY_V6 if MMU 3848c2ecf20Sopenharmony_ci select CPU_CP15_MMU 3858c2ecf20Sopenharmony_ci select CPU_HAS_ASID if MMU 3868c2ecf20Sopenharmony_ci select CPU_PABRT_V6 3878c2ecf20Sopenharmony_ci select CPU_THUMB_CAPABLE 3888c2ecf20Sopenharmony_ci select CPU_TLB_V6 if MMU 3898c2ecf20Sopenharmony_ci 3908c2ecf20Sopenharmony_ci# ARMv6k 3918c2ecf20Sopenharmony_ciconfig CPU_V6K 3928c2ecf20Sopenharmony_ci bool 3938c2ecf20Sopenharmony_ci select CPU_32v6 3948c2ecf20Sopenharmony_ci select CPU_32v6K 3958c2ecf20Sopenharmony_ci select CPU_ABRT_EV6 3968c2ecf20Sopenharmony_ci select CPU_CACHE_V6 3978c2ecf20Sopenharmony_ci select CPU_CACHE_VIPT 3988c2ecf20Sopenharmony_ci select CPU_COPY_V6 if MMU 3998c2ecf20Sopenharmony_ci select CPU_CP15_MMU 4008c2ecf20Sopenharmony_ci select CPU_HAS_ASID if MMU 4018c2ecf20Sopenharmony_ci select CPU_PABRT_V6 4028c2ecf20Sopenharmony_ci select CPU_THUMB_CAPABLE 4038c2ecf20Sopenharmony_ci select CPU_TLB_V6 if MMU 4048c2ecf20Sopenharmony_ci 4058c2ecf20Sopenharmony_ci# ARMv7 4068c2ecf20Sopenharmony_ciconfig CPU_V7 4078c2ecf20Sopenharmony_ci bool 4088c2ecf20Sopenharmony_ci select CPU_32v6K 4098c2ecf20Sopenharmony_ci select CPU_32v7 4108c2ecf20Sopenharmony_ci select CPU_ABRT_EV7 4118c2ecf20Sopenharmony_ci select CPU_CACHE_V7 4128c2ecf20Sopenharmony_ci select CPU_CACHE_VIPT 4138c2ecf20Sopenharmony_ci select CPU_COPY_V6 if MMU 4148c2ecf20Sopenharmony_ci select CPU_CP15_MMU if MMU 4158c2ecf20Sopenharmony_ci select CPU_CP15_MPU if !MMU 4168c2ecf20Sopenharmony_ci select CPU_HAS_ASID if MMU 4178c2ecf20Sopenharmony_ci select CPU_PABRT_V7 4188c2ecf20Sopenharmony_ci select CPU_SPECTRE if MMU 4198c2ecf20Sopenharmony_ci select CPU_THUMB_CAPABLE 4208c2ecf20Sopenharmony_ci select CPU_TLB_V7 if MMU 4218c2ecf20Sopenharmony_ci 4228c2ecf20Sopenharmony_ci# ARMv7M 4238c2ecf20Sopenharmony_ciconfig CPU_V7M 4248c2ecf20Sopenharmony_ci bool 4258c2ecf20Sopenharmony_ci select CPU_32v7M 4268c2ecf20Sopenharmony_ci select CPU_ABRT_NOMMU 4278c2ecf20Sopenharmony_ci select CPU_CACHE_V7M 4288c2ecf20Sopenharmony_ci select CPU_CACHE_NOP 4298c2ecf20Sopenharmony_ci select CPU_PABRT_LEGACY 4308c2ecf20Sopenharmony_ci select CPU_THUMBONLY 4318c2ecf20Sopenharmony_ci 4328c2ecf20Sopenharmony_ciconfig CPU_THUMBONLY 4338c2ecf20Sopenharmony_ci bool 4348c2ecf20Sopenharmony_ci select CPU_THUMB_CAPABLE 4358c2ecf20Sopenharmony_ci # There are no CPUs available with MMU that don't implement an ARM ISA: 4368c2ecf20Sopenharmony_ci depends on !MMU 4378c2ecf20Sopenharmony_ci help 4388c2ecf20Sopenharmony_ci Select this if your CPU doesn't support the 32 bit ARM instructions. 4398c2ecf20Sopenharmony_ci 4408c2ecf20Sopenharmony_ciconfig CPU_THUMB_CAPABLE 4418c2ecf20Sopenharmony_ci bool 4428c2ecf20Sopenharmony_ci help 4438c2ecf20Sopenharmony_ci Select this if your CPU can support Thumb mode. 4448c2ecf20Sopenharmony_ci 4458c2ecf20Sopenharmony_ci# Figure out what processor architecture version we should be using. 4468c2ecf20Sopenharmony_ci# This defines the compiler instruction set which depends on the machine type. 4478c2ecf20Sopenharmony_ciconfig CPU_32v3 4488c2ecf20Sopenharmony_ci bool 4498c2ecf20Sopenharmony_ci select CPU_USE_DOMAINS if MMU 4508c2ecf20Sopenharmony_ci select NEED_KUSER_HELPERS 4518c2ecf20Sopenharmony_ci select TLS_REG_EMUL if SMP || !MMU 4528c2ecf20Sopenharmony_ci select CPU_NO_EFFICIENT_FFS 4538c2ecf20Sopenharmony_ci 4548c2ecf20Sopenharmony_ciconfig CPU_32v4 4558c2ecf20Sopenharmony_ci bool 4568c2ecf20Sopenharmony_ci select CPU_USE_DOMAINS if MMU 4578c2ecf20Sopenharmony_ci select NEED_KUSER_HELPERS 4588c2ecf20Sopenharmony_ci select TLS_REG_EMUL if SMP || !MMU 4598c2ecf20Sopenharmony_ci select CPU_NO_EFFICIENT_FFS 4608c2ecf20Sopenharmony_ci 4618c2ecf20Sopenharmony_ciconfig CPU_32v4T 4628c2ecf20Sopenharmony_ci bool 4638c2ecf20Sopenharmony_ci select CPU_USE_DOMAINS if MMU 4648c2ecf20Sopenharmony_ci select NEED_KUSER_HELPERS 4658c2ecf20Sopenharmony_ci select TLS_REG_EMUL if SMP || !MMU 4668c2ecf20Sopenharmony_ci select CPU_NO_EFFICIENT_FFS 4678c2ecf20Sopenharmony_ci 4688c2ecf20Sopenharmony_ciconfig CPU_32v5 4698c2ecf20Sopenharmony_ci bool 4708c2ecf20Sopenharmony_ci select CPU_USE_DOMAINS if MMU 4718c2ecf20Sopenharmony_ci select NEED_KUSER_HELPERS 4728c2ecf20Sopenharmony_ci select TLS_REG_EMUL if SMP || !MMU 4738c2ecf20Sopenharmony_ci 4748c2ecf20Sopenharmony_ciconfig CPU_32v6 4758c2ecf20Sopenharmony_ci bool 4768c2ecf20Sopenharmony_ci select TLS_REG_EMUL if !CPU_32v6K && !MMU 4778c2ecf20Sopenharmony_ci 4788c2ecf20Sopenharmony_ciconfig CPU_32v6K 4798c2ecf20Sopenharmony_ci bool 4808c2ecf20Sopenharmony_ci 4818c2ecf20Sopenharmony_ciconfig CPU_32v7 4828c2ecf20Sopenharmony_ci bool 4838c2ecf20Sopenharmony_ci 4848c2ecf20Sopenharmony_ciconfig CPU_32v7M 4858c2ecf20Sopenharmony_ci bool 4868c2ecf20Sopenharmony_ci 4878c2ecf20Sopenharmony_ci# The abort model 4888c2ecf20Sopenharmony_ciconfig CPU_ABRT_NOMMU 4898c2ecf20Sopenharmony_ci bool 4908c2ecf20Sopenharmony_ci 4918c2ecf20Sopenharmony_ciconfig CPU_ABRT_EV4 4928c2ecf20Sopenharmony_ci bool 4938c2ecf20Sopenharmony_ci 4948c2ecf20Sopenharmony_ciconfig CPU_ABRT_EV4T 4958c2ecf20Sopenharmony_ci bool 4968c2ecf20Sopenharmony_ci 4978c2ecf20Sopenharmony_ciconfig CPU_ABRT_LV4T 4988c2ecf20Sopenharmony_ci bool 4998c2ecf20Sopenharmony_ci 5008c2ecf20Sopenharmony_ciconfig CPU_ABRT_EV5T 5018c2ecf20Sopenharmony_ci bool 5028c2ecf20Sopenharmony_ci 5038c2ecf20Sopenharmony_ciconfig CPU_ABRT_EV5TJ 5048c2ecf20Sopenharmony_ci bool 5058c2ecf20Sopenharmony_ci 5068c2ecf20Sopenharmony_ciconfig CPU_ABRT_EV6 5078c2ecf20Sopenharmony_ci bool 5088c2ecf20Sopenharmony_ci 5098c2ecf20Sopenharmony_ciconfig CPU_ABRT_EV7 5108c2ecf20Sopenharmony_ci bool 5118c2ecf20Sopenharmony_ci 5128c2ecf20Sopenharmony_ciconfig CPU_PABRT_LEGACY 5138c2ecf20Sopenharmony_ci bool 5148c2ecf20Sopenharmony_ci 5158c2ecf20Sopenharmony_ciconfig CPU_PABRT_V6 5168c2ecf20Sopenharmony_ci bool 5178c2ecf20Sopenharmony_ci 5188c2ecf20Sopenharmony_ciconfig CPU_PABRT_V7 5198c2ecf20Sopenharmony_ci bool 5208c2ecf20Sopenharmony_ci 5218c2ecf20Sopenharmony_ci# The cache model 5228c2ecf20Sopenharmony_ciconfig CPU_CACHE_V4 5238c2ecf20Sopenharmony_ci bool 5248c2ecf20Sopenharmony_ci 5258c2ecf20Sopenharmony_ciconfig CPU_CACHE_V4WT 5268c2ecf20Sopenharmony_ci bool 5278c2ecf20Sopenharmony_ci 5288c2ecf20Sopenharmony_ciconfig CPU_CACHE_V4WB 5298c2ecf20Sopenharmony_ci bool 5308c2ecf20Sopenharmony_ci 5318c2ecf20Sopenharmony_ciconfig CPU_CACHE_V6 5328c2ecf20Sopenharmony_ci bool 5338c2ecf20Sopenharmony_ci 5348c2ecf20Sopenharmony_ciconfig CPU_CACHE_V7 5358c2ecf20Sopenharmony_ci bool 5368c2ecf20Sopenharmony_ci 5378c2ecf20Sopenharmony_ciconfig CPU_CACHE_NOP 5388c2ecf20Sopenharmony_ci bool 5398c2ecf20Sopenharmony_ci 5408c2ecf20Sopenharmony_ciconfig CPU_CACHE_VIVT 5418c2ecf20Sopenharmony_ci bool 5428c2ecf20Sopenharmony_ci 5438c2ecf20Sopenharmony_ciconfig CPU_CACHE_VIPT 5448c2ecf20Sopenharmony_ci bool 5458c2ecf20Sopenharmony_ci 5468c2ecf20Sopenharmony_ciconfig CPU_CACHE_FA 5478c2ecf20Sopenharmony_ci bool 5488c2ecf20Sopenharmony_ci 5498c2ecf20Sopenharmony_ciconfig CPU_CACHE_V7M 5508c2ecf20Sopenharmony_ci bool 5518c2ecf20Sopenharmony_ci 5528c2ecf20Sopenharmony_ciif MMU 5538c2ecf20Sopenharmony_ci# The copy-page model 5548c2ecf20Sopenharmony_ciconfig CPU_COPY_V4WT 5558c2ecf20Sopenharmony_ci bool 5568c2ecf20Sopenharmony_ci 5578c2ecf20Sopenharmony_ciconfig CPU_COPY_V4WB 5588c2ecf20Sopenharmony_ci bool 5598c2ecf20Sopenharmony_ci 5608c2ecf20Sopenharmony_ciconfig CPU_COPY_FEROCEON 5618c2ecf20Sopenharmony_ci bool 5628c2ecf20Sopenharmony_ci 5638c2ecf20Sopenharmony_ciconfig CPU_COPY_FA 5648c2ecf20Sopenharmony_ci bool 5658c2ecf20Sopenharmony_ci 5668c2ecf20Sopenharmony_ciconfig CPU_COPY_V6 5678c2ecf20Sopenharmony_ci bool 5688c2ecf20Sopenharmony_ci 5698c2ecf20Sopenharmony_ci# This selects the TLB model 5708c2ecf20Sopenharmony_ciconfig CPU_TLB_V4WT 5718c2ecf20Sopenharmony_ci bool 5728c2ecf20Sopenharmony_ci help 5738c2ecf20Sopenharmony_ci ARM Architecture Version 4 TLB with writethrough cache. 5748c2ecf20Sopenharmony_ci 5758c2ecf20Sopenharmony_ciconfig CPU_TLB_V4WB 5768c2ecf20Sopenharmony_ci bool 5778c2ecf20Sopenharmony_ci help 5788c2ecf20Sopenharmony_ci ARM Architecture Version 4 TLB with writeback cache. 5798c2ecf20Sopenharmony_ci 5808c2ecf20Sopenharmony_ciconfig CPU_TLB_V4WBI 5818c2ecf20Sopenharmony_ci bool 5828c2ecf20Sopenharmony_ci help 5838c2ecf20Sopenharmony_ci ARM Architecture Version 4 TLB with writeback cache and invalidate 5848c2ecf20Sopenharmony_ci instruction cache entry. 5858c2ecf20Sopenharmony_ci 5868c2ecf20Sopenharmony_ciconfig CPU_TLB_FEROCEON 5878c2ecf20Sopenharmony_ci bool 5888c2ecf20Sopenharmony_ci help 5898c2ecf20Sopenharmony_ci Feroceon TLB (v4wbi with non-outer-cachable page table walks). 5908c2ecf20Sopenharmony_ci 5918c2ecf20Sopenharmony_ciconfig CPU_TLB_FA 5928c2ecf20Sopenharmony_ci bool 5938c2ecf20Sopenharmony_ci help 5948c2ecf20Sopenharmony_ci Faraday ARM FA526 architecture, unified TLB with writeback cache 5958c2ecf20Sopenharmony_ci and invalidate instruction cache entry. Branch target buffer is 5968c2ecf20Sopenharmony_ci also supported. 5978c2ecf20Sopenharmony_ci 5988c2ecf20Sopenharmony_ciconfig CPU_TLB_V6 5998c2ecf20Sopenharmony_ci bool 6008c2ecf20Sopenharmony_ci 6018c2ecf20Sopenharmony_ciconfig CPU_TLB_V7 6028c2ecf20Sopenharmony_ci bool 6038c2ecf20Sopenharmony_ci 6048c2ecf20Sopenharmony_ciconfig VERIFY_PERMISSION_FAULT 6058c2ecf20Sopenharmony_ci bool 6068c2ecf20Sopenharmony_ciendif 6078c2ecf20Sopenharmony_ci 6088c2ecf20Sopenharmony_ciconfig CPU_HAS_ASID 6098c2ecf20Sopenharmony_ci bool 6108c2ecf20Sopenharmony_ci help 6118c2ecf20Sopenharmony_ci This indicates whether the CPU has the ASID register; used to 6128c2ecf20Sopenharmony_ci tag TLB and possibly cache entries. 6138c2ecf20Sopenharmony_ci 6148c2ecf20Sopenharmony_ciconfig CPU_CP15 6158c2ecf20Sopenharmony_ci bool 6168c2ecf20Sopenharmony_ci help 6178c2ecf20Sopenharmony_ci Processor has the CP15 register. 6188c2ecf20Sopenharmony_ci 6198c2ecf20Sopenharmony_ciconfig CPU_CP15_MMU 6208c2ecf20Sopenharmony_ci bool 6218c2ecf20Sopenharmony_ci select CPU_CP15 6228c2ecf20Sopenharmony_ci help 6238c2ecf20Sopenharmony_ci Processor has the CP15 register, which has MMU related registers. 6248c2ecf20Sopenharmony_ci 6258c2ecf20Sopenharmony_ciconfig CPU_CP15_MPU 6268c2ecf20Sopenharmony_ci bool 6278c2ecf20Sopenharmony_ci select CPU_CP15 6288c2ecf20Sopenharmony_ci help 6298c2ecf20Sopenharmony_ci Processor has the CP15 register, which has MPU related registers. 6308c2ecf20Sopenharmony_ci 6318c2ecf20Sopenharmony_ciconfig CPU_USE_DOMAINS 6328c2ecf20Sopenharmony_ci bool 6338c2ecf20Sopenharmony_ci help 6348c2ecf20Sopenharmony_ci This option enables or disables the use of domain switching 6358c2ecf20Sopenharmony_ci via the set_fs() function. 6368c2ecf20Sopenharmony_ci 6378c2ecf20Sopenharmony_ciconfig CPU_V7M_NUM_IRQ 6388c2ecf20Sopenharmony_ci int "Number of external interrupts connected to the NVIC" 6398c2ecf20Sopenharmony_ci depends on CPU_V7M 6408c2ecf20Sopenharmony_ci default 90 if ARCH_STM32 6418c2ecf20Sopenharmony_ci default 38 if ARCH_EFM32 6428c2ecf20Sopenharmony_ci default 112 if SOC_VF610 6438c2ecf20Sopenharmony_ci default 240 6448c2ecf20Sopenharmony_ci help 6458c2ecf20Sopenharmony_ci This option indicates the number of interrupts connected to the NVIC. 6468c2ecf20Sopenharmony_ci The value can be larger than the real number of interrupts supported 6478c2ecf20Sopenharmony_ci by the system, but must not be lower. 6488c2ecf20Sopenharmony_ci The default value is 240, corresponding to the maximum number of 6498c2ecf20Sopenharmony_ci interrupts supported by the NVIC on Cortex-M family. 6508c2ecf20Sopenharmony_ci 6518c2ecf20Sopenharmony_ci If unsure, keep default value. 6528c2ecf20Sopenharmony_ci 6538c2ecf20Sopenharmony_ci# 6548c2ecf20Sopenharmony_ci# CPU supports 36-bit I/O 6558c2ecf20Sopenharmony_ci# 6568c2ecf20Sopenharmony_ciconfig IO_36 6578c2ecf20Sopenharmony_ci bool 6588c2ecf20Sopenharmony_ci 6598c2ecf20Sopenharmony_cicomment "Processor Features" 6608c2ecf20Sopenharmony_ci 6618c2ecf20Sopenharmony_ciconfig ARM_LPAE 6628c2ecf20Sopenharmony_ci bool "Support for the Large Physical Address Extension" 6638c2ecf20Sopenharmony_ci depends on MMU && CPU_32v7 && !CPU_32v6 && !CPU_32v5 && \ 6648c2ecf20Sopenharmony_ci !CPU_32v4 && !CPU_32v3 6658c2ecf20Sopenharmony_ci select PHYS_ADDR_T_64BIT 6668c2ecf20Sopenharmony_ci select SWIOTLB 6678c2ecf20Sopenharmony_ci help 6688c2ecf20Sopenharmony_ci Say Y if you have an ARMv7 processor supporting the LPAE page 6698c2ecf20Sopenharmony_ci table format and you would like to access memory beyond the 6708c2ecf20Sopenharmony_ci 4GB limit. The resulting kernel image will not run on 6718c2ecf20Sopenharmony_ci processors without the LPA extension. 6728c2ecf20Sopenharmony_ci 6738c2ecf20Sopenharmony_ci If unsure, say N. 6748c2ecf20Sopenharmony_ci 6758c2ecf20Sopenharmony_ciconfig ARM_PV_FIXUP 6768c2ecf20Sopenharmony_ci def_bool y 6778c2ecf20Sopenharmony_ci depends on ARM_LPAE && ARM_PATCH_PHYS_VIRT && ARCH_KEYSTONE 6788c2ecf20Sopenharmony_ci 6798c2ecf20Sopenharmony_ciconfig ARM_THUMB 6808c2ecf20Sopenharmony_ci bool "Support Thumb user binaries" if !CPU_THUMBONLY && EXPERT 6818c2ecf20Sopenharmony_ci depends on CPU_THUMB_CAPABLE 6828c2ecf20Sopenharmony_ci default y 6838c2ecf20Sopenharmony_ci help 6848c2ecf20Sopenharmony_ci Say Y if you want to include kernel support for running user space 6858c2ecf20Sopenharmony_ci Thumb binaries. 6868c2ecf20Sopenharmony_ci 6878c2ecf20Sopenharmony_ci The Thumb instruction set is a compressed form of the standard ARM 6888c2ecf20Sopenharmony_ci instruction set resulting in smaller binaries at the expense of 6898c2ecf20Sopenharmony_ci slightly less efficient code. 6908c2ecf20Sopenharmony_ci 6918c2ecf20Sopenharmony_ci If this option is disabled, and you run userspace that switches to 6928c2ecf20Sopenharmony_ci Thumb mode, signal handling will not work correctly, resulting in 6938c2ecf20Sopenharmony_ci segmentation faults or illegal instruction aborts. 6948c2ecf20Sopenharmony_ci 6958c2ecf20Sopenharmony_ci If you don't know what this all is, saying Y is a safe choice. 6968c2ecf20Sopenharmony_ci 6978c2ecf20Sopenharmony_ciconfig ARM_THUMBEE 6988c2ecf20Sopenharmony_ci bool "Enable ThumbEE CPU extension" 6998c2ecf20Sopenharmony_ci depends on CPU_V7 7008c2ecf20Sopenharmony_ci help 7018c2ecf20Sopenharmony_ci Say Y here if you have a CPU with the ThumbEE extension and code to 7028c2ecf20Sopenharmony_ci make use of it. Say N for code that can run on CPUs without ThumbEE. 7038c2ecf20Sopenharmony_ci 7048c2ecf20Sopenharmony_ciconfig ARM_VIRT_EXT 7058c2ecf20Sopenharmony_ci bool 7068c2ecf20Sopenharmony_ci default y if CPU_V7 7078c2ecf20Sopenharmony_ci help 7088c2ecf20Sopenharmony_ci Enable the kernel to make use of the ARM Virtualization 7098c2ecf20Sopenharmony_ci Extensions to install hypervisors without run-time firmware 7108c2ecf20Sopenharmony_ci assistance. 7118c2ecf20Sopenharmony_ci 7128c2ecf20Sopenharmony_ci A compliant bootloader is required in order to make maximum 7138c2ecf20Sopenharmony_ci use of this feature. Refer to Documentation/arm/booting.rst for 7148c2ecf20Sopenharmony_ci details. 7158c2ecf20Sopenharmony_ci 7168c2ecf20Sopenharmony_ciconfig SWP_EMULATE 7178c2ecf20Sopenharmony_ci bool "Emulate SWP/SWPB instructions" if !SMP 7188c2ecf20Sopenharmony_ci depends on CPU_V7 7198c2ecf20Sopenharmony_ci default y if SMP 7208c2ecf20Sopenharmony_ci select HAVE_PROC_CPU if PROC_FS 7218c2ecf20Sopenharmony_ci help 7228c2ecf20Sopenharmony_ci ARMv6 architecture deprecates use of the SWP/SWPB instructions. 7238c2ecf20Sopenharmony_ci ARMv7 multiprocessing extensions introduce the ability to disable 7248c2ecf20Sopenharmony_ci these instructions, triggering an undefined instruction exception 7258c2ecf20Sopenharmony_ci when executed. Say Y here to enable software emulation of these 7268c2ecf20Sopenharmony_ci instructions for userspace (not kernel) using LDREX/STREX. 7278c2ecf20Sopenharmony_ci Also creates /proc/cpu/swp_emulation for statistics. 7288c2ecf20Sopenharmony_ci 7298c2ecf20Sopenharmony_ci In some older versions of glibc [<=2.8] SWP is used during futex 7308c2ecf20Sopenharmony_ci trylock() operations with the assumption that the code will not 7318c2ecf20Sopenharmony_ci be preempted. This invalid assumption may be more likely to fail 7328c2ecf20Sopenharmony_ci with SWP emulation enabled, leading to deadlock of the user 7338c2ecf20Sopenharmony_ci application. 7348c2ecf20Sopenharmony_ci 7358c2ecf20Sopenharmony_ci NOTE: when accessing uncached shared regions, LDREX/STREX rely 7368c2ecf20Sopenharmony_ci on an external transaction monitoring block called a global 7378c2ecf20Sopenharmony_ci monitor to maintain update atomicity. If your system does not 7388c2ecf20Sopenharmony_ci implement a global monitor, this option can cause programs that 7398c2ecf20Sopenharmony_ci perform SWP operations to uncached memory to deadlock. 7408c2ecf20Sopenharmony_ci 7418c2ecf20Sopenharmony_ci If unsure, say Y. 7428c2ecf20Sopenharmony_ci 7438c2ecf20Sopenharmony_ciconfig CPU_BIG_ENDIAN 7448c2ecf20Sopenharmony_ci bool "Build big-endian kernel" 7458c2ecf20Sopenharmony_ci depends on ARCH_SUPPORTS_BIG_ENDIAN 7468c2ecf20Sopenharmony_ci depends on !LD_IS_LLD 7478c2ecf20Sopenharmony_ci help 7488c2ecf20Sopenharmony_ci Say Y if you plan on running a kernel in big-endian mode. 7498c2ecf20Sopenharmony_ci Note that your board must be properly built and your board 7508c2ecf20Sopenharmony_ci port must properly enable any big-endian related features 7518c2ecf20Sopenharmony_ci of your chipset/board/processor. 7528c2ecf20Sopenharmony_ci 7538c2ecf20Sopenharmony_ciconfig CPU_ENDIAN_BE8 7548c2ecf20Sopenharmony_ci bool 7558c2ecf20Sopenharmony_ci depends on CPU_BIG_ENDIAN 7568c2ecf20Sopenharmony_ci default CPU_V6 || CPU_V6K || CPU_V7 || CPU_V7M 7578c2ecf20Sopenharmony_ci help 7588c2ecf20Sopenharmony_ci Support for the BE-8 (big-endian) mode on ARMv6 and ARMv7 processors. 7598c2ecf20Sopenharmony_ci 7608c2ecf20Sopenharmony_ciconfig CPU_ENDIAN_BE32 7618c2ecf20Sopenharmony_ci bool 7628c2ecf20Sopenharmony_ci depends on CPU_BIG_ENDIAN 7638c2ecf20Sopenharmony_ci default !CPU_ENDIAN_BE8 7648c2ecf20Sopenharmony_ci help 7658c2ecf20Sopenharmony_ci Support for the BE-32 (big-endian) mode on pre-ARMv6 processors. 7668c2ecf20Sopenharmony_ci 7678c2ecf20Sopenharmony_ciconfig CPU_HIGH_VECTOR 7688c2ecf20Sopenharmony_ci depends on !MMU && CPU_CP15 && !CPU_ARM740T 7698c2ecf20Sopenharmony_ci bool "Select the High exception vector" 7708c2ecf20Sopenharmony_ci help 7718c2ecf20Sopenharmony_ci Say Y here to select high exception vector(0xFFFF0000~). 7728c2ecf20Sopenharmony_ci The exception vector can vary depending on the platform 7738c2ecf20Sopenharmony_ci design in nommu mode. If your platform needs to select 7748c2ecf20Sopenharmony_ci high exception vector, say Y. 7758c2ecf20Sopenharmony_ci Otherwise or if you are unsure, say N, and the low exception 7768c2ecf20Sopenharmony_ci vector (0x00000000~) will be used. 7778c2ecf20Sopenharmony_ci 7788c2ecf20Sopenharmony_ciconfig CPU_ICACHE_DISABLE 7798c2ecf20Sopenharmony_ci bool "Disable I-Cache (I-bit)" 7808c2ecf20Sopenharmony_ci depends on (CPU_CP15 && !(CPU_ARM720T || CPU_ARM740T || CPU_XSCALE || CPU_XSC3)) || CPU_V7M 7818c2ecf20Sopenharmony_ci help 7828c2ecf20Sopenharmony_ci Say Y here to disable the processor instruction cache. Unless 7838c2ecf20Sopenharmony_ci you have a reason not to or are unsure, say N. 7848c2ecf20Sopenharmony_ci 7858c2ecf20Sopenharmony_ciconfig CPU_ICACHE_MISMATCH_WORKAROUND 7868c2ecf20Sopenharmony_ci bool "Workaround for I-Cache line size mismatch between CPU cores" 7878c2ecf20Sopenharmony_ci depends on SMP && CPU_V7 7888c2ecf20Sopenharmony_ci help 7898c2ecf20Sopenharmony_ci Some big.LITTLE systems have I-Cache line size mismatch between 7908c2ecf20Sopenharmony_ci LITTLE and big cores. Say Y here to enable a workaround for 7918c2ecf20Sopenharmony_ci proper I-Cache support on such systems. If unsure, say N. 7928c2ecf20Sopenharmony_ci 7938c2ecf20Sopenharmony_ciconfig CPU_DCACHE_DISABLE 7948c2ecf20Sopenharmony_ci bool "Disable D-Cache (C-bit)" 7958c2ecf20Sopenharmony_ci depends on (CPU_CP15 && !SMP) || CPU_V7M 7968c2ecf20Sopenharmony_ci help 7978c2ecf20Sopenharmony_ci Say Y here to disable the processor data cache. Unless 7988c2ecf20Sopenharmony_ci you have a reason not to or are unsure, say N. 7998c2ecf20Sopenharmony_ci 8008c2ecf20Sopenharmony_ciconfig CPU_DCACHE_SIZE 8018c2ecf20Sopenharmony_ci hex 8028c2ecf20Sopenharmony_ci depends on CPU_ARM740T || CPU_ARM946E 8038c2ecf20Sopenharmony_ci default 0x00001000 if CPU_ARM740T 8048c2ecf20Sopenharmony_ci default 0x00002000 # default size for ARM946E-S 8058c2ecf20Sopenharmony_ci help 8068c2ecf20Sopenharmony_ci Some cores are synthesizable to have various sized cache. For 8078c2ecf20Sopenharmony_ci ARM946E-S case, it can vary from 0KB to 1MB. 8088c2ecf20Sopenharmony_ci To support such cache operations, it is efficient to know the size 8098c2ecf20Sopenharmony_ci before compile time. 8108c2ecf20Sopenharmony_ci If your SoC is configured to have a different size, define the value 8118c2ecf20Sopenharmony_ci here with proper conditions. 8128c2ecf20Sopenharmony_ci 8138c2ecf20Sopenharmony_ciconfig CPU_DCACHE_WRITETHROUGH 8148c2ecf20Sopenharmony_ci bool "Force write through D-cache" 8158c2ecf20Sopenharmony_ci depends on (CPU_ARM740T || CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM940T || CPU_ARM946E || CPU_ARM1020 || CPU_FA526) && !CPU_DCACHE_DISABLE 8168c2ecf20Sopenharmony_ci default y if CPU_ARM925T 8178c2ecf20Sopenharmony_ci help 8188c2ecf20Sopenharmony_ci Say Y here to use the data cache in writethrough mode. Unless you 8198c2ecf20Sopenharmony_ci specifically require this or are unsure, say N. 8208c2ecf20Sopenharmony_ci 8218c2ecf20Sopenharmony_ciconfig CPU_CACHE_ROUND_ROBIN 8228c2ecf20Sopenharmony_ci bool "Round robin I and D cache replacement algorithm" 8238c2ecf20Sopenharmony_ci depends on (CPU_ARM926T || CPU_ARM946E || CPU_ARM1020) && (!CPU_ICACHE_DISABLE || !CPU_DCACHE_DISABLE) 8248c2ecf20Sopenharmony_ci help 8258c2ecf20Sopenharmony_ci Say Y here to use the predictable round-robin cache replacement 8268c2ecf20Sopenharmony_ci policy. Unless you specifically require this or are unsure, say N. 8278c2ecf20Sopenharmony_ci 8288c2ecf20Sopenharmony_ciconfig CPU_BPREDICT_DISABLE 8298c2ecf20Sopenharmony_ci bool "Disable branch prediction" 8308c2ecf20Sopenharmony_ci depends on CPU_ARM1020 || CPU_V6 || CPU_V6K || CPU_MOHAWK || CPU_XSC3 || CPU_V7 || CPU_FA526 || CPU_V7M 8318c2ecf20Sopenharmony_ci help 8328c2ecf20Sopenharmony_ci Say Y here to disable branch prediction. If unsure, say N. 8338c2ecf20Sopenharmony_ci 8348c2ecf20Sopenharmony_ciconfig CPU_SPECTRE 8358c2ecf20Sopenharmony_ci bool 8368c2ecf20Sopenharmony_ci select GENERIC_CPU_VULNERABILITIES 8378c2ecf20Sopenharmony_ci 8388c2ecf20Sopenharmony_ciconfig HARDEN_BRANCH_PREDICTOR 8398c2ecf20Sopenharmony_ci bool "Harden the branch predictor against aliasing attacks" if EXPERT 8408c2ecf20Sopenharmony_ci depends on CPU_SPECTRE 8418c2ecf20Sopenharmony_ci default y 8428c2ecf20Sopenharmony_ci help 8438c2ecf20Sopenharmony_ci Speculation attacks against some high-performance processors rely 8448c2ecf20Sopenharmony_ci on being able to manipulate the branch predictor for a victim 8458c2ecf20Sopenharmony_ci context by executing aliasing branches in the attacker context. 8468c2ecf20Sopenharmony_ci Such attacks can be partially mitigated against by clearing 8478c2ecf20Sopenharmony_ci internal branch predictor state and limiting the prediction 8488c2ecf20Sopenharmony_ci logic in some situations. 8498c2ecf20Sopenharmony_ci 8508c2ecf20Sopenharmony_ci This config option will take CPU-specific actions to harden 8518c2ecf20Sopenharmony_ci the branch predictor against aliasing attacks and may rely on 8528c2ecf20Sopenharmony_ci specific instruction sequences or control bits being set by 8538c2ecf20Sopenharmony_ci the system firmware. 8548c2ecf20Sopenharmony_ci 8558c2ecf20Sopenharmony_ci If unsure, say Y. 8568c2ecf20Sopenharmony_ci 8578c2ecf20Sopenharmony_ciconfig HARDEN_BRANCH_HISTORY 8588c2ecf20Sopenharmony_ci bool "Harden Spectre style attacks against branch history" if EXPERT 8598c2ecf20Sopenharmony_ci depends on CPU_SPECTRE 8608c2ecf20Sopenharmony_ci default y 8618c2ecf20Sopenharmony_ci help 8628c2ecf20Sopenharmony_ci Speculation attacks against some high-performance processors can 8638c2ecf20Sopenharmony_ci make use of branch history to influence future speculation. When 8648c2ecf20Sopenharmony_ci taking an exception, a sequence of branches overwrites the branch 8658c2ecf20Sopenharmony_ci history, or branch history is invalidated. 8668c2ecf20Sopenharmony_ci 8678c2ecf20Sopenharmony_ciconfig TLS_REG_EMUL 8688c2ecf20Sopenharmony_ci bool 8698c2ecf20Sopenharmony_ci select NEED_KUSER_HELPERS 8708c2ecf20Sopenharmony_ci help 8718c2ecf20Sopenharmony_ci An SMP system using a pre-ARMv6 processor (there are apparently 8728c2ecf20Sopenharmony_ci a few prototypes like that in existence) and therefore access to 8738c2ecf20Sopenharmony_ci that required register must be emulated. 8748c2ecf20Sopenharmony_ci 8758c2ecf20Sopenharmony_ciconfig NEED_KUSER_HELPERS 8768c2ecf20Sopenharmony_ci bool 8778c2ecf20Sopenharmony_ci 8788c2ecf20Sopenharmony_ciconfig KUSER_HELPERS 8798c2ecf20Sopenharmony_ci bool "Enable kuser helpers in vector page" if !NEED_KUSER_HELPERS 8808c2ecf20Sopenharmony_ci depends on MMU 8818c2ecf20Sopenharmony_ci default y 8828c2ecf20Sopenharmony_ci help 8838c2ecf20Sopenharmony_ci Warning: disabling this option may break user programs. 8848c2ecf20Sopenharmony_ci 8858c2ecf20Sopenharmony_ci Provide kuser helpers in the vector page. The kernel provides 8868c2ecf20Sopenharmony_ci helper code to userspace in read only form at a fixed location 8878c2ecf20Sopenharmony_ci in the high vector page to allow userspace to be independent of 8888c2ecf20Sopenharmony_ci the CPU type fitted to the system. This permits binaries to be 8898c2ecf20Sopenharmony_ci run on ARMv4 through to ARMv7 without modification. 8908c2ecf20Sopenharmony_ci 8918c2ecf20Sopenharmony_ci See Documentation/arm/kernel_user_helpers.rst for details. 8928c2ecf20Sopenharmony_ci 8938c2ecf20Sopenharmony_ci However, the fixed address nature of these helpers can be used 8948c2ecf20Sopenharmony_ci by ROP (return orientated programming) authors when creating 8958c2ecf20Sopenharmony_ci exploits. 8968c2ecf20Sopenharmony_ci 8978c2ecf20Sopenharmony_ci If all of the binaries and libraries which run on your platform 8988c2ecf20Sopenharmony_ci are built specifically for your platform, and make no use of 8998c2ecf20Sopenharmony_ci these helpers, then you can turn this option off to hinder 9008c2ecf20Sopenharmony_ci such exploits. However, in that case, if a binary or library 9018c2ecf20Sopenharmony_ci relying on those helpers is run, it will receive a SIGILL signal, 9028c2ecf20Sopenharmony_ci which will terminate the program. 9038c2ecf20Sopenharmony_ci 9048c2ecf20Sopenharmony_ci Say N here only if you are absolutely certain that you do not 9058c2ecf20Sopenharmony_ci need these helpers; otherwise, the safe option is to say Y. 9068c2ecf20Sopenharmony_ci 9078c2ecf20Sopenharmony_ciconfig VDSO 9088c2ecf20Sopenharmony_ci bool "Enable VDSO for acceleration of some system calls" 9098c2ecf20Sopenharmony_ci depends on AEABI && MMU && CPU_V7 9108c2ecf20Sopenharmony_ci default y if ARM_ARCH_TIMER 9118c2ecf20Sopenharmony_ci select HAVE_GENERIC_VDSO 9128c2ecf20Sopenharmony_ci select GENERIC_TIME_VSYSCALL 9138c2ecf20Sopenharmony_ci select GENERIC_VDSO_32 9148c2ecf20Sopenharmony_ci select GENERIC_GETTIMEOFDAY 9158c2ecf20Sopenharmony_ci help 9168c2ecf20Sopenharmony_ci Place in the process address space an ELF shared object 9178c2ecf20Sopenharmony_ci providing fast implementations of gettimeofday and 9188c2ecf20Sopenharmony_ci clock_gettime. Systems that implement the ARM architected 9198c2ecf20Sopenharmony_ci timer will receive maximum benefit. 9208c2ecf20Sopenharmony_ci 9218c2ecf20Sopenharmony_ci You must have glibc 2.22 or later for programs to seamlessly 9228c2ecf20Sopenharmony_ci take advantage of this. 9238c2ecf20Sopenharmony_ci 9248c2ecf20Sopenharmony_ciconfig DMA_CACHE_RWFO 9258c2ecf20Sopenharmony_ci bool "Enable read/write for ownership DMA cache maintenance" 9268c2ecf20Sopenharmony_ci depends on CPU_V6K && SMP 9278c2ecf20Sopenharmony_ci default y 9288c2ecf20Sopenharmony_ci help 9298c2ecf20Sopenharmony_ci The Snoop Control Unit on ARM11MPCore does not detect the 9308c2ecf20Sopenharmony_ci cache maintenance operations and the dma_{map,unmap}_area() 9318c2ecf20Sopenharmony_ci functions may leave stale cache entries on other CPUs. By 9328c2ecf20Sopenharmony_ci enabling this option, Read or Write For Ownership in the ARMv6 9338c2ecf20Sopenharmony_ci DMA cache maintenance functions is performed. These LDR/STR 9348c2ecf20Sopenharmony_ci instructions change the cache line state to shared or modified 9358c2ecf20Sopenharmony_ci so that the cache operation has the desired effect. 9368c2ecf20Sopenharmony_ci 9378c2ecf20Sopenharmony_ci Note that the workaround is only valid on processors that do 9388c2ecf20Sopenharmony_ci not perform speculative loads into the D-cache. For such 9398c2ecf20Sopenharmony_ci processors, if cache maintenance operations are not broadcast 9408c2ecf20Sopenharmony_ci in hardware, other workarounds are needed (e.g. cache 9418c2ecf20Sopenharmony_ci maintenance broadcasting in software via FIQ). 9428c2ecf20Sopenharmony_ci 9438c2ecf20Sopenharmony_ciconfig OUTER_CACHE 9448c2ecf20Sopenharmony_ci bool 9458c2ecf20Sopenharmony_ci 9468c2ecf20Sopenharmony_ciconfig OUTER_CACHE_SYNC 9478c2ecf20Sopenharmony_ci bool 9488c2ecf20Sopenharmony_ci select ARM_HEAVY_MB 9498c2ecf20Sopenharmony_ci help 9508c2ecf20Sopenharmony_ci The outer cache has a outer_cache_fns.sync function pointer 9518c2ecf20Sopenharmony_ci that can be used to drain the write buffer of the outer cache. 9528c2ecf20Sopenharmony_ci 9538c2ecf20Sopenharmony_ciconfig CACHE_B15_RAC 9548c2ecf20Sopenharmony_ci bool "Enable the Broadcom Brahma-B15 read-ahead cache controller" 9558c2ecf20Sopenharmony_ci depends on ARCH_BRCMSTB 9568c2ecf20Sopenharmony_ci default y 9578c2ecf20Sopenharmony_ci help 9588c2ecf20Sopenharmony_ci This option enables the Broadcom Brahma-B15 read-ahead cache 9598c2ecf20Sopenharmony_ci controller. If disabled, the read-ahead cache remains off. 9608c2ecf20Sopenharmony_ci 9618c2ecf20Sopenharmony_ciconfig CACHE_FEROCEON_L2 9628c2ecf20Sopenharmony_ci bool "Enable the Feroceon L2 cache controller" 9638c2ecf20Sopenharmony_ci depends on ARCH_MV78XX0 || ARCH_MVEBU 9648c2ecf20Sopenharmony_ci default y 9658c2ecf20Sopenharmony_ci select OUTER_CACHE 9668c2ecf20Sopenharmony_ci help 9678c2ecf20Sopenharmony_ci This option enables the Feroceon L2 cache controller. 9688c2ecf20Sopenharmony_ci 9698c2ecf20Sopenharmony_ciconfig CACHE_FEROCEON_L2_WRITETHROUGH 9708c2ecf20Sopenharmony_ci bool "Force Feroceon L2 cache write through" 9718c2ecf20Sopenharmony_ci depends on CACHE_FEROCEON_L2 9728c2ecf20Sopenharmony_ci help 9738c2ecf20Sopenharmony_ci Say Y here to use the Feroceon L2 cache in writethrough mode. 9748c2ecf20Sopenharmony_ci Unless you specifically require this, say N for writeback mode. 9758c2ecf20Sopenharmony_ci 9768c2ecf20Sopenharmony_ciconfig MIGHT_HAVE_CACHE_L2X0 9778c2ecf20Sopenharmony_ci bool 9788c2ecf20Sopenharmony_ci help 9798c2ecf20Sopenharmony_ci This option should be selected by machines which have a L2x0 9808c2ecf20Sopenharmony_ci or PL310 cache controller, but where its use is optional. 9818c2ecf20Sopenharmony_ci 9828c2ecf20Sopenharmony_ci The only effect of this option is to make CACHE_L2X0 and 9838c2ecf20Sopenharmony_ci related options available to the user for configuration. 9848c2ecf20Sopenharmony_ci 9858c2ecf20Sopenharmony_ci Boards or SoCs which always require the cache controller 9868c2ecf20Sopenharmony_ci support to be present should select CACHE_L2X0 directly 9878c2ecf20Sopenharmony_ci instead of this option, thus preventing the user from 9888c2ecf20Sopenharmony_ci inadvertently configuring a broken kernel. 9898c2ecf20Sopenharmony_ci 9908c2ecf20Sopenharmony_ciconfig CACHE_L2X0 9918c2ecf20Sopenharmony_ci bool "Enable the L2x0 outer cache controller" if MIGHT_HAVE_CACHE_L2X0 9928c2ecf20Sopenharmony_ci default MIGHT_HAVE_CACHE_L2X0 9938c2ecf20Sopenharmony_ci select OUTER_CACHE 9948c2ecf20Sopenharmony_ci select OUTER_CACHE_SYNC 9958c2ecf20Sopenharmony_ci help 9968c2ecf20Sopenharmony_ci This option enables the L2x0 PrimeCell. 9978c2ecf20Sopenharmony_ci 9988c2ecf20Sopenharmony_ciconfig CACHE_L2X0_PMU 9998c2ecf20Sopenharmony_ci bool "L2x0 performance monitor support" if CACHE_L2X0 10008c2ecf20Sopenharmony_ci depends on PERF_EVENTS 10018c2ecf20Sopenharmony_ci help 10028c2ecf20Sopenharmony_ci This option enables support for the performance monitoring features 10038c2ecf20Sopenharmony_ci of the L220 and PL310 outer cache controllers. 10048c2ecf20Sopenharmony_ci 10058c2ecf20Sopenharmony_ciif CACHE_L2X0 10068c2ecf20Sopenharmony_ci 10078c2ecf20Sopenharmony_ciconfig PL310_ERRATA_588369 10088c2ecf20Sopenharmony_ci bool "PL310 errata: Clean & Invalidate maintenance operations do not invalidate clean lines" 10098c2ecf20Sopenharmony_ci help 10108c2ecf20Sopenharmony_ci The PL310 L2 cache controller implements three types of Clean & 10118c2ecf20Sopenharmony_ci Invalidate maintenance operations: by Physical Address 10128c2ecf20Sopenharmony_ci (offset 0x7F0), by Index/Way (0x7F8) and by Way (0x7FC). 10138c2ecf20Sopenharmony_ci They are architecturally defined to behave as the execution of a 10148c2ecf20Sopenharmony_ci clean operation followed immediately by an invalidate operation, 10158c2ecf20Sopenharmony_ci both performing to the same memory location. This functionality 10168c2ecf20Sopenharmony_ci is not correctly implemented in PL310 prior to r2p0 (fixed in r2p0) 10178c2ecf20Sopenharmony_ci as clean lines are not invalidated as a result of these operations. 10188c2ecf20Sopenharmony_ci 10198c2ecf20Sopenharmony_ciconfig PL310_ERRATA_727915 10208c2ecf20Sopenharmony_ci bool "PL310 errata: Background Clean & Invalidate by Way operation can cause data corruption" 10218c2ecf20Sopenharmony_ci help 10228c2ecf20Sopenharmony_ci PL310 implements the Clean & Invalidate by Way L2 cache maintenance 10238c2ecf20Sopenharmony_ci operation (offset 0x7FC). This operation runs in background so that 10248c2ecf20Sopenharmony_ci PL310 can handle normal accesses while it is in progress. Under very 10258c2ecf20Sopenharmony_ci rare circumstances, due to this erratum, write data can be lost when 10268c2ecf20Sopenharmony_ci PL310 treats a cacheable write transaction during a Clean & 10278c2ecf20Sopenharmony_ci Invalidate by Way operation. Revisions prior to r3p1 are affected by 10288c2ecf20Sopenharmony_ci this errata (fixed in r3p1). 10298c2ecf20Sopenharmony_ci 10308c2ecf20Sopenharmony_ciconfig PL310_ERRATA_753970 10318c2ecf20Sopenharmony_ci bool "PL310 errata: cache sync operation may be faulty" 10328c2ecf20Sopenharmony_ci help 10338c2ecf20Sopenharmony_ci This option enables the workaround for the 753970 PL310 (r3p0) erratum. 10348c2ecf20Sopenharmony_ci 10358c2ecf20Sopenharmony_ci Under some condition the effect of cache sync operation on 10368c2ecf20Sopenharmony_ci the store buffer still remains when the operation completes. 10378c2ecf20Sopenharmony_ci This means that the store buffer is always asked to drain and 10388c2ecf20Sopenharmony_ci this prevents it from merging any further writes. The workaround 10398c2ecf20Sopenharmony_ci is to replace the normal offset of cache sync operation (0x730) 10408c2ecf20Sopenharmony_ci by another offset targeting an unmapped PL310 register 0x740. 10418c2ecf20Sopenharmony_ci This has the same effect as the cache sync operation: store buffer 10428c2ecf20Sopenharmony_ci drain and waiting for all buffers empty. 10438c2ecf20Sopenharmony_ci 10448c2ecf20Sopenharmony_ciconfig PL310_ERRATA_769419 10458c2ecf20Sopenharmony_ci bool "PL310 errata: no automatic Store Buffer drain" 10468c2ecf20Sopenharmony_ci help 10478c2ecf20Sopenharmony_ci On revisions of the PL310 prior to r3p2, the Store Buffer does 10488c2ecf20Sopenharmony_ci not automatically drain. This can cause normal, non-cacheable 10498c2ecf20Sopenharmony_ci writes to be retained when the memory system is idle, leading 10508c2ecf20Sopenharmony_ci to suboptimal I/O performance for drivers using coherent DMA. 10518c2ecf20Sopenharmony_ci This option adds a write barrier to the cpu_idle loop so that, 10528c2ecf20Sopenharmony_ci on systems with an outer cache, the store buffer is drained 10538c2ecf20Sopenharmony_ci explicitly. 10548c2ecf20Sopenharmony_ci 10558c2ecf20Sopenharmony_ciendif 10568c2ecf20Sopenharmony_ci 10578c2ecf20Sopenharmony_ciconfig CACHE_TAUROS2 10588c2ecf20Sopenharmony_ci bool "Enable the Tauros2 L2 cache controller" 10598c2ecf20Sopenharmony_ci depends on (CPU_MOHAWK || CPU_PJ4) 10608c2ecf20Sopenharmony_ci default y 10618c2ecf20Sopenharmony_ci select OUTER_CACHE 10628c2ecf20Sopenharmony_ci help 10638c2ecf20Sopenharmony_ci This option enables the Tauros2 L2 cache controller (as 10648c2ecf20Sopenharmony_ci found on PJ1/PJ4). 10658c2ecf20Sopenharmony_ci 10668c2ecf20Sopenharmony_ciconfig CACHE_UNIPHIER 10678c2ecf20Sopenharmony_ci bool "Enable the UniPhier outer cache controller" 10688c2ecf20Sopenharmony_ci depends on ARCH_UNIPHIER 10698c2ecf20Sopenharmony_ci select ARM_L1_CACHE_SHIFT_7 10708c2ecf20Sopenharmony_ci select OUTER_CACHE 10718c2ecf20Sopenharmony_ci select OUTER_CACHE_SYNC 10728c2ecf20Sopenharmony_ci help 10738c2ecf20Sopenharmony_ci This option enables the UniPhier outer cache (system cache) 10748c2ecf20Sopenharmony_ci controller. 10758c2ecf20Sopenharmony_ci 10768c2ecf20Sopenharmony_ciconfig CACHE_XSC3L2 10778c2ecf20Sopenharmony_ci bool "Enable the L2 cache on XScale3" 10788c2ecf20Sopenharmony_ci depends on CPU_XSC3 10798c2ecf20Sopenharmony_ci default y 10808c2ecf20Sopenharmony_ci select OUTER_CACHE 10818c2ecf20Sopenharmony_ci help 10828c2ecf20Sopenharmony_ci This option enables the L2 cache on XScale3. 10838c2ecf20Sopenharmony_ci 10848c2ecf20Sopenharmony_ciconfig ARM_L1_CACHE_SHIFT_6 10858c2ecf20Sopenharmony_ci bool 10868c2ecf20Sopenharmony_ci default y if CPU_V7 10878c2ecf20Sopenharmony_ci help 10888c2ecf20Sopenharmony_ci Setting ARM L1 cache line size to 64 Bytes. 10898c2ecf20Sopenharmony_ci 10908c2ecf20Sopenharmony_ciconfig ARM_L1_CACHE_SHIFT_7 10918c2ecf20Sopenharmony_ci bool 10928c2ecf20Sopenharmony_ci help 10938c2ecf20Sopenharmony_ci Setting ARM L1 cache line size to 128 Bytes. 10948c2ecf20Sopenharmony_ci 10958c2ecf20Sopenharmony_ciconfig ARM_L1_CACHE_SHIFT 10968c2ecf20Sopenharmony_ci int 10978c2ecf20Sopenharmony_ci default 7 if ARM_L1_CACHE_SHIFT_7 10988c2ecf20Sopenharmony_ci default 6 if ARM_L1_CACHE_SHIFT_6 10998c2ecf20Sopenharmony_ci default 5 11008c2ecf20Sopenharmony_ci 11018c2ecf20Sopenharmony_ciconfig ARM_DMA_MEM_BUFFERABLE 11028c2ecf20Sopenharmony_ci bool "Use non-cacheable memory for DMA" if (CPU_V6 || CPU_V6K || CPU_V7M) && !CPU_V7 11038c2ecf20Sopenharmony_ci default y if CPU_V6 || CPU_V6K || CPU_V7 || CPU_V7M 11048c2ecf20Sopenharmony_ci help 11058c2ecf20Sopenharmony_ci Historically, the kernel has used strongly ordered mappings to 11068c2ecf20Sopenharmony_ci provide DMA coherent memory. With the advent of ARMv7, mapping 11078c2ecf20Sopenharmony_ci memory with differing types results in unpredictable behaviour, 11088c2ecf20Sopenharmony_ci so on these CPUs, this option is forced on. 11098c2ecf20Sopenharmony_ci 11108c2ecf20Sopenharmony_ci Multiple mappings with differing attributes is also unpredictable 11118c2ecf20Sopenharmony_ci on ARMv6 CPUs, but since they do not have aggressive speculative 11128c2ecf20Sopenharmony_ci prefetch, no harm appears to occur. 11138c2ecf20Sopenharmony_ci 11148c2ecf20Sopenharmony_ci However, drivers may be missing the necessary barriers for ARMv6, 11158c2ecf20Sopenharmony_ci and therefore turning this on may result in unpredictable driver 11168c2ecf20Sopenharmony_ci behaviour. Therefore, we offer this as an option. 11178c2ecf20Sopenharmony_ci 11188c2ecf20Sopenharmony_ci On some of the beefier ARMv7-M machines (with DMA and write 11198c2ecf20Sopenharmony_ci buffers) you likely want this enabled, while those that 11208c2ecf20Sopenharmony_ci didn't need it until now also won't need it in the future. 11218c2ecf20Sopenharmony_ci 11228c2ecf20Sopenharmony_ci You are recommended say 'Y' here and debug any affected drivers. 11238c2ecf20Sopenharmony_ci 11248c2ecf20Sopenharmony_ciconfig ARM_HEAVY_MB 11258c2ecf20Sopenharmony_ci bool 11268c2ecf20Sopenharmony_ci 11278c2ecf20Sopenharmony_ciconfig ARCH_SUPPORTS_BIG_ENDIAN 11288c2ecf20Sopenharmony_ci bool 11298c2ecf20Sopenharmony_ci help 11308c2ecf20Sopenharmony_ci This option specifies the architecture can support big endian 11318c2ecf20Sopenharmony_ci operation. 11328c2ecf20Sopenharmony_ci 11338c2ecf20Sopenharmony_ciconfig DEBUG_ALIGN_RODATA 11348c2ecf20Sopenharmony_ci bool "Make rodata strictly non-executable" 11358c2ecf20Sopenharmony_ci depends on STRICT_KERNEL_RWX 11368c2ecf20Sopenharmony_ci default y 11378c2ecf20Sopenharmony_ci help 11388c2ecf20Sopenharmony_ci If this is set, rodata will be made explicitly non-executable. This 11398c2ecf20Sopenharmony_ci provides protection on the rare chance that attackers might find and 11408c2ecf20Sopenharmony_ci use ROP gadgets that exist in the rodata section. This adds an 11418c2ecf20Sopenharmony_ci additional section-aligned split of rodata from kernel text so it 11428c2ecf20Sopenharmony_ci can be made explicitly non-executable. This padding may waste memory 11438c2ecf20Sopenharmony_ci space to gain the additional protection. 1144