roms: Add virtual Boot ROM for NPCM7xx SoCs

This is a minimalistic boot ROM written specifically for use with QEMU.
It supports loading the second-stage loader from SPI flash into RAM, SMP
boot, and not much else.

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Havard Skinnemoen <hskinnemoen@google.com>
Message-id: 20200911052101.2602693-7-hskinnemoen@google.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Havard Skinnemoen 2020-09-10 22:20:53 -07:00 committed by Peter Maydell
parent b773acf4a6
commit d1cb5eda67
7 changed files with 20 additions and 0 deletions

3
.gitmodules vendored
View File

@ -61,3 +61,6 @@
[submodule "meson"] [submodule "meson"]
path = meson path = meson
url = https://github.com/mesonbuild/meson/ url = https://github.com/mesonbuild/meson/
[submodule "roms/vbootrom"]
path = roms/vbootrom
url = https://github.com/google/vbootrom.git

View File

@ -757,6 +757,8 @@ L: qemu-arm@nongnu.org
S: Supported S: Supported
F: hw/*/npcm7xx* F: hw/*/npcm7xx*
F: include/hw/*/npcm7xx* F: include/hw/*/npcm7xx*
F: pc-bios/npcm7xx_bootrom.bin
F: roms/vbootrom
nSeries nSeries
M: Andrzej Zaborowski <balrogg@gmail.com> M: Andrzej Zaborowski <balrogg@gmail.com>

View File

@ -71,3 +71,9 @@
("Simplified BSD License" or "FreeBSD License", SPDX: BSD-2-Clause). OpenSBI ("Simplified BSD License" or "FreeBSD License", SPDX: BSD-2-Clause). OpenSBI
source code also contains code reused from other projects desribed here: source code also contains code reused from other projects desribed here:
https://github.com/riscv/opensbi/blob/master/ThirdPartyNotices.md. https://github.com/riscv/opensbi/blob/master/ThirdPartyNotices.md.
- npcm7xx_bootrom.bin is a simplified, free (Apache 2.0) boot ROM for Nuvoton
NPCM7xx BMC devices. It currently implements the bare minimum to load, parse,
initialize and run boot images stored in SPI flash, but may grow more
features over time as needed. The source code is available at:
https://github.com/google/vbootrom

View File

@ -81,6 +81,7 @@ blobs = files(
'opensbi-riscv64-generic-fw_dynamic.bin', 'opensbi-riscv64-generic-fw_dynamic.bin',
'opensbi-riscv32-generic-fw_dynamic.elf', 'opensbi-riscv32-generic-fw_dynamic.elf',
'opensbi-riscv64-generic-fw_dynamic.elf', 'opensbi-riscv64-generic-fw_dynamic.elf',
'npcm7xx_bootrom.bin',
) )
if install_blobs if install_blobs

BIN
pc-bios/npcm7xx_bootrom.bin Normal file

Binary file not shown.

View File

@ -34,6 +34,7 @@ find-cross-gcc = $(firstword $(wildcard $(patsubst %ld,%gcc,$(call find-cross-ld
# finally strip off path + toolname so we get the prefix # finally strip off path + toolname so we get the prefix
find-cross-prefix = $(subst gcc,,$(notdir $(call find-cross-gcc,$(1)))) find-cross-prefix = $(subst gcc,,$(notdir $(call find-cross-gcc,$(1))))
arm_cross_prefix := $(call find-cross-prefix,arm)
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)
@ -63,6 +64,7 @@ default help:
@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 " npcm7xx_bootrom -- update vbootrom for npcm7xx"
@echo " efi -- update UEFI (edk2) platform firmware" @echo " efi -- update UEFI (edk2) platform firmware"
@echo " opensbi32-generic -- update OpenSBI for 32-bit generic machine" @echo " opensbi32-generic -- update OpenSBI for 32-bit generic machine"
@echo " opensbi64-generic -- update OpenSBI for 64-bit generic machine" @echo " opensbi64-generic -- update OpenSBI for 64-bit generic machine"
@ -185,6 +187,10 @@ bios-microvm:
$(MAKE) -C qboot $(MAKE) -C qboot
cp qboot/bios.bin ../pc-bios/bios-microvm.bin cp qboot/bios.bin ../pc-bios/bios-microvm.bin
npcm7xx_bootrom:
$(MAKE) -C vbootrom CROSS_COMPILE=$(arm_cross_prefix)
cp vbootrom/npcm7xx_bootrom.bin ../pc-bios/npcm7xx_bootrom.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
@ -198,3 +204,4 @@ clean:
$(MAKE) -f Makefile.edk2 clean $(MAKE) -f Makefile.edk2 clean
$(MAKE) -C opensbi clean $(MAKE) -C opensbi clean
$(MAKE) -C qboot clean $(MAKE) -C qboot clean
$(MAKE) -C vbootrom clean

1
roms/vbootrom Submodule

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