diff options
author | Alistair Francis <alistair.francis@wdc.com> | 2019-07-22 13:44:46 -0700 |
---|---|---|
committer | Thomas Petazzoni <thomas.petazzoni@bootlin.com> | 2019-08-03 09:46:03 +0200 |
commit | 9b5b7165deb91bad3cdb1ea0dd8f940eff75f3a9 (patch) | |
tree | e60f544cd3cb2e6064de32034abcb816a88ea78d /boot | |
parent | a12ec9ef5f391b38eb468c35cd11360cfb3fd4ec (diff) |
boot/opensbi: add support for including Linux payload
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
[Thomas:
- Config.in: move the BR2_TARGET_OPENSBI_PLAT dependency to a
"depends on", there's no need to have an if...endif block just for
that.
- Config.in: drop the BR2_TARGET_OPENSBI_LIBRARY_ONLY dependency,
since this option doesn't exist
- opensbi.mk: don't use qstrip on BR2_TARGET_OPENSBI_LINUX_PAYLOAD,
since it's a boolean option
- opensbi.mk: use += when adding linux to DEPENDENCIES
- opensbki.mk: refactor the firmware file installation with a loop]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Diffstat (limited to 'boot')
-rw-r--r-- | boot/opensbi/Config.in | 9 | ||||
-rw-r--r-- | boot/opensbi/opensbi.mk | 22 |
2 files changed, 26 insertions, 5 deletions
diff --git a/boot/opensbi/Config.in b/boot/opensbi/Config.in index 5f3cc13312..b9b0ace8af 100644 --- a/boot/opensbi/Config.in +++ b/boot/opensbi/Config.in @@ -22,4 +22,13 @@ config BR2_TARGET_OPENSBI_PLAT library libsbi.a is built. If a platform is specified then the platform specific static library libplatsbi.a and firmware examples are built. + +config BR2_TARGET_OPENSBI_LINUX_PAYLOAD + bool "Include Linux as OpenSBI Payload" + depends on BR2_TARGET_OPENSBI_PLAT != "" + depends on BR2_LINUX_KERNEL + depends on BR2_LINUX_KERNEL_IMAGE + help + Build OpenSBI with the Linux kernel as a Payload. + endif diff --git a/boot/opensbi/opensbi.mk b/boot/opensbi/opensbi.mk index 83552a5442..e202bd0b97 100644 --- a/boot/opensbi/opensbi.mk +++ b/boot/opensbi/opensbi.mk @@ -19,19 +19,31 @@ ifneq ($(OPENSBI_PLAT),) OPENSBI_MAKE_ENV += PLATFORM=$(OPENSBI_PLAT) endif +ifeq ($(BR2_TARGET_OPENSBI_LINUX_PAYLOAD),y) +OPENSBI_DEPENDENCIES += linux +OPENSBI_MAKE_ENV += FW_PAYLOAD_PATH="$(BINARIES_DIR)/Image" +endif + define OPENSBI_BUILD_CMDS $(TARGET_MAKE_ENV) $(OPENSBI_MAKE_ENV) $(MAKE) -C $(@D) endef ifneq ($(OPENSBI_PLAT),) OPENSBI_INSTALL_IMAGES = YES +OPENSBI_FW_IMAGES += jump dynamic +ifeq ($(BR2_TARGET_OPENSBI_LINUX_PAYLOAD),y) +OPENSBI_FW_IMAGES += payload +endif +endif + define OPENSBI_INSTALL_IMAGES_CMDS - $(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_jump.bin $(BINARIES_DIR)/fw_jump.bin - $(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_jump.elf $(BINARIES_DIR)/fw_jump.elf - $(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_dynamic.bin $(BINARIES_DIR)/fw_dynamic.bin - $(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_dynamic.elf $(BINARIES_DIR)/fw_dynamic.elf + $(foreach f,$(OPENSBI_FW_IMAGES),\ + $(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_$(f).bin \ + $(BINARIES_DIR)/fw_$(f).bin + $(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_$(f).elf \ + $(BINARIES_DIR)/fw_$(f).elf + ) endef -endif # libsbi.a is not a library meant to be linked in user-space code, but # with bare metal code, which is why we don't install it in |