roms: Add OpenSBI version 0.4

Add OpenSBI version 0.4 as a git submodule and as a prebult binary.

OpenSBI (https://github.com/riscv/opensbi) aims to provide an open-source
reference implementation of the RISC-V Supervisor Binary Interface (SBI)
specifications for platform-specific firmwares executing in M-mode. For all
supported platforms, OpenSBI provides several runtime firmware examples.
These example firmwares can be used to replace the legacy riscv-pk bootloader
and enable the use of well-known bootloaders such as U-Boot.

OpenSBI is distributed under the terms of the BSD 2-clause license
("Simplified BSD License" or "FreeBSD License", SPDX: BSD-2-Clause). OpenSBI
source code also contains code reused from other projects desribed here:
https://github.com/riscv/opensbi/blob/master/ThirdPartyNotices.md.

In this case all of the code we are using from OpenSBI is BSD 2-clause
as we aren't using the Kendryte code (Apache-2.0) with QEMU and libfdt
is dual licensed as BSD 2-clause (and GPL-2.0+). OpenSBI isn't being
linked with QEMU either it is just being included with QEMU.

Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Palmer Dabbelt <palmer@sifive.com>
This commit is contained in:
Alistair Francis 2019-07-16 11:47:22 -07:00 committed by Palmer Dabbelt
parent 0b18cfb8f1
commit 91f3a2f0ce
No known key found for this signature in database
GPG Key ID: EF4CA1502CCBAB41
9 changed files with 68 additions and 21 deletions

3
.gitmodules vendored
View File

@ -55,3 +55,6 @@
[submodule "slirp"] [submodule "slirp"]
path = slirp path = slirp
url = https://git.qemu.org/git/libslirp.git url = https://git.qemu.org/git/libslirp.git
[submodule "roms/opensbi"]
path = roms/opensbi
url = https://git.qemu.org/git/opensbi.git

21
LICENSE
View File

@ -1,13 +1,18 @@
The following points clarify the QEMU license: The QEMU distribution includes both the QEMU emulator and
various firmware files. These are separate programs that are
distributed together for our users' convenience, and they have
separate licenses.
1) QEMU as a whole is released under the GNU General Public License, The following points clarify the license of the QEMU emulator:
version 2.
2) Parts of QEMU have specific licenses which are compatible with the 1) The QEMU emulator as a whole is released under the GNU General
GNU General Public License, version 2. Hence each source file contains Public License, version 2.
its own licensing information. Source files with no licensing information
are released under the GNU General Public License, version 2 or (at your 2) Parts of the QEMU emulator have specific licenses which are compatible
option) any later version. with the GNU General Public License, version 2. Hence each source file
contains its own licensing information. Source files with no licensing
information are released under the GNU General Public License, version
2 or (at your option) any later version.
As of July 2013, contributions under version 2 of the GNU General Public As of July 2013, contributions under version 2 of the GNU General Public
License (and no later version) are only accepted for the following files License (and no later version) are only accepted for the following files

View File

@ -770,7 +770,10 @@ palcode-clipper \
u-boot.e500 u-boot-sam460-20100605.bin \ u-boot.e500 u-boot-sam460-20100605.bin \
qemu_vga.ndrv \ qemu_vga.ndrv \
edk2-licenses.txt \ edk2-licenses.txt \
hppa-firmware.img hppa-firmware.img \
opensbi-riscv32-virt-fw_jump.bin \
opensbi-riscv64-sifive_u-fw_jump.bin opensbi-riscv64-virt-fw_jump.bin
DESCS=50-edk2-i386-secure.json 50-edk2-x86_64-secure.json \ DESCS=50-edk2-i386-secure.json 50-edk2-x86_64-secure.json \
60-edk2-aarch64.json 60-edk2-arm.json 60-edk2-i386.json 60-edk2-x86_64.json 60-edk2-aarch64.json 60-edk2-arm.json 60-edk2-i386.json 60-edk2-x86_64.json

View File

@ -63,3 +63,14 @@
ARM. Licensing information is given in "edk2-licenses.txt". The image files ARM. Licensing information is given in "edk2-licenses.txt". The image files
are described by the JSON documents in the "pc-bios/descriptors" directory, are described by the JSON documents in the "pc-bios/descriptors" directory,
which conform to the "docs/interop/firmware.json" schema. which conform to the "docs/interop/firmware.json" schema.
- OpenSBI (https://github.com/riscv/opensbi) aims to provide an open-source
reference implementation of the RISC-V Supervisor Binary Interface (SBI)
specifications for platform-specific firmwares executing in M-mode. For all
supported platforms, OpenSBI provides several runtime firmware examples.
These example firmwares can be used to replace the legacy riscv-pk bootloader
and enable the use of well-known bootloaders such as U-Boot.
OpenSBI is distributed under the terms of the BSD 2-clause license
("Simplified BSD License" or "FreeBSD License", SPDX: BSD-2-Clause). OpenSBI
source code also contains code reused from other projects desribed here:
https://github.com/riscv/opensbi/blob/master/ThirdPartyNotices.md.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -37,6 +37,8 @@ find-cross-prefix = $(subst gcc,,$(notdir $(call find-cross-gcc,$(1))))
powerpc64_cross_prefix := $(call find-cross-prefix,powerpc64) powerpc64_cross_prefix := $(call find-cross-prefix,powerpc64)
powerpc_cross_prefix := $(call find-cross-prefix,powerpc) powerpc_cross_prefix := $(call find-cross-prefix,powerpc)
x86_64_cross_prefix := $(call find-cross-prefix,x86_64) x86_64_cross_prefix := $(call find-cross-prefix,x86_64)
riscv32_cross_prefix := $(call find-cross-prefix,riscv32)
riscv64_cross_prefix := $(call find-cross-prefix,riscv64)
# tag our seabios builds # tag our seabios builds
SEABIOS_EXTRAVERSION="-prebuilt.qemu.org" SEABIOS_EXTRAVERSION="-prebuilt.qemu.org"
@ -52,18 +54,21 @@ EDK2_EFIROM = edk2/BaseTools/Source/C/bin/EfiRom
default: default:
@echo "nothing is build by default" @echo "nothing is build by default"
@echo "available build targets:" @echo "available build targets:"
@echo " bios -- update bios.bin (seabios)" @echo " bios -- update bios.bin (seabios)"
@echo " vgabios -- update vgabios binaries (seabios)" @echo " vgabios -- update vgabios binaries (seabios)"
@echo " sgabios -- update sgabios binaries" @echo " sgabios -- update sgabios binaries"
@echo " pxerom -- update nic roms (bios only)" @echo " pxerom -- update nic roms (bios only)"
@echo " efirom -- update nic roms (bios+efi)" @echo " efirom -- update nic roms (bios+efi)"
@echo " slof -- update slof.bin" @echo " slof -- update slof.bin"
@echo " skiboot -- update skiboot.lid" @echo " skiboot -- update skiboot.lid"
@echo " u-boot.e500 -- update u-boot.e500" @echo " u-boot.e500 -- update u-boot.e500"
@echo " u-boot.sam460 -- update u-boot.sam460" @echo " u-boot.sam460 -- update u-boot.sam460"
@echo " efi -- update UEFI (edk2) platform firmware" @echo " efi -- update UEFI (edk2) platform firmware"
@echo " clean -- delete the files generated by the previous" \ @echo " opensbi32-virt -- update OpenSBI for 32-bit virt machine"
"build targets" @echo " opensbi64-virt -- update OpenSBI for 64-bit virt machine"
@echo " opensbi64-sifive_u -- update OpenSBI for 64-bit sifive_u machine"
@echo " clean -- delete the files generated by the previous" \
"build targets"
bios: build-seabios-config-seabios-128k build-seabios-config-seabios-256k bios: build-seabios-config-seabios-128k build-seabios-config-seabios-256k
cp seabios/builds/seabios-128k/bios.bin ../pc-bios/bios.bin cp seabios/builds/seabios-128k/bios.bin ../pc-bios/bios.bin
@ -162,6 +167,24 @@ skiboot:
efi: edk2-basetools efi: edk2-basetools
$(MAKE) -f Makefile.edk2 $(MAKE) -f Makefile.edk2
opensbi32-virt:
$(MAKE) -C opensbi \
CROSS_COMPILE=$(riscv32_cross_prefix) \
PLATFORM="qemu/virt"
cp opensbi/build/platform/qemu/virt/firmware/fw_jump.bin ../pc-bios/opensbi-riscv32-virt-fw_jump.bin
opensbi64-virt:
$(MAKE) -C opensbi \
CROSS_COMPILE=$(riscv64_cross_prefix) \
PLATFORM="qemu/virt"
cp opensbi/build/platform/qemu/virt/firmware/fw_jump.bin ../pc-bios/opensbi-riscv64-virt-fw_jump.bin
opensbi64-sifive_u:
$(MAKE) -C opensbi \
CROSS_COMPILE=$(riscv64_cross_prefix) \
PLATFORM="qemu/sifive_u"
cp opensbi/build/platform/qemu/virt/firmware/fw_jump.bin ../pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin
clean: clean:
rm -rf seabios/.config seabios/out seabios/builds rm -rf seabios/.config seabios/out seabios/builds
$(MAKE) -C sgabios clean $(MAKE) -C sgabios clean
@ -173,3 +196,4 @@ clean:
$(MAKE) -C u-boot-sam460ex distclean $(MAKE) -C u-boot-sam460ex distclean
$(MAKE) -C skiboot clean $(MAKE) -C skiboot clean
$(MAKE) -f Makefile.edk2 clean $(MAKE) -f Makefile.edk2 clean
$(MAKE) -C opensbi clean

1
roms/opensbi Submodule

@ -0,0 +1 @@
Subproject commit ce228ee0919deb9957192d723eecc8aaae2697c6