<div>Hi Mike,</div><div>In the V2, I added IANA, Microsoft and UEFI specification links in every patches that uses them. Associated patches<span data-emoji-typing="true">:</span></div><br><div><span data-emoji-typing="true">0008-MdePkg-Include-Add-LOONGARCH-related-definitions-.patch</span></div><div><span data-emoji-typing="true">0015-BaseTools-BaseTools-changes-for-LoongArch-platfor.patch</span></div><div><span data-emoji-typing="true">0022-MdePkg-Include-LoongArch-definitions.patch(</span>This patch<span data-emoji-typing="true">)</span></div><br><div>Please check and review them again.</div><br><div><signature id="local-a67dfd9c-c219"><p style="color:grey;font-size:11px"><br>Thanks,<br>Chao<br>--------<br><br></p></signature></div><div class="gmail_quote_attribution">On 9月 14 2022, at 5:41 δΈ‹εˆ, Chao Li <lichao@loongson.cn> wrote:</div><blockquote><div><div>REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4053</div><br><div>Add LoongArch processor related definitions.</div><br><div>For the Http boot and PXE boot types seeing this URL section "Processor</div><div>Architecture Type" for the LOONGARCH values:</div><div>https://www.iana.org/assignments/dhcpv6-parameters/dhcpv6-parameters.xhtml</div><br><div>For definitions of PE/COFF and LOONGARCH relocation types, see the</div><div>"Machine Types" and "Basic Relocation Types" sections of this URL for</div><div>LOONGARCH values:</div><div>https://docs.microsoft.com/en-us/windows/win32/debug/pe-format</div><br><div>For the register definitions of exceptions context, see the UEFI V2.10</div><div>18.2.2, 18.2.4 and 18.2.5 sections of this URL for LOONGARCH</div><div>definitions:</div><div>https://uefi.org/specs/UEFI/2.10/18_Protocols_Debugger_Support.html</div><br><div>Cc: Michael D Kinney <michael.d.kinney@intel.com></div><div>Cc: Liming Gao <gaoliming@byosoft.com.cn></div><div>Cc: Zhiguang Liu <zhiguang.liu@intel.com></div><br><div>Signed-off-by: Chao Li <lichao@loongson.cn></div><div>---</div><div>MdePkg/Include/IndustryStandard/PeImage.h | 9 ++</div><div>MdePkg/Include/Protocol/DebugSupport.h | 107 ++++++++++++++++++++--</div><div>MdePkg/Include/Protocol/PxeBaseCode.h | 3 +</div><div>MdePkg/Include/Uefi/UefiBaseType.h | 14 +++</div><div>MdePkg/Include/Uefi/UefiSpec.h | 16 ++--</div><div>5 files changed, 136 insertions(+), 13 deletions(-)</div><br><div>diff --git a/MdePkg/Include/IndustryStandard/PeImage.h b/MdePkg/Include/IndustryStandard/PeImage.h</div><div>index 3109dc20f8..dd4cc25483 100644</div><div>--- a/MdePkg/Include/IndustryStandard/PeImage.h</div><div>+++ b/MdePkg/Include/IndustryStandard/PeImage.h</div><div>@@ -10,6 +10,7 @@</div><div>Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR></div><br><div>Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR></div><br><div>Portions Copyright (c) 2016 - 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR></div><br><div>+Portions Copyright (c) 2022, Loongson Technology Corporation Limited. All rights reserved.<BR></div><br><br><br><div>SPDX-License-Identifier: BSD-2-Clause-Patent</div><br><br><br><div>@@ -38,6 +39,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent</div><div>#define IMAGE_FILE_MACHINE_RISCV32 0x5032</div><br><div>#define IMAGE_FILE_MACHINE_RISCV64 0x5064</div><br><div>#define IMAGE_FILE_MACHINE_RISCV128 0x5128</div><br><div>+#define IMAGE_FILE_MACHINE_LOONGARCH32 0x6232</div><br><div>+#define IMAGE_FILE_MACHINE_LOONGARCH64 0x6264</div><br><br><br><div>//</div><br><div>// EXE file formats</div><br><div>@@ -503,6 +506,12 @@ typedef struct {</div><div>#define EFI_IMAGE_REL_BASED_RISCV_LOW12I 7</div><br><div>#define EFI_IMAGE_REL_BASED_RISCV_LOW12S 8</div><br><br><br><div>+//</div><br><div>+// Relocation types of LoongArch processor.</div><br><div>+//</div><br><div>+#define EFI_IMAGE_REL_BASED_LOONGARCH32_MARK_LA 8</div><br><div>+#define EFI_IMAGE_REL_BASED_LOONGARCH64_MARK_LA 8</div><br><div>+</div><br><div>///</div><br><div>/// Line number format.</div><br><div>///</div><br><div>diff --git a/MdePkg/Include/Protocol/DebugSupport.h b/MdePkg/Include/Protocol/DebugSupport.h</div><div>index ec5b92a5c5..2b0ae2d157 100644</div><div>--- a/MdePkg/Include/Protocol/DebugSupport.h</div><div>+++ b/MdePkg/Include/Protocol/DebugSupport.h</div><div>@@ -654,17 +654,110 @@ typedef struct {</div><div>UINT64 X31;</div><br><div>} EFI_SYSTEM_CONTEXT_RISCV64;</div><br><br><br><div>+//</div><br><div>+// LoongArch processor exception types.</div><br><div>+//</div><br><div>+#define EXCEPT_LOONGARCH_INT 0</div><br><div>+#define EXCEPT_LOONGARCH_PIL 1</div><br><div>+#define EXCEPT_LOONGARCH_PIS 2</div><br><div>+#define EXCEPT_LOONGARCH_PIF 3</div><br><div>+#define EXCEPT_LOONGARCH_PME 4</div><br><div>+#define EXCEPT_LOONGARCH_PNR 5</div><br><div>+#define EXCEPT_LOONGARCH_PNX 6</div><br><div>+#define EXCEPT_LOONGARCH_PPI 7</div><br><div>+#define EXCEPT_LOONGARCH_ADE 8</div><br><div>+#define EXCEPT_LOONGARCH_ALE 9</div><br><div>+#define EXCEPT_LOONGARCH_BCE 10</div><br><div>+#define EXCEPT_LOONGARCH_SYS 11</div><br><div>+#define EXCEPT_LOONGARCH_BRK 12</div><br><div>+#define EXCEPT_LOONGARCH_INE 13</div><br><div>+#define EXCEPT_LOONGARCH_IPE 14</div><br><div>+#define EXCEPT_LOONGARCH_FPD 15</div><br><div>+#define EXCEPT_LOONGARCH_SXD 16</div><br><div>+#define EXCEPT_LOONGARCH_ASXD 17</div><br><div>+#define EXCEPT_LOONGARCH_FPE 18</div><br><div>+#define EXCEPT_LOONGARCH_TBR 64 // For code only, there is no such type in the ISA spec, the TLB refill is defined for an independent exception.</div><br><div>+</div><br><div>+//</div><br><div>+// LoongArch processor Interrupt types.</div><br><div>+//</div><br><div>+#define EXCEPT_LOONGARCH_INT_SIP0 0</div><br><div>+#define EXCEPT_LOONGARCH_INT_SIP1 1</div><br><div>+#define EXCEPT_LOONGARCH_INT_IP0 2</div><br><div>+#define EXCEPT_LOONGARCH_INT_IP1 3</div><br><div>+#define EXCEPT_LOONGARCH_INT_IP2 4</div><br><div>+#define EXCEPT_LOONGARCH_INT_IP3 5</div><br><div>+#define EXCEPT_LOONGARCH_INT_IP4 6</div><br><div>+#define EXCEPT_LOONGARCH_INT_IP5 7</div><br><div>+#define EXCEPT_LOONGARCH_INT_IP6 8</div><br><div>+#define EXCEPT_LOONGARCH_INT_IP7 9</div><br><div>+#define EXCEPT_LOONGARCH_INT_PMC 10</div><br><div>+#define EXCEPT_LOONGARCH_INT_TIMER 11</div><br><div>+#define EXCEPT_LOONGARCH_INT_IPI 12</div><br><div>+</div><br><div>+//</div><br><div>+// For coding convenience, define the maximum valid</div><br><div>+// LoongArch interrupt.</div><br><div>+//</div><br><div>+#define MAX_LOONGARCH_INTERRUPT 14</div><br><div>+</div><br><div>+typedef struct {</div><br><div>+ UINT64 R0;</div><br><div>+ UINT64 R1;</div><br><div>+ UINT64 R2;</div><br><div>+ UINT64 R3;</div><br><div>+ UINT64 R4;</div><br><div>+ UINT64 R5;</div><br><div>+ UINT64 R6;</div><br><div>+ UINT64 R7;</div><br><div>+ UINT64 R8;</div><br><div>+ UINT64 R9;</div><br><div>+ UINT64 R10;</div><br><div>+ UINT64 R11;</div><br><div>+ UINT64 R12;</div><br><div>+ UINT64 R13;</div><br><div>+ UINT64 R14;</div><br><div>+ UINT64 R15;</div><br><div>+ UINT64 R16;</div><br><div>+ UINT64 R17;</div><br><div>+ UINT64 R18;</div><br><div>+ UINT64 R19;</div><br><div>+ UINT64 R20;</div><br><div>+ UINT64 R21;</div><br><div>+ UINT64 R22;</div><br><div>+ UINT64 R23;</div><br><div>+ UINT64 R24;</div><br><div>+ UINT64 R25;</div><br><div>+ UINT64 R26;</div><br><div>+ UINT64 R27;</div><br><div>+ UINT64 R28;</div><br><div>+ UINT64 R29;</div><br><div>+ UINT64 R30;</div><br><div>+ UINT64 R31;</div><br><div>+</div><br><div>+ UINT64 CRMD; // CuRrent MoDe information</div><br><div>+ UINT64 PRMD; // PRe-exception MoDe information</div><br><div>+ UINT64 EUEN; // Extended component Unit ENable</div><br><div>+ UINT64 MISC; // MISCellaneous controller</div><br><div>+ UINT64 ECFG; // Exception ConFiGuration</div><br><div>+ UINT64 ESTAT; // Exception STATus</div><br><div>+ UINT64 ERA; // Exception Return Address</div><br><div>+ UINT64 BADV; // BAD Virtual address</div><br><div>+ UINT64 BADI; // BAD Instruction</div><br><div>+} EFI_SYSTEM_CONTEXT_LOONGARCH64;</div><br><div>+</div><br><div>///</div><br><div>/// Universal EFI_SYSTEM_CONTEXT definition.</div><br><div>///</div><br><div>typedef union {</div><br><div>- EFI_SYSTEM_CONTEXT_EBC *SystemContextEbc;</div><br><div>- EFI_SYSTEM_CONTEXT_IA32 *SystemContextIa32;</div><br><div>- EFI_SYSTEM_CONTEXT_X64 *SystemContextX64;</div><br><div>- EFI_SYSTEM_CONTEXT_IPF *SystemContextIpf;</div><br><div>- EFI_SYSTEM_CONTEXT_ARM *SystemContextArm;</div><br><div>- EFI_SYSTEM_CONTEXT_AARCH64 *SystemContextAArch64;</div><br><div>- EFI_SYSTEM_CONTEXT_RISCV64 *SystemContextRiscV64;</div><br><div>+ EFI_SYSTEM_CONTEXT_EBC *SystemContextEbc;</div><br><div>+ EFI_SYSTEM_CONTEXT_IA32 *SystemContextIa32;</div><br><div>+ EFI_SYSTEM_CONTEXT_X64 *SystemContextX64;</div><br><div>+ EFI_SYSTEM_CONTEXT_IPF *SystemContextIpf;</div><br><div>+ EFI_SYSTEM_CONTEXT_ARM *SystemContextArm;</div><br><div>+ EFI_SYSTEM_CONTEXT_AARCH64 *SystemContextAArch64;</div><br><div>+ EFI_SYSTEM_CONTEXT_RISCV64 *SystemContextRiscV64;</div><br><div>+ EFI_SYSTEM_CONTEXT_LOONGARCH64 *SystemContextLoongArch64;</div><br><div>} EFI_SYSTEM_CONTEXT;</div><br><br><br><div>//</div><br><div>diff --git a/MdePkg/Include/Protocol/PxeBaseCode.h b/MdePkg/Include/Protocol/PxeBaseCode.h</div><div>index 11872d602d..6787941a5d 100644</div><div>--- a/MdePkg/Include/Protocol/PxeBaseCode.h</div><div>+++ b/MdePkg/Include/Protocol/PxeBaseCode.h</div><div>@@ -4,6 +4,7 @@</div><br><br><div>Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR></div><br><div>Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR></div><br><div>+Copyright (c) 2022, Loongson Technology Corporation Limited. All rights reserved.<BR></div><br><br><br><div>SPDX-License-Identifier: BSD-2-Clause-Patent</div><br><br><br><div>@@ -158,6 +159,8 @@ typedef UINT16 EFI_PXE_BASE_CODE_UDP_PORT;</div><div>#define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE 0x000B</div><br><div>#elif defined (MDE_CPU_RISCV64)</div><br><div>#define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE 0x001B</div><br><div>+#elif defined (MDE_CPU_LOONGARCH64)</div><br><div>+#define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE 0x0027</div><br><div>#endif</div><br><br><br><div>///</div><br><div>diff --git a/MdePkg/Include/Uefi/UefiBaseType.h b/MdePkg/Include/Uefi/UefiBaseType.h</div><div>index 4a34ce8e25..83975a08eb 100644</div><div>--- a/MdePkg/Include/Uefi/UefiBaseType.h</div><div>+++ b/MdePkg/Include/Uefi/UefiBaseType.h</div><div>@@ -4,6 +4,7 @@</div><div>Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.<BR></div><br><div>Portions copyright (c) 2011 - 2016, ARM Ltd. All rights reserved.<BR></div><br><div>Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR></div><br><div>+Copyright (c) 2022, Loongson Technology Corporation Limited. All rights reserved.<BR></div><br><br><br><div>SPDX-License-Identifier: BSD-2-Clause-Patent</div><br><br><br><div>@@ -246,6 +247,12 @@ typedef union {</div><div>#define EFI_IMAGE_MACHINE_RISCV64 0x5064</div><br><div>#define EFI_IMAGE_MACHINE_RISCV128 0x5128</div><br><br><br><div>+///</div><br><div>+/// PE32+ Machine type for LoongArch 32/64 images.</div><br><div>+///</div><br><div>+#define EFI_IMAGE_MACHINE_LOONGARCH32 0x6232</div><br><div>+#define EFI_IMAGE_MACHINE_LOONGARCH64 0x6264</div><br><div>+</div><br><div>#if !defined (EFI_IMAGE_MACHINE_TYPE_VALUE) && !defined (EFI_IMAGE_MACHINE_CROSS_TYPE_VALUE)</div><br><div>#if defined (MDE_CPU_IA32)</div><br><br><br><div>@@ -278,6 +285,13 @@ typedef union {</div><div>#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \</div><br><div>((Machine) == EFI_IMAGE_MACHINE_RISCV64)</div><br><br><br><div>+#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE)</div><br><div>+</div><br><div>+ #elif defined (MDE_CPU_LOONGARCH64)</div><br><div>+</div><br><div>+#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \</div><br><div>+ ((Machine) == EFI_IMAGE_MACHINE_LOONGARCH64)</div><br><div>+</div><br><div>#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE)</div><br><br><br><div>#elif defined (MDE_CPU_EBC)</div><br><div>diff --git a/MdePkg/Include/Uefi/UefiSpec.h b/MdePkg/Include/Uefi/UefiSpec.h</div><div>index 2b38b100f6..3abebbb8d9 100644</div><div>--- a/MdePkg/Include/Uefi/UefiSpec.h</div><div>+++ b/MdePkg/Include/Uefi/UefiSpec.h</div><div>@@ -7,6 +7,7 @@</div><br><br><div>Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.<BR></div><br><div>Portions Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR></div><br><div>+Copyright (c) 2022, Loongson Technology Corporation Limited. All rights reserved.<BR></div><br><br><br><div>SPDX-License-Identifier: BSD-2-Clause-Patent</div><br><br><br><div>@@ -2195,12 +2196,13 @@ typedef struct {</div><div>//</div><br><div>// EFI File location to boot from on removable media devices</div><br><div>//</div><br><div>-#define EFI_REMOVABLE_MEDIA_FILE_NAME_IA32 L"\\EFI\\BOOT\\BOOTIA32.EFI"</div><br><div>-#define EFI_REMOVABLE_MEDIA_FILE_NAME_IA64 L"\\EFI\\BOOT\\BOOTIA64.EFI"</div><br><div>-#define EFI_REMOVABLE_MEDIA_FILE_NAME_X64 L"\\EFI\\BOOT\\BOOTX64.EFI"</div><br><div>-#define EFI_REMOVABLE_MEDIA_FILE_NAME_ARM L"\\EFI\\BOOT\\BOOTARM.EFI"</div><br><div>-#define EFI_REMOVABLE_MEDIA_FILE_NAME_AARCH64 L"\\EFI\\BOOT\\BOOTAA64.EFI"</div><br><div>-#define EFI_REMOVABLE_MEDIA_FILE_NAME_RISCV64 L"\\EFI\\BOOT\\BOOTRISCV64.EFI"</div><br><div>+#define EFI_REMOVABLE_MEDIA_FILE_NAME_IA32 L"\\EFI\\BOOT\\BOOTIA32.EFI"</div><br><div>+#define EFI_REMOVABLE_MEDIA_FILE_NAME_IA64 L"\\EFI\\BOOT\\BOOTIA64.EFI"</div><br><div>+#define EFI_REMOVABLE_MEDIA_FILE_NAME_X64 L"\\EFI\\BOOT\\BOOTX64.EFI"</div><br><div>+#define EFI_REMOVABLE_MEDIA_FILE_NAME_ARM L"\\EFI\\BOOT\\BOOTARM.EFI"</div><br><div>+#define EFI_REMOVABLE_MEDIA_FILE_NAME_AARCH64 L"\\EFI\\BOOT\\BOOTAA64.EFI"</div><br><div>+#define EFI_REMOVABLE_MEDIA_FILE_NAME_RISCV64 L"\\EFI\\BOOT\\BOOTRISCV64.EFI"</div><br><div>+#define EFI_REMOVABLE_MEDIA_FILE_NAME_LOONGARCH64 L"\\EFI\\BOOT\\BOOTLOONGARCH64.EFI"</div><br><br><br><div>#if !defined (EFI_REMOVABLE_MEDIA_FILE_NAME)</div><br><div>#if defined (MDE_CPU_IA32)</div><br><div>@@ -2214,6 +2216,8 @@ typedef struct {</div><div>#define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_AARCH64</div><br><div>#elif defined (MDE_CPU_RISCV64)</div><br><div>#define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_RISCV64</div><br><div>+ #elif defined (MDE_CPU_LOONGARCH64)</div><br><div>+#define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_LOONGARCH64</div><br><div>#else</div><br><div>#error Unknown Processor Type</div><br><div>#endif</div><br><div>--</div><div>2.27.0</div></div></blockquote>


 <div width="1" style="color:white;clear:both">_._,_._,_</div> <hr>   Groups.io Links:<p>   You receive all messages sent to this group.    <p> <a target="_blank" href="https://edk2.groups.io/g/devel/message/94180">View/Reply Online (#94180)</a> |    |  <a target="_blank" href="https://groups.io/mt/93674237/1813853">Mute This Topic</a>  | <a href="https://edk2.groups.io/g/devel/post">New Topic</a><br>    <a href="https://edk2.groups.io/g/devel/editsub/1813853">Your Subscription</a> | <a href="mailto:devel+owner@edk2.groups.io">Contact Group Owner</a> |  <a href="https://edk2.groups.io/g/devel/unsub">Unsubscribe</a>  [edk2-devel-archive@redhat.com]<br> <div width="1" style="color:white;clear:both">_._,_._,_</div>