summaryrefslogtreecommitdiffstats
path: root/external/poky/meta/recipes-bsp/opensbi
diff options
context:
space:
mode:
Diffstat (limited to 'external/poky/meta/recipes-bsp/opensbi')
-rw-r--r--external/poky/meta/recipes-bsp/opensbi/files/0001-Makefile-Don-t-specify-mabi-or-march.patch36
-rw-r--r--external/poky/meta/recipes-bsp/opensbi/opensbi-payloads.inc21
-rw-r--r--external/poky/meta/recipes-bsp/opensbi/opensbi_0.6.bb48
3 files changed, 105 insertions, 0 deletions
diff --git a/external/poky/meta/recipes-bsp/opensbi/files/0001-Makefile-Don-t-specify-mabi-or-march.patch b/external/poky/meta/recipes-bsp/opensbi/files/0001-Makefile-Don-t-specify-mabi-or-march.patch
new file mode 100644
index 00000000..d2a8048e
--- /dev/null
+++ b/external/poky/meta/recipes-bsp/opensbi/files/0001-Makefile-Don-t-specify-mabi-or-march.patch
@@ -0,0 +1,36 @@
+From fe9860fd85e49a75bef545e5d9914070491e8002 Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair.francis@wdc.com>
+Date: Fri, 15 Feb 2019 14:57:41 -0800
+Subject: [PATCH] Makefile: Don't specify mabi or march
+
+To avoid
+ can't link double-float modules with soft-float modules
+errors when building 32-bit openSBI don't specify mabi or march.
+
+Upstream-Status: Inappropriate [Fixes a 32-bit OE flow bug]
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+
+---
+ Makefile | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index ccf8ea3..69e5b38 100644
+--- a/Makefile
++++ b/Makefile
+@@ -169,7 +169,6 @@ GENFLAGS += $(firmware-genflags-y)
+ CFLAGS = -g -Wall -Werror -ffreestanding -nostdlib -fno-strict-aliasing -O2
+ CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
+ CFLAGS += -mno-save-restore -mstrict-align
+-CFLAGS += -mabi=$(PLATFORM_RISCV_ABI) -march=$(PLATFORM_RISCV_ISA)
+ CFLAGS += -mcmodel=$(PLATFORM_RISCV_CODE_MODEL)
+ CFLAGS += $(GENFLAGS)
+ CFLAGS += $(platform-cflags-y)
+@@ -183,7 +182,6 @@ CPPFLAGS += $(firmware-cppflags-y)
+ ASFLAGS = -g -Wall -nostdlib -D__ASSEMBLY__
+ ASFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
+ ASFLAGS += -mno-save-restore -mstrict-align
+-ASFLAGS += -mabi=$(PLATFORM_RISCV_ABI) -march=$(PLATFORM_RISCV_ISA)
+ ASFLAGS += -mcmodel=$(PLATFORM_RISCV_CODE_MODEL)
+ ASFLAGS += $(GENFLAGS)
+ ASFLAGS += $(platform-asflags-y)
diff --git a/external/poky/meta/recipes-bsp/opensbi/opensbi-payloads.inc b/external/poky/meta/recipes-bsp/opensbi/opensbi-payloads.inc
new file mode 100644
index 00000000..2e329432
--- /dev/null
+++ b/external/poky/meta/recipes-bsp/opensbi/opensbi-payloads.inc
@@ -0,0 +1,21 @@
+def riscv_get_extra_oemake_image(d):
+ sbi_payload = d.getVar('RISCV_SBI_PAYLOAD')
+ deploy_dir = d.getVar('DEPLOY_DIR_IMAGE')
+
+ if sbi_payload is None:
+ return ""
+
+ return "FW_PAYLOAD_PATH=" + deploy_dir + "/" + sbi_payload
+
+def riscv_get_do_compile_depends(d):
+ sbi_payload = d.getVar('RISCV_SBI_PAYLOAD')
+
+ if sbi_payload is None:
+ return ""
+
+ if 'linux' in sbi_payload or 'Image' in sbi_payload:
+ return "virtual/kernel:do_deploy"
+ if 'u-boot.bin' in sbi_payload:
+ return "virtual/bootloader:do_deploy"
+
+ return ""
diff --git a/external/poky/meta/recipes-bsp/opensbi/opensbi_0.6.bb b/external/poky/meta/recipes-bsp/opensbi/opensbi_0.6.bb
new file mode 100644
index 00000000..56f2d4b9
--- /dev/null
+++ b/external/poky/meta/recipes-bsp/opensbi/opensbi_0.6.bb
@@ -0,0 +1,48 @@
+SUMMARY = "RISC-V Open Source Supervisor Binary Interface (OpenSBI)"
+DESCRIPTION = "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."
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING.BSD;md5=42dd9555eb177f35150cf9aa240b61e5"
+
+require opensbi-payloads.inc
+
+inherit autotools-brokensep deploy
+
+SRCREV = "ac5e821d50be631f26274765a59bc1b444ffd862"
+SRC_URI = "git://github.com/riscv/opensbi.git \
+ file://0001-Makefile-Don-t-specify-mabi-or-march.patch \
+ "
+
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE += "PLATFORM=${RISCV_SBI_PLAT} I=${D}"
+# If RISCV_SBI_PAYLOAD is set then include it as a payload
+EXTRA_OEMAKE_append = " ${@riscv_get_extra_oemake_image(d)}"
+
+# Required if specifying a custom payload
+do_compile[depends] += "${@riscv_get_do_compile_depends(d)}"
+
+do_install_append() {
+ # In the future these might be required as a dependency for other packages.
+ # At the moment just delete them to avoid warnings
+ rm -r ${D}/include
+ rm -r ${D}/platform/${RISCV_SBI_PLAT}/lib
+ rm -r ${D}/platform/${RISCV_SBI_PLAT}/firmware/payloads
+ rm -r ${D}/lib
+}
+
+do_deploy () {
+ install -m 755 ${D}/platform/${RISCV_SBI_PLAT}/firmware/fw_payload.* ${DEPLOYDIR}/
+ install -m 755 ${D}/platform/${RISCV_SBI_PLAT}/firmware/fw_jump.* ${DEPLOYDIR}/
+ install -m 755 ${D}/platform/${RISCV_SBI_PLAT}/firmware/fw_dynamic.* ${DEPLOYDIR}/
+}
+
+addtask deploy before do_build after do_install
+
+FILES_${PN} += "/platform/${RISCV_SBI_PLAT}/firmware/fw_jump.*"
+FILES_${PN} += "/platform/${RISCV_SBI_PLAT}/firmware/fw_payload.*"
+FILES_${PN} += "/platform/${RISCV_SBI_PLAT}/firmware/fw_dynamic.*"
+
+COMPATIBLE_HOST = "(riscv64|riscv32).*"
+INHIBIT_PACKAGE_STRIP = "1"
+
+SECURITY_CFLAGS = ""