162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_cicomment "Processor Type" 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci# Select CPU types depending on the architecture selected. This selects 562306a36Sopenharmony_ci# which CPUs we support in the kernel image, and the compiler instruction 662306a36Sopenharmony_ci# optimiser behaviour. 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci# ARM7TDMI 962306a36Sopenharmony_ciconfig CPU_ARM7TDMI 1062306a36Sopenharmony_ci bool 1162306a36Sopenharmony_ci depends on !MMU 1262306a36Sopenharmony_ci select CPU_32v4T 1362306a36Sopenharmony_ci select CPU_ABRT_LV4T 1462306a36Sopenharmony_ci select CPU_CACHE_V4 1562306a36Sopenharmony_ci select CPU_PABRT_LEGACY 1662306a36Sopenharmony_ci help 1762306a36Sopenharmony_ci A 32-bit RISC microprocessor based on the ARM7 processor core 1862306a36Sopenharmony_ci which has no memory control unit and cache. 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci Say Y if you want support for the ARM7TDMI processor. 2162306a36Sopenharmony_ci Otherwise, say N. 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci# ARM720T 2462306a36Sopenharmony_ciconfig CPU_ARM720T 2562306a36Sopenharmony_ci bool 2662306a36Sopenharmony_ci select CPU_32v4T 2762306a36Sopenharmony_ci select CPU_ABRT_LV4T 2862306a36Sopenharmony_ci select CPU_CACHE_V4 2962306a36Sopenharmony_ci select CPU_CACHE_VIVT 3062306a36Sopenharmony_ci select CPU_COPY_V4WT if MMU 3162306a36Sopenharmony_ci select CPU_CP15_MMU 3262306a36Sopenharmony_ci select CPU_PABRT_LEGACY 3362306a36Sopenharmony_ci select CPU_THUMB_CAPABLE 3462306a36Sopenharmony_ci select CPU_TLB_V4WT if MMU 3562306a36Sopenharmony_ci help 3662306a36Sopenharmony_ci A 32-bit RISC processor with 8kByte Cache, Write Buffer and 3762306a36Sopenharmony_ci MMU built around an ARM7TDMI core. 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ci Say Y if you want support for the ARM720T processor. 4062306a36Sopenharmony_ci Otherwise, say N. 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci# ARM740T 4362306a36Sopenharmony_ciconfig CPU_ARM740T 4462306a36Sopenharmony_ci bool 4562306a36Sopenharmony_ci depends on !MMU 4662306a36Sopenharmony_ci select CPU_32v4T 4762306a36Sopenharmony_ci select CPU_ABRT_LV4T 4862306a36Sopenharmony_ci select CPU_CACHE_V4 4962306a36Sopenharmony_ci select CPU_CP15_MPU 5062306a36Sopenharmony_ci select CPU_PABRT_LEGACY 5162306a36Sopenharmony_ci select CPU_THUMB_CAPABLE 5262306a36Sopenharmony_ci help 5362306a36Sopenharmony_ci A 32-bit RISC processor with 8KB cache or 4KB variants, 5462306a36Sopenharmony_ci write buffer and MPU(Protection Unit) built around 5562306a36Sopenharmony_ci an ARM7TDMI core. 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci Say Y if you want support for the ARM740T processor. 5862306a36Sopenharmony_ci Otherwise, say N. 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci# ARM9TDMI 6162306a36Sopenharmony_ciconfig CPU_ARM9TDMI 6262306a36Sopenharmony_ci bool 6362306a36Sopenharmony_ci depends on !MMU 6462306a36Sopenharmony_ci select CPU_32v4T 6562306a36Sopenharmony_ci select CPU_ABRT_NOMMU 6662306a36Sopenharmony_ci select CPU_CACHE_V4 6762306a36Sopenharmony_ci select CPU_PABRT_LEGACY 6862306a36Sopenharmony_ci help 6962306a36Sopenharmony_ci A 32-bit RISC microprocessor based on the ARM9 processor core 7062306a36Sopenharmony_ci which has no memory control unit and cache. 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ci Say Y if you want support for the ARM9TDMI processor. 7362306a36Sopenharmony_ci Otherwise, say N. 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_ci# ARM920T 7662306a36Sopenharmony_ciconfig CPU_ARM920T 7762306a36Sopenharmony_ci bool 7862306a36Sopenharmony_ci select CPU_32v4T 7962306a36Sopenharmony_ci select CPU_ABRT_EV4T 8062306a36Sopenharmony_ci select CPU_CACHE_V4WT 8162306a36Sopenharmony_ci select CPU_CACHE_VIVT 8262306a36Sopenharmony_ci select CPU_COPY_V4WB if MMU 8362306a36Sopenharmony_ci select CPU_CP15_MMU 8462306a36Sopenharmony_ci select CPU_PABRT_LEGACY 8562306a36Sopenharmony_ci select CPU_THUMB_CAPABLE 8662306a36Sopenharmony_ci select CPU_TLB_V4WBI if MMU 8762306a36Sopenharmony_ci help 8862306a36Sopenharmony_ci The ARM920T is licensed to be produced by numerous vendors, 8962306a36Sopenharmony_ci and is used in the Cirrus EP93xx and the Samsung S3C2410. 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci Say Y if you want support for the ARM920T processor. 9262306a36Sopenharmony_ci Otherwise, say N. 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_ci# ARM922T 9562306a36Sopenharmony_ciconfig CPU_ARM922T 9662306a36Sopenharmony_ci bool 9762306a36Sopenharmony_ci select CPU_32v4T 9862306a36Sopenharmony_ci select CPU_ABRT_EV4T 9962306a36Sopenharmony_ci select CPU_CACHE_V4WT 10062306a36Sopenharmony_ci select CPU_CACHE_VIVT 10162306a36Sopenharmony_ci select CPU_COPY_V4WB if MMU 10262306a36Sopenharmony_ci select CPU_CP15_MMU 10362306a36Sopenharmony_ci select CPU_PABRT_LEGACY 10462306a36Sopenharmony_ci select CPU_THUMB_CAPABLE 10562306a36Sopenharmony_ci select CPU_TLB_V4WBI if MMU 10662306a36Sopenharmony_ci help 10762306a36Sopenharmony_ci The ARM922T is a version of the ARM920T, but with smaller 10862306a36Sopenharmony_ci instruction and data caches. It is used in Altera's 10962306a36Sopenharmony_ci Excalibur XA device family and the ARM Integrator. 11062306a36Sopenharmony_ci 11162306a36Sopenharmony_ci Say Y if you want support for the ARM922T processor. 11262306a36Sopenharmony_ci Otherwise, say N. 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_ci# ARM925T 11562306a36Sopenharmony_ciconfig CPU_ARM925T 11662306a36Sopenharmony_ci bool 11762306a36Sopenharmony_ci select CPU_32v4T 11862306a36Sopenharmony_ci select CPU_ABRT_EV4T 11962306a36Sopenharmony_ci select CPU_CACHE_V4WT 12062306a36Sopenharmony_ci select CPU_CACHE_VIVT 12162306a36Sopenharmony_ci select CPU_COPY_V4WB if MMU 12262306a36Sopenharmony_ci select CPU_CP15_MMU 12362306a36Sopenharmony_ci select CPU_PABRT_LEGACY 12462306a36Sopenharmony_ci select CPU_THUMB_CAPABLE 12562306a36Sopenharmony_ci select CPU_TLB_V4WBI if MMU 12662306a36Sopenharmony_ci help 12762306a36Sopenharmony_ci The ARM925T is a mix between the ARM920T and ARM926T, but with 12862306a36Sopenharmony_ci different instruction and data caches. It is used in TI's OMAP 12962306a36Sopenharmony_ci device family. 13062306a36Sopenharmony_ci 13162306a36Sopenharmony_ci Say Y if you want support for the ARM925T processor. 13262306a36Sopenharmony_ci Otherwise, say N. 13362306a36Sopenharmony_ci 13462306a36Sopenharmony_ci# ARM926T 13562306a36Sopenharmony_ciconfig CPU_ARM926T 13662306a36Sopenharmony_ci bool 13762306a36Sopenharmony_ci select CPU_32v5 13862306a36Sopenharmony_ci select CPU_ABRT_EV5TJ 13962306a36Sopenharmony_ci select CPU_CACHE_VIVT 14062306a36Sopenharmony_ci select CPU_COPY_V4WB if MMU 14162306a36Sopenharmony_ci select CPU_CP15_MMU 14262306a36Sopenharmony_ci select CPU_PABRT_LEGACY 14362306a36Sopenharmony_ci select CPU_THUMB_CAPABLE 14462306a36Sopenharmony_ci select CPU_TLB_V4WBI if MMU 14562306a36Sopenharmony_ci help 14662306a36Sopenharmony_ci This is a variant of the ARM920. It has slightly different 14762306a36Sopenharmony_ci instruction sequences for cache and TLB operations. Curiously, 14862306a36Sopenharmony_ci there is no documentation on it at the ARM corporate website. 14962306a36Sopenharmony_ci 15062306a36Sopenharmony_ci Say Y if you want support for the ARM926T processor. 15162306a36Sopenharmony_ci Otherwise, say N. 15262306a36Sopenharmony_ci 15362306a36Sopenharmony_ci# FA526 15462306a36Sopenharmony_ciconfig CPU_FA526 15562306a36Sopenharmony_ci bool 15662306a36Sopenharmony_ci select CPU_32v4 15762306a36Sopenharmony_ci select CPU_ABRT_EV4 15862306a36Sopenharmony_ci select CPU_CACHE_FA 15962306a36Sopenharmony_ci select CPU_CACHE_VIVT 16062306a36Sopenharmony_ci select CPU_COPY_FA if MMU 16162306a36Sopenharmony_ci select CPU_CP15_MMU 16262306a36Sopenharmony_ci select CPU_PABRT_LEGACY 16362306a36Sopenharmony_ci select CPU_TLB_FA if MMU 16462306a36Sopenharmony_ci help 16562306a36Sopenharmony_ci The FA526 is a version of the ARMv4 compatible processor with 16662306a36Sopenharmony_ci Branch Target Buffer, Unified TLB and cache line size 16. 16762306a36Sopenharmony_ci 16862306a36Sopenharmony_ci Say Y if you want support for the FA526 processor. 16962306a36Sopenharmony_ci Otherwise, say N. 17062306a36Sopenharmony_ci 17162306a36Sopenharmony_ci# ARM940T 17262306a36Sopenharmony_ciconfig CPU_ARM940T 17362306a36Sopenharmony_ci bool 17462306a36Sopenharmony_ci depends on !MMU 17562306a36Sopenharmony_ci select CPU_32v4T 17662306a36Sopenharmony_ci select CPU_ABRT_NOMMU 17762306a36Sopenharmony_ci select CPU_CACHE_VIVT 17862306a36Sopenharmony_ci select CPU_CP15_MPU 17962306a36Sopenharmony_ci select CPU_PABRT_LEGACY 18062306a36Sopenharmony_ci select CPU_THUMB_CAPABLE 18162306a36Sopenharmony_ci help 18262306a36Sopenharmony_ci ARM940T is a member of the ARM9TDMI family of general- 18362306a36Sopenharmony_ci purpose microprocessors with MPU and separate 4KB 18462306a36Sopenharmony_ci instruction and 4KB data cases, each with a 4-word line 18562306a36Sopenharmony_ci length. 18662306a36Sopenharmony_ci 18762306a36Sopenharmony_ci Say Y if you want support for the ARM940T processor. 18862306a36Sopenharmony_ci Otherwise, say N. 18962306a36Sopenharmony_ci 19062306a36Sopenharmony_ci# ARM946E-S 19162306a36Sopenharmony_ciconfig CPU_ARM946E 19262306a36Sopenharmony_ci bool 19362306a36Sopenharmony_ci depends on !MMU 19462306a36Sopenharmony_ci select CPU_32v5 19562306a36Sopenharmony_ci select CPU_ABRT_NOMMU 19662306a36Sopenharmony_ci select CPU_CACHE_VIVT 19762306a36Sopenharmony_ci select CPU_CP15_MPU 19862306a36Sopenharmony_ci select CPU_PABRT_LEGACY 19962306a36Sopenharmony_ci select CPU_THUMB_CAPABLE 20062306a36Sopenharmony_ci help 20162306a36Sopenharmony_ci ARM946E-S is a member of the ARM9E-S family of high- 20262306a36Sopenharmony_ci performance, 32-bit system-on-chip processor solutions. 20362306a36Sopenharmony_ci The TCM and ARMv5TE 32-bit instruction set is supported. 20462306a36Sopenharmony_ci 20562306a36Sopenharmony_ci Say Y if you want support for the ARM946E-S processor. 20662306a36Sopenharmony_ci Otherwise, say N. 20762306a36Sopenharmony_ci 20862306a36Sopenharmony_ci# ARM1020 - needs validating 20962306a36Sopenharmony_ciconfig CPU_ARM1020 21062306a36Sopenharmony_ci bool 21162306a36Sopenharmony_ci select CPU_32v5 21262306a36Sopenharmony_ci select CPU_ABRT_EV4T 21362306a36Sopenharmony_ci select CPU_CACHE_V4WT 21462306a36Sopenharmony_ci select CPU_CACHE_VIVT 21562306a36Sopenharmony_ci select CPU_COPY_V4WB if MMU 21662306a36Sopenharmony_ci select CPU_CP15_MMU 21762306a36Sopenharmony_ci select CPU_PABRT_LEGACY 21862306a36Sopenharmony_ci select CPU_THUMB_CAPABLE 21962306a36Sopenharmony_ci select CPU_TLB_V4WBI if MMU 22062306a36Sopenharmony_ci help 22162306a36Sopenharmony_ci The ARM1020 is the 32K cached version of the ARM10 processor, 22262306a36Sopenharmony_ci with an addition of a floating-point unit. 22362306a36Sopenharmony_ci 22462306a36Sopenharmony_ci Say Y if you want support for the ARM1020 processor. 22562306a36Sopenharmony_ci Otherwise, say N. 22662306a36Sopenharmony_ci 22762306a36Sopenharmony_ci# ARM1020E - needs validating 22862306a36Sopenharmony_ciconfig CPU_ARM1020E 22962306a36Sopenharmony_ci bool 23062306a36Sopenharmony_ci depends on n 23162306a36Sopenharmony_ci select CPU_32v5 23262306a36Sopenharmony_ci select CPU_ABRT_EV4T 23362306a36Sopenharmony_ci select CPU_CACHE_V4WT 23462306a36Sopenharmony_ci select CPU_CACHE_VIVT 23562306a36Sopenharmony_ci select CPU_COPY_V4WB if MMU 23662306a36Sopenharmony_ci select CPU_CP15_MMU 23762306a36Sopenharmony_ci select CPU_PABRT_LEGACY 23862306a36Sopenharmony_ci select CPU_THUMB_CAPABLE 23962306a36Sopenharmony_ci select CPU_TLB_V4WBI if MMU 24062306a36Sopenharmony_ci 24162306a36Sopenharmony_ci# ARM1022E 24262306a36Sopenharmony_ciconfig CPU_ARM1022 24362306a36Sopenharmony_ci bool 24462306a36Sopenharmony_ci select CPU_32v5 24562306a36Sopenharmony_ci select CPU_ABRT_EV4T 24662306a36Sopenharmony_ci select CPU_CACHE_VIVT 24762306a36Sopenharmony_ci select CPU_COPY_V4WB if MMU # can probably do better 24862306a36Sopenharmony_ci select CPU_CP15_MMU 24962306a36Sopenharmony_ci select CPU_PABRT_LEGACY 25062306a36Sopenharmony_ci select CPU_THUMB_CAPABLE 25162306a36Sopenharmony_ci select CPU_TLB_V4WBI if MMU 25262306a36Sopenharmony_ci help 25362306a36Sopenharmony_ci The ARM1022E is an implementation of the ARMv5TE architecture 25462306a36Sopenharmony_ci based upon the ARM10 integer core with a 16KiB L1 Harvard cache, 25562306a36Sopenharmony_ci embedded trace macrocell, and a floating-point unit. 25662306a36Sopenharmony_ci 25762306a36Sopenharmony_ci Say Y if you want support for the ARM1022E processor. 25862306a36Sopenharmony_ci Otherwise, say N. 25962306a36Sopenharmony_ci 26062306a36Sopenharmony_ci# ARM1026EJ-S 26162306a36Sopenharmony_ciconfig CPU_ARM1026 26262306a36Sopenharmony_ci bool 26362306a36Sopenharmony_ci select CPU_32v5 26462306a36Sopenharmony_ci select CPU_ABRT_EV5T # But need Jazelle, but EV5TJ ignores bit 10 26562306a36Sopenharmony_ci select CPU_CACHE_VIVT 26662306a36Sopenharmony_ci select CPU_COPY_V4WB if MMU # can probably do better 26762306a36Sopenharmony_ci select CPU_CP15_MMU 26862306a36Sopenharmony_ci select CPU_PABRT_LEGACY 26962306a36Sopenharmony_ci select CPU_THUMB_CAPABLE 27062306a36Sopenharmony_ci select CPU_TLB_V4WBI if MMU 27162306a36Sopenharmony_ci help 27262306a36Sopenharmony_ci The ARM1026EJ-S is an implementation of the ARMv5TEJ architecture 27362306a36Sopenharmony_ci based upon the ARM10 integer core. 27462306a36Sopenharmony_ci 27562306a36Sopenharmony_ci Say Y if you want support for the ARM1026EJ-S processor. 27662306a36Sopenharmony_ci Otherwise, say N. 27762306a36Sopenharmony_ci 27862306a36Sopenharmony_ci# SA110 27962306a36Sopenharmony_ciconfig CPU_SA110 28062306a36Sopenharmony_ci bool 28162306a36Sopenharmony_ci select CPU_32v3 if ARCH_RPC 28262306a36Sopenharmony_ci select CPU_32v4 if !ARCH_RPC 28362306a36Sopenharmony_ci select CPU_ABRT_EV4 28462306a36Sopenharmony_ci select CPU_CACHE_V4WB 28562306a36Sopenharmony_ci select CPU_CACHE_VIVT 28662306a36Sopenharmony_ci select CPU_COPY_V4WB if MMU 28762306a36Sopenharmony_ci select CPU_CP15_MMU 28862306a36Sopenharmony_ci select CPU_PABRT_LEGACY 28962306a36Sopenharmony_ci select CPU_TLB_V4WB if MMU 29062306a36Sopenharmony_ci help 29162306a36Sopenharmony_ci The Intel StrongARM(R) SA-110 is a 32-bit microprocessor and 29262306a36Sopenharmony_ci is available at five speeds ranging from 100 MHz to 233 MHz. 29362306a36Sopenharmony_ci More information is available at 29462306a36Sopenharmony_ci <http://developer.intel.com/design/strong/sa110.htm>. 29562306a36Sopenharmony_ci 29662306a36Sopenharmony_ci Say Y if you want support for the SA-110 processor. 29762306a36Sopenharmony_ci Otherwise, say N. 29862306a36Sopenharmony_ci 29962306a36Sopenharmony_ci# SA1100 30062306a36Sopenharmony_ciconfig CPU_SA1100 30162306a36Sopenharmony_ci bool 30262306a36Sopenharmony_ci select CPU_32v4 30362306a36Sopenharmony_ci select CPU_ABRT_EV4 30462306a36Sopenharmony_ci select CPU_CACHE_V4WB 30562306a36Sopenharmony_ci select CPU_CACHE_VIVT 30662306a36Sopenharmony_ci select CPU_CP15_MMU 30762306a36Sopenharmony_ci select CPU_PABRT_LEGACY 30862306a36Sopenharmony_ci select CPU_TLB_V4WB if MMU 30962306a36Sopenharmony_ci 31062306a36Sopenharmony_ci# XScale 31162306a36Sopenharmony_ciconfig CPU_XSCALE 31262306a36Sopenharmony_ci bool 31362306a36Sopenharmony_ci select CPU_32v5 31462306a36Sopenharmony_ci select CPU_ABRT_EV5T 31562306a36Sopenharmony_ci select CPU_CACHE_VIVT 31662306a36Sopenharmony_ci select CPU_CP15_MMU 31762306a36Sopenharmony_ci select CPU_PABRT_LEGACY 31862306a36Sopenharmony_ci select CPU_THUMB_CAPABLE 31962306a36Sopenharmony_ci select CPU_TLB_V4WBI if MMU 32062306a36Sopenharmony_ci 32162306a36Sopenharmony_ci# XScale Core Version 3 32262306a36Sopenharmony_ciconfig CPU_XSC3 32362306a36Sopenharmony_ci bool 32462306a36Sopenharmony_ci select CPU_32v5 32562306a36Sopenharmony_ci select CPU_ABRT_EV5T 32662306a36Sopenharmony_ci select CPU_CACHE_VIVT 32762306a36Sopenharmony_ci select CPU_CP15_MMU 32862306a36Sopenharmony_ci select CPU_PABRT_LEGACY 32962306a36Sopenharmony_ci select CPU_THUMB_CAPABLE 33062306a36Sopenharmony_ci select CPU_TLB_V4WBI if MMU 33162306a36Sopenharmony_ci select IO_36 33262306a36Sopenharmony_ci 33362306a36Sopenharmony_ci# Marvell PJ1 (Mohawk) 33462306a36Sopenharmony_ciconfig CPU_MOHAWK 33562306a36Sopenharmony_ci bool 33662306a36Sopenharmony_ci select CPU_32v5 33762306a36Sopenharmony_ci select CPU_ABRT_EV5T 33862306a36Sopenharmony_ci select CPU_CACHE_VIVT 33962306a36Sopenharmony_ci select CPU_COPY_V4WB if MMU 34062306a36Sopenharmony_ci select CPU_CP15_MMU 34162306a36Sopenharmony_ci select CPU_PABRT_LEGACY 34262306a36Sopenharmony_ci select CPU_THUMB_CAPABLE 34362306a36Sopenharmony_ci select CPU_TLB_V4WBI if MMU 34462306a36Sopenharmony_ci 34562306a36Sopenharmony_ci# Feroceon 34662306a36Sopenharmony_ciconfig CPU_FEROCEON 34762306a36Sopenharmony_ci bool 34862306a36Sopenharmony_ci select CPU_32v5 34962306a36Sopenharmony_ci select CPU_ABRT_EV5T 35062306a36Sopenharmony_ci select CPU_CACHE_VIVT 35162306a36Sopenharmony_ci select CPU_COPY_FEROCEON if MMU 35262306a36Sopenharmony_ci select CPU_CP15_MMU 35362306a36Sopenharmony_ci select CPU_PABRT_LEGACY 35462306a36Sopenharmony_ci select CPU_THUMB_CAPABLE 35562306a36Sopenharmony_ci select CPU_TLB_FEROCEON if MMU 35662306a36Sopenharmony_ci 35762306a36Sopenharmony_ciconfig CPU_FEROCEON_OLD_ID 35862306a36Sopenharmony_ci bool "Accept early Feroceon cores with an ARM926 ID" 35962306a36Sopenharmony_ci depends on CPU_FEROCEON && !CPU_ARM926T 36062306a36Sopenharmony_ci default y 36162306a36Sopenharmony_ci help 36262306a36Sopenharmony_ci This enables the usage of some old Feroceon cores 36362306a36Sopenharmony_ci for which the CPU ID is equal to the ARM926 ID. 36462306a36Sopenharmony_ci Relevant for Feroceon-1850 and early Feroceon-2850. 36562306a36Sopenharmony_ci 36662306a36Sopenharmony_ci# Marvell PJ4 36762306a36Sopenharmony_ciconfig CPU_PJ4 36862306a36Sopenharmony_ci bool 36962306a36Sopenharmony_ci select ARM_THUMBEE 37062306a36Sopenharmony_ci select CPU_V7 37162306a36Sopenharmony_ci 37262306a36Sopenharmony_ciconfig CPU_PJ4B 37362306a36Sopenharmony_ci bool 37462306a36Sopenharmony_ci select CPU_V7 37562306a36Sopenharmony_ci 37662306a36Sopenharmony_ci# ARMv6 37762306a36Sopenharmony_ciconfig CPU_V6 37862306a36Sopenharmony_ci bool 37962306a36Sopenharmony_ci select CPU_32v6 38062306a36Sopenharmony_ci select CPU_ABRT_EV6 38162306a36Sopenharmony_ci select CPU_CACHE_V6 38262306a36Sopenharmony_ci select CPU_CACHE_VIPT 38362306a36Sopenharmony_ci select CPU_COPY_V6 if MMU 38462306a36Sopenharmony_ci select CPU_CP15_MMU 38562306a36Sopenharmony_ci select CPU_HAS_ASID if MMU 38662306a36Sopenharmony_ci select CPU_PABRT_V6 38762306a36Sopenharmony_ci select CPU_THUMB_CAPABLE 38862306a36Sopenharmony_ci select CPU_TLB_V6 if MMU 38962306a36Sopenharmony_ci select SMP_ON_UP if SMP 39062306a36Sopenharmony_ci 39162306a36Sopenharmony_ci# ARMv6k 39262306a36Sopenharmony_ciconfig CPU_V6K 39362306a36Sopenharmony_ci bool 39462306a36Sopenharmony_ci select CPU_32v6 39562306a36Sopenharmony_ci select CPU_32v6K 39662306a36Sopenharmony_ci select CPU_ABRT_EV6 39762306a36Sopenharmony_ci select CPU_CACHE_V6 39862306a36Sopenharmony_ci select CPU_CACHE_VIPT 39962306a36Sopenharmony_ci select CPU_COPY_V6 if MMU 40062306a36Sopenharmony_ci select CPU_CP15_MMU 40162306a36Sopenharmony_ci select CPU_HAS_ASID if MMU 40262306a36Sopenharmony_ci select CPU_PABRT_V6 40362306a36Sopenharmony_ci select CPU_THUMB_CAPABLE 40462306a36Sopenharmony_ci select CPU_TLB_V6 if MMU 40562306a36Sopenharmony_ci 40662306a36Sopenharmony_ci# ARMv7 and ARMv8 architectures 40762306a36Sopenharmony_ciconfig CPU_V7 40862306a36Sopenharmony_ci bool 40962306a36Sopenharmony_ci select CPU_32v6K 41062306a36Sopenharmony_ci select CPU_32v7 41162306a36Sopenharmony_ci select CPU_ABRT_EV7 41262306a36Sopenharmony_ci select CPU_CACHE_V7 41362306a36Sopenharmony_ci select CPU_CACHE_VIPT 41462306a36Sopenharmony_ci select CPU_COPY_V6 if MMU 41562306a36Sopenharmony_ci select CPU_CP15_MMU if MMU 41662306a36Sopenharmony_ci select CPU_CP15_MPU if !MMU 41762306a36Sopenharmony_ci select CPU_HAS_ASID if MMU 41862306a36Sopenharmony_ci select CPU_PABRT_V7 41962306a36Sopenharmony_ci select CPU_SPECTRE if MMU 42062306a36Sopenharmony_ci select CPU_THUMB_CAPABLE 42162306a36Sopenharmony_ci select CPU_TLB_V7 if MMU 42262306a36Sopenharmony_ci 42362306a36Sopenharmony_ci# ARMv7M 42462306a36Sopenharmony_ciconfig CPU_V7M 42562306a36Sopenharmony_ci bool 42662306a36Sopenharmony_ci select CPU_32v7M 42762306a36Sopenharmony_ci select CPU_ABRT_NOMMU 42862306a36Sopenharmony_ci select CPU_CACHE_V7M 42962306a36Sopenharmony_ci select CPU_CACHE_NOP 43062306a36Sopenharmony_ci select CPU_PABRT_LEGACY 43162306a36Sopenharmony_ci select CPU_THUMBONLY 43262306a36Sopenharmony_ci 43362306a36Sopenharmony_ciconfig CPU_THUMBONLY 43462306a36Sopenharmony_ci bool 43562306a36Sopenharmony_ci select CPU_THUMB_CAPABLE 43662306a36Sopenharmony_ci # There are no CPUs available with MMU that don't implement an ARM ISA: 43762306a36Sopenharmony_ci depends on !MMU 43862306a36Sopenharmony_ci help 43962306a36Sopenharmony_ci Select this if your CPU doesn't support the 32 bit ARM instructions. 44062306a36Sopenharmony_ci 44162306a36Sopenharmony_ciconfig CPU_THUMB_CAPABLE 44262306a36Sopenharmony_ci bool 44362306a36Sopenharmony_ci help 44462306a36Sopenharmony_ci Select this if your CPU can support Thumb mode. 44562306a36Sopenharmony_ci 44662306a36Sopenharmony_ci# Figure out what processor architecture version we should be using. 44762306a36Sopenharmony_ci# This defines the compiler instruction set which depends on the machine type. 44862306a36Sopenharmony_ciconfig CPU_32v3 44962306a36Sopenharmony_ci bool 45062306a36Sopenharmony_ci select CPU_USE_DOMAINS if MMU 45162306a36Sopenharmony_ci select NEED_KUSER_HELPERS 45262306a36Sopenharmony_ci select TLS_REG_EMUL if SMP || !MMU 45362306a36Sopenharmony_ci select CPU_NO_EFFICIENT_FFS 45462306a36Sopenharmony_ci 45562306a36Sopenharmony_ciconfig CPU_32v4 45662306a36Sopenharmony_ci bool 45762306a36Sopenharmony_ci select CPU_USE_DOMAINS if MMU 45862306a36Sopenharmony_ci select NEED_KUSER_HELPERS 45962306a36Sopenharmony_ci select TLS_REG_EMUL if SMP || !MMU 46062306a36Sopenharmony_ci select CPU_NO_EFFICIENT_FFS 46162306a36Sopenharmony_ci 46262306a36Sopenharmony_ciconfig CPU_32v4T 46362306a36Sopenharmony_ci bool 46462306a36Sopenharmony_ci select CPU_USE_DOMAINS if MMU 46562306a36Sopenharmony_ci select NEED_KUSER_HELPERS 46662306a36Sopenharmony_ci select TLS_REG_EMUL if SMP || !MMU 46762306a36Sopenharmony_ci select CPU_NO_EFFICIENT_FFS 46862306a36Sopenharmony_ci 46962306a36Sopenharmony_ciconfig CPU_32v5 47062306a36Sopenharmony_ci bool 47162306a36Sopenharmony_ci select CPU_USE_DOMAINS if MMU 47262306a36Sopenharmony_ci select NEED_KUSER_HELPERS 47362306a36Sopenharmony_ci select TLS_REG_EMUL if SMP || !MMU 47462306a36Sopenharmony_ci 47562306a36Sopenharmony_ciconfig CPU_32v6 47662306a36Sopenharmony_ci bool 47762306a36Sopenharmony_ci select TLS_REG_EMUL if !CPU_32v6K && !MMU 47862306a36Sopenharmony_ci 47962306a36Sopenharmony_ciconfig CPU_32v6K 48062306a36Sopenharmony_ci bool 48162306a36Sopenharmony_ci 48262306a36Sopenharmony_ciconfig CPU_32v7 48362306a36Sopenharmony_ci bool 48462306a36Sopenharmony_ci 48562306a36Sopenharmony_ciconfig CPU_32v7M 48662306a36Sopenharmony_ci bool 48762306a36Sopenharmony_ci 48862306a36Sopenharmony_ci# The abort model 48962306a36Sopenharmony_ciconfig CPU_ABRT_NOMMU 49062306a36Sopenharmony_ci bool 49162306a36Sopenharmony_ci 49262306a36Sopenharmony_ciconfig CPU_ABRT_EV4 49362306a36Sopenharmony_ci bool 49462306a36Sopenharmony_ci 49562306a36Sopenharmony_ciconfig CPU_ABRT_EV4T 49662306a36Sopenharmony_ci bool 49762306a36Sopenharmony_ci 49862306a36Sopenharmony_ciconfig CPU_ABRT_LV4T 49962306a36Sopenharmony_ci bool 50062306a36Sopenharmony_ci 50162306a36Sopenharmony_ciconfig CPU_ABRT_EV5T 50262306a36Sopenharmony_ci bool 50362306a36Sopenharmony_ci 50462306a36Sopenharmony_ciconfig CPU_ABRT_EV5TJ 50562306a36Sopenharmony_ci bool 50662306a36Sopenharmony_ci 50762306a36Sopenharmony_ciconfig CPU_ABRT_EV6 50862306a36Sopenharmony_ci bool 50962306a36Sopenharmony_ci 51062306a36Sopenharmony_ciconfig CPU_ABRT_EV7 51162306a36Sopenharmony_ci bool 51262306a36Sopenharmony_ci 51362306a36Sopenharmony_ciconfig CPU_PABRT_LEGACY 51462306a36Sopenharmony_ci bool 51562306a36Sopenharmony_ci 51662306a36Sopenharmony_ciconfig CPU_PABRT_V6 51762306a36Sopenharmony_ci bool 51862306a36Sopenharmony_ci 51962306a36Sopenharmony_ciconfig CPU_PABRT_V7 52062306a36Sopenharmony_ci bool 52162306a36Sopenharmony_ci 52262306a36Sopenharmony_ci# The cache model 52362306a36Sopenharmony_ciconfig CPU_CACHE_V4 52462306a36Sopenharmony_ci bool 52562306a36Sopenharmony_ci 52662306a36Sopenharmony_ciconfig CPU_CACHE_V4WT 52762306a36Sopenharmony_ci bool 52862306a36Sopenharmony_ci 52962306a36Sopenharmony_ciconfig CPU_CACHE_V4WB 53062306a36Sopenharmony_ci bool 53162306a36Sopenharmony_ci 53262306a36Sopenharmony_ciconfig CPU_CACHE_V6 53362306a36Sopenharmony_ci bool 53462306a36Sopenharmony_ci 53562306a36Sopenharmony_ciconfig CPU_CACHE_V7 53662306a36Sopenharmony_ci bool 53762306a36Sopenharmony_ci 53862306a36Sopenharmony_ciconfig CPU_CACHE_NOP 53962306a36Sopenharmony_ci bool 54062306a36Sopenharmony_ci 54162306a36Sopenharmony_ciconfig CPU_CACHE_VIVT 54262306a36Sopenharmony_ci bool 54362306a36Sopenharmony_ci 54462306a36Sopenharmony_ciconfig CPU_CACHE_VIPT 54562306a36Sopenharmony_ci bool 54662306a36Sopenharmony_ci 54762306a36Sopenharmony_ciconfig CPU_CACHE_FA 54862306a36Sopenharmony_ci bool 54962306a36Sopenharmony_ci 55062306a36Sopenharmony_ciconfig CPU_CACHE_V7M 55162306a36Sopenharmony_ci bool 55262306a36Sopenharmony_ci 55362306a36Sopenharmony_ciif MMU 55462306a36Sopenharmony_ci# The copy-page model 55562306a36Sopenharmony_ciconfig CPU_COPY_V4WT 55662306a36Sopenharmony_ci bool 55762306a36Sopenharmony_ci 55862306a36Sopenharmony_ciconfig CPU_COPY_V4WB 55962306a36Sopenharmony_ci bool 56062306a36Sopenharmony_ci 56162306a36Sopenharmony_ciconfig CPU_COPY_FEROCEON 56262306a36Sopenharmony_ci bool 56362306a36Sopenharmony_ci 56462306a36Sopenharmony_ciconfig CPU_COPY_FA 56562306a36Sopenharmony_ci bool 56662306a36Sopenharmony_ci 56762306a36Sopenharmony_ciconfig CPU_COPY_V6 56862306a36Sopenharmony_ci bool 56962306a36Sopenharmony_ci 57062306a36Sopenharmony_ci# This selects the TLB model 57162306a36Sopenharmony_ciconfig CPU_TLB_V4WT 57262306a36Sopenharmony_ci bool 57362306a36Sopenharmony_ci help 57462306a36Sopenharmony_ci ARM Architecture Version 4 TLB with writethrough cache. 57562306a36Sopenharmony_ci 57662306a36Sopenharmony_ciconfig CPU_TLB_V4WB 57762306a36Sopenharmony_ci bool 57862306a36Sopenharmony_ci help 57962306a36Sopenharmony_ci ARM Architecture Version 4 TLB with writeback cache. 58062306a36Sopenharmony_ci 58162306a36Sopenharmony_ciconfig CPU_TLB_V4WBI 58262306a36Sopenharmony_ci bool 58362306a36Sopenharmony_ci help 58462306a36Sopenharmony_ci ARM Architecture Version 4 TLB with writeback cache and invalidate 58562306a36Sopenharmony_ci instruction cache entry. 58662306a36Sopenharmony_ci 58762306a36Sopenharmony_ciconfig CPU_TLB_FEROCEON 58862306a36Sopenharmony_ci bool 58962306a36Sopenharmony_ci help 59062306a36Sopenharmony_ci Feroceon TLB (v4wbi with non-outer-cachable page table walks). 59162306a36Sopenharmony_ci 59262306a36Sopenharmony_ciconfig CPU_TLB_FA 59362306a36Sopenharmony_ci bool 59462306a36Sopenharmony_ci help 59562306a36Sopenharmony_ci Faraday ARM FA526 architecture, unified TLB with writeback cache 59662306a36Sopenharmony_ci and invalidate instruction cache entry. Branch target buffer is 59762306a36Sopenharmony_ci also supported. 59862306a36Sopenharmony_ci 59962306a36Sopenharmony_ciconfig CPU_TLB_V6 60062306a36Sopenharmony_ci bool 60162306a36Sopenharmony_ci 60262306a36Sopenharmony_ciconfig CPU_TLB_V7 60362306a36Sopenharmony_ci bool 60462306a36Sopenharmony_ci 60562306a36Sopenharmony_ciendif 60662306a36Sopenharmony_ci 60762306a36Sopenharmony_ciconfig CPU_HAS_ASID 60862306a36Sopenharmony_ci bool 60962306a36Sopenharmony_ci help 61062306a36Sopenharmony_ci This indicates whether the CPU has the ASID register; used to 61162306a36Sopenharmony_ci tag TLB and possibly cache entries. 61262306a36Sopenharmony_ci 61362306a36Sopenharmony_ciconfig CPU_CP15 61462306a36Sopenharmony_ci bool 61562306a36Sopenharmony_ci help 61662306a36Sopenharmony_ci Processor has the CP15 register. 61762306a36Sopenharmony_ci 61862306a36Sopenharmony_ciconfig CPU_CP15_MMU 61962306a36Sopenharmony_ci bool 62062306a36Sopenharmony_ci select CPU_CP15 62162306a36Sopenharmony_ci help 62262306a36Sopenharmony_ci Processor has the CP15 register, which has MMU related registers. 62362306a36Sopenharmony_ci 62462306a36Sopenharmony_ciconfig CPU_CP15_MPU 62562306a36Sopenharmony_ci bool 62662306a36Sopenharmony_ci select CPU_CP15 62762306a36Sopenharmony_ci help 62862306a36Sopenharmony_ci Processor has the CP15 register, which has MPU related registers. 62962306a36Sopenharmony_ci 63062306a36Sopenharmony_ciconfig CPU_USE_DOMAINS 63162306a36Sopenharmony_ci bool 63262306a36Sopenharmony_ci help 63362306a36Sopenharmony_ci This option enables or disables the use of domain switching 63462306a36Sopenharmony_ci using the DACR (domain access control register) to protect memory 63562306a36Sopenharmony_ci domains from each other. In Linux we use three domains: kernel, user 63662306a36Sopenharmony_ci and IO. The domains are used to protect userspace from kernelspace 63762306a36Sopenharmony_ci and to handle IO-space as a special type of memory by assigning 63862306a36Sopenharmony_ci manager or client roles to running code (such as a process). 63962306a36Sopenharmony_ci 64062306a36Sopenharmony_ciconfig CPU_V7M_NUM_IRQ 64162306a36Sopenharmony_ci int "Number of external interrupts connected to the NVIC" 64262306a36Sopenharmony_ci depends on CPU_V7M 64362306a36Sopenharmony_ci default 90 if ARCH_STM32 64462306a36Sopenharmony_ci default 112 if SOC_VF610 64562306a36Sopenharmony_ci default 240 64662306a36Sopenharmony_ci help 64762306a36Sopenharmony_ci This option indicates the number of interrupts connected to the NVIC. 64862306a36Sopenharmony_ci The value can be larger than the real number of interrupts supported 64962306a36Sopenharmony_ci by the system, but must not be lower. 65062306a36Sopenharmony_ci The default value is 240, corresponding to the maximum number of 65162306a36Sopenharmony_ci interrupts supported by the NVIC on Cortex-M family. 65262306a36Sopenharmony_ci 65362306a36Sopenharmony_ci If unsure, keep default value. 65462306a36Sopenharmony_ci 65562306a36Sopenharmony_ci# 65662306a36Sopenharmony_ci# CPU supports 36-bit I/O 65762306a36Sopenharmony_ci# 65862306a36Sopenharmony_ciconfig IO_36 65962306a36Sopenharmony_ci bool 66062306a36Sopenharmony_ci 66162306a36Sopenharmony_cicomment "Processor Features" 66262306a36Sopenharmony_ci 66362306a36Sopenharmony_ciconfig ARM_LPAE 66462306a36Sopenharmony_ci bool "Support for the Large Physical Address Extension" 66562306a36Sopenharmony_ci depends on MMU && CPU_32v7 && !CPU_32v6 && !CPU_32v5 && \ 66662306a36Sopenharmony_ci !CPU_32v4 && !CPU_32v3 66762306a36Sopenharmony_ci select PHYS_ADDR_T_64BIT 66862306a36Sopenharmony_ci select SWIOTLB 66962306a36Sopenharmony_ci help 67062306a36Sopenharmony_ci Say Y if you have an ARMv7 processor supporting the LPAE page 67162306a36Sopenharmony_ci table format and you would like to access memory beyond the 67262306a36Sopenharmony_ci 4GB limit. The resulting kernel image will not run on 67362306a36Sopenharmony_ci processors without the LPA extension. 67462306a36Sopenharmony_ci 67562306a36Sopenharmony_ci If unsure, say N. 67662306a36Sopenharmony_ci 67762306a36Sopenharmony_ciconfig ARM_PV_FIXUP 67862306a36Sopenharmony_ci def_bool y 67962306a36Sopenharmony_ci depends on ARM_LPAE && ARM_PATCH_PHYS_VIRT && ARCH_KEYSTONE 68062306a36Sopenharmony_ci 68162306a36Sopenharmony_ciconfig ARM_THUMB 68262306a36Sopenharmony_ci bool "Support Thumb user binaries" if !CPU_THUMBONLY && EXPERT 68362306a36Sopenharmony_ci depends on CPU_THUMB_CAPABLE && !CPU_32v4 68462306a36Sopenharmony_ci default y 68562306a36Sopenharmony_ci help 68662306a36Sopenharmony_ci Say Y if you want to include kernel support for running user space 68762306a36Sopenharmony_ci Thumb binaries. 68862306a36Sopenharmony_ci 68962306a36Sopenharmony_ci The Thumb instruction set is a compressed form of the standard ARM 69062306a36Sopenharmony_ci instruction set resulting in smaller binaries at the expense of 69162306a36Sopenharmony_ci slightly less efficient code. 69262306a36Sopenharmony_ci 69362306a36Sopenharmony_ci If this option is disabled, and you run userspace that switches to 69462306a36Sopenharmony_ci Thumb mode, signal handling will not work correctly, resulting in 69562306a36Sopenharmony_ci segmentation faults or illegal instruction aborts. 69662306a36Sopenharmony_ci 69762306a36Sopenharmony_ci If you don't know what this all is, saying Y is a safe choice. 69862306a36Sopenharmony_ci 69962306a36Sopenharmony_ciconfig ARM_THUMBEE 70062306a36Sopenharmony_ci bool "Enable ThumbEE CPU extension" 70162306a36Sopenharmony_ci depends on CPU_V7 70262306a36Sopenharmony_ci help 70362306a36Sopenharmony_ci Say Y here if you have a CPU with the ThumbEE extension and code to 70462306a36Sopenharmony_ci make use of it. Say N for code that can run on CPUs without ThumbEE. 70562306a36Sopenharmony_ci 70662306a36Sopenharmony_ciconfig ARM_VIRT_EXT 70762306a36Sopenharmony_ci bool 70862306a36Sopenharmony_ci default y if CPU_V7 70962306a36Sopenharmony_ci help 71062306a36Sopenharmony_ci Enable the kernel to make use of the ARM Virtualization 71162306a36Sopenharmony_ci Extensions to install hypervisors without run-time firmware 71262306a36Sopenharmony_ci assistance. 71362306a36Sopenharmony_ci 71462306a36Sopenharmony_ci A compliant bootloader is required in order to make maximum 71562306a36Sopenharmony_ci use of this feature. Refer to Documentation/arch/arm/booting.rst for 71662306a36Sopenharmony_ci details. 71762306a36Sopenharmony_ci 71862306a36Sopenharmony_ciconfig SWP_EMULATE 71962306a36Sopenharmony_ci bool "Emulate SWP/SWPB instructions" if !SMP 72062306a36Sopenharmony_ci depends on CPU_V7 72162306a36Sopenharmony_ci default y if SMP 72262306a36Sopenharmony_ci select HAVE_PROC_CPU if PROC_FS 72362306a36Sopenharmony_ci help 72462306a36Sopenharmony_ci ARMv6 architecture deprecates use of the SWP/SWPB instructions. 72562306a36Sopenharmony_ci ARMv7 multiprocessing extensions introduce the ability to disable 72662306a36Sopenharmony_ci these instructions, triggering an undefined instruction exception 72762306a36Sopenharmony_ci when executed. Say Y here to enable software emulation of these 72862306a36Sopenharmony_ci instructions for userspace (not kernel) using LDREX/STREX. 72962306a36Sopenharmony_ci Also creates /proc/cpu/swp_emulation for statistics. 73062306a36Sopenharmony_ci 73162306a36Sopenharmony_ci In some older versions of glibc [<=2.8] SWP is used during futex 73262306a36Sopenharmony_ci trylock() operations with the assumption that the code will not 73362306a36Sopenharmony_ci be preempted. This invalid assumption may be more likely to fail 73462306a36Sopenharmony_ci with SWP emulation enabled, leading to deadlock of the user 73562306a36Sopenharmony_ci application. 73662306a36Sopenharmony_ci 73762306a36Sopenharmony_ci NOTE: when accessing uncached shared regions, LDREX/STREX rely 73862306a36Sopenharmony_ci on an external transaction monitoring block called a global 73962306a36Sopenharmony_ci monitor to maintain update atomicity. If your system does not 74062306a36Sopenharmony_ci implement a global monitor, this option can cause programs that 74162306a36Sopenharmony_ci perform SWP operations to uncached memory to deadlock. 74262306a36Sopenharmony_ci 74362306a36Sopenharmony_ci If unsure, say Y. 74462306a36Sopenharmony_ci 74562306a36Sopenharmony_cichoice 74662306a36Sopenharmony_ci prompt "CPU Endianness" 74762306a36Sopenharmony_ci default CPU_LITTLE_ENDIAN 74862306a36Sopenharmony_ci 74962306a36Sopenharmony_ciconfig CPU_LITTLE_ENDIAN 75062306a36Sopenharmony_ci bool "Built little-endian kernel" 75162306a36Sopenharmony_ci help 75262306a36Sopenharmony_ci Say Y if you plan on running a kernel in little-endian mode. 75362306a36Sopenharmony_ci This is the default and is used in practically all modern user 75462306a36Sopenharmony_ci space builds. 75562306a36Sopenharmony_ci 75662306a36Sopenharmony_ciconfig CPU_BIG_ENDIAN 75762306a36Sopenharmony_ci bool "Build big-endian kernel" 75862306a36Sopenharmony_ci depends on !LD_IS_LLD 75962306a36Sopenharmony_ci help 76062306a36Sopenharmony_ci Say Y if you plan on running a kernel in big-endian mode. 76162306a36Sopenharmony_ci This works on many machines using ARMv6 or newer processors 76262306a36Sopenharmony_ci but requires big-endian user space. 76362306a36Sopenharmony_ci 76462306a36Sopenharmony_ci The only ARMv5 platform with big-endian support is 76562306a36Sopenharmony_ci Intel IXP4xx. 76662306a36Sopenharmony_ci 76762306a36Sopenharmony_ciendchoice 76862306a36Sopenharmony_ci 76962306a36Sopenharmony_ciconfig CPU_ENDIAN_BE8 77062306a36Sopenharmony_ci bool 77162306a36Sopenharmony_ci depends on CPU_BIG_ENDIAN 77262306a36Sopenharmony_ci default CPU_V6 || CPU_V6K || CPU_V7 || CPU_V7M 77362306a36Sopenharmony_ci help 77462306a36Sopenharmony_ci Support for the BE-8 (big-endian) mode on ARMv6 and ARMv7 processors. 77562306a36Sopenharmony_ci 77662306a36Sopenharmony_ciconfig CPU_ENDIAN_BE32 77762306a36Sopenharmony_ci bool 77862306a36Sopenharmony_ci depends on CPU_BIG_ENDIAN 77962306a36Sopenharmony_ci default !CPU_ENDIAN_BE8 78062306a36Sopenharmony_ci help 78162306a36Sopenharmony_ci Support for the BE-32 (big-endian) mode on pre-ARMv6 processors. 78262306a36Sopenharmony_ci 78362306a36Sopenharmony_ciconfig CPU_HIGH_VECTOR 78462306a36Sopenharmony_ci depends on !MMU && CPU_CP15 && !CPU_ARM740T 78562306a36Sopenharmony_ci bool "Select the High exception vector" 78662306a36Sopenharmony_ci help 78762306a36Sopenharmony_ci Say Y here to select high exception vector(0xFFFF0000~). 78862306a36Sopenharmony_ci The exception vector can vary depending on the platform 78962306a36Sopenharmony_ci design in nommu mode. If your platform needs to select 79062306a36Sopenharmony_ci high exception vector, say Y. 79162306a36Sopenharmony_ci Otherwise or if you are unsure, say N, and the low exception 79262306a36Sopenharmony_ci vector (0x00000000~) will be used. 79362306a36Sopenharmony_ci 79462306a36Sopenharmony_ciconfig CPU_ICACHE_DISABLE 79562306a36Sopenharmony_ci bool "Disable I-Cache (I-bit)" 79662306a36Sopenharmony_ci depends on (CPU_CP15 && !(CPU_ARM720T || CPU_ARM740T || CPU_XSCALE || CPU_XSC3)) || CPU_V7M 79762306a36Sopenharmony_ci help 79862306a36Sopenharmony_ci Say Y here to disable the processor instruction cache. Unless 79962306a36Sopenharmony_ci you have a reason not to or are unsure, say N. 80062306a36Sopenharmony_ci 80162306a36Sopenharmony_ciconfig CPU_ICACHE_MISMATCH_WORKAROUND 80262306a36Sopenharmony_ci bool "Workaround for I-Cache line size mismatch between CPU cores" 80362306a36Sopenharmony_ci depends on SMP && CPU_V7 80462306a36Sopenharmony_ci help 80562306a36Sopenharmony_ci Some big.LITTLE systems have I-Cache line size mismatch between 80662306a36Sopenharmony_ci LITTLE and big cores. Say Y here to enable a workaround for 80762306a36Sopenharmony_ci proper I-Cache support on such systems. If unsure, say N. 80862306a36Sopenharmony_ci 80962306a36Sopenharmony_ciconfig CPU_DCACHE_DISABLE 81062306a36Sopenharmony_ci bool "Disable D-Cache (C-bit)" 81162306a36Sopenharmony_ci depends on (CPU_CP15 && !SMP) || CPU_V7M 81262306a36Sopenharmony_ci help 81362306a36Sopenharmony_ci Say Y here to disable the processor data cache. Unless 81462306a36Sopenharmony_ci you have a reason not to or are unsure, say N. 81562306a36Sopenharmony_ci 81662306a36Sopenharmony_ciconfig CPU_DCACHE_SIZE 81762306a36Sopenharmony_ci hex 81862306a36Sopenharmony_ci depends on CPU_ARM740T || CPU_ARM946E 81962306a36Sopenharmony_ci default 0x00001000 if CPU_ARM740T 82062306a36Sopenharmony_ci default 0x00002000 # default size for ARM946E-S 82162306a36Sopenharmony_ci help 82262306a36Sopenharmony_ci Some cores are synthesizable to have various sized cache. For 82362306a36Sopenharmony_ci ARM946E-S case, it can vary from 0KB to 1MB. 82462306a36Sopenharmony_ci To support such cache operations, it is efficient to know the size 82562306a36Sopenharmony_ci before compile time. 82662306a36Sopenharmony_ci If your SoC is configured to have a different size, define the value 82762306a36Sopenharmony_ci here with proper conditions. 82862306a36Sopenharmony_ci 82962306a36Sopenharmony_ciconfig CPU_DCACHE_WRITETHROUGH 83062306a36Sopenharmony_ci bool "Force write through D-cache" 83162306a36Sopenharmony_ci depends on (CPU_ARM740T || CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM940T || CPU_ARM946E || CPU_ARM1020 || CPU_FA526) && !CPU_DCACHE_DISABLE 83262306a36Sopenharmony_ci default y if CPU_ARM925T 83362306a36Sopenharmony_ci help 83462306a36Sopenharmony_ci Say Y here to use the data cache in writethrough mode. Unless you 83562306a36Sopenharmony_ci specifically require this or are unsure, say N. 83662306a36Sopenharmony_ci 83762306a36Sopenharmony_ciconfig CPU_CACHE_ROUND_ROBIN 83862306a36Sopenharmony_ci bool "Round robin I and D cache replacement algorithm" 83962306a36Sopenharmony_ci depends on (CPU_ARM926T || CPU_ARM946E || CPU_ARM1020) && (!CPU_ICACHE_DISABLE || !CPU_DCACHE_DISABLE) 84062306a36Sopenharmony_ci help 84162306a36Sopenharmony_ci Say Y here to use the predictable round-robin cache replacement 84262306a36Sopenharmony_ci policy. Unless you specifically require this or are unsure, say N. 84362306a36Sopenharmony_ci 84462306a36Sopenharmony_ciconfig CPU_BPREDICT_DISABLE 84562306a36Sopenharmony_ci bool "Disable branch prediction" 84662306a36Sopenharmony_ci depends on CPU_ARM1020 || CPU_V6 || CPU_V6K || CPU_MOHAWK || CPU_XSC3 || CPU_V7 || CPU_FA526 || CPU_V7M 84762306a36Sopenharmony_ci help 84862306a36Sopenharmony_ci Say Y here to disable branch prediction. If unsure, say N. 84962306a36Sopenharmony_ci 85062306a36Sopenharmony_ciconfig CPU_SPECTRE 85162306a36Sopenharmony_ci bool 85262306a36Sopenharmony_ci select GENERIC_CPU_VULNERABILITIES 85362306a36Sopenharmony_ci 85462306a36Sopenharmony_ciconfig HARDEN_BRANCH_PREDICTOR 85562306a36Sopenharmony_ci bool "Harden the branch predictor against aliasing attacks" if EXPERT 85662306a36Sopenharmony_ci depends on CPU_SPECTRE 85762306a36Sopenharmony_ci default y 85862306a36Sopenharmony_ci help 85962306a36Sopenharmony_ci Speculation attacks against some high-performance processors rely 86062306a36Sopenharmony_ci on being able to manipulate the branch predictor for a victim 86162306a36Sopenharmony_ci context by executing aliasing branches in the attacker context. 86262306a36Sopenharmony_ci Such attacks can be partially mitigated against by clearing 86362306a36Sopenharmony_ci internal branch predictor state and limiting the prediction 86462306a36Sopenharmony_ci logic in some situations. 86562306a36Sopenharmony_ci 86662306a36Sopenharmony_ci This config option will take CPU-specific actions to harden 86762306a36Sopenharmony_ci the branch predictor against aliasing attacks and may rely on 86862306a36Sopenharmony_ci specific instruction sequences or control bits being set by 86962306a36Sopenharmony_ci the system firmware. 87062306a36Sopenharmony_ci 87162306a36Sopenharmony_ci If unsure, say Y. 87262306a36Sopenharmony_ci 87362306a36Sopenharmony_ciconfig HARDEN_BRANCH_HISTORY 87462306a36Sopenharmony_ci bool "Harden Spectre style attacks against branch history" if EXPERT 87562306a36Sopenharmony_ci depends on CPU_SPECTRE 87662306a36Sopenharmony_ci default y 87762306a36Sopenharmony_ci help 87862306a36Sopenharmony_ci Speculation attacks against some high-performance processors can 87962306a36Sopenharmony_ci make use of branch history to influence future speculation. When 88062306a36Sopenharmony_ci taking an exception, a sequence of branches overwrites the branch 88162306a36Sopenharmony_ci history, or branch history is invalidated. 88262306a36Sopenharmony_ci 88362306a36Sopenharmony_ciconfig TLS_REG_EMUL 88462306a36Sopenharmony_ci bool 88562306a36Sopenharmony_ci select NEED_KUSER_HELPERS 88662306a36Sopenharmony_ci help 88762306a36Sopenharmony_ci An SMP system using a pre-ARMv6 processor (there are apparently 88862306a36Sopenharmony_ci a few prototypes like that in existence) and therefore access to 88962306a36Sopenharmony_ci that required register must be emulated. 89062306a36Sopenharmony_ci 89162306a36Sopenharmony_ciconfig NEED_KUSER_HELPERS 89262306a36Sopenharmony_ci bool 89362306a36Sopenharmony_ci 89462306a36Sopenharmony_ciconfig KUSER_HELPERS 89562306a36Sopenharmony_ci bool "Enable kuser helpers in vector page" if !NEED_KUSER_HELPERS 89662306a36Sopenharmony_ci depends on MMU 89762306a36Sopenharmony_ci default y 89862306a36Sopenharmony_ci help 89962306a36Sopenharmony_ci Warning: disabling this option may break user programs. 90062306a36Sopenharmony_ci 90162306a36Sopenharmony_ci Provide kuser helpers in the vector page. The kernel provides 90262306a36Sopenharmony_ci helper code to userspace in read only form at a fixed location 90362306a36Sopenharmony_ci in the high vector page to allow userspace to be independent of 90462306a36Sopenharmony_ci the CPU type fitted to the system. This permits binaries to be 90562306a36Sopenharmony_ci run on ARMv4 through to ARMv7 without modification. 90662306a36Sopenharmony_ci 90762306a36Sopenharmony_ci See Documentation/arch/arm/kernel_user_helpers.rst for details. 90862306a36Sopenharmony_ci 90962306a36Sopenharmony_ci However, the fixed address nature of these helpers can be used 91062306a36Sopenharmony_ci by ROP (return orientated programming) authors when creating 91162306a36Sopenharmony_ci exploits. 91262306a36Sopenharmony_ci 91362306a36Sopenharmony_ci If all of the binaries and libraries which run on your platform 91462306a36Sopenharmony_ci are built specifically for your platform, and make no use of 91562306a36Sopenharmony_ci these helpers, then you can turn this option off to hinder 91662306a36Sopenharmony_ci such exploits. However, in that case, if a binary or library 91762306a36Sopenharmony_ci relying on those helpers is run, it will receive a SIGILL signal, 91862306a36Sopenharmony_ci which will terminate the program. 91962306a36Sopenharmony_ci 92062306a36Sopenharmony_ci Say N here only if you are absolutely certain that you do not 92162306a36Sopenharmony_ci need these helpers; otherwise, the safe option is to say Y. 92262306a36Sopenharmony_ci 92362306a36Sopenharmony_ciconfig VDSO 92462306a36Sopenharmony_ci bool "Enable VDSO for acceleration of some system calls" 92562306a36Sopenharmony_ci depends on AEABI && MMU && CPU_V7 92662306a36Sopenharmony_ci default y if ARM_ARCH_TIMER 92762306a36Sopenharmony_ci select HAVE_GENERIC_VDSO 92862306a36Sopenharmony_ci select GENERIC_TIME_VSYSCALL 92962306a36Sopenharmony_ci select GENERIC_VDSO_32 93062306a36Sopenharmony_ci select GENERIC_GETTIMEOFDAY 93162306a36Sopenharmony_ci help 93262306a36Sopenharmony_ci Place in the process address space an ELF shared object 93362306a36Sopenharmony_ci providing fast implementations of gettimeofday and 93462306a36Sopenharmony_ci clock_gettime. Systems that implement the ARM architected 93562306a36Sopenharmony_ci timer will receive maximum benefit. 93662306a36Sopenharmony_ci 93762306a36Sopenharmony_ci You must have glibc 2.22 or later for programs to seamlessly 93862306a36Sopenharmony_ci take advantage of this. 93962306a36Sopenharmony_ci 94062306a36Sopenharmony_ciconfig DMA_CACHE_RWFO 94162306a36Sopenharmony_ci bool "Enable read/write for ownership DMA cache maintenance" 94262306a36Sopenharmony_ci depends on CPU_V6K && SMP 94362306a36Sopenharmony_ci default y 94462306a36Sopenharmony_ci help 94562306a36Sopenharmony_ci The Snoop Control Unit on ARM11MPCore does not detect the 94662306a36Sopenharmony_ci cache maintenance operations and the dma_{map,unmap}_area() 94762306a36Sopenharmony_ci functions may leave stale cache entries on other CPUs. By 94862306a36Sopenharmony_ci enabling this option, Read or Write For Ownership in the ARMv6 94962306a36Sopenharmony_ci DMA cache maintenance functions is performed. These LDR/STR 95062306a36Sopenharmony_ci instructions change the cache line state to shared or modified 95162306a36Sopenharmony_ci so that the cache operation has the desired effect. 95262306a36Sopenharmony_ci 95362306a36Sopenharmony_ci Note that the workaround is only valid on processors that do 95462306a36Sopenharmony_ci not perform speculative loads into the D-cache. For such 95562306a36Sopenharmony_ci processors, if cache maintenance operations are not broadcast 95662306a36Sopenharmony_ci in hardware, other workarounds are needed (e.g. cache 95762306a36Sopenharmony_ci maintenance broadcasting in software via FIQ). 95862306a36Sopenharmony_ci 95962306a36Sopenharmony_ciconfig OUTER_CACHE 96062306a36Sopenharmony_ci bool 96162306a36Sopenharmony_ci 96262306a36Sopenharmony_ciconfig OUTER_CACHE_SYNC 96362306a36Sopenharmony_ci bool 96462306a36Sopenharmony_ci select ARM_HEAVY_MB 96562306a36Sopenharmony_ci help 96662306a36Sopenharmony_ci The outer cache has a outer_cache_fns.sync function pointer 96762306a36Sopenharmony_ci that can be used to drain the write buffer of the outer cache. 96862306a36Sopenharmony_ci 96962306a36Sopenharmony_ciconfig CACHE_B15_RAC 97062306a36Sopenharmony_ci bool "Enable the Broadcom Brahma-B15 read-ahead cache controller" 97162306a36Sopenharmony_ci depends on ARCH_BRCMSTB 97262306a36Sopenharmony_ci default y 97362306a36Sopenharmony_ci help 97462306a36Sopenharmony_ci This option enables the Broadcom Brahma-B15 read-ahead cache 97562306a36Sopenharmony_ci controller. If disabled, the read-ahead cache remains off. 97662306a36Sopenharmony_ci 97762306a36Sopenharmony_ciconfig CACHE_FEROCEON_L2 97862306a36Sopenharmony_ci bool "Enable the Feroceon L2 cache controller" 97962306a36Sopenharmony_ci depends on ARCH_MV78XX0 || ARCH_MVEBU 98062306a36Sopenharmony_ci default y 98162306a36Sopenharmony_ci select OUTER_CACHE 98262306a36Sopenharmony_ci help 98362306a36Sopenharmony_ci This option enables the Feroceon L2 cache controller. 98462306a36Sopenharmony_ci 98562306a36Sopenharmony_ciconfig CACHE_FEROCEON_L2_WRITETHROUGH 98662306a36Sopenharmony_ci bool "Force Feroceon L2 cache write through" 98762306a36Sopenharmony_ci depends on CACHE_FEROCEON_L2 98862306a36Sopenharmony_ci help 98962306a36Sopenharmony_ci Say Y here to use the Feroceon L2 cache in writethrough mode. 99062306a36Sopenharmony_ci Unless you specifically require this, say N for writeback mode. 99162306a36Sopenharmony_ci 99262306a36Sopenharmony_ciconfig MIGHT_HAVE_CACHE_L2X0 99362306a36Sopenharmony_ci bool 99462306a36Sopenharmony_ci help 99562306a36Sopenharmony_ci This option should be selected by machines which have a L2x0 99662306a36Sopenharmony_ci or PL310 cache controller, but where its use is optional. 99762306a36Sopenharmony_ci 99862306a36Sopenharmony_ci The only effect of this option is to make CACHE_L2X0 and 99962306a36Sopenharmony_ci related options available to the user for configuration. 100062306a36Sopenharmony_ci 100162306a36Sopenharmony_ci Boards or SoCs which always require the cache controller 100262306a36Sopenharmony_ci support to be present should select CACHE_L2X0 directly 100362306a36Sopenharmony_ci instead of this option, thus preventing the user from 100462306a36Sopenharmony_ci inadvertently configuring a broken kernel. 100562306a36Sopenharmony_ci 100662306a36Sopenharmony_ciconfig CACHE_L2X0 100762306a36Sopenharmony_ci bool "Enable the L2x0 outer cache controller" if MIGHT_HAVE_CACHE_L2X0 100862306a36Sopenharmony_ci default MIGHT_HAVE_CACHE_L2X0 100962306a36Sopenharmony_ci select OUTER_CACHE 101062306a36Sopenharmony_ci select OUTER_CACHE_SYNC 101162306a36Sopenharmony_ci help 101262306a36Sopenharmony_ci This option enables the L2x0 PrimeCell. 101362306a36Sopenharmony_ci 101462306a36Sopenharmony_ciconfig CACHE_L2X0_PMU 101562306a36Sopenharmony_ci bool "L2x0 performance monitor support" if CACHE_L2X0 101662306a36Sopenharmony_ci depends on PERF_EVENTS 101762306a36Sopenharmony_ci help 101862306a36Sopenharmony_ci This option enables support for the performance monitoring features 101962306a36Sopenharmony_ci of the L220 and PL310 outer cache controllers. 102062306a36Sopenharmony_ci 102162306a36Sopenharmony_ciif CACHE_L2X0 102262306a36Sopenharmony_ci 102362306a36Sopenharmony_ciconfig PL310_ERRATA_588369 102462306a36Sopenharmony_ci bool "PL310 errata: Clean & Invalidate maintenance operations do not invalidate clean lines" 102562306a36Sopenharmony_ci help 102662306a36Sopenharmony_ci The PL310 L2 cache controller implements three types of Clean & 102762306a36Sopenharmony_ci Invalidate maintenance operations: by Physical Address 102862306a36Sopenharmony_ci (offset 0x7F0), by Index/Way (0x7F8) and by Way (0x7FC). 102962306a36Sopenharmony_ci They are architecturally defined to behave as the execution of a 103062306a36Sopenharmony_ci clean operation followed immediately by an invalidate operation, 103162306a36Sopenharmony_ci both performing to the same memory location. This functionality 103262306a36Sopenharmony_ci is not correctly implemented in PL310 prior to r2p0 (fixed in r2p0) 103362306a36Sopenharmony_ci as clean lines are not invalidated as a result of these operations. 103462306a36Sopenharmony_ci 103562306a36Sopenharmony_ciconfig PL310_ERRATA_727915 103662306a36Sopenharmony_ci bool "PL310 errata: Background Clean & Invalidate by Way operation can cause data corruption" 103762306a36Sopenharmony_ci help 103862306a36Sopenharmony_ci PL310 implements the Clean & Invalidate by Way L2 cache maintenance 103962306a36Sopenharmony_ci operation (offset 0x7FC). This operation runs in background so that 104062306a36Sopenharmony_ci PL310 can handle normal accesses while it is in progress. Under very 104162306a36Sopenharmony_ci rare circumstances, due to this erratum, write data can be lost when 104262306a36Sopenharmony_ci PL310 treats a cacheable write transaction during a Clean & 104362306a36Sopenharmony_ci Invalidate by Way operation. Revisions prior to r3p1 are affected by 104462306a36Sopenharmony_ci this errata (fixed in r3p1). 104562306a36Sopenharmony_ci 104662306a36Sopenharmony_ciconfig PL310_ERRATA_753970 104762306a36Sopenharmony_ci bool "PL310 errata: cache sync operation may be faulty" 104862306a36Sopenharmony_ci help 104962306a36Sopenharmony_ci This option enables the workaround for the 753970 PL310 (r3p0) erratum. 105062306a36Sopenharmony_ci 105162306a36Sopenharmony_ci Under some condition the effect of cache sync operation on 105262306a36Sopenharmony_ci the store buffer still remains when the operation completes. 105362306a36Sopenharmony_ci This means that the store buffer is always asked to drain and 105462306a36Sopenharmony_ci this prevents it from merging any further writes. The workaround 105562306a36Sopenharmony_ci is to replace the normal offset of cache sync operation (0x730) 105662306a36Sopenharmony_ci by another offset targeting an unmapped PL310 register 0x740. 105762306a36Sopenharmony_ci This has the same effect as the cache sync operation: store buffer 105862306a36Sopenharmony_ci drain and waiting for all buffers empty. 105962306a36Sopenharmony_ci 106062306a36Sopenharmony_ciconfig PL310_ERRATA_769419 106162306a36Sopenharmony_ci bool "PL310 errata: no automatic Store Buffer drain" 106262306a36Sopenharmony_ci help 106362306a36Sopenharmony_ci On revisions of the PL310 prior to r3p2, the Store Buffer does 106462306a36Sopenharmony_ci not automatically drain. This can cause normal, non-cacheable 106562306a36Sopenharmony_ci writes to be retained when the memory system is idle, leading 106662306a36Sopenharmony_ci to suboptimal I/O performance for drivers using coherent DMA. 106762306a36Sopenharmony_ci This option adds a write barrier to the cpu_idle loop so that, 106862306a36Sopenharmony_ci on systems with an outer cache, the store buffer is drained 106962306a36Sopenharmony_ci explicitly. 107062306a36Sopenharmony_ci 107162306a36Sopenharmony_ciendif 107262306a36Sopenharmony_ci 107362306a36Sopenharmony_ciconfig CACHE_TAUROS2 107462306a36Sopenharmony_ci bool "Enable the Tauros2 L2 cache controller" 107562306a36Sopenharmony_ci depends on (CPU_MOHAWK || CPU_PJ4) 107662306a36Sopenharmony_ci default y 107762306a36Sopenharmony_ci select OUTER_CACHE 107862306a36Sopenharmony_ci help 107962306a36Sopenharmony_ci This option enables the Tauros2 L2 cache controller (as 108062306a36Sopenharmony_ci found on PJ1/PJ4). 108162306a36Sopenharmony_ci 108262306a36Sopenharmony_ciconfig CACHE_UNIPHIER 108362306a36Sopenharmony_ci bool "Enable the UniPhier outer cache controller" 108462306a36Sopenharmony_ci depends on ARCH_UNIPHIER 108562306a36Sopenharmony_ci select ARM_L1_CACHE_SHIFT_7 108662306a36Sopenharmony_ci select OUTER_CACHE 108762306a36Sopenharmony_ci select OUTER_CACHE_SYNC 108862306a36Sopenharmony_ci help 108962306a36Sopenharmony_ci This option enables the UniPhier outer cache (system cache) 109062306a36Sopenharmony_ci controller. 109162306a36Sopenharmony_ci 109262306a36Sopenharmony_ciconfig CACHE_XSC3L2 109362306a36Sopenharmony_ci bool "Enable the L2 cache on XScale3" 109462306a36Sopenharmony_ci depends on CPU_XSC3 109562306a36Sopenharmony_ci default y 109662306a36Sopenharmony_ci select OUTER_CACHE 109762306a36Sopenharmony_ci help 109862306a36Sopenharmony_ci This option enables the L2 cache on XScale3. 109962306a36Sopenharmony_ci 110062306a36Sopenharmony_ciconfig ARM_L1_CACHE_SHIFT_6 110162306a36Sopenharmony_ci bool 110262306a36Sopenharmony_ci default y if CPU_V7 110362306a36Sopenharmony_ci help 110462306a36Sopenharmony_ci Setting ARM L1 cache line size to 64 Bytes. 110562306a36Sopenharmony_ci 110662306a36Sopenharmony_ciconfig ARM_L1_CACHE_SHIFT_7 110762306a36Sopenharmony_ci bool 110862306a36Sopenharmony_ci help 110962306a36Sopenharmony_ci Setting ARM L1 cache line size to 128 Bytes. 111062306a36Sopenharmony_ci 111162306a36Sopenharmony_ciconfig ARM_L1_CACHE_SHIFT 111262306a36Sopenharmony_ci int 111362306a36Sopenharmony_ci default 7 if ARM_L1_CACHE_SHIFT_7 111462306a36Sopenharmony_ci default 6 if ARM_L1_CACHE_SHIFT_6 111562306a36Sopenharmony_ci default 5 111662306a36Sopenharmony_ci 111762306a36Sopenharmony_ciconfig ARM_DMA_MEM_BUFFERABLE 111862306a36Sopenharmony_ci bool "Use non-cacheable memory for DMA" if (CPU_V6 || CPU_V6K || CPU_V7M) && !CPU_V7 111962306a36Sopenharmony_ci default y if CPU_V6 || CPU_V6K || CPU_V7 || CPU_V7M 112062306a36Sopenharmony_ci help 112162306a36Sopenharmony_ci Historically, the kernel has used strongly ordered mappings to 112262306a36Sopenharmony_ci provide DMA coherent memory. With the advent of ARMv7, mapping 112362306a36Sopenharmony_ci memory with differing types results in unpredictable behaviour, 112462306a36Sopenharmony_ci so on these CPUs, this option is forced on. 112562306a36Sopenharmony_ci 112662306a36Sopenharmony_ci Multiple mappings with differing attributes is also unpredictable 112762306a36Sopenharmony_ci on ARMv6 CPUs, but since they do not have aggressive speculative 112862306a36Sopenharmony_ci prefetch, no harm appears to occur. 112962306a36Sopenharmony_ci 113062306a36Sopenharmony_ci However, drivers may be missing the necessary barriers for ARMv6, 113162306a36Sopenharmony_ci and therefore turning this on may result in unpredictable driver 113262306a36Sopenharmony_ci behaviour. Therefore, we offer this as an option. 113362306a36Sopenharmony_ci 113462306a36Sopenharmony_ci On some of the beefier ARMv7-M machines (with DMA and write 113562306a36Sopenharmony_ci buffers) you likely want this enabled, while those that 113662306a36Sopenharmony_ci didn't need it until now also won't need it in the future. 113762306a36Sopenharmony_ci 113862306a36Sopenharmony_ci You are recommended say 'Y' here and debug any affected drivers. 113962306a36Sopenharmony_ci 114062306a36Sopenharmony_ciconfig ARM_HEAVY_MB 114162306a36Sopenharmony_ci bool 114262306a36Sopenharmony_ci 114362306a36Sopenharmony_ciconfig DEBUG_ALIGN_RODATA 114462306a36Sopenharmony_ci bool "Make rodata strictly non-executable" 114562306a36Sopenharmony_ci depends on STRICT_KERNEL_RWX 114662306a36Sopenharmony_ci default y 114762306a36Sopenharmony_ci help 114862306a36Sopenharmony_ci If this is set, rodata will be made explicitly non-executable. This 114962306a36Sopenharmony_ci provides protection on the rare chance that attackers might find and 115062306a36Sopenharmony_ci use ROP gadgets that exist in the rodata section. This adds an 115162306a36Sopenharmony_ci additional section-aligned split of rodata from kernel text so it 115262306a36Sopenharmony_ci can be made explicitly non-executable. This padding may waste memory 115362306a36Sopenharmony_ci space to gain the additional protection. 1154