On Mon, Sep 23, 2019 at 08:31:29AM +0800, Abner Chang wrote:
> Add RISCV64 sections in MdePkg.dec and RISCV64 ProcessorBind.h
> Signed-off-by: Abner Chang <abner.ch...@hpe.com>

Reviewed-by: Leif Lindholm <leif.lindh...@linaro.org>

> ---
>  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 (#48143): https://edk2.groups.io/g/devel/message/48143
Mute This Topic: https://groups.io/mt/34258195/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to