# SPDX-License-Identifier: GPL-2.0-only

source "scripts/Kconfig.include"

config SANDBOX
	bool
	select OFTREE
	select GPIOLIB
	select ARCH_HAS_UBSAN_SANITIZE_ALL
	select HAS_DMA
	select BLOCK
	select BLOCK_WRITE
	select PARTITION
	select PARTITION_DISK
	select ARCH_HAS_STACK_DUMP if ASAN
	select GENERIC_FIND_NEXT_BIT
	select ARCH_HAS_SJLJ
	select ARCH_HAS_CTRLC
	select HAS_DEBUG_LL
	select ARCH_DMA_DEFAULT_COHERENT
	select ARCH_WANT_FRAME_POINTERS
	select BAREBOX_CMDLINE
	default y

config ARCH_LINUX_NAME
	string
	default "um"

config ARCH_TEXT_BASE
	hex
	default 0x00000000

menu "Sandbox specific settings"

config PHYS_ADDR_T_64BIT
	bool

config CC_IS_64BIT
	def_bool $(success,$(srctree)/scripts/gcc-64bitptr.sh $(CC))

config CC_HAS_LINUX_I386_SUPPORT
	def_bool $(cc-option,-m32) && $(ld-option,-m elf_i386)
	depends on CC_IS_GCC

config 64BIT
	bool
	default n if SANDBOX_LINUX_I386
	default CC_IS_64BIT
	select ARCH_DMA_ADDR_T_64BIT
	select PHYS_ADDR_T_64BIT
	select ARCH_HAS_ASAN_FIBER_API if ASAN

config 32BIT
	def_bool !64BIT

config SANDBOX_LINUX_I386
	bool "32-bit x86 barebox" if CC_HAS_LINUX_I386_SUPPORT

config SANDBOX_REEXEC
	prompt "exec(2) reset handler"
	def_bool y
	help
	  The normal reset handler hangs barebox. On Linux, barebox
	  instead can exec itself to simulate a reset.

config SANDBOX_SJLJ_ASM
	bool "use setjmp/longjmp/initjmp implemented in assembly" if COMPILE_TEST
	default y
	help
	  sandbox has a C implementation of initjmp, which can run afoul of code
	  hardening measures like ASAN. The assembly version isn't immune to these
	  issues, but it's easier to reason about than the sigaltstack hack.

config CMD_SANDBOX_CPUINFO
	bool "cpuinfo command"
	depends on COMMAND_SUPPORT
	default y
	help
	  Say yes here to get a dummy cpuinfo command.

config SDL
	bool

endmenu
