summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/arch/riscv/Kconfig20
-rw-r--r--src/arch/riscv/Makefile.mk7
2 files changed, 24 insertions, 3 deletions
diff --git a/src/arch/riscv/Kconfig b/src/arch/riscv/Kconfig
index 66c64c2cd3..148d966059 100644
--- a/src/arch/riscv/Kconfig
+++ b/src/arch/riscv/Kconfig
@@ -55,15 +55,29 @@ config RISCV_OPENSBI
Load OpenSBI after payload has been loaded and use it to
provide the SBI and to handover control to payload.
+if RISCV_OPENSBI
+
+config OPENSBI_BLOB
+ bool "Include OpenSBI ELF binary blob"
+ depends on RISCV_OPENSBI
+ help
+ If enabled it allows to specify a file path to an already compiled OpenSBI binary.
+ If disabled the OpenSBI binary will be compiled from upstream OpenSBI repository.
+ This option is discouraged as compatibility with out-of-tree blobs may break anytime.
+
+config OPENSBI_BLOB_PATH
+ string "Path to external opensbi.elf"
+ depends on OPENSBI_BLOB
+ help
+ Absolute (or relative to coreboot directory) path to the OpenSBI ELF file.
+
config OPENSBI_PLATFORM
string
- depends on RISCV_HAS_OPENSBI
help
The OpenSBI platform to build for.
config OPENSBI_TEXT_START
hex
- depends on RISCV_HAS_OPENSBI
help
The linking address used to build opensbi.
@@ -77,6 +91,8 @@ config OPENSBI_FW_DYNAMIC_BOOT_HART
that is the mode usually used for the payload. If the hart does not support
Supervisor mode OpenSBI will again look for a hart that does support it.
+endif # RISCV_OPENSBI
+
config ARCH_RISCV_U
# U (user) mode is for programs.
bool
diff --git a/src/arch/riscv/Makefile.mk b/src/arch/riscv/Makefile.mk
index 51ed016653..bda392adb4 100644
--- a/src/arch/riscv/Makefile.mk
+++ b/src/arch/riscv/Makefile.mk
@@ -159,7 +159,12 @@ $(OPENSBI_TARGET): $(obj)/config.h | $(OPENSBI_SOURCE)
FW_PAYLOAD=n \
FW_TEXT_START=$(CONFIG_OPENSBI_TEXT_START)
-$(OPENSBI): $(OPENSBI_TARGET)
+# build upstream OpenSBI source tree
+opensbi-source-y = $(OPENSBI_TARGET)
+# get OpenSBI from specified binary
+opensbi-source-$(CONFIG_OPENSBI_BLOB) = $(call strip_quotes,$(CONFIG_OPENSBI_BLOB_PATH))
+
+$(OPENSBI): $(opensbi-source-y)
cp $< $@
OPENSBI_CBFS := $(CONFIG_CBFS_PREFIX)/opensbi