Reviewed-by: Michael D Kinney <michael.d.kin...@intel.com> > -----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.kin...@intel.com>; Gao, Liming > <gaolim...@byosoft.com.cn>; Liu, Zhiguang <zhiguang....@intel.com>; > Baoqi Zhang <zhangba...@loongson.cn>; Dongyan Qian <qiandong...@loongson.cn> > Subject: [edk2-devel] [PATCH v2 21/34] MdePkg: Add LoongArch LOONGARCH64 > binding > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4053 > > Add LOONGARCH64 sections in MdePkg.dec and LOONGARCH64 ProcessorBind.h > > Cc: Michael D Kinney <michael.d.kin...@intel.com> > Cc: Liming Gao <gaolim...@byosoft.com.cn> > Cc: Zhiguang Liu <zhiguang....@intel.com> > > Signed-off-by: Chao Li <lic...@loongson.cn> > Co-authored-by: Baoqi Zhang <zhangba...@loongson.cn> > Co-authored-by: Dongyan Qian <qiandong...@loongson.cn> > --- > MdePkg/Include/LoongArch64/ProcessorBind.h | 120 +++++++++++++++++++++ > MdePkg/MdePkg.dec | 4 + > MdePkg/MdePkg.dsc | 3 +- > 3 files changed, 126 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..502d479099 > --- /dev/null > +++ b/MdePkg/Include/LoongArch64/ProcessorBind.h > @@ -0,0 +1,120 @@ > +/** @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_ > > + > > +// > > +// 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 f1ebf9e251..4c81cbd75a 100644 > --- a/MdePkg/MdePkg.dec > +++ b/MdePkg/MdePkg.dec > @@ -7,6 +7,7 @@ > # Copyright (c) 2007 - 2022, 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 cc1ac196a9..493a13ec91 100644 > --- a/MdePkg/MdePkg.dsc > +++ b/MdePkg/MdePkg.dsc > @@ -4,6 +4,7 @@ > # Copyright (c) 2007 - 2022, 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 > > > > -=-=-=-=-=-= > Groups.io Links: You receive all messages sent to this group. > View/Reply Online (#93763): https://edk2.groups.io/g/devel/message/93763 > Mute This Topic: https://groups.io/mt/93674231/1643496 > Group Owner: devel+ow...@edk2.groups.io > Unsubscribe: https://edk2.groups.io/g/devel/unsub [michael.d.kin...@intel.com] > -=-=-=-=-=-= >
-=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#94230): https://edk2.groups.io/g/devel/message/94230 Mute This Topic: https://groups.io/mt/93674231/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-