162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ciconfig XTENSA
362306a36Sopenharmony_ci	def_bool y
462306a36Sopenharmony_ci	select ARCH_32BIT_OFF_T
562306a36Sopenharmony_ci	select ARCH_HAS_BINFMT_FLAT if !MMU
662306a36Sopenharmony_ci	select ARCH_HAS_CURRENT_STACK_POINTER
762306a36Sopenharmony_ci	select ARCH_HAS_DEBUG_VM_PGTABLE
862306a36Sopenharmony_ci	select ARCH_HAS_DMA_PREP_COHERENT if MMU
962306a36Sopenharmony_ci	select ARCH_HAS_GCOV_PROFILE_ALL
1062306a36Sopenharmony_ci	select ARCH_HAS_KCOV
1162306a36Sopenharmony_ci	select ARCH_HAS_SYNC_DMA_FOR_CPU if MMU
1262306a36Sopenharmony_ci	select ARCH_HAS_SYNC_DMA_FOR_DEVICE if MMU
1362306a36Sopenharmony_ci	select ARCH_HAS_DMA_SET_UNCACHED if MMU
1462306a36Sopenharmony_ci	select ARCH_HAS_STRNCPY_FROM_USER if !KASAN
1562306a36Sopenharmony_ci	select ARCH_HAS_STRNLEN_USER
1662306a36Sopenharmony_ci	select ARCH_USE_MEMTEST
1762306a36Sopenharmony_ci	select ARCH_USE_QUEUED_RWLOCKS
1862306a36Sopenharmony_ci	select ARCH_USE_QUEUED_SPINLOCKS
1962306a36Sopenharmony_ci	select ARCH_WANT_IPC_PARSE_VERSION
2062306a36Sopenharmony_ci	select BUILDTIME_TABLE_SORT
2162306a36Sopenharmony_ci	select CLONE_BACKWARDS
2262306a36Sopenharmony_ci	select COMMON_CLK
2362306a36Sopenharmony_ci	select DMA_NONCOHERENT_MMAP if MMU
2462306a36Sopenharmony_ci	select GENERIC_ATOMIC64
2562306a36Sopenharmony_ci	select GENERIC_IRQ_SHOW
2662306a36Sopenharmony_ci	select GENERIC_LIB_CMPDI2
2762306a36Sopenharmony_ci	select GENERIC_LIB_MULDI3
2862306a36Sopenharmony_ci	select GENERIC_LIB_UCMPDI2
2962306a36Sopenharmony_ci	select GENERIC_PCI_IOMAP
3062306a36Sopenharmony_ci	select GENERIC_SCHED_CLOCK
3162306a36Sopenharmony_ci	select GENERIC_IOREMAP if MMU
3262306a36Sopenharmony_ci	select HAVE_ARCH_AUDITSYSCALL
3362306a36Sopenharmony_ci	select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL
3462306a36Sopenharmony_ci	select HAVE_ARCH_KASAN if MMU && !XIP_KERNEL
3562306a36Sopenharmony_ci	select HAVE_ARCH_KCSAN
3662306a36Sopenharmony_ci	select HAVE_ARCH_SECCOMP_FILTER
3762306a36Sopenharmony_ci	select HAVE_ARCH_TRACEHOOK
3862306a36Sopenharmony_ci	select HAVE_ASM_MODVERSIONS
3962306a36Sopenharmony_ci	select HAVE_CONTEXT_TRACKING_USER
4062306a36Sopenharmony_ci	select HAVE_DEBUG_KMEMLEAK
4162306a36Sopenharmony_ci	select HAVE_DMA_CONTIGUOUS
4262306a36Sopenharmony_ci	select HAVE_EXIT_THREAD
4362306a36Sopenharmony_ci	select HAVE_FUNCTION_TRACER
4462306a36Sopenharmony_ci	select HAVE_GCC_PLUGINS if GCC_VERSION >= 120000
4562306a36Sopenharmony_ci	select HAVE_HW_BREAKPOINT if PERF_EVENTS
4662306a36Sopenharmony_ci	select HAVE_IRQ_TIME_ACCOUNTING
4762306a36Sopenharmony_ci	select HAVE_PCI
4862306a36Sopenharmony_ci	select HAVE_PERF_EVENTS
4962306a36Sopenharmony_ci	select HAVE_STACKPROTECTOR
5062306a36Sopenharmony_ci	select HAVE_SYSCALL_TRACEPOINTS
5162306a36Sopenharmony_ci	select HAVE_VIRT_CPU_ACCOUNTING_GEN
5262306a36Sopenharmony_ci	select IRQ_DOMAIN
5362306a36Sopenharmony_ci	select LOCK_MM_AND_FIND_VMA
5462306a36Sopenharmony_ci	select MODULES_USE_ELF_RELA
5562306a36Sopenharmony_ci	select PERF_USE_VMALLOC
5662306a36Sopenharmony_ci	select TRACE_IRQFLAGS_SUPPORT
5762306a36Sopenharmony_ci	help
5862306a36Sopenharmony_ci	  Xtensa processors are 32-bit RISC machines designed by Tensilica
5962306a36Sopenharmony_ci	  primarily for embedded systems.  These processors are both
6062306a36Sopenharmony_ci	  configurable and extensible.  The Linux port to the Xtensa
6162306a36Sopenharmony_ci	  architecture supports all processor configurations and extensions,
6262306a36Sopenharmony_ci	  with reasonable minimum requirements.  The Xtensa Linux project has
6362306a36Sopenharmony_ci	  a home page at <http://www.linux-xtensa.org/>.
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ciconfig GENERIC_HWEIGHT
6662306a36Sopenharmony_ci	def_bool y
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ciconfig ARCH_HAS_ILOG2_U32
6962306a36Sopenharmony_ci	def_bool n
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ciconfig ARCH_HAS_ILOG2_U64
7262306a36Sopenharmony_ci	def_bool n
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ciconfig ARCH_MTD_XIP
7562306a36Sopenharmony_ci	def_bool y
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ciconfig NO_IOPORT_MAP
7862306a36Sopenharmony_ci	def_bool n
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ciconfig HZ
8162306a36Sopenharmony_ci	int
8262306a36Sopenharmony_ci	default 100
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ciconfig LOCKDEP_SUPPORT
8562306a36Sopenharmony_ci	def_bool y
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ciconfig STACKTRACE_SUPPORT
8862306a36Sopenharmony_ci	def_bool y
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ciconfig MMU
9162306a36Sopenharmony_ci	def_bool n
9262306a36Sopenharmony_ci	select PFAULT
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ciconfig HAVE_XTENSA_GPIO32
9562306a36Sopenharmony_ci	def_bool n
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ciconfig KASAN_SHADOW_OFFSET
9862306a36Sopenharmony_ci	hex
9962306a36Sopenharmony_ci	default 0x6e400000
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ciconfig CPU_BIG_ENDIAN
10262306a36Sopenharmony_ci	def_bool $(success,test "$(shell,echo __XTENSA_EB__ | $(CC) -E -P -)" = 1)
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ciconfig CPU_LITTLE_ENDIAN
10562306a36Sopenharmony_ci	def_bool !CPU_BIG_ENDIAN
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ciconfig CC_HAVE_CALL0_ABI
10862306a36Sopenharmony_ci	def_bool $(success,test "$(shell,echo __XTENSA_CALL0_ABI__ | $(CC) -mabi=call0 -E -P - 2>/dev/null)" = 1)
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_cimenu "Processor type and features"
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_cichoice
11362306a36Sopenharmony_ci	prompt "Xtensa Processor Configuration"
11462306a36Sopenharmony_ci	default XTENSA_VARIANT_FSF
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ciconfig XTENSA_VARIANT_FSF
11762306a36Sopenharmony_ci	bool "fsf - default (not generic) configuration"
11862306a36Sopenharmony_ci	select MMU
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ciconfig XTENSA_VARIANT_DC232B
12162306a36Sopenharmony_ci	bool "dc232b - Diamond 232L Standard Core Rev.B (LE)"
12262306a36Sopenharmony_ci	select MMU
12362306a36Sopenharmony_ci	select HAVE_XTENSA_GPIO32
12462306a36Sopenharmony_ci	help
12562306a36Sopenharmony_ci	  This variant refers to Tensilica's Diamond 232L Standard core Rev.B (LE).
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_ciconfig XTENSA_VARIANT_DC233C
12862306a36Sopenharmony_ci	bool "dc233c - Diamond 233L Standard Core Rev.C (LE)"
12962306a36Sopenharmony_ci	select MMU
13062306a36Sopenharmony_ci	select HAVE_XTENSA_GPIO32
13162306a36Sopenharmony_ci	help
13262306a36Sopenharmony_ci	  This variant refers to Tensilica's Diamond 233L Standard core Rev.C (LE).
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ciconfig XTENSA_VARIANT_CUSTOM
13562306a36Sopenharmony_ci	bool "Custom Xtensa processor configuration"
13662306a36Sopenharmony_ci	select HAVE_XTENSA_GPIO32
13762306a36Sopenharmony_ci	help
13862306a36Sopenharmony_ci	  Select this variant to use a custom Xtensa processor configuration.
13962306a36Sopenharmony_ci	  You will be prompted for a processor variant CORENAME.
14062306a36Sopenharmony_ciendchoice
14162306a36Sopenharmony_ci
14262306a36Sopenharmony_ciconfig XTENSA_VARIANT_CUSTOM_NAME
14362306a36Sopenharmony_ci	string "Xtensa Processor Custom Core Variant Name"
14462306a36Sopenharmony_ci	depends on XTENSA_VARIANT_CUSTOM
14562306a36Sopenharmony_ci	help
14662306a36Sopenharmony_ci	  Provide the name of a custom Xtensa processor variant.
14762306a36Sopenharmony_ci	  This CORENAME selects arch/xtensa/variant/CORENAME.
14862306a36Sopenharmony_ci	  Don't forget you have to select MMU if you have one.
14962306a36Sopenharmony_ci
15062306a36Sopenharmony_ciconfig XTENSA_VARIANT_NAME
15162306a36Sopenharmony_ci	string
15262306a36Sopenharmony_ci	default "dc232b"			if XTENSA_VARIANT_DC232B
15362306a36Sopenharmony_ci	default "dc233c"			if XTENSA_VARIANT_DC233C
15462306a36Sopenharmony_ci	default "fsf"				if XTENSA_VARIANT_FSF
15562306a36Sopenharmony_ci	default XTENSA_VARIANT_CUSTOM_NAME	if XTENSA_VARIANT_CUSTOM
15662306a36Sopenharmony_ci
15762306a36Sopenharmony_ciconfig XTENSA_VARIANT_MMU
15862306a36Sopenharmony_ci	bool "Core variant has a Full MMU (TLB, Pages, Protection, etc)"
15962306a36Sopenharmony_ci	depends on XTENSA_VARIANT_CUSTOM
16062306a36Sopenharmony_ci	default y
16162306a36Sopenharmony_ci	select MMU
16262306a36Sopenharmony_ci	help
16362306a36Sopenharmony_ci	  Build a Conventional Kernel with full MMU support,
16462306a36Sopenharmony_ci	  ie: it supports a TLB with auto-loading, page protection.
16562306a36Sopenharmony_ci
16662306a36Sopenharmony_ciconfig XTENSA_VARIANT_HAVE_PERF_EVENTS
16762306a36Sopenharmony_ci	bool "Core variant has Performance Monitor Module"
16862306a36Sopenharmony_ci	depends on XTENSA_VARIANT_CUSTOM
16962306a36Sopenharmony_ci	default n
17062306a36Sopenharmony_ci	help
17162306a36Sopenharmony_ci	  Enable if core variant has Performance Monitor Module with
17262306a36Sopenharmony_ci	  External Registers Interface.
17362306a36Sopenharmony_ci
17462306a36Sopenharmony_ci	  If unsure, say N.
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ciconfig XTENSA_FAKE_NMI
17762306a36Sopenharmony_ci	bool "Treat PMM IRQ as NMI"
17862306a36Sopenharmony_ci	depends on XTENSA_VARIANT_HAVE_PERF_EVENTS
17962306a36Sopenharmony_ci	default n
18062306a36Sopenharmony_ci	help
18162306a36Sopenharmony_ci	  If PMM IRQ is the only IRQ at EXCM level it is safe to
18262306a36Sopenharmony_ci	  treat it as NMI, which improves accuracy of profiling.
18362306a36Sopenharmony_ci
18462306a36Sopenharmony_ci	  If there are other interrupts at or above PMM IRQ priority level
18562306a36Sopenharmony_ci	  but not above the EXCM level, PMM IRQ still may be treated as NMI,
18662306a36Sopenharmony_ci	  but only if these IRQs are not used. There will be a build warning
18762306a36Sopenharmony_ci	  saying that this is not safe, and a bugcheck if one of these IRQs
18862306a36Sopenharmony_ci	  actually fire.
18962306a36Sopenharmony_ci
19062306a36Sopenharmony_ci	  If unsure, say N.
19162306a36Sopenharmony_ci
19262306a36Sopenharmony_ciconfig PFAULT
19362306a36Sopenharmony_ci	bool "Handle protection faults" if EXPERT && !MMU
19462306a36Sopenharmony_ci	default y
19562306a36Sopenharmony_ci	help
19662306a36Sopenharmony_ci	  Handle protection faults. MMU configurations must enable it.
19762306a36Sopenharmony_ci	  noMMU configurations may disable it if used memory map never
19862306a36Sopenharmony_ci	  generates protection faults or faults are always fatal.
19962306a36Sopenharmony_ci
20062306a36Sopenharmony_ci	  If unsure, say Y.
20162306a36Sopenharmony_ci
20262306a36Sopenharmony_ciconfig XTENSA_UNALIGNED_USER
20362306a36Sopenharmony_ci	bool "Unaligned memory access in user space"
20462306a36Sopenharmony_ci	help
20562306a36Sopenharmony_ci	  The Xtensa architecture currently does not handle unaligned
20662306a36Sopenharmony_ci	  memory accesses in hardware but through an exception handler.
20762306a36Sopenharmony_ci	  Per default, unaligned memory accesses are disabled in user space.
20862306a36Sopenharmony_ci
20962306a36Sopenharmony_ci	  Say Y here to enable unaligned memory access in user space.
21062306a36Sopenharmony_ci
21162306a36Sopenharmony_ciconfig XTENSA_LOAD_STORE
21262306a36Sopenharmony_ci	bool "Load/store exception handler for memory only readable with l32"
21362306a36Sopenharmony_ci	help
21462306a36Sopenharmony_ci	  The Xtensa architecture only allows reading memory attached to its
21562306a36Sopenharmony_ci	  instruction bus with l32r and l32i instructions, all other
21662306a36Sopenharmony_ci	  instructions raise an exception with the LoadStoreErrorCause code.
21762306a36Sopenharmony_ci	  This makes it hard to use some configurations, e.g. store string
21862306a36Sopenharmony_ci	  literals in FLASH memory attached to the instruction bus.
21962306a36Sopenharmony_ci
22062306a36Sopenharmony_ci	  Say Y here to enable exception handler that allows transparent
22162306a36Sopenharmony_ci	  byte and 2-byte access to memory attached to instruction bus.
22262306a36Sopenharmony_ci
22362306a36Sopenharmony_ciconfig HAVE_SMP
22462306a36Sopenharmony_ci	bool "System Supports SMP (MX)"
22562306a36Sopenharmony_ci	depends on XTENSA_VARIANT_CUSTOM
22662306a36Sopenharmony_ci	select XTENSA_MX
22762306a36Sopenharmony_ci	help
22862306a36Sopenharmony_ci	  This option is used to indicate that the system-on-a-chip (SOC)
22962306a36Sopenharmony_ci	  supports Multiprocessing. Multiprocessor support implemented above
23062306a36Sopenharmony_ci	  the CPU core definition and currently needs to be selected manually.
23162306a36Sopenharmony_ci
23262306a36Sopenharmony_ci	  Multiprocessor support is implemented with external cache and
23362306a36Sopenharmony_ci	  interrupt controllers.
23462306a36Sopenharmony_ci
23562306a36Sopenharmony_ci	  The MX interrupt distributer adds Interprocessor Interrupts
23662306a36Sopenharmony_ci	  and causes the IRQ numbers to be increased by 4 for devices
23762306a36Sopenharmony_ci	  like the open cores ethernet driver and the serial interface.
23862306a36Sopenharmony_ci
23962306a36Sopenharmony_ci	  You still have to select "Enable SMP" to enable SMP on this SOC.
24062306a36Sopenharmony_ci
24162306a36Sopenharmony_ciconfig SMP
24262306a36Sopenharmony_ci	bool "Enable Symmetric multi-processing support"
24362306a36Sopenharmony_ci	depends on HAVE_SMP
24462306a36Sopenharmony_ci	select GENERIC_SMP_IDLE_THREAD
24562306a36Sopenharmony_ci	help
24662306a36Sopenharmony_ci	  Enabled SMP Software; allows more than one CPU/CORE
24762306a36Sopenharmony_ci	  to be activated during startup.
24862306a36Sopenharmony_ci
24962306a36Sopenharmony_ciconfig NR_CPUS
25062306a36Sopenharmony_ci	depends on SMP
25162306a36Sopenharmony_ci	int "Maximum number of CPUs (2-32)"
25262306a36Sopenharmony_ci	range 2 32
25362306a36Sopenharmony_ci	default "4"
25462306a36Sopenharmony_ci
25562306a36Sopenharmony_ciconfig HOTPLUG_CPU
25662306a36Sopenharmony_ci	bool "Enable CPU hotplug support"
25762306a36Sopenharmony_ci	depends on SMP
25862306a36Sopenharmony_ci	help
25962306a36Sopenharmony_ci	  Say Y here to allow turning CPUs off and on. CPUs can be
26062306a36Sopenharmony_ci	  controlled through /sys/devices/system/cpu.
26162306a36Sopenharmony_ci
26262306a36Sopenharmony_ci	  Say N if you want to disable CPU hotplug.
26362306a36Sopenharmony_ci
26462306a36Sopenharmony_ciconfig SECONDARY_RESET_VECTOR
26562306a36Sopenharmony_ci	bool "Secondary cores use alternative reset vector"
26662306a36Sopenharmony_ci	default y
26762306a36Sopenharmony_ci	depends on HAVE_SMP
26862306a36Sopenharmony_ci	help
26962306a36Sopenharmony_ci	  Secondary cores may be configured to use alternative reset vector,
27062306a36Sopenharmony_ci	  or all cores may use primary reset vector.
27162306a36Sopenharmony_ci	  Say Y here to supply handler for the alternative reset location.
27262306a36Sopenharmony_ci
27362306a36Sopenharmony_ciconfig FAST_SYSCALL_XTENSA
27462306a36Sopenharmony_ci	bool "Enable fast atomic syscalls"
27562306a36Sopenharmony_ci	default n
27662306a36Sopenharmony_ci	help
27762306a36Sopenharmony_ci	  fast_syscall_xtensa is a syscall that can make atomic operations
27862306a36Sopenharmony_ci	  on UP kernel when processor has no s32c1i support.
27962306a36Sopenharmony_ci
28062306a36Sopenharmony_ci	  This syscall is deprecated. It may have issues when called with
28162306a36Sopenharmony_ci	  invalid arguments. It is provided only for backwards compatibility.
28262306a36Sopenharmony_ci	  Only enable it if your userspace software requires it.
28362306a36Sopenharmony_ci
28462306a36Sopenharmony_ci	  If unsure, say N.
28562306a36Sopenharmony_ci
28662306a36Sopenharmony_ciconfig FAST_SYSCALL_SPILL_REGISTERS
28762306a36Sopenharmony_ci	bool "Enable spill registers syscall"
28862306a36Sopenharmony_ci	default n
28962306a36Sopenharmony_ci	help
29062306a36Sopenharmony_ci	  fast_syscall_spill_registers is a syscall that spills all active
29162306a36Sopenharmony_ci	  register windows of a calling userspace task onto its stack.
29262306a36Sopenharmony_ci
29362306a36Sopenharmony_ci	  This syscall is deprecated. It may have issues when called with
29462306a36Sopenharmony_ci	  invalid arguments. It is provided only for backwards compatibility.
29562306a36Sopenharmony_ci	  Only enable it if your userspace software requires it.
29662306a36Sopenharmony_ci
29762306a36Sopenharmony_ci	  If unsure, say N.
29862306a36Sopenharmony_ci
29962306a36Sopenharmony_cichoice
30062306a36Sopenharmony_ci	prompt "Kernel ABI"
30162306a36Sopenharmony_ci	default KERNEL_ABI_DEFAULT
30262306a36Sopenharmony_ci	help
30362306a36Sopenharmony_ci	  Select ABI for the kernel code. This ABI is independent of the
30462306a36Sopenharmony_ci	  supported userspace ABI and any combination of the
30562306a36Sopenharmony_ci	  kernel/userspace ABI is possible and should work.
30662306a36Sopenharmony_ci
30762306a36Sopenharmony_ci	  In case both kernel and userspace support only call0 ABI
30862306a36Sopenharmony_ci	  all register windows support code will be omitted from the
30962306a36Sopenharmony_ci	  build.
31062306a36Sopenharmony_ci
31162306a36Sopenharmony_ci	  If unsure, choose the default ABI.
31262306a36Sopenharmony_ci
31362306a36Sopenharmony_ciconfig KERNEL_ABI_DEFAULT
31462306a36Sopenharmony_ci	bool "Default ABI"
31562306a36Sopenharmony_ci	help
31662306a36Sopenharmony_ci	  Select this option to compile kernel code with the default ABI
31762306a36Sopenharmony_ci	  selected for the toolchain.
31862306a36Sopenharmony_ci	  Normally cores with windowed registers option use windowed ABI and
31962306a36Sopenharmony_ci	  cores without it use call0 ABI.
32062306a36Sopenharmony_ci
32162306a36Sopenharmony_ciconfig KERNEL_ABI_CALL0
32262306a36Sopenharmony_ci	bool "Call0 ABI" if CC_HAVE_CALL0_ABI
32362306a36Sopenharmony_ci	help
32462306a36Sopenharmony_ci	  Select this option to compile kernel code with call0 ABI even with
32562306a36Sopenharmony_ci	  toolchain that defaults to windowed ABI.
32662306a36Sopenharmony_ci	  When this option is not selected the default toolchain ABI will
32762306a36Sopenharmony_ci	  be used for the kernel code.
32862306a36Sopenharmony_ci
32962306a36Sopenharmony_ciendchoice
33062306a36Sopenharmony_ci
33162306a36Sopenharmony_ciconfig USER_ABI_CALL0
33262306a36Sopenharmony_ci	bool
33362306a36Sopenharmony_ci
33462306a36Sopenharmony_cichoice
33562306a36Sopenharmony_ci	prompt "Userspace ABI"
33662306a36Sopenharmony_ci	default USER_ABI_DEFAULT
33762306a36Sopenharmony_ci	help
33862306a36Sopenharmony_ci	  Select supported userspace ABI.
33962306a36Sopenharmony_ci
34062306a36Sopenharmony_ci	  If unsure, choose the default ABI.
34162306a36Sopenharmony_ci
34262306a36Sopenharmony_ciconfig USER_ABI_DEFAULT
34362306a36Sopenharmony_ci	bool "Default ABI only"
34462306a36Sopenharmony_ci	help
34562306a36Sopenharmony_ci	  Assume default userspace ABI. For XEA2 cores it is windowed ABI.
34662306a36Sopenharmony_ci	  call0 ABI binaries may be run on such kernel, but signal delivery
34762306a36Sopenharmony_ci	  will not work correctly for them.
34862306a36Sopenharmony_ci
34962306a36Sopenharmony_ciconfig USER_ABI_CALL0_ONLY
35062306a36Sopenharmony_ci	bool "Call0 ABI only"
35162306a36Sopenharmony_ci	select USER_ABI_CALL0
35262306a36Sopenharmony_ci	help
35362306a36Sopenharmony_ci	  Select this option to support only call0 ABI in userspace.
35462306a36Sopenharmony_ci	  Windowed ABI binaries will crash with a segfault caused by
35562306a36Sopenharmony_ci	  an illegal instruction exception on the first 'entry' opcode.
35662306a36Sopenharmony_ci
35762306a36Sopenharmony_ci	  Choose this option if you're planning to run only user code
35862306a36Sopenharmony_ci	  built with call0 ABI.
35962306a36Sopenharmony_ci
36062306a36Sopenharmony_ciconfig USER_ABI_CALL0_PROBE
36162306a36Sopenharmony_ci	bool "Support both windowed and call0 ABI by probing"
36262306a36Sopenharmony_ci	select USER_ABI_CALL0
36362306a36Sopenharmony_ci	help
36462306a36Sopenharmony_ci	  Select this option to support both windowed and call0 userspace
36562306a36Sopenharmony_ci	  ABIs. When enabled all processes are started with PS.WOE disabled
36662306a36Sopenharmony_ci	  and a fast user exception handler for an illegal instruction is
36762306a36Sopenharmony_ci	  used to turn on PS.WOE bit on the first 'entry' opcode executed by
36862306a36Sopenharmony_ci	  the userspace.
36962306a36Sopenharmony_ci
37062306a36Sopenharmony_ci	  This option should be enabled for the kernel that must support
37162306a36Sopenharmony_ci	  both call0 and windowed ABIs in userspace at the same time.
37262306a36Sopenharmony_ci
37362306a36Sopenharmony_ci	  Note that Xtensa ISA does not guarantee that entry opcode will
37462306a36Sopenharmony_ci	  raise an illegal instruction exception on cores with XEA2 when
37562306a36Sopenharmony_ci	  PS.WOE is disabled, check whether the target core supports it.
37662306a36Sopenharmony_ci
37762306a36Sopenharmony_ciendchoice
37862306a36Sopenharmony_ci
37962306a36Sopenharmony_ciendmenu
38062306a36Sopenharmony_ci
38162306a36Sopenharmony_ciconfig XTENSA_CALIBRATE_CCOUNT
38262306a36Sopenharmony_ci	def_bool n
38362306a36Sopenharmony_ci	help
38462306a36Sopenharmony_ci	  On some platforms (XT2000, for example), the CPU clock rate can
38562306a36Sopenharmony_ci	  vary.  The frequency can be determined, however, by measuring
38662306a36Sopenharmony_ci	  against a well known, fixed frequency, such as an UART oscillator.
38762306a36Sopenharmony_ci
38862306a36Sopenharmony_ciconfig SERIAL_CONSOLE
38962306a36Sopenharmony_ci	def_bool n
39062306a36Sopenharmony_ci
39162306a36Sopenharmony_ciconfig PLATFORM_HAVE_XIP
39262306a36Sopenharmony_ci	def_bool n
39362306a36Sopenharmony_ci
39462306a36Sopenharmony_cimenu "Platform options"
39562306a36Sopenharmony_ci
39662306a36Sopenharmony_cichoice
39762306a36Sopenharmony_ci	prompt "Xtensa System Type"
39862306a36Sopenharmony_ci	default XTENSA_PLATFORM_ISS
39962306a36Sopenharmony_ci
40062306a36Sopenharmony_ciconfig XTENSA_PLATFORM_ISS
40162306a36Sopenharmony_ci	bool "ISS"
40262306a36Sopenharmony_ci	select XTENSA_CALIBRATE_CCOUNT
40362306a36Sopenharmony_ci	select SERIAL_CONSOLE
40462306a36Sopenharmony_ci	help
40562306a36Sopenharmony_ci	  ISS is an acronym for Tensilica's Instruction Set Simulator.
40662306a36Sopenharmony_ci
40762306a36Sopenharmony_ciconfig XTENSA_PLATFORM_XT2000
40862306a36Sopenharmony_ci	bool "XT2000"
40962306a36Sopenharmony_ci	help
41062306a36Sopenharmony_ci	  XT2000 is the name of Tensilica's feature-rich emulation platform.
41162306a36Sopenharmony_ci	  This hardware is capable of running a full Linux distribution.
41262306a36Sopenharmony_ci
41362306a36Sopenharmony_ciconfig XTENSA_PLATFORM_XTFPGA
41462306a36Sopenharmony_ci	bool "XTFPGA"
41562306a36Sopenharmony_ci	select ETHOC if ETHERNET
41662306a36Sopenharmony_ci	select PLATFORM_WANT_DEFAULT_MEM if !MMU
41762306a36Sopenharmony_ci	select SERIAL_CONSOLE
41862306a36Sopenharmony_ci	select XTENSA_CALIBRATE_CCOUNT
41962306a36Sopenharmony_ci	select PLATFORM_HAVE_XIP
42062306a36Sopenharmony_ci	help
42162306a36Sopenharmony_ci	  XTFPGA is the name of Tensilica board family (LX60, LX110, LX200, ML605).
42262306a36Sopenharmony_ci	  This hardware is capable of running a full Linux distribution.
42362306a36Sopenharmony_ci
42462306a36Sopenharmony_ciendchoice
42562306a36Sopenharmony_ci
42662306a36Sopenharmony_ciconfig PLATFORM_NR_IRQS
42762306a36Sopenharmony_ci	int
42862306a36Sopenharmony_ci	default 3 if XTENSA_PLATFORM_XT2000
42962306a36Sopenharmony_ci	default 0
43062306a36Sopenharmony_ci
43162306a36Sopenharmony_ciconfig XTENSA_CPU_CLOCK
43262306a36Sopenharmony_ci	int "CPU clock rate [MHz]"
43362306a36Sopenharmony_ci	depends on !XTENSA_CALIBRATE_CCOUNT
43462306a36Sopenharmony_ci	default 16
43562306a36Sopenharmony_ci
43662306a36Sopenharmony_ciconfig GENERIC_CALIBRATE_DELAY
43762306a36Sopenharmony_ci	bool "Auto calibration of the BogoMIPS value"
43862306a36Sopenharmony_ci	help
43962306a36Sopenharmony_ci	  The BogoMIPS value can easily be derived from the CPU frequency.
44062306a36Sopenharmony_ci
44162306a36Sopenharmony_ciconfig CMDLINE_BOOL
44262306a36Sopenharmony_ci	bool "Default bootloader kernel arguments"
44362306a36Sopenharmony_ci
44462306a36Sopenharmony_ciconfig CMDLINE
44562306a36Sopenharmony_ci	string "Initial kernel command string"
44662306a36Sopenharmony_ci	depends on CMDLINE_BOOL
44762306a36Sopenharmony_ci	default "console=ttyS0,38400 root=/dev/ram"
44862306a36Sopenharmony_ci	help
44962306a36Sopenharmony_ci	  On some architectures (EBSA110 and CATS), there is currently no way
45062306a36Sopenharmony_ci	  for the boot loader to pass arguments to the kernel. For these
45162306a36Sopenharmony_ci	  architectures, you should supply some command-line options at build
45262306a36Sopenharmony_ci	  time by entering them here. As a minimum, you should specify the
45362306a36Sopenharmony_ci	  memory size and the root device (e.g., mem=64M root=/dev/nfs).
45462306a36Sopenharmony_ci
45562306a36Sopenharmony_ciconfig USE_OF
45662306a36Sopenharmony_ci	bool "Flattened Device Tree support"
45762306a36Sopenharmony_ci	select OF
45862306a36Sopenharmony_ci	select OF_EARLY_FLATTREE
45962306a36Sopenharmony_ci	help
46062306a36Sopenharmony_ci	  Include support for flattened device tree machine descriptions.
46162306a36Sopenharmony_ci
46262306a36Sopenharmony_ciconfig BUILTIN_DTB_SOURCE
46362306a36Sopenharmony_ci	string "DTB to build into the kernel image"
46462306a36Sopenharmony_ci	depends on OF
46562306a36Sopenharmony_ci
46662306a36Sopenharmony_ciconfig PARSE_BOOTPARAM
46762306a36Sopenharmony_ci	bool "Parse bootparam block"
46862306a36Sopenharmony_ci	default y
46962306a36Sopenharmony_ci	help
47062306a36Sopenharmony_ci	  Parse parameters passed to the kernel from the bootloader. It may
47162306a36Sopenharmony_ci	  be disabled if the kernel is known to run without the bootloader.
47262306a36Sopenharmony_ci
47362306a36Sopenharmony_ci	  If unsure, say Y.
47462306a36Sopenharmony_ci
47562306a36Sopenharmony_cichoice
47662306a36Sopenharmony_ci	prompt "Semihosting interface"
47762306a36Sopenharmony_ci	default XTENSA_SIMCALL_ISS
47862306a36Sopenharmony_ci	depends on XTENSA_PLATFORM_ISS
47962306a36Sopenharmony_ci	help
48062306a36Sopenharmony_ci	  Choose semihosting interface that will be used for serial port,
48162306a36Sopenharmony_ci	  block device and networking.
48262306a36Sopenharmony_ci
48362306a36Sopenharmony_ciconfig XTENSA_SIMCALL_ISS
48462306a36Sopenharmony_ci	bool "simcall"
48562306a36Sopenharmony_ci	help
48662306a36Sopenharmony_ci	  Use simcall instruction. simcall is only available on simulators,
48762306a36Sopenharmony_ci	  it does nothing on hardware.
48862306a36Sopenharmony_ci
48962306a36Sopenharmony_ciconfig XTENSA_SIMCALL_GDBIO
49062306a36Sopenharmony_ci	bool "GDBIO"
49162306a36Sopenharmony_ci	help
49262306a36Sopenharmony_ci	  Use break instruction. It is available on real hardware when GDB
49362306a36Sopenharmony_ci	  is attached to it via JTAG.
49462306a36Sopenharmony_ci
49562306a36Sopenharmony_ciendchoice
49662306a36Sopenharmony_ci
49762306a36Sopenharmony_ciconfig BLK_DEV_SIMDISK
49862306a36Sopenharmony_ci	tristate "Host file-based simulated block device support"
49962306a36Sopenharmony_ci	default n
50062306a36Sopenharmony_ci	depends on XTENSA_PLATFORM_ISS && BLOCK
50162306a36Sopenharmony_ci	help
50262306a36Sopenharmony_ci	  Create block devices that map to files in the host file system.
50362306a36Sopenharmony_ci	  Device binding to host file may be changed at runtime via proc
50462306a36Sopenharmony_ci	  interface provided the device is not in use.
50562306a36Sopenharmony_ci
50662306a36Sopenharmony_ciconfig BLK_DEV_SIMDISK_COUNT
50762306a36Sopenharmony_ci	int "Number of host file-based simulated block devices"
50862306a36Sopenharmony_ci	range 1 10
50962306a36Sopenharmony_ci	depends on BLK_DEV_SIMDISK
51062306a36Sopenharmony_ci	default 2
51162306a36Sopenharmony_ci	help
51262306a36Sopenharmony_ci	  This is the default minimal number of created block devices.
51362306a36Sopenharmony_ci	  Kernel/module parameter 'simdisk_count' may be used to change this
51462306a36Sopenharmony_ci	  value at runtime. More file names (but no more than 10) may be
51562306a36Sopenharmony_ci	  specified as parameters, simdisk_count grows accordingly.
51662306a36Sopenharmony_ci
51762306a36Sopenharmony_ciconfig SIMDISK0_FILENAME
51862306a36Sopenharmony_ci	string "Host filename for the first simulated device"
51962306a36Sopenharmony_ci	depends on BLK_DEV_SIMDISK = y
52062306a36Sopenharmony_ci	default ""
52162306a36Sopenharmony_ci	help
52262306a36Sopenharmony_ci	  Attach a first simdisk to a host file. Conventionally, this file
52362306a36Sopenharmony_ci	  contains a root file system.
52462306a36Sopenharmony_ci
52562306a36Sopenharmony_ciconfig SIMDISK1_FILENAME
52662306a36Sopenharmony_ci	string "Host filename for the second simulated device"
52762306a36Sopenharmony_ci	depends on BLK_DEV_SIMDISK = y && BLK_DEV_SIMDISK_COUNT != 1
52862306a36Sopenharmony_ci	default ""
52962306a36Sopenharmony_ci	help
53062306a36Sopenharmony_ci	  Another simulated disk in a host file for a buildroot-independent
53162306a36Sopenharmony_ci	  storage.
53262306a36Sopenharmony_ci
53362306a36Sopenharmony_ciconfig XTFPGA_LCD
53462306a36Sopenharmony_ci	bool "Enable XTFPGA LCD driver"
53562306a36Sopenharmony_ci	depends on XTENSA_PLATFORM_XTFPGA
53662306a36Sopenharmony_ci	default n
53762306a36Sopenharmony_ci	help
53862306a36Sopenharmony_ci	  There's a 2x16 LCD on most of XTFPGA boards, kernel may output
53962306a36Sopenharmony_ci	  progress messages there during bootup/shutdown. It may be useful
54062306a36Sopenharmony_ci	  during board bringup.
54162306a36Sopenharmony_ci
54262306a36Sopenharmony_ci	  If unsure, say N.
54362306a36Sopenharmony_ci
54462306a36Sopenharmony_ciconfig XTFPGA_LCD_BASE_ADDR
54562306a36Sopenharmony_ci	hex "XTFPGA LCD base address"
54662306a36Sopenharmony_ci	depends on XTFPGA_LCD
54762306a36Sopenharmony_ci	default "0x0d0c0000"
54862306a36Sopenharmony_ci	help
54962306a36Sopenharmony_ci	  Base address of the LCD controller inside KIO region.
55062306a36Sopenharmony_ci	  Different boards from XTFPGA family have LCD controller at different
55162306a36Sopenharmony_ci	  addresses. Please consult prototyping user guide for your board for
55262306a36Sopenharmony_ci	  the correct address. Wrong address here may lead to hardware lockup.
55362306a36Sopenharmony_ci
55462306a36Sopenharmony_ciconfig XTFPGA_LCD_8BIT_ACCESS
55562306a36Sopenharmony_ci	bool "Use 8-bit access to XTFPGA LCD"
55662306a36Sopenharmony_ci	depends on XTFPGA_LCD
55762306a36Sopenharmony_ci	default n
55862306a36Sopenharmony_ci	help
55962306a36Sopenharmony_ci	  LCD may be connected with 4- or 8-bit interface, 8-bit access may
56062306a36Sopenharmony_ci	  only be used with 8-bit interface. Please consult prototyping user
56162306a36Sopenharmony_ci	  guide for your board for the correct interface width.
56262306a36Sopenharmony_ci
56362306a36Sopenharmony_cicomment "Kernel memory layout"
56462306a36Sopenharmony_ci
56562306a36Sopenharmony_ciconfig INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
56662306a36Sopenharmony_ci	bool "Initialize Xtensa MMU inside the Linux kernel code"
56762306a36Sopenharmony_ci	depends on !XTENSA_VARIANT_FSF && !XTENSA_VARIANT_DC232B
56862306a36Sopenharmony_ci	default y if XTENSA_VARIANT_DC233C || XTENSA_VARIANT_CUSTOM
56962306a36Sopenharmony_ci	help
57062306a36Sopenharmony_ci	  Earlier version initialized the MMU in the exception vector
57162306a36Sopenharmony_ci	  before jumping to _startup in head.S and had an advantage that
57262306a36Sopenharmony_ci	  it was possible to place a software breakpoint at 'reset' and
57362306a36Sopenharmony_ci	  then enter your normal kernel breakpoints once the MMU was mapped
57462306a36Sopenharmony_ci	  to the kernel mappings (0XC0000000).
57562306a36Sopenharmony_ci
57662306a36Sopenharmony_ci	  This unfortunately won't work for U-Boot and likely also won't
57762306a36Sopenharmony_ci	  work for using KEXEC to have a hot kernel ready for doing a
57862306a36Sopenharmony_ci	  KDUMP.
57962306a36Sopenharmony_ci
58062306a36Sopenharmony_ci	  So now the MMU is initialized in head.S but it's necessary to
58162306a36Sopenharmony_ci	  use hardware breakpoints (gdb 'hbreak' cmd) to break at _startup.
58262306a36Sopenharmony_ci	  xt-gdb can't place a Software Breakpoint in the  0XD region prior
58362306a36Sopenharmony_ci	  to mapping the MMU and after mapping even if the area of low memory
58462306a36Sopenharmony_ci	  was mapped gdb wouldn't remove the breakpoint on hitting it as the
58562306a36Sopenharmony_ci	  PC wouldn't match. Since Hardware Breakpoints are recommended for
58662306a36Sopenharmony_ci	  Linux configurations it seems reasonable to just assume they exist
58762306a36Sopenharmony_ci	  and leave this older mechanism for unfortunate souls that choose
58862306a36Sopenharmony_ci	  not to follow Tensilica's recommendation.
58962306a36Sopenharmony_ci
59062306a36Sopenharmony_ci	  Selecting this will cause U-Boot to set the KERNEL Load and Entry
59162306a36Sopenharmony_ci	  address at 0x00003000 instead of the mapped std of 0xD0003000.
59262306a36Sopenharmony_ci
59362306a36Sopenharmony_ci	  If in doubt, say Y.
59462306a36Sopenharmony_ci
59562306a36Sopenharmony_ciconfig XIP_KERNEL
59662306a36Sopenharmony_ci	bool "Kernel Execute-In-Place from ROM"
59762306a36Sopenharmony_ci	depends on PLATFORM_HAVE_XIP
59862306a36Sopenharmony_ci	help
59962306a36Sopenharmony_ci	  Execute-In-Place allows the kernel to run from non-volatile storage
60062306a36Sopenharmony_ci	  directly addressable by the CPU, such as NOR flash. This saves RAM
60162306a36Sopenharmony_ci	  space since the text section of the kernel is not loaded from flash
60262306a36Sopenharmony_ci	  to RAM. Read-write sections, such as the data section and stack,
60362306a36Sopenharmony_ci	  are still copied to RAM. The XIP kernel is not compressed since
60462306a36Sopenharmony_ci	  it has to run directly from flash, so it will take more space to
60562306a36Sopenharmony_ci	  store it. The flash address used to link the kernel object files,
60662306a36Sopenharmony_ci	  and for storing it, is configuration dependent. Therefore, if you
60762306a36Sopenharmony_ci	  say Y here, you must know the proper physical address where to
60862306a36Sopenharmony_ci	  store the kernel image depending on your own flash memory usage.
60962306a36Sopenharmony_ci
61062306a36Sopenharmony_ci	  Also note that the make target becomes "make xipImage" rather than
61162306a36Sopenharmony_ci	  "make Image" or "make uImage". The final kernel binary to put in
61262306a36Sopenharmony_ci	  ROM memory will be arch/xtensa/boot/xipImage.
61362306a36Sopenharmony_ci
61462306a36Sopenharmony_ci	  If unsure, say N.
61562306a36Sopenharmony_ci
61662306a36Sopenharmony_ciconfig MEMMAP_CACHEATTR
61762306a36Sopenharmony_ci	hex "Cache attributes for the memory address space"
61862306a36Sopenharmony_ci	depends on !MMU
61962306a36Sopenharmony_ci	default 0x22222222
62062306a36Sopenharmony_ci	help
62162306a36Sopenharmony_ci	  These cache attributes are set up for noMMU systems. Each hex digit
62262306a36Sopenharmony_ci	  specifies cache attributes for the corresponding 512MB memory
62362306a36Sopenharmony_ci	  region: bits 0..3 -- for addresses 0x00000000..0x1fffffff,
62462306a36Sopenharmony_ci	  bits 4..7 -- for addresses 0x20000000..0x3fffffff, and so on.
62562306a36Sopenharmony_ci
62662306a36Sopenharmony_ci	  Cache attribute values are specific for the MMU type.
62762306a36Sopenharmony_ci	  For region protection MMUs:
62862306a36Sopenharmony_ci	    1: WT cached,
62962306a36Sopenharmony_ci	    2: cache bypass,
63062306a36Sopenharmony_ci	    4: WB cached,
63162306a36Sopenharmony_ci	    f: illegal.
63262306a36Sopenharmony_ci	  For full MMU:
63362306a36Sopenharmony_ci	    bit 0: executable,
63462306a36Sopenharmony_ci	    bit 1: writable,
63562306a36Sopenharmony_ci	    bits 2..3:
63662306a36Sopenharmony_ci	      0: cache bypass,
63762306a36Sopenharmony_ci	      1: WB cache,
63862306a36Sopenharmony_ci	      2: WT cache,
63962306a36Sopenharmony_ci	      3: special (c and e are illegal, f is reserved).
64062306a36Sopenharmony_ci	  For MPU:
64162306a36Sopenharmony_ci	    0: illegal,
64262306a36Sopenharmony_ci	    1: WB cache,
64362306a36Sopenharmony_ci	    2: WB, no-write-allocate cache,
64462306a36Sopenharmony_ci	    3: WT cache,
64562306a36Sopenharmony_ci	    4: cache bypass.
64662306a36Sopenharmony_ci
64762306a36Sopenharmony_ciconfig KSEG_PADDR
64862306a36Sopenharmony_ci	hex "Physical address of the KSEG mapping"
64962306a36Sopenharmony_ci	depends on INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX && MMU
65062306a36Sopenharmony_ci	default 0x00000000
65162306a36Sopenharmony_ci	help
65262306a36Sopenharmony_ci	  This is the physical address where KSEG is mapped. Please refer to
65362306a36Sopenharmony_ci	  the chosen KSEG layout help for the required address alignment.
65462306a36Sopenharmony_ci	  Unpacked kernel image (including vectors) must be located completely
65562306a36Sopenharmony_ci	  within KSEG.
65662306a36Sopenharmony_ci	  Physical memory below this address is not available to linux.
65762306a36Sopenharmony_ci
65862306a36Sopenharmony_ci	  If unsure, leave the default value here.
65962306a36Sopenharmony_ci
66062306a36Sopenharmony_ciconfig KERNEL_VIRTUAL_ADDRESS
66162306a36Sopenharmony_ci	hex "Kernel virtual address"
66262306a36Sopenharmony_ci	depends on MMU && XIP_KERNEL
66362306a36Sopenharmony_ci	default 0xd0003000
66462306a36Sopenharmony_ci	help
66562306a36Sopenharmony_ci	  This is the virtual address where the XIP kernel is mapped.
66662306a36Sopenharmony_ci	  XIP kernel may be mapped into KSEG or KIO region, virtual address
66762306a36Sopenharmony_ci	  provided here must match kernel load address provided in
66862306a36Sopenharmony_ci	  KERNEL_LOAD_ADDRESS.
66962306a36Sopenharmony_ci
67062306a36Sopenharmony_ciconfig KERNEL_LOAD_ADDRESS
67162306a36Sopenharmony_ci	hex "Kernel load address"
67262306a36Sopenharmony_ci	default 0x60003000 if !MMU
67362306a36Sopenharmony_ci	default 0x00003000 if MMU && INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
67462306a36Sopenharmony_ci	default 0xd0003000 if MMU && !INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
67562306a36Sopenharmony_ci	help
67662306a36Sopenharmony_ci	  This is the address where the kernel is loaded.
67762306a36Sopenharmony_ci	  It is virtual address for MMUv2 configurations and physical address
67862306a36Sopenharmony_ci	  for all other configurations.
67962306a36Sopenharmony_ci
68062306a36Sopenharmony_ci	  If unsure, leave the default value here.
68162306a36Sopenharmony_ci
68262306a36Sopenharmony_cichoice
68362306a36Sopenharmony_ci	prompt "Relocatable vectors location"
68462306a36Sopenharmony_ci	default XTENSA_VECTORS_IN_TEXT
68562306a36Sopenharmony_ci	help
68662306a36Sopenharmony_ci	  Choose whether relocatable vectors are merged into the kernel .text
68762306a36Sopenharmony_ci	  or placed separately at runtime. This option does not affect
68862306a36Sopenharmony_ci	  configurations without VECBASE register where vectors are always
68962306a36Sopenharmony_ci	  placed at their hardware-defined locations.
69062306a36Sopenharmony_ci
69162306a36Sopenharmony_ciconfig XTENSA_VECTORS_IN_TEXT
69262306a36Sopenharmony_ci	bool "Merge relocatable vectors into kernel text"
69362306a36Sopenharmony_ci	depends on !MTD_XIP
69462306a36Sopenharmony_ci	help
69562306a36Sopenharmony_ci	  This option puts relocatable vectors into the kernel .text section
69662306a36Sopenharmony_ci	  with proper alignment.
69762306a36Sopenharmony_ci	  This is a safe choice for most configurations.
69862306a36Sopenharmony_ci
69962306a36Sopenharmony_ciconfig XTENSA_VECTORS_SEPARATE
70062306a36Sopenharmony_ci	bool "Put relocatable vectors at fixed address"
70162306a36Sopenharmony_ci	help
70262306a36Sopenharmony_ci	  This option puts relocatable vectors at specific virtual address.
70362306a36Sopenharmony_ci	  Vectors are merged with the .init data in the kernel image and
70462306a36Sopenharmony_ci	  are copied into their designated location during kernel startup.
70562306a36Sopenharmony_ci	  Use it to put vectors into IRAM or out of FLASH on kernels with
70662306a36Sopenharmony_ci	  XIP-aware MTD support.
70762306a36Sopenharmony_ci
70862306a36Sopenharmony_ciendchoice
70962306a36Sopenharmony_ci
71062306a36Sopenharmony_ciconfig VECTORS_ADDR
71162306a36Sopenharmony_ci	hex "Kernel vectors virtual address"
71262306a36Sopenharmony_ci	default 0x00000000
71362306a36Sopenharmony_ci	depends on XTENSA_VECTORS_SEPARATE
71462306a36Sopenharmony_ci	help
71562306a36Sopenharmony_ci	  This is the virtual address of the (relocatable) vectors base.
71662306a36Sopenharmony_ci	  It must be within KSEG if MMU is used.
71762306a36Sopenharmony_ci
71862306a36Sopenharmony_ciconfig XIP_DATA_ADDR
71962306a36Sopenharmony_ci	hex "XIP kernel data virtual address"
72062306a36Sopenharmony_ci	depends on XIP_KERNEL
72162306a36Sopenharmony_ci	default 0x00000000
72262306a36Sopenharmony_ci	help
72362306a36Sopenharmony_ci	  This is the virtual address where XIP kernel data is copied.
72462306a36Sopenharmony_ci	  It must be within KSEG if MMU is used.
72562306a36Sopenharmony_ci
72662306a36Sopenharmony_ciconfig PLATFORM_WANT_DEFAULT_MEM
72762306a36Sopenharmony_ci	def_bool n
72862306a36Sopenharmony_ci
72962306a36Sopenharmony_ciconfig DEFAULT_MEM_START
73062306a36Sopenharmony_ci	hex
73162306a36Sopenharmony_ci	prompt "PAGE_OFFSET/PHYS_OFFSET" if !MMU && PLATFORM_WANT_DEFAULT_MEM
73262306a36Sopenharmony_ci	default 0x60000000 if PLATFORM_WANT_DEFAULT_MEM
73362306a36Sopenharmony_ci	default 0x00000000
73462306a36Sopenharmony_ci	help
73562306a36Sopenharmony_ci	  This is the base address used for both PAGE_OFFSET and PHYS_OFFSET
73662306a36Sopenharmony_ci	  in noMMU configurations.
73762306a36Sopenharmony_ci
73862306a36Sopenharmony_ci	  If unsure, leave the default value here.
73962306a36Sopenharmony_ci
74062306a36Sopenharmony_cichoice
74162306a36Sopenharmony_ci	prompt "KSEG layout"
74262306a36Sopenharmony_ci	depends on MMU
74362306a36Sopenharmony_ci	default XTENSA_KSEG_MMU_V2
74462306a36Sopenharmony_ci
74562306a36Sopenharmony_ciconfig XTENSA_KSEG_MMU_V2
74662306a36Sopenharmony_ci	bool "MMUv2: 128MB cached + 128MB uncached"
74762306a36Sopenharmony_ci	help
74862306a36Sopenharmony_ci	  MMUv2 compatible kernel memory map: TLB way 5 maps 128MB starting
74962306a36Sopenharmony_ci	  at KSEG_PADDR to 0xd0000000 with cache and to 0xd8000000
75062306a36Sopenharmony_ci	  without cache.
75162306a36Sopenharmony_ci	  KSEG_PADDR must be aligned to 128MB.
75262306a36Sopenharmony_ci
75362306a36Sopenharmony_ciconfig XTENSA_KSEG_256M
75462306a36Sopenharmony_ci	bool "256MB cached + 256MB uncached"
75562306a36Sopenharmony_ci	depends on INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
75662306a36Sopenharmony_ci	help
75762306a36Sopenharmony_ci	  TLB way 6 maps 256MB starting at KSEG_PADDR to 0xb0000000
75862306a36Sopenharmony_ci	  with cache and to 0xc0000000 without cache.
75962306a36Sopenharmony_ci	  KSEG_PADDR must be aligned to 256MB.
76062306a36Sopenharmony_ci
76162306a36Sopenharmony_ciconfig XTENSA_KSEG_512M
76262306a36Sopenharmony_ci	bool "512MB cached + 512MB uncached"
76362306a36Sopenharmony_ci	depends on INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
76462306a36Sopenharmony_ci	help
76562306a36Sopenharmony_ci	  TLB way 6 maps 512MB starting at KSEG_PADDR to 0xa0000000
76662306a36Sopenharmony_ci	  with cache and to 0xc0000000 without cache.
76762306a36Sopenharmony_ci	  KSEG_PADDR must be aligned to 256MB.
76862306a36Sopenharmony_ci
76962306a36Sopenharmony_ciendchoice
77062306a36Sopenharmony_ci
77162306a36Sopenharmony_ciconfig HIGHMEM
77262306a36Sopenharmony_ci	bool "High Memory Support"
77362306a36Sopenharmony_ci	depends on MMU
77462306a36Sopenharmony_ci	select KMAP_LOCAL
77562306a36Sopenharmony_ci	help
77662306a36Sopenharmony_ci	  Linux can use the full amount of RAM in the system by
77762306a36Sopenharmony_ci	  default. However, the default MMUv2 setup only maps the
77862306a36Sopenharmony_ci	  lowermost 128 MB of memory linearly to the areas starting
77962306a36Sopenharmony_ci	  at 0xd0000000 (cached) and 0xd8000000 (uncached).
78062306a36Sopenharmony_ci	  When there are more than 128 MB memory in the system not
78162306a36Sopenharmony_ci	  all of it can be "permanently mapped" by the kernel.
78262306a36Sopenharmony_ci	  The physical memory that's not permanently mapped is called
78362306a36Sopenharmony_ci	  "high memory".
78462306a36Sopenharmony_ci
78562306a36Sopenharmony_ci	  If you are compiling a kernel which will never run on a
78662306a36Sopenharmony_ci	  machine with more than 128 MB total physical RAM, answer
78762306a36Sopenharmony_ci	  N here.
78862306a36Sopenharmony_ci
78962306a36Sopenharmony_ci	  If unsure, say Y.
79062306a36Sopenharmony_ci
79162306a36Sopenharmony_ciconfig ARCH_FORCE_MAX_ORDER
79262306a36Sopenharmony_ci	int "Order of maximal physically contiguous allocations"
79362306a36Sopenharmony_ci	default "10"
79462306a36Sopenharmony_ci	help
79562306a36Sopenharmony_ci	  The kernel page allocator limits the size of maximal physically
79662306a36Sopenharmony_ci	  contiguous allocations. The limit is called MAX_ORDER and it
79762306a36Sopenharmony_ci	  defines the maximal power of two of number of pages that can be
79862306a36Sopenharmony_ci	  allocated as a single contiguous block. This option allows
79962306a36Sopenharmony_ci	  overriding the default setting when ability to allocate very
80062306a36Sopenharmony_ci	  large blocks of physically contiguous memory is required.
80162306a36Sopenharmony_ci
80262306a36Sopenharmony_ci	  Don't change if unsure.
80362306a36Sopenharmony_ci
80462306a36Sopenharmony_ciendmenu
80562306a36Sopenharmony_ci
80662306a36Sopenharmony_cimenu "Power management options"
80762306a36Sopenharmony_ci
80862306a36Sopenharmony_ciconfig ARCH_HIBERNATION_POSSIBLE
80962306a36Sopenharmony_ci	def_bool y
81062306a36Sopenharmony_ci
81162306a36Sopenharmony_cisource "kernel/power/Kconfig"
81262306a36Sopenharmony_ci
81362306a36Sopenharmony_ciendmenu
814