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