public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH 0/3] ArmPkg: introduce IsZeroGuid() and IsZeroBuffer()
@ 2016-08-31  9:07 Ard Biesheuvel
  2016-08-31  9:07 ` [PATCH 1/3] ArmPkg: remove BaseMemoryLibVstm implementation of BaseMemoryLib Ard Biesheuvel
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Ard Biesheuvel @ 2016-08-31  9:07 UTC (permalink / raw)
  To: edk2-devel, leif.lindholm; +Cc: Ard Biesheuvel

The BaseMemoryLib API has recently been extended with IsZeroGuid() and
IsZeroBuffer(), so copy the generic implementations into the ArmPkg version
of this library.

Ard Biesheuvel (3):
  ArmPkg: remove BaseMemoryLibVstm implementation of BaseMemoryLib
  ArmPkg/BaseMemoryLibStm: implement new IsZeroGuid() API function
  ArmPkg/BaseMemoryLibStm: implement new IsZeroBuffer() API function

 ArmPkg/ArmPkg.dsc                                                                             |   2 -
 ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf                                          |   1 +
 ArmPkg/Library/{BaseMemoryLibVstm/ZeroMemWrapper.c => BaseMemoryLibStm/IsZeroBufferWrapper.c} |  28 ++-
 ArmPkg/Library/BaseMemoryLibStm/MemLibGeneric.c                                               |  29 +++
 ArmPkg/Library/BaseMemoryLibStm/MemLibGuid.c                                                  |  29 +++
 ArmPkg/Library/BaseMemoryLibStm/MemLibInternals.h                                             |  17 ++
 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 -------
 26 files changed, 91 insertions(+), 1921 deletions(-)
 rename ArmPkg/Library/{BaseMemoryLibVstm/ZeroMemWrapper.c => BaseMemoryLibStm/IsZeroBufferWrapper.c} (53%)
 delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.S
 delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.asm
 delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.S
 delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.asm
 delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/BaseMemoryLibVstm.inf
 delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/CompareMemWrapper.c
 delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/CopyMem.c
 delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/CopyMemWrapper.c
 delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/MemLibGeneric.c
 delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/MemLibGuid.c
 delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/MemLibInternals.h
 delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/ScanMem16Wrapper.c
 delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/ScanMem32Wrapper.c
 delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/ScanMem64Wrapper.c
 delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/ScanMem8Wrapper.c
 delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMem.c
 delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMem16Wrapper.c
 delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMem32Wrapper.c
 delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMem64Wrapper.c
 delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMemWrapper.c

-- 
2.7.4



^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 1/3] ArmPkg: remove BaseMemoryLibVstm implementation of BaseMemoryLib
  2016-08-31  9:07 [PATCH 0/3] ArmPkg: introduce IsZeroGuid() and IsZeroBuffer() Ard Biesheuvel
@ 2016-08-31  9:07 ` Ard Biesheuvel
  2016-09-01 12:58   ` Leif Lindholm
  2016-08-31  9:07 ` [PATCH 2/3] ArmPkg/BaseMemoryLibStm: implement new IsZeroGuid() API function Ard Biesheuvel
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 10+ messages in thread
From: Ard Biesheuvel @ 2016-08-31  9:07 UTC (permalink / raw)
  To: edk2-devel, leif.lindholm; +Cc: Ard Biesheuvel

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>
---
 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



^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/3] ArmPkg/BaseMemoryLibStm: implement new IsZeroGuid() API function
  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-08-31  9:07 ` 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
  3 siblings, 0 replies; 10+ messages in thread
From: Ard Biesheuvel @ 2016-08-31  9:07 UTC (permalink / raw)
  To: edk2-devel, leif.lindholm; +Cc: Ard Biesheuvel

BaseMemoryLib has recently been extended with an API function
IsZeroGuid(), so copy the default implementation into BaseMemoryLibStm
as well.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
 ArmPkg/Library/BaseMemoryLibStm/MemLibGuid.c | 29 ++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/ArmPkg/Library/BaseMemoryLibStm/MemLibGuid.c b/ArmPkg/Library/BaseMemoryLibStm/MemLibGuid.c
index 2b4ed5775581..36d42d71d79a 100644
--- a/ArmPkg/Library/BaseMemoryLibStm/MemLibGuid.c
+++ b/ArmPkg/Library/BaseMemoryLibStm/MemLibGuid.c
@@ -130,3 +130,32 @@ ScanGuid (
   }
   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);
+}
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 3/3] ArmPkg/BaseMemoryLibStm: implement new IsZeroBuffer() API function
  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-08-31  9:07 ` [PATCH 2/3] ArmPkg/BaseMemoryLibStm: implement new IsZeroGuid() API function Ard Biesheuvel
@ 2016-08-31  9:07 ` Ard Biesheuvel
  2016-08-31 12:48 ` [PATCH 0/3] ArmPkg: introduce IsZeroGuid() and IsZeroBuffer() Leif Lindholm
  3 siblings, 0 replies; 10+ messages in thread
From: Ard Biesheuvel @ 2016-08-31  9:07 UTC (permalink / raw)
  To: edk2-devel, leif.lindholm; +Cc: Ard Biesheuvel

BaseMemoryLib has recently been extended with an API function
IsZeroBuffer(), so copy the default implementation into BaseMemoryLibStm
as well.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
 ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf  |  1 +
 ArmPkg/Library/BaseMemoryLibStm/IsZeroBufferWrapper.c | 54 ++++++++++++++++++++
 ArmPkg/Library/BaseMemoryLibStm/MemLibGeneric.c       | 29 +++++++++++
 ArmPkg/Library/BaseMemoryLibStm/MemLibInternals.h     | 17 ++++++
 4 files changed, 101 insertions(+)

diff --git a/ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf b/ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf
index eac6cef96b31..30e2459bfd1e 100644
--- a/ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf
+++ b/ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf
@@ -45,6 +45,7 @@ [Sources.Common]
   SetMem16Wrapper.c
   SetMemWrapper.c
   CopyMemWrapper.c
+  IsZeroBufferWrapper.c
   MemLibGeneric.c
   MemLibGuid.c
   MemLibInternals.h
diff --git a/ArmPkg/Library/BaseMemoryLibStm/IsZeroBufferWrapper.c b/ArmPkg/Library/BaseMemoryLibStm/IsZeroBufferWrapper.c
new file mode 100644
index 000000000000..c42c1aa509b3
--- /dev/null
+++ b/ArmPkg/Library/BaseMemoryLibStm/IsZeroBufferWrapper.c
@@ -0,0 +1,54 @@
+/** @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.<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"
+
+/**
+  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
index 54c27012955f..43fbcb6b208f 100644
--- a/ArmPkg/Library/BaseMemoryLibStm/MemLibGeneric.c
+++ b/ArmPkg/Library/BaseMemoryLibStm/MemLibGeneric.c
@@ -262,3 +262,32 @@ InternalMemScanMem64 (
   } 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/MemLibInternals.h b/ArmPkg/Library/BaseMemoryLibStm/MemLibInternals.h
index 10c741f2c311..f7b44f527059 100644
--- a/ArmPkg/Library/BaseMemoryLibStm/MemLibInternals.h
+++ b/ArmPkg/Library/BaseMemoryLibStm/MemLibInternals.h
@@ -231,4 +231,21 @@ InternalMemScanMem64 (
   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
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/3] ArmPkg: introduce IsZeroGuid() and IsZeroBuffer()
  2016-08-31  9:07 [PATCH 0/3] ArmPkg: introduce IsZeroGuid() and IsZeroBuffer() Ard Biesheuvel
                   ` (2 preceding siblings ...)
  2016-08-31  9:07 ` [PATCH 3/3] ArmPkg/BaseMemoryLibStm: implement new IsZeroBuffer() " Ard Biesheuvel
@ 2016-08-31 12:48 ` Leif Lindholm
  2016-09-02 11:33   ` Laszlo Ersek
  3 siblings, 1 reply; 10+ messages in thread
From: Leif Lindholm @ 2016-08-31 12:48 UTC (permalink / raw)
  To: Ard Biesheuvel; +Cc: edk2-devel

On Wed, Aug 31, 2016 at 10:07:30AM +0100, Ard Biesheuvel wrote:
> The BaseMemoryLib API has recently been extended with IsZeroGuid() and
> IsZeroBuffer(), so copy the generic implementations into the ArmPkg version
> of this library.

Maybe this is a good point at which to move these into MdePkg, in the
hope that the ARM versions won't be overlooked in future API
revisions?

/
    Leif

> Ard Biesheuvel (3):
>   ArmPkg: remove BaseMemoryLibVstm implementation of BaseMemoryLib
>   ArmPkg/BaseMemoryLibStm: implement new IsZeroGuid() API function
>   ArmPkg/BaseMemoryLibStm: implement new IsZeroBuffer() API function
> 
>  ArmPkg/ArmPkg.dsc                                                                             |   2 -
>  ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf                                          |   1 +
>  ArmPkg/Library/{BaseMemoryLibVstm/ZeroMemWrapper.c => BaseMemoryLibStm/IsZeroBufferWrapper.c} |  28 ++-
>  ArmPkg/Library/BaseMemoryLibStm/MemLibGeneric.c                                               |  29 +++
>  ArmPkg/Library/BaseMemoryLibStm/MemLibGuid.c                                                  |  29 +++
>  ArmPkg/Library/BaseMemoryLibStm/MemLibInternals.h                                             |  17 ++
>  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 -------
>  26 files changed, 91 insertions(+), 1921 deletions(-)
>  rename ArmPkg/Library/{BaseMemoryLibVstm/ZeroMemWrapper.c => BaseMemoryLibStm/IsZeroBufferWrapper.c} (53%)
>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.S
>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.asm
>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.S
>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.asm
>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/BaseMemoryLibVstm.inf
>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/CompareMemWrapper.c
>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/CopyMem.c
>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/CopyMemWrapper.c
>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/MemLibGeneric.c
>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/MemLibGuid.c
>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/MemLibInternals.h
>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/ScanMem16Wrapper.c
>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/ScanMem32Wrapper.c
>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/ScanMem64Wrapper.c
>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/ScanMem8Wrapper.c
>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMem.c
>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMem16Wrapper.c
>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMem32Wrapper.c
>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMem64Wrapper.c
>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMemWrapper.c
> 
> -- 
> 2.7.4
> 


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/3] ArmPkg: remove BaseMemoryLibVstm implementation of BaseMemoryLib
  2016-08-31  9:07 ` [PATCH 1/3] ArmPkg: remove BaseMemoryLibVstm implementation of BaseMemoryLib Ard Biesheuvel
@ 2016-09-01 12:58   ` Leif Lindholm
  0 siblings, 0 replies; 10+ messages in thread
From: Leif Lindholm @ 2016-09-01 12:58 UTC (permalink / raw)
  To: Ard Biesheuvel; +Cc: edk2-devel

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
> 


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/3] ArmPkg: introduce IsZeroGuid() and IsZeroBuffer()
  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
  0 siblings, 1 reply; 10+ messages in thread
From: Laszlo Ersek @ 2016-09-02 11:33 UTC (permalink / raw)
  To: Leif Lindholm, Ard Biesheuvel; +Cc: edk2-devel

On 08/31/16 14:48, Leif Lindholm wrote:
> On Wed, Aug 31, 2016 at 10:07:30AM +0100, Ard Biesheuvel wrote:
>> The BaseMemoryLib API has recently been extended with IsZeroGuid() and
>> IsZeroBuffer(), so copy the generic implementations into the ArmPkg version
>> of this library.
> 
> Maybe this is a good point at which to move these into MdePkg, in the
> hope that the ARM versions won't be overlooked in future API
> revisions?

I strongly suggest / request that your (good) suggestion be implemented
as a separate endeavor. Moving this stuff into MdePkg is definitely
justified, but it will almost certainly take a good chunk of time.
Meanwhile the ArmVirtQemu builds remain broken.

I suggest to go ahead and commit patches #2 and #3 as well, and swiftly
at that. And, in order to keep ourselves honest about the longer term
goal, I propose to file a bug for the code movement in our Bugzilla
instance. (The affected packages should be MdePkg + ArmPkg.)

For patches #2 and #3:

Reviewed-by: Laszlo Ersek <lersek@redhat.com>

Can we please commit these patches today?

Thanks,
Laszlo

> 
> /
>     Leif
> 
>> Ard Biesheuvel (3):
>>   ArmPkg: remove BaseMemoryLibVstm implementation of BaseMemoryLib
>>   ArmPkg/BaseMemoryLibStm: implement new IsZeroGuid() API function
>>   ArmPkg/BaseMemoryLibStm: implement new IsZeroBuffer() API function
>>
>>  ArmPkg/ArmPkg.dsc                                                                             |   2 -
>>  ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf                                          |   1 +
>>  ArmPkg/Library/{BaseMemoryLibVstm/ZeroMemWrapper.c => BaseMemoryLibStm/IsZeroBufferWrapper.c} |  28 ++-
>>  ArmPkg/Library/BaseMemoryLibStm/MemLibGeneric.c                                               |  29 +++
>>  ArmPkg/Library/BaseMemoryLibStm/MemLibGuid.c                                                  |  29 +++
>>  ArmPkg/Library/BaseMemoryLibStm/MemLibInternals.h                                             |  17 ++
>>  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 -------
>>  26 files changed, 91 insertions(+), 1921 deletions(-)
>>  rename ArmPkg/Library/{BaseMemoryLibVstm/ZeroMemWrapper.c => BaseMemoryLibStm/IsZeroBufferWrapper.c} (53%)
>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.S
>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.asm
>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.S
>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.asm
>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/BaseMemoryLibVstm.inf
>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/CompareMemWrapper.c
>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/CopyMem.c
>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/CopyMemWrapper.c
>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/MemLibGeneric.c
>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/MemLibGuid.c
>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/MemLibInternals.h
>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/ScanMem16Wrapper.c
>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/ScanMem32Wrapper.c
>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/ScanMem64Wrapper.c
>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/ScanMem8Wrapper.c
>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMem.c
>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMem16Wrapper.c
>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMem32Wrapper.c
>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMem64Wrapper.c
>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMemWrapper.c
>>
>> -- 
>> 2.7.4
>>
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
> 



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/3] ArmPkg: introduce IsZeroGuid() and IsZeroBuffer()
  2016-09-02 11:33   ` Laszlo Ersek
@ 2016-09-02 13:01     ` Leif Lindholm
  2016-09-02 14:18       ` Laszlo Ersek
  0 siblings, 1 reply; 10+ messages in thread
From: Leif Lindholm @ 2016-09-02 13:01 UTC (permalink / raw)
  To: Laszlo Ersek; +Cc: Ard Biesheuvel, edk2-devel

On Fri, Sep 02, 2016 at 01:33:21PM +0200, Laszlo Ersek wrote:
> > Maybe this is a good point at which to move these into MdePkg, in the
> > hope that the ARM versions won't be overlooked in future API
> > revisions?
> 
> I strongly suggest / request that your (good) suggestion be implemented
> as a separate endeavor. Moving this stuff into MdePkg is definitely
> justified, but it will almost certainly take a good chunk of time.
> Meanwhile the ArmVirtQemu builds remain broken.
> 
> I suggest to go ahead and commit patches #2 and #3 as well, and swiftly
> at that. And, in order to keep ourselves honest about the longer term
> goal, I propose to file a bug for the code movement in our Bugzilla
> instance. (The affected packages should be MdePkg + ArmPkg.)

Surely if we're doing a panic fix, that should be to revert
313831d-72388f9?

If we're not doing that, let's do the thing that will reduce the
likelihood of this breaking again.
In the interest of speeding this up, I would propose to wait with
Ard's latest set (which deserves and is likely to see some more
discussion) and go ahead with:
- Nuking BaseMemoryLibVstm
- Moving BaseMemoryLibStm to MdePkg
  - Updating platforms in edk2 to reflect new location of
    BaseMemoryLibStm
- Add the new functions to BaseMemoryLibStm

This will interfere with nothing else under MdePkg, so could hopefully
be merged today anyway.

Would that be an acceptable compromise?

Regards,

Leif

> For patches #2 and #3:
> 
> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
> 
> Can we please commit these patches today?
> 
> Thanks,
> Laszlo
> 
> > 
> > /
> >     Leif
> > 
> >> Ard Biesheuvel (3):
> >>   ArmPkg: remove BaseMemoryLibVstm implementation of BaseMemoryLib
> >>   ArmPkg/BaseMemoryLibStm: implement new IsZeroGuid() API function
> >>   ArmPkg/BaseMemoryLibStm: implement new IsZeroBuffer() API function
> >>
> >>  ArmPkg/ArmPkg.dsc                                                                             |   2 -
> >>  ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf                                          |   1 +
> >>  ArmPkg/Library/{BaseMemoryLibVstm/ZeroMemWrapper.c => BaseMemoryLibStm/IsZeroBufferWrapper.c} |  28 ++-
> >>  ArmPkg/Library/BaseMemoryLibStm/MemLibGeneric.c                                               |  29 +++
> >>  ArmPkg/Library/BaseMemoryLibStm/MemLibGuid.c                                                  |  29 +++
> >>  ArmPkg/Library/BaseMemoryLibStm/MemLibInternals.h                                             |  17 ++
> >>  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 -------
> >>  26 files changed, 91 insertions(+), 1921 deletions(-)
> >>  rename ArmPkg/Library/{BaseMemoryLibVstm/ZeroMemWrapper.c => BaseMemoryLibStm/IsZeroBufferWrapper.c} (53%)
> >>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.S
> >>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.asm
> >>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.S
> >>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.asm
> >>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/BaseMemoryLibVstm.inf
> >>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/CompareMemWrapper.c
> >>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/CopyMem.c
> >>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/CopyMemWrapper.c
> >>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/MemLibGeneric.c
> >>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/MemLibGuid.c
> >>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/MemLibInternals.h
> >>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/ScanMem16Wrapper.c
> >>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/ScanMem32Wrapper.c
> >>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/ScanMem64Wrapper.c
> >>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/ScanMem8Wrapper.c
> >>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMem.c
> >>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMem16Wrapper.c
> >>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMem32Wrapper.c
> >>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMem64Wrapper.c
> >>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMemWrapper.c
> >>
> >> -- 
> >> 2.7.4
> >>
> > _______________________________________________
> > edk2-devel mailing list
> > edk2-devel@lists.01.org
> > https://lists.01.org/mailman/listinfo/edk2-devel
> > 
> 


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/3] ArmPkg: introduce IsZeroGuid() and IsZeroBuffer()
  2016-09-02 13:01     ` Leif Lindholm
@ 2016-09-02 14:18       ` Laszlo Ersek
  2016-09-02 14:40         ` Leif Lindholm
  0 siblings, 1 reply; 10+ messages in thread
From: Laszlo Ersek @ 2016-09-02 14:18 UTC (permalink / raw)
  To: Leif Lindholm; +Cc: Ard Biesheuvel, edk2-devel, Wu, Hao A

On 09/02/16 15:01, Leif Lindholm wrote:
> On Fri, Sep 02, 2016 at 01:33:21PM +0200, Laszlo Ersek wrote:
>>> Maybe this is a good point at which to move these into MdePkg, in the
>>> hope that the ARM versions won't be overlooked in future API
>>> revisions?
>>
>> I strongly suggest / request that your (good) suggestion be implemented
>> as a separate endeavor. Moving this stuff into MdePkg is definitely
>> justified, but it will almost certainly take a good chunk of time.
>> Meanwhile the ArmVirtQemu builds remain broken.
>>
>> I suggest to go ahead and commit patches #2 and #3 as well, and swiftly
>> at that. And, in order to keep ourselves honest about the longer term
>> goal, I propose to file a bug for the code movement in our Bugzilla
>> instance. (The affected packages should be MdePkg + ArmPkg.)
> 
> Surely if we're doing a panic fix, that should be to revert
> 313831d-72388f9?

I preferred a quick fix that was also not destructive. Patches #2 and #3
here can be considered the initial, basic implementation of the new
interfaces for ARM/AARCH64, which could (and should) have been part of
the original series (that introduced the breakage by missing them). IOW,
#2 and #3 could be construed as the continuation of that initial series,
for ARM/AARCH64.

> If we're not doing that, let's do the thing that will reduce the
> likelihood of this breaking again.
> In the interest of speeding this up, I would propose to wait with
> Ard's latest set (which deserves and is likely to see some more
> discussion) and go ahead with:
> - Nuking BaseMemoryLibVstm
> - Moving BaseMemoryLibStm to MdePkg
>   - Updating platforms in edk2 to reflect new location of
>     BaseMemoryLibStm
> - Add the new functions to BaseMemoryLibStm
> 
> This will interfere with nothing else under MdePkg, so could hopefully
> be merged today anyway.
> 
> Would that be an acceptable compromise?

I'd just like the tree to resume building. Doing anything at all under
MdePkg will require MdePkg reviewers to ACK the changes, which will
introduce delays. (Not because those reviewers are very slow, but
because MdePkg changes are always scrutinized, rightfully, with a fine
toothed comb.)

I wouldn't mind reverting the initial series either, except that it'd
require reviews for MdePkg and SecurityPkg changes... Same problem.

I'm quite sad that Hao missed grepping the tree for all INF files with
'LIBRARY_CLASS *= *BaseMemoryLib', when posting the original stuff :(

$ git grep -l 'LIBRARY_CLASS *= *BaseMemoryLib' -- '*inf'

ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf <---------
MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf
MdePkg/Library/BaseMemoryLibMmx/BaseMemoryLibMmx.inf
MdePkg/Library/BaseMemoryLibOptDxe/BaseMemoryLibOptDxe.inf
MdePkg/Library/BaseMemoryLibOptPei/BaseMemoryLibOptPei.inf
MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.inf
MdePkg/Library/BaseMemoryLibSse2/BaseMemoryLibSse2.inf
MdePkg/Library/PeiMemoryLib/PeiMemoryLib.inf
MdePkg/Library/UefiMemoryLib/UefiMemoryLib.inf

Sigh.

Thanks
Laszlo

> 
> Regards,
> 
> Leif
> 
>> For patches #2 and #3:
>>
>> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
>>
>> Can we please commit these patches today?
>>
>> Thanks,
>> Laszlo
>>
>>>
>>> /
>>>     Leif
>>>
>>>> Ard Biesheuvel (3):
>>>>   ArmPkg: remove BaseMemoryLibVstm implementation of BaseMemoryLib
>>>>   ArmPkg/BaseMemoryLibStm: implement new IsZeroGuid() API function
>>>>   ArmPkg/BaseMemoryLibStm: implement new IsZeroBuffer() API function
>>>>
>>>>  ArmPkg/ArmPkg.dsc                                                                             |   2 -
>>>>  ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf                                          |   1 +
>>>>  ArmPkg/Library/{BaseMemoryLibVstm/ZeroMemWrapper.c => BaseMemoryLibStm/IsZeroBufferWrapper.c} |  28 ++-
>>>>  ArmPkg/Library/BaseMemoryLibStm/MemLibGeneric.c                                               |  29 +++
>>>>  ArmPkg/Library/BaseMemoryLibStm/MemLibGuid.c                                                  |  29 +++
>>>>  ArmPkg/Library/BaseMemoryLibStm/MemLibInternals.h                                             |  17 ++
>>>>  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 -------
>>>>  26 files changed, 91 insertions(+), 1921 deletions(-)
>>>>  rename ArmPkg/Library/{BaseMemoryLibVstm/ZeroMemWrapper.c => BaseMemoryLibStm/IsZeroBufferWrapper.c} (53%)
>>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.S
>>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.asm
>>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.S
>>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.asm
>>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/BaseMemoryLibVstm.inf
>>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/CompareMemWrapper.c
>>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/CopyMem.c
>>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/CopyMemWrapper.c
>>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/MemLibGeneric.c
>>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/MemLibGuid.c
>>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/MemLibInternals.h
>>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/ScanMem16Wrapper.c
>>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/ScanMem32Wrapper.c
>>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/ScanMem64Wrapper.c
>>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/ScanMem8Wrapper.c
>>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMem.c
>>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMem16Wrapper.c
>>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMem32Wrapper.c
>>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMem64Wrapper.c
>>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMemWrapper.c
>>>>
>>>> -- 
>>>> 2.7.4
>>>>
>>> _______________________________________________
>>> edk2-devel mailing list
>>> edk2-devel@lists.01.org
>>> https://lists.01.org/mailman/listinfo/edk2-devel
>>>
>>



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/3] ArmPkg: introduce IsZeroGuid() and IsZeroBuffer()
  2016-09-02 14:18       ` Laszlo Ersek
@ 2016-09-02 14:40         ` Leif Lindholm
  0 siblings, 0 replies; 10+ messages in thread
From: Leif Lindholm @ 2016-09-02 14:40 UTC (permalink / raw)
  To: Laszlo Ersek
  Cc: Ard Biesheuvel, edk2-devel, Wu, Hao A, afish, michael.d.kinney

On Fri, Sep 02, 2016 at 04:18:11PM +0200, Laszlo Ersek wrote:
> > If we're not doing that, let's do the thing that will reduce the
> > likelihood of this breaking again.
> > In the interest of speeding this up, I would propose to wait with
> > Ard's latest set (which deserves and is likely to see some more
> > discussion) and go ahead with:
> > - Nuking BaseMemoryLibVstm
> > - Moving BaseMemoryLibStm to MdePkg
> >   - Updating platforms in edk2 to reflect new location of
> >     BaseMemoryLibStm
> > - Add the new functions to BaseMemoryLibStm
> > 
> > This will interfere with nothing else under MdePkg, so could hopefully
> > be merged today anyway.
> > 
> > Would that be an acceptable compromise?
> 
> I'd just like the tree to resume building. Doing anything at all under
> MdePkg will require MdePkg reviewers to ACK the changes, which will
> introduce delays. (Not because those reviewers are very slow, but
> because MdePkg changes are always scrutinized, rightfully, with a fine
> toothed comb.)

So, I've sent out the series I proposed (Ard had already pushed the
removal of BaseMemoryLibVstm). The series touches nothing other than
moving the BaseMemoryLibStm directory under MdePkg, and adding the new
functions to that directory. Hopefully Mike should be able to pick
this up today.

Otherwise I could always make my first attempt at invoking steward
privilege and push myself (but I would want some R-b for that)...

On that note - adding Andrew for opinions.

Regards,

Leif

> I wouldn't mind reverting the initial series either, except that it'd
> require reviews for MdePkg and SecurityPkg changes... Same problem.
> 
> I'm quite sad that Hao missed grepping the tree for all INF files with
> 'LIBRARY_CLASS *= *BaseMemoryLib', when posting the original stuff :(
> 
> $ git grep -l 'LIBRARY_CLASS *= *BaseMemoryLib' -- '*inf'
> 
> ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf <---------
> MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf
> MdePkg/Library/BaseMemoryLibMmx/BaseMemoryLibMmx.inf
> MdePkg/Library/BaseMemoryLibOptDxe/BaseMemoryLibOptDxe.inf
> MdePkg/Library/BaseMemoryLibOptPei/BaseMemoryLibOptPei.inf
> MdePkg/Library/BaseMemoryLibRepStr/BaseMemoryLibRepStr.inf
> MdePkg/Library/BaseMemoryLibSse2/BaseMemoryLibSse2.inf
> MdePkg/Library/PeiMemoryLib/PeiMemoryLib.inf
> MdePkg/Library/UefiMemoryLib/UefiMemoryLib.inf
> 
> Sigh.
> 
> Thanks
> Laszlo
> 
> > 
> > Regards,
> > 
> > Leif
> > 
> >> For patches #2 and #3:
> >>
> >> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
> >>
> >> Can we please commit these patches today?
> >>
> >> Thanks,
> >> Laszlo
> >>
> >>>
> >>> /
> >>>     Leif
> >>>
> >>>> Ard Biesheuvel (3):
> >>>>   ArmPkg: remove BaseMemoryLibVstm implementation of BaseMemoryLib
> >>>>   ArmPkg/BaseMemoryLibStm: implement new IsZeroGuid() API function
> >>>>   ArmPkg/BaseMemoryLibStm: implement new IsZeroBuffer() API function
> >>>>
> >>>>  ArmPkg/ArmPkg.dsc                                                                             |   2 -
> >>>>  ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf                                          |   1 +
> >>>>  ArmPkg/Library/{BaseMemoryLibVstm/ZeroMemWrapper.c => BaseMemoryLibStm/IsZeroBufferWrapper.c} |  28 ++-
> >>>>  ArmPkg/Library/BaseMemoryLibStm/MemLibGeneric.c                                               |  29 +++
> >>>>  ArmPkg/Library/BaseMemoryLibStm/MemLibGuid.c                                                  |  29 +++
> >>>>  ArmPkg/Library/BaseMemoryLibStm/MemLibInternals.h                                             |  17 ++
> >>>>  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 -------
> >>>>  26 files changed, 91 insertions(+), 1921 deletions(-)
> >>>>  rename ArmPkg/Library/{BaseMemoryLibVstm/ZeroMemWrapper.c => BaseMemoryLibStm/IsZeroBufferWrapper.c} (53%)
> >>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.S
> >>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/Arm/CopyMem.asm
> >>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.S
> >>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/Arm/SetMem.asm
> >>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/BaseMemoryLibVstm.inf
> >>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/CompareMemWrapper.c
> >>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/CopyMem.c
> >>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/CopyMemWrapper.c
> >>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/MemLibGeneric.c
> >>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/MemLibGuid.c
> >>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/MemLibInternals.h
> >>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/ScanMem16Wrapper.c
> >>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/ScanMem32Wrapper.c
> >>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/ScanMem64Wrapper.c
> >>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/ScanMem8Wrapper.c
> >>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMem.c
> >>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMem16Wrapper.c
> >>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMem32Wrapper.c
> >>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMem64Wrapper.c
> >>>>  delete mode 100644 ArmPkg/Library/BaseMemoryLibVstm/SetMemWrapper.c
> >>>>
> >>>> -- 
> >>>> 2.7.4
> >>>>
> >>> _______________________________________________
> >>> edk2-devel mailing list
> >>> edk2-devel@lists.01.org
> >>> https://lists.01.org/mailman/listinfo/edk2-devel
> >>>
> >>
> 


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2016-09-02 14:40 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox