]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BasePeCoffLib/BasePeCoffLibInternals.h
MdePkg/BasePeCoff: Add RISC-V PE/Coff related code.
[mirror_edk2.git] / MdePkg / Library / BasePeCoffLib / BasePeCoffLibInternals.h
index 62315f6df5fc63ade03a9d152048ecfb1d49a93b..3ee56e0e5f56ea21a1de48bdd3103dbd2e2655f8 100644 (file)
@@ -1,14 +1,9 @@
 /** @file\r
   Declaration of internal functions in PE/COFF Lib.\r
 \r
-  Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
-  This program and the accompanying materials\r
-  are licensed and made available under the terms and conditions of the BSD License\r
-  which accompanies this distribution.  The full text of the license may be found at\r
-  http://opensource.org/licenses/bsd-license.php\r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+  Portions Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
 #include <Library/PeCoffExtraActionLib.h>\r
 #include <IndustryStandard/PeImage.h>\r
 \r
+//\r
+// Macro definitions for RISC-V architecture.\r
+//\r
+#define RV_X(x, s, n) (((x) >> (s)) & ((1<<(n))-1))\r
+#define RISCV_IMM_BITS 12\r
+#define RISCV_IMM_REACH (1LL<<RISCV_IMM_BITS)\r
+#define RISCV_CONST_HIGH_PART(VALUE) \\r
+  (((VALUE) + (RISCV_IMM_REACH/2)) & ~(RISCV_IMM_REACH-1))\r
 \r
 \r
 /**\r
   Performs an Itanium-based specific relocation fixup and is a no-op on other\r
   instruction sets.\r
 \r
-  @param  Reloc       Pointer to the relocation record.\r
-  @param  Fixup       Pointer to the address to fix up.\r
-  @param  FixupData   Pointer to a buffer to log the fixups.\r
+  @param  Reloc       The pointer to the relocation record.\r
+  @param  Fixup       The pointer to the address to fix up.\r
+  @param  FixupData   The pointer to a buffer to log the fixups.\r
   @param  Adjust      The offset to adjust the fixup.\r
 \r
   @return Status code.\r
@@ -50,9 +53,9 @@ PeCoffLoaderRelocateImageEx (
   instruction sets. This is used to re-relocated the image into the EFI virtual\r
   space for runtime calls.\r
 \r
-  @param  Reloc       Pointer to the relocation record.\r
-  @param  Fixup       Pointer to the address to fix up.\r
-  @param  FixupData   Pointer to a buffer to log the fixups.\r
+  @param  Reloc       The pointer to the relocation record.\r
+  @param  Fixup       The pointer to the address to fix up.\r
+  @param  FixupData   The pointer to a buffer to log the fixups.\r
   @param  Adjust      The offset to adjust the fixup.\r
 \r
   @return Status code.\r
@@ -116,8 +119,9 @@ PeCoffLoaderGetPeHeader (
 /**\r
   Converts an image address to the loaded address.\r
 \r
-  @param  ImageContext  The context of the image being loaded.\r
-  @param  Address       The address to be converted to the loaded address.\r
+  @param  ImageContext      The context of the image being loaded.\r
+  @param  Address           The address to be converted to the loaded address.\r
+  @param  TeStrippedOffset  Stripped offset for TE image.\r
 \r
   @return The converted address or NULL if the address can not be converted.\r
 \r
@@ -125,7 +129,8 @@ PeCoffLoaderGetPeHeader (
 VOID *\r
 PeCoffLoaderImageAddress (\r
   IN OUT PE_COFF_LOADER_IMAGE_CONTEXT          *ImageContext,\r
-  IN     UINTN                                 Address\r
+  IN     UINTN                                 Address,\r
+  IN     UINTN                                 TeStrippedOffset\r
   );\r
 \r
 #endif\r