[edk2-devel] [PATCH v2 22/34] MdePkg/Include: LoongArch definitions.

Michael D Kinney michael.d.kinney at intel.com
Sat Sep 24 02:33:50 UTC 2022


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

Mike

From: chao li <lichao at loongson.cn>
Sent: Friday, September 23, 2022 7:17 PM
To: Kinney, Michael D <michael.d.kinney at intel.com>
Cc: "devel at edk2.groups.io" <devel at edk2.groups.io>; Gao, Liming <gaoliming at byosoft.com.cn>; Liu, Zhiguang <zhiguang.liu at 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 at intel.com<mailto:michael.d.kinney at intel.com>> wrote:
One comment below.

Mike

> -----Original Message-----
> From: devel at edk2.groups.io<mailto:devel at edk2.groups.io> <devel at edk2.groups.io<mailto:devel at edk2.groups.io>> On Behalf Of Chao Li
> Sent: Wednesday, September 14, 2022 2:41 AM
> To: devel at edk2.groups.io<mailto:devel at edk2.groups.io>
> Cc: Kinney, Michael D <michael.d.kinney at intel.com<mailto:michael.d.kinney at intel.com>>; Gao, Liming <gaoliming at byosoft.com.cn<mailto:gaoliming at byosoft.com.cn>>; Liu, Zhiguang <zhiguang.liu at intel.com<mailto:zhiguang.liu at intel.com>>
> Subject: [edk2-devel] [PATCH v2 22/34] MdePkg/Include: LoongArch definitions.
>
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4053
>
> Add LoongArch processor related definitions.
>
> For the Http boot and PXE boot types seeing this URL section "Processor
> Architecture Type" for the LOONGARCH values:
> https://www.iana.org/assignments/dhcpv6-parameters/dhcpv6-parameters.xhtml
>
> For definitions of PE/COFF and LOONGARCH relocation types, see the
> "Machine Types" and "Basic Relocation Types" sections of this URL for
> LOONGARCH values:
> https://docs.microsoft.com/en-us/windows/win32/debug/pe-format
>
> 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:
> https://uefi.org/specs/UEFI/2.10/18_Protocols_Debugger_Support.html
>
> Cc: Michael D Kinney <michael.d.kinney at intel.com<mailto:michael.d.kinney at intel.com>>
> Cc: Liming Gao <gaoliming at byosoft.com.cn<mailto:gaoliming at byosoft.com.cn>>
> Cc: Zhiguang Liu <zhiguang.liu at intel.com<mailto:zhiguang.liu at intel.com>>
>
> Signed-off-by: Chao Li <lichao at loongson.cn<mailto:lichao at 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<file://EFI/BOOT/BOOTIA32.EFI>"
>
> -#define EFI_REMOVABLE_MEDIA_FILE_NAME_IA64 L"\\EFI\\BOOT\\BOOTIA64.EFI<file://EFI/BOOT/BOOTIA64.EFI>"
>
> -#define EFI_REMOVABLE_MEDIA_FILE_NAME_X64 L"\\EFI\\BOOT\\BOOTX64.EFI<file://EFI/BOOT/BOOTX64.EFI>"
>
> -#define EFI_REMOVABLE_MEDIA_FILE_NAME_ARM L"\\EFI\\BOOT\\BOOTARM.EFI<file://EFI/BOOT/BOOTARM.EFI>"
>
> -#define EFI_REMOVABLE_MEDIA_FILE_NAME_AARCH64 L"\\EFI\\BOOT\\BOOTAA64.EFI<file://EFI/BOOT/BOOTAA64.EFI>"
>
> -#define EFI_REMOVABLE_MEDIA_FILE_NAME_RISCV64 L"\\EFI\\BOOT\\BOOTRISCV64.EFI<file://EFI/BOOT/BOOTRISCV64.EFI>"
>
> +#define EFI_REMOVABLE_MEDIA_FILE_NAME_IA32 L"\\EFI\\BOOT\\BOOTIA32.EFI<file://EFI/BOOT/BOOTIA32.EFI>"
>
> +#define EFI_REMOVABLE_MEDIA_FILE_NAME_IA64 L"\\EFI\\BOOT\\BOOTIA64.EFI<file://EFI/BOOT/BOOTIA64.EFI>"
>
> +#define EFI_REMOVABLE_MEDIA_FILE_NAME_X64 L"\\EFI\\BOOT\\BOOTX64.EFI<file://EFI/BOOT/BOOTX64.EFI>"
>
> +#define EFI_REMOVABLE_MEDIA_FILE_NAME_ARM L"\\EFI\\BOOT\\BOOTARM.EFI<file://EFI/BOOT/BOOTARM.EFI>"
>
> +#define EFI_REMOVABLE_MEDIA_FILE_NAME_AARCH64 L"\\EFI\\BOOT\\BOOTAA64.EFI<file://EFI/BOOT/BOOTAA64.EFI>"
>
> +#define EFI_REMOVABLE_MEDIA_FILE_NAME_RISCV64 L"\\EFI\\BOOT\\BOOTRISCV64.EFI<file://EFI/BOOT/BOOTRISCV64.EFI>"
>
> +#define EFI_REMOVABLE_MEDIA_FILE_NAME_LOONGARCH64 L"\\EFI\\BOOT\\BOOTLOONGARCH64.EFI<file://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 at edk2.groups.io<mailto:devel+owner at edk2.groups.io>
> Unsubscribe: https://edk2.groups.io/g/devel/unsub [michael.d.kinney at intel.com]
> -=-=-=-=-=-=
>


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#94267): https://edk2.groups.io/g/devel/message/94267
Mute This Topic: https://groups.io/mt/93674237/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/edk2-devel-archive/attachments/20220924/35c8dc1a/attachment-0001.htm>


More information about the edk2-devel-archive mailing list