boot/opensbi: new package
authorAlistair Francis <Alistair.Francis@wdc.com>
Wed, 20 Mar 2019 23:05:21 +0000 (23:05 +0000)
committerThomas Petazzoni <thomas.petazzoni@bootlin.com>
Tue, 26 Mar 2019 12:30:48 +0000 (13:30 +0100)
OpenSBI is a much improved alternative to BBL (riscv-pk). Add OpenSBI
support to buildroot.

Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
[Thomas:
 - disable target installation, as we install nothing
 - enable staging installation
 - enable images installation only when needed
 - improve the comment about the staging installation]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
DEVELOPERS
boot/Config.in
boot/opensbi/Config.in [new file with mode: 0644]
boot/opensbi/opensbi.mk [new file with mode: 0644]

index 002ffa09c70a525ec1f6d324d860a7204768109b..d21e494b1426dbd2d993e3d71334589e31a555c3 100644 (file)
@@ -122,6 +122,7 @@ F:  package/kvazaar/
 F:     package/v4l2loopback/
 
 N:     Alistair Francis <alistair@alistair23.me>
+F:     boot/opensbi/
 F:     package/xen/
 
 N:     Alvaro G. M <alvaro.gamez@hazent.com>
index 74481e7545a1608852fe9a4073947a7185f2733c..97bd3de6e950e67210e55071ca08bd569b888c53 100644 (file)
@@ -14,6 +14,7 @@ source "boot/lpc32xxcdl/Config.in"
 source "boot/mv-ddr-marvell/Config.in"
 source "boot/mxs-bootlets/Config.in"
 source "boot/optee-os/Config.in"
+source "boot/opensbi/Config.in"
 source "boot/riscv-pk/Config.in"
 source "boot/s500-bootloader/Config.in"
 source "boot/shim/Config.in"
diff --git a/boot/opensbi/Config.in b/boot/opensbi/Config.in
new file mode 100644 (file)
index 0000000..5f3cc13
--- /dev/null
@@ -0,0 +1,25 @@
+config BR2_TARGET_OPENSBI
+       bool "opensbi"
+       depends on BR2_riscv
+       help
+         OpenSBI aims to provide an open-source and extensible
+         implementation of the RISC-V SBI specification for a platform
+         specific firmware (M-mode) and a general purpose OS,
+         hypervisor or bootloader (S-mode or HS-mode). OpenSBI
+         implementation can be easily extended by RISC-V platform or
+         System-on-Chip vendors to fit a particular hadware
+         configuration.
+
+         https://github.com/riscv/opensbi.git
+
+if BR2_TARGET_OPENSBI
+config BR2_TARGET_OPENSBI_PLAT
+       string "OpenSBI Platform"
+       default ""
+       help
+         Specifies the OpenSBI platform to build. If no platform is
+         specified only the OpenSBI platform independent static
+         library libsbi.a is built. If a platform is specified then
+         the platform specific static library libplatsbi.a and firmware
+         examples are built.
+endif
diff --git a/boot/opensbi/opensbi.mk b/boot/opensbi/opensbi.mk
new file mode 100644 (file)
index 0000000..b0b413a
--- /dev/null
@@ -0,0 +1,41 @@
+################################################################################
+#
+# opensbi
+#
+################################################################################
+
+OPENSBI_VERSION = v0.3
+OPENSBI_SITE = $(call github,riscv,opensbi,$(OPENSBI_VERSION))
+OPENSBI_LICENSE = BSD-2-Clause
+OPENSBI_LICENSE_FILES = COPYING.BSD
+OPENSBI_INSTALL_TARGET = NO
+OPENSBI_INSTALL_STAGING = YES
+
+OPENSBI_MAKE_ENV = \
+       CROSS_COMPILE=$(TARGET_CROSS)
+
+OPENSBI_PLAT = $(call qstrip,$(BR2_TARGET_OPENSBI_PLAT))
+ifneq ($(OPENSBI_PLAT),)
+OPENSBI_MAKE_ENV += PLATFORM=$(OPENSBI_PLAT)
+endif
+
+define OPENSBI_BUILD_CMDS
+       $(TARGET_MAKE_ENV) $(OPENSBI_MAKE_ENV) $(MAKE) -C $(@D)
+endef
+
+ifneq ($(OPENSBI_PLAT),)
+OPENSBI_INSTALL_IMAGES = YES
+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
+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
+# $(STAGING_DIR)/usr/lib
+define OPENSBI_INSTALL_STAGING_CMDS
+       $(INSTALL) -m 0644 -D $(@D)/build/lib/libsbi.a $(STAGING_DIR)/usr/share/opensbi/libsbi.a
+endef
+
+$(eval $(generic-package))