MdePkg/BaseSynchronizationLib: Add volatile Interlocked*() APIs
authorMichael Kinney <michael.d.kinney@intel.com>
Wed, 16 Nov 2016 22:37:15 +0000 (14:37 -0800)
committerMichael Kinney <michael.d.kinney@intel.com>
Fri, 18 Nov 2016 01:08:19 +0000 (17:08 -0800)
The SpinLock functions in the SynchronicationLib use volatile
parameters to keep compiler from optimizing these functions
too much.  The volatile keyword is missing from the Interlocked*()
functions in this same library instance.  Update the library instance
to consistently use volatile on all functions in the
SynchronizationLib class.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Andrew Fish <afish@apple.com>
Cc: Jeff Fan <jeff.fan@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Michael Kinney <michael.d.kinney@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
33 files changed:
MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.asm
MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.c
MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.nasm
MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.asm
MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.c
MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.nasm
MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.asm
MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.c
MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.nasm
MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.asm
MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.c
MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.nasm
MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.asm
MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.c
MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.nasm
MdePkg/Library/BaseSynchronizationLib/Synchronization.c
MdePkg/Library/BaseSynchronizationLib/SynchronizationGcc.c
MdePkg/Library/BaseSynchronizationLib/SynchronizationMsc.c
MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.asm
MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.c
MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.nasm
MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.asm
MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.c
MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.nasm
MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.asm
MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.c
MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.nasm
MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.asm
MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.c
MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.nasm
MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.asm
MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.c
MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.nasm

index 92a0f49..7362fe9 100644 (file)
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------\r
 ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
+; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>\r
 ; Copyright (c) 2015, Linaro Ltd. 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
@@ -30,7 +30,7 @@
 ; UINT16\r
 ; EFIAPI\r
 ; InternalSyncCompareExchange16 (\r
-;   IN      UINT16                    *Value,\r
+;   IN      volatile UINT16           *Value,\r
 ;   IN      UINT16                    CompareValue,\r
 ;   IN      UINT16                    ExchangeValue\r
 ;   );\r
index 3d52137..0c3a4f6 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   InterlockedCompareExchange16 function\r
 \r
-  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>\r
   Copyright (c) 2015, Linaro Ltd. 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
@@ -36,7 +36,7 @@
 UINT16\r
 EFIAPI\r
 InternalSyncCompareExchange16 (\r
-  IN      UINT16                    *Value,\r
+  IN      volatile UINT16           *Value,\r
   IN      UINT16                    CompareValue,\r
   IN      UINT16                    ExchangeValue\r
   )\r
index 8cabe66..7fbfd75 100644 (file)
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------\r
 ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
+; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>\r
 ; Copyright (c) 2015, Linaro Ltd. 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
@@ -28,7 +28,7 @@
 ; UINT16\r
 ; EFIAPI\r
 ; InternalSyncCompareExchange16 (\r
-;   IN      UINT16                    *Value,\r
+;   IN      volatile UINT16           *Value,\r
 ;   IN      UINT16                    CompareValue,\r
 ;   IN      UINT16                    ExchangeValue\r
 ;   );\r
index 78ea72c..1a4a611 100644 (file)
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------\r
 ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
+; Copyright (c) 2006 - 2016, 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
@@ -29,7 +29,7 @@
 ; UINT32\r
 ; EFIAPI\r
 ; InternalSyncCompareExchange32 (\r
-;   IN      UINT32                    *Value,\r
+;   IN      volatile UINT32           *Value,\r
 ;   IN      UINT32                    CompareValue,\r
 ;   IN      UINT32                    ExchangeValue\r
 ;   );\r
index a2c6838..cf80dde 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   InterlockedCompareExchange32 function\r
 \r
-  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2006 - 2016, 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
@@ -35,7 +35,7 @@
 UINT32\r
 EFIAPI\r
 InternalSyncCompareExchange32 (\r
-  IN      UINT32                    *Value,\r
+  IN      volatile UINT32           *Value,\r
   IN      UINT32                    CompareValue,\r
   IN      UINT32                    ExchangeValue\r
   )\r
index 5393273..9064c65 100644 (file)
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------\r
 ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
+; Copyright (c) 2006 - 2016, 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
@@ -27,7 +27,7 @@
 ; UINT32\r
 ; EFIAPI\r
 ; InternalSyncCompareExchange32 (\r
-;   IN      UINT32                    *Value,\r
+;   IN      volatile UINT32           *Value,\r
 ;   IN      UINT32                    CompareValue,\r
 ;   IN      UINT32                    ExchangeValue\r
 ;   );\r
index 0fcbd23..e7b02db 100644 (file)
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------\r
 ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
+; Copyright (c) 2006 - 2016, 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
@@ -29,7 +29,7 @@
 ; UINT64\r
 ; EFIAPI\r
 ; InternalSyncCompareExchange64 (\r
-;   IN      UINT64                    *Value,\r
+;   IN      volatile UINT64           *Value,\r
 ;   IN      UINT64                    CompareValue,\r
 ;   IN      UINT64                    ExchangeValue\r
 ;   );\r
index 73af6ef..0bdbd79 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   InterlockedCompareExchange64 function\r
 \r
-  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2006 - 2016, 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
@@ -34,7 +34,7 @@
 UINT64\r
 EFIAPI\r
 InternalSyncCompareExchange64 (\r
-  IN      UINT64                    *Value,\r
+  IN      volatile UINT64           *Value,\r
   IN      UINT64                    CompareValue,\r
   IN      UINT64                    ExchangeValue\r
   )\r
index 206de40..c5c3e12 100644 (file)
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------\r
 ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
+; Copyright (c) 2006 - 2016, 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
@@ -27,7 +27,7 @@
 ; UINT64\r
 ; EFIAPI\r
 ; InternalSyncCompareExchange64 (\r
-;   IN      UINT64                    *Value,\r
+;   IN      volatile UINT64           *Value,\r
 ;   IN      UINT64                    CompareValue,\r
 ;   IN      UINT64                    ExchangeValue\r
 ;   );\r
index 22cb0b2..b5fa447 100644 (file)
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------\r
 ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
+; Copyright (c) 2006 - 2016, 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
@@ -29,7 +29,7 @@
 ; UINT32\r
 ; EFIAPI\r
 ; InternalSyncDecrement (\r
-;   IN      UINT32                    *Value\r
+;   IN      volatile UINT32           *Value\r
 ;   );\r
 ;------------------------------------------------------------------------------\r
 InternalSyncDecrement   PROC\r
index 7f18e0b..354a0e7 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   InterlockedDecrement function\r
 \r
-  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2006 - 2016, 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
@@ -31,7 +31,7 @@
 UINT32\r
 EFIAPI\r
 InternalSyncDecrement (\r
-  IN      UINT32                    *Value\r
+  IN      volatile UINT32           *Value\r
   )\r
 {\r
   _asm {\r
index a7414be..4c46041 100644 (file)
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------\r
 ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
+; Copyright (c) 2006 - 2016, 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
@@ -27,7 +27,7 @@
 ; UINT32\r
 ; EFIAPI\r
 ; InternalSyncDecrement (\r
-;   IN      UINT32                    *Value\r
+;   IN      volatile UINT32           *Value\r
 ;   );\r
 ;------------------------------------------------------------------------------\r
 global ASM_PFX(InternalSyncDecrement)\r
index 51675f6..61c2533 100644 (file)
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------\r
 ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
+; Copyright (c) 2006 - 2016, 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
@@ -29,7 +29,7 @@
 ; UINT32\r
 ; EFIAPI\r
 ; InternalSyncIncrement (\r
-;   IN      UINT32                    *Value\r
+;   IN      volatile UINT32           *Value\r
 ;   );\r
 ;------------------------------------------------------------------------------\r
 InternalSyncIncrement   PROC\r
index cf9f92a..c61a550 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   InterLockedIncrement function\r
 \r
-  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2006 - 2016, 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
@@ -31,7 +31,7 @@
 UINT32\r
 EFIAPI\r
 InternalSyncIncrement (\r
-  IN      UINT32                    *Value\r
+  IN      volatile UINT32           *Value\r
   )\r
 {\r
   _asm {\r
index 24f24f5..3902c73 100644 (file)
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------\r
 ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
+; Copyright (c) 2006 - 2016, 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
@@ -27,7 +27,7 @@
 ; UINT32\r
 ; EFIAPI\r
 ; InternalSyncIncrement (\r
-;   IN      UINT32                    *Value\r
+;   IN      volatile UINT32           *Value\r
 ;   );\r
 ;------------------------------------------------------------------------------\r
 global ASM_PFX(InternalSyncIncrement)\r
index bb0c8e9..4f2e21b 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
index 4b8c8e5..98c9648 100644 (file)
@@ -260,7 +260,7 @@ ReleaseSpinLock (
 UINT32\r
 EFIAPI\r
 InterlockedIncrement (\r
-  IN      UINT32                    *Value\r
+  IN      volatile UINT32           *Value\r
   )\r
 {\r
   ASSERT (Value != NULL);\r
@@ -285,7 +285,7 @@ InterlockedIncrement (
 UINT32\r
 EFIAPI\r
 InterlockedDecrement (\r
-  IN      UINT32                    *Value\r
+  IN      volatile UINT32           *Value\r
   )\r
 {\r
   ASSERT (Value != NULL);\r
@@ -314,7 +314,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
@@ -345,7 +345,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
@@ -375,7 +375,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
@@ -405,7 +405,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
@@ -417,13 +417,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
index db344b7..8bc6d26 100644 (file)
@@ -262,7 +262,7 @@ ReleaseSpinLock (
 UINT32\r
 EFIAPI\r
 InterlockedIncrement (\r
-  IN      UINT32                    *Value\r
+  IN      volatile UINT32           *Value\r
   )\r
 {\r
   ASSERT (Value != NULL);\r
@@ -287,7 +287,7 @@ InterlockedIncrement (
 UINT32\r
 EFIAPI\r
 InterlockedDecrement (\r
-  IN      UINT32                    *Value\r
+  IN      volatile UINT32           *Value\r
   )\r
 {\r
   ASSERT (Value != NULL);\r
@@ -316,7 +316,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
@@ -347,7 +347,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
@@ -377,7 +377,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
@@ -407,7 +407,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
@@ -419,13 +419,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
index 7926662..e891922 100644 (file)
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------\r
 ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
+; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>\r
 ; Copyright (c) 2015, Linaro Ltd. 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
@@ -28,7 +28,7 @@
 ; UINT16\r
 ; EFIAPI\r
 ; InterlockedCompareExchange16 (\r
-;   IN      UINT16                    *Value,\r
+;   IN      volatile UINT16           *Value,\r
 ;   IN      UINT16                    CompareValue,\r
 ;   IN      UINT16                    ExchangeValue\r
 ;   );\r
index 76aa6fb..8b51ecb 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   InterlockedCompareExchange16 function\r
 \r
-  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>\r
   Copyright (c) 2015, Linaro Ltd. 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
@@ -44,7 +44,7 @@ __int16 _InterlockedCompareExchange16(
 UINT16\r
 EFIAPI\r
 InternalSyncCompareExchange16 (\r
-  IN      UINT16                    *Value,\r
+  IN      volatile UINT16           *Value,\r
   IN      UINT16                    CompareValue,\r
   IN      UINT16                    ExchangeValue\r
   )\r
index 1d72d07..efe3249 100644 (file)
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------\r
 ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
+; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>\r
 ; Copyright (c) 2015, Linaro Ltd. 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
@@ -29,7 +29,7 @@
 ; UINT16\r
 ; EFIAPI\r
 ; InterlockedCompareExchange16 (\r
-;   IN      UINT16                    *Value,\r
+;   IN      volatile UINT16           *Value,\r
 ;   IN      UINT16                    CompareValue,\r
 ;   IN      UINT16                    ExchangeValue\r
 ;   );\r
index ee94ff7..269a3c7 100644 (file)
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------\r
 ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
+; Copyright (c) 2006 - 2016, 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
@@ -27,7 +27,7 @@
 ; UINT32\r
 ; EFIAPI\r
 ; InterlockedCompareExchange32 (\r
-;   IN      UINT32                    *Value,\r
+;   IN      volatile UINT32           *Value,\r
 ;   IN      UINT32                    CompareValue,\r
 ;   IN      UINT32                    ExchangeValue\r
 ;   );\r
index 9f8f3d3..ef407af 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   InterlockedCompareExchange32 function\r
 \r
-  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2006 - 2016, 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
@@ -44,7 +44,7 @@ long _InterlockedCompareExchange(
 UINT32\r
 EFIAPI\r
 InternalSyncCompareExchange32 (\r
-  IN      UINT32                    *Value,\r
+  IN      volatile UINT32           *Value,\r
   IN      UINT32                    CompareValue,\r
   IN      UINT32                    ExchangeValue\r
   )\r
index 4c8c810..31142d0 100644 (file)
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------\r
 ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
+; Copyright (c) 2006 - 2016, 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
@@ -28,7 +28,7 @@
 ; UINT32\r
 ; EFIAPI\r
 ; InterlockedCompareExchange32 (\r
-;   IN      UINT32                    *Value,\r
+;   IN      volatile UINT32           *Value,\r
 ;   IN      UINT32                    CompareValue,\r
 ;   IN      UINT32                    ExchangeValue\r
 ;   );\r
index b5bcd25..80d03fd 100644 (file)
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------\r
 ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
+; Copyright (c) 2006 - 2016, 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
@@ -27,7 +27,7 @@
 ; UINT64\r
 ; EFIAPI\r
 ; InterlockedCompareExchange64 (\r
-;   IN      UINT64                    *Value,\r
+;   IN      volatile UINT64           *Value,\r
 ;   IN      UINT64                    CompareValue,\r
 ;   IN      UINT64                    ExchangeValue\r
 ;   );\r
index 56805b3..a8f9fbb 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   InterlockedCompareExchange64 function\r
 \r
-  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2006 - 2016, 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
@@ -43,7 +43,7 @@ __int64 _InterlockedCompareExchange64(
 UINT64\r
 EFIAPI\r
 InternalSyncCompareExchange64 (\r
-  IN      UINT64                    *Value,\r
+  IN      volatile UINT64           *Value,\r
   IN      UINT64                    CompareValue,\r
   IN      UINT64                    ExchangeValue\r
   )\r
index 72c350a..819daed 100644 (file)
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------\r
 ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
+; Copyright (c) 2006 - 2016, 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
@@ -28,7 +28,7 @@
 ; UINT64\r
 ; EFIAPI\r
 ; InterlockedCompareExchange64 (\r
-;   IN      UINT64                    *Value,\r
+;   IN      volatile UINT64           *Value,\r
 ;   IN      UINT64                    CompareValue,\r
 ;   IN      UINT64                    ExchangeValue\r
 ;   );\r
index fdea0d4..23f03c4 100644 (file)
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------\r
 ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
+; Copyright (c) 2006 - 2016, 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
@@ -27,7 +27,7 @@
 ; UINT32\r
 ; EFIAPI\r
 ; InterlockedDecrement (\r
-;   IN      UINT32                    *Value\r
+;   IN      volatile UINT32           *Value\r
 ;   );\r
 ;------------------------------------------------------------------------------\r
 InternalSyncDecrement   PROC\r
index 65faf01..da402cd 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   InterlockedDecrement function\r
 \r
-  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2006 - 2016, 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
@@ -38,9 +38,9 @@ long _InterlockedDecrement(
 UINT32\r
 EFIAPI\r
 InternalSyncDecrement (\r
-  IN      UINT32                    *Value\r
+  IN      volatile UINT32           *Value\r
   )\r
 {\r
-  return _InterlockedDecrement (Value);\r
+  return _InterlockedDecrement ((long *)(UINTN)(Value));\r
 }\r
 \r
index e140e44..780d902 100644 (file)
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------\r
 ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
+; Copyright (c) 2006 - 2016, 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
@@ -28,7 +28,7 @@
 ; UINT32\r
 ; EFIAPI\r
 ; InterlockedDecrement (\r
-;   IN      UINT32                    *Value\r
+;   IN      volatile UINT32           *Value\r
 ;   );\r
 ;------------------------------------------------------------------------------\r
 global ASM_PFX(InternalSyncDecrement)\r
index 65abcf7..44f264f 100644 (file)
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------\r
 ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
+; Copyright (c) 2006 - 2016, 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
@@ -27,7 +27,7 @@
 ; UINT32\r
 ; EFIAPI\r
 ; InterlockedIncrement (\r
-;   IN      UINT32                    *Value\r
+;   IN      volatile UINT32           *Value\r
 ;   );\r
 ;------------------------------------------------------------------------------\r
 InternalSyncIncrement   PROC\r
index c0deb60..bbd1384 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   InterLockedIncrement function\r
 \r
-  Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2006 - 2016, 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
@@ -38,9 +38,9 @@ long _InterlockedIncrement(
 UINT32\r
 EFIAPI\r
 InternalSyncIncrement (\r
-  IN      UINT32                    *Value\r
+  IN      volatile UINT32           *Value\r
   )\r
 {\r
-  return _InterlockedIncrement (Value);\r
+  return _InterlockedIncrement ((long *)(UINTN)(Value));\r
 }\r
 \r
index 59d90be..e1c70a4 100644 (file)
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------\r
 ;\r
-; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
+; Copyright (c) 2006 - 2016, 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
@@ -28,7 +28,7 @@
 ; UINT32\r
 ; EFIAPI\r
 ; InterlockedIncrement (\r
-;   IN      UINT32                    *Value\r
+;   IN      volatile UINT32           *Value\r
 ;   );\r
 ;------------------------------------------------------------------------------\r
 global ASM_PFX(InternalSyncIncrement)\r