From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 0D3A881EC8 for ; Thu, 17 Nov 2016 08:02:01 -0800 (PST) Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id DEDAA445DD; Thu, 17 Nov 2016 16:02:05 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-116-6.phx2.redhat.com [10.3.116.6]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id uAHG23cV002958; Thu, 17 Nov 2016 11:02:03 -0500 To: "Kinney, Michael D" , "edk2-devel@ml01.01.org" References: <1479358424-17096-1-git-send-email-michael.d.kinney@intel.com> <1479358424-17096-3-git-send-email-michael.d.kinney@intel.com> Cc: "Gao, Liming" , Andrew Fish , "Fan, Jeff" From: Laszlo Ersek Message-ID: <094f833f-32ef-0eed-9236-45bdb77fde51@redhat.com> Date: Thu, 17 Nov 2016 17:02:03 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Thu, 17 Nov 2016 16:02:05 +0000 (UTC) Subject: Re: [Patch 2/2] MdePkg/BaseSynchronizationLib: Add volatile Interlocked*() APIs X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Nov 2016 16:02:01 -0000 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit On 11/17/16 16:55, Kinney, Michael D wrote: > Laszlo, > > Thanks for the feedback. I will update and send V2. > > I did not change the names of any functions. The comment > blocks had names that did not match the name of the function, > so I was only fixing the comment. Ah! Thank you. That's a completely valid set of updates then; but I think it should be in a different patch. Cheers Laszlo >> -----Original Message----- >> From: Laszlo Ersek [mailto:lersek@redhat.com] >> Sent: Thursday, November 17, 2016 1:21 AM >> To: Kinney, Michael D ; edk2-devel@ml01.01.org >> Cc: Gao, Liming ; Andrew Fish ; Fan, Jeff >> >> Subject: Re: [Patch 2/2] MdePkg/BaseSynchronizationLib: Add volatile Interlocked*() >> APIs >> >> On 11/17/16 05:53, Michael Kinney wrote: >>> 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 >>> Cc: Laszlo Ersek >>> Cc: Andrew Fish >>> Cc: Jeff Fan >>> Contributed-under: TianoCore Contribution Agreement 1.0 >>> Signed-off-by: Michael Kinney >>> --- >>> .../Ia32/InterlockedCompareExchange16.asm | 4 ++-- >>> .../Ia32/InterlockedCompareExchange16.c | 4 ++-- >>> .../Ia32/InterlockedCompareExchange16.nasm | 4 ++-- >>> .../Ia32/InterlockedCompareExchange32.asm | 4 ++-- >>> .../Ia32/InterlockedCompareExchange32.c | 4 ++-- >>> .../Ia32/InterlockedCompareExchange32.nasm | 4 ++-- >>> .../Ia32/InterlockedCompareExchange64.asm | 4 ++-- >>> .../Ia32/InterlockedCompareExchange64.c | 4 ++-- >>> .../Ia32/InterlockedCompareExchange64.nasm | 4 ++-- >>> .../Ia32/InterlockedDecrement.asm | 2 +- >>> .../BaseSynchronizationLib/Ia32/InterlockedDecrement.c | 4 ++-- >>> .../Ia32/InterlockedDecrement.nasm | 4 ++-- >>> .../Ia32/InterlockedIncrement.asm | 4 ++-- >>> .../BaseSynchronizationLib/Ia32/InterlockedIncrement.c | 4 ++-- >>> .../Ia32/InterlockedIncrement.nasm | 4 ++-- >>> .../Library/BaseSynchronizationLib/Synchronization.c | 18 +++++++++--------- >>> .../BaseSynchronizationLib/SynchronizationGcc.c | 18 +++++++++--------- >>> .../BaseSynchronizationLib/SynchronizationMsc.c | 18 +++++++++--------- >>> .../X64/InterlockedCompareExchange16.asm | 6 +++--- >>> .../X64/InterlockedCompareExchange16.c | 4 ++-- >>> .../X64/InterlockedCompareExchange16.nasm | 6 +++--- >>> .../X64/InterlockedCompareExchange32.asm | 6 +++--- >>> .../X64/InterlockedCompareExchange32.c | 4 ++-- >>> .../X64/InterlockedCompareExchange32.nasm | 6 +++--- >>> .../X64/InterlockedCompareExchange64.asm | 6 +++--- >>> .../X64/InterlockedCompareExchange64.c | 4 ++-- >>> .../X64/InterlockedCompareExchange64.nasm | 4 ++-- >>> .../X64/InterlockedDecrement.asm | 6 +++--- >>> .../BaseSynchronizationLib/X64/InterlockedDecrement.c | 6 +++--- >>> .../X64/InterlockedDecrement.nasm | 6 +++--- >>> .../X64/InterlockedIncrement.asm | 6 +++--- >>> .../BaseSynchronizationLib/X64/InterlockedIncrement.c | 6 +++--- >>> .../X64/InterlockedIncrement.nasm | 6 +++--- >>> 33 files changed, 97 insertions(+), 97 deletions(-) >>> >>> diff --git >> a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.asm >> b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.asm >>> index 92a0f49..7362fe9 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.asm >>> +++ b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.asm >>> @@ -1,6 +1,6 @@ >>> ;------------------------------------------------------------------------------ >>> ; >>> -; Copyright (c) 2006, Intel Corporation. All rights reserved.
>>> +; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> ; Copyright (c) 2015, Linaro Ltd. All rights reserved.
>>> ; This program and the accompanying materials >>> ; are licensed and made available under the terms and conditions of the BSD >> License >>> @@ -30,7 +30,7 @@ >>> ; UINT16 >>> ; EFIAPI >>> ; InternalSyncCompareExchange16 ( >>> -; IN UINT16 *Value, >>> +; IN volatile UINT16 *Value, >>> ; IN UINT16 CompareValue, >>> ; IN UINT16 ExchangeValue >>> ; ); >>> diff --git >> a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.c >> b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.c >>> index 3d52137..0c3a4f6 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.c >>> +++ b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.c >>> @@ -1,7 +1,7 @@ >>> /** @file >>> InterlockedCompareExchange16 function >>> >>> - Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
>>> + Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> Copyright (c) 2015, Linaro Ltd. All rights reserved.
>>> This program and the accompanying materials >>> are licensed and made available under the terms and conditions of the BSD >> License >>> @@ -36,7 +36,7 @@ >>> UINT16 >>> EFIAPI >>> InternalSyncCompareExchange16 ( >>> - IN UINT16 *Value, >>> + IN volatile UINT16 *Value, >>> IN UINT16 CompareValue, >>> IN UINT16 ExchangeValue >>> ) >>> diff --git >> a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.nasm >> b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.nasm >>> index 8cabe66..7fbfd75 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.nasm >>> +++ b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.nasm >>> @@ -1,6 +1,6 @@ >>> ;------------------------------------------------------------------------------ >>> ; >>> -; Copyright (c) 2006, Intel Corporation. All rights reserved.
>>> +; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> ; Copyright (c) 2015, Linaro Ltd. All rights reserved.
>>> ; This program and the accompanying materials >>> ; are licensed and made available under the terms and conditions of the BSD >> License >>> @@ -28,7 +28,7 @@ >>> ; UINT16 >>> ; EFIAPI >>> ; InternalSyncCompareExchange16 ( >>> -; IN UINT16 *Value, >>> +; IN volatile UINT16 *Value, >>> ; IN UINT16 CompareValue, >>> ; IN UINT16 ExchangeValue >>> ; ); >>> diff --git >> a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.asm >> b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.asm >>> index 78ea72c..1a4a611 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.asm >>> +++ b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.asm >>> @@ -1,6 +1,6 @@ >>> ;------------------------------------------------------------------------------ >>> ; >>> -; Copyright (c) 2006, Intel Corporation. All rights reserved.
>>> +; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> ; This program and the accompanying materials >>> ; are licensed and made available under the terms and conditions of the BSD >> License >>> ; which accompanies this distribution. The full text of the license may be found >> at >>> @@ -29,7 +29,7 @@ >>> ; UINT32 >>> ; EFIAPI >>> ; InternalSyncCompareExchange32 ( >>> -; IN UINT32 *Value, >>> +; IN volatile UINT32 *Value, >>> ; IN UINT32 CompareValue, >>> ; IN UINT32 ExchangeValue >>> ; ); >>> diff --git >> a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.c >> b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.c >>> index a2c6838..cf80dde 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.c >>> +++ b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.c >>> @@ -1,7 +1,7 @@ >>> /** @file >>> InterlockedCompareExchange32 function >>> >>> - Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
>>> + Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> This program and the accompanying materials >>> are licensed and made available under the terms and conditions of the BSD >> License >>> which accompanies this distribution. The full text of the license may be found >> at >>> @@ -35,7 +35,7 @@ >>> UINT32 >>> EFIAPI >>> InternalSyncCompareExchange32 ( >>> - IN UINT32 *Value, >>> + IN volatile UINT32 *Value, >>> IN UINT32 CompareValue, >>> IN UINT32 ExchangeValue >>> ) >>> diff --git >> a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.nasm >> b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.nasm >>> index 5393273..9064c65 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.nasm >>> +++ b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.nasm >>> @@ -1,6 +1,6 @@ >>> ;------------------------------------------------------------------------------ >>> ; >>> -; Copyright (c) 2006, Intel Corporation. All rights reserved.
>>> +; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> ; This program and the accompanying materials >>> ; are licensed and made available under the terms and conditions of the BSD >> License >>> ; which accompanies this distribution. The full text of the license may be found >> at >>> @@ -27,7 +27,7 @@ >>> ; UINT32 >>> ; EFIAPI >>> ; InternalSyncCompareExchange32 ( >>> -; IN UINT32 *Value, >>> +; IN volatile UINT32 *Value, >>> ; IN UINT32 CompareValue, >>> ; IN UINT32 ExchangeValue >>> ; ); >>> diff --git >> a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.asm >> b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.asm >>> index 0fcbd23..e7b02db 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.asm >>> +++ b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.asm >>> @@ -1,6 +1,6 @@ >>> ;------------------------------------------------------------------------------ >>> ; >>> -; Copyright (c) 2006, Intel Corporation. All rights reserved.
>>> +; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> ; This program and the accompanying materials >>> ; are licensed and made available under the terms and conditions of the BSD >> License >>> ; which accompanies this distribution. The full text of the license may be found >> at >>> @@ -29,7 +29,7 @@ >>> ; UINT64 >>> ; EFIAPI >>> ; InternalSyncCompareExchange64 ( >>> -; IN UINT64 *Value, >>> +; IN volatile UINT64 *Value, >>> ; IN UINT64 CompareValue, >>> ; IN UINT64 ExchangeValue >>> ; ); >>> diff --git >> a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.c >> b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.c >>> index 73af6ef..0bdbd79 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.c >>> +++ b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.c >>> @@ -1,7 +1,7 @@ >>> /** @file >>> InterlockedCompareExchange64 function >>> >>> - Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
>>> + Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> This program and the accompanying materials >>> are licensed and made available under the terms and conditions of the BSD >> License >>> which accompanies this distribution. The full text of the license may be found >> at >>> @@ -34,7 +34,7 @@ >>> UINT64 >>> EFIAPI >>> InternalSyncCompareExchange64 ( >>> - IN UINT64 *Value, >>> + IN volatile UINT64 *Value, >>> IN UINT64 CompareValue, >>> IN UINT64 ExchangeValue >>> ) >>> diff --git >> a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.nasm >> b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.nasm >>> index 206de40..c5c3e12 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.nasm >>> +++ b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.nasm >>> @@ -1,6 +1,6 @@ >>> ;------------------------------------------------------------------------------ >>> ; >>> -; Copyright (c) 2006, Intel Corporation. All rights reserved.
>>> +; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> ; This program and the accompanying materials >>> ; are licensed and made available under the terms and conditions of the BSD >> License >>> ; which accompanies this distribution. The full text of the license may be found >> at >>> @@ -27,7 +27,7 @@ >>> ; UINT64 >>> ; EFIAPI >>> ; InternalSyncCompareExchange64 ( >>> -; IN UINT64 *Value, >>> +; IN volatile UINT64 *Value, >>> ; IN UINT64 CompareValue, >>> ; IN UINT64 ExchangeValue >>> ; ); >>> diff --git a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.asm >> b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.asm >>> index 22cb0b2..8dbf1a9 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.asm >>> +++ b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.asm >>> @@ -29,7 +29,7 @@ >>> ; UINT32 >>> ; EFIAPI >>> ; InternalSyncDecrement ( >>> -; IN UINT32 *Value >>> +; IN volatile UINT32 *Value >>> ; ); >>> ;------------------------------------------------------------------------------ >>> InternalSyncDecrement PROC >>> diff --git a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.c >> b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.c >>> index 7f18e0b..b6647c7 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.c >>> +++ b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.c >>> @@ -1,7 +1,7 @@ >>> /** @file >>> InterlockedDecrement function >>> >>> - Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
>>> + Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> This program and the accompanying materials >>> are licensed and made available under the terms and conditions of the BSD >> License >>> which accompanies this distribution. The full text of the license may be found >> at >>> @@ -31,7 +31,7 @@ >>> UINT32 >>> EFIAPI >>> InternalSyncDecrement ( >>> - IN UINT32 *Value >>> + IN volatile UINT32 *Value >>> ) >>> { >>> _asm { >>> diff --git a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.nasm >> b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.nasm >>> index a7414be..1f32866 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.nasm >>> +++ b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.nasm >>> @@ -1,6 +1,6 @@ >>> ;------------------------------------------------------------------------------ >>> ; >>> -; Copyright (c) 2006, Intel Corporation. All rights reserved.
>>> +; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> ; This program and the accompanying materials >>> ; are licensed and made available under the terms and conditions of the BSD >> License >>> ; which accompanies this distribution. The full text of the license may be found >> at >>> @@ -27,7 +27,7 @@ >>> ; UINT32 >>> ; EFIAPI >>> ; InternalSyncDecrement ( >>> -; IN UINT32 *Value >>> +; IN volatile UINT32 *Value >>> ; ); >>> ;------------------------------------------------------------------------------ >>> global ASM_PFX(InternalSyncDecrement) >>> diff --git a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.asm >> b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.asm >>> index 51675f6..661ffd2 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.asm >>> +++ b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.asm >>> @@ -1,6 +1,6 @@ >>> ;------------------------------------------------------------------------------ >>> ; >>> -; Copyright (c) 2006, Intel Corporation. All rights reserved.
>>> +; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> ; This program and the accompanying materials >>> ; are licensed and made available under the terms and conditions of the BSD >> License >>> ; which accompanies this distribution. The full text of the license may be found >> at >>> @@ -29,7 +29,7 @@ >>> ; UINT32 >>> ; EFIAPI >>> ; InternalSyncIncrement ( >>> -; IN UINT32 *Value >>> +; IN volatile UINT32 *Value >>> ; ); >>> ;------------------------------------------------------------------------------ >>> InternalSyncIncrement PROC >>> diff --git a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.c >> b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.c >>> index cf9f92a..d6200ee 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.c >>> +++ b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.c >>> @@ -1,7 +1,7 @@ >>> /** @file >>> InterLockedIncrement function >>> >>> - Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
>>> + Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> This program and the accompanying materials >>> are licensed and made available under the terms and conditions of the BSD >> License >>> which accompanies this distribution. The full text of the license may be found >> at >>> @@ -31,7 +31,7 @@ >>> UINT32 >>> EFIAPI >>> InternalSyncIncrement ( >>> - IN UINT32 *Value >>> + IN volatile UINT32 *Value >>> ) >>> { >>> _asm { >>> diff --git a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.nasm >> b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.nasm >>> index 24f24f5..d903dda 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.nasm >>> +++ b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.nasm >>> @@ -1,6 +1,6 @@ >>> ;------------------------------------------------------------------------------ >>> ; >>> -; Copyright (c) 2006, Intel Corporation. All rights reserved.
>>> +; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> ; This program and the accompanying materials >>> ; are licensed and made available under the terms and conditions of the BSD >> License >>> ; which accompanies this distribution. The full text of the license may be found >> at >>> @@ -27,7 +27,7 @@ >>> ; UINT32 >>> ; EFIAPI >>> ; InternalSyncIncrement ( >>> -; IN UINT32 *Value >>> +; IN volatile UINT32 *Value >>> ; ); >>> ;------------------------------------------------------------------------------ >>> global ASM_PFX(InternalSyncIncrement) >>> diff --git a/MdePkg/Library/BaseSynchronizationLib/Synchronization.c >> b/MdePkg/Library/BaseSynchronizationLib/Synchronization.c >>> index bb0c8e9..862a70b 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/Synchronization.c >>> +++ b/MdePkg/Library/BaseSynchronizationLib/Synchronization.c >>> @@ -188,7 +188,7 @@ AcquireSpinLockOrFail ( >>> >>> return (BOOLEAN)( >>> InterlockedCompareExchangePointer ( >>> - (VOID**)SpinLock, >>> + (volatile VOID**)SpinLock, >>> (VOID*)SPIN_LOCK_RELEASED, >>> (VOID*)SPIN_LOCK_ACQUIRED >>> ) == (VOID*)SPIN_LOCK_RELEASED >> >> (1) With the change that I've proposed for patch #1, this hunk should >> become unnecessary. A (TYPE *) argument can be transparently taken by a >> (TYPE volatile *) parameter (for which an alternative mode of writing is >> (volatile TYPE *)). >> >> For TYPE===(VOID *), the above translates to: a (VOID **) arg can be >> taken transparently by a (VOID * volatile *) param. >> >>> @@ -244,7 +244,7 @@ ReleaseSpinLock ( >>> UINT32 >>> EFIAPI >>> InterlockedIncrement ( >>> - IN UINT32 *Value >>> + IN volatile UINT32 *Value >>> ) >>> { >>> ASSERT (Value != NULL); >>> @@ -269,7 +269,7 @@ InterlockedIncrement ( >>> UINT32 >>> EFIAPI >>> InterlockedDecrement ( >>> - IN UINT32 *Value >>> + IN volatile UINT32 *Value >>> ) >>> { >>> ASSERT (Value != NULL); >>> @@ -298,7 +298,7 @@ InterlockedDecrement ( >>> UINT16 >>> EFIAPI >>> InterlockedCompareExchange16 ( >>> - IN OUT UINT16 *Value, >>> + IN OUT volatile UINT16 *Value, >>> IN UINT16 CompareValue, >>> IN UINT16 ExchangeValue >>> ) >>> @@ -329,7 +329,7 @@ InterlockedCompareExchange16 ( >>> UINT32 >>> EFIAPI >>> InterlockedCompareExchange32 ( >>> - IN OUT UINT32 *Value, >>> + IN OUT volatile UINT32 *Value, >>> IN UINT32 CompareValue, >>> IN UINT32 ExchangeValue >>> ) >>> @@ -359,7 +359,7 @@ InterlockedCompareExchange32 ( >>> UINT64 >>> EFIAPI >>> InterlockedCompareExchange64 ( >>> - IN OUT UINT64 *Value, >>> + IN OUT volatile UINT64 *Value, >>> IN UINT64 CompareValue, >>> IN UINT64 ExchangeValue >>> ) >>> @@ -389,7 +389,7 @@ InterlockedCompareExchange64 ( >>> VOID * >>> EFIAPI >>> InterlockedCompareExchangePointer ( >>> - IN OUT VOID **Value, >>> + IN OUT volatile VOID **Value, >>> IN VOID *CompareValue, >>> IN VOID *ExchangeValue >>> ) >> >> (2) Same comment as for patch #1. >> >>> @@ -401,13 +401,13 @@ InterlockedCompareExchangePointer ( >>> switch (SizeOfValue) { >>> case sizeof (UINT32): >>> return (VOID*)(UINTN)InterlockedCompareExchange32 ( >>> - (UINT32*)Value, >>> + (volatile UINT32 *)Value, >>> (UINT32)(UINTN)CompareValue, >>> (UINT32)(UINTN)ExchangeValue >>> ); >> >> Yes, this looks good for preserving volatility; we're casting the type >> from (pointer-to-volatile-pointer) to (pointer-to-volatile-UINT32). >> >>> case sizeof (UINT64): >>> return (VOID*)(UINTN)InterlockedCompareExchange64 ( >>> - (UINT64*)Value, >>> + (volatile UINT64 *)Value, >>> (UINT64)(UINTN)CompareValue, >>> (UINT64)(UINTN)ExchangeValue >>> ); >>> diff --git a/MdePkg/Library/BaseSynchronizationLib/SynchronizationGcc.c >> b/MdePkg/Library/BaseSynchronizationLib/SynchronizationGcc.c >>> index 4b8c8e5..b7538cc 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/SynchronizationGcc.c >>> +++ b/MdePkg/Library/BaseSynchronizationLib/SynchronizationGcc.c >>> @@ -199,7 +199,7 @@ AcquireSpinLockOrFail ( >>> >>> _ReadWriteBarrier (); >>> Result = InterlockedCompareExchangePointer ( >>> - (VOID**)SpinLock, >>> + (volatile VOID**)SpinLock, >>> (VOID*)SPIN_LOCK_RELEASED, >>> (VOID*)SPIN_LOCK_ACQUIRED >>> ); >> >> (3) This hunk should be unnecessary. >> >>> @@ -260,7 +260,7 @@ ReleaseSpinLock ( >>> UINT32 >>> EFIAPI >>> InterlockedIncrement ( >>> - IN UINT32 *Value >>> + IN volatile UINT32 *Value >>> ) >>> { >>> ASSERT (Value != NULL); >>> @@ -285,7 +285,7 @@ InterlockedIncrement ( >>> UINT32 >>> EFIAPI >>> InterlockedDecrement ( >>> - IN UINT32 *Value >>> + IN volatile UINT32 *Value >>> ) >>> { >>> ASSERT (Value != NULL); >>> @@ -314,7 +314,7 @@ InterlockedDecrement ( >>> UINT16 >>> EFIAPI >>> InterlockedCompareExchange16 ( >>> - IN OUT UINT16 *Value, >>> + IN OUT volatile UINT16 *Value, >>> IN UINT16 CompareValue, >>> IN UINT16 ExchangeValue >>> ) >>> @@ -345,7 +345,7 @@ InterlockedCompareExchange16 ( >>> UINT32 >>> EFIAPI >>> InterlockedCompareExchange32 ( >>> - IN OUT UINT32 *Value, >>> + IN OUT volatile UINT32 *Value, >>> IN UINT32 CompareValue, >>> IN UINT32 ExchangeValue >>> ) >>> @@ -375,7 +375,7 @@ InterlockedCompareExchange32 ( >>> UINT64 >>> EFIAPI >>> InterlockedCompareExchange64 ( >>> - IN OUT UINT64 *Value, >>> + IN OUT volatile UINT64 *Value, >>> IN UINT64 CompareValue, >>> IN UINT64 ExchangeValue >>> ) >>> @@ -405,7 +405,7 @@ InterlockedCompareExchange64 ( >>> VOID * >>> EFIAPI >>> InterlockedCompareExchangePointer ( >>> - IN OUT VOID **Value, >>> + IN OUT volatile VOID **Value, >>> IN VOID *CompareValue, >>> IN VOID *ExchangeValue >>> ) >> >> (4) The usual remark. >> >>> @@ -417,13 +417,13 @@ InterlockedCompareExchangePointer ( >>> switch (SizeOfValue) { >>> case sizeof (UINT32): >>> return (VOID*)(UINTN)InterlockedCompareExchange32 ( >>> - (UINT32*)Value, >>> + (volatile UINT32 *)Value, >>> (UINT32)(UINTN)CompareValue, >>> (UINT32)(UINTN)ExchangeValue >>> ); >>> case sizeof (UINT64): >>> return (VOID*)(UINTN)InterlockedCompareExchange64 ( >>> - (UINT64*)Value, >>> + (volatile UINT64 *)Value, >>> (UINT64)(UINTN)CompareValue, >>> (UINT64)(UINTN)ExchangeValue >>> ); >>> diff --git a/MdePkg/Library/BaseSynchronizationLib/SynchronizationMsc.c >> b/MdePkg/Library/BaseSynchronizationLib/SynchronizationMsc.c >>> index db344b7..2107935 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/SynchronizationMsc.c >>> +++ b/MdePkg/Library/BaseSynchronizationLib/SynchronizationMsc.c >>> @@ -201,7 +201,7 @@ AcquireSpinLockOrFail ( >>> >>> _ReadWriteBarrier (); >>> Result = InterlockedCompareExchangePointer ( >>> - (VOID**)SpinLock, >>> + (volatile VOID**)SpinLock, >>> (VOID*)SPIN_LOCK_RELEASED, >>> (VOID*)SPIN_LOCK_ACQUIRED >>> ); >> >> (5) This hunk shouldn't be necessary. >> >>> @@ -262,7 +262,7 @@ ReleaseSpinLock ( >>> UINT32 >>> EFIAPI >>> InterlockedIncrement ( >>> - IN UINT32 *Value >>> + IN volatile UINT32 *Value >>> ) >>> { >>> ASSERT (Value != NULL); >>> @@ -287,7 +287,7 @@ InterlockedIncrement ( >>> UINT32 >>> EFIAPI >>> InterlockedDecrement ( >>> - IN UINT32 *Value >>> + IN volatile UINT32 *Value >>> ) >>> { >>> ASSERT (Value != NULL); >>> @@ -316,7 +316,7 @@ InterlockedDecrement ( >>> UINT16 >>> EFIAPI >>> InterlockedCompareExchange16 ( >>> - IN OUT UINT16 *Value, >>> + IN OUT volatile UINT16 *Value, >>> IN UINT16 CompareValue, >>> IN UINT16 ExchangeValue >>> ) >>> @@ -347,7 +347,7 @@ InterlockedCompareExchange16 ( >>> UINT32 >>> EFIAPI >>> InterlockedCompareExchange32 ( >>> - IN OUT UINT32 *Value, >>> + IN OUT volatile UINT32 *Value, >>> IN UINT32 CompareValue, >>> IN UINT32 ExchangeValue >>> ) >>> @@ -377,7 +377,7 @@ InterlockedCompareExchange32 ( >>> UINT64 >>> EFIAPI >>> InterlockedCompareExchange64 ( >>> - IN OUT UINT64 *Value, >>> + IN OUT volatile UINT64 *Value, >>> IN UINT64 CompareValue, >>> IN UINT64 ExchangeValue >>> ) >>> @@ -407,7 +407,7 @@ InterlockedCompareExchange64 ( >>> VOID * >>> EFIAPI >>> InterlockedCompareExchangePointer ( >>> - IN OUT VOID **Value, >>> + IN OUT volatile VOID **Value, >>> IN VOID *CompareValue, >>> IN VOID *ExchangeValue >>> ) >> >> (6) The usual comment; volatile should come between **. >> >>> @@ -419,13 +419,13 @@ InterlockedCompareExchangePointer ( >>> switch (SizeOfValue) { >>> case sizeof (UINT32): >>> return (VOID*)(UINTN)InterlockedCompareExchange32 ( >>> - (UINT32*)Value, >>> + (volatile UINT32*)Value, >>> (UINT32)(UINTN)CompareValue, >>> (UINT32)(UINTN)ExchangeValue >>> ); >>> case sizeof (UINT64): >>> return (VOID*)(UINTN)InterlockedCompareExchange64 ( >>> - (UINT64*)Value, >>> + (volatile UINT64*)Value, >>> (UINT64)(UINTN)CompareValue, >>> (UINT64)(UINTN)ExchangeValue >>> ); >>> diff --git >> a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.asm >> b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.asm >>> index 7926662..262adeb 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.asm >>> +++ b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.asm >>> @@ -1,6 +1,6 @@ >>> ;------------------------------------------------------------------------------ >>> ; >>> -; Copyright (c) 2006, Intel Corporation. All rights reserved.
>>> +; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> ; Copyright (c) 2015, Linaro Ltd. All rights reserved.
>>> ; This program and the accompanying materials >>> ; are licensed and made available under the terms and conditions of the BSD >> License >>> @@ -27,8 +27,8 @@ >>> ;------------------------------------------------------------------------------ >>> ; UINT16 >>> ; EFIAPI >>> -; InterlockedCompareExchange16 ( >>> -; IN UINT16 *Value, >>> +; InternalSyncCompareExchange16 ( >>> +; IN volatile UINT16 *Value, >>> ; IN UINT16 CompareValue, >>> ; IN UINT16 ExchangeValue >>> ; ); >> >> (7) This is just a comment block, but the function name should not be >> changed, I believe. >> >>> diff --git >> a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.c >> b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.c >>> index 76aa6fb..8b51ecb 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.c >>> +++ b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.c >>> @@ -1,7 +1,7 @@ >>> /** @file >>> InterlockedCompareExchange16 function >>> >>> - Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
>>> + Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> Copyright (c) 2015, Linaro Ltd. All rights reserved.
>>> This program and the accompanying materials >>> are licensed and made available under the terms and conditions of the BSD >> License >>> @@ -44,7 +44,7 @@ __int16 _InterlockedCompareExchange16( >>> UINT16 >>> EFIAPI >>> InternalSyncCompareExchange16 ( >>> - IN UINT16 *Value, >>> + IN volatile UINT16 *Value, >>> IN UINT16 CompareValue, >>> IN UINT16 ExchangeValue >>> ) >>> diff --git >> a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.nasm >> b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.nasm >>> index 1d72d07..eebed5a 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.nasm >>> +++ b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.nasm >>> @@ -1,6 +1,6 @@ >>> ;------------------------------------------------------------------------------ >>> ; >>> -; Copyright (c) 2006, Intel Corporation. All rights reserved.
>>> +; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> ; Copyright (c) 2015, Linaro Ltd. All rights reserved.
>>> ; This program and the accompanying materials >>> ; are licensed and made available under the terms and conditions of the BSD >> License >>> @@ -28,8 +28,8 @@ >>> ;------------------------------------------------------------------------------ >>> ; UINT16 >>> ; EFIAPI >>> -; InterlockedCompareExchange16 ( >>> -; IN UINT16 *Value, >>> +; InternalSyncCompareExchange16 ( >>> +; IN volatile UINT16 *Value, >>> ; IN UINT16 CompareValue, >>> ; IN UINT16 ExchangeValue >>> ; ); >> >> (8) Unwarranted function rename. >> >>> diff --git >> a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.asm >> b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.asm >>> index ee94ff7..711b399 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.asm >>> +++ b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.asm >>> @@ -1,6 +1,6 @@ >>> ;------------------------------------------------------------------------------ >>> ; >>> -; Copyright (c) 2006, Intel Corporation. All rights reserved.
>>> +; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> ; This program and the accompanying materials >>> ; are licensed and made available under the terms and conditions of the BSD >> License >>> ; which accompanies this distribution. The full text of the license may be found >> at >>> @@ -26,8 +26,8 @@ >>> ;------------------------------------------------------------------------------ >>> ; UINT32 >>> ; EFIAPI >>> -; InterlockedCompareExchange32 ( >>> -; IN UINT32 *Value, >>> +; InternalSyncCompareExchange32 ( >>> +; IN volatile UINT32 *Value, >>> ; IN UINT32 CompareValue, >>> ; IN UINT32 ExchangeValue >>> ; ); >> >> (9) Ditto. >> >>> diff --git >> a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.c >> b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.c >>> index 9f8f3d3..ef407af 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.c >>> +++ b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.c >>> @@ -1,7 +1,7 @@ >>> /** @file >>> InterlockedCompareExchange32 function >>> >>> - Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
>>> + Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> This program and the accompanying materials >>> are licensed and made available under the terms and conditions of the BSD >> License >>> which accompanies this distribution. The full text of the license may be found >> at >>> @@ -44,7 +44,7 @@ long _InterlockedCompareExchange( >>> UINT32 >>> EFIAPI >>> InternalSyncCompareExchange32 ( >>> - IN UINT32 *Value, >>> + IN volatile UINT32 *Value, >>> IN UINT32 CompareValue, >>> IN UINT32 ExchangeValue >>> ) >>> diff --git >> a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.nasm >> b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.nasm >>> index 4c8c810..5ed4ba5 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.nasm >>> +++ b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.nasm >>> @@ -1,6 +1,6 @@ >>> ;------------------------------------------------------------------------------ >>> ; >>> -; Copyright (c) 2006, Intel Corporation. All rights reserved.
>>> +; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> ; This program and the accompanying materials >>> ; are licensed and made available under the terms and conditions of the BSD >> License >>> ; which accompanies this distribution. The full text of the license may be found >> at >>> @@ -27,8 +27,8 @@ >>> ;------------------------------------------------------------------------------ >>> ; UINT32 >>> ; EFIAPI >>> -; InterlockedCompareExchange32 ( >>> -; IN UINT32 *Value, >>> +; InternalSyncCompareExchange32 ( >>> +; IN volatile UINT32 *Value, >>> ; IN UINT32 CompareValue, >>> ; IN UINT32 ExchangeValue >>> ; ); >> >> (10) Ditto. >> >>> diff --git >> a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.asm >> b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.asm >>> index b5bcd25..be429d8 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.asm >>> +++ b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.asm >>> @@ -1,6 +1,6 @@ >>> ;------------------------------------------------------------------------------ >>> ; >>> -; Copyright (c) 2006, Intel Corporation. All rights reserved.
>>> +; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> ; This program and the accompanying materials >>> ; are licensed and made available under the terms and conditions of the BSD >> License >>> ; which accompanies this distribution. The full text of the license may be found >> at >>> @@ -26,8 +26,8 @@ >>> ;------------------------------------------------------------------------------ >>> ; UINT64 >>> ; EFIAPI >>> -; InterlockedCompareExchange64 ( >>> -; IN UINT64 *Value, >>> +; InternalSyncCompareExchange64 ( >>> +; IN volatile UINT64 *Value, >>> ; IN UINT64 CompareValue, >>> ; IN UINT64 ExchangeValue >>> ; ); >> >> (11) Ditto. >> >>> diff --git >> a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.c >> b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.c >>> index 56805b3..a8f9fbb 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.c >>> +++ b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.c >>> @@ -1,7 +1,7 @@ >>> /** @file >>> InterlockedCompareExchange64 function >>> >>> - Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
>>> + Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> This program and the accompanying materials >>> are licensed and made available under the terms and conditions of the BSD >> License >>> which accompanies this distribution. The full text of the license may be found >> at >>> @@ -43,7 +43,7 @@ __int64 _InterlockedCompareExchange64( >>> UINT64 >>> EFIAPI >>> InternalSyncCompareExchange64 ( >>> - IN UINT64 *Value, >>> + IN volatile UINT64 *Value, >>> IN UINT64 CompareValue, >>> IN UINT64 ExchangeValue >>> ) >>> diff --git >> a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.nasm >> b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.nasm >>> index 72c350a..bc97f31 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.nasm >>> +++ b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.nasm >>> @@ -1,6 +1,6 @@ >>> ;------------------------------------------------------------------------------ >>> ; >>> -; Copyright (c) 2006, Intel Corporation. All rights reserved.
>>> +; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> ; This program and the accompanying materials >>> ; are licensed and made available under the terms and conditions of the BSD >> License >>> ; which accompanies this distribution. The full text of the license may be found >> at >>> @@ -27,7 +27,7 @@ >>> ;------------------------------------------------------------------------------ >>> ; UINT64 >>> ; EFIAPI >>> -; InterlockedCompareExchange64 ( >>> +; InternalSyncCompareExchange64 ( >>> ; IN UINT64 *Value, >>> ; IN UINT64 CompareValue, >>> ; IN UINT64 ExchangeValue >> >> (12) This renames the function, but doesn't change the definition of the >> Value parameter :) >> >>> diff --git a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.asm >> b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.asm >>> index fdea0d4..2bff4f8 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.asm >>> +++ b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.asm >>> @@ -1,6 +1,6 @@ >>> ;------------------------------------------------------------------------------ >>> ; >>> -; Copyright (c) 2006, Intel Corporation. All rights reserved.
>>> +; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> ; This program and the accompanying materials >>> ; are licensed and made available under the terms and conditions of the BSD >> License >>> ; which accompanies this distribution. The full text of the license may be found >> at >>> @@ -26,8 +26,8 @@ >>> ;------------------------------------------------------------------------------ >>> ; UINT32 >>> ; EFIAPI >>> -; InterlockedDecrement ( >>> -; IN UINT32 *Value >>> +; InternalSyncDecrement ( >>> +; IN volatile UINT32 *Value >>> ; ); >> >> (13) Function rename shouldn't be necessary. >> >>> ;------------------------------------------------------------------------------ >>> InternalSyncDecrement PROC >>> diff --git a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.c >> b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.c >>> index 65faf01..c2299af 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.c >>> +++ b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.c >>> @@ -1,7 +1,7 @@ >>> /** @file >>> InterlockedDecrement function >>> >>> - Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
>>> + Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> This program and the accompanying materials >>> are licensed and made available under the terms and conditions of the BSD >> License >>> which accompanies this distribution. The full text of the license may be found >> at >>> @@ -38,9 +38,9 @@ long _InterlockedDecrement( >>> UINT32 >>> EFIAPI >>> InternalSyncDecrement ( >>> - IN UINT32 *Value >>> + IN volatile UINT32 *Value >>> ) >>> { >>> - return _InterlockedDecrement (Value); >>> + return _InterlockedDecrement ((long *)(UINTN)(Value)); >>> } >>> >> >> This is very confusing, but ultimately it appears correct. Looking at >> this file, it seems that _InterlockedDecrement is a Visual Studio >> intrinsic. That also explains why UINT32 is compatible with "long", even >> on X64. >> >>> diff --git a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.nasm >> b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.nasm >>> index e140e44..91c0f8e 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.nasm >>> +++ b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.nasm >>> @@ -1,6 +1,6 @@ >>> ;------------------------------------------------------------------------------ >>> ; >>> -; Copyright (c) 2006, Intel Corporation. All rights reserved.
>>> +; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> ; This program and the accompanying materials >>> ; are licensed and made available under the terms and conditions of the BSD >> License >>> ; which accompanies this distribution. The full text of the license may be found >> at >>> @@ -27,8 +27,8 @@ >>> ;------------------------------------------------------------------------------ >>> ; UINT32 >>> ; EFIAPI >>> -; InterlockedDecrement ( >>> -; IN UINT32 *Value >>> +; InternalSyncDecrement ( >>> +; IN volatile UINT32 *Value >>> ; ); >> >> (14) Function rename unjustified I think. >> >>> ;------------------------------------------------------------------------------ >>> global ASM_PFX(InternalSyncDecrement) >>> diff --git a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.asm >> b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.asm >>> index 65abcf7..7788557 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.asm >>> +++ b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.asm >>> @@ -1,6 +1,6 @@ >>> ;------------------------------------------------------------------------------ >>> ; >>> -; Copyright (c) 2006, Intel Corporation. All rights reserved.
>>> +; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> ; This program and the accompanying materials >>> ; are licensed and made available under the terms and conditions of the BSD >> License >>> ; which accompanies this distribution. The full text of the license may be found >> at >>> @@ -26,8 +26,8 @@ >>> ;------------------------------------------------------------------------------ >>> ; UINT32 >>> ; EFIAPI >>> -; InterlockedIncrement ( >>> -; IN UINT32 *Value >>> +; InternalSyncIncrement ( >>> +; IN volatile UINT32 *Value >>> ; ); >> >> (15) Ditto. >> >>> ;------------------------------------------------------------------------------ >>> InternalSyncIncrement PROC >>> diff --git a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.c >> b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.c >>> index c0deb60..2b60c2d 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.c >>> +++ b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.c >>> @@ -1,7 +1,7 @@ >>> /** @file >>> InterLockedIncrement function >>> >>> - Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
>>> + Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> This program and the accompanying materials >>> are licensed and made available under the terms and conditions of the BSD >> License >>> which accompanies this distribution. The full text of the license may be found >> at >>> @@ -38,9 +38,9 @@ long _InterlockedIncrement( >>> UINT32 >>> EFIAPI >>> InternalSyncIncrement ( >>> - IN UINT32 *Value >>> + IN volatile UINT32 *Value >>> ) >>> { >>> - return _InterlockedIncrement (Value); >>> + return _InterlockedIncrement ((long *)(UINTN)(Value)); >>> } >>> >> >> Looks okay, based on InternalSyncDecrement() above. >> >>> diff --git a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.nasm >> b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.nasm >>> index 59d90be..53f2fb5 100644 >>> --- a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.nasm >>> +++ b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.nasm >>> @@ -1,6 +1,6 @@ >>> ;------------------------------------------------------------------------------ >>> ; >>> -; Copyright (c) 2006, Intel Corporation. All rights reserved.
>>> +; Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
>>> ; This program and the accompanying materials >>> ; are licensed and made available under the terms and conditions of the BSD >> License >>> ; which accompanies this distribution. The full text of the license may be found >> at >>> @@ -27,8 +27,8 @@ >>> ;------------------------------------------------------------------------------ >>> ; UINT32 >>> ; EFIAPI >>> -; InterlockedIncrement ( >>> -; IN UINT32 *Value >>> +; InternalSyncIncrement ( >>> +; IN volatile UINT32 *Value >>> ; ); >>> ;------------------------------------------------------------------------------ >> >> (16) Function renaming shouldn't be needed. >> >>> global ASM_PFX(InternalSyncIncrement) >>> >> >> Thanks >> Laszlo