Re: [PATCH v2 21/34] MdePkg: Add LoongArch LOONGARCH64 binding


Michael D Kinney
 

Reviewed-by: Michael D Kinney <michael.d.kinney@...>

-----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@...>; Gao, Liming <gaoliming@...>; Liu, Zhiguang <zhiguang.liu@...>;
Baoqi Zhang <zhangbaoqi@...>; Dongyan Qian <qiandongyan@...>
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.kinney@...>
Cc: Liming Gao <gaoliming@...>
Cc: Zhiguang Liu <zhiguang.liu@...>

Signed-off-by: Chao Li <lichao@...>
Co-authored-by: Baoqi Zhang <zhangbaoqi@...>
Co-authored-by: Dongyan Qian <qiandongyan@...>
---
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+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [michael.d.kinney@...]
-=-=-=-=-=-=

Join devel@edk2.groups.io to automatically receive all group messages.