From patchwork Wed Sep 21 08:28:22 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 76676 Delivered-To: patch@linaro.org Received: by 10.140.106.72 with SMTP id d66csp1924729qgf; Wed, 21 Sep 2016 01:28:40 -0700 (PDT) X-Received: by 10.98.134.201 with SMTP id x192mr53975685pfd.21.1474446520048; Wed, 21 Sep 2016 01:28:40 -0700 (PDT) Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id q7si6737058pay.70.2016.09.21.01.28.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 21 Sep 2016 01:28:40 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 946AC1A1EC5; Wed, 21 Sep 2016 01:28:39 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received: from mail-wm0-x234.google.com (mail-wm0-x234.google.com [IPv6:2a00:1450:400c:c09::234]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id D20041A1E90 for ; Wed, 21 Sep 2016 01:28:37 -0700 (PDT) Received: by mail-wm0-x234.google.com with SMTP id b130so77894684wmc.0 for ; Wed, 21 Sep 2016 01:28:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=7O7sj7x8V7i+zt8MsFhRI1dTA118bepKNBkjJomShIQ=; b=EzHAaXXVQcVkzU+2+NS3ep5GGfUEtYRGOf9rUeMT2VQDK/uGGC0m0oSr5n9Y2IEyc0 bO7ggTi+9l6jDVIldXC0+dtwmMiM54K0fHKXopPT6f/IAOryCMuFYVK7pPRqrejwgo/5 VS+JWCYm4aJmFELSJm192RuK2TLk3EfquslS0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=7O7sj7x8V7i+zt8MsFhRI1dTA118bepKNBkjJomShIQ=; b=ex+rEokq2Nks+RB3hYpk3Ks9NPp9zVFZvT1NsKR6kNuA3VWXbTYs5T0ktiRNbeasbn bl0mW/xDWIAydgx6yWiuq4es+ex8von8aDw2H1jQBnWer+XOmT4FdQJegAmyIKOfMtz4 SrhzUSXzrRIpZ7AGyDeFzPQu0yZdP1Jgc76bdXyJ1zN57fdTRhmPvi3lupC6ZbwOzJpT bHgi8mUo4sWxqEkCRdUW5HLDSmaOHn7an0VxD6gWyjnpmzQCjzF38Dp85eDI7X4V+Epv TSk/s2PqtEKazfbFmBL8mYg+o8BJbprnspzKK1Paba80YWtiTp7jopYbSjpf9MoW3090 vkFQ== X-Gm-Message-State: AE9vXwNQFcvrB+2s3JKms1j2uqTq/h6zPvNoKb7xe1eWZYT6YYOlQ0jSTAH5UOBQZDdXrFdG X-Received: by 10.28.167.65 with SMTP id q62mr2096933wme.62.1474446515607; Wed, 21 Sep 2016 01:28:35 -0700 (PDT) Received: from localhost.localdomain ([160.164.113.123]) by smtp.gmail.com with ESMTPSA id i78sm3250533wmc.13.2016.09.21.01.28.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 21 Sep 2016 01:28:34 -0700 (PDT) From: Ard Biesheuvel To: edk2-devel@lists.01.org, leif.lindholm@linaro.org Date: Wed, 21 Sep 2016 09:28:22 +0100 Message-Id: <1474446502-480-3-git-send-email-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1474446502-480-1-git-send-email-ard.biesheuvel@linaro.org> References: <1474446502-480-1-git-send-email-ard.biesheuvel@linaro.org> Subject: [edk2] [PATCH 2/2] ArmPkg: remove BaseMemoryLibStm X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Ard Biesheuvel MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" All users have moved to the generic or accelerated versions in MdePkg, so remove the obsolete BaseMemoryLibStm. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel --- ArmPkg/ArmPkg.dsc | 1 - ArmPkg/Library/BaseMemoryLibStm/AArch64/CopyMem.c | 146 ---------- ArmPkg/Library/BaseMemoryLibStm/AArch64/SetMem.c | 84 ------ ArmPkg/Library/BaseMemoryLibStm/Arm/CopyMem.S | 169 ----------- ArmPkg/Library/BaseMemoryLibStm/Arm/CopyMem.asm | 172 ------------ ArmPkg/Library/BaseMemoryLibStm/Arm/SetMem.S | 81 ------ ArmPkg/Library/BaseMemoryLibStm/Arm/SetMem.asm | 80 ------ ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf | 70 ----- ArmPkg/Library/BaseMemoryLibStm/CompareMemWrapper.c | 66 ----- ArmPkg/Library/BaseMemoryLibStm/CopyMem.c | 62 ----- ArmPkg/Library/BaseMemoryLibStm/CopyMemWrapper.c | 63 ----- ArmPkg/Library/BaseMemoryLibStm/IsZeroBufferWrapper.c | 54 ---- ArmPkg/Library/BaseMemoryLibStm/MemLibGeneric.c | 293 -------------------- ArmPkg/Library/BaseMemoryLibStm/MemLibGuid.c | 161 ----------- ArmPkg/Library/BaseMemoryLibStm/MemLibInternals.h | 251 ----------------- ArmPkg/Library/BaseMemoryLibStm/ScanMem16Wrapper.c | 67 ----- ArmPkg/Library/BaseMemoryLibStm/ScanMem32Wrapper.c | 66 ----- ArmPkg/Library/BaseMemoryLibStm/ScanMem64Wrapper.c | 67 ----- ArmPkg/Library/BaseMemoryLibStm/ScanMem8Wrapper.c | 99 ------- ArmPkg/Library/BaseMemoryLibStm/SetMem.c | 53 ---- ArmPkg/Library/BaseMemoryLibStm/SetMem16Wrapper.c | 64 ----- ArmPkg/Library/BaseMemoryLibStm/SetMem32Wrapper.c | 64 ----- ArmPkg/Library/BaseMemoryLibStm/SetMem64Wrapper.c | 64 ----- ArmPkg/Library/BaseMemoryLibStm/SetMemWrapper.c | 91 ------ ArmPkg/Library/BaseMemoryLibStm/ZeroMemWrapper.c | 52 ---- 25 files changed, 2440 deletions(-) -- 2.7.4 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/ArmPkg/ArmPkg.dsc b/ArmPkg/ArmPkg.dsc index 6a8ff7e621d7..ed7e482ddd62 100644 --- a/ArmPkg/ArmPkg.dsc +++ b/ArmPkg/ArmPkg.dsc @@ -106,7 +106,6 @@ [Components.common] ArmPkg/Library/ArmCacheMaintenanceLib/ArmCacheMaintenanceLib.inf ArmPkg/Library/ArmDisassemblerLib/ArmDisassemblerLib.inf ArmPkg/Library/ArmDmaLib/ArmDmaLib.inf - ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf ArmPkg/Library/BdsLib/BdsLib.inf ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf ArmPkg/Library/DebugAgentSymbolsBaseLib/DebugAgentSymbolsBaseLib.inf diff --git a/ArmPkg/Library/BaseMemoryLibStm/AArch64/CopyMem.c b/ArmPkg/Library/BaseMemoryLibStm/AArch64/CopyMem.c deleted file mode 100644 index 71ae02a03e73..000000000000 --- a/ArmPkg/Library/BaseMemoryLibStm/AArch64/CopyMem.c +++ /dev/null @@ -1,146 +0,0 @@ -/** @file - - Copyright (c) 2012-2013, ARM 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. - -**/ - -#include "MemLibInternals.h" - -/** - Copy Length bytes from Source to Destination. - - @param DestinationBuffer Target of copy - @param SourceBuffer Place to copy from - @param Length Number of bytes to copy - - @return Destination - -**/ -VOID * -EFIAPI -InternalMemCopyMem ( - OUT VOID *DestinationBuffer, - IN CONST VOID *SourceBuffer, - IN UINTN Length - ) -{ - // - // Declare the local variables that actually move the data elements as - // volatile to prevent the optimizer from replacing this function with - // the intrinsic memcpy() - // - volatile UINT8 *Destination8; - CONST UINT8 *Source8; - volatile UINT32 *Destination32; - CONST UINT32 *Source32; - volatile UINT64 *Destination64; - CONST UINT64 *Source64; - UINTN Alignment; - - if ((((UINTN)DestinationBuffer & 0x7) == 0) && (((UINTN)SourceBuffer & 0x7) == 0) && (Length >= 8)) { - if (SourceBuffer > DestinationBuffer) { - Destination64 = (UINT64*)DestinationBuffer; - Source64 = (CONST UINT64*)SourceBuffer; - while (Length >= 8) { - *(Destination64++) = *(Source64++); - Length -= 8; - } - - // Finish if there are still some bytes to copy - Destination8 = (UINT8*)Destination64; - Source8 = (CONST UINT8*)Source64; - while (Length-- != 0) { - *(Destination8++) = *(Source8++); - } - } else if (SourceBuffer < DestinationBuffer) { - Destination64 = (UINT64*)((UINTN)DestinationBuffer + Length); - Source64 = (CONST UINT64*)((UINTN)SourceBuffer + Length); - - // Destination64 and Source64 were aligned on a 64-bit boundary - // but if length is not a multiple of 8 bytes then they won't be - // anymore. - - Alignment = Length & 0x7; - if (Alignment != 0) { - Destination8 = (UINT8*)Destination64; - Source8 = (CONST UINT8*)Source64; - - while (Alignment-- != 0) { - *(--Destination8) = *(--Source8); - --Length; - } - Destination64 = (UINT64*)Destination8; - Source64 = (CONST UINT64*)Source8; - } - - while (Length > 0) { - *(--Destination64) = *(--Source64); - Length -= 8; - } - } - } else if ((((UINTN)DestinationBuffer & 0x3) == 0) && (((UINTN)SourceBuffer & 0x3) == 0) && (Length >= 4)) { - if (SourceBuffer > DestinationBuffer) { - Destination32 = (UINT32*)DestinationBuffer; - Source32 = (CONST UINT32*)SourceBuffer; - while (Length >= 4) { - *(Destination32++) = *(Source32++); - Length -= 4; - } - - // Finish if there are still some bytes to copy - Destination8 = (UINT8*)Destination32; - Source8 = (CONST UINT8*)Source32; - while (Length-- != 0) { - *(Destination8++) = *(Source8++); - } - } else if (SourceBuffer < DestinationBuffer) { - Destination32 = (UINT32*)((UINTN)DestinationBuffer + Length); - Source32 = (CONST UINT32*)((UINTN)SourceBuffer + Length); - - // Destination32 and Source32 were aligned on a 32-bit boundary - // but if length is not a multiple of 4 bytes then they won't be - // anymore. - - Alignment = Length & 0x3; - if (Alignment != 0) { - Destination8 = (UINT8*)Destination32; - Source8 = (CONST UINT8*)Source32; - - while (Alignment-- != 0) { - *(--Destination8) = *(--Source8); - --Length; - } - Destination32 = (UINT32*)Destination8; - Source32 = (CONST UINT32*)Source8; - } - - while (Length > 0) { - *(--Destination32) = *(--Source32); - Length -= 4; - } - } - } else { - if (SourceBuffer > DestinationBuffer) { - Destination8 = (UINT8*)DestinationBuffer; - Source8 = (CONST UINT8*)SourceBuffer; - while (Length-- != 0) { - *(Destination8++) = *(Source8++); - } - } else if (SourceBuffer < DestinationBuffer) { - Destination8 = (UINT8*)DestinationBuffer + Length; - Source8 = (CONST UINT8*)SourceBuffer + Length; - while (Length-- != 0) { - *(--Destination8) = *(--Source8); - } - } - } - return DestinationBuffer; -} diff --git a/ArmPkg/Library/BaseMemoryLibStm/AArch64/SetMem.c b/ArmPkg/Library/BaseMemoryLibStm/AArch64/SetMem.c deleted file mode 100644 index 368a819e599f..000000000000 --- a/ArmPkg/Library/BaseMemoryLibStm/AArch64/SetMem.c +++ /dev/null @@ -1,84 +0,0 @@ -/** @file - - Copyright (c) 2012-2013, ARM 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. - -**/ - -#include "MemLibInternals.h" - -/** - Set Buffer to Value for Size bytes. - - @param Buffer Memory to set. - @param Length Number of bytes to set - @param Value Value of the set operation. - - @return Buffer - -**/ -VOID * -EFIAPI -InternalMemSetMem ( - OUT VOID *Buffer, - IN UINTN Length, - IN UINT8 Value - ) -{ - // - // Declare the local variables that actually move the data elements as - // volatile to prevent the optimizer from replacing this function with - // the intrinsic memset() - // - volatile UINT8 *Pointer8; - volatile UINT32 *Pointer32; - volatile UINT64 *Pointer64; - UINT32 Value32; - UINT64 Value64; - - if ((((UINTN)Buffer & 0x7) == 0) && (Length >= 8)) { - // Generate the 64bit value - Value32 = (Value << 24) | (Value << 16) | (Value << 8) | Value; - Value64 = (((UINT64)Value32) << 32) | Value32; - - Pointer64 = (UINT64*)Buffer; - while (Length >= 8) { - *(Pointer64++) = Value64; - Length -= 8; - } - - // Finish with bytes if needed - Pointer8 = (UINT8*)Pointer64; - while (Length-- > 0) { - *(Pointer8++) = Value; - } - } else if ((((UINTN)Buffer & 0x3) == 0) && (Length >= 4)) { - // Generate the 32bit value - Value32 = (Value << 24) | (Value << 16) | (Value << 8) | Value; - - Pointer32 = (UINT32*)Buffer; - while (Length >= 4) { - *(Pointer32++) = Value32; - Length -= 4; - } - - // Finish with bytes if needed - Pointer8 = (UINT8*)Pointer32; - while (Length-- > 0) { - *(Pointer8++) = Value; - } - } else { - Pointer8 = (UINT8*)Buffer; - while (Length-- > 0) { - *(Pointer8++) = Value; - } - } - return Buffer; -} diff --git a/ArmPkg/Library/BaseMemoryLibStm/Arm/CopyMem.S b/ArmPkg/Library/BaseMemoryLibStm/Arm/CopyMem.S deleted file mode 100644 index f90589c22594..000000000000 --- a/ArmPkg/Library/BaseMemoryLibStm/Arm/CopyMem.S +++ /dev/null @@ -1,169 +0,0 @@ -#------------------------------------------------------------------------------ -# -# CopyMem() worker for ARM -# -# This file started out as C code that did 64 bit moves if the buffer was -# 32-bit aligned, else it does a byte copy. It also does a byte copy for -# any trailing bytes. It was updated to do 32-byte copies using stm/ldm. -# -# Copyright (c) 2008 - 2010, 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 - -/** - Copy Length bytes from Source to Destination. Overlap is OK. - - This implementation - - @param Destination Target of copy - @param Source Place to copy from - @param Length Number of bytes to copy - - @return Destination - - -VOID * -EFIAPI -InternalMemCopyMem ( - OUT VOID *DestinationBuffer, - IN CONST VOID *SourceBuffer, - IN UINTN Length - ) -**/ -ASM_FUNC(InternalMemCopyMem) - stmfd sp!, {r4-r11, lr} - // Save the input parameters in extra registers (r11 = destination, r14 = source, r12 = length) - mov r11, r0 - mov r10, r0 - mov r12, r2 - mov r14, r1 - -memcopy_check_overlapped: - cmp r11, r1 - // If (dest < source) - bcc memcopy_check_optim_default - // If (dest <= source). But with the previous condition -> If (dest == source) - bls memcopy_end - - // If (source + length < dest) - rsb r3, r1, r11 - cmp r12, r3 - bcc memcopy_check_optim_default - - // If (length == 0) - cmp r12, #0 - beq memcopy_end - - b memcopy_check_optim_overlap - -memcopy_check_optim_default: - // Check if we can use an optimized path ((length >= 32) && destination word-aligned && source word-aligned) for the memcopy (optimized path if r0 == 1) - tst r0, #0xF - movne r0, #0 - bne memcopy_default - tst r1, #0xF - movne r3, #0 - moveq r3, #1 - cmp r2, #31 - movls r0, #0 - andhi r0, r3, #1 - b memcopy_default - -memcopy_check_optim_overlap: - // r10 = dest_end, r14 = source_end - add r10, r11, r12 - add r14, r12, r1 - - // Are we in the optimized case ((length >= 32) && dest_end word-aligned && source_end word-aligned) - cmp r2, #31 - movls r0, #0 - movhi r0, #1 - tst r10, #0xF - movne r0, #0 - tst r14, #0xF - movne r0, #0 - b memcopy_overlapped - -memcopy_overlapped_non_optim: - // We read 1 byte from the end of the source buffer - sub r3, r14, #1 - sub r12, r12, #1 - ldrb r3, [r3, #0] - sub r2, r10, #1 - cmp r12, #0 - // We write 1 byte at the end of the dest buffer - sub r10, r10, #1 - sub r14, r14, #1 - strb r3, [r2, #0] - bne memcopy_overlapped_non_optim - b memcopy_end - -// r10 = dest_end, r14 = source_end -memcopy_overlapped: - // Are we in the optimized case ? - cmp r0, #0 - beq memcopy_overlapped_non_optim - - // Optimized Overlapped - Read 32 bytes - sub r14, r14, #32 - sub r12, r12, #32 - cmp r12, #31 - ldmia r14, {r2-r9} - - // If length is less than 32 then disable optim - movls r0, #0 - - cmp r12, #0 - - // Optimized Overlapped - Write 32 bytes - sub r10, r10, #32 - stmia r10, {r2-r9} - - // while (length != 0) - bne memcopy_overlapped - b memcopy_end - -memcopy_default_non_optim: - // Byte copy - ldrb r3, [r14], #1 - sub r12, r12, #1 - strb r3, [r10], #1 - -memcopy_default: - cmp r12, #0 - beq memcopy_end - -// r10 = dest, r14 = source -memcopy_default_loop: - cmp r0, #0 - beq memcopy_default_non_optim - - // Optimized memcopy - Read 32 Bytes - sub r12, r12, #32 - cmp r12, #31 - ldmia r14!, {r2-r9} - - // If length is less than 32 then disable optim - movls r0, #0 - - cmp r12, #0 - - // Optimized memcopy - Write 32 Bytes - stmia r10!, {r2-r9} - - // while (length != 0) - bne memcopy_default_loop - -memcopy_end: - mov r0, r11 - ldmfd sp!, {r4-r11, pc} - diff --git a/ArmPkg/Library/BaseMemoryLibStm/Arm/CopyMem.asm b/ArmPkg/Library/BaseMemoryLibStm/Arm/CopyMem.asm deleted file mode 100644 index 686253e5e5b3..000000000000 --- a/ArmPkg/Library/BaseMemoryLibStm/Arm/CopyMem.asm +++ /dev/null @@ -1,172 +0,0 @@ -;------------------------------------------------------------------------------ -; -; CopyMem() worker for ARM -; -; This file started out as C code that did 64 bit moves if the buffer was -; 32-bit aligned, else it does a byte copy. It also does a byte copy for -; any trailing bytes. It was updated to do 32-byte copies using stm/ldm. -; -; Copyright (c) 2008 - 2010, 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. -; -;------------------------------------------------------------------------------ - -/** - Copy Length bytes from Source to Destination. Overlap is OK. - - This implementation - - @param Destination Target of copy - @param Source Place to copy from - @param Length Number of bytes to copy - - @return Destination - - -VOID * -EFIAPI -InternalMemCopyMem ( - OUT VOID *DestinationBuffer, - IN CONST VOID *SourceBuffer, - IN UINTN Length - ) -**/ - - INCLUDE AsmMacroExport.inc - - RVCT_ASM_EXPORT InternalMemCopyMem - stmfd sp!, {r4-r11, lr} - // Save the input parameters in extra registers (r11 = destination, r14 = source, r12 = length) - mov r11, r0 - mov r10, r0 - mov r12, r2 - mov r14, r1 - -memcopy_check_overlapped - cmp r11, r1 - // If (dest < source) - bcc memcopy_check_optim_default - // If (dest <= source). But with the previous condition -> If (dest == source) - bls memcopy_end - - // If (source + length < dest) - rsb r3, r1, r11 - cmp r12, r3 - bcc memcopy_check_optim_default - - // If (length == 0) - cmp r12, #0 - beq memcopy_end - - b memcopy_check_optim_overlap - -memcopy_check_optim_default - // Check if we can use an optimized path ((length >= 32) && destination word-aligned && source word-aligned) for the memcopy (optimized path if r0 == 1) - tst r0, #0xF - movne r0, #0 - bne memcopy_default - tst r1, #0xF - movne r3, #0 - moveq r3, #1 - cmp r2, #31 - movls r0, #0 - andhi r0, r3, #1 - b memcopy_default - -memcopy_check_optim_overlap - // r10 = dest_end, r14 = source_end - add r10, r11, r12 - add r14, r12, r1 - - // Are we in the optimized case ((length >= 32) && dest_end word-aligned && source_end word-aligned) - cmp r2, #31 - movls r0, #0 - movhi r0, #1 - tst r10, #0xF - movne r0, #0 - tst r14, #0xF - movne r0, #0 - b memcopy_overlapped - -memcopy_overlapped_non_optim - // We read 1 byte from the end of the source buffer - sub r3, r14, #1 - sub r12, r12, #1 - ldrb r3, [r3, #0] - sub r2, r10, #1 - cmp r12, #0 - // We write 1 byte at the end of the dest buffer - sub r10, r10, #1 - sub r14, r14, #1 - strb r3, [r2, #0] - bne memcopy_overlapped_non_optim - b memcopy_end - -// r10 = dest_end, r14 = source_end -memcopy_overlapped - // Are we in the optimized case ? - cmp r0, #0 - beq memcopy_overlapped_non_optim - - // Optimized Overlapped - Read 32 bytes - sub r14, r14, #32 - sub r12, r12, #32 - cmp r12, #31 - ldmia r14, {r2-r9} - - // If length is less than 32 then disable optim - movls r0, #0 - - cmp r12, #0 - - // Optimized Overlapped - Write 32 bytes - sub r10, r10, #32 - stmia r10, {r2-r9} - - // while (length != 0) - bne memcopy_overlapped - b memcopy_end - -memcopy_default_non_optim - // Byte copy - ldrb r3, [r14], #1 - sub r12, r12, #1 - strb r3, [r10], #1 - -memcopy_default - cmp r12, #0 - beq memcopy_end - -// r10 = dest, r14 = source -memcopy_default_loop - cmp r0, #0 - beq memcopy_default_non_optim - - // Optimized memcopy - Read 32 Bytes - sub r12, r12, #32 - cmp r12, #31 - ldmia r14!, {r2-r9} - - // If length is less than 32 then disable optim - movls r0, #0 - - cmp r12, #0 - - // Optimized memcopy - Write 32 Bytes - stmia r10!, {r2-r9} - - // while (length != 0) - bne memcopy_default_loop - -memcopy_end - mov r0, r11 - ldmfd sp!, {r4-r11, pc} - - END - diff --git a/ArmPkg/Library/BaseMemoryLibStm/Arm/SetMem.S b/ArmPkg/Library/BaseMemoryLibStm/Arm/SetMem.S deleted file mode 100644 index 242de95f74d1..000000000000 --- a/ArmPkg/Library/BaseMemoryLibStm/Arm/SetMem.S +++ /dev/null @@ -1,81 +0,0 @@ -#------------------------------------------------------------------------------ -# -# SemMem() worker for ARM -# -# This file started out as C code that did 64 bit moves if the buffer was -# 32-bit aligned, else it does a byte copy. It also does a byte copy for -# any trailing bytes. It was updated to do 32-byte at a time. -# -# Copyright (c) 2008 - 2010, 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 - -/** - Set Buffer to Value for Size bytes. - - @param Buffer Memory to set. - @param Length Number of bytes to set - @param Value Value of the set operation. - - @return Buffer - -VOID * -EFIAPI -InternalMemSetMem ( - OUT VOID *Buffer, - IN UINTN Length, - IN UINT8 Value - ) -**/ - -.syntax unified - -ASM_FUNC(InternalMemSetMem) - stmfd sp!, {r4-r11, lr} - tst r0, #3 - movne r3, #0 - moveq r3, #1 - cmp r1, #31 - movls lr, #0 - andhi lr, r3, #1 - cmp lr, #0 - mov r12, r0 - bne L31 -L32: - mov r3, #0 - b L43 -L31: - and r4, r2, #0xff - orr r4, r4, r4, LSL #8 - orr r4, r4, r4, LSL #16 - mov r5, r4 - mov r6, r4 - mov r7, r4 - mov r8, r4 - mov r9, r4 - mov r10, r4 - mov r11, r4 - b L32 -L34: - cmp lr, #0 - strbeq r2, [r12], #1 - subeq r1, r1, #1 - beq L43 - sub r1, r1, #32 - cmp r1, #31 - movls lr, r3 - stmia r12!, {r4-r11} -L43: - cmp r1, #0 - bne L34 - ldmfd sp!, {r4-r11, pc} - diff --git a/ArmPkg/Library/BaseMemoryLibStm/Arm/SetMem.asm b/ArmPkg/Library/BaseMemoryLibStm/Arm/SetMem.asm deleted file mode 100644 index 1d5191f78fe3..000000000000 --- a/ArmPkg/Library/BaseMemoryLibStm/Arm/SetMem.asm +++ /dev/null @@ -1,80 +0,0 @@ -;------------------------------------------------------------------------------ -; -; SetMem() worker for ARM -; -; This file started out as C code that did 64 bit moves if the buffer was -; 32-bit aligned, else it does a byte copy. It also does a byte copy for -; any trailing bytes. It was updated to do 32-byte at a time. -; -; Copyright (c) 2008 - 2010, 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. -; - -/** - Set Buffer to Value for Size bytes. - - @param Buffer Memory to set. - @param Length Number of bytes to set - @param Value Value of the set operation. - - @return Buffer - -VOID * -EFIAPI -InternalMemSetMem ( - OUT VOID *Buffer, - IN UINTN Length, - IN UINT8 Value - ) -**/ - - - INCLUDE AsmMacroExport.inc - - RVCT_ASM_EXPORT InternalMemSetMem - stmfd sp!, {r4-r11, lr} - tst r0, #3 - movne r3, #0 - moveq r3, #1 - cmp r1, #31 - movls lr, #0 - andhi lr, r3, #1 - cmp lr, #0 - mov r12, r0 - bne L31 -L32 - mov r3, #0 - b L43 -L31 - and r4, r2, #0xff - orr r4, r4, r4, LSL #8 - orr r4, r4, r4, LSL #16 - mov r5, r4 - mov r6, r4 - mov r7, r4 - mov r8, r4 - mov r9, r4 - mov r10, r4 - mov r11, r4 - b L32 -L34 - cmp lr, #0 - streqb r2, [r12], #1 - subeq r1, r1, #1 - beq L43 - sub r1, r1, #32 - cmp r1, #31 - movls lr, r3 - stmia r12!, {r4-r11} -L43 - cmp r1, #0 - bne L34 - ldmfd sp!, {r4-r11, pc} - - END diff --git a/ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf b/ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf deleted file mode 100644 index 30e2459bfd1e..000000000000 --- a/ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf +++ /dev/null @@ -1,70 +0,0 @@ -## @file -# Instance of Base Memory Library with some ARM ldm/stm assembly. -# -# This is a copy of the MdePkg BaseMemoryLib with the CopyMem and -# SetMem worker functions replaced with assembler that uses -# ldm/stm. -# -# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.
-# Portions copyright (c) 2010, Apple Inc. All rights reserved.
-# Portions copyright (c) 2011 - 2013, ARM 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. -# -# -## - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = BaseMemoryLibStm - FILE_GUID = 4D466AF3-2380-448D-A337-E4033F29F3F7 - MODULE_TYPE = BASE - VERSION_STRING = 1.0 - LIBRARY_CLASS = BaseMemoryLib - - -# -# VALID_ARCHITECTURES = ARM AARCH64 -# - - -[Sources.Common] - ScanMem64Wrapper.c - ScanMem32Wrapper.c - ScanMem16Wrapper.c - ScanMem8Wrapper.c - ZeroMemWrapper.c - CompareMemWrapper.c - SetMem64Wrapper.c - SetMem32Wrapper.c - SetMem16Wrapper.c - SetMemWrapper.c - CopyMemWrapper.c - IsZeroBufferWrapper.c - MemLibGeneric.c - MemLibGuid.c - MemLibInternals.h - -[Sources.ARM] - Arm/CopyMem.asm - Arm/CopyMem.S - Arm/SetMem.asm - Arm/SetMem.S - -[Sources.AARCH64] - AArch64/CopyMem.c - AArch64/SetMem.c - -[Packages] - MdePkg/MdePkg.dec - ArmPkg/ArmPkg.dec - -[LibraryClasses] - DebugLib - BaseLib - diff --git a/ArmPkg/Library/BaseMemoryLibStm/CompareMemWrapper.c b/ArmPkg/Library/BaseMemoryLibStm/CompareMemWrapper.c deleted file mode 100644 index c83988f59ecb..000000000000 --- a/ArmPkg/Library/BaseMemoryLibStm/CompareMemWrapper.c +++ /dev/null @@ -1,66 +0,0 @@ -/** @file - CompareMem() implementation. - - The following BaseMemoryLib instances contain the same copy of this file: - BaseMemoryLib - BaseMemoryLibMmx - BaseMemoryLibSse2 - BaseMemoryLibRepStr - BaseMemoryLibOptDxe - BaseMemoryLibOptPei - PeiMemoryLib - UefiMemoryLib - -Copyright (c) 2006 - 2009, 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 "MemLibInternals.h" - -/** - Compares the contents of two buffers. - - This function compares Length bytes of SourceBuffer to Length bytes of DestinationBuffer. - If all Length bytes of the two buffers are identical, then 0 is returned. Otherwise, the - value returned is the first mismatched byte in SourceBuffer subtracted from the first - mismatched byte in DestinationBuffer. - - If Length > 0 and DestinationBuffer is NULL, then ASSERT(). - If Length > 0 and SourceBuffer is NULL, then ASSERT(). - If Length is greater than (MAX_ADDRESS - DestinationBuffer + 1), then ASSERT(). - If Length is greater than (MAX_ADDRESS - SourceBuffer + 1), then ASSERT(). - - @param DestinationBuffer Pointer to the destination buffer to compare. - @param SourceBuffer Pointer to the source buffer to compare. - @param Length Number of bytes to compare. - - @return 0 All Length bytes of the two buffers are identical. - @retval Non-zero The first mismatched byte in SourceBuffer subtracted from the first - mismatched byte in DestinationBuffer. - -**/ -INTN -EFIAPI -CompareMem ( - IN CONST VOID *DestinationBuffer, - IN CONST VOID *SourceBuffer, - IN UINTN Length - ) -{ - if (Length == 0 || DestinationBuffer == SourceBuffer) { - return 0; - } - ASSERT (DestinationBuffer != NULL); - ASSERT (SourceBuffer != NULL); - ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)DestinationBuffer)); - ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)SourceBuffer)); - - return InternalMemCompareMem (DestinationBuffer, SourceBuffer, Length); -} diff --git a/ArmPkg/Library/BaseMemoryLibStm/CopyMem.c b/ArmPkg/Library/BaseMemoryLibStm/CopyMem.c deleted file mode 100644 index b30faed5607d..000000000000 --- a/ArmPkg/Library/BaseMemoryLibStm/CopyMem.c +++ /dev/null @@ -1,62 +0,0 @@ -/** @file - Implementation of the InternalMemCopyMem routine. This function is broken - out into its own source file so that it can be excluded from a build for a - particular platform easily if an optimized version is desired. - - 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. - -**/ - - - - -#include "MemLibInternals.h" - -/** - Copy Length bytes from Source to Destination. - - @param DestinationBuffer Target of copy - @param SourceBuffer Place to copy from - @param Length Number of bytes to copy - - @return Destination - -**/ -VOID * -EFIAPI -InternalMemCopyMem ( - OUT VOID *DestinationBuffer, - IN CONST VOID *SourceBuffer, - IN UINTN Length - ) -{ - // - // Declare the local variables that actually move the data elements as - // volatile to prevent the optimizer from replacing this function with - // the intrinsic memcpy() - // - volatile UINT8 *Destination8; - CONST UINT8 *Source8; - - if (SourceBuffer > DestinationBuffer) { - Destination8 = (UINT8*)DestinationBuffer; - Source8 = (CONST UINT8*)SourceBuffer; - while (Length-- != 0) { - *(Destination8++) = *(Source8++); - } - } else if (SourceBuffer < DestinationBuffer) { - Destination8 = (UINT8*)DestinationBuffer + Length; - Source8 = (CONST UINT8*)SourceBuffer + Length; - while (Length-- != 0) { - *(--Destination8) = *(--Source8); - } - } - return DestinationBuffer; -} diff --git a/ArmPkg/Library/BaseMemoryLibStm/CopyMemWrapper.c b/ArmPkg/Library/BaseMemoryLibStm/CopyMemWrapper.c deleted file mode 100644 index 2adfb3114910..000000000000 --- a/ArmPkg/Library/BaseMemoryLibStm/CopyMemWrapper.c +++ /dev/null @@ -1,63 +0,0 @@ -/** @file - CopyMem() implementation. - - The following BaseMemoryLib instances contain the same copy of this file: - - BaseMemoryLib - BaseMemoryLibMmx - BaseMemoryLibSse2 - BaseMemoryLibRepStr - BaseMemoryLibOptDxe - BaseMemoryLibOptPei - PeiMemoryLib - UefiMemoryLib - - Copyright (c) 2006 - 2009, 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 "MemLibInternals.h" - -/** - Copies a source buffer to a destination buffer, and returns the destination buffer. - - This function copies Length bytes from SourceBuffer to DestinationBuffer, and returns - DestinationBuffer. The implementation must be reentrant, and it must handle the case - where SourceBuffer overlaps DestinationBuffer. - - If Length is greater than (MAX_ADDRESS - DestinationBuffer + 1), then ASSERT(). - If Length is greater than (MAX_ADDRESS - SourceBuffer + 1), then ASSERT(). - - @param DestinationBuffer Pointer to the destination buffer of the memory copy. - @param SourceBuffer Pointer to the source buffer of the memory copy. - @param Length Number of bytes to copy from SourceBuffer to DestinationBuffer. - - @return DestinationBuffer. - -**/ -VOID * -EFIAPI -CopyMem ( - OUT VOID *DestinationBuffer, - IN CONST VOID *SourceBuffer, - IN UINTN Length - ) -{ - if (Length == 0) { - return DestinationBuffer; - } - ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)DestinationBuffer)); - ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)SourceBuffer)); - - if (DestinationBuffer == SourceBuffer) { - return DestinationBuffer; - } - return InternalMemCopyMem (DestinationBuffer, SourceBuffer, Length); -} diff --git a/ArmPkg/Library/BaseMemoryLibStm/IsZeroBufferWrapper.c b/ArmPkg/Library/BaseMemoryLibStm/IsZeroBufferWrapper.c deleted file mode 100644 index c42c1aa509b3..000000000000 --- a/ArmPkg/Library/BaseMemoryLibStm/IsZeroBufferWrapper.c +++ /dev/null @@ -1,54 +0,0 @@ -/** @file - Implementation of IsZeroBuffer function. - - The following BaseMemoryLib instances contain the same copy of this file: - - BaseMemoryLib - BaseMemoryLibMmx - BaseMemoryLibSse2 - BaseMemoryLibRepStr - BaseMemoryLibOptDxe - BaseMemoryLibOptPei - PeiMemoryLib - UefiMemoryLib - - Copyright (c) 2016, Intel Corporation. All rights reserved.
- This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - 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 "MemLibInternals.h" - -/** - Checks if the contents of a buffer are all zeros. - - This function checks whether the contents of a buffer are all zeros. If the - contents are all zeros, return TRUE. Otherwise, return FALSE. - - If Length > 0 and Buffer is NULL, then ASSERT(). - If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). - - @param Buffer The pointer to the buffer to be checked. - @param Length The size of the buffer (in bytes) to be checked. - - @retval TRUE Contents of the buffer are all zeros. - @retval FALSE Contents of the buffer are not all zeros. - -**/ -BOOLEAN -EFIAPI -IsZeroBuffer ( - IN CONST VOID *Buffer, - IN UINTN Length - ) -{ - ASSERT (!(Buffer == NULL && Length > 0)); - ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)Buffer)); - return InternalMemIsZeroBuffer (Buffer, Length); -} diff --git a/ArmPkg/Library/BaseMemoryLibStm/MemLibGeneric.c b/ArmPkg/Library/BaseMemoryLibStm/MemLibGeneric.c deleted file mode 100644 index 43fbcb6b208f..000000000000 --- a/ArmPkg/Library/BaseMemoryLibStm/MemLibGeneric.c +++ /dev/null @@ -1,293 +0,0 @@ -/** @file - Architecture Independent Base Memory Library Implementation. - - The following BaseMemoryLib instances contain the same copy of this file: - BaseMemoryLib - PeiMemoryLib - UefiMemoryLib - - Copyright (c) 2006 - 2009, 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 "MemLibInternals.h" - -/** - Fills a target buffer with a 16-bit value, and returns the target buffer. - - @param Buffer Pointer to the target buffer to fill. - @param Length Count of 16-bit value to fill. - @param Value Value with which to fill Length bytes of Buffer. - - @return Buffer - -**/ -VOID * -EFIAPI -InternalMemSetMem16 ( - OUT VOID *Buffer, - IN UINTN Length, - IN UINT16 Value - ) -{ - do { - ((UINT16*)Buffer)[--Length] = Value; - } while (Length != 0); - return Buffer; -} - -/** - Fills a target buffer with a 32-bit value, and returns the target buffer. - - @param Buffer Pointer to the target buffer to fill. - @param Length Count of 32-bit value to fill. - @param Value Value with which to fill Length bytes of Buffer. - - @return Buffer - -**/ -VOID * -EFIAPI -InternalMemSetMem32 ( - OUT VOID *Buffer, - IN UINTN Length, - IN UINT32 Value - ) -{ - do { - ((UINT32*)Buffer)[--Length] = Value; - } while (Length != 0); - return Buffer; -} - -/** - Fills a target buffer with a 64-bit value, and returns the target buffer. - - @param Buffer Pointer to the target buffer to fill. - @param Length Count of 64-bit value to fill. - @param Value Value with which to fill Length bytes of Buffer. - - @return Buffer - -**/ -VOID * -EFIAPI -InternalMemSetMem64 ( - OUT VOID *Buffer, - IN UINTN Length, - IN UINT64 Value - ) -{ - do { - ((UINT64*)Buffer)[--Length] = Value; - } while (Length != 0); - return Buffer; -} - -/** - Set Buffer to 0 for Size bytes. - - @param Buffer Memory to set. - @param Length Number of bytes to set - - @return Buffer - -**/ -VOID * -EFIAPI -InternalMemZeroMem ( - OUT VOID *Buffer, - IN UINTN Length - ) -{ - return InternalMemSetMem (Buffer, Length, 0); -} - -/** - Compares two memory buffers of a given length. - - @param DestinationBuffer First memory buffer - @param SourceBuffer Second memory buffer - @param Length Length of DestinationBuffer and SourceBuffer memory - regions to compare. Must be non-zero. - - @return 0 All Length bytes of the two buffers are identical. - @retval Non-zero The first mismatched byte in SourceBuffer subtracted from the first - mismatched byte in DestinationBuffer. - -**/ -INTN -EFIAPI -InternalMemCompareMem ( - IN CONST VOID *DestinationBuffer, - IN CONST VOID *SourceBuffer, - IN UINTN Length - ) -{ - while ((--Length != 0) && - (*(INT8*)DestinationBuffer == *(INT8*)SourceBuffer)) { - DestinationBuffer = (INT8*)DestinationBuffer + 1; - SourceBuffer = (INT8*)SourceBuffer + 1; - } - return (INTN)*(UINT8*)DestinationBuffer - (INTN)*(UINT8*)SourceBuffer; -} - -/** - Scans a target buffer for an 8-bit value, and returns a pointer to the - matching 8-bit value in the target buffer. - - @param Buffer Pointer to the target buffer to scan. - @param Length Count of 8-bit value to scan. Must be non-zero. - @param Value Value to search for in the target buffer. - - @return Pointer to the first occurrence or NULL if not found. - -**/ -CONST VOID * -EFIAPI -InternalMemScanMem8 ( - IN CONST VOID *Buffer, - IN UINTN Length, - IN UINT8 Value - ) -{ - CONST UINT8 *Pointer; - - Pointer = (CONST UINT8*)Buffer; - do { - if (*Pointer == Value) { - return Pointer; - } - Pointer++; - } while (--Length != 0); - return NULL; -} - -/** - Scans a target buffer for a 16-bit value, and returns a pointer to the - matching 16-bit value in the target buffer. - - @param Buffer Pointer to the target buffer to scan. - @param Length Count of 16-bit value to scan. Must be non-zero. - @param Value Value to search for in the target buffer. - - @return Pointer to the first occurrence or NULL if not found. - -**/ -CONST VOID * -EFIAPI -InternalMemScanMem16 ( - IN CONST VOID *Buffer, - IN UINTN Length, - IN UINT16 Value - ) -{ - CONST UINT16 *Pointer; - - Pointer = (CONST UINT16*)Buffer; - do { - if (*Pointer == Value) { - return Pointer; - } - Pointer++; - } while (--Length != 0); - return NULL; -} - -/** - Scans a target buffer for a 32-bit value, and returns a pointer to the - matching 32-bit value in the target buffer. - - @param Buffer Pointer to the target buffer to scan. - @param Length Count of 32-bit value to scan. Must be non-zero. - @param Value Value to search for in the target buffer. - - @return Pointer to the first occurrence or NULL if not found. - -**/ -CONST VOID * -EFIAPI -InternalMemScanMem32 ( - IN CONST VOID *Buffer, - IN UINTN Length, - IN UINT32 Value - ) -{ - CONST UINT32 *Pointer; - - Pointer = (CONST UINT32*)Buffer; - do { - if (*Pointer == Value) { - return Pointer; - } - Pointer++; - } while (--Length != 0); - return NULL; -} - -/** - Scans a target buffer for a 64-bit value, and returns a pointer to the - matching 64-bit value in the target buffer. - - @param Buffer Pointer to the target buffer to scan. - @param Length Count of 64-bit value to scan. Must be non-zero. - @param Value Value to search for in the target buffer. - - @return Pointer to the first occurrence or NULL if not found. - -**/ -CONST VOID * -EFIAPI -InternalMemScanMem64 ( - IN CONST VOID *Buffer, - IN UINTN Length, - IN UINT64 Value - ) -{ - CONST UINT64 *Pointer; - - Pointer = (CONST UINT64*)Buffer; - do { - if (*Pointer == Value) { - return Pointer; - } - Pointer++; - } while (--Length != 0); - return NULL; -} - -/** - Checks whether the contents of a buffer are all zeros. - - @param Buffer The pointer to the buffer to be checked. - @param Length The size of the buffer (in bytes) to be checked. - - @retval TRUE Contents of the buffer are all zeros. - @retval FALSE Contents of the buffer are not all zeros. - -**/ -BOOLEAN -EFIAPI -InternalMemIsZeroBuffer ( - IN CONST VOID *Buffer, - IN UINTN Length - ) -{ - CONST UINT8 *BufferData; - UINTN Index; - - BufferData = Buffer; - for (Index = 0; Index < Length; Index++) { - if (BufferData[Index] != 0) { - return FALSE; - } - } - return TRUE; -} diff --git a/ArmPkg/Library/BaseMemoryLibStm/MemLibGuid.c b/ArmPkg/Library/BaseMemoryLibStm/MemLibGuid.c deleted file mode 100644 index 36d42d71d79a..000000000000 --- a/ArmPkg/Library/BaseMemoryLibStm/MemLibGuid.c +++ /dev/null @@ -1,161 +0,0 @@ -/** @file - Implementation of GUID functions. - - The following BaseMemoryLib instances contain the same copy of this file: - - BaseMemoryLib - BaseMemoryLibMmx - BaseMemoryLibSse2 - BaseMemoryLibRepStr - BaseMemoryLibOptDxe - BaseMemoryLibOptPei - PeiMemoryLib - UefiMemoryLib - - Copyright (c) 2006 - 2009, 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 "MemLibInternals.h" - -/** - Copies a source GUID to a destination GUID. - - This function copies the contents of the 128-bit GUID specified by SourceGuid to - DestinationGuid, and returns DestinationGuid. - - If DestinationGuid is NULL, then ASSERT(). - If SourceGuid is NULL, then ASSERT(). - - @param DestinationGuid Pointer to the destination GUID. - @param SourceGuid Pointer to the source GUID. - - @return DestinationGuid. - -**/ -GUID * -EFIAPI -CopyGuid ( - OUT GUID *DestinationGuid, - IN CONST GUID *SourceGuid - ) -{ - WriteUnaligned64 ( - (UINT64*)DestinationGuid, - ReadUnaligned64 ((CONST UINT64*)SourceGuid) - ); - WriteUnaligned64 ( - (UINT64*)DestinationGuid + 1, - ReadUnaligned64 ((CONST UINT64*)SourceGuid + 1) - ); - return DestinationGuid; -} - -/** - Compares two GUIDs. - - This function compares Guid1 to Guid2. If the GUIDs are identical then TRUE is returned. - If there are any bit differences in the two GUIDs, then FALSE is returned. - - If Guid1 is NULL, then ASSERT(). - If Guid2 is NULL, then ASSERT(). - - @param Guid1 A pointer to a 128 bit GUID. - @param Guid2 A pointer to a 128 bit GUID. - - @retval TRUE Guid1 and Guid2 are identical. - @retval FALSE Guid1 and Guid2 are not identical. - -**/ -BOOLEAN -EFIAPI -CompareGuid ( - IN CONST GUID *Guid1, - IN CONST GUID *Guid2 - ) -{ - return (CompareMem(Guid1, Guid2, sizeof(GUID)) == 0) ? TRUE : FALSE; -} - -/** - Scans a target buffer for a GUID, and returns a pointer to the matching GUID - in the target buffer. - - This function searches the target buffer specified by Buffer and Length from - the lowest address to the highest address at 128-bit increments for the 128-bit - GUID value that matches Guid. If a match is found, then a pointer to the matching - GUID in the target buffer is returned. If no match is found, then NULL is returned. - If Length is 0, then NULL is returned. - - If Length > 0 and Buffer is NULL, then ASSERT(). - If Buffer is not aligned on a 32-bit boundary, then ASSERT(). - If Length is not aligned on a 128-bit boundary, then ASSERT(). - If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). - - @param Buffer Pointer to the target buffer to scan. - @param Length Number of bytes in Buffer to scan. - @param Guid Value to search for in the target buffer. - - @return A pointer to the matching Guid in the target buffer or NULL otherwise. - -**/ -VOID * -EFIAPI -ScanGuid ( - IN CONST VOID *Buffer, - IN UINTN Length, - IN CONST GUID *Guid - ) -{ - CONST GUID *GuidPtr; - - ASSERT (((UINTN)Buffer & (sizeof (Guid->Data1) - 1)) == 0); - ASSERT (Length <= (MAX_ADDRESS - (UINTN)Buffer + 1)); - ASSERT ((Length & (sizeof (*GuidPtr) - 1)) == 0); - - GuidPtr = (GUID*)Buffer; - Buffer = GuidPtr + Length / sizeof (*GuidPtr); - while (GuidPtr < (CONST GUID*)Buffer) { - if (CompareGuid (GuidPtr, Guid)) { - return (VOID*)GuidPtr; - } - GuidPtr++; - } - return NULL; -} - -/** - Checks if the given GUID is a zero GUID. - - This function checks whether the given GUID is a zero GUID. If the GUID is - identical to a zero GUID then TRUE is returned. Otherwise, FALSE is returned. - - If Guid is NULL, then ASSERT(). - - @param Guid The pointer to a 128 bit GUID. - - @retval TRUE Guid is a zero GUID. - @retval FALSE Guid is not a zero GUID. - -**/ -BOOLEAN -EFIAPI -IsZeroGuid ( - IN CONST GUID *Guid - ) -{ - UINT64 LowPartOfGuid; - UINT64 HighPartOfGuid; - - LowPartOfGuid = ReadUnaligned64 ((CONST UINT64*) Guid); - HighPartOfGuid = ReadUnaligned64 ((CONST UINT64*) Guid + 1); - - return (BOOLEAN) (LowPartOfGuid == 0 && HighPartOfGuid == 0); -} diff --git a/ArmPkg/Library/BaseMemoryLibStm/MemLibInternals.h b/ArmPkg/Library/BaseMemoryLibStm/MemLibInternals.h deleted file mode 100644 index f7b44f527059..000000000000 --- a/ArmPkg/Library/BaseMemoryLibStm/MemLibInternals.h +++ /dev/null @@ -1,251 +0,0 @@ -/** @file - Declaration of internal functions for Base Memory Library. - - The following BaseMemoryLib instances contain the same copy of this file: - BaseMemoryLib - BaseMemoryLibMmx - BaseMemoryLibSse2 - BaseMemoryLibRepStr - BaseMemoryLibOptDxe - BaseMemoryLibOptPei - - Copyright (c) 2006 - 2009, 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 __MEM_LIB_INTERNALS__ -#define __MEM_LIB_INTERNALS__ - -#include -#include -#include -#include - -/** - Copy Length bytes from Source to Destination. - - @param DestinationBuffer Target of copy - @param SourceBuffer Place to copy from - @param Length Number of bytes to copy - - @return Destination - -**/ -VOID * -EFIAPI -InternalMemCopyMem ( - OUT VOID *DestinationBuffer, - IN CONST VOID *SourceBuffer, - IN UINTN Length - ); - -/** - Set Buffer to Value for Size bytes. - - @param Buffer Memory to set. - @param Length Number of bytes to set - @param Value Value of the set operation. - - @return Buffer - -**/ -VOID * -EFIAPI -InternalMemSetMem ( - OUT VOID *Buffer, - IN UINTN Length, - IN UINT8 Value - ); - -/** - Fills a target buffer with a 16-bit value, and returns the target buffer. - - @param Buffer Pointer to the target buffer to fill. - @param Length Count of 16-bit value to fill. - @param Value Value with which to fill Length bytes of Buffer. - - @return Buffer - -**/ -VOID * -EFIAPI -InternalMemSetMem16 ( - OUT VOID *Buffer, - IN UINTN Length, - IN UINT16 Value - ); - -/** - Fills a target buffer with a 32-bit value, and returns the target buffer. - - @param Buffer Pointer to the target buffer to fill. - @param Length Count of 32-bit value to fill. - @param Value Value with which to fill Length bytes of Buffer. - - @return Buffer - -**/ -VOID * -EFIAPI -InternalMemSetMem32 ( - OUT VOID *Buffer, - IN UINTN Length, - IN UINT32 Value - ); - -/** - Fills a target buffer with a 64-bit value, and returns the target buffer. - - @param Buffer Pointer to the target buffer to fill. - @param Length Count of 64-bit value to fill. - @param Value Value with which to fill Length bytes of Buffer. - - @return Buffer - -**/ -VOID * -EFIAPI -InternalMemSetMem64 ( - OUT VOID *Buffer, - IN UINTN Length, - IN UINT64 Value - ); - -/** - Set Buffer to 0 for Size bytes. - - @param Buffer Memory to set. - @param Length Number of bytes to set - - @return Buffer - -**/ -VOID * -EFIAPI -InternalMemZeroMem ( - OUT VOID *Buffer, - IN UINTN Length - ); - -/** - Compares two memory buffers of a given length. - - @param DestinationBuffer First memory buffer - @param SourceBuffer Second memory buffer - @param Length Length of DestinationBuffer and SourceBuffer memory - regions to compare. Must be non-zero. - - @return 0 All Length bytes of the two buffers are identical. - @retval Non-zero The first mismatched byte in SourceBuffer subtracted from the first - mismatched byte in DestinationBuffer. - -**/ -INTN -EFIAPI -InternalMemCompareMem ( - IN CONST VOID *DestinationBuffer, - IN CONST VOID *SourceBuffer, - IN UINTN Length - ); - -/** - Scans a target buffer for an 8-bit value, and returns a pointer to the - matching 8-bit value in the target buffer. - - @param Buffer Pointer to the target buffer to scan. - @param Length Count of 8-bit value to scan. Must be non-zero. - @param Value Value to search for in the target buffer. - - @return Pointer to the first occurrence or NULL if not found. - -**/ -CONST VOID * -EFIAPI -InternalMemScanMem8 ( - IN CONST VOID *Buffer, - IN UINTN Length, - IN UINT8 Value - ); - -/** - Scans a target buffer for a 16-bit value, and returns a pointer to the - matching 16-bit value in the target buffer. - - @param Buffer Pointer to the target buffer to scan. - @param Length Count of 16-bit value to scan. Must be non-zero. - @param Value Value to search for in the target buffer. - - @return Pointer to the first occurrence or NULL if not found. - -**/ -CONST VOID * -EFIAPI -InternalMemScanMem16 ( - IN CONST VOID *Buffer, - IN UINTN Length, - IN UINT16 Value - ); - -/** - Scans a target buffer for a 32-bit value, and returns a pointer to the - matching 32-bit value in the target buffer. - - @param Buffer Pointer to the target buffer to scan. - @param Length Count of 32-bit value to scan. Must be non-zero. - @param Value Value to search for in the target buffer. - - @return Pointer to the first occurrence or NULL if not found. - -**/ -CONST VOID * -EFIAPI -InternalMemScanMem32 ( - IN CONST VOID *Buffer, - IN UINTN Length, - IN UINT32 Value - ); - -/** - Scans a target buffer for a 64-bit value, and returns a pointer to the - matching 64-bit value in the target buffer. - - @param Buffer Pointer to the target buffer to scan. - @param Length Count of 64-bit value to scan. Must be non-zero. - @param Value Value to search for in the target buffer. - - @return Pointer to the first occurrence or NULL if not found. - -**/ -CONST VOID * -EFIAPI -InternalMemScanMem64 ( - IN CONST VOID *Buffer, - IN UINTN Length, - IN UINT64 Value - ); - -/** - Checks whether the contents of a buffer are all zeros. - - @param Buffer The pointer to the buffer to be checked. - @param Length The size of the buffer (in bytes) to be checked. - - @retval TRUE Contents of the buffer are all zeros. - @retval FALSE Contents of the buffer are not all zeros. - -**/ -BOOLEAN -EFIAPI -InternalMemIsZeroBuffer ( - IN CONST VOID *Buffer, - IN UINTN Length - ); - -#endif diff --git a/ArmPkg/Library/BaseMemoryLibStm/ScanMem16Wrapper.c b/ArmPkg/Library/BaseMemoryLibStm/ScanMem16Wrapper.c deleted file mode 100644 index 1c727b3e8077..000000000000 --- a/ArmPkg/Library/BaseMemoryLibStm/ScanMem16Wrapper.c +++ /dev/null @@ -1,67 +0,0 @@ -/** @file - ScanMem16() implementation. - - The following BaseMemoryLib instances contain the same copy of this file: - - BaseMemoryLib - BaseMemoryLibMmx - BaseMemoryLibSse2 - BaseMemoryLibRepStr - BaseMemoryLibOptDxe - BaseMemoryLibOptPei - PeiMemoryLib - UefiMemoryLib - - Copyright (c) 2006 - 2009, 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 "MemLibInternals.h" - -/** - Scans a target buffer for a 16-bit value, and returns a pointer to the matching 16-bit value - in the target buffer. - - This function searches the target buffer specified by Buffer and Length from the lowest - address to the highest address for a 16-bit value that matches Value. If a match is found, - then a pointer to the matching byte in the target buffer is returned. If no match is found, - then NULL is returned. If Length is 0, then NULL is returned. - - If Length > 0 and Buffer is NULL, then ASSERT(). - If Buffer is not aligned on a 16-bit boundary, then ASSERT(). - If Length is not aligned on a 16-bit boundary, then ASSERT(). - If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). - - @param Buffer Pointer to the target buffer to scan. - @param Length Number of bytes in Buffer to scan. - @param Value Value to search for in the target buffer. - - @return A pointer to the matching byte in the target buffer or NULL otherwise. - -**/ -VOID * -EFIAPI -ScanMem16 ( - IN CONST VOID *Buffer, - IN UINTN Length, - IN UINT16 Value - ) -{ - if (Length == 0) { - return NULL; - } - - ASSERT (Buffer != NULL); - ASSERT (((UINTN)Buffer & (sizeof (Value) - 1)) == 0); - ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)Buffer)); - ASSERT ((Length & (sizeof (Value) - 1)) == 0); - - return (VOID*)InternalMemScanMem16 (Buffer, Length / sizeof (Value), Value); -} diff --git a/ArmPkg/Library/BaseMemoryLibStm/ScanMem32Wrapper.c b/ArmPkg/Library/BaseMemoryLibStm/ScanMem32Wrapper.c deleted file mode 100644 index 79ab60ced84c..000000000000 --- a/ArmPkg/Library/BaseMemoryLibStm/ScanMem32Wrapper.c +++ /dev/null @@ -1,66 +0,0 @@ -/** @file - ScanMem32() implementation. - - The following BaseMemoryLib instances contain the same copy of this file: - BaseMemoryLib - BaseMemoryLibMmx - BaseMemoryLibSse2 - BaseMemoryLibRepStr - BaseMemoryLibOptDxe - BaseMemoryLibOptPei - PeiMemoryLib - UefiMemoryLib - - Copyright (c) 2006 - 2009, 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 "MemLibInternals.h" - -/** - Scans a target buffer for a 32-bit value, and returns a pointer to the matching 32-bit value - in the target buffer. - - This function searches the target buffer specified by Buffer and Length from the lowest - address to the highest address for a 32-bit value that matches Value. If a match is found, - then a pointer to the matching byte in the target buffer is returned. If no match is found, - then NULL is returned. If Length is 0, then NULL is returned. - - If Length > 0 and Buffer is NULL, then ASSERT(). - If Buffer is not aligned on a 32-bit boundary, then ASSERT(). - If Length is not aligned on a 32-bit boundary, then ASSERT(). - If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). - - @param Buffer Pointer to the target buffer to scan. - @param Length Number of bytes in Buffer to scan. - @param Value Value to search for in the target buffer. - - @return A pointer to the matching byte in the target buffer or NULL otherwise. - -**/ -VOID * -EFIAPI -ScanMem32 ( - IN CONST VOID *Buffer, - IN UINTN Length, - IN UINT32 Value - ) -{ - if (Length == 0) { - return NULL; - } - - ASSERT (Buffer != NULL); - ASSERT (((UINTN)Buffer & (sizeof (Value) - 1)) == 0); - ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)Buffer)); - ASSERT ((Length & (sizeof (Value) - 1)) == 0); - - return (VOID*)InternalMemScanMem32 (Buffer, Length / sizeof (Value), Value); -} diff --git a/ArmPkg/Library/BaseMemoryLibStm/ScanMem64Wrapper.c b/ArmPkg/Library/BaseMemoryLibStm/ScanMem64Wrapper.c deleted file mode 100644 index d11e50b9d5f6..000000000000 --- a/ArmPkg/Library/BaseMemoryLibStm/ScanMem64Wrapper.c +++ /dev/null @@ -1,67 +0,0 @@ -/** @file - ScanMem64() implementation. - - The following BaseMemoryLib instances contain the same copy of this file: - - BaseMemoryLib - BaseMemoryLibMmx - BaseMemoryLibSse2 - BaseMemoryLibRepStr - BaseMemoryLibOptDxe - BaseMemoryLibOptPei - PeiMemoryLib - UefiMemoryLib - - Copyright (c) 2006 - 2009, 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 "MemLibInternals.h" - -/** - Scans a target buffer for a 64-bit value, and returns a pointer to the matching 64-bit value - in the target buffer. - - This function searches the target buffer specified by Buffer and Length from the lowest - address to the highest address for a 64-bit value that matches Value. If a match is found, - then a pointer to the matching byte in the target buffer is returned. If no match is found, - then NULL is returned. If Length is 0, then NULL is returned. - - If Length > 0 and Buffer is NULL, then ASSERT(). - If Buffer is not aligned on a 64-bit boundary, then ASSERT(). - If Length is not aligned on a 64-bit boundary, then ASSERT(). - If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). - - @param Buffer Pointer to the target buffer to scan. - @param Length Number of bytes in Buffer to scan. - @param Value Value to search for in the target buffer. - - @return A pointer to the matching byte in the target buffer or NULL otherwise. - -**/ -VOID * -EFIAPI -ScanMem64 ( - IN CONST VOID *Buffer, - IN UINTN Length, - IN UINT64 Value - ) -{ - if (Length == 0) { - return NULL; - } - - ASSERT (Buffer != NULL); - ASSERT (((UINTN)Buffer & (sizeof (Value) - 1)) == 0); - ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)Buffer)); - ASSERT ((Length & (sizeof (Value) - 1)) == 0); - - return (VOID*)InternalMemScanMem64 (Buffer, Length / sizeof (Value), Value); -} diff --git a/ArmPkg/Library/BaseMemoryLibStm/ScanMem8Wrapper.c b/ArmPkg/Library/BaseMemoryLibStm/ScanMem8Wrapper.c deleted file mode 100644 index c6c6d5f39ba4..000000000000 --- a/ArmPkg/Library/BaseMemoryLibStm/ScanMem8Wrapper.c +++ /dev/null @@ -1,99 +0,0 @@ -/** @file - ScanMem8() and ScanMemN() implementation. - - The following BaseMemoryLib instances contain the same copy of this file: - - BaseMemoryLib - BaseMemoryLibMmx - BaseMemoryLibSse2 - BaseMemoryLibRepStr - BaseMemoryLibOptDxe - BaseMemoryLibOptPei - PeiMemoryLib - UefiMemoryLib - - Copyright (c) 2006 - 2009, 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 "MemLibInternals.h" - -/** - Scans a target buffer for an 8-bit value, and returns a pointer to the matching 8-bit value - in the target buffer. - - This function searches the target buffer specified by Buffer and Length from the lowest - address to the highest address for an 8-bit value that matches Value. If a match is found, - then a pointer to the matching byte in the target buffer is returned. If no match is found, - then NULL is returned. If Length is 0, then NULL is returned. - - If Length > 0 and Buffer is NULL, then ASSERT(). - If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). - - @param Buffer Pointer to the target buffer to scan. - @param Length Number of bytes in Buffer to scan. - @param Value Value to search for in the target buffer. - - @return A pointer to the matching byte in the target buffer or NULL otherwise. - -**/ -VOID * -EFIAPI -ScanMem8 ( - IN CONST VOID *Buffer, - IN UINTN Length, - IN UINT8 Value - ) -{ - if (Length == 0) { - return NULL; - } - ASSERT (Buffer != NULL); - ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)Buffer)); - - return (VOID*)InternalMemScanMem8 (Buffer, Length, Value); -} - -/** - Scans a target buffer for a UINTN sized value, and returns a pointer to the matching - UINTN sized value in the target buffer. - - This function searches the target buffer specified by Buffer and Length from the lowest - address to the highest address for a UINTN sized value that matches Value. If a match is found, - then a pointer to the matching byte in the target buffer is returned. If no match is found, - then NULL is returned. If Length is 0, then NULL is returned. - - If Length > 0 and Buffer is NULL, then ASSERT(). - If Buffer is not aligned on a UINTN boundary, then ASSERT(). - If Length is not aligned on a UINTN boundary, then ASSERT(). - If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). - - @param Buffer Pointer to the target buffer to scan. - @param Length Number of bytes in Buffer to scan. - @param Value Value to search for in the target buffer. - - @return A pointer to the matching byte in the target buffer or NULL otherwise. - -**/ -VOID * -EFIAPI -ScanMemN ( - IN CONST VOID *Buffer, - IN UINTN Length, - IN UINTN Value - ) -{ - if (sizeof (UINTN) == sizeof (UINT64)) { - return ScanMem64 (Buffer, Length, (UINT64)Value); - } else { - return ScanMem32 (Buffer, Length, (UINT32)Value); - } -} - diff --git a/ArmPkg/Library/BaseMemoryLibStm/SetMem.c b/ArmPkg/Library/BaseMemoryLibStm/SetMem.c deleted file mode 100644 index 5c30e9b45f76..000000000000 --- a/ArmPkg/Library/BaseMemoryLibStm/SetMem.c +++ /dev/null @@ -1,53 +0,0 @@ -/** @file - Implementation of the EfiSetMem routine. This function is broken - out into its own source file so that it can be excluded from a - build for a particular platform easily if an optimized version - is desired. - - 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 "MemLibInternals.h" - -/** - Set Buffer to Value for Size bytes. - - @param Buffer Memory to set. - @param Length Number of bytes to set - @param Value Value of the set operation. - - @return Buffer - -**/ -VOID * -EFIAPI -InternalMemSetMem ( - OUT VOID *Buffer, - IN UINTN Length, - IN UINT8 Value - ) -{ - // - // Declare the local variables that actually move the data elements as - // volatile to prevent the optimizer from replacing this function with - // the intrinsic memset() - // - volatile UINT8 *Pointer; - - Pointer = (UINT8*)Buffer; - while (Length-- > 0) { - *(Pointer++) = Value; - } - return Buffer; -} diff --git a/ArmPkg/Library/BaseMemoryLibStm/SetMem16Wrapper.c b/ArmPkg/Library/BaseMemoryLibStm/SetMem16Wrapper.c deleted file mode 100644 index 8129d21e0dbe..000000000000 --- a/ArmPkg/Library/BaseMemoryLibStm/SetMem16Wrapper.c +++ /dev/null @@ -1,64 +0,0 @@ -/** @file - SetMem16() implementation. - - The following BaseMemoryLib instances contain the same copy of this file: - BaseMemoryLib - BaseMemoryLibMmx - BaseMemoryLibSse2 - BaseMemoryLibRepStr - BaseMemoryLibOptDxe - BaseMemoryLibOptPei - PeiMemoryLib - UefiMemoryLib - - Copyright (c) 2006 - 2009, 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 "MemLibInternals.h" - -/** - Fills a target buffer with a 16-bit value, and returns the target buffer. - - This function fills Length bytes of Buffer with the 16-bit value specified by - Value, and returns Buffer. Value is repeated every 16-bits in for Length - bytes of Buffer. - - If Length > 0 and Buffer is NULL, then ASSERT(). - If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). - If Buffer is not aligned on a 16-bit boundary, then ASSERT(). - If Length is not aligned on a 16-bit boundary, then ASSERT(). - - @param Buffer Pointer to the target buffer to fill. - @param Length Number of bytes in Buffer to fill. - @param Value Value with which to fill Length bytes of Buffer. - - @return Buffer. - -**/ -VOID * -EFIAPI -SetMem16 ( - OUT VOID *Buffer, - IN UINTN Length, - IN UINT16 Value - ) -{ - if (Length == 0) { - return Buffer; - } - - ASSERT (Buffer != NULL); - ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)Buffer)); - ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0); - ASSERT ((Length & (sizeof (Value) - 1)) == 0); - - return InternalMemSetMem16 (Buffer, Length / sizeof (Value), Value); -} diff --git a/ArmPkg/Library/BaseMemoryLibStm/SetMem32Wrapper.c b/ArmPkg/Library/BaseMemoryLibStm/SetMem32Wrapper.c deleted file mode 100644 index b57ba4057af6..000000000000 --- a/ArmPkg/Library/BaseMemoryLibStm/SetMem32Wrapper.c +++ /dev/null @@ -1,64 +0,0 @@ -/** @file - SetMem32() implementation. - - The following BaseMemoryLib instances contain the same copy of this file: - BaseMemoryLib - BaseMemoryLibMmx - BaseMemoryLibSse2 - BaseMemoryLibRepStr - BaseMemoryLibOptDxe - BaseMemoryLibOptPei - PeiMemoryLib - UefiMemoryLib - - Copyright (c) 2006 - 2009, 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 "MemLibInternals.h" - -/** - Fills a target buffer with a 32-bit value, and returns the target buffer. - - This function fills Length bytes of Buffer with the 32-bit value specified by - Value, and returns Buffer. Value is repeated every 32-bits in for Length - bytes of Buffer. - - If Length > 0 and Buffer is NULL, then ASSERT(). - If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). - If Buffer is not aligned on a 32-bit boundary, then ASSERT(). - If Length is not aligned on a 32-bit boundary, then ASSERT(). - - @param Buffer Pointer to the target buffer to fill. - @param Length Number of bytes in Buffer to fill. - @param Value Value with which to fill Length bytes of Buffer. - - @return Buffer. - -**/ -VOID * -EFIAPI -SetMem32 ( - OUT VOID *Buffer, - IN UINTN Length, - IN UINT32 Value - ) -{ - if (Length == 0) { - return Buffer; - } - - ASSERT (Buffer != NULL); - ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)Buffer)); - ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0); - ASSERT ((Length & (sizeof (Value) - 1)) == 0); - - return InternalMemSetMem32 (Buffer, Length / sizeof (Value), Value); -} diff --git a/ArmPkg/Library/BaseMemoryLibStm/SetMem64Wrapper.c b/ArmPkg/Library/BaseMemoryLibStm/SetMem64Wrapper.c deleted file mode 100644 index f979580b1739..000000000000 --- a/ArmPkg/Library/BaseMemoryLibStm/SetMem64Wrapper.c +++ /dev/null @@ -1,64 +0,0 @@ -/** @file - SetMem64() implementation. - - The following BaseMemoryLib instances contain the same copy of this file: - BaseMemoryLib - BaseMemoryLibMmx - BaseMemoryLibSse2 - BaseMemoryLibRepStr - BaseMemoryLibOptDxe - BaseMemoryLibOptPei - PeiMemoryLib - UefiMemoryLib - - Copyright (c) 2006 - 2009, 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 "MemLibInternals.h" - -/** - Fills a target buffer with a 64-bit value, and returns the target buffer. - - This function fills Length bytes of Buffer with the 64-bit value specified by - Value, and returns Buffer. Value is repeated every 64-bits in for Length - bytes of Buffer. - - If Length > 0 and Buffer is NULL, then ASSERT(). - If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). - If Buffer is not aligned on a 64-bit boundary, then ASSERT(). - If Length is not aligned on a 64-bit boundary, then ASSERT(). - - @param Buffer Pointer to the target buffer to fill. - @param Length Number of bytes in Buffer to fill. - @param Value Value with which to fill Length bytes of Buffer. - - @return Buffer. - -**/ -VOID * -EFIAPI -SetMem64 ( - OUT VOID *Buffer, - IN UINTN Length, - IN UINT64 Value - ) -{ - if (Length == 0) { - return Buffer; - } - - ASSERT (Buffer != NULL); - ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)Buffer)); - ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0); - ASSERT ((Length & (sizeof (Value) - 1)) == 0); - - return InternalMemSetMem64 (Buffer, Length / sizeof (Value), Value); -} diff --git a/ArmPkg/Library/BaseMemoryLibStm/SetMemWrapper.c b/ArmPkg/Library/BaseMemoryLibStm/SetMemWrapper.c deleted file mode 100644 index 9240c89e8b87..000000000000 --- a/ArmPkg/Library/BaseMemoryLibStm/SetMemWrapper.c +++ /dev/null @@ -1,91 +0,0 @@ -/** @file - SetMem() and SetMemN() implementation. - - The following BaseMemoryLib instances contain the same copy of this file: - - BaseMemoryLib - BaseMemoryLibMmx - BaseMemoryLibSse2 - BaseMemoryLibRepStr - BaseMemoryLibOptDxe - BaseMemoryLibOptPei - PeiMemoryLib - UefiMemoryLib - - Copyright (c) 2006 - 2009, 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 "MemLibInternals.h" - -/** - Fills a target buffer with a byte value, and returns the target buffer. - - This function fills Length bytes of Buffer with Value, and returns Buffer. - - If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). - - @param Buffer Memory to set. - @param Length Number of bytes to set. - @param Value Value with which to fill Length bytes of Buffer. - - @return Buffer. - -**/ -VOID * -EFIAPI -SetMem ( - OUT VOID *Buffer, - IN UINTN Length, - IN UINT8 Value - ) -{ - if (Length == 0) { - return Buffer; - } - - ASSERT ((Length - 1) <= (MAX_ADDRESS - (UINTN)Buffer)); - - return InternalMemSetMem (Buffer, Length, Value); -} - -/** - Fills a target buffer with a value that is size UINTN, and returns the target buffer. - - This function fills Length bytes of Buffer with the UINTN sized value specified by - Value, and returns Buffer. Value is repeated every sizeof(UINTN) bytes for Length - bytes of Buffer. - - If Length > 0 and Buffer is NULL, then ASSERT(). - If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). - If Buffer is not aligned on a UINTN boundary, then ASSERT(). - If Length is not aligned on a UINTN boundary, then ASSERT(). - - @param Buffer Pointer to the target buffer to fill. - @param Length Number of bytes in Buffer to fill. - @param Value Value with which to fill Length bytes of Buffer. - - @return Buffer. - -**/ -VOID * -EFIAPI -SetMemN ( - OUT VOID *Buffer, - IN UINTN Length, - IN UINTN Value - ) -{ - if (sizeof (UINTN) == sizeof (UINT64)) { - return SetMem64 (Buffer, Length, (UINT64)Value); - } else { - return SetMem32 (Buffer, Length, (UINT32)Value); - } -} diff --git a/ArmPkg/Library/BaseMemoryLibStm/ZeroMemWrapper.c b/ArmPkg/Library/BaseMemoryLibStm/ZeroMemWrapper.c deleted file mode 100644 index d6c6279f682f..000000000000 --- a/ArmPkg/Library/BaseMemoryLibStm/ZeroMemWrapper.c +++ /dev/null @@ -1,52 +0,0 @@ -/** @file - ZeroMem() implementation. - - The following BaseMemoryLib instances contain the same copy of this file: - - BaseMemoryLib - BaseMemoryLibMmx - BaseMemoryLibSse2 - BaseMemoryLibRepStr - BaseMemoryLibOptDxe - BaseMemoryLibOptPei - PeiMemoryLib - UefiMemoryLib - - Copyright (c) 2006 - 2009, 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 "MemLibInternals.h" - -/** - Fills a target buffer with zeros, and returns the target buffer. - - This function fills Length bytes of Buffer with zeros, and returns Buffer. - - If Length > 0 and Buffer is NULL, then ASSERT(). - If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). - - @param Buffer Pointer to the target buffer to fill with zeros. - @param Length Number of bytes in Buffer to fill with zeros. - - @return Buffer. - -**/ -VOID * -EFIAPI -ZeroMem ( - OUT VOID *Buffer, - IN UINTN Length - ) -{ - ASSERT (!(Buffer == NULL && Length > 0)); - ASSERT (Length <= (MAX_ADDRESS - (UINTN)Buffer + 1)); - return InternalMemZeroMem (Buffer, Length); -}