public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Michael D Kinney" <michael.d.kinney@intel.com>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>,
	"lichao@loongson.cn" <lichao@loongson.cn>,
	"Kinney, Michael D" <michael.d.kinney@intel.com>
Cc: "Gao, Liming" <gaoliming@byosoft.com.cn>,
	"Liu, Zhiguang" <zhiguang.liu@intel.com>
Subject: Re: [edk2-devel] [PATCH v2 22/34] MdePkg/Include: LoongArch definitions.
Date: Fri, 23 Sep 2022 15:46:45 +0000	[thread overview]
Message-ID: <CO1PR11MB49294A2673F47252096597BDD2519@CO1PR11MB4929.namprd11.prod.outlook.com> (raw)
In-Reply-To: <20220914094105.3696657-1-lichao@loongson.cn>

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.
> 
> 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@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.

> 
> +
> 
> +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]
> -=-=-=-=-=-=
> 


  parent reply	other threads:[~2022-09-23 15:46 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-14  9:41 [PATCH v2 22/34] MdePkg/Include: LoongArch definitions Chao Li
2022-09-23  6:32 ` Chao Li
2022-09-23 15:46 ` Michael D Kinney [this message]
2022-09-24  2:16   ` [edk2-devel] " Chao Li
2022-09-24  2:33     ` Michael D Kinney
2022-09-24  2:46       ` Chao Li
2022-09-24 15:07         ` Michael D Kinney
2022-09-27  0:55           ` 回复: " gaoliming
2022-09-27  1:01             ` Michael D Kinney
2022-09-27  1:48               ` Chao Li

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CO1PR11MB49294A2673F47252096597BDD2519@CO1PR11MB4929.namprd11.prod.outlook.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox