public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Chao Li" <lichao@loongson.cn>
To: devel@edk2.groups.io, michael.d.kinney@intel.com
Cc: "Gao, Liming" <gaoliming@byosoft.com.cn>,
	 "Liu, Zhiguang" <zhiguang.liu@intel.com>
Subject: Re: [edk2-devel] [PATCH v1 22/34] MdePkg/Include: LoongArch definitions.
Date: Sun, 11 Sep 2022 12:14:43 +0800 (GMT+08:00)	[thread overview]
Message-ID: <58914bab.7b88.1832ac1bbc3.Coremail.lichao@loongson.cn> (raw)
In-Reply-To: <CO1PR11MB49297720FAF7C359653CA8F8D2439@CO1PR11MB4929.namprd11.prod.outlook.com>


Hi Mike,
Okay, I can provide it to you.
1. 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#ieee-80221-service-type.
2. 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.
3. 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. 

Thanks,
Chao

> -----原始邮件-----
> 发件人: "Michael D Kinney" <michael.d.kinney@intel.com>
> 发送时间:2022-09-10 01:18:18 (星期六)
> 收件人: "Chao Li" <lichao@loongson.cn>, "devel@edk2.groups.io" <devel@edk2.groups.io>, "Kinney, Michael D" <michael.d.kinney@intel.com>
> 抄送: "Gao, Liming" <gaoliming@byosoft.com.cn>, "Liu, Zhiguang" <zhiguang.liu@intel.com>
> 主题: Re: [edk2-devel] [PATCH v1 22/34] MdePkg/Include: LoongArch definitions.
> 
> Can you provide the links to the specs that provide the structures and defines?
> 
> Thanks,
> 
> Mike
> 
> > -----Original Message-----
> > From: Chao Li <lichao@loongson.cn>
> > Sent: Wednesday, September 7, 2022 9:52 PM
> > 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: [PATCH v1 22/34] MdePkg/Include: LoongArch definitions.
> > 
> > Add LoongArch processor related 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
> > 
> > +
> > 
> > +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
> 
> 
> 
> 
> 
> 


本邮件及其附件含有龙芯中科的商业秘密信息,仅限于发送给上面地址中列出的个人或群组。禁止任何其他人以任何形式使用(包括但不限于全部或部分地泄露、复制或散发)本邮件及其附件中的信息。如果您错收本邮件,请您立即电话或邮件通知发件人并删除本邮件。 
This email and its attachments contain confidential information from Loongson Technology , which is intended only for the person or entity whose address is listed above. Any use of the information contained herein in any way (including, but not limited to, total or partial disclosure, reproduction or dissemination) by persons other than the intended recipient(s) is prohibited. If you receive this email in error, please notify the sender by phone or email immediately and delete it. 

  reply	other threads:[~2022-09-11  4:14 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-08  4:51 [PATCH v1 22/34] MdePkg/Include: LoongArch definitions Chao Li
2022-09-09 17:18 ` Michael D Kinney
2022-09-11  4:14   ` Chao Li [this message]
2022-09-12 16:33     ` [edk2-devel] " Michael D Kinney
2022-09-13  4:53       ` 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=58914bab.7b88.1832ac1bbc3.Coremail.lichao@loongson.cn \
    --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