]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Library/BaseLib.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdePkg / Include / Library / BaseLib.h
index 9d58a7c4ad13e5a9eb240639370e3f964156e9c6..8f2df76c29a303b156b10ba5ec86a20525989af2 100644 (file)
@@ -6,6 +6,7 @@ Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.<BR>
 Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
 Copyright (c) Microsoft Corporation.<BR>\r
 Portions Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>\r
+Portions Copyright (c) 2022, Loongson Technology Corporation Limited. All rights reserved.<BR>\r
 \r
 SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
@@ -150,8 +151,81 @@ typedef struct {
 \r
 #define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT  8\r
 \r
+VOID\r
+RiscVSetSupervisorScratch (\r
+  IN UINT64\r
+  );\r
+\r
+UINT64\r
+RiscVGetSupervisorScratch (\r
+  VOID\r
+  );\r
+\r
+VOID\r
+RiscVSetSupervisorStvec (\r
+  IN UINT64\r
+  );\r
+\r
+UINT64\r
+RiscVGetSupervisorStvec (\r
+  VOID\r
+  );\r
+\r
+UINT64\r
+RiscVGetSupervisorTrapCause (\r
+  VOID\r
+  );\r
+\r
+VOID\r
+RiscVSetSupervisorAddressTranslationRegister (\r
+  IN UINT64\r
+  );\r
+\r
+UINT64\r
+RiscVReadTimer (\r
+  VOID\r
+  );\r
+\r
+VOID\r
+RiscVEnableTimerInterrupt (\r
+  VOID\r
+  );\r
+\r
+VOID\r
+RiscVDisableTimerInterrupt (\r
+  VOID\r
+  );\r
+\r
+VOID\r
+RiscVClearPendingTimerInterrupt (\r
+  VOID\r
+  );\r
+\r
 #endif // defined (MDE_CPU_RISCV64)\r
 \r
+#if defined (MDE_CPU_LOONGARCH64)\r
+///\r
+/// The LoongArch architecture context buffer used by SetJump() and LongJump()\r
+///\r
+typedef struct {\r
+  UINT64    S0;\r
+  UINT64    S1;\r
+  UINT64    S2;\r
+  UINT64    S3;\r
+  UINT64    S4;\r
+  UINT64    S5;\r
+  UINT64    S6;\r
+  UINT64    S7;\r
+  UINT64    S8;\r
+  UINT64    SP;\r
+  UINT64    FP;\r
+  UINT64    RA;\r
+} BASE_LIBRARY_JUMP_BUFFER;\r
+\r
+#define BASE_LIBRARY_JUMP_BUFFER_ALIGNMENT  8\r
+\r
+#endif // defined (MDE_CPU_LOONGARCH64)\r
+\r
 //\r
 // String Services\r
 //\r
@@ -4503,6 +4577,40 @@ CalculateCrc32 (
   IN  UINTN  Length\r
   );\r
 \r
+/**\r
+   Calculates the CRC16-ANSI checksum of the given buffer.\r
+\r
+   @param[in]      Buffer        Pointer to the buffer.\r
+   @param[in]      Length        Length of the buffer, in bytes.\r
+   @param[in]      InitialValue  Initial value of the CRC.\r
+\r
+   @return The CRC16-ANSI checksum.\r
+**/\r
+UINT16\r
+EFIAPI\r
+CalculateCrc16Ansi (\r
+  IN  CONST VOID  *Buffer,\r
+  IN  UINTN       Length,\r
+  IN  UINT16      InitialValue\r
+  );\r
+\r
+/**\r
+   Calculates the CRC32c checksum of the given buffer.\r
+\r
+   @param[in]      Buffer        Pointer to the buffer.\r
+   @param[in]      Length        Length of the buffer, in bytes.\r
+   @param[in]      InitialValue  Initial value of the CRC.\r
+\r
+   @return The CRC32c checksum.\r
+**/\r
+UINT32\r
+EFIAPI\r
+CalculateCrc32c (\r
+  IN CONST VOID  *Buffer,\r
+  IN UINTN       Length,\r
+  IN UINT32      InitialValue\r
+  );\r
+\r
 //\r
 // Base Library CPU Functions\r
 //\r
@@ -4512,7 +4620,6 @@ CalculateCrc32 (
 \r
   @param  Context1        Context1 parameter passed into SwitchStack().\r
   @param  Context2        Context2 parameter passed into SwitchStack().\r
-\r
 **/\r
 typedef\r
 VOID\r