Thanks,
Chao
--------
If it is in spec, then the comment about “coding convenience” is not required.MikeFrom: chao li <lichao@loongson.cn>Sent: Friday, September 23, 2022 7:17 PMTo: Kinney, Michael D <michael.d.kinney@intel.com>Cc: "devel@edk2.groups.io" <devel@edk2.groups.io>; Gao, Liming <gaoliming@byosoft.com.cn>; Liu, Zhiguang <zhiguang.liu@intel.com>Subject: Re: [edk2-devel] [PATCH v2 22/34] MdePkg/Include: LoongArch definitions.Hi Mkie,I responded to your comment below.Thanks,Chao--------On 9月 23 2022, at 11:46 晚上, "Kinney, Michael D" <michael.d.kinney@intel.com> wrote:One comment below.Mike> -----Original Message-----> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Chao Li> Sent: Wednesday, September 14, 2022 2:41 AM> To: devel@edk2.groups.io> Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming <gaoliming@byosoft.com.cn>; Liu, Zhiguang <zhiguang.liu@intel.com>> Subject: [edk2-devel] [PATCH v2 22/34] MdePkg/Include: LoongArch definitions.>>> Add LoongArch processor related definitions.>> For the Http boot and PXE boot types seeing this URL section "Processor> Architecture Type" for the LOONGARCH values:>> For definitions of PE/COFF and LOONGARCH relocation types, see the> "Machine Types" and "Basic Relocation Types" sections of this URL for> LOONGARCH values:>> For the register definitions of exceptions context, see the UEFI V2.10> 18.2.2, 18.2.4 and 18.2.5 sections of this URL for LOONGARCH> definitions:>> Cc: Michael D Kinney <michael.d.kinney@intel.com>> Cc: Liming Gao <gaoliming@byosoft.com.cn>> Cc: Zhiguang Liu <zhiguang.liu@intel.com>>> Signed-off-by: Chao Li <lichao@loongson.cn>> ---> MdePkg/Include/IndustryStandard/PeImage.h | 9 ++> MdePkg/Include/Protocol/DebugSupport.h | 107 ++++++++++++++++++++--> MdePkg/Include/Protocol/PxeBaseCode.h | 3 +> MdePkg/Include/Uefi/UefiBaseType.h | 14 +++> MdePkg/Include/Uefi/UefiSpec.h | 16 ++--> 5 files changed, 136 insertions(+), 13 deletions(-)>> diff --git a/MdePkg/Include/IndustryStandard/PeImage.h b/MdePkg/Include/IndustryStandard/PeImage.h> index 3109dc20f8..dd4cc25483 100644> --- a/MdePkg/Include/IndustryStandard/PeImage.h> +++ b/MdePkg/Include/IndustryStandard/PeImage.h> @@ -10,6 +10,7 @@> Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>>> Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>>> Portions Copyright (c) 2016 - 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>>> +Portions Copyright (c) 2022, Loongson Technology Corporation Limited. All rights reserved.<BR>>>>> SPDX-License-Identifier: BSD-2-Clause-Patent>>>> @@ -38,6 +39,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent> #define IMAGE_FILE_MACHINE_RISCV32 0x5032>> #define IMAGE_FILE_MACHINE_RISCV64 0x5064>> #define IMAGE_FILE_MACHINE_RISCV128 0x5128>> +#define IMAGE_FILE_MACHINE_LOONGARCH32 0x6232>> +#define IMAGE_FILE_MACHINE_LOONGARCH64 0x6264>>>> //>> // EXE file formats>> @@ -503,6 +506,12 @@ typedef struct {> #define EFI_IMAGE_REL_BASED_RISCV_LOW12I 7>> #define EFI_IMAGE_REL_BASED_RISCV_LOW12S 8>>>> +//>> +// Relocation types of LoongArch processor.>> +//>> +#define EFI_IMAGE_REL_BASED_LOONGARCH32_MARK_LA 8>> +#define EFI_IMAGE_REL_BASED_LOONGARCH64_MARK_LA 8>> +>> ///>> /// Line number format.>> ///>> diff --git a/MdePkg/Include/Protocol/DebugSupport.h b/MdePkg/Include/Protocol/DebugSupport.h> index ec5b92a5c5..2b0ae2d157 100644> --- a/MdePkg/Include/Protocol/DebugSupport.h> +++ b/MdePkg/Include/Protocol/DebugSupport.h> @@ -654,17 +654,110 @@ typedef struct {> UINT64 X31;>> } EFI_SYSTEM_CONTEXT_RISCV64;>>>> +//>> +// LoongArch processor exception types.>> +//>> +#define EXCEPT_LOONGARCH_INT 0>> +#define EXCEPT_LOONGARCH_PIL 1>> +#define EXCEPT_LOONGARCH_PIS 2>> +#define EXCEPT_LOONGARCH_PIF 3>> +#define EXCEPT_LOONGARCH_PME 4>> +#define EXCEPT_LOONGARCH_PNR 5>> +#define EXCEPT_LOONGARCH_PNX 6>> +#define EXCEPT_LOONGARCH_PPI 7>> +#define EXCEPT_LOONGARCH_ADE 8>> +#define EXCEPT_LOONGARCH_ALE 9>> +#define EXCEPT_LOONGARCH_BCE 10>> +#define EXCEPT_LOONGARCH_SYS 11>> +#define EXCEPT_LOONGARCH_BRK 12>> +#define EXCEPT_LOONGARCH_INE 13>> +#define EXCEPT_LOONGARCH_IPE 14>> +#define EXCEPT_LOONGARCH_FPD 15>> +#define EXCEPT_LOONGARCH_SXD 16>> +#define EXCEPT_LOONGARCH_ASXD 17>> +#define EXCEPT_LOONGARCH_FPE 18>> +#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.>> +>> +//>> +// LoongArch processor Interrupt types.>> +//>> +#define EXCEPT_LOONGARCH_INT_SIP0 0>> +#define EXCEPT_LOONGARCH_INT_SIP1 1>> +#define EXCEPT_LOONGARCH_INT_IP0 2>> +#define EXCEPT_LOONGARCH_INT_IP1 3>> +#define EXCEPT_LOONGARCH_INT_IP2 4>> +#define EXCEPT_LOONGARCH_INT_IP3 5>> +#define EXCEPT_LOONGARCH_INT_IP4 6>> +#define EXCEPT_LOONGARCH_INT_IP5 7>> +#define EXCEPT_LOONGARCH_INT_IP6 8>> +#define EXCEPT_LOONGARCH_INT_IP7 9>> +#define EXCEPT_LOONGARCH_INT_PMC 10>> +#define EXCEPT_LOONGARCH_INT_TIMER 11>> +#define EXCEPT_LOONGARCH_INT_IPI 12>> +>> +//>> +// For coding convenience, define the maximum valid>> +// LoongArch interrupt.>> +//>> +#define MAX_LOONGARCH_INTERRUPT 14Should this define be moved into the libs/modules that usesthis define? Prefer to only see definitions from specs inthis file.Chao Li: Yes, this macro is defined in the UEFI Spec V2.10 section 18.2.5.If you insist on your opinion, I can remove it in this file. So what's your opinion now?>> +>> +typedef struct {>> + UINT64 R0;>> + UINT64 R1;>> + UINT64 R2;>> + UINT64 R3;>> + UINT64 R4;>> + UINT64 R5;>> + UINT64 R6;>> + UINT64 R7;>> + UINT64 R8;>> + UINT64 R9;>> + UINT64 R10;>> + UINT64 R11;>> + UINT64 R12;>> + UINT64 R13;>> + UINT64 R14;>> + UINT64 R15;>> + UINT64 R16;>> + UINT64 R17;>> + UINT64 R18;>> + UINT64 R19;>> + UINT64 R20;>> + UINT64 R21;>> + UINT64 R22;>> + UINT64 R23;>> + UINT64 R24;>> + UINT64 R25;>> + UINT64 R26;>> + UINT64 R27;>> + UINT64 R28;>> + UINT64 R29;>> + UINT64 R30;>> + UINT64 R31;>> +>> + UINT64 CRMD; // CuRrent MoDe information>> + UINT64 PRMD; // PRe-exception MoDe information>> + UINT64 EUEN; // Extended component Unit ENable>> + UINT64 MISC; // MISCellaneous controller>> + UINT64 ECFG; // Exception ConFiGuration>> + UINT64 ESTAT; // Exception STATus>> + UINT64 ERA; // Exception Return Address>> + UINT64 BADV; // BAD Virtual address>> + UINT64 BADI; // BAD Instruction>> +} EFI_SYSTEM_CONTEXT_LOONGARCH64;>> +>> ///>> /// Universal EFI_SYSTEM_CONTEXT definition.>> ///>> typedef union {>> - EFI_SYSTEM_CONTEXT_EBC *SystemContextEbc;>> - EFI_SYSTEM_CONTEXT_IA32 *SystemContextIa32;>> - EFI_SYSTEM_CONTEXT_X64 *SystemContextX64;>> - EFI_SYSTEM_CONTEXT_IPF *SystemContextIpf;>> - EFI_SYSTEM_CONTEXT_ARM *SystemContextArm;>> - EFI_SYSTEM_CONTEXT_AARCH64 *SystemContextAArch64;>> - EFI_SYSTEM_CONTEXT_RISCV64 *SystemContextRiscV64;>> + EFI_SYSTEM_CONTEXT_EBC *SystemContextEbc;>> + EFI_SYSTEM_CONTEXT_IA32 *SystemContextIa32;>> + EFI_SYSTEM_CONTEXT_X64 *SystemContextX64;>> + EFI_SYSTEM_CONTEXT_IPF *SystemContextIpf;>> + EFI_SYSTEM_CONTEXT_ARM *SystemContextArm;>> + EFI_SYSTEM_CONTEXT_AARCH64 *SystemContextAArch64;>> + EFI_SYSTEM_CONTEXT_RISCV64 *SystemContextRiscV64;>> + EFI_SYSTEM_CONTEXT_LOONGARCH64 *SystemContextLoongArch64;>> } EFI_SYSTEM_CONTEXT;>>>> //>> diff --git a/MdePkg/Include/Protocol/PxeBaseCode.h b/MdePkg/Include/Protocol/PxeBaseCode.h> index 11872d602d..6787941a5d 100644> --- a/MdePkg/Include/Protocol/PxeBaseCode.h> +++ b/MdePkg/Include/Protocol/PxeBaseCode.h> @@ -4,6 +4,7 @@>>> Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>>> Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>>> +Copyright (c) 2022, Loongson Technology Corporation Limited. All rights reserved.<BR>>>>> SPDX-License-Identifier: BSD-2-Clause-Patent>>>> @@ -158,6 +159,8 @@ typedef UINT16 EFI_PXE_BASE_CODE_UDP_PORT;> #define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE 0x000B>> #elif defined (MDE_CPU_RISCV64)>> #define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE 0x001B>> +#elif defined (MDE_CPU_LOONGARCH64)>> +#define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE 0x0027>> #endif>>>> ///>> diff --git a/MdePkg/Include/Uefi/UefiBaseType.h b/MdePkg/Include/Uefi/UefiBaseType.h> index 4a34ce8e25..83975a08eb 100644> --- a/MdePkg/Include/Uefi/UefiBaseType.h> +++ b/MdePkg/Include/Uefi/UefiBaseType.h> @@ -4,6 +4,7 @@> Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.<BR>>> Portions copyright (c) 2011 - 2016, ARM Ltd. All rights reserved.<BR>>> Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>>> +Copyright (c) 2022, Loongson Technology Corporation Limited. All rights reserved.<BR>>>>> SPDX-License-Identifier: BSD-2-Clause-Patent>>>> @@ -246,6 +247,12 @@ typedef union {> #define EFI_IMAGE_MACHINE_RISCV64 0x5064>> #define EFI_IMAGE_MACHINE_RISCV128 0x5128>>>> +///>> +/// PE32+ Machine type for LoongArch 32/64 images.>> +///>> +#define EFI_IMAGE_MACHINE_LOONGARCH32 0x6232>> +#define EFI_IMAGE_MACHINE_LOONGARCH64 0x6264>> +>> #if !defined (EFI_IMAGE_MACHINE_TYPE_VALUE) && !defined (EFI_IMAGE_MACHINE_CROSS_TYPE_VALUE)>> #if defined (MDE_CPU_IA32)>>>> @@ -278,6 +285,13 @@ typedef union {> #define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \>> ((Machine) == EFI_IMAGE_MACHINE_RISCV64)>>>> +#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE)>> +>> + #elif defined (MDE_CPU_LOONGARCH64)>> +>> +#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \>> + ((Machine) == EFI_IMAGE_MACHINE_LOONGARCH64)>> +>> #define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE)>>>> #elif defined (MDE_CPU_EBC)>> diff --git a/MdePkg/Include/Uefi/UefiSpec.h b/MdePkg/Include/Uefi/UefiSpec.h> index 2b38b100f6..3abebbb8d9 100644> --- a/MdePkg/Include/Uefi/UefiSpec.h> +++ b/MdePkg/Include/Uefi/UefiSpec.h> @@ -7,6 +7,7 @@>>> Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.<BR>>> Portions Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>>> +Copyright (c) 2022, Loongson Technology Corporation Limited. All rights reserved.<BR>>>>> SPDX-License-Identifier: BSD-2-Clause-Patent>>>> @@ -2195,12 +2196,13 @@ typedef struct {> //>> // EFI File location to boot from on removable media devices>> //>> -#define EFI_REMOVABLE_MEDIA_FILE_NAME_IA32 L"\\EFI\\BOOT\\BOOTIA32.EFI">> -#define EFI_REMOVABLE_MEDIA_FILE_NAME_IA64 L"\\EFI\\BOOT\\BOOTIA64.EFI">> -#define EFI_REMOVABLE_MEDIA_FILE_NAME_X64 L"\\EFI\\BOOT\\BOOTX64.EFI">> -#define EFI_REMOVABLE_MEDIA_FILE_NAME_ARM L"\\EFI\\BOOT\\BOOTARM.EFI">> -#define EFI_REMOVABLE_MEDIA_FILE_NAME_AARCH64 L"\\EFI\\BOOT\\BOOTAA64.EFI">> -#define EFI_REMOVABLE_MEDIA_FILE_NAME_RISCV64 L"\\EFI\\BOOT\\BOOTRISCV64.EFI">> +#define EFI_REMOVABLE_MEDIA_FILE_NAME_IA32 L"\\EFI\\BOOT\\BOOTIA32.EFI">> +#define EFI_REMOVABLE_MEDIA_FILE_NAME_IA64 L"\\EFI\\BOOT\\BOOTIA64.EFI">> +#define EFI_REMOVABLE_MEDIA_FILE_NAME_X64 L"\\EFI\\BOOT\\BOOTX64.EFI">> +#define EFI_REMOVABLE_MEDIA_FILE_NAME_ARM L"\\EFI\\BOOT\\BOOTARM.EFI">> +#define EFI_REMOVABLE_MEDIA_FILE_NAME_AARCH64 L"\\EFI\\BOOT\\BOOTAA64.EFI">> +#define EFI_REMOVABLE_MEDIA_FILE_NAME_RISCV64 L"\\EFI\\BOOT\\BOOTRISCV64.EFI">> +#define EFI_REMOVABLE_MEDIA_FILE_NAME_LOONGARCH64 L"\\EFI\\BOOT\\BOOTLOONGARCH64.EFI">>>> #if !defined (EFI_REMOVABLE_MEDIA_FILE_NAME)>> #if defined (MDE_CPU_IA32)>> @@ -2214,6 +2216,8 @@ typedef struct {> #define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_AARCH64>> #elif defined (MDE_CPU_RISCV64)>> #define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_RISCV64>> + #elif defined (MDE_CPU_LOONGARCH64)>> +#define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_LOONGARCH64>> #else>> #error Unknown Processor Type>> #endif>> --> 2.27.0>>>> -=-=-=-=-=-=> Groups.io Links: You receive all messages sent to this group.> View/Reply Online (#93766): https://edk2.groups.io/g/devel/message/93766> Mute This Topic: https://groups.io/mt/93674237/1643496> Group Owner: devel+owner@edk2.groups.io> Unsubscribe: https://edk2.groups.io/g/devel/unsub [michael.d.kinney@intel.com]> -=-=-=-=-=-=>