| menu "RISC-V architecture" |
| depends on RISCV |
| |
| config SYS_ARCH |
| default "riscv" |
| |
| choice |
| prompt "Target select" |
| optional |
| |
| config TARGET_ANDES_AE350 |
| bool "Support Andes ae350" |
| |
| config TARGET_MICROCHIP_ICICLE |
| bool "Support Microchip PolarFire-SoC Icicle Board" |
| |
| config TARGET_MILKV_DUO |
| bool "Support Milk-v Duo Board" |
| |
| config TARGET_OPENPITON_RISCV64 |
| bool "Support RISC-V cores on OpenPiton SoC" |
| |
| config TARGET_QEMU_VIRT |
| bool "Support QEMU Virt Board" |
| select BOARD_LATE_INIT |
| |
| config TARGET_SIFIVE_UNLEASHED |
| bool "Support SiFive Unleashed Board" |
| |
| config TARGET_SIFIVE_UNMATCHED |
| bool "Support SiFive Unmatched Board" |
| select SYS_CACHE_SHIFT_6 |
| |
| config TARGET_SIPEED_MAIX |
| bool "Support Sipeed Maix Board" |
| select SYS_CACHE_SHIFT_6 |
| |
| config TARGET_STARFIVE_VISIONFIVE2 |
| bool "Support StarFive VisionFive2 Board" |
| select BOARD_LATE_INIT |
| |
| config TARGET_TH1520_LPI4A |
| bool "Support Sipeed's TH1520 Lichee PI 4A Board" |
| select SYS_CACHE_SHIFT_6 |
| |
| config TARGET_XILINX_MBV |
| bool "Support AMD/Xilinx MicroBlaze V" |
| |
| config TARGET_ASPEED_AST2700_IBEX |
| bool "Support Ibex RISC-V cores on Aspeed AST2700 SoC" |
| |
| endchoice |
| |
| config SYS_ICACHE_OFF |
| bool "Do not enable icache" |
| help |
| Do not enable instruction cache in U-Boot. |
| |
| config SPL_SYS_ICACHE_OFF |
| bool "Do not enable icache in SPL" |
| depends on SPL |
| default SYS_ICACHE_OFF |
| help |
| Do not enable instruction cache in SPL. |
| |
| config SYS_DCACHE_OFF |
| bool "Do not enable dcache" |
| help |
| Do not enable data cache in U-Boot. |
| |
| config SPL_SYS_DCACHE_OFF |
| bool "Do not enable dcache in SPL" |
| depends on SPL |
| default SYS_DCACHE_OFF |
| help |
| Do not enable data cache in SPL. |
| |
| config SPL_ZERO_MEM_BEFORE_USE |
| bool "Zero memory before use" |
| depends on SPL |
| help |
| Zero stack/GD/malloc area in SPL before using them, this is needed for |
| Sifive core devices that uses L2 cache to store SPL. |
| |
| # board-specific options below |
| source "board/andestech/ae350/Kconfig" |
| source "board/aspeed/ibex_ast2700/Kconfig" |
| source "board/emulation/qemu-riscv/Kconfig" |
| source "board/microchip/mpfs_icicle/Kconfig" |
| source "board/openpiton/riscv64/Kconfig" |
| source "board/sifive/unleashed/Kconfig" |
| source "board/sifive/unmatched/Kconfig" |
| source "board/sipeed/maix/Kconfig" |
| source "board/sophgo/milkv_duo/Kconfig" |
| source "board/starfive/visionfive2/Kconfig" |
| source "board/thead/th1520_lpi4a/Kconfig" |
| source "board/xilinx/mbv/Kconfig" |
| |
| # platform-specific options below |
| source "arch/riscv/cpu/andes/Kconfig" |
| source "arch/riscv/cpu/cv1800b/Kconfig" |
| source "arch/riscv/cpu/fu540/Kconfig" |
| source "arch/riscv/cpu/fu740/Kconfig" |
| source "arch/riscv/cpu/ast2700/Kconfig" |
| source "arch/riscv/cpu/generic/Kconfig" |
| source "arch/riscv/cpu/jh7110/Kconfig" |
| |
| # architecture-specific options below |
| |
| choice |
| prompt "Base ISA" |
| default ARCH_RV32I |
| |
| config ARCH_RV32I |
| bool "RV32I" |
| select 32BIT |
| help |
| Choose this option to target the RV32I base integer instruction set. |
| |
| config ARCH_RV64I |
| bool "RV64I" |
| select 64BIT |
| select PHYS_64BIT |
| help |
| Choose this option to target the RV64I base integer instruction set. |
| |
| endchoice |
| |
| config FRAMEPOINTER |
| bool "Build with frame pointer for stack unwinding" |
| help |
| Choose this option to use the frame pointer so the stack can be |
| unwound if needed. This is useful for tracing where faults came |
| from as the source may be several functions back |
| |
| If you say Y here, then the code size will be increased due to |
| having to store the fp. |
| |
| config SPL_FRAMEPOINTER |
| bool "Build SPL with frame pointer for stack unwinding" |
| depends on SPL |
| help |
| Choose this option to use the frame pointer so the stack can be |
| unwound if needed. This is useful for tracing where faults came |
| from as the source may be several functions back |
| |
| If you say Y here, then the code size will be increased due to |
| having to store the fp. |
| |
| choice |
| prompt "Code Model" |
| default CMODEL_MEDLOW |
| |
| config CMODEL_MEDLOW |
| bool "medium low code model" |
| help |
| U-Boot and its statically defined symbols must lie within a single 2 GiB |
| address range and must lie between absolute addresses -2 GiB and +2 GiB. |
| |
| config CMODEL_MEDANY |
| bool "medium any code model" |
| help |
| U-Boot and its statically defined symbols must be within any single 2 GiB |
| address range. |
| |
| endchoice |
| |
| choice |
| prompt "Run Mode" |
| default RISCV_MMODE |
| |
| config RISCV_MMODE |
| bool "Machine" |
| help |
| Choose this option to build U-Boot for RISC-V M-Mode. |
| |
| config RISCV_SMODE |
| bool "Supervisor" |
| imply DEBUG_UART |
| help |
| Choose this option to build U-Boot for RISC-V S-Mode. |
| |
| endchoice |
| |
| choice |
| prompt "SPL Run Mode" |
| default SPL_RISCV_MMODE |
| depends on SPL |
| |
| config SPL_RISCV_MMODE |
| bool "Machine" |
| help |
| Choose this option to build U-Boot SPL for RISC-V M-Mode. |
| |
| config SPL_RISCV_SMODE |
| bool "Supervisor" |
| help |
| Choose this option to build U-Boot SPL for RISC-V S-Mode. |
| |
| endchoice |
| |
| config RISCV_ISA_C |
| bool "Emit compressed instructions" |
| default y |
| help |
| Adds "C" to the ISA subsets that the toolchain is allowed to emit |
| when building U-Boot, which results in compressed instructions in the |
| U-Boot binary. |
| |
| config RISCV_ISA_F |
| bool "Standard extension for Single-Precision Floating Point" |
| default y |
| help |
| Adds "F" to the ISA string passed to the compiler. |
| |
| config RISCV_ISA_D |
| bool "Standard extension for Double-Precision Floating Point" |
| depends on RISCV_ISA_F |
| default y |
| help |
| Adds "D" to the ISA string passed to the compiler and changes the |
| riscv32 ABI from ilp32 to ilp32d and the riscv64 ABI from lp64 to |
| lp64d. |
| |
| config RISCV_ISA_ZBB |
| bool "Zbb extension support for bit manipulation instructions" |
| help |
| Adds ZBB extension (basic bit manipulation) to the ISA subsets |
| that the toolchain is allowed to emit when building U-Boot. |
| The Zbb extension provides instructions to accelerate a number |
| of bit-specific operations (count bit population, sign extending, |
| bitrotation, etc) and enables optimized string routines. |
| |
| menu "Use assembly optimized implementation of string routines" |
| |
| config USE_ARCH_STRLEN |
| bool "Use an assembly optimized implementation of strlen" |
| default y |
| depends on RISCV_ISA_ZBB |
| help |
| Enable the generation of an optimized version of strlen using |
| Zbb extension. |
| |
| config SPL_USE_ARCH_STRLEN |
| bool "Use an assembly optimized implementation of strlen for SPL" |
| default y if USE_ARCH_STRLEN |
| depends on RISCV_ISA_ZBB |
| depends on SPL |
| help |
| Enable the generation of an optimized version of strlen using |
| Zbb extension. |
| |
| config TPL_USE_ARCH_STRLEN |
| bool "Use an assembly optimized implementation of strlen for TPL" |
| default y if USE_ARCH_STRLEN |
| depends on RISCV_ISA_ZBB |
| depends on TPL |
| help |
| Enable the generation of an optimized version of strlen using |
| Zbb extension. |
| |
| config USE_ARCH_STRCMP |
| bool "Use an assembly optimized implementation of strcmp" |
| default y |
| depends on RISCV_ISA_ZBB |
| help |
| Enable the generation of an optimized version of strcmp using |
| Zbb extension. |
| |
| config SPL_USE_ARCH_STRCMP |
| bool "Use an assembly optimized implementation of strcmp for SPL" |
| default y if USE_ARCH_STRCMP |
| depends on RISCV_ISA_ZBB |
| depends on SPL |
| help |
| Enable the generation of an optimized version of strcmp using |
| Zbb extension. |
| |
| config TPL_USE_ARCH_STRCMP |
| bool "Use an assembly optimized implementation of strcmp for TPL" |
| default y if USE_ARCH_STRCMP |
| depends on RISCV_ISA_ZBB |
| depends on TPL |
| help |
| Enable the generation of an optimized version of strcmp using |
| Zbb extension. |
| |
| config USE_ARCH_STRNCMP |
| bool "Use an assembly optimized implementation of strncmp" |
| default y |
| depends on RISCV_ISA_ZBB |
| help |
| Enable the generation of an optimized version of strncmp using |
| Zbb extension. |
| |
| config SPL_USE_ARCH_STRNCMP |
| bool "Use an assembly optimized implementation of strncmp for SPL" |
| default y if USE_ARCH_STRNCMP |
| depends on RISCV_ISA_ZBB |
| depends on SPL |
| help |
| Enable the generation of an optimized version of strncmp using |
| Zbb extension. |
| |
| config TPL_USE_ARCH_STRNCMP |
| bool "Use an assembly optimized implementation of strncmp for TPL" |
| default y if USE_ARCH_STRNCMP |
| depends on RISCV_ISA_ZBB |
| depends on TPL |
| help |
| Enable the generation of an optimized version of strncmp using |
| Zbb extension. |
| |
| endmenu |
| |
| config RISCV_ISA_A |
| bool "Standard extension for Atomic Instructions" |
| default y |
| help |
| Adds "A" to the ISA string passed to the compiler. |
| |
| config DMA_ADDR_T_64BIT |
| bool |
| default y if 64BIT |
| |
| config RISCV_ACLINT |
| bool |
| depends on RISCV_MMODE |
| select REGMAP |
| select SYSCON |
| help |
| The RISC-V ACLINT block holds memory-mapped control and status registers |
| associated with software and timer interrupts. |
| |
| config SPL_RISCV_ACLINT |
| bool |
| depends on SPL_RISCV_MMODE |
| select SPL_REGMAP |
| select SPL_SYSCON |
| help |
| The RISC-V ACLINT block holds memory-mapped control and status registers |
| associated with software and timer interrupts. |
| |
| config SIFIVE_CACHE |
| bool |
| help |
| This enables the operations to configure SiFive cache |
| |
| config ANDES_PLICSW |
| bool |
| depends on RISCV_MMODE || SPL_RISCV_MMODE |
| select REGMAP |
| select SYSCON |
| select SPL_REGMAP if SPL |
| select SPL_SYSCON if SPL |
| help |
| The Andes PLICSW block holds memory-mapped claim and pending |
| registers associated with software interrupt. |
| |
| config SMP |
| bool "Symmetric Multi-Processing" |
| depends on SBI_V01 || !RISCV_SMODE |
| help |
| This enables support for systems with more than one CPU. If |
| you say N here, U-Boot will run on single and multiprocessor |
| machines, but will use only one CPU of a multiprocessor |
| machine. If you say Y here, U-Boot will run on many, but not |
| all, single processor machines. |
| |
| config SPL_SMP |
| bool "Symmetric Multi-Processing in SPL" |
| depends on SPL && SPL_RISCV_MMODE |
| default y |
| help |
| This enables support for systems with more than one CPU in SPL. |
| If you say N here, U-Boot SPL will run on single and multiprocessor |
| machines, but will use only one CPU of a multiprocessor |
| machine. If you say Y here, U-Boot SPL will run on many, but not |
| all, single processor machines. |
| |
| config NR_CPUS |
| int "Maximum number of CPUs (2-32)" |
| range 2 32 |
| depends on SMP || SPL_SMP |
| default 8 |
| help |
| On multiprocessor machines, U-Boot sets up a stack for each CPU. |
| Stack memory is pre-allocated. U-Boot must therefore know the |
| maximum number of CPUs that may be present. |
| |
| config SBI |
| bool |
| default y if RISCV_SMODE || SPL_RISCV_SMODE |
| |
| choice |
| prompt "SBI support" |
| default SBI_V02 |
| |
| config SBI_V01 |
| bool "SBI v0.1 support" |
| depends on SBI |
| help |
| This config allows kernel to use SBI v0.1 APIs. This will be |
| deprecated in future once legacy M-mode software are no longer in use. |
| |
| config SBI_V02 |
| bool "SBI v0.2 or later support" |
| depends on SBI |
| help |
| The SBI specification introduced the concept of extensions in version |
| v0.2. With this configuration option U-Boot can detect and use SBI |
| extensions. With the HSM extension introduced in SBI 0.2, only a |
| single hart needs to boot and enter the operating system. The booting |
| hart can bring up secondary harts one by one afterwards. |
| |
| Choose this option if OpenSBI release v0.7 or above is used together |
| with U-Boot. |
| |
| endchoice |
| |
| config SBI_IPI |
| bool |
| depends on SBI |
| default y if RISCV_SMODE || SPL_RISCV_SMODE |
| depends on SMP |
| |
| config XIP |
| bool "XIP mode" |
| help |
| XIP (eXecute In Place) is a method for executing code directly |
| from a NOR flash memory without copying the code to ram. |
| Say yes here if U-Boot boots from flash directly. |
| |
| config SPL_XIP |
| bool "Enable XIP mode for SPL" |
| help |
| If SPL starts in read-only memory (XIP for example) then we shouldn't |
| rely on lock variables (for example hart_lottery and available_harts_lock), |
| this affects only SPL, other stages should proceed as non-XIP. |
| |
| config AVAILABLE_HARTS |
| bool "Send IPI by available harts" |
| default y |
| help |
| By default, IPI sending mechanism will depend on available_harts. |
| If disable this, it will send IPI by CPUs node numbers of device tree. |
| |
| config SHOW_REGS |
| default y |
| bool "Show registers on unhandled exception" |
| help |
| By default only the program counter and the return address register |
| are shown in crash dumps. Enable this symbol to show all registers in |
| main U-Boot. |
| |
| config SPL_SHOW_REGS |
| bool "In SPL show registers on unhandled exception" |
| depends on SPL |
| help |
| By default only the program counter and the return address register |
| are shown in crash dumps. Enable this symbol to show all registers in |
| SPL. |
| |
| config RISCV_PRIV_1_9 |
| bool "Use version 1.9 of the RISC-V priviledged specification" |
| help |
| Older versions of the RISC-V priviledged specification had |
| separate counter enable CSRs for each privilege mode. Writing |
| to the unified mcounteren CSR on a processor implementing the |
| old specification will result in an illegal instruction |
| exception. In addition to counter CSR changes, the way virtual |
| memory is configured was also changed. |
| |
| config STACK_SIZE_SHIFT |
| int "Stack size shift" |
| default 14 |
| |
| config OF_BOARD_FIXUP |
| default y if OF_SEPARATE && RISCV_SMODE |
| |
| menu "Use assembly optimized implementation of memory routines" |
| |
| config USE_ARCH_MEMCPY |
| bool "Use an assembly optimized implementation of memcpy" |
| default y |
| help |
| Enable the generation of an optimized version of memcpy. |
| Such an implementation may be faster under some conditions |
| but may increase the binary size. |
| |
| config SPL_USE_ARCH_MEMCPY |
| bool "Use an assembly optimized implementation of memcpy for SPL" |
| default y if USE_ARCH_MEMCPY |
| depends on SPL |
| help |
| Enable the generation of an optimized version of memcpy. |
| Such an implementation may be faster under some conditions |
| but may increase the binary size. |
| |
| config TPL_USE_ARCH_MEMCPY |
| bool "Use an assembly optimized implementation of memcpy for TPL" |
| default y if USE_ARCH_MEMCPY |
| depends on TPL |
| help |
| Enable the generation of an optimized version of memcpy. |
| Such an implementation may be faster under some conditions |
| but may increase the binary size. |
| |
| config USE_ARCH_MEMMOVE |
| bool "Use an assembly optimized implementation of memmove" |
| default y |
| help |
| Enable the generation of an optimized version of memmove. |
| Such an implementation may be faster under some conditions |
| but may increase the binary size. |
| |
| config SPL_USE_ARCH_MEMMOVE |
| bool "Use an assembly optimized implementation of memmove for SPL" |
| default y if USE_ARCH_MEMCPY |
| depends on SPL |
| help |
| Enable the generation of an optimized version of memmove. |
| Such an implementation may be faster under some conditions |
| but may increase the binary size. |
| |
| config TPL_USE_ARCH_MEMMOVE |
| bool "Use an assembly optimized implementation of memmove for TPL" |
| default y if USE_ARCH_MEMCPY |
| depends on TPL |
| help |
| Enable the generation of an optimized version of memmove. |
| Such an implementation may be faster under some conditions |
| but may increase the binary size. |
| |
| config USE_ARCH_MEMSET |
| bool "Use an assembly optimized implementation of memset" |
| default y |
| help |
| Enable the generation of an optimized version of memset. |
| Such an implementation may be faster under some conditions |
| but may increase the binary size. |
| |
| config SPL_USE_ARCH_MEMSET |
| bool "Use an assembly optimized implementation of memset for SPL" |
| default y if USE_ARCH_MEMSET |
| depends on SPL |
| help |
| Enable the generation of an optimized version of memset. |
| Such an implementation may be faster under some conditions |
| but may increase the binary size. |
| |
| config TPL_USE_ARCH_MEMSET |
| bool "Use an assembly optimized implementation of memset for TPL" |
| default y if USE_ARCH_MEMSET |
| depends on TPL |
| help |
| Enable the generation of an optimized version of memset. |
| Such an implementation may be faster under some conditions |
| but may increase the binary size. |
| |
| endmenu |
| |
| config SPL_LOAD_FIT_OPENSBI_OS_BOOT |
| bool "Enable SPL (OpenSBI OS boot mode) applying linux from FIT" |
| depends on SPL_LOAD_FIT |
| help |
| Use fw_dynamic from the FIT image, and u-boot SPL will invoke it directly. |
| This is a shortcut boot flow, from u-boot SPL -> OpenSBI -> u-boot proper |
| -> linux to u-boot SPL -> OpenSBI -> linux. |
| |
| endmenu |