| # XTENSA architecture configuration options |
| |
| # Copyright (c) 2016 Cadence Design Systems, Inc. |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| menu "XTENSA Options" |
| depends on XTENSA |
| |
| config ARCH |
| default "xtensa" |
| |
| config SIMULATOR_XTENSA |
| bool "Simulator Target" |
| help |
| Enable if building to run on simulator. |
| |
| config XTENSA_RESET_VECTOR |
| bool "Build reset vector code" |
| default y |
| help |
| This option controls whether the initial reset vector code is built. |
| This is always needed for the simulator. Real boards may already |
| implement this in boot ROM. |
| |
| config XTENSA_USE_CORE_CRT1 |
| bool "Use crt1.S from core" |
| default y |
| help |
| SoC or boards might define their own __start by setting this setting |
| to false. |
| |
| config XTENSA_ENABLE_BACKTRACE |
| bool "Backtrace on panic exception" |
| default y |
| depends on SOC_SERIES_ESP32 || SOC_FAMILY_INTEL_ADSP || SOC_XTENSA_DC233C |
| help |
| Enable this config option to print backtrace on panic exception |
| |
| config XTENSA_SMALL_VECTOR_TABLE_ENTRY |
| bool "Workaround for small vector table entries" |
| help |
| This option enables a small indirection to bypass the size |
| constraint of the vector table entry and moved the default |
| handlers to the end of vector table, renaming them to |
| _Level\LVL\()VectorHelper. |
| |
| config XTENSA_RPO_CACHE |
| bool "Cached/uncached RPO mapping" |
| help |
| Support Cached/uncached RPO mapping. |
| |
| A design trick on multi-core hardware is to map memory twice |
| so that it can be seen in both (incoherent) cached mappings |
| and a coherent "shared" area. |
| |
| if XTENSA_RPO_CACHE |
| config XTENSA_CACHED_REGION |
| int "Cached RPO mapping" |
| range 0 7 |
| help |
| This specifies which 512M region (0-7, as defined by the Xtensa |
| Region Protection Option) contains the "cached" mapping. |
| |
| config XTENSA_UNCACHED_REGION |
| int "Uncached RPO mapping" |
| range 0 7 |
| help |
| As for XTENSA_CACHED_REGION, this specifies which 512M |
| region (0-7) contains the "uncached" mapping. |
| |
| endif |
| |
| config XTENSA_CCOUNT_HZ |
| int "CCOUNT cycle rate" |
| default 1000000 |
| help |
| Rate in HZ of the Xtensa core as measured by the value of |
| the CCOUNT register. |
| |
| config XTENSA_MORE_SPIN_RELAX_NOPS |
| bool "Use Xtensa specific arch_spin_relax() with more NOPs" |
| help |
| Some Xtensa SoCs, especially under SMP, may need extra |
| NOPs after failure to lock a spinlock. This gives |
| the bus extra time to synchronize the RCW transaction |
| among CPUs. |
| |
| config XTENSA_NUM_SPIN_RELAX_NOPS |
| int "Number of NOPs to be used in arch_spin_relax()" |
| default 1 |
| depends on XTENSA_MORE_SPIN_RELAX_NOPS |
| help |
| Specify the number of NOPs in Xtensa specific |
| arch_spin_relax(). |
| |
| if CPU_HAS_MMU |
| |
| config XTENSA_MMU |
| bool "Xtensa MMU Support" |
| select MMU |
| select ARCH_MEM_DOMAIN_SYNCHRONOUS_API if USERSPACE |
| select XTENSA_SMALL_VECTOR_TABLE_ENTRY |
| select KERNEL_VM_USE_CUSTOM_MEM_RANGE_CHECK if XTENSA_RPO_CACHE |
| select CURRENT_THREAD_USE_NO_TLS if USERSPACE |
| help |
| Enable support for Xtensa Memory Management Unit. |
| |
| if XTENSA_MMU |
| |
| choice |
| prompt "PageTable virtual address" |
| default XTENSA_MMU_PTEVADDR_20000000 |
| help |
| The virtual address for Xtensa page table (PTEVADDR). |
| |
| config XTENSA_MMU_PTEVADDR_20000000 |
| bool "0x20000000" |
| |
| endchoice |
| |
| config XTENSA_MMU_PTEVADDR |
| hex |
| default 0x20000000 if XTENSA_MMU_PTEVADDR_20000000 |
| help |
| The virtual address for Xtensa page table (PTEVADDR). |
| |
| config XTENSA_MMU_PTEVADDR_SHIFT |
| int |
| default 29 if XTENSA_MMU_PTEVADDR_20000000 |
| help |
| The bit shift number for the virtual address for Xtensa |
| page table (PTEVADDR). |
| |
| config XTENSA_MMU_NUM_L1_TABLES |
| int "Number of L1 page tables" |
| default 1 if !USERSPACE |
| default 4 |
| help |
| This option specifies the maximum number of traslation tables. |
| Translation tables are directly related to the number of |
| memory domains in the target, considering the kernel itself requires one. |
| |
| config XTENSA_MMU_NUM_L2_TABLES |
| int "Number of L2 page tables" |
| default 20 if USERSPACE |
| default 10 |
| help |
| Each table can address up to 4MB memory address. |
| |
| config XTENSA_MMU_DOUBLE_MAP |
| bool "Map memory in cached and uncached region" |
| help |
| This option specifies that the memory is mapped in two |
| distinct region, cached and uncached. |
| |
| config XTENSA_INVALIDATE_MEM_DOMAIN_TLB_ON_SWAP |
| bool |
| help |
| This invalidates all TLBs referred by the incoming thread's |
| memory domain when swapping page tables. |
| |
| endif # XTENSA_MMU |
| |
| config XTENSA_SYSCALL_USE_HELPER |
| bool "Use userspace syscall helper" |
| default y if "$(ZEPHYR_TOOLCHAIN_VARIANT)" = "xt-clang" |
| depends on USERSPACE |
| help |
| Use syscall helpers for passing more then 3 arguments. |
| This is a workaround for toolchains where they have |
| issue modeling register usage. |
| |
| config XTENSA_INSECURE_USERSPACE |
| bool |
| default y if USERSPACE |
| depends on XTENSA_MMU |
| |
| endif # CPU_HAS_MMU |
| |
| endmenu |