--
Thanks,
Chao
------------------------
> -----Original Message-----> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Chao Li> Sent: Wednesday, February 9, 2022 2:56 PM> To: devel@edk2.groups.io> Cc: Michael D Kinney <michael.d.kinney@intel.com>; Liming Gao> <gaoliming@byosoft.com.cn>; Zhiguang Liu <zhiguang.liu@intel.com>; Baoqi> Zhang <zhangbaoqi@loongson.cn>; Dongyan Qian> <qiandongyan@loongson.cn>> Subject: [edk2-devel] [staging/LoongArch RESEND PATCH v1 19/33] MdePkg:> Add LoongArch LOONGARCH64 binding>> Add LOONGARCH64 sections in MdePkg.dec and LOONGARCH64> ProcessorBind.h>> 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>> Co-authored-by: Baoqi Zhang <zhangbaoqi@loongson.cn>> Co-authored-by: Dongyan Qian <qiandongyan@loongson.cn>> ---> MdePkg/Include/LoongArch64/ProcessorBind.h | 121> +++++++++++++++++++++> MdePkg/MdePkg.dec | 4 +> MdePkg/MdePkg.dsc | 3 +-> 3 files changed, 127 insertions(+), 1 deletion(-)> create mode 100644 MdePkg/Include/LoongArch64/ProcessorBind.h>> diff --git a/MdePkg/Include/LoongArch64/ProcessorBind.h> b/MdePkg/Include/LoongArch64/ProcessorBind.h> new file mode 100644> index 0000000000..a10481e285> --- /dev/null> +++ b/MdePkg/Include/LoongArch64/ProcessorBind.h> @@ -0,0 +1,121 @@> +/** @file> + Processor or Compiler specific defines and types for LoongArch> +> + Copyright (c) 2022 Loongson Technology Corporation Limited. All rights> reserved.<BR>> +> + SPDX-License-Identifier: BSD-2-Clause-Patent> +> +**/> +> +#ifndef __PROCESSOR_BIND_H__> +#define __PROCESSOR_BIND_H__Please remove the leading "_" and only keep one trailing "_" to follow the edk2 coding standard. RISC-V ProcessorBind.h has the mistake.Abner> +> +//> +// Define the processor type so other code can make processor based> choices> +//> +#define MDE_CPU_LOONGARCH64> +> +#define EFIAPI> +> +//> +// Make sure we are using the correct packing rules per EFI specification> +//> +#ifndef __GNUC__> +#pragma pack()> +#endif> +> +//> +// Assume standard LoongArch 64-bit alignment.> +// Need to check portability of long long> +//> +typedef unsigned long UINT64;> +typedef long INT64;> +typedef unsigned int UINT32;> +typedef int INT32;> +typedef unsigned short UINT16;> +typedef unsigned short CHAR16;> +typedef short INT16;> +typedef unsigned char BOOLEAN;> +typedef unsigned char UINT8;> +typedef char CHAR8;> +typedef char INT8;> +> +//> +// Unsigned value of native width. (4 bytes on supported 32-bit processor> instructions,> +// 8 bytes on supported 64-bit processor instructions)> +//> +> +typedef UINT64 UINTN;> +> +//> +// Signed value of native width. (4 bytes on supported 32-bit processor> instructions,> +// 8 bytes on supported 64-bit processor instructions)> +//> +typedef INT64 INTN;> +> +//> +// Processor specific defines> +//> +> +//> +// A value of native width with the highest bit set.> +//> +#define MAX_BIT 0x8000000000000000ULL> +//> +// A value of native width with the two highest bits set.> +//> +#define MAX_2_BITS 0xC000000000000000ULL> +> +//> +// Maximum legal LoongArch 64-bit address> +//> +#define MAX_ADDRESS 0xFFFFFFFFFFFFFFFFULL> +> +//> +// Maximum usable address at boot time (48 bits using 4KB pages)> +//> +#define MAX_ALLOC_ADDRESS 0xFFFFFFFFFFFFULL> +> +> +//> +// Maximum legal LoongArch 64-bit INTN and UINTN values.> +//> +#define MAX_INTN ((INTN)0x7FFFFFFFFFFFFFFFULL)> +#define MAX_UINTN ((UINTN)0xFFFFFFFFFFFFFFFFULL)> +> +//> +// Page allocation granularity for LoongArch> +//> +#define DEFAULT_PAGE_ALLOCATION_GRANULARITY (0x1000)> +#define RUNTIME_PAGE_ALLOCATION_GRANULARITY (0x10000)> +> +#if defined(__GNUC__)> + //> + // For GNU assembly code, .global or .globl can declare global symbols.> + // Define this macro to unify the usage.> + //> + #define ASM_GLOBAL .globl> +#endif> +> +//> +// The stack alignment required for LoongArch> +//> +#define CPU_STACK_ALIGNMENT 16> +> +/**> + Return the pointer to the first instruction of a function given a function> pointer.> + On LOONGARCH CPU architectures, these two pointer values are the same,> + so the implementation of this macro is very simple.> +> + @param FunctionPointer A pointer to a function.> +> + @return The pointer to the first instruction of a function given a function> pointer.> +> +**/> +#define FUNCTION_ENTRY_POINT(FunctionPointer) (VOID> *)(UINTN)(FunctionPointer)> +> +#ifndef __USER_LABEL_PREFIX__> +#define __USER_LABEL_PREFIX__> +#endif> +> +#endif> diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec> index 59b405928b..18d42047e9 100644> --- a/MdePkg/MdePkg.dec> +++ b/MdePkg/MdePkg.dec> @@ -7,6 +7,7 @@> # Copyright (c) 2007 - 2021, Intel Corporation. All rights reserved.<BR>> # Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>> # (C) Copyright 2016 - 2021 Hewlett Packard Enterprise Development LP<BR>> +# Copyright (c) 2022 Loongson Technology Corporation Limited. All rights> reserved.<BR>> #> # SPDX-License-Identifier: BSD-2-Clause-Patent> #> @@ -43,6 +44,9 @@> [Includes.RISCV64]> Include/RiscV64>> +[Includes.LOONGARCH64]> + Include/LoongArch64> +> [LibraryClasses]> ## @libraryclass Provides most usb APIs to support the Hid requests> defined in Usb Hid 1.1 spec> # and the standard requests defined in Usb 1.1 spec.> diff --git a/MdePkg/MdePkg.dsc b/MdePkg/MdePkg.dsc> index a94959169b..1c83726b86 100644> --- a/MdePkg/MdePkg.dsc> +++ b/MdePkg/MdePkg.dsc> @@ -4,6 +4,7 @@> # Copyright (c) 2007 - 2021, Intel Corporation. All rights reserved.<BR>> # Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>> # (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>> +# Copyright (c) 2022 Loongson Technology Corporation Limited. All rights> reserved.<BR>> #> # SPDX-License-Identifier: BSD-2-Clause-Patent> #> @@ -15,7 +16,7 @@> PLATFORM_VERSION = 1.08> DSC_SPECIFICATION = 0x00010005> OUTPUT_DIRECTORY = Build/Mde> - SUPPORTED_ARCHITECTURES => IA32|X64|EBC|ARM|AARCH64|RISCV64> + SUPPORTED_ARCHITECTURES => IA32|X64|EBC|ARM|AARCH64|RISCV64|LOONGARCH64> BUILD_TARGETS = DEBUG|RELEASE|NOOPT> SKUID_IDENTIFIER = DEFAULT>> --> 2.27.0>>>>>