]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.nasm
MdePkg/SynchronizationLib: fix Interlocked[De|In]crement return value
[mirror_edk2.git] / MdePkg / Library / BaseSynchronizationLib / X64 / InterlockedDecrement.nasm
index 60f43111fe0e82db23b9c2136c9135c47a7de0b7..dabdca945eeaa821375da33856d54c98d0ebbb90 100644 (file)
@@ -1,6 +1,6 @@
 ;------------------------------------------------------------------------------\r
 ;\r
-; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>\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
@@ -33,7 +33,7 @@
 ;------------------------------------------------------------------------------\r
 global ASM_PFX(InternalSyncDecrement)\r
 ASM_PFX(InternalSyncDecrement):\r
-    lock    dec     dword [rcx]\r
-    mov     eax, [rcx]\r
+    mov       eax, 0FFFFFFFFh\r
+    lock xadd dword [rcx], eax\r
+    dec       eax\r
     ret\r
-\r