Ventoy: EDK2: adapt for loogarch in edk2-edk2-stable202408

INSTALL/ventoy/ventoy_${postfix}.efi
INSTALL/ventoy/vtoyutil_${postfix}.efi
VDiskChain/Tool/vdiskchain_${postfix}.efi

Signed-off-by: Wentao Guan <guanwentao@uniontech.com>
This commit is contained in:
Wentao Guan
2024-08-26 16:03:50 +08:00
parent f14326c70f
commit babf879823
10 changed files with 632 additions and 13 deletions

View File

@@ -65,6 +65,11 @@ CONST CHAR16 *gEfiBootFileName[] =
L"\\EFI\\BOOT\\BOOTaa64.EFI",
L"\\EFI\\BOOT\\bootaa64.efi",
L"\\efi\\boot\\bootaa64.efi",
#elif defined (MDE_CPU_LOONGARCH64)
L"\\EFI\\BOOT\\GRUBLOONGARCH64.EFI",
L"\\EFI\\BOOT\\BOOTLOONGARCH64.EFI",
L"\\EFI\\BOOT\\bootloongarch64.efi",
L"\\efi\\boot\\bootloongarch64.efi",
#endif
};
@@ -109,10 +114,15 @@ STATIC EFI_STATUS EFIAPI vdisk_load_image
)
{
EFI_STATUS Status = EFI_SUCCESS;
CHAR16 TmpBuf[256] = {0};
CHAR16 TmpBuf[256];
UINT8 i;
FILEPATH_DEVICE_PATH *pFilePath = NULL;
EFI_DEVICE_PATH_PROTOCOL *pImgPath = NULL;
for (i = 0; i < 256; i++)
{
TmpBuf[i] = 0;
}
pFilePath = (FILEPATH_DEVICE_PATH *)TmpBuf;
pFilePath->Header.Type = MEDIA_DEVICE_PATH;
pFilePath->Header.SubType = MEDIA_FILEPATH_DP;

View File

@@ -37,6 +37,8 @@
#define VENTOY_UEFI_DESC L"ARM UEFI"
#elif defined (MDE_CPU_AARCH64)
#define VENTOY_UEFI_DESC L"ARM64 UEFI"
#elif defined (MDE_CPU_LOONGARCH64)
#define VENTOY_UEFI_DESC L"LOONGARCH64 UEFI"
#else
#error Unknown Processor Type
#endif

View File

@@ -94,9 +94,14 @@ EFI_STATUS EFIAPI vdisk_block_io_write
EFI_STATUS EFIAPI vdisk_fill_device_path(VOID)
{
UINTN NameLen = 0;
UINT8 TmpBuf[128] = {0};
UINT8 TmpBuf[128];
UINT8 i;
VENDOR_DEVICE_PATH *venPath = NULL;
for (i = 0; i < 128; i++)
{
TmpBuf[i] = 0;
}
venPath = (VENDOR_DEVICE_PATH *)TmpBuf;
NameLen = StrSize(VDISK_BLOCK_DEVICE_PATH_NAME);
venPath->Header.Type = HARDWARE_DEVICE_PATH;

View File

@@ -100,6 +100,11 @@ CONST CHAR16 *gEfiBootFileName[] =
L"\\EFI\\BOOT\\BOOTaa64.EFI",
L"\\EFI\\BOOT\\bootaa64.efi",
L"\\efi\\boot\\bootaa64.efi",
#elif defined (MDE_CPU_LOONGARCH64)
L"\\EFI\\BOOT\\GRUBLOONGARCH64.EFI",
L"\\EFI\\BOOT\\BOOTLOONGARCH64.EFI",
L"\\EFI\\BOOT\\bootloongarch64.efi",
L"\\efi\\boot\\bootloongarch64.efi",
#endif
};
@@ -503,10 +508,15 @@ STATIC EFI_STATUS EFIAPI ventoy_load_image
)
{
EFI_STATUS Status = EFI_SUCCESS;
CHAR16 TmpBuf[256] = {0};
CHAR16 TmpBuf[256];
UINT8 i;
FILEPATH_DEVICE_PATH *pFilePath = NULL;
EFI_DEVICE_PATH_PROTOCOL *pImgPath = NULL;
for (i = 0; i < 256; i++)
{
TmpBuf[i] = 0;
}
pFilePath = (FILEPATH_DEVICE_PATH *)TmpBuf;
pFilePath->Header.Type = MEDIA_DEVICE_PATH;
pFilePath->Header.SubType = MEDIA_FILEPATH_DP;

View File

@@ -189,6 +189,10 @@ typedef struct ventoy_virt_chunk
#define VENTOY_UEFI_DESC L"ARM64 UEFI"
#define ISO9660_EFI_DRIVER_PATH L"\\ventoy\\iso9660_aa64.efi"
#define UDF_EFI_DRIVER_PATH L"\\ventoy\\udf_aa64.efi"
#elif defined (MDE_CPU_LOONGARCH64)
#define VENTOY_UEFI_DESC L"LOONGARCH64 UEFI"
#define ISO9660_EFI_DRIVER_PATH L"\\ventoy\\iso9660_la64.efi"
#define UDF_EFI_DRIVER_PATH L"\\ventoy\\udf_la64.efi"
#else
#error Unknown Processor Type
#endif

View File

@@ -271,17 +271,12 @@ STATIC EFI_STATUS EFIAPI ventoy_write_iso_sector
UINT32 i = 0;
UINTN secLeft = 0;
UINTN secRead = 0;
UINT64 ReadStart = 0;
UINT64 ReadEnd = 0;
UINT8 *pCurBuf = (UINT8 *)Buffer;
ventoy_img_chunk *pchunk = g_chunk;
EFI_BLOCK_IO_PROTOCOL *pRawBlockIo = gBlockData.pRawBlockIo;
debug("write iso sector %lu count %u", Sector, Count);
ReadStart = Sector * 2048;
ReadEnd = (Sector + Count) * 2048;
for (i = 0; Count > 0 && i < g_img_chunk_num; i++, pchunk++)
{
if (Sector >= pchunk->img_start_sector && Sector <= pchunk->img_end_sector)
@@ -603,7 +598,6 @@ EFI_STATUS EFIAPI ventoy_block_io_write
)
{
UINT32 secNum = 0;
UINT64 offset = 0;
(VOID)This;
(VOID)MediaId;
@@ -614,7 +608,6 @@ EFI_STATUS EFIAPI ventoy_block_io_write
}
secNum = BufferSize / 2048;
offset = Lba * 2048;
return ventoy_write_iso_sector(Lba, secNum, Buffer);
}
@@ -673,13 +666,18 @@ EFI_STATUS EFIAPI ventoy_fill_device_path(VOID)
{
UINTN CurVtoyDpId = 0;
UINTN NameLen = 0;
UINT8 TmpBuf[128] = {0};
UINT8 TmpBuf[128];
UINT8 i;
VENDOR_DEVICE_PATH *venPath = NULL;
CHAR16 VtoyDpName[32];
CurVtoyDpId = ventoy_get_current_device_path_id();
UnicodeSPrintAsciiFormat(VtoyDpName, sizeof(VtoyDpName), "ventoy_%03lu", CurVtoyDpId);
for (i = 0; i < 128; i++)
{
TmpBuf[i] = 0;
}
venPath = (VENDOR_DEVICE_PATH *)TmpBuf;
NameLen = StrSize(VtoyDpName);
venPath->Header.Type = HARDWARE_DEVICE_PATH;

View File

@@ -14,7 +14,7 @@
PLATFORM_VERSION = 0.98
DSC_SPECIFICATION = 0x00010005
OUTPUT_DIRECTORY = Build/MdeModule
SUPPORTED_ARCHITECTURES = IA32|X64|EBC|ARM|AARCH64
SUPPORTED_ARCHITECTURES = IA32|X64|EBC|ARM|AARCH64|LOONGARCH64
BUILD_TARGETS = DEBUG|RELEASE|NOOPT
SKUID_IDENTIFIER = DEFAULT