CC maintainers. > -----Original Message----- > From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of > Abner Chang > Sent: Monday, September 23, 2019 8:31 AM > To: devel@edk2.groups.io > Cc: Chang, Abner (HPS SW/FW Technologist) <abner.ch...@hpe.com> > Subject: [edk2-devel] [edk2-staging/RISC-V-V2 PATCH v2 04/29] MdePkg: > RISC-V RV64 binding in MdePkg > > Add RISCV64 sections in MdePkg.dec and RISCV64 ProcessorBind.h > > Signed-off-by: Abner Chang <abner.ch...@hpe.com> > --- > MdePkg/Include/RiscV64/ProcessorBind.h | 173 > +++++++++++++++++++++++++++++++++ > MdePkg/MdePkg.dec | 5 +- > 2 files changed, 177 insertions(+), 1 deletion(-) create mode 100644 > MdePkg/Include/RiscV64/ProcessorBind.h > > diff --git a/MdePkg/Include/RiscV64/ProcessorBind.h > b/MdePkg/Include/RiscV64/ProcessorBind.h > new file mode 100644 > index 0000000..c3d4ef7 > --- /dev/null > +++ b/MdePkg/Include/RiscV64/ProcessorBind.h > @@ -0,0 +1,173 @@ > +/** @file > + Processor or Compiler specific defines and types for RISC-V > + > + Copyright (c) 2016 - 2019, Hewlett Packard Enterprise Development LP. > + 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_RISCV64 > + > +// > +// Make sure we are using the correct packing rules per EFI > +specification // #if !defined(__GNUC__) #pragma pack() #endif > + > +/// > +/// 8-byte unsigned value > +/// > +typedef unsigned long long UINT64 __attribute__ ((aligned (8))); /// > +/// 8-byte signed value /// > +typedef long long INT64 __attribute__ ((aligned (8))); > +/// > +/// 4-byte unsigned value > +/// > +typedef unsigned int UINT32 __attribute__ ((aligned (4))); > +/// > +/// 4-byte signed value > +/// > +typedef int INT32 __attribute__ ((aligned (4))); > +/// > +/// 2-byte unsigned value > +/// > +typedef unsigned short UINT16 __attribute__ ((aligned (2))); > +/// > +/// 2-byte Character. Unless otherwise specified all strings are > +stored in the /// UTF-16 encoding format as defined by Unicode 2.1 and > ISO/IEC 10646 standards. > +/// > +typedef unsigned short CHAR16 __attribute__ ((aligned (2))); > +/// > +/// 2-byte signed value > +/// > +typedef short INT16 __attribute__ ((aligned (2))); > +/// > +/// Logical Boolean. 1-byte value containing 0 for FALSE or a 1 for > +TRUE. Other /// values are undefined. > +/// > +typedef unsigned char BOOLEAN; > +/// > +/// 1-byte unsigned value > +/// > +typedef unsigned char UINT8; > +/// > +/// 1-byte Character > +/// > +typedef char CHAR8; > +/// > +/// 1-byte signed value > +/// > +typedef signed 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 __attribute__ ((aligned (8))); > +/// /// Signed value of native width. (4 bytes on supported 32-bit > +processor instructions, /// 8 bytes on supported 64-bit processor > +instructions) /// > +typedef INT64 INTN __attribute__ ((aligned (8))); > + > +// > +// 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 RV64 address > +/// > +#define MAX_ADDRESS 0xFFFFFFFFFFFFFFFFULL > + > +/// > +/// Maximum usable address at boot time (48 bits using 4 KB pages in > +Supervisor mode) /// > +#define MAX_ALLOC_ADDRESS 0xFFFFFFFFFFFFULL > + > +/// > +/// Maximum legal RISC-V INTN and UINTN values. > +/// > +#define MAX_INTN ((INTN)0x7FFFFFFFFFFFFFFFULL) > +#define MAX_UINTN ((UINTN)0xFFFFFFFFFFFFFFFFULL) > + > +/// > +/// The stack alignment required for RISC-V /// > +#define CPU_STACK_ALIGNMENT 16 > + > +/// > +/// Page allocation granularity for RISC-V /// > +#define DEFAULT_PAGE_ALLOCATION_GRANULARITY (0x1000) > +#define RUNTIME_PAGE_ALLOCATION_GRANULARITY (0x1000) > + > +// > +// Modifier to ensure that all protocol member functions and EFI > +intrinsics // use the correct C calling convention. All protocol member > +functions and // EFI intrinsics are required to modify their member > functions with EFIAPI. > +// > +#ifdef EFIAPI > + /// > + /// If EFIAPI is already defined, then we use that definition. > + /// > +#elif defined(__GNUC__) > + /// > + /// Define the standard calling convention regardless of optimization > +level > + /// The GCC support assumes a GCC compiler that supports the EFI ABI. > +The EFI > + /// ABI is much closer to the x64 Microsoft* ABI than standard x64 > +(x86-64) > + /// GCC ABI. Thus a standard x64 (x86-64) GCC compiler can not be > +used for > + /// x64. Warning the assembly code in the MDE x64 does not follow the > +correct > + /// ABI for the standard x64 (x86-64) GCC. > + /// > + #define EFIAPI > +#else > + /// > + /// The default for a non Microsoft* or GCC compiler is to assume the > +EFI ABI > + /// is the standard. > + /// > + #define EFIAPI > +#endif > + > +#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 > + > +/** > + Return the pointer to the first instruction of a function given a function > pointer. > + On x64 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 > 3fd7d16..1aaa97d 100644 > --- a/MdePkg/MdePkg.dec > +++ b/MdePkg/MdePkg.dec > @@ -6,7 +6,7 @@ > # > # Copyright (c) 2007 - 2019, Intel Corporation. All rights reserved.<BR> # > Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR> -# (C) > Copyright 2016 Hewlett Packard Enterprise Development LP<BR> > +# (C) Copyright 2016 - 2019 Hewlett Packard Enterprise Development > +LP<BR> > # > # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -39,6 +39,9 @@ > [Includes.AARCH64] > Include/AArch64 > > +[Includes.RISCV64] > + Include/RiscV64 > + > [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. > -- > 2.7.4 > > >
-=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#47889): https://edk2.groups.io/g/devel/message/47889 Mute This Topic: https://groups.io/mt/34271933/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-