roms: Support compile the efi bios for loongarch

Added loongarch UEFI BIOS support to compiled scripts.

  UEFI code images require 16M alignment, flash images require
16M alignment, under the loongarch architecture.This is agreed
upon when the firmware is loaded in QEMU under Loongarch.

  The naming of UEFI under loongarch refers to the x86 and arm naming methods,
and the UEFI image names in x86 and arm are:
edk2-i386-code.fd
edk2-i386-vars.fd
edk2-arm-code.fd
edk2-arm-vars.fd
So on loongarch, we named it:
edk2-loongarch64-code.fd
edk2-loongarch64-vars.fd

Signed-off-by: Xianglai Li <lixianglai@loongson.cn>
Message-ID: <20240724022245.1317884-1-lixianglai@loongson.cn>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
Xianglai Li 2024-07-24 10:22:45 +08:00 committed by Gerd Hoffmann
parent 065e2ecf79
commit b883fb93db
6 changed files with 50 additions and 3 deletions

View File

@ -64,7 +64,7 @@ Note: You need get the latest cross-tools at https://github.com/loongson/build-t
(3) Build BIOS:
See: https://github.com/tianocore/edk2-platforms/tree/master/Platform/Loongson/LoongArchQemuPkg#readme
See: https://github.com/tianocore/edk2/tree/master/OvmfPkg/LoongArchVirt#readme
Note: To build the release version of the bios, set --buildtarget=RELEASE,
the bios file path: Build/LoongArchQemu/RELEASE_GCC5/FV/QEMU_EFI.fd

View File

@ -93,7 +93,7 @@ else
iasl = find_program(get_option('iasl'), required: true)
endif
edk2_targets = [ 'arm-softmmu', 'aarch64-softmmu', 'i386-softmmu', 'x86_64-softmmu', 'riscv64-softmmu' ]
edk2_targets = [ 'arm-softmmu', 'aarch64-softmmu', 'i386-softmmu', 'x86_64-softmmu', 'riscv64-softmmu', 'loongarch64-softmmu' ]
unpack_edk2_blobs = false
foreach target : edk2_targets
if target in target_dirs

View File

@ -0,0 +1,31 @@
{
"description": "UEFI firmware for loongarch64",
"interface-types": [
"uefi"
],
"mapping": {
"device": "flash",
"executable": {
"filename": "@DATADIR@/edk2-loongarch64-code.fd",
"format": "raw"
},
"nvram-template": {
"filename": "@DATADIR@/edk2-loongarch64-vars.fd",
"format": "raw"
}
},
"targets": [
{
"architecture": "loongarch64",
"machines": [
"virt*"
]
}
],
"features": [
],
"tags": [
]
}

View File

@ -5,7 +5,8 @@ if unpack_edk2_blobs and get_option('install_blobs')
'60-edk2-aarch64.json',
'60-edk2-arm.json',
'60-edk2-i386.json',
'60-edk2-x86_64.json'
'60-edk2-x86_64.json',
'60-edk2-loongarch64.json'
]
configure_file(input: files(f),
output: f,

View File

@ -11,6 +11,8 @@ if unpack_edk2_blobs
'edk2-i386-vars.fd',
'edk2-x86_64-code.fd',
'edk2-x86_64-secure-code.fd',
'edk2-loongarch64-code.fd',
'edk2-loongarch64-vars.fd',
]
foreach f : fds

View File

@ -131,3 +131,16 @@ cpy1 = FV/RISCV_VIRT_CODE.fd edk2-riscv-code.fd
cpy2 = FV/RISCV_VIRT_VARS.fd edk2-riscv-vars.fd
pad1 = edk2-riscv-code.fd 32m
pad2 = edk2-riscv-vars.fd 32m
####################################################################################
# LoongArch64
[build.loongarch64.qemu]
conf = OvmfPkg/LoongArchVirt/LoongArchVirtQemu.dsc
arch = LOONGARCH64
plat = LoongArchVirtQemu
dest = ../pc-bios
cpy1 = FV/QEMU_EFI.fd edk2-loongarch64-code.fd
pad1 = edk2-loongarch64-code.fd 16m
cpy2 = FV/QEMU_VARS.fd edk2-loongarch64-vars.fd
pad2 = edk2-loongarch64-vars.fd 16m