]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseSynchronizationLib/Synchronization.c
MdePkg/BaseSynchronizationLib: Add volatile Interlocked*() APIs
[mirror_edk2.git] / MdePkg / Library / BaseSynchronizationLib / Synchronization.c
index bb0c8e9469fa45aedcbbda91501caaf0f3201735..4f2e21bcb32110789ad57bf549a7cd2d3b274feb 100644 (file)
@@ -244,7 +244,7 @@ ReleaseSpinLock (
 UINT32\r
 EFIAPI\r
 InterlockedIncrement (\r
-  IN      UINT32                    *Value\r
+  IN      volatile UINT32           *Value\r
   )\r
 {\r
   ASSERT (Value != NULL);\r
@@ -269,7 +269,7 @@ InterlockedIncrement (
 UINT32\r
 EFIAPI\r
 InterlockedDecrement (\r
-  IN      UINT32                    *Value\r
+  IN      volatile UINT32           *Value\r
   )\r
 {\r
   ASSERT (Value != NULL);\r
@@ -298,7 +298,7 @@ InterlockedDecrement (
 UINT16\r
 EFIAPI\r
 InterlockedCompareExchange16 (\r
-  IN OUT  UINT16                    *Value,\r
+  IN OUT  volatile UINT16           *Value,\r
   IN      UINT16                    CompareValue,\r
   IN      UINT16                    ExchangeValue\r
   )\r
@@ -329,7 +329,7 @@ InterlockedCompareExchange16 (
 UINT32\r
 EFIAPI\r
 InterlockedCompareExchange32 (\r
-  IN OUT  UINT32                    *Value,\r
+  IN OUT  volatile UINT32           *Value,\r
   IN      UINT32                    CompareValue,\r
   IN      UINT32                    ExchangeValue\r
   )\r
@@ -359,7 +359,7 @@ InterlockedCompareExchange32 (
 UINT64\r
 EFIAPI\r
 InterlockedCompareExchange64 (\r
-  IN OUT  UINT64                    *Value,\r
+  IN OUT  volatile UINT64           *Value,\r
   IN      UINT64                    CompareValue,\r
   IN      UINT64                    ExchangeValue\r
   )\r
@@ -389,7 +389,7 @@ InterlockedCompareExchange64 (
 VOID *\r
 EFIAPI\r
 InterlockedCompareExchangePointer (\r
-  IN OUT  VOID                      **Value,\r
+  IN OUT  VOID                      * volatile *Value,\r
   IN      VOID                      *CompareValue,\r
   IN      VOID                      *ExchangeValue\r
   )\r
@@ -401,13 +401,13 @@ InterlockedCompareExchangePointer (
   switch (SizeOfValue) {\r
     case sizeof (UINT32):\r
       return (VOID*)(UINTN)InterlockedCompareExchange32 (\r
-                             (UINT32*)Value,\r
+                             (volatile UINT32 *)Value,\r
                              (UINT32)(UINTN)CompareValue,\r
                              (UINT32)(UINTN)ExchangeValue\r
                              );\r
     case sizeof (UINT64):\r
       return (VOID*)(UINTN)InterlockedCompareExchange64 (\r
-                             (UINT64*)Value,\r
+                             (volatile UINT64 *)Value,\r
                              (UINT64)(UINTN)CompareValue,\r
                              (UINT64)(UINTN)ExchangeValue\r
                              );\r