]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/C/Common/BasePeCoff.c
BaseTools: Update GenFw/GenFv to support LoongArch platform.
[mirror_edk2.git] / BaseTools / Source / C / Common / BasePeCoff.c
index 62fbb2985c8b20a936d5361046275e7ec33f9de8..30400d1341dcff0a527dd495c40c575c2cee14f0 100644 (file)
@@ -5,6 +5,7 @@
 Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>\r
 Portions Copyright (c) 2011 - 2013, ARM Ltd. All rights reserved.<BR>\r
 Portions Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>\r
+Portions Copyright (c) 2022, Loongson Technology Corporation Limited. All rights reserved.<BR>\r
 SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
@@ -68,6 +69,14 @@ PeCoffLoaderRelocateRiscVImage (
   IN UINT64      Adjust\r
   );\r
 \r
+RETURN_STATUS\r
+PeCoffLoaderRelocateLoongArch64Image (\r
+  IN UINT16      *Reloc,\r
+  IN OUT CHAR8   *Fixup,\r
+  IN OUT CHAR8   **FixupData,\r
+  IN UINT64      Adjust\r
+  );\r
+\r
 STATIC\r
 RETURN_STATUS\r
 PeCoffLoaderGetPeHeader (\r
@@ -184,7 +193,8 @@ Returns:
       ImageContext->Machine != EFI_IMAGE_MACHINE_ARMT && \\r
       ImageContext->Machine != EFI_IMAGE_MACHINE_EBC  && \\r
       ImageContext->Machine != EFI_IMAGE_MACHINE_AARCH64 && \\r
-      ImageContext->Machine != EFI_IMAGE_MACHINE_RISCV64) {\r
+      ImageContext->Machine != EFI_IMAGE_MACHINE_RISCV64 && \\r
+      ImageContext->Machine != EFI_IMAGE_MACHINE_LOONGARCH64) {\r
     if (ImageContext->Machine == IMAGE_FILE_MACHINE_ARM) {\r
       //\r
       // There are two types of ARM images. Pure ARM and ARM/Thumb.\r
@@ -815,6 +825,9 @@ Returns:
         case EFI_IMAGE_MACHINE_RISCV64:\r
           Status = PeCoffLoaderRelocateRiscVImage (Reloc, Fixup, &FixupData, Adjust);\r
           break;\r
+        case EFI_IMAGE_MACHINE_LOONGARCH64:\r
+          Status = PeCoffLoaderRelocateLoongArch64Image (Reloc, Fixup, &FixupData, Adjust);\r
+          break;\r
         default:\r
           Status = RETURN_UNSUPPORTED;\r
           break;\r