blob: 944bb959fb7e2cd82d11d16dd89e3cb836a1f5d7 [file] [log] [blame]
Ulf Magnussonbd6e0442019-11-01 13:45:29 +01001# General architecture configuration options
Juan Manuel Cruzd15251f2015-05-20 11:40:39 -05002
Juan Manuel Cruzd15251f2015-05-20 11:40:39 -05003# Copyright (c) 2014-2015 Wind River Systems, Inc.
4# Copyright (c) 2015 Intel Corporation
Mazen NEIFER1cded672017-01-13 12:14:33 +01005# Copyright (c) 2016 Cadence Design Systems, Inc.
David B. Kinderac74d8b2017-01-18 17:01:01 -08006# SPDX-License-Identifier: Apache-2.0
Juan Manuel Cruzd15251f2015-05-20 11:40:39 -05007
Ulf Magnussonec3eff52018-07-30 10:57:47 +02008# Include these first so that any properties (e.g. defaults) below can be
Anas Nashiff2cb20c2019-06-18 14:45:40 -04009# overridden (by defining symbols in multiple locations)
Ulf Magnussonec3eff52018-07-30 10:57:47 +020010
Ulf Magnussond0e87522018-09-05 12:58:05 +020011# Note: $ARCH might be a glob pattern
Klaus Petersenc66cb762018-11-15 10:37:46 +010012source "$(ARCH_DIR)/$(ARCH)/Kconfig"
Ulf Magnussonec3eff52018-07-30 10:57:47 +020013
Ulf Magnussonc5839f82020-02-06 18:26:14 +010014# Architecture symbols
15#
16# Should be 'select'ed by low-level symbols like SOC_SERIES_* or, lacking that,
17# by SOC_*.
Anas Nashif77ba3c32015-10-09 06:20:52 -040018
19config ARC
Ulf Magnussonc5839f82020-02-06 18:26:14 +010020 bool
Ulf Magnussonde42aea2020-02-07 00:48:22 +010021 select ARCH_IS_SET
Kumar Gala311e6b92018-03-14 19:16:40 -050022 select HAS_DTS
Anas Nashifce595102020-08-02 10:45:10 -040023 imply XIP
Daniel Leungc7704d82020-10-30 10:21:40 -070024 select ARCH_HAS_THREAD_LOCAL_STORAGE
Ulf Magnussonc5839f82020-02-06 18:26:14 +010025 help
26 ARC architecture
Anas Nashif77ba3c32015-10-09 06:20:52 -040027
28config ARM
Ulf Magnussonc5839f82020-02-06 18:26:14 +010029 bool
Ulf Magnussonde42aea2020-02-07 00:48:22 +010030 select ARCH_IS_SET
Daniel Leung181d0732020-08-18 12:55:08 -070031 select ARCH_SUPPORTS_COREDUMP if CPU_CORTEX_M
Kumar Gala37f91132018-11-03 07:19:18 -050032 select HAS_DTS
Andrew Boie28be7932020-03-11 10:56:19 -070033 # FIXME: current state of the code for all ARM requires this, but
34 # is really only necessary for Cortex-M with ARM MPU!
Carlo Caione3539c2f2021-03-25 11:56:15 +010035 select GEN_PRIV_STACKS
Keith Packard1638d482021-12-20 14:56:39 -080036 select ARCH_HAS_THREAD_LOCAL_STORAGE if CPU_AARCH32_CORTEX_R || CPU_CORTEX_M || CPU_AARCH32_CORTEX_A
Ulf Magnussonc5839f82020-02-06 18:26:14 +010037 help
38 ARM architecture
Anas Nashif77ba3c32015-10-09 06:20:52 -040039
Carlo Caione3539c2f2021-03-25 11:56:15 +010040config ARM64
41 bool
42 select ARCH_IS_SET
43 select 64BIT
44 select HAS_DTS
45 select HAS_ARM_SMCCC
46 select ARCH_HAS_THREAD_LOCAL_STORAGE
47 select USE_SWITCH
48 select USE_SWITCH_SUPPORTED
Nicolas Pitrebd941bc2022-03-11 21:29:06 -050049 select IRQ_OFFLOAD_NESTED if IRQ_OFFLOAD
Carlo Caione3539c2f2021-03-25 11:56:15 +010050 help
51 ARM64 (AArch64) architecture
52
Antony Pavlov03699982020-12-01 13:29:58 +030053config MIPS
54 bool
55 select ARCH_IS_SET
56 select ATOMIC_OPERATIONS_C
57 select HAS_DTS
58 help
59 MIPS architecture
60
Martin Åberg07160fa2020-10-16 20:53:59 +020061config SPARC
62 bool
63 select ARCH_IS_SET
Morten Priessa0dd44c2021-04-21 15:15:26 +020064 select HAS_DTS
Martin Åberg07160fa2020-10-16 20:53:59 +020065 select USE_SWITCH
66 select USE_SWITCH_SUPPORTED
67 select BIG_ENDIAN
68 select ATOMIC_OPERATIONS_BUILTIN if SPARC_CASA
69 select ATOMIC_OPERATIONS_C if !SPARC_CASA
Martin Åbergfeae3242020-10-27 12:31:41 +010070 select ARCH_HAS_THREAD_LOCAL_STORAGE
Martin Åberg83f733c2021-02-16 15:38:58 +010071 select ARCH_HAS_EXTRA_EXCEPTION_INFO
Martin Åberg07160fa2020-10-16 20:53:59 +020072 help
73 SPARC architecture
74
Anas Nashif77ba3c32015-10-09 06:20:52 -040075config X86
Ulf Magnussonc5839f82020-02-06 18:26:14 +010076 bool
Ulf Magnussonde42aea2020-02-07 00:48:22 +010077 select ARCH_IS_SET
Andrew Boie6a1474e2016-07-15 13:15:00 -070078 select ATOMIC_OPERATIONS_BUILTIN
Kumar Gala37f91132018-11-03 07:19:18 -050079 select HAS_DTS
Daniel Leung8fbb14e2020-08-13 19:18:52 -070080 select ARCH_SUPPORTS_COREDUMP
Andrew Boieff294e02020-06-12 16:50:16 -070081 select CPU_HAS_MMU
Andrew Boied2a72272020-10-27 11:27:37 -070082 select ARCH_MEM_DOMAIN_DATA if USERSPACE && !X86_COMMON_PAGE_TABLE
Andrew Boie00f71b02020-08-25 17:02:38 -070083 select ARCH_MEM_DOMAIN_SYNCHRONOUS_API if USERSPACE
Flavio Ceolin5408f312020-05-21 16:55:28 -070084 select ARCH_HAS_GDBSTUB if !X86_64
Anas Nashif5dec2352020-08-27 23:07:01 -040085 select ARCH_HAS_TIMING_FUNCTIONS
Daniel Leung4b383922020-09-29 15:32:35 -070086 select ARCH_HAS_THREAD_LOCAL_STORAGE
Andrew Boieed220642020-12-09 10:37:52 -080087 select ARCH_HAS_DEMAND_PAGING
Andy Ross73453a32022-02-14 14:30:34 -080088 select IRQ_OFFLOAD_NESTED if IRQ_OFFLOAD
Daniel Leung1eba3542021-03-31 14:51:58 -070089 select NEED_LIBC_MEM_PARTITION if USERSPACE && TIMING_FUNCTIONS \
90 && !BOARD_HAS_TIMING_FUNCTIONS \
91 && !SOC_HAS_TIMING_FUNCTIONS
Ulf Magnussonc5839f82020-02-06 18:26:14 +010092 help
93 x86 architecture
Anas Nashif77ba3c32015-10-09 06:20:52 -040094
Andrew Boie94338952016-04-21 14:47:09 -070095config NIOS2
Ulf Magnussonc5839f82020-02-06 18:26:14 +010096 bool
Ulf Magnussonde42aea2020-02-07 00:48:22 +010097 select ARCH_IS_SET
Andrew Boie6a1474e2016-07-15 13:15:00 -070098 select ATOMIC_OPERATIONS_C
Kumar Gala37f91132018-11-03 07:19:18 -050099 select HAS_DTS
Anas Nashifce595102020-08-02 10:45:10 -0400100 imply XIP
Anas Nashif150c82c2020-08-27 23:16:48 -0400101 select ARCH_HAS_TIMING_FUNCTIONS
Ulf Magnussonc5839f82020-02-06 18:26:14 +0100102 help
103 Nios II Gen 2 architecture
Andrew Boie94338952016-04-21 14:47:09 -0700104
Nicolas Pitre1f4b5dd2019-07-17 13:17:05 -0400105config RISCV
Ulf Magnussonc5839f82020-02-06 18:26:14 +0100106 bool
Ulf Magnussonde42aea2020-02-07 00:48:22 +0100107 select ARCH_IS_SET
Kumar Gala8ded3fb2018-11-02 13:29:59 -0500108 select HAS_DTS
Mark Holden1a697cc2021-11-12 13:21:43 -0800109 select ARCH_SUPPORTS_COREDUMP
Daniel Leung8a79ce12020-10-02 13:09:32 -0700110 select ARCH_HAS_THREAD_LOCAL_STORAGE
Nicolas Pitredf852a02022-03-14 14:51:04 -0400111 select IRQ_OFFLOAD_NESTED if IRQ_OFFLOAD
Nicolas Pitrece8dabf2022-03-07 17:01:36 -0500112 select USE_SWITCH_SUPPORTED
113 select USE_SWITCH
Ederson de Souza2aab2362022-01-05 14:33:11 -0800114 select SCHED_IPI_SUPPORTED if SMP
Anas Nashifce595102020-08-02 10:45:10 -0400115 imply XIP
Ulf Magnussonc5839f82020-02-06 18:26:14 +0100116 help
117 RISCV architecture
Jean-Paul Etiennecd83e852017-01-11 00:24:30 +0100118
Mazen NEIFER1cded672017-01-13 12:14:33 +0100119config XTENSA
Ulf Magnussonc5839f82020-02-06 18:26:14 +0100120 bool
Ulf Magnussonde42aea2020-02-07 00:48:22 +0100121 select ARCH_IS_SET
Kumar Gala31503a82019-02-01 07:52:05 -0600122 select HAS_DTS
Andrew Boie6fd6b7e2019-08-13 14:02:29 -0700123 select USE_SWITCH
124 select USE_SWITCH_SUPPORTED
Andy Ross73453a32022-02-14 14:30:34 -0800125 select IRQ_OFFLOAD_NESTED if IRQ_OFFLOAD
Andy Ross12eda762022-06-06 07:49:27 -0700126 select ARCH_HAS_TIMING_FUNCTIONS
Daniel Leung64e99df2021-04-01 11:35:31 -0700127 imply ATOMIC_OPERATIONS_ARCH
Ulf Magnussonc5839f82020-02-06 18:26:14 +0100128 help
129 Xtensa architecture
Mazen NEIFER1cded672017-01-13 12:14:33 +0100130
Alberto Escolar Piedras76f764412017-10-03 16:31:55 +0200131config ARCH_POSIX
Ulf Magnussonc5839f82020-02-06 18:26:14 +0100132 bool
Ulf Magnussonde42aea2020-02-07 00:48:22 +0100133 select ARCH_IS_SET
Kumar Galacd889022020-04-03 14:08:58 -0500134 select HAS_DTS
Alberto Escolar Piedras76f764412017-10-03 16:31:55 +0200135 select ATOMIC_OPERATIONS_BUILTIN
136 select ARCH_HAS_CUSTOM_SWAP_TO_MAIN
137 select ARCH_HAS_CUSTOM_BUSY_WAIT
138 select ARCH_HAS_THREAD_ABORT
139 select NATIVE_APPLICATION
Alberto Escolar Piedras2cd70e62019-02-03 13:04:17 +0100140 select HAS_COVERAGE_SUPPORT
Ulf Magnussonc5839f82020-02-06 18:26:14 +0100141 help
142 POSIX (native) architecture
Anas Nashif46f66f42017-09-08 21:14:06 -0400143
Ulf Magnussonde42aea2020-02-07 00:48:22 +0100144config ARCH_IS_SET
145 bool
146 help
147 Helper symbol to detect SoCs forgetting to select one of the arch
148 symbols above. See the top-level CMakeLists.txt.
149
Anas Nashif46f66f42017-09-08 21:14:06 -0400150menu "General Architecture Options"
151
Jordan Yates070422d2022-03-30 17:51:54 +1000152source "$(ARCH_DIR)/common/Kconfig"
153
Anas Nashif8e386702018-09-17 09:56:20 -0500154module = ARCH
155module-str = arch
156source "subsys/logging/Kconfig.template.log_config"
157
158module = MPU
159module-str = mpu
160source "subsys/logging/Kconfig.template.log_config"
161
Yasushi SHOJI6fc0d772018-10-09 18:59:16 +0900162config BIG_ENDIAN
Ulf Magnusson975de212019-11-01 10:24:07 +0100163 bool
164 help
165 This option tells the build system that the target system is big-endian.
166 Little-endian architecture is the default and should leave this option
167 unselected. This option is selected by arch/$ARCH/Kconfig,
168 soc/**/Kconfig, or boards/**/Kconfig and the user should generally avoid
169 modifying it. The option is used to select linker script OUTPUT_FORMAT
170 and command line option for gen_isr_tables.py.
Yasushi SHOJI6fc0d772018-10-09 18:59:16 +0900171
Nicolas Pitre9bd9b752019-05-17 15:15:24 -0400172config 64BIT
173 bool
174 help
175 This option tells the build system that the target system is
176 using a 64-bit address space, meaning that pointer and long types
177 are 64 bits wide. This option is selected by arch/$ARCH/Kconfig,
178 soc/**/Kconfig, or boards/**/Kconfig and the user should generally
179 avoid modifying it.
180
Kumar Gala8ce0cf02019-08-28 09:29:26 -0500181# Workaround for not being able to have commas in macro arguments
182DT_CHOSEN_Z_SRAM := zephyr,sram
183
Kumar Galace7ed182018-12-07 10:35:04 -0600184config SRAM_SIZE
185 int "SRAM Size in kB"
Kumar Gala22e74492019-10-23 15:15:59 -0500186 default $(dt_chosen_reg_size_int,$(DT_CHOSEN_Z_SRAM),0,K)
Kumar Galace7ed182018-12-07 10:35:04 -0600187 help
Ulf Magnussondef1f0e2019-12-26 16:08:19 +0100188 The SRAM size in kB. The default value comes from /chosen/zephyr,sram in
189 devicetree. The user should generally avoid changing it via menuconfig or
190 in configuration files.
Kumar Galace7ed182018-12-07 10:35:04 -0600191
192config SRAM_BASE_ADDRESS
193 hex "SRAM Base Address"
Kumar Gala22e74492019-10-23 15:15:59 -0500194 default $(dt_chosen_reg_addr_hex,$(DT_CHOSEN_Z_SRAM))
Kumar Galace7ed182018-12-07 10:35:04 -0600195 help
Ulf Magnussondef1f0e2019-12-26 16:08:19 +0100196 The SRAM base address. The default value comes from from
197 /chosen/zephyr,sram in devicetree. The user should generally avoid
198 changing it via menuconfig or in configuration files.
199
Carlo Caione3539c2f2021-03-25 11:56:15 +0100200if ARC || ARM || ARM64 || NIOS2 || X86
Kumar Galace7ed182018-12-07 10:35:04 -0600201
Kumar Gala8ce0cf02019-08-28 09:29:26 -0500202# Workaround for not being able to have commas in macro arguments
203DT_CHOSEN_Z_FLASH := zephyr,flash
204
Kumar Galace7ed182018-12-07 10:35:04 -0600205config FLASH_SIZE
206 int "Flash Size in kB"
Carlo Caione3539c2f2021-03-25 11:56:15 +0100207 default $(dt_chosen_reg_size_int,$(DT_CHOSEN_Z_FLASH),0,K) if (XIP && (ARM ||ARM64)) || !ARM
Kumar Galace7ed182018-12-07 10:35:04 -0600208 help
209 This option specifies the size of the flash in kB. It is normally set by
210 the board's defconfig file and the user should generally avoid modifying
211 it via the menu configuration.
212
213config FLASH_BASE_ADDRESS
214 hex "Flash Base Address"
Carlo Caione3539c2f2021-03-25 11:56:15 +0100215 default $(dt_chosen_reg_addr_hex,$(DT_CHOSEN_Z_FLASH)) if (XIP && (ARM || ARM64)) || !ARM
Kumar Galace7ed182018-12-07 10:35:04 -0600216 help
Ioannis Glaropoulos0348c532019-02-12 15:16:16 +0100217 This option specifies the base address of the flash on the board. It is
Kumar Galace7ed182018-12-07 10:35:04 -0600218 normally set by the board's defconfig file and the user should generally
219 avoid modifying it via the menu configuration.
220
Carlo Caione3539c2f2021-03-25 11:56:15 +0100221endif # ARM || ARM64 || ARC || NIOS2 || X86
Kumar Galace7ed182018-12-07 10:35:04 -0600222
Ioannis Glaropoulos1cc66cf2018-10-12 09:27:28 +0200223if ARCH_HAS_TRUSTED_EXECUTION
224
225config TRUSTED_EXECUTION_SECURE
226 bool "Trusted Execution: Secure firmware image"
227 help
228 Select this option to enable building a Secure firmware
229 image for a platform that supports Trusted Execution. A
230 Secure firmware image will execute in Secure state. It may
231 allow the CPU to execute in Non-Secure (Normal) state.
232 Therefore, a Secure firmware image shall be able to
233 configure security attributions of CPU resources (memory
234 areas, peripherals, interrupts, etc.) as well as to handle
235 faults, related to security violations. It may optionally
236 allow certain functions to be called from the Non-Secure
237 (Normal) domain.
238
239config TRUSTED_EXECUTION_NONSECURE
240 depends on !TRUSTED_EXECUTION_SECURE
241 bool "Trusted Execution: Non-Secure firmware image"
242 help
243 Select this option to enable building a Non-Secure
244 firmware image for a platform that supports Trusted
245 Execution. A Non-Secure firmware image will execute
246 in Non-Secure (Normal) state. Therefore, it shall not
247 access CPU resources (memory areas, peripherals,
248 interrupts etc.) belonging to the Secure domain.
249
250endif # ARCH_HAS_TRUSTED_EXECUTION
251
Anas Nashif46f66f42017-09-08 21:14:06 -0400252config HW_STACK_PROTECTION
253 bool "Hardware Stack Protection"
254 depends on ARCH_HAS_STACK_PROTECTION
255 help
Anas Nashif429c2a42017-12-13 10:08:21 -0500256 Select this option to enable hardware-based platform features to
257 catch stack overflows when the system is running in privileged
258 mode. If CONFIG_USERSPACE is not enabled, the system is always
259 running in privileged mode.
Andrew Boie2a8684f2017-11-06 11:42:54 -0800260
Anas Nashif429c2a42017-12-13 10:08:21 -0500261 Note that this does not necessarily prevent corruption and assertions
262 about the overall system state when a fault is triggered cannot be
263 made.
Anas Nashif46f66f42017-09-08 21:14:06 -0400264
Andrew Boie9f70c7b2017-09-11 10:34:49 -0700265config USERSPACE
Andrew Boie53b52042019-01-18 11:41:06 -0800266 bool "User mode threads"
Andrew Boie9f70c7b2017-09-11 10:34:49 -0700267 depends on ARCH_HAS_USERSPACE
Anas Nashif22b95a22019-11-24 11:28:38 -0500268 depends on RUNTIME_ERROR_CHECKS
Andrew Boie5a58ad52020-11-05 14:30:20 -0800269 depends on SRAM_REGION_PERMISSIONS
Carlo Caioned7708802020-11-12 14:44:14 +0100270 select THREAD_STACK_INFO
Andrew Boie9f70c7b2017-09-11 10:34:49 -0700271 help
Anas Nashif429c2a42017-12-13 10:08:21 -0500272 When enabled, threads may be created or dropped down to user mode,
273 which has significantly restricted permissions and must interact
274 with the kernel via system calls. See Zephyr documentation for more
Dominik Ermel86a12522021-07-15 10:08:48 +0000275 details about this feature.
Andrew Boie9f70c7b2017-09-11 10:34:49 -0700276
Anas Nashif429c2a42017-12-13 10:08:21 -0500277 If a user thread overflows its stack, this will be caught and the
278 kernel itself will be shielded from harm. Enabling this option
279 may or may not catch stack overflows when the system is in
280 privileged mode or handling a system call; to ensure these are always
281 caught, enable CONFIG_HW_STACK_PROTECTION.
Andrew Boie2a8684f2017-11-06 11:42:54 -0800282
Chunlin Han18560a02018-02-01 01:19:49 -0600283config PRIVILEGED_STACK_SIZE
284 int "Size of privileged stack"
Andrew Boie606e6072019-03-28 16:48:43 -0700285 default 1024
Chunlin Han18560a02018-02-01 01:19:49 -0600286 depends on ARCH_HAS_USERSPACE
287 help
Anas Nashif89492332018-02-15 07:36:16 -0600288 This option sets the privileged stack region size that will be used
289 in addition to the user mode thread stack. During normal execution,
290 this region will be inaccessible from user mode. During system calls,
Andrew Boie28be7932020-03-11 10:56:19 -0700291 this region will be utilized by the system call. This value must be
292 a multiple of the minimum stack alignment.
Anas Nashifeb299782018-10-07 11:41:18 -0400293
294config KOBJECT_TEXT_AREA
Daniel Leung11171692021-03-18 14:00:07 -0700295 int "Size of kobject text area"
Adithya Baglody71e90f92018-08-29 16:44:16 +0530296 default 512 if COVERAGE_GCOV
Sebastian Bøeefc6d0a2019-03-15 10:54:06 +0100297 default 512 if NO_OPTIMIZATIONS
Alexandre Mergnat4b976192020-10-29 19:20:06 +0100298 default 512 if STACK_CANARIES && RISCV
Andrew Boie794d3822019-02-20 14:49:36 -0800299 default 256
Anas Nashifeb299782018-10-07 11:41:18 -0400300 depends on ARCH_HAS_USERSPACE
301 help
302 Size of kernel object text area. Used in linker script.
303
Daniel Leung11171692021-03-18 14:00:07 -0700304config KOBJECT_DATA_AREA_RESERVE_EXTRA_PERCENT
305 int "Reserve extra kobject data area (in percentage)"
306 default 100
307 depends on ARCH_HAS_USERSPACE
308 help
309 Multiplication factor used to calculate the size of placeholder to
310 reserve space for kobject metadata hash table. The hash table is
311 generated via gperf is highly dependent on the absolute addresses of
312 kobjects which might change between prebuilts. To reserve enough
313 space for the hash table during final linking passes to keep
314 kobjects in same place, the size of reserved space is calculated
315 from the first prebuilt plus additional space calculated with
316 this percentage (of the kobject data area in first prebuilt).
317
318config KOBJECT_RODATA_AREA_EXTRA_BYTES
319 int "Reserve extra bytes for kobject rodata area"
320 default 16
321 depends on ARCH_HAS_USERSPACE
322 help
323 Reserve a few more bytes for the RODATA region for kobject metadata.
324 This is to account for the uncertainty of tables generated by gperf.
325
Andrew Boie28be7932020-03-11 10:56:19 -0700326config GEN_PRIV_STACKS
327 bool
328 help
329 Selected if the architecture requires that privilege elevation stacks
330 be allocated in a separate memory area. This is typical of arches
331 whose MPUs require regions to be power-of-two aligned/sized.
332
333 FIXME: This should be removed and replaced with checks against
334 CONFIG_MPU_REQUIRES_POWER_OF_TWO_ALIGNMENT, but both ARM and ARC
335 changes will be necessary for this.
336
Andrew Boiea9679152018-03-06 13:17:57 -0800337config STACK_GROWS_UP
338 bool "Stack grows towards higher memory addresses"
Andrew Boiea9679152018-03-06 13:17:57 -0800339 help
340 Select this option if the architecture has upward growing thread
341 stacks. This is not common.
342
Andrew Boieefc5fe02020-02-05 10:41:58 -0800343config NO_UNUSED_STACK_INSPECTION
344 bool
345 help
346 Selected if the architecture will generate a fault if unused stack
347 memory is examined, which is the region between the current stack
348 pointer and the deepest available address in the current stack
349 region.
350
Andrew Boie9f70c7b2017-09-11 10:34:49 -0700351config MAX_THREAD_BYTES
352 int "Bytes to use when tracking object thread permissions"
353 default 2
354 depends on USERSPACE
355 help
Anas Nashif429c2a42017-12-13 10:08:21 -0500356 Every kernel object will have an associated bitfield to store
357 thread permissions for that object. This controls the size of the
358 bitfield (in bytes) and imposes a limit on how many threads can
359 be created in the system.
Andrew Boie9f70c7b2017-09-11 10:34:49 -0700360
Andrew Boie31bdfc02017-11-08 16:38:03 -0800361config DYNAMIC_OBJECTS
Andrew Boie97bf0012018-04-24 17:01:37 -0700362 bool "Allow kernel objects to be allocated at runtime"
Andrew Boie31bdfc02017-11-08 16:38:03 -0800363 depends on USERSPACE
Andrew Boie31bdfc02017-11-08 16:38:03 -0800364 help
Ulf Magnusson975de212019-11-01 10:24:07 +0100365 Enabling this option allows for kernel objects to be requested from
366 the calling thread's resource pool, at a slight cost in performance
367 due to the supplemental run-time tables required to validate such
368 objects.
Andrew Boie97bf0012018-04-24 17:01:37 -0700369
Ulf Magnusson975de212019-11-01 10:24:07 +0100370 Objects allocated in this way can be freed with a supervisor-only
371 API call, or when the number of references to that object drops to
372 zero.
Andrew Boie31bdfc02017-11-08 16:38:03 -0800373
Aurelien Jarno6fd16912018-11-07 23:40:43 +0100374config NOCACHE_MEMORY
375 bool "Support for uncached memory"
Ulf Magnusson378d6b12020-02-09 22:26:07 +0100376 depends on ARCH_HAS_NOCACHE_MEMORY_SUPPORT
Aurelien Jarno6fd16912018-11-07 23:40:43 +0100377 help
378 Add a "nocache" read-write memory section that is configured to
379 not be cached. This memory section can be used to perform DMA
380 transfers when cache coherence issues are not optimal or can not
381 be solved using cache maintenance operations.
382
Anas Nashif8379b7b2017-09-09 08:39:38 -0400383menu "Interrupt Configuration"
Ulf Magnusson41713242019-12-21 08:17:02 +0100384
Andrew Boieff6cce62018-10-30 16:53:56 -0700385config DYNAMIC_INTERRUPTS
Gerard Marull-Paretas95fb0de2022-03-09 12:05:12 +0100386 bool "Installation of IRQs at runtime"
Andrew Boieff6cce62018-10-30 16:53:56 -0700387 help
388 Enable installation of interrupts at runtime, which will move some
389 interrupt-related data structures to RAM instead of ROM, and
390 on some architectures increase code size.
391
Anas Nashif8379b7b2017-09-09 08:39:38 -0400392config GEN_ISR_TABLES
Ulf Magnusson8cf8db32018-08-14 16:19:20 +0200393 bool "Use generated IRQ tables"
Anas Nashif8379b7b2017-09-09 08:39:38 -0400394 help
Anas Nashif429c2a42017-12-13 10:08:21 -0500395 This option controls whether a platform uses the gen_isr_tables
396 script to generate its interrupt tables. This mechanism will create
397 an appropriate hardware vector table and/or software IRQ table.
Anas Nashif8379b7b2017-09-09 08:39:38 -0400398
399config GEN_IRQ_VECTOR_TABLE
Ulf Magnusson8cf8db32018-08-14 16:19:20 +0200400 bool "Generate an interrupt vector table"
Anas Nashif8379b7b2017-09-09 08:39:38 -0400401 default y
402 depends on GEN_ISR_TABLES
403 help
Anas Nashif429c2a42017-12-13 10:08:21 -0500404 This option controls whether a platform using gen_isr_tables
405 needs an interrupt vector table created. Only disable this if the
406 platform does not use a vector table at all, or requires the vector
407 table to be in a format that is not an array of function pointers
408 indexed by IRQ line. In the latter case, the vector table must be
409 supplied by the application or architecture code.
Anas Nashif8379b7b2017-09-09 08:39:38 -0400410
411config GEN_SW_ISR_TABLE
Ulf Magnusson8cf8db32018-08-14 16:19:20 +0200412 bool "Generate a software ISR table"
Anas Nashif8379b7b2017-09-09 08:39:38 -0400413 default y
414 depends on GEN_ISR_TABLES
415 help
Anas Nashif429c2a42017-12-13 10:08:21 -0500416 This option controls whether a platform using gen_isr_tables
417 needs a software ISR table table created. This is an array of struct
418 _isr_table_entry containing the interrupt service routine and supplied
419 parameter.
Anas Nashif8379b7b2017-09-09 08:39:38 -0400420
Yasushi SHOJI51bc0a02019-06-20 18:28:37 +0900421config ARCH_SW_ISR_TABLE_ALIGN
422 int "Alignment size of a software ISR table"
423 default 0
424 depends on GEN_SW_ISR_TABLE
425 help
426 This option controls alignment size of generated
427 _sw_isr_table. Some architecture needs a software ISR table
428 to be aligned to architecture specific size. The default
429 size is 0 for no alignment.
430
Anas Nashif8379b7b2017-09-09 08:39:38 -0400431config GEN_IRQ_START_VECTOR
432 int
433 default 0
434 depends on GEN_ISR_TABLES
435 help
Anas Nashif429c2a42017-12-13 10:08:21 -0500436 On some architectures, part of the vector table may be reserved for
437 system exceptions and is declared separately from the tables
438 created by gen_isr_tables.py. When creating these tables, this value
439 will be subtracted from CONFIG_NUM_IRQS to properly size them.
440 This is a hidden option which needs to be set per architecture and
441 left alone.
Anas Nashif8379b7b2017-09-09 08:39:38 -0400442
Anas Nashifa372eae2017-11-23 12:05:55 -0500443config IRQ_OFFLOAD
Gerard Marull-Paretas95fb0de2022-03-09 12:05:12 +0100444 bool "IRQ offload"
Andrew Boiebeba1e02019-11-07 10:33:09 -0800445 depends on TEST
Anas Nashifa372eae2017-11-23 12:05:55 -0500446 help
447 Enable irq_offload() API which allows functions to be synchronously
Andrew Boiebeba1e02019-11-07 10:33:09 -0800448 run in interrupt context. Only useful for test cases that need
449 to validate the correctness of kernel objects in IRQ context.
Anas Nashifa372eae2017-11-23 12:05:55 -0500450
Andy Ross73453a32022-02-14 14:30:34 -0800451config IRQ_OFFLOAD_NESTED
452 bool "irq_offload() supports nested IRQs"
453 depends on IRQ_OFFLOAD
454 help
455 When set by the arch layer, indicates that irq_offload() may
456 legally be called in interrupt context to cause a
457 synchronous nested interrupt on the current CPU. Not all
458 hardware is capable.
Chris Coleman99a268f2020-08-28 09:02:20 -0400459
460config EXTRA_EXCEPTION_INFO
461 bool "Collect extra exception info"
462 depends on ARCH_HAS_EXTRA_EXCEPTION_INFO
463 help
464 This option enables the collection of extra information, such as
465 register state, when a fault occurs. This information can be useful
466 to collect for post-mortem analysis and debug of issues.
467
Anas Nashif8379b7b2017-09-09 08:39:38 -0400468endmenu # Interrupt configuration
469
Ioannis Glaropoulos20a98482020-10-21 15:48:41 +0200470config INIT_ARCH_HW_AT_BOOT
471 bool "Initialize internal architecture state at boot"
472 depends on ARCH_SUPPORTS_ARCH_HW_INIT
473 help
474 This option instructs Zephyr to force the initialization
475 of the internal architectural state (for example ARCH-level
476 HW registers and system control blocks) during boot to
477 the reset values as specified by the corresponding
478 architecture manual. The option is useful when the Zephyr
479 firmware image is chain-loaded, for example, by a debugger
480 or a bootloader, and we need to guarantee that the internal
481 states of the architecture core blocks are restored to the
482 reset values (as specified by the architecture).
483
484 Note: the functionality is architecture-specific. For the
485 implementation details refer to each architecture where
486 this feature is supported.
487
Anas Nashif46f66f42017-09-08 21:14:06 -0400488endmenu
489
Anas Nashif8379b7b2017-09-09 08:39:38 -0400490#
491# Architecture Capabilities
492#
Ulf Magnusson41713242019-12-21 08:17:02 +0100493
Ioannis Glaropoulos40842422021-05-19 17:45:25 +0200494config ARCH_HAS_SINGLE_THREAD_SUPPORT
495 bool
496
Anas Nashif5dec2352020-08-27 23:07:01 -0400497config ARCH_HAS_TIMING_FUNCTIONS
498 bool
499
Ioannis Glaropoulos1cc66cf2018-10-12 09:27:28 +0200500config ARCH_HAS_TRUSTED_EXECUTION
501 bool
502
Anas Nashif46f66f42017-09-08 21:14:06 -0400503config ARCH_HAS_STACK_PROTECTION
504 bool
505
Andrew Boie9f70c7b2017-09-11 10:34:49 -0700506config ARCH_HAS_USERSPACE
507 bool
508
Leandro Pereirab007b642017-10-17 17:01:48 -0700509config ARCH_HAS_EXECUTABLE_PAGE_BIT
510 bool
511
Aurelien Jarno6fd16912018-11-07 23:40:43 +0100512config ARCH_HAS_NOCACHE_MEMORY_SUPPORT
513 bool
514
Aurelien Jarno992f29a2019-02-10 11:05:51 +0100515config ARCH_HAS_RAMFUNC_SUPPORT
516 bool
517
Ioannis Glaropoulosf0306082019-10-17 19:13:12 +0200518config ARCH_HAS_NESTED_EXCEPTION_DETECTION
519 bool
520
Daniel Leung49206a82020-08-07 10:47:37 -0700521config ARCH_SUPPORTS_COREDUMP
522 bool
523
Ioannis Glaropoulos20a98482020-10-21 15:48:41 +0200524config ARCH_SUPPORTS_ARCH_HW_INIT
525 bool
526
Chris Coleman99a268f2020-08-28 09:02:20 -0400527config ARCH_HAS_EXTRA_EXCEPTION_INFO
528 bool
529
Flavio Ceolin5408f312020-05-21 16:55:28 -0700530config ARCH_HAS_GDBSTUB
531 bool
532
Andy Rossf6d32ab2020-05-13 15:34:04 +0000533config ARCH_HAS_COHERENCE
534 bool
535 help
536 When selected, the architecture supports the
537 arch_mem_coherent() API and can link into incoherent/cached
538 memory using the ".cached" linker section.
539
Daniel Leung240beb42020-09-28 11:03:52 -0700540config ARCH_HAS_THREAD_LOCAL_STORAGE
541 bool
542
Ramesh Thomasbb19e6f2016-03-18 16:43:40 -0700543#
Anas Nashiff4ddb622017-12-05 09:07:39 -0500544# Other architecture related options
545#
546
547config ARCH_HAS_THREAD_ABORT
548 bool
549
Ulf Magnusson41713242019-12-21 08:17:02 +0100550#
551# Hidden CPU family configs
Anas Nashif9c1da0d2017-11-23 17:43:54 -0500552#
553
Ioannis Glaropoulos1cc66cf2018-10-12 09:27:28 +0200554config CPU_HAS_TEE
555 bool
556 help
557 This option is enabled when the CPU has support for Trusted
558 Execution Environment (e.g. when it has a security attribution
559 unit).
560
Stephanos Ioannidisbc8524e2019-10-09 00:52:18 +0900561config CPU_HAS_DCLS
562 bool
563 help
564 This option is enabled when the processor hardware is configured in
565 Dual-redundant Core Lock-step (DCLS) topology.
566
Anas Nashif9c1da0d2017-11-23 17:43:54 -0500567config CPU_HAS_FPU
568 bool
Anas Nashif9c1da0d2017-11-23 17:43:54 -0500569 help
570 This option is enabled when the CPU has hardware floating point
571 unit.
572
Corey Whartonc8f7cd52020-04-14 11:06:23 -0700573config CPU_HAS_FPU_DOUBLE_PRECISION
574 bool
575 select CPU_HAS_FPU
576 help
577 When enabled, this indicates that the CPU has a double floating point
578 precision unit.
579
Anas Nashif9c1da0d2017-11-23 17:43:54 -0500580config CPU_HAS_MPU
581 bool
Anas Nashif9c1da0d2017-11-23 17:43:54 -0500582 help
583 This option is enabled when the CPU has a Memory Protection Unit (MPU).
584
Andrew Boieff294e02020-06-12 16:50:16 -0700585config CPU_HAS_MMU
586 bool
587 help
588 This hidden option is selected when the CPU has a Memory Management Unit
589 (MMU).
Andrew Boie5a58ad52020-11-05 14:30:20 -0800590
Andrew Boie56a9e7b2020-11-16 11:30:35 -0800591config ARCH_HAS_DEMAND_PAGING
592 bool
593 help
594 This hidden configuration should be selected by the architecture if
595 demand paging is supported.
596
Andrew Boie73a3e052020-11-18 13:11:56 -0800597config ARCH_HAS_RESERVED_PAGE_FRAMES
598 bool
599 help
600 This hidden configuration should be selected by the architecture if
601 certain RAM page frames need to be marked as reserved and never used for
602 memory mappings. The architecture will need to implement
603 arch_reserved_pages_update().
604
Andrew Boie14c5d1f2021-01-23 14:08:12 -0800605config ARCH_MAPS_ALL_RAM
606 bool
607 help
608 This hidden option is selected by the architecture to inform the kernel
609 that all RAM is mapped at boot, and not just the bounds of the Zephyr image.
610 If RAM starts at 0x0, the first page must remain un-mapped to catch NULL
611 pointer dereferences. With this enabled, the kernel will not assume that
612 virtual memory addresses past the kernel image are available for mappings,
613 but instead takes into account an entire RAM mapping instead.
614
615 This is typically set by architectures which need direct access to all memory.
616 It is the architecture's responsibility to mark reserved memory regions
617 as such in arch_reserved_pages_update().
618
619 Although the kernel will not disturb this RAM mapping by re-mapping the associated
620 virtual addresses elsewhere, this is limited to only management of the
621 virtual address space. The kernel's page frame ontology will not consider
622 this mapping at all; non-kernel pages will be considered free (unless marked
623 as reserved) and Z_PAGE_FRAME_MAPPED will not be set.
624
Andrew Boie5a58ad52020-11-05 14:30:20 -0800625menuconfig MPU
Gerard Marull-Paretas95fb0de2022-03-09 12:05:12 +0100626 bool "MPU features"
Andrew Boie5a58ad52020-11-05 14:30:20 -0800627 depends on CPU_HAS_MPU
Ioannis Glaropoulos39bf24a2018-11-27 15:45:36 +0100628 help
Andrew Boie5a58ad52020-11-05 14:30:20 -0800629 This option, when enabled, indicates to the core kernel that an MPU
630 is enabled.
Ioannis Glaropoulos39bf24a2018-11-27 15:45:36 +0100631
Andrew Boie5a58ad52020-11-05 14:30:20 -0800632if MPU
Andy Grosse8860fe2018-02-01 01:12:32 -0600633config MPU_REQUIRES_POWER_OF_TWO_ALIGNMENT
634 bool
Andy Grosse8860fe2018-02-01 01:12:32 -0600635 help
Anas Nashif89492332018-02-15 07:36:16 -0600636 This option is enabled when the MPU requires a power of two alignment
637 and size for MPU regions.
Andy Grosse8860fe2018-02-01 01:12:32 -0600638
Ioannis Glaropoulosafa78192018-09-25 14:05:56 +0200639config MPU_REQUIRES_NON_OVERLAPPING_REGIONS
640 bool
Ioannis Glaropoulosafa78192018-09-25 14:05:56 +0200641 help
642 This option is enabled when the MPU requires the active (i.e. enabled)
643 MPU regions to be non-overlapping with each other.
Andy Grosse8860fe2018-02-01 01:12:32 -0600644
Ioannis Glaropoulos6d789512019-10-24 15:17:09 +0200645config MPU_GAP_FILLING
646 bool "Force MPU to be filling in background memory regions"
647 depends on MPU_REQUIRES_NON_OVERLAPPING_REGIONS
Ioannis Glaropoulos98201222019-11-11 12:46:31 +0100648 default y if !USERSPACE
Ioannis Glaropoulos6d789512019-10-24 15:17:09 +0200649 help
650 This Kconfig option instructs the MPU driver to enforce
651 a full kernel SRAM partitioning, when it programs the
652 dynamic MPU regions (user thread stack, PRIV stack guard
653 and application memory domains) during context-switch. We
654 allow this to be a configurable option, in order to be able
655 to switch the option off and have an increased number of MPU
656 regions available for application memory domain programming.
657
658 Notes:
659 An increased number of MPU regions should only be required,
Ioannis Glaropoulos98201222019-11-11 12:46:31 +0100660 when building with USERSPACE support. As a result, when we
661 build without USERSPACE support, gap filling should always
662 be required.
Ioannis Glaropoulos6d789512019-10-24 15:17:09 +0200663
664 When the option is switched off, access to memory areas not
665 covered by explicit MPU regions is restricted to privileged
666 code on an ARCH-specific basis. Refer to ARCH-specific
667 documentation for more information on how this option is
668 used.
669
Andrew Boie5a58ad52020-11-05 14:30:20 -0800670endif # MPU
671
672config SRAM_REGION_PERMISSIONS
673 bool "Assign appropriate permissions to kernel areas in SRAM"
674 depends on MMU || MPU
675 default y
676 help
677 This option indicates that memory protection hardware
678 is present, enabled, and regions have been configured at boot for memory
679 ranges within the kernel image.
680
681 If this option is turned on, certain areas of the kernel image will
682 have the following access policies applied for all threads, including
683 supervisor threads:
684
685 1) All program text will be have read-only, execute memory permission
686 2) All read-only data will have read-only permission, and execution
687 disabled if the hardware supports it.
688 3) All other RAM addresses will have read-write permission, and
689 execution disabled if the hardware supports it.
690
691 Options such as USERSPACE or HW_STACK_PROTECTION may additionally
692 impose additional policies on the memory map, which may be global
693 or local to the current running thread.
694
695 This option may consume additional memory to satisfy memory protection
696 hardware alignment constraints.
697
698 If this option is disabled, the entire kernel will have default memory
699 access permissions set, typically read/write/execute. It may be desirable
700 to turn this off on MMU systems which are using the MMU for demand
701 paging, do not need memory protection, and would rather not use up
702 RAM for the alignment between regions.
703
Stephanos Ioannidis4f4e85c2020-04-24 14:06:37 +0900704menu "Floating Point Options"
705
706config FPU
Gerard Marull-Paretas95fb0de2022-03-09 12:05:12 +0100707 bool "Floating point unit (FPU)"
Sebastian Bøe7201a1b2018-12-27 16:13:25 +0100708 depends on CPU_HAS_FPU
Anas Nashif9c1da0d2017-11-23 17:43:54 -0500709 help
Stephanos Ioannidis4f4e85c2020-04-24 14:06:37 +0900710 This option enables the hardware Floating Point Unit (FPU), in order to
711 support using the floating point registers and instructions.
Anas Nashif9c1da0d2017-11-23 17:43:54 -0500712
Stephanos Ioannidis4f4e85c2020-04-24 14:06:37 +0900713 When this option is enabled, by default, threads may use the floating
714 point registers only in an exclusive manner, and this usually means that
715 only one thread may perform floating point operations.
716
717 If it is necessary for multiple threads to perform concurrent floating
718 point operations, the "FPU register sharing" option must be enabled to
719 preserve the floating point registers across context switches.
720
721 Note that this option cannot be selected for the platforms that do not
722 include a hardware floating point unit; the floating point support for
723 those platforms is dependent on the availability of the toolchain-
724 provided software floating point library.
Anas Nashif9c1da0d2017-11-23 17:43:54 -0500725
Stephanos Ioannidisaaf93202020-05-03 18:03:19 +0900726config FPU_SHARING
Stephanos Ioannidis4f4e85c2020-04-24 14:06:37 +0900727 bool "FPU register sharing"
Ioannis Glaropoulos86c1b572021-01-27 14:24:59 +0100728 depends on FPU && MULTITHREADING
Anas Nashif9c1da0d2017-11-23 17:43:54 -0500729 help
Stephanos Ioannidis4f4e85c2020-04-24 14:06:37 +0900730 This option enables preservation of the hardware floating point registers
731 across context switches to allow multiple threads to perform concurrent
732 floating point operations.
733
Nicolas Pitre949ef7c2021-04-07 21:41:06 -0400734 Note that some compiler configurations may activate a floating point
735 context by generating FP instructions for any thread, and that
736 context must be preserved when switching such threads in and out.
737 The developers can still disable the FP sharing mode in their
738 application projects, and switch to Unshared FP registers mode,
739 if it is guaranteed that the image code does not generate FP
740 instructions outside the single thread context that is allowed
741 to do so.
Ioannis Glaropoulos86c1b572021-01-27 14:24:59 +0100742
Stephanos Ioannidis4f4e85c2020-04-24 14:06:37 +0900743endmenu
Anas Nashif9c1da0d2017-11-23 17:43:54 -0500744
Carlo Caione923b3be2020-12-02 13:05:37 +0100745menu "Cache Options"
746
Lukasz Majewskif4f9a822022-04-08 12:29:28 +0200747config DCACHE
748 bool "Data cache support"
749 default y
750 help
751 This option enables data cache (d-cache).
752
Carlo Caione20f59c82020-12-03 10:49:00 +0100753config CACHE_MANAGEMENT
Gerard Marull-Paretas95fb0de2022-03-09 12:05:12 +0100754 bool "Cache management features"
Carlo Caione923b3be2020-12-02 13:05:37 +0100755 help
Carlo Caione20f59c82020-12-03 10:49:00 +0100756 This links in the cache management functions (for d-cache and i-cache
757 where possible).
Carlo Caione923b3be2020-12-02 13:05:37 +0100758
Carlo Caionee77c8412020-12-02 12:38:58 +0100759config DCACHE_LINE_SIZE_DETECT
760 bool "Detect d-cache line size at runtime"
761 depends on CACHE_MANAGEMENT
762 help
763 This option enables querying some architecture-specific hardware for
764 finding the d-cache line size at the expense of taking more memory and
765 code and a slightly increased boot time.
766
767 If the CPU's d-cache line size is known in advance, disable this option and
768 manually enter the value for DCACHE_LINE_SIZE or set it in the DT
769 using the 'd-cache-line-size' property.
770
771config DCACHE_LINE_SIZE
772 int "d-cache line size" if !DCACHE_LINE_SIZE_DETECT
773 depends on CACHE_MANAGEMENT
774 default 0
775 help
776 Size in bytes of a CPU d-cache line. If this is set to 0 the value is
777 obtained from the 'd-cache-line-size' DT property instead if present.
778
779
780 Detect automatically at runtime by selecting DCACHE_LINE_SIZE_DETECT.
781
782config ICACHE_LINE_SIZE_DETECT
783 bool "Detect i-cache line size at runtime"
784 depends on CACHE_MANAGEMENT
785 help
786 This option enables querying some architecture-specific hardware for
787 finding the i-cache line size at the expense of taking more memory and
788 code and a slightly increased boot time.
789
790 If the CPU's i-cache line size is known in advance, disable this option and
791 manually enter the value for ICACHE_LINE_SIZE or set it in the DT
792 using the 'i-cache-line-size' property.
793
794config ICACHE_LINE_SIZE
795 int "i-cache line size" if !ICACHE_LINE_SIZE_DETECT
796 depends on CACHE_MANAGEMENT
797 default 0
798 help
799 Size in bytes of a CPU i-cache line. If this is set to 0 the value is
800 obtained from the 'i-cache-line-size' DT property instead if present.
801
802 Detect automatically at runtime by selecting ICACHE_LINE_SIZE_DETECT.
803
Dylan Hungb61ea622021-07-13 15:20:47 +0800804choice CACHE_TYPE
Carlo Caionee2333262021-04-28 10:38:27 +0200805 prompt "Cache type"
806 depends on CACHE_MANAGEMENT
807 default HAS_ARCH_CACHE
808
809config HAS_ARCH_CACHE
810 bool "Integrated cache controller"
811 help
Nazar Kazakovf483b1b2022-03-16 21:07:43 +0000812 "Integrated on-core cache controller"
Carlo Caionee2333262021-04-28 10:38:27 +0200813
814config HAS_EXTERNAL_CACHE
815 bool "External cache controller"
816 help
817 "External cache controller or cache management system"
818
819endchoice
820
Carlo Caione923b3be2020-12-02 13:05:37 +0100821endmenu
822
Anas Nashif77ba3c32015-10-09 06:20:52 -0400823config ARCH
824 string
825 help
Anas Nashif429c2a42017-12-13 10:08:21 -0500826 System architecture string.
Anas Nashif77ba3c32015-10-09 06:20:52 -0400827
828config SOC
Anas Nashifa02c34e2016-03-31 08:07:42 -0400829 string
830 help
Anas Nashif57444372018-09-03 15:44:13 -0500831 SoC name which can be found under soc/<arch>/<soc name>.
Anas Nashif429c2a42017-12-13 10:08:21 -0500832 This option holds the directory name used by the build system to locate
Marti Bolivar5ec7ed82018-11-21 14:42:47 -0500833 the correct linker and header files for the SoC.
Anas Nashifa02c34e2016-03-31 08:07:42 -0400834
835config SOC_SERIES
836 string
837 help
Anas Nashif57444372018-09-03 15:44:13 -0500838 SoC series name which can be found under soc/<arch>/<family>/<series>.
Anas Nashif429c2a42017-12-13 10:08:21 -0500839 This option holds the directory name used by the build system to locate
840 the correct linker and header files.
Anas Nashifa02c34e2016-03-31 08:07:42 -0400841
842config SOC_FAMILY
843 string
844 help
Anas Nashif57444372018-09-03 15:44:13 -0500845 SoC family name which can be found under soc/<arch>/<family>.
Anas Nashif429c2a42017-12-13 10:08:21 -0500846 This option holds the directory name used by the build system to locate
847 the correct linker and header files.
Anas Nashif66233112015-11-29 19:47:21 -0500848
Daniel Leung783b2072021-04-23 20:52:38 -0700849config TOOLCHAIN_HAS_BUILTIN_FFS
850 bool
851 default y if !(64BIT && RISCV)
852 help
853 Hidden option to signal that toolchain has __builtin_ffs*().