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 Configuration"
	help
	  Specify if the board configuration should be treated as a simulator.

config SYS_CLOCK_HW_CYCLES_PER_SEC
	prompt "Hardware clock cycles per second, 2000000 for ISS"
	default 2000000
	range 1000000 1000000000
	help
	  This option specifies hardware clock.

config XTENSA_NO_IPC
	bool "Core has no IPC support"
	select ATOMIC_OPERATIONS_C
	help
	  Uncheck this if your core does not implement "SCOMPARE1" register and "s32c1i"
	  instruction.

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_ESP32 || SOC_FAMILY_INTEL_ADSP
	help
	  Enable this config option to print backtrace on panic exception

config XTENSA_CPU_IDLE_SPIN
	bool "Use busy loop for k_cpu_idle"
	help
	  Use a spin loop instead of WAITI for the CPU idle state.

config XTENSA_WAITI_BUG
	bool "Workaround sequence for WAITI bug on LX6"
	help
	  SOF traditionally contains this workaround on its ADSP
	  platforms which prefixes a WAITI entry with 128 NOP
	  instructions followed by an ISYNC and EXTW.

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.

if CPU_HAS_MMU

config XTENSA_MMU
	bool "Xtensa MMU Support"
	default n
	select MMU
	select XTENSA_SMALL_VECTOR_TABLE_ENTRY
	help
	  Enable support for Xtensa Memory Management Unit.

if XTENSA_MMU

	choice
		prompt "PageTable virtual adddress"
		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_L2_TABLES
		int "Number of L2 page tables"
		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"
		default n
		help
			This option specifies that the memory is mapped in two
			distinct region, cached and uncached.

endif # XTENSA_MMU

endif # CPU_HAS_MMU

endmenu