mirror of
https://github.com/u-boot/u-boot.git
synced 2024-11-30 08:03:32 +08:00
1e48392e32
This patch fixes u-boot hanging on the first printf("%x", val). Some toolchains built without multilib enabled may produce u-boot freezing on first u64 shift operation, as in lib/vsprintf.c number() function. Using our private libgcc solves the issue. Setting private libgcc enabled at architecture level to avoid similar issues, it should not harm. Signed-off-by: Angelo Durgehello <angelo@kernel-space.org>
515 lines
13 KiB
Plaintext
515 lines
13 KiB
Plaintext
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 USE_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
|
|
select 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 DM_EVENT
|
|
imply SPL_SEPARATE_BSS if SPL
|
|
imply DM_SERIAL
|
|
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_EVENT
|
|
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_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 MONITOR_IS_IN_RAM
|
|
bool "U-Boot is loaded in to RAM by a pre-loader"
|
|
depends on M68K || NIOS2
|
|
|
|
menu "Skipping low level initialization functions"
|
|
depends on ARM || MIPS || RISCV
|
|
|
|
config SKIP_LOWLEVEL_INIT
|
|
bool "Skip calls to certain low level initialization functions"
|
|
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 calls to certain low level initialization functions in SPL"
|
|
depends on SPL
|
|
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 calls to certain low level initialization functions in TPL"
|
|
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 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 call to lowlevel_init during early SPL 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 call to lowlevel_init during early TPL 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.
|
|
|
|
endmenu
|
|
|
|
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
|