Home | History | Annotate | Download | only in Ia32
      1 /**
      2   InterlockedCompareExchange32 function
      3 
      4   Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.<BR>
      5   This program and the accompanying materials
      6   are licensed and made available under the terms and conditions of the BSD License
      7   which accompanies this distribution.  The full text of the license may be found at
      8   http://opensource.org/licenses/bsd-license.php
      9 
     10   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     11   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     12 
     13 **/
     14 
     15 #include "BaseLibInternals.h"
     16 
     17 UINT32
     18 EFIAPI
     19 InternalSyncCompareExchange32 (
     20   IN      volatile UINT32           *Value,
     21   IN      UINT32                    CompareValue,
     22   IN      UINT32                    ExchangeValue
     23   )
     24 {
     25   _asm {
     26     mov     ecx, Value
     27     mov     eax, CompareValue
     28     mov     edx, ExchangeValue
     29     lock    cmpxchg [ecx], edx
     30   }
     31 }
     32 
     33