public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Leif Lindholm <leif.lindholm@linaro.org>
To: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: edk2-devel@lists.01.org
Subject: Re: [PATCH 1/3] ArmPkg: remove BaseMemoryLibVstm implementation of BaseMemoryLib
Date: Thu, 1 Sep 2016 13:58:22 +0100	[thread overview]
Message-ID: <20160901125822.GW4715@bivouac.eciton.net> (raw)
In-Reply-To: <1472634453-27246-2-git-send-email-ard.biesheuvel@linaro.org>

On Wed, Aug 31, 2016 at 10:07:31AM +0100, Ard Biesheuvel wrote:
> The BaseMemoryLibVstm implementation of BaseMemoryLib is ARM only, uses
> the NEON register file despite the fact that the UEFI spec does not allow
> it, and is currently not used anywhere. So remove it.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

So separate from the rest of the series, it would make sense to merge
this one before moving BaseMemoryLibStm to MdePkg.

Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>.

> ---
>  ArmPkg/ArmPkg.dsc                                      |   2 -
>  ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.S         | 112 ---------
>  ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.asm       | 114 ---------
>  ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.S          |  76 ------
>  ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.asm        |  78 ------
>  ArmPkg/Library/BaseMemoryLibVstm/BaseMemoryLibVstm.inf |  70 ------
>  ArmPkg/Library/BaseMemoryLibVstm/CompareMemWrapper.c   |  66 -----
>  ArmPkg/Library/BaseMemoryLibVstm/CopyMem.c             |  62 -----
>  ArmPkg/Library/BaseMemoryLibVstm/CopyMemWrapper.c      |  63 -----
>  ArmPkg/Library/BaseMemoryLibVstm/MemLibGeneric.c       | 264 --------------------
>  ArmPkg/Library/BaseMemoryLibVstm/MemLibGuid.c          | 132 ----------
>  ArmPkg/Library/BaseMemoryLibVstm/MemLibInternals.h     | 234 -----------------
>  ArmPkg/Library/BaseMemoryLibVstm/ScanMem16Wrapper.c    |  67 -----
>  ArmPkg/Library/BaseMemoryLibVstm/ScanMem32Wrapper.c    |  66 -----
>  ArmPkg/Library/BaseMemoryLibVstm/ScanMem64Wrapper.c    |  67 -----
>  ArmPkg/Library/BaseMemoryLibVstm/ScanMem8Wrapper.c     |  99 --------
>  ArmPkg/Library/BaseMemoryLibVstm/SetMem.c              |  53 ----
>  ArmPkg/Library/BaseMemoryLibVstm/SetMem16Wrapper.c     |  64 -----
>  ArmPkg/Library/BaseMemoryLibVstm/SetMem32Wrapper.c     |  64 -----
>  ArmPkg/Library/BaseMemoryLibVstm/SetMem64Wrapper.c     |  64 -----
>  ArmPkg/Library/BaseMemoryLibVstm/SetMemWrapper.c       |  91 -------
>  ArmPkg/Library/BaseMemoryLibVstm/ZeroMemWrapper.c      |  52 ----
>  22 files changed, 1960 deletions(-)
> 
> diff --git a/ArmPkg/ArmPkg.dsc b/ArmPkg/ArmPkg.dsc
> index 7b278cdd4124..6f9fc661fbdc 100644
> --- a/ArmPkg/ArmPkg.dsc
> +++ b/ArmPkg/ArmPkg.dsc
> @@ -150,8 +150,6 @@ [Components.common]
>    ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib.inf
>  
>  [Components.ARM]
> -  ArmPkg/Library/BaseMemoryLibVstm/BaseMemoryLibVstm.inf
> -
>    ArmPkg/Drivers/ArmCpuLib/ArmCortexA8Lib/ArmCortexA8Lib.inf
>    ArmPkg/Drivers/ArmCpuLib/ArmCortexA9Lib/ArmCortexA9Lib.inf
>    ArmPkg/Drivers/ArmCpuLib/ArmCortexA15Lib/ArmCortexA15Lib.inf
> diff --git a/ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.S b/ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.S
> deleted file mode 100644
> index 69de4c1fd48e..000000000000
> --- a/ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.S
> +++ /dev/null
> @@ -1,112 +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. Update using VSTM/SLDM to do 128 byte copies.
> -#
> -# Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
> -# This program and the accompanying materials
> -# are licensed and made available under the terms and conditions of the BSD License
> -# which accompanies this distribution.  The full text of the license may be found at
> -# http://opensource.org/licenses/bsd-license.php
> -#
> -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -#
> -#------------------------------------------------------------------------------
> -
> -#include <AsmMacroIoLib.h>
> -
> -/**
> -  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, r9, lr}
> -  tst  r0, #3
> -  mov  r4, r0
> -  mov  r9, r0
> -  mov  ip, r2
> -  mov  lr, r1
> -  movne  r0, #0
> -  bne  L4
> -  tst  r1, #3
> -  movne  r3, #0
> -  moveq  r3, #1
> -  cmp  r2, #127
> -  movls  r0, #0
> -  andhi  r0, r3, #1
> -L4:
> -  cmp  r4, r1
> -  bcc  L26
> -  bls  L7
> -  rsb  r3, r1, r4
> -  cmp  ip, r3
> -  bcc  L26
> -  cmp  ip, #0
> -  beq  L7
> -  add  r9, r4, ip
> -  add  lr, ip, r1
> -  b  L16
> -L29:
> -  sub  ip, ip, #8
> -  cmp  ip, #7
> -  ldrd  r2, [lr, #-8]!
> -  movls  r0, #0
> -  cmp  ip, #0
> -  strd  r2, [r9, #-8]!
> -  beq  L7
> -L16:
> -  cmp  r0, #0
> -  bne  L29
> -  sub  r3, lr, #1
> -  sub  ip, ip, #1
> -  ldrb  r3, [r3, #0]
> -  sub  r2, r9, #1
> -  cmp  ip, #0
> -  sub  r9, r9, #1
> -  sub  lr, lr, #1
> -  strb  r3, [r2, #0]
> -  bne  L16
> -  b   L7
> -L11:
> -  ldrb  r3, [lr], #1
> -  sub  ip, ip, #1
> -  strb  r3, [r9], #1
> -L26:
> -  cmp  ip, #0
> -  beq  L7
> -L30:
> -  cmp  r0, #0
> -  beq  L11
> -  sub  ip, ip, #128          // 32
> -  cmp  ip, #127              // 31
> -  vldm     lr!, {d0-d15}
> -  movls  r0, #0
> -  cmp  ip, #0
> -  vstm  r9!, {d0-d15}
> -  bne  L30
> -L7:
> -  dsb
> -  mov  r0, r4
> -  ldmfd  sp!, {r4, r9, pc}
> -
> -
> diff --git a/ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.asm b/ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.asm
> deleted file mode 100644
> index 5afd1e5f2bc1..000000000000
> --- a/ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.asm
> +++ /dev/null
> @@ -1,114 +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. Update using VSTM/SLDM to do 128 byte copies.
> -;
> -; Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
> -; This program and the accompanying materials
> -; are licensed and made available under the terms and conditions of the BSD License
> -; which accompanies this distribution.  The full text of the license may be found at
> -; http://opensource.org/licenses/bsd-license.php
> -;
> -; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -;
> -;------------------------------------------------------------------------------
> -
> -/**
> -  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, r9, lr}
> -  tst  r0, #3
> -  mov  r4, r0
> -  mov  r9, r0
> -  mov  ip, r2
> -  mov  lr, r1
> -  movne  r0, #0
> -  bne  L4
> -  tst  r1, #3
> -  movne  r3, #0
> -  moveq  r3, #1
> -  cmp  r2, #127
> -  movls  r0, #0
> -  andhi  r0, r3, #1
> -L4
> -  cmp  r4, r1
> -  bcc  L26
> -  bls  L7
> -  rsb  r3, r1, r4
> -  cmp  ip, r3
> -  bcc  L26
> -  cmp  ip, #0
> -  beq  L7
> -  add  r9, r4, ip
> -  add  lr, ip, r1
> -  b  L16
> -L29
> -  sub  ip, ip, #8
> -  cmp  ip, #7
> -  ldrd  r2, [lr, #-8]!
> -  movls  r0, #0
> -  cmp  ip, #0
> -  strd  r2, [r9, #-8]!
> -  beq  L7
> -L16
> -  cmp  r0, #0
> -  bne  L29
> -  sub  r3, lr, #1
> -  sub  ip, ip, #1
> -  ldrb  r3, [r3, #0]
> -  sub  r2, r9, #1
> -  cmp  ip, #0
> -  sub  r9, r9, #1
> -  sub  lr, lr, #1
> -  strb  r3, [r2, #0]
> -  bne  L16
> -  b   L7
> -L11
> -  ldrb  r3, [lr], #1
> -  sub  ip, ip, #1
> -  strb  r3, [r9], #1
> -L26
> -  cmp  ip, #0
> -  beq  L7
> -L30
> -  cmp  r0, #0
> -  beq  L11
> -  sub  ip, ip, #128          // 32
> -  cmp  ip, #127              // 31
> -  vldm     lr!, {d0-d15}
> -  movls  r0, #0
> -  cmp  ip, #0
> -  vstm  r9!, {d0-d15}
> -  bne  L30
> -L7
> -  dsb
> -  mov  r0, r4
> -  ldmfd  sp!, {r4, r9, pc}
> -
> -  END
> -
> diff --git a/ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.S b/ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.S
> deleted file mode 100644
> index 28ba38b79c6a..000000000000
> --- a/ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.S
> +++ /dev/null
> @@ -1,76 +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. Update to use VSTM/VLDM to do 128 byte writes.
> -#
> -# Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
> -# This program and the accompanying materials
> -# are licensed and made available under the terms and conditions of the BSD License
> -# which accompanies this distribution.  The full text of the license may be found at
> -# http://opensource.org/licenses/bsd-license.php
> -#
> -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -#
> -#------------------------------------------------------------------------------
> -
> -#include <AsmMacroIoLib.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
> -  )
> -**/
> -ASM_FUNC(InternalMemSetMem)
> -  stmfd  sp!, {r4-r7, lr}
> -  tst    r0, #3
> -  movne  r3, #0
> -  moveq  r3, #1
> -  cmp    r1, #127
> -  movls lr, #0
> -  andhi  lr, r3, #1
> -  cmp    lr, #0
> -  mov    r12, r0
> -  bne    L31
> -L32:
> -  mov    r3, #0
> -  b      L43
> -L31:
> -  vdup.8  q0,r2
> -  vmov    q1,q0
> -  vmov    q2,q0
> -  vmov    q3,q0
> -  vmov    q4,q0
> -  vmov    q5,q0
> -  vmov    q6,q0
> -  vmov    q7,q0
> -  b        L32
> -L34:
> -  cmp      lr, #0
> -  streqb  r2, [r12], #1
> -  subeq    r1, r1, #1
> -  beq      L43
> -  sub      r1, r1, #128
> -  cmp      r1, #127
> -  cmp      r1, #31
> -  movls    lr, r3
> -  vstm    r12!, {d0-d15}
> -L43:
> -  cmp      r1, #0
> -  bne      L34
> -  ldmfd    sp!, {pc}
> diff --git a/ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.asm b/ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.asm
> deleted file mode 100644
> index c4a7c2b72008..000000000000
> --- a/ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.asm
> +++ /dev/null
> @@ -1,78 +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. Update to use VSTM/VLDM to do 128 byte writes.
> -;
> -; Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
> -; This program and the accompanying materials
> -; are licensed and made available under the terms and conditions of the BSD License
> -; which accompanies this distribution.  The full text of the license may be found at
> -; http://opensource.org/licenses/bsd-license.php
> -;
> -; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -;
> -
> -/**
> -  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!, {lr}
> -  tst    r0, #3
> -  movne  r3, #0
> -  moveq  r3, #1
> -  cmp    r1, #127
> -  movls lr, #0
> -  andhi  lr, r3, #1
> -  cmp    lr, #0
> -  mov    r12, r0
> -  bne    L31
> -L32
> -  mov    r3, #0
> -  b      L43
> -L31
> -  vdup.8  q0,r2
> -  vmov    q1,q0
> -  vmov    q2,q0
> -  vmov    q3,q0
> -  vmov    q4,q0
> -  vmov    q5,q0
> -  vmov    q6,q0
> -  vmov    q7,q0
> -  b        L32
> -L34
> -  cmp      lr, #0
> -  streqb  r2, [r12], #1
> -  subeq    r1, r1, #1
> -  beq      L43
> -  sub      r1, r1, #128
> -  cmp      r1, #127
> -  movls    lr, r3
> -  vstm    r12!, {d0-d15}
> -L43
> -  cmp      r1, #0
> -  bne      L34
> -  ldmfd    sp!, {pc}
> -
> -  END
> diff --git a/ArmPkg/Library/BaseMemoryLibVstm/BaseMemoryLibVstm.inf b/ArmPkg/Library/BaseMemoryLibVstm/BaseMemoryLibVstm.inf
> deleted file mode 100644
> index 4c388fa8984d..000000000000
> --- a/ArmPkg/Library/BaseMemoryLibVstm/BaseMemoryLibVstm.inf
> +++ /dev/null
> @@ -1,70 +0,0 @@
> -## @file
> -#  Instance of Base Memory Library with some ARM vldm/vstm assembly.
> -#
> -#  This is a copy of the MdePkg BaseMemoryLib with the CopyMem and
> -#  SetMem worker functions replaced with assembler that uses
> -#  vldm/vstm (part of NEON SIMD, optional in ARMv7-A).
> -#
> -#  Note: You need to enable NEON in SEC to use this library
> -#  // Enable NEON register in case folks want to use them for optimizations (CopyMem)
> -#  mrc     p15, 0, r0, c1, c0, 2
> -#  orr     r0, r0, #0x00f00000   // Enable VPF access (V* instructions)
> -#  mcr     p15, 0, r0, c1, c0, 2
> -#  mov     r0, #0x40000000       // Set EN bit in FPEXC
> -#  msr     FPEXC,r0
> -#
> -#  Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
> -#  Portions copyright (c) 2010, Apple Inc. All rights reserved.<BR>
> -#
> -#  This program and the accompanying materials
> -#  are licensed and made available under the terms and conditions of the BSD License
> -#  which accompanies this distribution. The full text of the license may be found at
> -#  http://opensource.org/licenses/bsd-license.php
> -#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -#
> -#
> -##
> -
> -[Defines]
> -  INF_VERSION                    = 0x00010005
> -  BASE_NAME                      = BaseMemoryLibVstm
> -  FILE_GUID                      = 09EE1E8D-7A2E-4573-8117-68A18569C1F5
> -  MODULE_TYPE                    = BASE
> -  VERSION_STRING                 = 1.0
> -  LIBRARY_CLASS                  = BaseMemoryLib
> -
> -
> -#
> -#  VALID_ARCHITECTURES           = ARM
> -#
> -
> -[Sources.ARM]
> -  ScanMem64Wrapper.c
> -  ScanMem32Wrapper.c
> -  ScanMem16Wrapper.c
> -  ScanMem8Wrapper.c
> -  ZeroMemWrapper.c
> -  CompareMemWrapper.c
> -  SetMem64Wrapper.c
> -  SetMem32Wrapper.c
> -  SetMem16Wrapper.c
> -  SetMemWrapper.c
> -  CopyMemWrapper.c
> -  MemLibGeneric.c
> -  MemLibGuid.c
> -  MemLibInternals.h
> -  Arm/CopyMem.asm
> -  Arm/CopyMem.S
> -  Arm/SetMem.asm
> -  Arm/SetMem.S
> -
> -
> -[Packages]
> -  MdePkg/MdePkg.dec
> -  ArmPkg/ArmPkg.dec
> -
> -[LibraryClasses]
> -  DebugLib
> -  BaseLib
> -
> diff --git a/ArmPkg/Library/BaseMemoryLibVstm/CompareMemWrapper.c b/ArmPkg/Library/BaseMemoryLibVstm/CompareMemWrapper.c
> deleted file mode 100644
> index c83988f59ecb..000000000000
> --- a/ArmPkg/Library/BaseMemoryLibVstm/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.<BR>
> -This program and the accompanying materials
> -are licensed and made available under the terms and conditions of the BSD License
> -which accompanies this distribution.  The full text of the license may be found at
> -http://opensource.org/licenses/bsd-license.php
> -
> -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -
> -**/
> -
> -#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/BaseMemoryLibVstm/CopyMem.c b/ArmPkg/Library/BaseMemoryLibVstm/CopyMem.c
> deleted file mode 100644
> index b30faed5607d..000000000000
> --- a/ArmPkg/Library/BaseMemoryLibVstm/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.<BR>
> -  This program and the accompanying materials
> -  are licensed and made available under the terms and conditions of the BSD License
> -  which accompanies this distribution.  The full text of the license may be found at
> -  http://opensource.org/licenses/bsd-license.php
> -
> -  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -
> -**/
> -
> -
> -
> -
> -#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/BaseMemoryLibVstm/CopyMemWrapper.c b/ArmPkg/Library/BaseMemoryLibVstm/CopyMemWrapper.c
> deleted file mode 100644
> index 2adfb3114910..000000000000
> --- a/ArmPkg/Library/BaseMemoryLibVstm/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.<BR>
> -  This program and the accompanying materials
> -  are licensed and made available under the terms and conditions of the BSD License
> -  which accompanies this distribution.  The full text of the license may be found at
> -  http://opensource.org/licenses/bsd-license.php
> -
> -  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -
> -**/
> -
> -#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/BaseMemoryLibVstm/MemLibGeneric.c b/ArmPkg/Library/BaseMemoryLibVstm/MemLibGeneric.c
> deleted file mode 100644
> index 54c27012955f..000000000000
> --- a/ArmPkg/Library/BaseMemoryLibVstm/MemLibGeneric.c
> +++ /dev/null
> @@ -1,264 +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.<BR>
> -  This program and the accompanying materials
> -  are licensed and made available under the terms and conditions of the BSD License
> -  which accompanies this distribution.  The full text of the license may be found at
> -  http://opensource.org/licenses/bsd-license.php
> -
> -  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -
> -**/
> -
> -#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;
> -}
> diff --git a/ArmPkg/Library/BaseMemoryLibVstm/MemLibGuid.c b/ArmPkg/Library/BaseMemoryLibVstm/MemLibGuid.c
> deleted file mode 100644
> index dc9e2c319ba9..000000000000
> --- a/ArmPkg/Library/BaseMemoryLibVstm/MemLibGuid.c
> +++ /dev/null
> @@ -1,132 +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.<BR>
> -  This program and the accompanying materials
> -  are licensed and made available under the terms and conditions of the BSD License
> -  which accompanies this distribution.  The full text of the license may be found at
> -  http://opensource.org/licenses/bsd-license.php
> -
> -  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -
> -**/
> -
> -#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;
> -}
> diff --git a/ArmPkg/Library/BaseMemoryLibVstm/MemLibInternals.h b/ArmPkg/Library/BaseMemoryLibVstm/MemLibInternals.h
> deleted file mode 100644
> index 10c741f2c311..000000000000
> --- a/ArmPkg/Library/BaseMemoryLibVstm/MemLibInternals.h
> +++ /dev/null
> @@ -1,234 +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.<BR>
> -  This program and the accompanying materials
> -  are licensed and made available under the terms and conditions of the BSD License
> -  which accompanies this distribution.  The full text of the license may be found at
> -  http://opensource.org/licenses/bsd-license.php
> -
> -  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -
> -**/
> -
> -#ifndef __MEM_LIB_INTERNALS__
> -#define __MEM_LIB_INTERNALS__
> -
> -#include <Base.h>
> -#include <Library/BaseMemoryLib.h>
> -#include <Library/BaseLib.h>
> -#include <Library/DebugLib.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
> -  );
> -
> -/**
> -  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
> -  );
> -
> -#endif
> diff --git a/ArmPkg/Library/BaseMemoryLibVstm/ScanMem16Wrapper.c b/ArmPkg/Library/BaseMemoryLibVstm/ScanMem16Wrapper.c
> deleted file mode 100644
> index 1c727b3e8077..000000000000
> --- a/ArmPkg/Library/BaseMemoryLibVstm/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.<BR>
> -  This program and the accompanying materials
> -  are licensed and made available under the terms and conditions of the BSD License
> -  which accompanies this distribution.  The full text of the license may be found at
> -  http://opensource.org/licenses/bsd-license.php
> -
> -  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -
> -**/
> -
> -#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/BaseMemoryLibVstm/ScanMem32Wrapper.c b/ArmPkg/Library/BaseMemoryLibVstm/ScanMem32Wrapper.c
> deleted file mode 100644
> index 79ab60ced84c..000000000000
> --- a/ArmPkg/Library/BaseMemoryLibVstm/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.<BR>
> -  This program and the accompanying materials
> -  are licensed and made available under the terms and conditions of the BSD License
> -  which accompanies this distribution.  The full text of the license may be found at
> -  http://opensource.org/licenses/bsd-license.php
> -
> -  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -
> -**/
> -
> -#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/BaseMemoryLibVstm/ScanMem64Wrapper.c b/ArmPkg/Library/BaseMemoryLibVstm/ScanMem64Wrapper.c
> deleted file mode 100644
> index d11e50b9d5f6..000000000000
> --- a/ArmPkg/Library/BaseMemoryLibVstm/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.<BR>
> -  This program and the accompanying materials
> -  are licensed and made available under the terms and conditions of the BSD License
> -  which accompanies this distribution.  The full text of the license may be found at
> -  http://opensource.org/licenses/bsd-license.php
> -
> -  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -
> -**/
> -
> -#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/BaseMemoryLibVstm/ScanMem8Wrapper.c b/ArmPkg/Library/BaseMemoryLibVstm/ScanMem8Wrapper.c
> deleted file mode 100644
> index c6c6d5f39ba4..000000000000
> --- a/ArmPkg/Library/BaseMemoryLibVstm/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.<BR>
> -  This program and the accompanying materials
> -  are licensed and made available under the terms and conditions of the BSD License
> -  which accompanies this distribution.  The full text of the license may be found at
> -  http://opensource.org/licenses/bsd-license.php
> -
> -  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -
> -**/
> -
> -#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/BaseMemoryLibVstm/SetMem.c b/ArmPkg/Library/BaseMemoryLibVstm/SetMem.c
> deleted file mode 100644
> index 5c30e9b45f76..000000000000
> --- a/ArmPkg/Library/BaseMemoryLibVstm/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.<BR>
> -  This program and the accompanying materials
> -  are licensed and made available under the terms and conditions of the BSD License
> -  which accompanies this distribution.  The full text of the license may be found at
> -  http://opensource.org/licenses/bsd-license.php
> -
> -  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -
> -**/
> -
> -
> -
> -
> -#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/BaseMemoryLibVstm/SetMem16Wrapper.c b/ArmPkg/Library/BaseMemoryLibVstm/SetMem16Wrapper.c
> deleted file mode 100644
> index 8129d21e0dbe..000000000000
> --- a/ArmPkg/Library/BaseMemoryLibVstm/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.<BR>
> -  This program and the accompanying materials
> -  are licensed and made available under the terms and conditions of the BSD License
> -  which accompanies this distribution.  The full text of the license may be found at
> -  http://opensource.org/licenses/bsd-license.php
> -
> -  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -
> -**/
> -
> -#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/BaseMemoryLibVstm/SetMem32Wrapper.c b/ArmPkg/Library/BaseMemoryLibVstm/SetMem32Wrapper.c
> deleted file mode 100644
> index b57ba4057af6..000000000000
> --- a/ArmPkg/Library/BaseMemoryLibVstm/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.<BR>
> -  This program and the accompanying materials
> -  are licensed and made available under the terms and conditions of the BSD License
> -  which accompanies this distribution.  The full text of the license may be found at
> -  http://opensource.org/licenses/bsd-license.php
> -
> -  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -
> -**/
> -
> -#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/BaseMemoryLibVstm/SetMem64Wrapper.c b/ArmPkg/Library/BaseMemoryLibVstm/SetMem64Wrapper.c
> deleted file mode 100644
> index f979580b1739..000000000000
> --- a/ArmPkg/Library/BaseMemoryLibVstm/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.<BR>
> -  This program and the accompanying materials
> -  are licensed and made available under the terms and conditions of the BSD License
> -  which accompanies this distribution.  The full text of the license may be found at
> -  http://opensource.org/licenses/bsd-license.php
> -
> -  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -
> -**/
> -
> -#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/BaseMemoryLibVstm/SetMemWrapper.c b/ArmPkg/Library/BaseMemoryLibVstm/SetMemWrapper.c
> deleted file mode 100644
> index 9240c89e8b87..000000000000
> --- a/ArmPkg/Library/BaseMemoryLibVstm/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.<BR>
> -  This program and the accompanying materials
> -  are licensed and made available under the terms and conditions of the BSD License
> -  which accompanies this distribution.  The full text of the license may be found at
> -  http://opensource.org/licenses/bsd-license.php
> -
> -  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -
> -**/
> -
> -#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/BaseMemoryLibVstm/ZeroMemWrapper.c b/ArmPkg/Library/BaseMemoryLibVstm/ZeroMemWrapper.c
> deleted file mode 100644
> index d6c6279f682f..000000000000
> --- a/ArmPkg/Library/BaseMemoryLibVstm/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.<BR>
> -  This program and the accompanying materials
> -  are licensed and made available under the terms and conditions of the BSD License
> -  which accompanies this distribution.  The full text of the license may be found at
> -  http://opensource.org/licenses/bsd-license.php
> -
> -  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> -
> -**/
> -
> -#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);
> -}
> -- 
> 2.7.4
> 


  reply	other threads:[~2016-09-01 12:58 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-31  9:07 [PATCH 0/3] ArmPkg: introduce IsZeroGuid() and IsZeroBuffer() Ard Biesheuvel
2016-08-31  9:07 ` [PATCH 1/3] ArmPkg: remove BaseMemoryLibVstm implementation of BaseMemoryLib Ard Biesheuvel
2016-09-01 12:58   ` Leif Lindholm [this message]
2016-08-31  9:07 ` [PATCH 2/3] ArmPkg/BaseMemoryLibStm: implement new IsZeroGuid() API function Ard Biesheuvel
2016-08-31  9:07 ` [PATCH 3/3] ArmPkg/BaseMemoryLibStm: implement new IsZeroBuffer() " Ard Biesheuvel
2016-08-31 12:48 ` [PATCH 0/3] ArmPkg: introduce IsZeroGuid() and IsZeroBuffer() Leif Lindholm
2016-09-02 11:33   ` Laszlo Ersek
2016-09-02 13:01     ` Leif Lindholm
2016-09-02 14:18       ` Laszlo Ersek
2016-09-02 14:40         ` Leif Lindholm

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160901125822.GW4715@bivouac.eciton.net \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox