config ARCH_MAP_SYSMEM
	depends on SANDBOX
	def_bool y

config CREATE_ARCH_SYMLINK
	bool

config HAVE_ARCH_IOREMAP
	bool

config SYS_CACHE_SHIFT_4
	bool

config SYS_CACHE_SHIFT_5
	bool

config SYS_CACHE_SHIFT_6
	bool

config SYS_CACHE_SHIFT_7
	bool

config SYS_CACHELINE_SIZE
	int
	default 128 if SYS_CACHE_SHIFT_7
	default 64 if SYS_CACHE_SHIFT_6
	default 32 if SYS_CACHE_SHIFT_5
	default 16 if SYS_CACHE_SHIFT_4
	# Fall-back for MIPS
	default 32 if MIPS

config LINKER_LIST_ALIGN
	int
	default 32 if SANDBOX
	default 8 if ARM64 || X86
	default 4
	help
	  Force the each linker list to be aligned to this boundary. This
	  is required if ll_entry_get() is used, since otherwise the linker
	  may add padding into the table, thus breaking it.
	  See linker_lists.rst for full details.

choice
	prompt "Architecture select"
	default SANDBOX

config ARC
	bool "ARC architecture"
	select ARC_TIMER
	select CLK
	select DM
	select HAVE_PRIVATE_LIBGCC
	select SUPPORT_OF_CONTROL
	select SYS_CACHE_SHIFT_7
	select TIMER
	select SYS_BIG_ENDIAN if CPU_BIG_ENDIAN
	select SYS_LITTLE_ENDIAN if !CPU_BIG_ENDIAN

config ARM
	bool "ARM architecture"
	select ARCH_SUPPORTS_LTO
	select CREATE_ARCH_SYMLINK
	select HAVE_PRIVATE_LIBGCC if !ARM64
	select SUPPORT_ACPI
	select SUPPORT_OF_CONTROL

config M68K
	bool "M68000 architecture"
	select HAVE_PRIVATE_LIBGCC
	select NEEDS_MANUAL_RELOC
	select SYS_BOOT_GET_CMDLINE
	select SYS_BOOT_GET_KBD
	select SYS_CACHE_SHIFT_4
	select SUPPORT_OF_CONTROL

config MICROBLAZE
	bool "MicroBlaze architecture"
	select SUPPORT_OF_CONTROL
	imply CMD_TIMER
	imply SPL_REGMAP if SPL
	imply SPL_TIMER if SPL
	imply TIMER
	imply XILINX_TIMER

config MIPS
	bool "MIPS architecture"
	select HAVE_ARCH_IOREMAP
	select HAVE_PRIVATE_LIBGCC
	select SUPPORT_OF_CONTROL
	select SPL_SEPARATE_BSS if SPL

config NIOS2
	bool "Nios II architecture"
	select CPU
	select DM
	imply DM_EVENT
	select OF_CONTROL
	select SUPPORT_OF_CONTROL
	imply CMD_DM

config PPC
	bool "PowerPC architecture"
	select HAVE_PRIVATE_LIBGCC
	select SUPPORT_OF_CONTROL
	select SYS_BOOT_GET_CMDLINE
	select SYS_BOOT_GET_KBD

config RISCV
	bool "RISC-V architecture"
	select CREATE_ARCH_SYMLINK
	select SUPPORT_OF_CONTROL
	select OF_CONTROL
	select DM
	select SPL_SEPARATE_BSS if SPL
	imply DM_SERIAL
	imply DM_EVENT
	imply DM_MMC
	imply DM_SPI
	imply DM_SPI_FLASH
	imply BLK
	imply CLK
	imply MTD
	imply TIMER
	imply CMD_DM
	imply SPL_DM
	imply SPL_OF_CONTROL
	imply SPL_LIBCOMMON_SUPPORT
	imply SPL_LIBGENERIC_SUPPORT
	imply SPL_SERIAL
	imply SPL_TIMER

config SANDBOX
	bool "Sandbox"
	select ARCH_SUPPORTS_LTO
	select BOARD_LATE_INIT
	select BZIP2
	select CMD_POWEROFF
	select DM
	select DM_FUZZING_ENGINE
	select DM_GPIO
	select DM_I2C
	select DM_KEYBOARD
	select DM_MMC
	select DM_SERIAL
	select DM_SPI
	select DM_SPI_FLASH
	select GZIP_COMPRESSED
	select IO_TRACE
	select LZO
	select OF_BOARD_SETUP
	select PCI_ENDPOINT
	select SPI
	select SUPPORT_OF_CONTROL
	select SYSRESET_CMD_POWEROFF
	select SYS_CACHE_SHIFT_4
	select IRQ
	select SUPPORT_EXTENSION_SCAN
	select SUPPORT_ACPI
	imply BITREVERSE
	select BLOBLIST
	imply LTO
	imply CMD_DM
	imply CMD_EXCEPTION
	imply CMD_GETTIME
	imply CMD_HASH
	imply CMD_IO
	imply CMD_IOTRACE
	imply CMD_LZMADEC
	imply CMD_SF
	imply CMD_SF_TEST
	imply CRC32_VERIFY
	imply FAT_WRITE
	imply FIRMWARE
	imply FUZZING_ENGINE_SANDBOX
	imply HASH_VERIFY
	imply LZMA
	imply TEE
	imply AVB_VERIFY
	imply LIBAVB
	imply CMD_AVB
	imply PARTITION_TYPE_GUID
	imply SCP03
	imply CMD_SCP03
	imply UDP_FUNCTION_FASTBOOT
	imply VIRTIO_MMIO
	imply VIRTIO_PCI
	imply VIRTIO_SANDBOX
	imply VIRTIO_BLK
	imply VIRTIO_NET
	imply DM_SOUND
	imply PCI_SANDBOX_EP
	imply PCH
	imply PHYLIB
	imply DM_MDIO
	imply DM_MDIO_MUX
	imply ACPI_PMC
	imply ACPI_PMC_SANDBOX
	imply CMD_PMC
	imply CMD_CLONE
	imply SILENT_CONSOLE
	imply BOOTARGS_SUBST
	imply PHY_FIXED
	imply DM_DSA
	imply CMD_EXTENSION
	imply KEYBOARD
	imply PHYSMEM
	imply GENERATE_ACPI_TABLE
	imply BINMAN

config SH
	bool "SuperH architecture"
	select HAVE_PRIVATE_LIBGCC
	select SUPPORT_OF_CONTROL

config X86
	bool "x86 architecture"
	select SUPPORT_SPL
	select SUPPORT_TPL
	select CREATE_ARCH_SYMLINK
	select DM
	select HAVE_ARCH_IOMAP
	select HAVE_PRIVATE_LIBGCC
	select OF_CONTROL
	select PCI
	select SUPPORT_ACPI
	select SUPPORT_OF_CONTROL
	select SYS_CACHE_SHIFT_6
	select TIMER
	select USE_PRIVATE_LIBGCC
	select X86_TSC_TIMER
	select IRQ
	imply HAS_ROM if X86_RESET_VECTOR
	imply BLK
	imply CMD_DM
	imply CMD_FPGA_LOADMK
	imply CMD_GETTIME
	imply CMD_IO
	imply CMD_IRQ
	imply CMD_PCI
	imply CMD_SF
	imply CMD_SF_TEST
	imply CMD_ZBOOT
	imply DM_EVENT
	imply DM_GPIO
	imply DM_KEYBOARD
	imply DM_MMC
	imply DM_RTC
	imply DM_SCSI
	imply DM_SERIAL
	imply DM_SPI
	imply DM_SPI_FLASH
	imply DM_USB
	imply VIDEO
	imply SYSRESET
	imply SPL_SYSRESET
	imply SYSRESET_X86
	imply USB_ETHER_ASIX
	imply USB_ETHER_SMSC95XX
	imply USB_HOST_ETHER
	imply PCH
	imply PHYSMEM
	imply RTC_MC146818
	imply ACPIGEN if !QEMU && !EFI_APP
	imply SYSINFO if GENERATE_SMBIOS_TABLE
	imply SYSINFO_SMBIOS if GENERATE_SMBIOS_TABLE
	imply TIMESTAMP

	# Thing to enable for when SPL/TPL are enabled: SPL
	imply SPL_DM
	imply SPL_OF_LIBFDT
	imply SPL_DRIVERS_MISC
	imply SPL_GPIO
	imply SPL_PINCTRL
	imply SPL_LIBCOMMON_SUPPORT
	imply SPL_LIBGENERIC_SUPPORT
	imply SPL_SERIAL
	imply SPL_SPI_FLASH_SUPPORT
	imply SPL_SPI
	imply SPL_OF_CONTROL
	imply SPL_TIMER
	imply SPL_REGMAP
	imply SPL_SYSCON
	# TPL
	imply TPL_DM
	imply TPL_DRIVERS_MISC
	imply TPL_GPIO
	imply TPL_PINCTRL
	imply TPL_LIBCOMMON_SUPPORT
	imply TPL_LIBGENERIC_SUPPORT
	imply TPL_SERIAL
	imply TPL_OF_CONTROL
	imply TPL_TIMER
	imply TPL_REGMAP
	imply TPL_SYSCON

config XTENSA
	bool "Xtensa architecture"
	select CREATE_ARCH_SYMLINK
	select SUPPORT_OF_CONTROL

endchoice

config SYS_ARCH
	string
	help
	  This option should contain the architecture name to build the
	  appropriate arch/<CONFIG_SYS_ARCH> directory.
	  All the architectures should specify this option correctly.

config SYS_CPU
	string
	help
	  This option should contain the CPU name to build the correct
	  arch/<CONFIG_SYS_ARCH>/cpu/<CONFIG_SYS_CPU> directory.

	  This is optional.  For those targets without the CPU directory,
	  leave this option empty.

config SYS_SOC
	string
	help
	  This option should contain the SoC name to build the directory
	  arch/<CONFIG_SYS_ARCH>/cpu/<CONFIG_SYS_CPU>/<CONFIG_SYS_SOC>.

	  This is optional.  For those targets without the SoC directory,
	  leave this option empty.

config SYS_VENDOR
	string
	help
	  This option should contain the vendor name of the target board.
	  If it is set and
	  board/<CONFIG_SYS_VENDOR>/common/Makefile exists, the vendor common
	  directory is compiled.
	  If CONFIG_SYS_BOARD is also set, the sources under
	  board/<CONFIG_SYS_VENDOR>/<CONFIG_SYS_BOARD> directory are compiled.

	  This is optional.  For those targets without the vendor directory,
	  leave this option empty.

config SYS_BOARD
	string
	help
	  This option should contain the name of the target board.
	  If it is set, either board/<CONFIG_SYS_VENDOR>/<CONFIG_SYS_BOARD>
	  or board/<CONFIG_SYS_BOARD> directory is compiled depending on
	  whether CONFIG_SYS_VENDOR is set or not.

	  This is optional.  For those targets without the board directory,
	  leave this option empty.

config SYS_CONFIG_NAME
	string
	help
	  This option should contain the base name of board header file.
	  The header file include/configs/<CONFIG_SYS_CONFIG_NAME>.h
	  should be included from include/config.h.

config SYS_DISABLE_DCACHE_OPS
	bool
	help
	 This option disables dcache flush and dcache invalidation
	 operations. For example, on coherent systems where cache
	 operatios are not required, enable this option to avoid them.
	 Note that, its up to the individual architectures to implement
	 this functionality.

config SYS_IMMR
	hex "Address for the Internal Memory-Mapped Registers (IMMR) window"
	depends on PPC || FSL_LSCH2 || FSL_LSCH3 || ARCH_LS1021A
	default 0xFF000000 if MPC8xx
	default 0xF0000000 if ARCH_MPC8313
	default 0xE0000000 if MPC83xx && !ARCH_MPC8313
	default 0x01000000 if ARCH_LS1021A || FSL_LSCH2 || FSL_LSCH3
	default 0xFFE00000 if ARCH_P1010 || ARCH_P1011 || ARCH_P1020 || \
			      ARCH_P1021 || ARCH_P1024 || ARCH_P1025 || \
			      ARCH_P2020
	default SYS_CCSRBAR_DEFAULT
	help
	  Address for the Internal Memory-Mapped Registers (IMMR) window used
	  to configure the features of many Freescale / NXP SoCs.

config SKIP_LOWLEVEL_INIT
	bool "Skip the calls to certain low level initialization functions"
	depends on ARM || MIPS || RISCV
	help
	  If enabled, then certain low level initializations (like setting up
	  the memory controller) are omitted and/or U-Boot does not relocate
	  itself into RAM.
	  Normally this variable MUST NOT be defined. The only exception is
	  when U-Boot is loaded (to RAM) by some other boot loader or by a
	  debugger which performs these initializations itself.

config SPL_SKIP_LOWLEVEL_INIT
	bool "Skip the calls to certain low level initialization functions"
	depends on SPL && (ARM || MIPS || RISCV)
	help
	  If enabled, then certain low level initializations (like setting up
	  the memory controller) are omitted and/or U-Boot does not relocate
	  itself into RAM.
	  Normally this variable MUST NOT be defined. The only exception is
	  when U-Boot is loaded (to RAM) by some other boot loader or by a
	  debugger which performs these initializations itself.

config TPL_SKIP_LOWLEVEL_INIT
	bool "Skip the calls to certain low level initialization functions"
	depends on SPL && ARM
	help
	  If enabled, then certain low level initializations (like setting up
	  the memory controller) are omitted and/or U-Boot does not relocate
	  itself into RAM.
	  Normally this variable MUST NOT be defined. The only exception is
	  when U-Boot is loaded (to RAM) by some other boot loader or by a
	  debugger which performs these initializations itself.

config SKIP_LOWLEVEL_INIT_ONLY
	bool "Skip the call to lowlevel_init during early boot ONLY"
	depends on ARM
	help
	  This allows just the call to lowlevel_init() to be skipped. The
	  normal CP15 init (such as enabling the instruction cache) is still
	  performed.

config SPL_SKIP_LOWLEVEL_INIT_ONLY
	bool "Skip the call to lowlevel_init during early boot ONLY"
	depends on SPL && ARM
	help
	  This allows just the call to lowlevel_init() to be skipped. The
	  normal CP15 init (such as enabling the instruction cache) is still
	  performed.

config TPL_SKIP_LOWLEVEL_INIT_ONLY
	bool "Skip the call to lowlevel_init during early boot ONLY"
	depends on TPL && ARM
	help
	  This allows just the call to lowlevel_init() to be skipped. The
	  normal CP15 init (such as enabling the instruction cache) is still
	  performed.

config SYS_HAS_NONCACHED_MEMORY
	bool "Enable reserving a non-cached memory area for drivers"
	depends on (ARM || MIPS) && (RTL8169 || MEDIATEK_ETH)
	help
	  This is useful for drivers that would otherwise require a lot of
	  explicit cache maintenance. For some drivers it's also impossible to
	  properly maintain the cache. For example if the regions that need to
	  be flushed are not a multiple of the cache-line size, *and* padding
	  cannot be allocated between the regions to align them (i.e.  if the
	  HW requires a contiguous array of regions, and the size of each
	  region is not cache-aligned), then a flush of one region may result
	  in overwriting data that hardware has written to another region in
	  the same cache-line. This can happen for example in network drivers
	  where descriptors for buffers are typically smaller than the CPU
	  cache-line (e.g.  16 bytes vs. 32 or 64 bytes).

config SYS_NONCACHED_MEMORY
	hex "Size in bytes of the non-cached memory area"
	depends on SYS_HAS_NONCACHED_MEMORY
	default 0x100000
	help
	  Size of non-cached memory area. This area of memory will be typically
	  located right below the malloc() area and mapped uncached in the MMU.

source "arch/arc/Kconfig"
source "arch/arm/Kconfig"
source "arch/m68k/Kconfig"
source "arch/microblaze/Kconfig"
source "arch/mips/Kconfig"
source "arch/nios2/Kconfig"
source "arch/powerpc/Kconfig"
source "arch/sandbox/Kconfig"
source "arch/sh/Kconfig"
source "arch/x86/Kconfig"
source "arch/xtensa/Kconfig"
source "arch/riscv/Kconfig"

if ARM || M68K || PPC

source "arch/Kconfig.nxp"

endif

source "board/keymile/Kconfig"

if MIPS || MICROBLAZE

choice
	prompt "Endianness selection"
	help
	  Some MIPS boards can be configured for either little or big endian
	  byte order. These modes require different U-Boot images. In general there
	  is one preferred byteorder for a particular system but some systems are
	  just as commonly used in the one or the other endianness.

config SYS_BIG_ENDIAN
	bool "Big endian"
	depends on (SUPPORTS_BIG_ENDIAN && MIPS) || MICROBLAZE

config SYS_LITTLE_ENDIAN
	bool "Little endian"
	depends on (SUPPORTS_LITTLE_ENDIAN && MIPS) || MICROBLAZE

endchoice

endif
