From 6c128c65b5ec0e5b8b5a0ccb165f3afd29e485f8 Mon Sep 17 00:00:00 2001 From: Guo Mang Date: Wed, 2 Aug 2017 09:54:47 +0800 Subject: Remove core packages since we can get them from edk2 repository Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Guo Mang --- .../AArch64/Synchronization.S | 203 ---------- .../BaseSynchronizationLib/Arm/Synchronization.S | 213 ---------- .../BaseSynchronizationLib/Arm/Synchronization.asm | 214 ---------- .../BaseSynchronizationLib.inf | 104 ----- .../BaseSynchronizationLib.uni | Bin 1862 -> 0 bytes .../BaseSynchronizationLibInternals.h | 141 ------- .../BaseSynchronizationLib/Ebc/Synchronization.c | 147 ------- .../BaseSynchronizationLib/Ia32/GccInline.c | 215 ---------- .../Ia32/InterlockedCompareExchange16.asm | 46 --- .../Ia32/InterlockedCompareExchange16.c | 51 --- .../Ia32/InterlockedCompareExchange32.asm | 45 --- .../Ia32/InterlockedCompareExchange32.c | 50 --- .../Ia32/InterlockedCompareExchange64.asm | 47 --- .../Ia32/InterlockedCompareExchange64.c | 50 --- .../Ia32/InterlockedDecrement.asm | 42 -- .../Ia32/InterlockedDecrement.c | 42 -- .../Ia32/InterlockedIncrement.asm | 42 -- .../Ia32/InterlockedIncrement.c | 43 -- .../Ipf/InterlockedCompareExchange16.s | 30 -- .../Ipf/InterlockedCompareExchange32.s | 29 -- .../Ipf/InterlockedCompareExchange64.s | 28 -- .../BaseSynchronizationLib/Ipf/Synchronization.c | 77 ---- .../BaseSynchronizationLib/Synchronization.c | 418 -------------------- .../BaseSynchronizationLib/SynchronizationGcc.c | 434 -------------------- .../BaseSynchronizationLib/SynchronizationMsc.c | 436 --------------------- .../Library/BaseSynchronizationLib/X64/GccInline.c | 220 ----------- .../X64/InterlockedCompareExchange16.asm | 42 -- .../X64/InterlockedCompareExchange16.c | 54 --- .../X64/InterlockedCompareExchange32.asm | 41 -- .../X64/InterlockedCompareExchange32.c | 54 --- .../X64/InterlockedCompareExchange64.asm | 41 -- .../X64/InterlockedCompareExchange64.c | 53 --- .../X64/InterlockedDecrement.asm | 39 -- .../X64/InterlockedDecrement.c | 46 --- .../X64/InterlockedIncrement.asm | 39 -- .../X64/InterlockedIncrement.c | 46 --- 36 files changed, 3822 deletions(-) delete mode 100644 MdePkg/Library/BaseSynchronizationLib/AArch64/Synchronization.S delete mode 100644 MdePkg/Library/BaseSynchronizationLib/Arm/Synchronization.S delete mode 100644 MdePkg/Library/BaseSynchronizationLib/Arm/Synchronization.asm delete mode 100755 MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf delete mode 100644 MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.uni delete mode 100644 MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLibInternals.h delete mode 100644 MdePkg/Library/BaseSynchronizationLib/Ebc/Synchronization.c delete mode 100644 MdePkg/Library/BaseSynchronizationLib/Ia32/GccInline.c delete mode 100644 MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.asm delete mode 100644 MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.c delete mode 100644 MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.asm delete mode 100644 MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.c delete mode 100644 MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.asm delete mode 100644 MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.c delete mode 100644 MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.asm delete mode 100644 MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.c delete mode 100644 MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.asm delete mode 100644 MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.c delete mode 100644 MdePkg/Library/BaseSynchronizationLib/Ipf/InterlockedCompareExchange16.s delete mode 100644 MdePkg/Library/BaseSynchronizationLib/Ipf/InterlockedCompareExchange32.s delete mode 100644 MdePkg/Library/BaseSynchronizationLib/Ipf/InterlockedCompareExchange64.s delete mode 100644 MdePkg/Library/BaseSynchronizationLib/Ipf/Synchronization.c delete mode 100644 MdePkg/Library/BaseSynchronizationLib/Synchronization.c delete mode 100644 MdePkg/Library/BaseSynchronizationLib/SynchronizationGcc.c delete mode 100644 MdePkg/Library/BaseSynchronizationLib/SynchronizationMsc.c delete mode 100644 MdePkg/Library/BaseSynchronizationLib/X64/GccInline.c delete mode 100644 MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.asm delete mode 100644 MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.c delete mode 100644 MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.asm delete mode 100644 MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.c delete mode 100644 MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.asm delete mode 100644 MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.c delete mode 100644 MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.asm delete mode 100644 MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.c delete mode 100644 MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.asm delete mode 100644 MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.c (limited to 'MdePkg/Library/BaseSynchronizationLib') diff --git a/MdePkg/Library/BaseSynchronizationLib/AArch64/Synchronization.S b/MdePkg/Library/BaseSynchronizationLib/AArch64/Synchronization.S deleted file mode 100644 index ecb87fc127..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/AArch64/Synchronization.S +++ /dev/null @@ -1,203 +0,0 @@ -// Implementation of synchronization functions for ARM architecture (AArch64) -// -// Copyright (c) 2012-2015, ARM Limited. All rights reserved. -// Copyright (c) 2015, Linaro Limited. 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 -// 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. -// -// - -.text -.align 3 - -GCC_ASM_EXPORT(InternalSyncCompareExchange16) -GCC_ASM_EXPORT(InternalSyncCompareExchange32) -GCC_ASM_EXPORT(InternalSyncCompareExchange64) -GCC_ASM_EXPORT(InternalSyncIncrement) -GCC_ASM_EXPORT(InternalSyncDecrement) - -/** - Performs an atomic compare exchange operation on a 16-bit unsigned integer. - - Performs an atomic compare exchange operation on the 16-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 16-bit value for the compare exchange - operation. - @param CompareValue 16-bit value used in compare operation. - @param ExchangeValue 16-bit value used in exchange operation. - - @return The original *Value before exchange. - -**/ -//UINT16 -//EFIAPI -//InternalSyncCompareExchange16 ( -// IN volatile UINT16 *Value, -// IN UINT16 CompareValue, -// IN UINT16 ExchangeValue -// ) -ASM_PFX(InternalSyncCompareExchange16): - uxth w1, w1 - uxth w2, w2 - dmb sy - -InternalSyncCompareExchange16Again: - ldxrh w3, [x0] - cmp w3, w1 - bne InternalSyncCompareExchange16Fail - -InternalSyncCompareExchange16Exchange: - stxrh w4, w2, [x0] - cbnz w4, InternalSyncCompareExchange16Again - -InternalSyncCompareExchange16Fail: - dmb sy - mov w0, w3 - ret - -/** - 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 -// ) -ASM_PFX(InternalSyncCompareExchange32): - dmb sy - -InternalSyncCompareExchange32Again: - ldxr w3, [x0] - cmp w3, w1 - bne InternalSyncCompareExchange32Fail - -InternalSyncCompareExchange32Exchange: - stxr w4, w2, [x0] - cbnz w4, InternalSyncCompareExchange32Again - -InternalSyncCompareExchange32Fail: - dmb sy - mov w0, w3 - ret - -/** - 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 -// ) -ASM_PFX(InternalSyncCompareExchange64): - dmb sy - -InternalSyncCompareExchange64Again: - ldxr x3, [x0] - cmp x3, x1 - bne InternalSyncCompareExchange64Fail - -InternalSyncCompareExchange64Exchange: - stxr w4, x2, [x0] - cbnz w4, InternalSyncCompareExchange64Again - -InternalSyncCompareExchange64Fail: - dmb sy - mov x0, x3 - ret - -/** - 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 -// ) -ASM_PFX(InternalSyncIncrement): - dmb sy -TryInternalSyncIncrement: - ldxr w1, [x0] - add w1, w1, #1 - stxr w2, w1, [x0] - cbnz w2, TryInternalSyncIncrement - dmb sy - ret - -/** - 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 -// ) -ASM_PFX(InternalSyncDecrement): - dmb sy -TryInternalSyncDecrement: - ldxr w1, [x0] - sub w1, w1, #1 - stxr w2, w1, [x0] - cbnz w2, TryInternalSyncDecrement - dmb sy - ret diff --git a/MdePkg/Library/BaseSynchronizationLib/Arm/Synchronization.S b/MdePkg/Library/BaseSynchronizationLib/Arm/Synchronization.S deleted file mode 100644 index 53e45a0b9a..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/Arm/Synchronization.S +++ /dev/null @@ -1,213 +0,0 @@ -// Implementation of synchronization functions for ARM architecture -// -// Copyright (c) 2012-2015, ARM Limited. All rights reserved. -// Copyright (c) 2015, Linaro Limited. 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 -// 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. -// -// - -.text -.align 3 - -GCC_ASM_EXPORT(InternalSyncCompareExchange16) -GCC_ASM_EXPORT(InternalSyncCompareExchange32) -GCC_ASM_EXPORT(InternalSyncCompareExchange64) -GCC_ASM_EXPORT(InternalSyncIncrement) -GCC_ASM_EXPORT(InternalSyncDecrement) - -/** - Performs an atomic compare exchange operation on a 16-bit unsigned integer. - - Performs an atomic compare exchange operation on the 16-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 16-bit value for the compare exchange - operation. - @param CompareValue 16-bit value used in compare operation. - @param ExchangeValue 16-bit value used in exchange operation. - - @return The original *Value before exchange. - -**/ -//UINT16 -//EFIAPI -//InternalSyncCompareExchange16 ( -// IN volatile UINT16 *Value, -// IN UINT16 CompareValue, -// IN UINT16 ExchangeValue -// ) -ASM_PFX(InternalSyncCompareExchange16): - dmb - -InternalSyncCompareExchange16Again: - ldrexh r3, [r0] - cmp r3, r1 - bne InternalSyncCompareExchange16Fail - -InternalSyncCompareExchange16Exchange: - strexh ip, r2, [r0] - cmp ip, #0 - bne InternalSyncCompareExchange16Again - -InternalSyncCompareExchange16Fail: - dmb - mov r0, r3 - bx lr - -/** - 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 -// ) -ASM_PFX(InternalSyncCompareExchange32): - dmb - -InternalSyncCompareExchange32Again: - ldrex r3, [r0] - cmp r3, r1 - bne InternalSyncCompareExchange32Fail - -InternalSyncCompareExchange32Exchange: - strex ip, r2, [r0] - cmp ip, #0 - bne InternalSyncCompareExchange32Again - -InternalSyncCompareExchange32Fail: - dmb - mov r0, r3 - bx lr - -/** - 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, // r0 -// IN UINT64 CompareValue, // r2-r3 -// IN UINT64 ExchangeValue // stack -// ) -ASM_PFX(InternalSyncCompareExchange64): - push { r4-r7 } - ldrd r4, r5, [sp, #16] - dmb - -InternalSyncCompareExchange64Again: - ldrexd r6, r7, [r0] - cmp r6, r2 - cmpeq r7, r3 - bne InternalSyncCompareExchange64Fail - -InternalSyncCompareExchange64Exchange: - strexd ip, r4, r5, [r0] - cmp ip, #0 - bne InternalSyncCompareExchange64Again - -InternalSyncCompareExchange64Fail: - dmb - mov r0, r6 - mov r1, r7 - pop { r4-r7 } - bx lr - -/** - 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 -// ) -ASM_PFX(InternalSyncIncrement): - dmb -TryInternalSyncIncrement: - ldrex r1, [r0] - add r1, r1, #1 - strex r2, r1, [r0] - cmp r2, #0 - bne TryInternalSyncIncrement - dmb - mov r0, r1 - bx lr - -/** - 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 -// ) -ASM_PFX(InternalSyncDecrement): - dmb -TryInternalSyncDecrement: - ldrex r1, [r0] - sub r1, r1, #1 - strex r2, r1, [r0] - cmp r2, #0 - bne TryInternalSyncDecrement - dmb - mov r0, r1 - bx lr diff --git a/MdePkg/Library/BaseSynchronizationLib/Arm/Synchronization.asm b/MdePkg/Library/BaseSynchronizationLib/Arm/Synchronization.asm deleted file mode 100644 index 1c9a183b8f..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/Arm/Synchronization.asm +++ /dev/null @@ -1,214 +0,0 @@ -// Implementation of synchronization functions for ARM architecture -// -// Copyright (c) 2012-2015, ARM Limited. All rights reserved. -// Copyright (c) 2015, Linaro Limited. 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 -// 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. -// -// - - EXPORT InternalSyncCompareExchange16 - EXPORT InternalSyncCompareExchange32 - EXPORT InternalSyncCompareExchange64 - EXPORT InternalSyncIncrement - EXPORT InternalSyncDecrement - - AREA ArmSynchronization, CODE, READONLY - -/** - Performs an atomic compare exchange operation on a 16-bit unsigned integer. - - Performs an atomic compare exchange operation on the 16-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 16-bit value for the compare exchange - operation. - @param CompareValue 16-bit value used in compare operation. - @param ExchangeValue 16-bit value used in exchange operation. - - @return The original *Value before exchange. - -**/ -//UINT16 -//EFIAPI -//InternalSyncCompareExchange16 ( -// IN volatile UINT16 *Value, -// IN UINT16 CompareValue, -// IN UINT16 ExchangeValue -// ) -InternalSyncCompareExchange16 - dmb - -InternalSyncCompareExchange16Again - ldrexh r3, [r0] - cmp r3, r1 - bne InternalSyncCompareExchange16Fail - -InternalSyncCompareExchange16Exchange - strexh ip, r2, [r0] - cmp ip, #0 - bne InternalSyncCompareExchange16Again - -InternalSyncCompareExchange16Fail - dmb - mov r0, r3 - bx lr - -/** - 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 -// ) -InternalSyncCompareExchange32 - dmb - -InternalSyncCompareExchange32Again - ldrex r3, [r0] - cmp r3, r1 - bne InternalSyncCompareExchange32Fail - -InternalSyncCompareExchange32Exchange - strex ip, r2, [r0] - cmp ip, #0 - bne InternalSyncCompareExchange32Again - -InternalSyncCompareExchange32Fail - dmb - mov r0, r3 - bx lr - -/** - 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, // r0 -// IN UINT64 CompareValue, // r2-r3 -// IN UINT64 ExchangeValue // stack -// ) -InternalSyncCompareExchange64 - push { r4-r7 } - ldrd r4, r5, [sp, #16] - dmb - -InternalSyncCompareExchange64Again - ldrexd r6, r7, [r0] - cmp r6, r2 - cmpeq r7, r3 - bne InternalSyncCompareExchange64Fail - -InternalSyncCompareExchange64Exchange - strexd ip, r4, r5, [r0] - cmp ip, #0 - bne InternalSyncCompareExchange64Again - -InternalSyncCompareExchange64Fail - dmb - mov r0, r6 - mov r1, r7 - pop { r4-r7 } - bx lr - -/** - 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 -// ) -InternalSyncIncrement - dmb -TryInternalSyncIncrement - ldrex r1, [r0] - add r1, r1, #1 - strex r2, r1, [r0] - cmp r2, #0 - bne TryInternalSyncIncrement - dmb - mov r0, r1 - bx lr - -/** - 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 -// ) -InternalSyncDecrement - dmb -TryInternalSyncDecrement - ldrex r1, [r0] - sub r1, r1, #1 - strex r2, r1, [r0] - cmp r2, #0 - bne TryInternalSyncDecrement - dmb - mov r0, r1 - bx lr - - END diff --git a/MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf b/MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf deleted file mode 100755 index bd1bec3fb5..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf +++ /dev/null @@ -1,104 +0,0 @@ -## @file -# Base Synchronization Library implementation. -# -# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.
-# Portions copyright (c) 2008 - 2009, Apple Inc. 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 -# 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. -# -# -## - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = BaseSynchronizationLib - MODULE_UNI_FILE = BaseSynchronizationLib.uni - FILE_GUID = FC9990DF-C5FF-44cf-8799-CBB45B577F87 - MODULE_TYPE = BASE - VERSION_STRING = 1.0 - LIBRARY_CLASS = SynchronizationLib - -# -# VALID_ARCHITECTURES = IA32 X64 IPF EBC ARM AARCH64 -# -[Sources] - BaseSynchronizationLibInternals.h - -[Sources.IA32] - Ia32/InterlockedCompareExchange64.c | MSFT - Ia32/InterlockedCompareExchange32.c | MSFT - Ia32/InterlockedCompareExchange16.c | MSFT - Ia32/InterlockedDecrement.c | MSFT - Ia32/InterlockedIncrement.c | MSFT - SynchronizationMsc.c | MSFT - - Ia32/InterlockedCompareExchange64.asm | INTEL - Ia32/InterlockedCompareExchange32.asm | INTEL - Ia32/InterlockedCompareExchange16.asm | INTEL - Ia32/InterlockedDecrement.asm | INTEL - Ia32/InterlockedIncrement.asm | INTEL - Synchronization.c | INTEL - - Ia32/GccInline.c | GCC - SynchronizationGcc.c | GCC - -[Sources.X64] - X64/InterlockedCompareExchange64.c | MSFT - X64/InterlockedCompareExchange32.c | MSFT - X64/InterlockedCompareExchange16.c | MSFT - - X64/InterlockedCompareExchange64.asm | INTEL - X64/InterlockedCompareExchange32.asm | INTEL - X64/InterlockedCompareExchange16.asm | INTEL - - X64/InterlockedDecrement.c | MSFT - X64/InterlockedIncrement.c | MSFT - SynchronizationMsc.c | MSFT - - X64/InterlockedDecrement.asm | INTEL - X64/InterlockedIncrement.asm | INTEL - Synchronization.c | INTEL - - X64/GccInline.c | GCC - SynchronizationGcc.c | GCC - -[Sources.IPF] - Ipf/Synchronization.c - Ipf/InterlockedCompareExchange64.s - Ipf/InterlockedCompareExchange32.s - Ipf/InterlockedCompareExchange16.s - - Synchronization.c | INTEL - SynchronizationMsc.c | MSFT - SynchronizationGcc.c | GCC - -[Sources.EBC] - Synchronization.c - Ebc/Synchronization.c - -[Sources.ARM] - Synchronization.c - Arm/Synchronization.asm | RVCT - Arm/Synchronization.S | GCC - -[Sources.AARCH64] - Synchronization.c - AArch64/Synchronization.S - -[Packages] - MdePkg/MdePkg.dec - -[LibraryClasses] - PcdLib - TimerLib - DebugLib - BaseMemoryLib - -[Pcd] - gEfiMdePkgTokenSpaceGuid.PcdSpinLockTimeout ## SOMETIMES_CONSUMES - diff --git a/MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.uni b/MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.uni deleted file mode 100644 index 4ba38d0c1a..0000000000 Binary files a/MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.uni and /dev/null differ diff --git a/MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLibInternals.h b/MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLibInternals.h deleted file mode 100644 index 76f7023241..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLibInternals.h +++ /dev/null @@ -1,141 +0,0 @@ -/** @file - Declaration of internal functions in BaseSynchronizationLib. - - Copyright (c) 2006 - 2010, 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 - 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. - -**/ - -#ifndef __BASE_SYNCHRONIZATION_LIB_INTERNALS__ -#define __BASE_SYNCHRONIZATION_LIB_INTERNALS__ - -#include -#include -#include -#include -#include -#include - -/** - 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 - ); - - -/** - 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 - ); - - -/** - Performs an atomic compare exchange operation on a 16-bit unsigned integer. - - Performs an atomic compare exchange operation on the 16-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 16-bit value for the compare exchange - operation. - @param CompareValue A 16-bit value used in compare operation. - @param ExchangeValue A 16-bit value used in exchange operation. - - @return The original *Value before exchange. - -**/ -UINT16 -EFIAPI -InternalSyncCompareExchange16 ( - IN volatile UINT16 *Value, - IN UINT16 CompareValue, - IN UINT16 ExchangeValue - ); - - -/** - 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 A 32-bit value used in compare operation. - @param ExchangeValue A 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 - ); - - -/** - 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 A 64-bit value used in compare operation. - @param ExchangeValue A 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 - ); - -#endif diff --git a/MdePkg/Library/BaseSynchronizationLib/Ebc/Synchronization.c b/MdePkg/Library/BaseSynchronizationLib/Ebc/Synchronization.c deleted file mode 100644 index a57860203b..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/Ebc/Synchronization.c +++ /dev/null @@ -1,147 +0,0 @@ -/** @file - Implementation of synchronization functions on EBC. - - Copyright (c) 2006 - 2010, 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 - 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 16-bit - unsigned integer. - - Performs an atomic compare exchange operation on the 16-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 16-bit value for the - compare exchange operation. - @param CompareValue 16-bit value used in compare operation. - @param ExchangeValue 16-bit value used in exchange operation. - - @return The original *Value before exchange. - -**/ -UINT16 -EFIAPI -InternalSyncCompareExchange16 ( - IN volatile UINT16 *Value, - IN UINT16 CompareValue, - IN UINT16 ExchangeValue - ) -{ - return *Value != CompareValue ? *Value : - ((*Value = ExchangeValue), CompareValue); -} - -/** - 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; -} diff --git a/MdePkg/Library/BaseSynchronizationLib/Ia32/GccInline.c b/MdePkg/Library/BaseSynchronizationLib/Ia32/GccInline.c deleted file mode 100644 index bd81aad6c2..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/GccInline.c +++ /dev/null @@ -1,215 +0,0 @@ -/** @file - GCC inline implementation of BaseSynchronizationLib processor specific functions. - - Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
- Portions copyright (c) 2008 - 2009, Apple Inc. 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 - 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 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 - ) -{ - UINT32 Result; - - __asm__ __volatile__ ( - "lock \n\t" - "incl %2 \n\t" - "movl %2, %%eax " - : "=a" (Result), // %0 - "=m" (*Value) // %1 - : "m" (*Value) // %2 - : "memory", - "cc" - ); - - return Result; - -} - - -/** - 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 decremented 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 decremented value. - -**/ -UINT32 -EFIAPI -InternalSyncDecrement ( - IN volatile UINT32 *Value - ) -{ - UINT32 Result; - - __asm__ __volatile__ ( - "lock \n\t" - "decl %2 \n\t" - "movl %2, %%eax " - : "=a" (Result), // %0 - "=m" (*Value) // %1 - : "m" (*Value) // %2 - : "memory", - "cc" - ); - - return Result; -} - -/** - Performs an atomic compare exchange operation on a 16-bit unsigned integer. - - Performs an atomic compare exchange operation on the 16-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 16-bit value for the compare exchange - operation. - @param CompareValue 16-bit value used in compare operation. - @param ExchangeValue 16-bit value used in exchange operation. - - @return The original *Value before exchange. - -**/ -UINT16 -EFIAPI -InternalSyncCompareExchange16 ( - IN OUT volatile UINT16 *Value, - IN UINT16 CompareValue, - IN UINT16 ExchangeValue - ) -{ - - __asm__ __volatile__ ( - " \n\t" - "lock \n\t" - "cmpxchgw %1, %2 \n\t" - : "=a" (CompareValue) - : "q" (ExchangeValue), - "m" (*Value), - "0" (CompareValue) - : "memory", - "cc" - ); - - return CompareValue; -} - -/** - 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 OUT volatile UINT32 *Value, - IN UINT32 CompareValue, - IN UINT32 ExchangeValue - ) -{ - - __asm__ __volatile__ ( - " \n\t" - "lock \n\t" - "cmpxchgl %1, %2 \n\t" - : "=a" (CompareValue) // %0 - : "q" (ExchangeValue), // %1 - "m" (*Value), // %2 - "0" (CompareValue) // %4 - : "memory", - "cc" - ); - - return 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 OUT volatile UINT64 *Value, - IN UINT64 CompareValue, - IN UINT64 ExchangeValue - ) -{ - __asm__ __volatile__ ( - " \n\t" - "push %%ebx \n\t" - "movl %2,%%ebx \n\t" - "lock \n\t" - "cmpxchg8b (%1) \n\t" - "pop %%ebx \n\t" - : "+A" (CompareValue) // %0 - : "S" (Value), // %1 - "r" ((UINT32) ExchangeValue), // %2 - "c" ((UINT32) (ExchangeValue >> 32)) // %3 - : "memory", - "cc" - ); - - return CompareValue; -} diff --git a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.asm b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.asm deleted file mode 100644 index 92a0f49bc0..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.asm +++ /dev/null @@ -1,46 +0,0 @@ -;------------------------------------------------------------------------------ -; -; Copyright (c) 2006, 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 -; 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. -; -; Module Name: -; -; InterlockedCompareExchange16.Asm -; -; Abstract: -; -; InterlockedCompareExchange16 function -; -; Notes: -; -;------------------------------------------------------------------------------ - - .486 - .model flat,C - .code - -;------------------------------------------------------------------------------ -; UINT16 -; EFIAPI -; InternalSyncCompareExchange16 ( -; IN UINT16 *Value, -; IN UINT16 CompareValue, -; IN UINT16 ExchangeValue -; ); -;------------------------------------------------------------------------------ -InternalSyncCompareExchange16 PROC - mov ecx, [esp + 4] - mov ax, [esp + 8] - mov dx, [esp + 12] - lock cmpxchg [ecx], dx - ret -InternalSyncCompareExchange16 ENDP - - END diff --git a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.c b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.c deleted file mode 100644 index 3d5213743e..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange16.c +++ /dev/null @@ -1,51 +0,0 @@ -/** @file - InterlockedCompareExchange16 function - - Copyright (c) 2006 - 2010, 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 - 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 16-bit unsigned integer. - - Performs an atomic compare exchange operation on the 16-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 16-bit value for the compare exchange - operation. - @param CompareValue 16-bit value used in compare operation. - @param ExchangeValue 16-bit value used in exchange operation. - - @return The original *Value before exchange. - -**/ -UINT16 -EFIAPI -InternalSyncCompareExchange16 ( - IN UINT16 *Value, - IN UINT16 CompareValue, - IN UINT16 ExchangeValue - ) -{ - _asm { - mov ecx, Value - mov ax, CompareValue - mov dx, ExchangeValue - lock cmpxchg [ecx], dx - } -} - diff --git a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.asm b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.asm deleted file mode 100644 index 78ea72c5c4..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.asm +++ /dev/null @@ -1,45 +0,0 @@ -;------------------------------------------------------------------------------ -; -; Copyright (c) 2006, 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 -; 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. -; -; Module Name: -; -; InterlockedCompareExchange32.Asm -; -; Abstract: -; -; InterlockedCompareExchange32 function -; -; Notes: -; -;------------------------------------------------------------------------------ - - .486 - .model flat,C - .code - -;------------------------------------------------------------------------------ -; UINT32 -; EFIAPI -; InternalSyncCompareExchange32 ( -; IN UINT32 *Value, -; IN UINT32 CompareValue, -; IN UINT32 ExchangeValue -; ); -;------------------------------------------------------------------------------ -InternalSyncCompareExchange32 PROC - mov ecx, [esp + 4] - mov eax, [esp + 8] - mov edx, [esp + 12] - lock cmpxchg [ecx], edx - ret -InternalSyncCompareExchange32 ENDP - - END diff --git a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.c b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.c deleted file mode 100644 index a2c6838970..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange32.c +++ /dev/null @@ -1,50 +0,0 @@ -/** @file - InterlockedCompareExchange32 function - - Copyright (c) 2006 - 2010, 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 - 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 UINT32 *Value, - IN UINT32 CompareValue, - IN UINT32 ExchangeValue - ) -{ - _asm { - mov ecx, Value - mov eax, CompareValue - mov edx, ExchangeValue - lock cmpxchg [ecx], edx - } -} - diff --git a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.asm b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.asm deleted file mode 100644 index 0fcbd230ee..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.asm +++ /dev/null @@ -1,47 +0,0 @@ -;------------------------------------------------------------------------------ -; -; Copyright (c) 2006, 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 -; 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. -; -; Module Name: -; -; InterlockedCompareExchange64.Asm -; -; Abstract: -; -; InterlockedCompareExchange64 function -; -; Notes: -; -;------------------------------------------------------------------------------ - - .586P - .model flat,C - .code - -;------------------------------------------------------------------------------ -; UINT64 -; EFIAPI -; InternalSyncCompareExchange64 ( -; IN UINT64 *Value, -; IN UINT64 CompareValue, -; IN UINT64 ExchangeValue -; ); -;------------------------------------------------------------------------------ -InternalSyncCompareExchange64 PROC USES esi ebx - mov esi, [esp + 12] - mov eax, [esp + 16] - mov edx, [esp + 20] - mov ebx, [esp + 24] - mov ecx, [esp + 28] - lock cmpxchg8b qword ptr [esi] - ret -InternalSyncCompareExchange64 ENDP - - END diff --git a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.c b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.c deleted file mode 100644 index 73af6ef91a..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedCompareExchange64.c +++ /dev/null @@ -1,50 +0,0 @@ -/** @file - InterlockedCompareExchange64 function - - Copyright (c) 2006 - 2010, 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 - 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 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 A 64-bit value used in a compare operation. - @param ExchangeValue A 64-bit value used in an exchange operation. - - @return The original *Value before exchange. - -**/ -UINT64 -EFIAPI -InternalSyncCompareExchange64 ( - IN UINT64 *Value, - IN UINT64 CompareValue, - IN UINT64 ExchangeValue - ) -{ - _asm { - mov esi, Value - mov eax, dword ptr [CompareValue + 0] - mov edx, dword ptr [CompareValue + 4] - mov ebx, dword ptr [ExchangeValue + 0] - mov ecx, dword ptr [ExchangeValue + 4] - lock cmpxchg8b qword ptr [esi] - } -} diff --git a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.asm b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.asm deleted file mode 100644 index 22cb0b2d38..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.asm +++ /dev/null @@ -1,42 +0,0 @@ -;------------------------------------------------------------------------------ -; -; Copyright (c) 2006, 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 -; 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. -; -; Module Name: -; -; InterlockedDecrement.Asm -; -; Abstract: -; -; InterlockedDecrement function -; -; Notes: -; -;------------------------------------------------------------------------------ - - .386 - .model flat,C - .code - -;------------------------------------------------------------------------------ -; UINT32 -; EFIAPI -; InternalSyncDecrement ( -; IN UINT32 *Value -; ); -;------------------------------------------------------------------------------ -InternalSyncDecrement PROC - mov eax, [esp + 4] - lock dec dword ptr [eax] - mov eax, [eax] - ret -InternalSyncDecrement ENDP - - END diff --git a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.c b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.c deleted file mode 100644 index 7f18e0b6b7..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedDecrement.c +++ /dev/null @@ -1,42 +0,0 @@ -/** @file - InterlockedDecrement function - - Copyright (c) 2006 - 2010, 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 - 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 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 UINT32 *Value - ) -{ - _asm { - mov eax, Value - lock dec dword ptr [eax] - mov eax, [eax] - } -} diff --git a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.asm b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.asm deleted file mode 100644 index 51675f600a..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.asm +++ /dev/null @@ -1,42 +0,0 @@ -;------------------------------------------------------------------------------ -; -; Copyright (c) 2006, 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 -; 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. -; -; Module Name: -; -; InterlockedIncrement.Asm -; -; Abstract: -; -; InterlockedIncrement function -; -; Notes: -; -;------------------------------------------------------------------------------ - - .386 - .model flat,C - .code - -;------------------------------------------------------------------------------ -; UINT32 -; EFIAPI -; InternalSyncIncrement ( -; IN UINT32 *Value -; ); -;------------------------------------------------------------------------------ -InternalSyncIncrement PROC - mov eax, [esp + 4] - lock inc dword ptr [eax] - mov eax, [eax] - ret -InternalSyncIncrement ENDP - - END diff --git a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.c b/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.c deleted file mode 100644 index cf9f92a021..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/Ia32/InterlockedIncrement.c +++ /dev/null @@ -1,43 +0,0 @@ -/** @file - InterLockedIncrement function - - Copyright (c) 2006 - 2010, 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 - 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 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 UINT32 *Value - ) -{ - _asm { - mov eax, Value - lock inc dword ptr [eax] - mov eax, [eax] - } -} - diff --git a/MdePkg/Library/BaseSynchronizationLib/Ipf/InterlockedCompareExchange16.s b/MdePkg/Library/BaseSynchronizationLib/Ipf/InterlockedCompareExchange16.s deleted file mode 100644 index b72a1f33dd..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/Ipf/InterlockedCompareExchange16.s +++ /dev/null @@ -1,30 +0,0 @@ -/// @file -/// Contains an implementation of InterlockedCompareExchange16 on Itanium- -/// based architecture. -/// -/// Copyright (c) 2006 - 2008, 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 -/// 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. -/// -/// Module Name: InterlockedCompareExchange16.s -/// -/// - -.auto -.text - -.proc InternalSyncCompareExchange16 -.type InternalSyncCompareExchange16, @function -InternalSyncCompareExchange16:: - zxt2 r33 = r33 - mov ar.ccv = r33 - cmpxchg2.rel r8 = [r32], r34 - mf - br.ret.sptk.many b0 -.endp InternalSyncCompareExchange16 diff --git a/MdePkg/Library/BaseSynchronizationLib/Ipf/InterlockedCompareExchange32.s b/MdePkg/Library/BaseSynchronizationLib/Ipf/InterlockedCompareExchange32.s deleted file mode 100644 index 48273c9cfd..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/Ipf/InterlockedCompareExchange32.s +++ /dev/null @@ -1,29 +0,0 @@ -/// @file -/// Contains an implementation of InterlockedCompareExchange32 on Itanium- -/// based architecture. -/// -/// Copyright (c) 2006 - 2008, 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 -/// 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. -/// -/// Module Name: InterlockedCompareExchange32.s -/// -/// - -.auto -.text - -.proc InternalSyncCompareExchange32 -.type InternalSyncCompareExchange32, @function -InternalSyncCompareExchange32:: - zxt4 r33 = r33 - mov ar.ccv = r33 - cmpxchg4.rel r8 = [r32], r34 - mf - br.ret.sptk.many b0 -.endp InternalSyncCompareExchange32 diff --git a/MdePkg/Library/BaseSynchronizationLib/Ipf/InterlockedCompareExchange64.s b/MdePkg/Library/BaseSynchronizationLib/Ipf/InterlockedCompareExchange64.s deleted file mode 100644 index b6ee19694e..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/Ipf/InterlockedCompareExchange64.s +++ /dev/null @@ -1,28 +0,0 @@ -/// @file -/// Contains an implementation of InterlockedCompareExchange64 on Itanium- -/// based architecture. -/// -/// Copyright (c) 2006 - 2008, 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 -/// 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. -/// -/// Module Name: InterlockedCompareExchange64.s -/// -/// - -.auto -.text - -.proc InternalSyncCompareExchange64 -.type InternalSyncCompareExchange64, @function -InternalSyncCompareExchange64:: - mov ar.ccv = r33 - cmpxchg8.rel r8 = [r32], r34 - mf - br.ret.sptk.many b0 -.endp InternalSyncCompareExchange64 diff --git a/MdePkg/Library/BaseSynchronizationLib/Ipf/Synchronization.c b/MdePkg/Library/BaseSynchronizationLib/Ipf/Synchronization.c deleted file mode 100644 index 3e316e7140..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/Ipf/Synchronization.c +++ /dev/null @@ -1,77 +0,0 @@ -/** @file - Implementation of synchronization functions on Itanium. - - Copyright (c) 2006 - 2010, 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 - 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. - -**/ - -#include "BaseSynchronizationLibInternals.h" - -/** - 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 - ) -{ - UINT32 OriginalValue; - - do { - OriginalValue = *Value; - } while (OriginalValue != InternalSyncCompareExchange32 ( - Value, - OriginalValue, - OriginalValue + 1 - )); - return OriginalValue + 1; -} - -/** - 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 - ) -{ - UINT32 OriginalValue; - - do { - OriginalValue = *Value; - } while (OriginalValue != InternalSyncCompareExchange32 ( - Value, - OriginalValue, - OriginalValue - 1 - )); - return OriginalValue - 1; -} diff --git a/MdePkg/Library/BaseSynchronizationLib/Synchronization.c b/MdePkg/Library/BaseSynchronizationLib/Synchronization.c deleted file mode 100644 index 4218a265a0..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/Synchronization.c +++ /dev/null @@ -1,418 +0,0 @@ -/** @file - Implementation of synchronization functions. - - Copyright (c) 2006 - 2012, 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 - 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. - -**/ - -#include "BaseSynchronizationLibInternals.h" - -#define SPIN_LOCK_RELEASED ((UINTN) 1) -#define SPIN_LOCK_ACQUIRED ((UINTN) 2) - -/** - Retrieves the architecture specific spin lock alignment requirements for - optimal spin lock performance. - - This function retrieves the spin lock alignment requirements for optimal - performance on a given CPU architecture. The spin lock alignment is byte alignment. - It must be a power of two and is returned by this function. If there are no alignment - requirements, then 1 must be returned. The spin lock synchronization - functions must function correctly if the spin lock size and alignment values - returned by this function are not used at all. These values are hints to the - consumers of the spin lock synchronization functions to obtain optimal spin - lock performance. - - @return The architecture specific spin lock alignment. - -**/ -UINTN -EFIAPI -GetSpinLockProperties ( - VOID - ) -{ - return 32; -} - -/** - Initializes a spin lock to the released state and returns the spin lock. - - This function initializes the spin lock specified by SpinLock to the released - state, and returns SpinLock. Optimal performance can be achieved by calling - GetSpinLockProperties() to determine the size and alignment requirements for - SpinLock. - - If SpinLock is NULL, then ASSERT(). - - @param SpinLock A pointer to the spin lock to initialize to the released - state. - - @return SpinLock is in release state. - -**/ -SPIN_LOCK * -EFIAPI -InitializeSpinLock ( - OUT SPIN_LOCK *SpinLock - ) -{ - ASSERT (SpinLock != NULL); - *SpinLock = SPIN_LOCK_RELEASED; - return SpinLock; -} - -/** - Waits until a spin lock can be placed in the acquired state. - - This function checks the state of the spin lock specified by SpinLock. If - SpinLock is in the released state, then this function places SpinLock in the - acquired state and returns SpinLock. Otherwise, this function waits - indefinitely for the spin lock to be released, and then places it in the - acquired state and returns SpinLock. All state transitions of SpinLock must - be performed using MP safe mechanisms. - - If SpinLock is NULL, then ASSERT(). - If SpinLock was not initialized with InitializeSpinLock(), then ASSERT(). - If PcdSpinLockTimeout is not zero, and SpinLock is can not be acquired in - PcdSpinLockTimeout microseconds, then ASSERT(). - - @param SpinLock A pointer to the spin lock to place in the acquired state. - - @return SpinLock acquired the lock. - -**/ -SPIN_LOCK * -EFIAPI -AcquireSpinLock ( - IN OUT SPIN_LOCK *SpinLock - ) -{ - UINT64 Current; - UINT64 Previous; - UINT64 Total; - UINT64 Start; - UINT64 End; - UINT64 Timeout; - INT64 Cycle; - INT64 Delta; - - if (PcdGet32 (PcdSpinLockTimeout) > 0) { - // - // Get the current timer value - // - Current = GetPerformanceCounter(); - - // - // Initialize local variables - // - Start = 0; - End = 0; - Total = 0; - - // - // Retrieve the performance counter properties and compute the number of performance - // counter ticks required to reach the timeout - // - Timeout = DivU64x32 ( - MultU64x32 ( - GetPerformanceCounterProperties (&Start, &End), - PcdGet32 (PcdSpinLockTimeout) - ), - 1000000 - ); - Cycle = End - Start; - if (Cycle < 0) { - Cycle = -Cycle; - } - Cycle++; - - while (!AcquireSpinLockOrFail (SpinLock)) { - CpuPause (); - Previous = Current; - Current = GetPerformanceCounter(); - Delta = (INT64) (Current - Previous); - if (Start > End) { - Delta = -Delta; - } - if (Delta < 0) { - Delta += Cycle; - } - Total += Delta; - ASSERT (Total < Timeout); - } - } else { - while (!AcquireSpinLockOrFail (SpinLock)) { - CpuPause (); - } - } - return SpinLock; -} - -/** - Attempts to place a spin lock in the acquired state. - - This function checks the state of the spin lock specified by SpinLock. If - SpinLock is in the released state, then this function places SpinLock in the - acquired state and returns TRUE. Otherwise, FALSE is returned. All state - transitions of SpinLock must be performed using MP safe mechanisms. - - If SpinLock is NULL, then ASSERT(). - If SpinLock was not initialized with InitializeSpinLock(), then ASSERT(). - - @param SpinLock A pointer to the spin lock to place in the acquired state. - - @retval TRUE SpinLock was placed in the acquired state. - @retval FALSE SpinLock could not be acquired. - -**/ -BOOLEAN -EFIAPI -AcquireSpinLockOrFail ( - IN OUT SPIN_LOCK *SpinLock - ) -{ - SPIN_LOCK LockValue; - - ASSERT (SpinLock != NULL); - - LockValue = *SpinLock; - ASSERT (SPIN_LOCK_ACQUIRED == LockValue || SPIN_LOCK_RELEASED == LockValue); - - return (BOOLEAN)( - InterlockedCompareExchangePointer ( - (VOID**)SpinLock, - (VOID*)SPIN_LOCK_RELEASED, - (VOID*)SPIN_LOCK_ACQUIRED - ) == (VOID*)SPIN_LOCK_RELEASED - ); -} - -/** - Releases a spin lock. - - This function places the spin lock specified by SpinLock in the release state - and returns SpinLock. - - If SpinLock is NULL, then ASSERT(). - If SpinLock was not initialized with InitializeSpinLock(), then ASSERT(). - - @param SpinLock A pointer to the spin lock to release. - - @return SpinLock released lock. - -**/ -SPIN_LOCK * -EFIAPI -ReleaseSpinLock ( - IN OUT SPIN_LOCK *SpinLock - ) -{ - SPIN_LOCK LockValue; - - ASSERT (SpinLock != NULL); - - LockValue = *SpinLock; - ASSERT (SPIN_LOCK_ACQUIRED == LockValue || SPIN_LOCK_RELEASED == LockValue); - - *SpinLock = SPIN_LOCK_RELEASED; - return SpinLock; -} - -/** - 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. - - If Value is NULL, then ASSERT(). - - @param Value A pointer to the 32-bit value to increment. - - @return The incremented value. - -**/ -UINT32 -EFIAPI -InterlockedIncrement ( - IN UINT32 *Value - ) -{ - ASSERT (Value != NULL); - return InternalSyncIncrement (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 decremented value. The decrement operation must be - performed using MP safe mechanisms. The state of the return value is not - guaranteed to be MP safe. - - If Value is NULL, then ASSERT(). - - @param Value A pointer to the 32-bit value to decrement. - - @return The decremented value. - -**/ -UINT32 -EFIAPI -InterlockedDecrement ( - IN UINT32 *Value - ) -{ - ASSERT (Value != NULL); - return InternalSyncDecrement (Value); -} - -/** - Performs an atomic compare exchange operation on a 16-bit unsigned integer. - - Performs an atomic compare exchange operation on the 16-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. - - If Value is NULL, then ASSERT(). - - @param Value A pointer to the 16-bit value for the compare exchange - operation. - @param CompareValue 16-bit value used in compare operation. - @param ExchangeValue 16-bit value used in exchange operation. - - @return The original *Value before exchange. - -**/ -UINT16 -EFIAPI -InterlockedCompareExchange16 ( - IN OUT UINT16 *Value, - IN UINT16 CompareValue, - IN UINT16 ExchangeValue - ) -{ - ASSERT (Value != NULL); - return InternalSyncCompareExchange16 (Value, CompareValue, ExchangeValue); -} - -/** - 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. - - If Value is NULL, then ASSERT(). - - @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 -InterlockedCompareExchange32 ( - IN OUT UINT32 *Value, - IN UINT32 CompareValue, - IN UINT32 ExchangeValue - ) -{ - ASSERT (Value != NULL); - return InternalSyncCompareExchange32 (Value, CompareValue, ExchangeValue); -} - -/** - 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. - - If Value is NULL, then ASSERT(). - - @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 -InterlockedCompareExchange64 ( - IN OUT UINT64 *Value, - IN UINT64 CompareValue, - IN UINT64 ExchangeValue - ) -{ - ASSERT (Value != NULL); - return InternalSyncCompareExchange64 (Value, CompareValue, ExchangeValue); -} - -/** - Performs an atomic compare exchange operation on a pointer value. - - Performs an atomic compare exchange operation on the pointer value 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. - - If Value is NULL, then ASSERT(). - - @param Value A pointer to the pointer value for the compare exchange - operation. - @param CompareValue Pointer value used in compare operation. - @param ExchangeValue Pointer value used in exchange operation. - - @return The original *Value before exchange. -**/ -VOID * -EFIAPI -InterlockedCompareExchangePointer ( - IN OUT VOID **Value, - IN VOID *CompareValue, - IN VOID *ExchangeValue - ) -{ - UINT8 SizeOfValue; - - SizeOfValue = sizeof (*Value); - - switch (SizeOfValue) { - case sizeof (UINT32): - return (VOID*)(UINTN)InterlockedCompareExchange32 ( - (UINT32*)Value, - (UINT32)(UINTN)CompareValue, - (UINT32)(UINTN)ExchangeValue - ); - case sizeof (UINT64): - return (VOID*)(UINTN)InterlockedCompareExchange64 ( - (UINT64*)Value, - (UINT64)(UINTN)CompareValue, - (UINT64)(UINTN)ExchangeValue - ); - default: - ASSERT (FALSE); - return NULL; - } -} diff --git a/MdePkg/Library/BaseSynchronizationLib/SynchronizationGcc.c b/MdePkg/Library/BaseSynchronizationLib/SynchronizationGcc.c deleted file mode 100644 index 587f5a771c..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/SynchronizationGcc.c +++ /dev/null @@ -1,434 +0,0 @@ -/** @file - Implementation of synchronization functions. - - Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.
- Portions copyright (c) 2008 - 2009, Apple Inc. 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 - 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. - -**/ - -#include "BaseSynchronizationLibInternals.h" - -// -// GCC inline assembly for Read Write Barrier -// -#define _ReadWriteBarrier() do { __asm__ __volatile__ ("": : : "memory"); } while(0) - -#define SPIN_LOCK_RELEASED ((UINTN) 1) -#define SPIN_LOCK_ACQUIRED ((UINTN) 2) - -/** - Retrieves the architecture specific spin lock alignment requirements for - optimal spin lock performance. - - This function retrieves the spin lock alignment requirements for optimal - performance on a given CPU architecture. The spin lock alignment is byte alignment. - It must be a power of two and is returned by this function. If there are no alignment - requirements, then 1 must be returned. The spin lock synchronization - functions must function correctly if the spin lock size and alignment values - returned by this function are not used at all. These values are hints to the - consumers of the spin lock synchronization functions to obtain optimal spin - lock performance. - - @return The architecture specific spin lock alignment. - -**/ -UINTN -EFIAPI -GetSpinLockProperties ( - VOID - ) -{ - return 32; -} - -/** - Initializes a spin lock to the released state and returns the spin lock. - - This function initializes the spin lock specified by SpinLock to the released - state, and returns SpinLock. Optimal performance can be achieved by calling - GetSpinLockProperties() to determine the size and alignment requirements for - SpinLock. - - If SpinLock is NULL, then ASSERT(). - - @param SpinLock A pointer to the spin lock to initialize to the released - state. - - @return SpinLock is in release state. - -**/ -SPIN_LOCK * -EFIAPI -InitializeSpinLock ( - OUT SPIN_LOCK *SpinLock - ) -{ - ASSERT (SpinLock != NULL); - - _ReadWriteBarrier(); - *SpinLock = SPIN_LOCK_RELEASED; - _ReadWriteBarrier(); - - return SpinLock; -} - -/** - Waits until a spin lock can be placed in the acquired state. - - This function checks the state of the spin lock specified by SpinLock. If - SpinLock is in the released state, then this function places SpinLock in the - acquired state and returns SpinLock. Otherwise, this function waits - indefinitely for the spin lock to be released, and then places it in the - acquired state and returns SpinLock. All state transitions of SpinLock must - be performed using MP safe mechanisms. - - If SpinLock is NULL, then ASSERT(). - If SpinLock was not initialized with InitializeSpinLock(), then ASSERT(). - If PcdSpinLockTimeout is not zero, and SpinLock is can not be acquired in - PcdSpinLockTimeout microseconds, then ASSERT(). - - @param SpinLock A pointer to the spin lock to place in the acquired state. - - @return SpinLock acquired the lock. - -**/ -SPIN_LOCK * -EFIAPI -AcquireSpinLock ( - IN OUT SPIN_LOCK *SpinLock - ) -{ - UINT64 Current; - UINT64 Previous; - UINT64 Total; - UINT64 Start; - UINT64 End; - UINT64 Timeout; - INT64 Cycle; - INT64 Delta; - - if (PcdGet32 (PcdSpinLockTimeout) > 0) { - // - // Get the current timer value - // - Current = GetPerformanceCounter(); - - // - // Initialize local variables - // - Start = 0; - End = 0; - Total = 0; - - // - // Retrieve the performance counter properties and compute the number of performance - // counter ticks required to reach the timeout - // - Timeout = DivU64x32 ( - MultU64x32 ( - GetPerformanceCounterProperties (&Start, &End), - PcdGet32 (PcdSpinLockTimeout) - ), - 1000000 - ); - Cycle = End - Start; - if (Cycle < 0) { - Cycle = -Cycle; - } - Cycle++; - - while (!AcquireSpinLockOrFail (SpinLock)) { - CpuPause (); - Previous = Current; - Current = GetPerformanceCounter(); - Delta = (INT64) (Current - Previous); - if (Start > End) { - Delta = -Delta; - } - if (Delta < 0) { - Delta += Cycle; - } - Total += Delta; - ASSERT (Total < Timeout); - } - } else { - while (!AcquireSpinLockOrFail (SpinLock)) { - CpuPause (); - } - } - return SpinLock; -} - -/** - Attempts to place a spin lock in the acquired state. - - This function checks the state of the spin lock specified by SpinLock. If - SpinLock is in the released state, then this function places SpinLock in the - acquired state and returns TRUE. Otherwise, FALSE is returned. All state - transitions of SpinLock must be performed using MP safe mechanisms. - - If SpinLock is NULL, then ASSERT(). - If SpinLock was not initialized with InitializeSpinLock(), then ASSERT(). - - @param SpinLock A pointer to the spin lock to place in the acquired state. - - @retval TRUE SpinLock was placed in the acquired state. - @retval FALSE SpinLock could not be acquired. - -**/ -BOOLEAN -EFIAPI -AcquireSpinLockOrFail ( - IN OUT SPIN_LOCK *SpinLock - ) -{ - SPIN_LOCK LockValue; - VOID *Result; - - ASSERT (SpinLock != NULL); - - LockValue = *SpinLock; - ASSERT (LockValue == SPIN_LOCK_ACQUIRED || LockValue == SPIN_LOCK_RELEASED); - - _ReadWriteBarrier (); - Result = InterlockedCompareExchangePointer ( - (VOID**)SpinLock, - (VOID*)SPIN_LOCK_RELEASED, - (VOID*)SPIN_LOCK_ACQUIRED - ); - - _ReadWriteBarrier (); - return (BOOLEAN) (Result == (VOID*) SPIN_LOCK_RELEASED); -} - -/** - Releases a spin lock. - - This function places the spin lock specified by SpinLock in the release state - and returns SpinLock. - - If SpinLock is NULL, then ASSERT(). - If SpinLock was not initialized with InitializeSpinLock(), then ASSERT(). - - @param SpinLock A pointer to the spin lock to release. - - @return SpinLock released the lock. - -**/ -SPIN_LOCK * -EFIAPI -ReleaseSpinLock ( - IN OUT SPIN_LOCK *SpinLock - ) -{ - SPIN_LOCK LockValue; - - ASSERT (SpinLock != NULL); - - LockValue = *SpinLock; - ASSERT (LockValue == SPIN_LOCK_ACQUIRED || LockValue == SPIN_LOCK_RELEASED); - - _ReadWriteBarrier (); - *SpinLock = SPIN_LOCK_RELEASED; - _ReadWriteBarrier (); - - return SpinLock; -} - -/** - 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. - - If Value is NULL, then ASSERT(). - - @param Value A pointer to the 32-bit value to increment. - - @return The incremented value. - -**/ -UINT32 -EFIAPI -InterlockedIncrement ( - IN UINT32 *Value - ) -{ - ASSERT (Value != NULL); - return InternalSyncIncrement (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 decremented value. The decrement operation must be - performed using MP safe mechanisms. The state of the return value is not - guaranteed to be MP safe. - - If Value is NULL, then ASSERT(). - - @param Value A pointer to the 32-bit value to decrement. - - @return The decremented value. - -**/ -UINT32 -EFIAPI -InterlockedDecrement ( - IN UINT32 *Value - ) -{ - ASSERT (Value != NULL); - return InternalSyncDecrement (Value); -} - -/** - Performs an atomic compare exchange operation on a 16-bit unsigned integer. - - Performs an atomic compare exchange operation on the 16-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. - - If Value is NULL, then ASSERT(). - - @param Value A pointer to the 16-bit value for the compare exchange - operation. - @param CompareValue A 16-bit value used in compare operation. - @param ExchangeValue A 16-bit value used in exchange operation. - - @return The original *Value before exchange. - -**/ -UINT16 -EFIAPI -InterlockedCompareExchange16 ( - IN OUT UINT16 *Value, - IN UINT16 CompareValue, - IN UINT16 ExchangeValue - ) -{ - ASSERT (Value != NULL); - return InternalSyncCompareExchange16 (Value, CompareValue, ExchangeValue); -} - -/** - 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. - - If Value is NULL, then ASSERT(). - - @param Value A pointer to the 32-bit value for the compare exchange - operation. - @param CompareValue A 32-bit value used in compare operation. - @param ExchangeValue A 32-bit value used in exchange operation. - - @return The original *Value before exchange. - -**/ -UINT32 -EFIAPI -InterlockedCompareExchange32 ( - IN OUT UINT32 *Value, - IN UINT32 CompareValue, - IN UINT32 ExchangeValue - ) -{ - ASSERT (Value != NULL); - return InternalSyncCompareExchange32 (Value, CompareValue, ExchangeValue); -} - -/** - 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. - - If Value is NULL, then ASSERT(). - - @param Value A pointer to the 64-bit value for the compare exchange - operation. - @param CompareValue A 64-bit value used in a compare operation. - @param ExchangeValue A 64-bit value used in an exchange operation. - - @return The original *Value before exchange. - -**/ -UINT64 -EFIAPI -InterlockedCompareExchange64 ( - IN OUT UINT64 *Value, - IN UINT64 CompareValue, - IN UINT64 ExchangeValue - ) -{ - ASSERT (Value != NULL); - return InternalSyncCompareExchange64 (Value, CompareValue, ExchangeValue); -} - -/** - Performs an atomic compare exchange operation on a pointer value. - - Performs an atomic compare exchange operation on the pointer value 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. - - If Value is NULL, then ASSERT(). - - @param Value A pointer to the pointer value for the compare exchange - operation. - @param CompareValue A pointer value used in a compare operation. - @param ExchangeValue A pointer value used in an exchange operation. - - @return The original *Value before exchange. -**/ -VOID * -EFIAPI -InterlockedCompareExchangePointer ( - IN OUT VOID **Value, - IN VOID *CompareValue, - IN VOID *ExchangeValue - ) -{ - UINT8 SizeOfValue; - - SizeOfValue = sizeof (*Value); - - switch (SizeOfValue) { - case sizeof (UINT32): - return (VOID*)(UINTN)InterlockedCompareExchange32 ( - (UINT32*)Value, - (UINT32)(UINTN)CompareValue, - (UINT32)(UINTN)ExchangeValue - ); - case sizeof (UINT64): - return (VOID*)(UINTN)InterlockedCompareExchange64 ( - (UINT64*)Value, - (UINT64)(UINTN)CompareValue, - (UINT64)(UINTN)ExchangeValue - ); - default: - ASSERT (FALSE); - return NULL; - } -} diff --git a/MdePkg/Library/BaseSynchronizationLib/SynchronizationMsc.c b/MdePkg/Library/BaseSynchronizationLib/SynchronizationMsc.c deleted file mode 100644 index ca21f5dcce..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/SynchronizationMsc.c +++ /dev/null @@ -1,436 +0,0 @@ -/** @file - Implementation of synchronization functions. - - Copyright (c) 2006 - 2012, 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 - 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. - -**/ - -#include "BaseSynchronizationLibInternals.h" - -/** - Microsoft Visual Studio 7.1 Function Prototypes for read write barrier Intrinsics. -**/ - -void _ReadWriteBarrier (void); -#pragma intrinsic(_ReadWriteBarrier) - - -#define SPIN_LOCK_RELEASED ((UINTN) 1) -#define SPIN_LOCK_ACQUIRED ((UINTN) 2) - -/** - Retrieves the architecture specific spin lock alignment requirements for - optimal spin lock performance. - - This function retrieves the spin lock alignment requirements for optimal - performance on a given CPU architecture. The spin lock alignment is byte alignment. - It must be a power of two and is returned by this function. If there are no alignment - requirements, then 1 must be returned. The spin lock synchronization - functions must function correctly if the spin lock size and alignment values - returned by this function are not used at all. These values are hints to the - consumers of the spin lock synchronization functions to obtain optimal spin - lock performance. - - @return The architecture specific spin lock alignment. - -**/ -UINTN -EFIAPI -GetSpinLockProperties ( - VOID - ) -{ - return 32; -} - -/** - Initializes a spin lock to the released state and returns the spin lock. - - This function initializes the spin lock specified by SpinLock to the released - state, and returns SpinLock. Optimal performance can be achieved by calling - GetSpinLockProperties() to determine the size and alignment requirements for - SpinLock. - - If SpinLock is NULL, then ASSERT(). - - @param SpinLock A pointer to the spin lock to initialize to the released - state. - - @return SpinLock is in release state. - -**/ -SPIN_LOCK * -EFIAPI -InitializeSpinLock ( - OUT SPIN_LOCK *SpinLock - ) -{ - ASSERT (SpinLock != NULL); - - _ReadWriteBarrier(); - *SpinLock = SPIN_LOCK_RELEASED; - _ReadWriteBarrier(); - - return SpinLock; -} - -/** - Waits until a spin lock can be placed in the acquired state. - - This function checks the state of the spin lock specified by SpinLock. If - SpinLock is in the released state, then this function places SpinLock in the - acquired state and returns SpinLock. Otherwise, this function waits - indefinitely for the spin lock to be released, and then places it in the - acquired state and returns SpinLock. All state transitions of SpinLock must - be performed using MP safe mechanisms. - - If SpinLock is NULL, then ASSERT(). - If SpinLock was not initialized with InitializeSpinLock(), then ASSERT(). - If PcdSpinLockTimeout is not zero, and SpinLock is can not be acquired in - PcdSpinLockTimeout microseconds, then ASSERT(). - - @param SpinLock A pointer to the spin lock to place in the acquired state. - - @return SpinLock acquired the lock. - -**/ -SPIN_LOCK * -EFIAPI -AcquireSpinLock ( - IN OUT SPIN_LOCK *SpinLock - ) -{ - UINT64 Current; - UINT64 Previous; - UINT64 Total; - UINT64 Start; - UINT64 End; - UINT64 Timeout; - INT64 Cycle; - INT64 Delta; - - if (PcdGet32 (PcdSpinLockTimeout) > 0) { - // - // Get the current timer value - // - Current = GetPerformanceCounter(); - - // - // Initialize local variables - // - Start = 0; - End = 0; - Total = 0; - - // - // Retrieve the performance counter properties and compute the number of performance - // counter ticks required to reach the timeout - // - Timeout = DivU64x32 ( - MultU64x32 ( - GetPerformanceCounterProperties (&Start, &End), - PcdGet32 (PcdSpinLockTimeout) - ), - 1000000 - ); - Cycle = End - Start; - if (Cycle < 0) { - Cycle = -Cycle; - } - Cycle++; - - while (!AcquireSpinLockOrFail (SpinLock)) { - CpuPause (); - Previous = Current; - Current = GetPerformanceCounter(); - Delta = (INT64) (Current - Previous); - if (Start > End) { - Delta = -Delta; - } - if (Delta < 0) { - Delta += Cycle; - } - Total += Delta; - ASSERT (Total < Timeout); - } - } else { - while (!AcquireSpinLockOrFail (SpinLock)) { - CpuPause (); - } - } - return SpinLock; -} - -/** - Attempts to place a spin lock in the acquired state. - - This function checks the state of the spin lock specified by SpinLock. If - SpinLock is in the released state, then this function places SpinLock in the - acquired state and returns TRUE. Otherwise, FALSE is returned. All state - transitions of SpinLock must be performed using MP safe mechanisms. - - If SpinLock is NULL, then ASSERT(). - If SpinLock was not initialized with InitializeSpinLock(), then ASSERT(). - - @param SpinLock A pointer to the spin lock to place in the acquired state. - - @retval TRUE SpinLock was placed in the acquired state. - @retval FALSE SpinLock could not be acquired. - -**/ -BOOLEAN -EFIAPI -AcquireSpinLockOrFail ( - IN OUT SPIN_LOCK *SpinLock - ) -{ - SPIN_LOCK LockValue; - VOID *Result; - - ASSERT (SpinLock != NULL); - - LockValue = *SpinLock; - ASSERT (LockValue == SPIN_LOCK_ACQUIRED || LockValue == SPIN_LOCK_RELEASED); - - _ReadWriteBarrier (); - Result = InterlockedCompareExchangePointer ( - (VOID**)SpinLock, - (VOID*)SPIN_LOCK_RELEASED, - (VOID*)SPIN_LOCK_ACQUIRED - ); - - _ReadWriteBarrier (); - return (BOOLEAN) (Result == (VOID*) SPIN_LOCK_RELEASED); -} - -/** - Releases a spin lock. - - This function places the spin lock specified by SpinLock in the release state - and returns SpinLock. - - If SpinLock is NULL, then ASSERT(). - If SpinLock was not initialized with InitializeSpinLock(), then ASSERT(). - - @param SpinLock A pointer to the spin lock to release. - - @return SpinLock released the lock. - -**/ -SPIN_LOCK * -EFIAPI -ReleaseSpinLock ( - IN OUT SPIN_LOCK *SpinLock - ) -{ - SPIN_LOCK LockValue; - - ASSERT (SpinLock != NULL); - - LockValue = *SpinLock; - ASSERT (LockValue == SPIN_LOCK_ACQUIRED || LockValue == SPIN_LOCK_RELEASED); - - _ReadWriteBarrier (); - *SpinLock = SPIN_LOCK_RELEASED; - _ReadWriteBarrier (); - - return SpinLock; -} - -/** - 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. - - If Value is NULL, then ASSERT(). - - @param Value A pointer to the 32-bit value to increment. - - @return The incremented value. - -**/ -UINT32 -EFIAPI -InterlockedIncrement ( - IN UINT32 *Value - ) -{ - ASSERT (Value != NULL); - return InternalSyncIncrement (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 decremented value. The decrement operation must be - performed using MP safe mechanisms. The state of the return value is not - guaranteed to be MP safe. - - If Value is NULL, then ASSERT(). - - @param Value A pointer to the 32-bit value to decrement. - - @return The decremented value. - -**/ -UINT32 -EFIAPI -InterlockedDecrement ( - IN UINT32 *Value - ) -{ - ASSERT (Value != NULL); - return InternalSyncDecrement (Value); -} - -/** - Performs an atomic compare exchange operation on a 16-bit unsigned integer. - - Performs an atomic compare exchange operation on the 16-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. - - If Value is NULL, then ASSERT(). - - @param Value A pointer to the 16-bit value for the compare exchange - operation. - @param CompareValue A 16-bit value used in a compare operation. - @param ExchangeValue A 16-bit value used in an exchange operation. - - @return The original *Value before exchange. - -**/ -UINT16 -EFIAPI -InterlockedCompareExchange16 ( - IN OUT UINT16 *Value, - IN UINT16 CompareValue, - IN UINT16 ExchangeValue - ) -{ - ASSERT (Value != NULL); - return InternalSyncCompareExchange16 (Value, CompareValue, ExchangeValue); -} - -/** - 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. - - If Value is NULL, then ASSERT(). - - @param Value A pointer to the 32-bit value for the compare exchange - operation. - @param CompareValue A 32-bit value used in a compare operation. - @param ExchangeValue A 32-bit value used in an exchange operation. - - @return The original *Value before exchange. - -**/ -UINT32 -EFIAPI -InterlockedCompareExchange32 ( - IN OUT UINT32 *Value, - IN UINT32 CompareValue, - IN UINT32 ExchangeValue - ) -{ - ASSERT (Value != NULL); - return InternalSyncCompareExchange32 (Value, CompareValue, ExchangeValue); -} - -/** - 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. - - If Value is NULL, then ASSERT(). - - @param Value A pointer to the 64-bit value for the compare exchange - operation. - @param CompareValue A 64-bit value used in a compare operation. - @param ExchangeValue A 64-bit value used in an exchange operation. - - @return The original *Value before exchange. - -**/ -UINT64 -EFIAPI -InterlockedCompareExchange64 ( - IN OUT UINT64 *Value, - IN UINT64 CompareValue, - IN UINT64 ExchangeValue - ) -{ - ASSERT (Value != NULL); - return InternalSyncCompareExchange64 (Value, CompareValue, ExchangeValue); -} - -/** - Performs an atomic compare exchange operation on a pointer value. - - Performs an atomic compare exchange operation on the pointer value 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. - - If Value is NULL, then ASSERT(). - - @param Value A pointer to the pointer value for the compare exchange - operation. - @param CompareValue A pointer value used in a compare operation. - @param ExchangeValue A pointer value used in an exchange operation. - - @return The original *Value before exchange. -**/ -VOID * -EFIAPI -InterlockedCompareExchangePointer ( - IN OUT VOID **Value, - IN VOID *CompareValue, - IN VOID *ExchangeValue - ) -{ - UINT8 SizeOfValue; - - SizeOfValue = (UINT8) sizeof (*Value); - - switch (SizeOfValue) { - case sizeof (UINT32): - return (VOID*)(UINTN)InterlockedCompareExchange32 ( - (UINT32*)Value, - (UINT32)(UINTN)CompareValue, - (UINT32)(UINTN)ExchangeValue - ); - case sizeof (UINT64): - return (VOID*)(UINTN)InterlockedCompareExchange64 ( - (UINT64*)Value, - (UINT64)(UINTN)CompareValue, - (UINT64)(UINTN)ExchangeValue - ); - default: - ASSERT (FALSE); - return NULL; - } -} diff --git a/MdePkg/Library/BaseSynchronizationLib/X64/GccInline.c b/MdePkg/Library/BaseSynchronizationLib/X64/GccInline.c deleted file mode 100644 index 6347073fee..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/X64/GccInline.c +++ /dev/null @@ -1,220 +0,0 @@ -/** @file - GCC inline implementation of BaseSynchronizationLib processor specific functions. - - Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
- Portions copyright (c) 2008 - 2009, Apple Inc. 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 - 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 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 - ) -{ - UINT32 Result; - - __asm__ __volatile__ ( - "lock \n\t" - "incl %2 \n\t" - "mov %2, %%eax " - : "=a" (Result), // %0 - "=m" (*Value) // %1 - : "m" (*Value) // %2 - : "memory", - "cc" - ); - - return Result; -} - - -/** - 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 decremented 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 decremented value. - -**/ -UINT32 -EFIAPI -InternalSyncDecrement ( - IN volatile UINT32 *Value - ) -{ - UINT32 Result; - - __asm__ __volatile__ ( - "lock \n\t" - "decl %2 \n\t" - "mov %2, %%eax " - : "=a" (Result), // %0 - "=m" (*Value) // %1 - : "m" (*Value) // %2 - : "memory", - "cc" - ); - - return Result; -} - - -/** - Performs an atomic compare exchange operation on a 16-bit unsigned integer. - - Performs an atomic compare exchange operation on the 16-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 16-bit value for the compare exchange - operation. - @param CompareValue 16-bit value used in compare operation. - @param ExchangeValue 16-bit value used in exchange operation. - - @return The original *Value before exchange. - -**/ -UINT16 -EFIAPI -InternalSyncCompareExchange16 ( - IN OUT volatile UINT16 *Value, - IN UINT16 CompareValue, - IN UINT16 ExchangeValue - ) -{ - - - __asm__ __volatile__ ( - "lock \n\t" - "cmpxchgw %3, %1 " - : "=a" (CompareValue), - "=m" (*Value) - : "a" (CompareValue), - "r" (ExchangeValue), - "m" (*Value) - : "memory", - "cc" - ); - - return CompareValue; -} - - -/** - 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 OUT volatile UINT32 *Value, - IN UINT32 CompareValue, - IN UINT32 ExchangeValue - ) -{ - - - __asm__ __volatile__ ( - "lock \n\t" - "cmpxchgl %3, %1 " - : "=a" (CompareValue), // %0 - "=m" (*Value) // %1 - : "a" (CompareValue), // %2 - "r" (ExchangeValue), // %3 - "m" (*Value) - : "memory", - "cc" - ); - - return 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 OUT volatile UINT64 *Value, - IN UINT64 CompareValue, - IN UINT64 ExchangeValue - ) -{ - - __asm__ __volatile__ ( - "lock \n\t" - "cmpxchgq %3, %1 " - : "=a" (CompareValue), // %0 - "=m" (*Value) // %1 - : "a" (CompareValue), // %2 - "r" (ExchangeValue), // %3 - "m" (*Value) - : "memory", - "cc" - ); - - return CompareValue; -} - - diff --git a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.asm b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.asm deleted file mode 100644 index 79266624b1..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.asm +++ /dev/null @@ -1,42 +0,0 @@ -;------------------------------------------------------------------------------ -; -; Copyright (c) 2006, 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 -; 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. -; -; Module Name: -; -; InterlockedCompareExchange16.Asm -; -; Abstract: -; -; InterlockedCompareExchange16 function -; -; Notes: -; -;------------------------------------------------------------------------------ - - .code - -;------------------------------------------------------------------------------ -; UINT16 -; EFIAPI -; InterlockedCompareExchange16 ( -; IN UINT16 *Value, -; IN UINT16 CompareValue, -; IN UINT16 ExchangeValue -; ); -;------------------------------------------------------------------------------ -InternalSyncCompareExchange16 PROC - mov ax, dx - lock cmpxchg [rcx], r8w - ret -InternalSyncCompareExchange16 ENDP - - END diff --git a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.c b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.c deleted file mode 100644 index 76aa6fbc0e..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange16.c +++ /dev/null @@ -1,54 +0,0 @@ -/** @file - InterlockedCompareExchange16 function - - Copyright (c) 2006 - 2010, 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 - 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. - -**/ - -/** - Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics. -**/ - -__int16 _InterlockedCompareExchange16( - __int16 volatile * Destination, - __int16 Exchange, - __int16 Comperand -); - -#pragma intrinsic(_InterlockedCompareExchange16) - -/** - Performs an atomic compare exchange operation on a 16-bit unsigned integer. - - Performs an atomic compare exchange operation on the 16-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 16-bit value for the compare exchange - operation. - @param CompareValue 16-bit value used in compare operation. - @param ExchangeValue 16-bit value used in exchange operation. - - @return The original *Value before exchange. - -**/ -UINT16 -EFIAPI -InternalSyncCompareExchange16 ( - IN UINT16 *Value, - IN UINT16 CompareValue, - IN UINT16 ExchangeValue - ) -{ - return _InterlockedCompareExchange16 (Value, ExchangeValue, CompareValue); -} - diff --git a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.asm b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.asm deleted file mode 100644 index ee94ff7aef..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.asm +++ /dev/null @@ -1,41 +0,0 @@ -;------------------------------------------------------------------------------ -; -; Copyright (c) 2006, 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 -; 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. -; -; Module Name: -; -; InterlockedCompareExchange32.Asm -; -; Abstract: -; -; InterlockedCompareExchange32 function -; -; Notes: -; -;------------------------------------------------------------------------------ - - .code - -;------------------------------------------------------------------------------ -; UINT32 -; EFIAPI -; InterlockedCompareExchange32 ( -; IN UINT32 *Value, -; IN UINT32 CompareValue, -; IN UINT32 ExchangeValue -; ); -;------------------------------------------------------------------------------ -InternalSyncCompareExchange32 PROC - mov eax, edx - lock cmpxchg [rcx], r8d - ret -InternalSyncCompareExchange32 ENDP - - END diff --git a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.c b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.c deleted file mode 100644 index 9f8f3d351f..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange32.c +++ /dev/null @@ -1,54 +0,0 @@ -/** @file - InterlockedCompareExchange32 function - - Copyright (c) 2006 - 2010, 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 - 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. - -**/ - -/** - Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics. -**/ - -long _InterlockedCompareExchange( - long volatile * Destination, - long Exchange, - long Comperand -); - -#pragma intrinsic(_InterlockedCompareExchange) - -/** - 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 UINT32 *Value, - IN UINT32 CompareValue, - IN UINT32 ExchangeValue - ) -{ - return _InterlockedCompareExchange (Value, ExchangeValue, CompareValue); -} - diff --git a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.asm b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.asm deleted file mode 100644 index b5bcd258a5..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.asm +++ /dev/null @@ -1,41 +0,0 @@ -;------------------------------------------------------------------------------ -; -; Copyright (c) 2006, 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 -; 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. -; -; Module Name: -; -; InterlockedCompareExchange64.Asm -; -; Abstract: -; -; InterlockedCompareExchange64 function -; -; Notes: -; -;------------------------------------------------------------------------------ - - .code - -;------------------------------------------------------------------------------ -; UINT64 -; EFIAPI -; InterlockedCompareExchange64 ( -; IN UINT64 *Value, -; IN UINT64 CompareValue, -; IN UINT64 ExchangeValue -; ); -;------------------------------------------------------------------------------ -InternalSyncCompareExchange64 PROC - mov rax, rdx - lock cmpxchg [rcx], r8 - ret -InternalSyncCompareExchange64 ENDP - - END diff --git a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.c b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.c deleted file mode 100644 index 56805b3d2d..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedCompareExchange64.c +++ /dev/null @@ -1,53 +0,0 @@ -/** @file - InterlockedCompareExchange64 function - - Copyright (c) 2006 - 2010, 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 - 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. - -**/ - -/** - Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics. -**/ - -__int64 _InterlockedCompareExchange64( - __int64 volatile * Destination, - __int64 Exchange, - __int64 Comperand -); - -#pragma intrinsic(_InterlockedCompareExchange64) - -/** - 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 UINT64 *Value, - IN UINT64 CompareValue, - IN UINT64 ExchangeValue - ) -{ - return _InterlockedCompareExchange64 (Value, ExchangeValue, CompareValue); -} - diff --git a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.asm b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.asm deleted file mode 100644 index fdea0d4c18..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.asm +++ /dev/null @@ -1,39 +0,0 @@ -;------------------------------------------------------------------------------ -; -; Copyright (c) 2006, 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 -; 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. -; -; Module Name: -; -; InterlockedDecrement.Asm -; -; Abstract: -; -; InterlockedDecrement function -; -; Notes: -; -;------------------------------------------------------------------------------ - - .code - -;------------------------------------------------------------------------------ -; UINT32 -; EFIAPI -; InterlockedDecrement ( -; IN UINT32 *Value -; ); -;------------------------------------------------------------------------------ -InternalSyncDecrement PROC - lock dec dword ptr [rcx] - mov eax, [rcx] - ret -InternalSyncDecrement ENDP - - END diff --git a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.c b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.c deleted file mode 100644 index 65faf014e9..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedDecrement.c +++ /dev/null @@ -1,46 +0,0 @@ -/** @file - InterlockedDecrement function - - Copyright (c) 2006 - 2010, 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 - 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. - -**/ - -/** - Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics. -**/ - -long _InterlockedDecrement( - long * lpAddend -); - -#pragma intrinsic(_InterlockedDecrement) - -/** - 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 UINT32 *Value - ) -{ - return _InterlockedDecrement (Value); -} - diff --git a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.asm b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.asm deleted file mode 100644 index 65abcf7310..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.asm +++ /dev/null @@ -1,39 +0,0 @@ -;------------------------------------------------------------------------------ -; -; Copyright (c) 2006, 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 -; 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. -; -; Module Name: -; -; InterlockedIncrement.Asm -; -; Abstract: -; -; InterlockedIncrement function -; -; Notes: -; -;------------------------------------------------------------------------------ - - .code - -;------------------------------------------------------------------------------ -; UINT32 -; EFIAPI -; InterlockedIncrement ( -; IN UINT32 *Value -; ); -;------------------------------------------------------------------------------ -InternalSyncIncrement PROC - lock inc dword ptr [rcx] - mov eax, [rcx] - ret -InternalSyncIncrement ENDP - - END diff --git a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.c b/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.c deleted file mode 100644 index c0deb60c54..0000000000 --- a/MdePkg/Library/BaseSynchronizationLib/X64/InterlockedIncrement.c +++ /dev/null @@ -1,46 +0,0 @@ -/** @file - InterLockedIncrement function - - Copyright (c) 2006 - 2008, 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 - 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. - -**/ - -/** - Microsoft Visual Studio 7.1 Function Prototypes for I/O Intrinsics. -**/ - -long _InterlockedIncrement( - long * lpAddend -); - -#pragma intrinsic(_InterlockedIncrement) - -/** - 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 UINT32 *Value - ) -{ - return _InterlockedIncrement (Value); -} - -- cgit v1.2.3