I am referring to this code comment.

 

> +//

> +// For coding convenience, define the maximum valid

> +// LoongArch interrupt.

> +//

> +#define MAX_LOONGARCH_INTERRUPT 14

 

Mike

 

 

From: chao li <lichao@loongson.cn>
Sent: Friday, September 23, 2022 7:46 PM
To: 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.

 

Mike,

Do you mean patches 0001 and 0002? If yes, I have tried removing both the two patches, but the Azure CI always produces the ECC errors, I have no idea how to fix them, so modify the CI YAM file to fix them, and Liming also recommends this way.

 


Thanks,
Chao
--------

On 9 24 2022, at 10:33 上午, "Kinney, Michael D" <michael.d.kinney@intel.com> wrote:

    

If it is in spec, then the comment about “coding convenience” is not required.

 

 

 

Mike

 

 

 

From: chao li <lichao@loongson.cn>

Sent: Friday, September 23, 2022 7:17 PM

To: Kinney, Michael D <michael.d.kinney@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

> 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 14

 

 

Should this define be moved into the libs/modules that uses

this define? Prefer to only see definitions from specs in

this 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

> Unsubscribe: https://edk2.groups.io/g/devel/unsub [michael.d.kinney@intel.com]

> -=-=-=-=-=-=