Revision: 14517
          http://sourceforge.net/p/edk2/code/14517
Author:   oliviermartin
Date:     2013-07-29 09:57:43 +0000 (Mon, 29 Jul 2013)
Log Message:
-----------
MdePkg/BaseSynchronizationLib: Added ARM Aarch64 architecture support

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Harry Liebel <[email protected]>
Signed-off-by: Olivier Martin <[email protected]>
Reviewed-by: Liming Gao <[email protected]>

Modified Paths:
--------------
    trunk/edk2/MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf

Added Paths:
-----------
    trunk/edk2/MdePkg/Library/BaseSynchronizationLib/AArch64/
    trunk/edk2/MdePkg/Library/BaseSynchronizationLib/AArch64/Synchronization.c

Added: 
trunk/edk2/MdePkg/Library/BaseSynchronizationLib/AArch64/Synchronization.c
===================================================================
--- trunk/edk2/MdePkg/Library/BaseSynchronizationLib/AArch64/Synchronization.c  
                        (rev 0)
+++ trunk/edk2/MdePkg/Library/BaseSynchronizationLib/AArch64/Synchronization.c  
2013-07-29 09:57:43 UTC (rev 14517)
@@ -0,0 +1,115 @@
+/** @file
+  Implementation of synchronization functions. Still needs to be ported
+
+  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
+  Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
+  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
+  http://opensource.org/licenses/bsd-license.php.
+
+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+/**
+  Performs an atomic compare exchange operation on a 32-bit unsigned integer.
+
+  Performs an atomic compare exchange operation on the 32-bit unsigned integer
+  specified by Value.  If Value is equal to CompareValue, then Value is set to
+  ExchangeValue and CompareValue is returned.  If Value is not equal to 
CompareValue,
+  then Value is returned.  The compare exchange operation must be performed 
using
+  MP safe mechanisms.
+
+  @param  Value         A pointer to the 32-bit value for the compare exchange
+                        operation.
+  @param  CompareValue  32-bit value used in compare operation.
+  @param  ExchangeValue 32-bit value used in exchange operation.
+
+  @return The original *Value before exchange.
+
+**/
+UINT32
+EFIAPI
+InternalSyncCompareExchange32 (
+  IN      volatile UINT32           *Value,
+  IN      UINT32                    CompareValue,
+  IN      UINT32                    ExchangeValue
+  )
+{
+  return *Value != CompareValue ? *Value :
+           ((*Value = ExchangeValue), CompareValue);
+}
+
+/**
+  Performs an atomic compare exchange operation on a 64-bit unsigned integer.
+
+  Performs an atomic compare exchange operation on the 64-bit unsigned integer 
specified
+  by Value.  If Value is equal to CompareValue, then Value is set to 
ExchangeValue and
+  CompareValue is returned.  If Value is not equal to CompareValue, then Value 
is returned.
+  The compare exchange operation must be performed using MP safe mechanisms.
+
+  @param  Value         A pointer to the 64-bit value for the compare exchange
+                        operation.
+  @param  CompareValue  64-bit value used in compare operation.
+  @param  ExchangeValue 64-bit value used in exchange operation.
+
+  @return The original *Value before exchange.
+
+**/
+UINT64
+EFIAPI
+InternalSyncCompareExchange64 (
+  IN      volatile UINT64           *Value,
+  IN      UINT64                    CompareValue,
+  IN      UINT64                    ExchangeValue
+  )
+{
+  return *Value != CompareValue ? *Value :
+           ((*Value = ExchangeValue), CompareValue);
+}
+
+/**
+  Performs an atomic increment of an 32-bit unsigned integer.
+
+  Performs an atomic increment of the 32-bit unsigned integer specified by
+  Value and returns the incremented value. The increment operation must be
+  performed using MP safe mechanisms. The state of the return value is not
+  guaranteed to be MP safe.
+
+  @param  Value A pointer to the 32-bit value to increment.
+
+  @return The incremented value.
+
+**/
+UINT32
+EFIAPI
+InternalSyncIncrement (
+  IN      volatile UINT32           *Value
+  )
+{
+  return ++*Value;
+}
+
+/**
+  Performs an atomic decrement of an 32-bit unsigned integer.
+
+  Performs an atomic decrement of the 32-bit unsigned integer specified by
+  Value and returns the decrement value. The decrement operation must be
+  performed using MP safe mechanisms. The state of the return value is not
+  guaranteed to be MP safe.
+
+  @param  Value A pointer to the 32-bit value to decrement.
+
+  @return The decrement value.
+
+**/
+UINT32
+EFIAPI
+InternalSyncDecrement (
+  IN      volatile UINT32           *Value
+  )
+{
+  return --*Value;
+}

Modified: 
trunk/edk2/MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf
===================================================================
--- trunk/edk2/MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf 
2013-07-29 09:56:36 UTC (rev 14516)
+++ trunk/edk2/MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf 
2013-07-29 09:57:43 UTC (rev 14517)
@@ -23,7 +23,7 @@
   LIBRARY_CLASS                  = SynchronizationLib
 
 #
-#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC ARM
+#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC ARM AARCH64
 #
 [Sources]
   BaseSynchronizationLibInternals.h
@@ -79,6 +79,10 @@
   Synchronization.c
   Arm/Synchronization.c
 
+[Sources.AARCH64]
+  Synchronization.c
+  AArch64/Synchronization.c
+
 [Packages]
   MdePkg/MdePkg.dec
 

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to