]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseSynchronizationLib/Synchronization.c
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdePkg / Library / BaseSynchronizationLib / Synchronization.c
index 76c5a1275c222a150460847f39cb94276788fd26..54eb19d89584fe3789a0182ff6fc025620f0c35e 100644 (file)
@@ -2,20 +2,14 @@
   Implementation of synchronization functions.\r
 \r
   Copyright (c) 2006 - 2018, 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
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
 #include "BaseSynchronizationLibInternals.h"\r
 \r
-#define SPIN_LOCK_RELEASED          ((UINTN) 1)\r
-#define SPIN_LOCK_ACQUIRED          ((UINTN) 2)\r
+#define SPIN_LOCK_RELEASED  ((UINTN) 1)\r
+#define SPIN_LOCK_ACQUIRED  ((UINTN) 2)\r
 \r
 /**\r
   Retrieves the architecture specific spin lock alignment requirements for\r
@@ -61,7 +55,7 @@ GetSpinLockProperties (
 SPIN_LOCK *\r
 EFIAPI\r
 InitializeSpinLock (\r
-  OUT      SPIN_LOCK                 *SpinLock\r
+  OUT      SPIN_LOCK  *SpinLock\r
   )\r
 {\r
   ASSERT (SpinLock != NULL);\r
@@ -92,7 +86,7 @@ InitializeSpinLock (
 SPIN_LOCK *\r
 EFIAPI\r
 AcquireSpinLock (\r
-  IN OUT  SPIN_LOCK                 *SpinLock\r
+  IN OUT  SPIN_LOCK  *SpinLock\r
   )\r
 {\r
   UINT64  Current;\r
@@ -112,7 +106,7 @@ AcquireSpinLock (
     //\r
     // Get the current timer value\r
     //\r
-    Current = GetPerformanceCounter();\r
+    Current = GetPerformanceCounter ();\r
 \r
     //\r
     // Initialize local variables\r
@@ -136,23 +130,27 @@ AcquireSpinLock (
     if (Cycle < 0) {\r
       Cycle = -Cycle;\r
     }\r
+\r
     Cycle++;\r
 \r
     while (!AcquireSpinLockOrFail (SpinLock)) {\r
       CpuPause ();\r
       Previous = Current;\r
-      Current  = GetPerformanceCounter();\r
-      Delta = (INT64) (Current - Previous);\r
+      Current  = GetPerformanceCounter ();\r
+      Delta    = (INT64)(Current - Previous);\r
       if (Start > End) {\r
         Delta = -Delta;\r
       }\r
+\r
       if (Delta < 0) {\r
         Delta += Cycle;\r
       }\r
+\r
       Total += Delta;\r
       ASSERT (Total < Timeout);\r
     }\r
   }\r
+\r
   return SpinLock;\r
 }\r
 \r
@@ -176,10 +174,10 @@ AcquireSpinLock (
 BOOLEAN\r
 EFIAPI\r
 AcquireSpinLockOrFail (\r
-  IN OUT  SPIN_LOCK                 *SpinLock\r
+  IN OUT  SPIN_LOCK  *SpinLock\r
   )\r
 {\r
-  SPIN_LOCK    LockValue;\r
+  SPIN_LOCK  LockValue;\r
 \r
   ASSERT (SpinLock != NULL);\r
 \r
@@ -187,12 +185,12 @@ AcquireSpinLockOrFail (
   ASSERT (SPIN_LOCK_ACQUIRED == LockValue || SPIN_LOCK_RELEASED == LockValue);\r
 \r
   return (BOOLEAN)(\r
-           InterlockedCompareExchangePointer (\r
-             (VOID**)SpinLock,\r
-             (VOID*)SPIN_LOCK_RELEASED,\r
-             (VOID*)SPIN_LOCK_ACQUIRED\r
-             ) == (VOID*)SPIN_LOCK_RELEASED\r
-           );\r
+                   InterlockedCompareExchangePointer (\r
+                     (VOID **)SpinLock,\r
+                     (VOID *)SPIN_LOCK_RELEASED,\r
+                     (VOID *)SPIN_LOCK_ACQUIRED\r
+                     ) == (VOID *)SPIN_LOCK_RELEASED\r
+                   );\r
 }\r
 \r
 /**\r
@@ -212,10 +210,10 @@ AcquireSpinLockOrFail (
 SPIN_LOCK *\r
 EFIAPI\r
 ReleaseSpinLock (\r
-  IN OUT  SPIN_LOCK                 *SpinLock\r
+  IN OUT  SPIN_LOCK  *SpinLock\r
   )\r
 {\r
-  SPIN_LOCK    LockValue;\r
+  SPIN_LOCK  LockValue;\r
 \r
   ASSERT (SpinLock != NULL);\r
 \r
@@ -231,8 +229,7 @@ ReleaseSpinLock (
 \r
   Performs an atomic increment of the 32-bit unsigned integer specified by\r
   Value and returns the incremented value. The increment operation must be\r
-  performed using MP safe mechanisms. The state of the return value is not\r
-  guaranteed to be MP safe.\r
+  performed using MP safe mechanisms.\r
 \r
   If Value is NULL, then ASSERT().\r
 \r
@@ -244,7 +241,7 @@ ReleaseSpinLock (
 UINT32\r
 EFIAPI\r
 InterlockedIncrement (\r
-  IN      volatile UINT32           *Value\r
+  IN      volatile UINT32  *Value\r
   )\r
 {\r
   ASSERT (Value != NULL);\r
@@ -256,8 +253,7 @@ InterlockedIncrement (
 \r
   Performs an atomic decrement of the 32-bit unsigned integer specified by\r
   Value and returns the decremented value. The decrement operation must be\r
-  performed using MP safe mechanisms. The state of the return value is not\r
-  guaranteed to be MP safe.\r
+  performed using MP safe mechanisms.\r
 \r
   If Value is NULL, then ASSERT().\r
 \r
@@ -269,7 +265,7 @@ InterlockedIncrement (
 UINT32\r
 EFIAPI\r
 InterlockedDecrement (\r
-  IN      volatile UINT32           *Value\r
+  IN      volatile UINT32  *Value\r
   )\r
 {\r
   ASSERT (Value != NULL);\r
@@ -298,9 +294,9 @@ InterlockedDecrement (
 UINT16\r
 EFIAPI\r
 InterlockedCompareExchange16 (\r
-  IN OUT  volatile UINT16           *Value,\r
-  IN      UINT16                    CompareValue,\r
-  IN      UINT16                    ExchangeValue\r
+  IN OUT  volatile UINT16  *Value,\r
+  IN      UINT16           CompareValue,\r
+  IN      UINT16           ExchangeValue\r
   )\r
 {\r
   ASSERT (Value != NULL);\r
@@ -329,9 +325,9 @@ InterlockedCompareExchange16 (
 UINT32\r
 EFIAPI\r
 InterlockedCompareExchange32 (\r
-  IN OUT  volatile UINT32           *Value,\r
-  IN      UINT32                    CompareValue,\r
-  IN      UINT32                    ExchangeValue\r
+  IN OUT  volatile UINT32  *Value,\r
+  IN      UINT32           CompareValue,\r
+  IN      UINT32           ExchangeValue\r
   )\r
 {\r
   ASSERT (Value != NULL);\r
@@ -359,9 +355,9 @@ InterlockedCompareExchange32 (
 UINT64\r
 EFIAPI\r
 InterlockedCompareExchange64 (\r
-  IN OUT  volatile UINT64           *Value,\r
-  IN      UINT64                    CompareValue,\r
-  IN      UINT64                    ExchangeValue\r
+  IN OUT  volatile UINT64  *Value,\r
+  IN      UINT64           CompareValue,\r
+  IN      UINT64           ExchangeValue\r
   )\r
 {\r
   ASSERT (Value != NULL);\r
@@ -389,9 +385,9 @@ InterlockedCompareExchange64 (
 VOID *\r
 EFIAPI\r
 InterlockedCompareExchangePointer (\r
-  IN OUT  VOID                      * volatile *Value,\r
-  IN      VOID                      *CompareValue,\r
-  IN      VOID                      *ExchangeValue\r
+  IN OUT  VOID                      *volatile  *Value,\r
+  IN      VOID                                 *CompareValue,\r
+  IN      VOID                                 *ExchangeValue\r
   )\r
 {\r
   UINT8  SizeOfValue;\r
@@ -400,17 +396,17 @@ InterlockedCompareExchangePointer (
 \r
   switch (SizeOfValue) {\r
     case sizeof (UINT32):\r
-      return (VOID*)(UINTN)InterlockedCompareExchange32 (\r
-                             (volatile UINT32 *)Value,\r
-                             (UINT32)(UINTN)CompareValue,\r
-                             (UINT32)(UINTN)ExchangeValue\r
-                             );\r
+      return (VOID *)(UINTN)InterlockedCompareExchange32 (\r
+                              (volatile UINT32 *)Value,\r
+                              (UINT32)(UINTN)CompareValue,\r
+                              (UINT32)(UINTN)ExchangeValue\r
+                              );\r
     case sizeof (UINT64):\r
-      return (VOID*)(UINTN)InterlockedCompareExchange64 (\r
-                             (volatile UINT64 *)Value,\r
-                             (UINT64)(UINTN)CompareValue,\r
-                             (UINT64)(UINTN)ExchangeValue\r
-                             );\r
+      return (VOID *)(UINTN)InterlockedCompareExchange64 (\r
+                              (volatile UINT64 *)Value,\r
+                              (UINT64)(UINTN)CompareValue,\r
+                              (UINT64)(UINTN)ExchangeValue\r
+                              );\r
     default:\r
       ASSERT (FALSE);\r
       return NULL;\r