Linux Audio

Check our new training course

Loading...
# 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