diff --git a/ArmPkg/ArmPkg.dsc b/ArmPkg/ArmPkg.dsc
index 6a8ff7e621d7..ed7e482ddd62 100644
--- a/ArmPkg/ArmPkg.dsc
+++ b/ArmPkg/ArmPkg.dsc
@@ -106,7 +106,6 @@ [Components.common]
   ArmPkg/Library/ArmCacheMaintenanceLib/ArmCacheMaintenanceLib.inf
   ArmPkg/Library/ArmDisassemblerLib/ArmDisassemblerLib.inf
   ArmPkg/Library/ArmDmaLib/ArmDmaLib.inf
-  ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf
   ArmPkg/Library/BdsLib/BdsLib.inf
   ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf
   ArmPkg/Library/DebugAgentSymbolsBaseLib/DebugAgentSymbolsBaseLib.inf
diff --git a/ArmPkg/Library/BaseMemoryLibStm/AArch64/CopyMem.c b/ArmPkg/Library/BaseMemoryLibStm/AArch64/CopyMem.c
deleted file mode 100644
index 71ae02a03e73..000000000000
--- a/ArmPkg/Library/BaseMemoryLibStm/AArch64/CopyMem.c
+++ /dev/null
@@ -1,146 +0,0 @@
-/** @file
-
-  Copyright (c) 2012-2013, ARM Ltd. All rights reserved.<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;
-  volatile UINT32                   *Destination32;
-  CONST UINT32                      *Source32;
-  volatile UINT64                   *Destination64;
-  CONST UINT64                      *Source64;
-  UINTN                             Alignment;
-
-  if ((((UINTN)DestinationBuffer & 0x7) == 0) && (((UINTN)SourceBuffer & 0x7) == 0) && (Length >= 8)) {
-    if (SourceBuffer > DestinationBuffer) {
-      Destination64 = (UINT64*)DestinationBuffer;
-      Source64 = (CONST UINT64*)SourceBuffer;
-      while (Length >= 8) {
-        *(Destination64++) = *(Source64++);
-        Length -= 8;
-      }
-
-      // Finish if there are still some bytes to copy
-      Destination8 = (UINT8*)Destination64;
-      Source8 = (CONST UINT8*)Source64;
-      while (Length-- != 0) {
-        *(Destination8++) = *(Source8++);
-      }
-    } else if (SourceBuffer < DestinationBuffer) {
-      Destination64 = (UINT64*)((UINTN)DestinationBuffer + Length);
-      Source64 = (CONST UINT64*)((UINTN)SourceBuffer + Length);
-
-      // Destination64 and Source64 were aligned on a 64-bit boundary
-      // but if length is not a multiple of 8 bytes then they won't be
-      // anymore.
-
-      Alignment = Length & 0x7;
-      if (Alignment != 0) {
-        Destination8 = (UINT8*)Destination64;
-        Source8 = (CONST UINT8*)Source64;
-
-        while (Alignment-- != 0) {
-          *(--Destination8) = *(--Source8);
-          --Length;
-        }
-        Destination64 = (UINT64*)Destination8;
-        Source64 = (CONST UINT64*)Source8;
-      }
-
-      while (Length > 0) {
-        *(--Destination64) = *(--Source64);
-        Length -= 8;
-      }
-    }
-  } else if ((((UINTN)DestinationBuffer & 0x3) == 0) && (((UINTN)SourceBuffer & 0x3) == 0) && (Length >= 4)) {
-    if (SourceBuffer > DestinationBuffer) {
-      Destination32 = (UINT32*)DestinationBuffer;
-      Source32 = (CONST UINT32*)SourceBuffer;
-      while (Length >= 4) {
-        *(Destination32++) = *(Source32++);
-        Length -= 4;
-      }
-
-      // Finish if there are still some bytes to copy
-      Destination8 = (UINT8*)Destination32;
-      Source8 = (CONST UINT8*)Source32;
-      while (Length-- != 0) {
-        *(Destination8++) = *(Source8++);
-      }
-    } else if (SourceBuffer < DestinationBuffer) {
-      Destination32 = (UINT32*)((UINTN)DestinationBuffer + Length);
-      Source32 = (CONST UINT32*)((UINTN)SourceBuffer + Length);
-
-      // Destination32 and Source32 were aligned on a 32-bit boundary
-      // but if length is not a multiple of 4 bytes then they won't be
-      // anymore.
-
-      Alignment = Length & 0x3;
-      if (Alignment != 0) {
-        Destination8 = (UINT8*)Destination32;
-        Source8 = (CONST UINT8*)Source32;
-
-        while (Alignment-- != 0) {
-          *(--Destination8) = *(--Source8);
-          --Length;
-        }
-        Destination32 = (UINT32*)Destination8;
-        Source32 = (CONST UINT32*)Source8;
-      }
-
-      while (Length > 0) {
-        *(--Destination32) = *(--Source32);
-        Length -= 4;
-      }
-    }
-  } else {
-    if (SourceBuffer > DestinationBuffer) {
-      Destination8 = (UINT8*)DestinationBuffer;
-      Source8 = (CONST UINT8*)SourceBuffer;
-      while (Length-- != 0) {
-        *(Destination8++) = *(Source8++);
-      }
-    } else if (SourceBuffer < DestinationBuffer) {
-      Destination8 = (UINT8*)DestinationBuffer + Length;
-      Source8 = (CONST UINT8*)SourceBuffer + Length;
-      while (Length-- != 0) {
-        *(--Destination8) = *(--Source8);
-      }
-    }
-  }
-  return DestinationBuffer;
-}
diff --git a/ArmPkg/Library/BaseMemoryLibStm/AArch64/SetMem.c b/ArmPkg/Library/BaseMemoryLibStm/AArch64/SetMem.c
deleted file mode 100644
index 368a819e599f..000000000000
--- a/ArmPkg/Library/BaseMemoryLibStm/AArch64/SetMem.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/** @file
-
-  Copyright (c) 2012-2013, ARM Ltd. All rights reserved.<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                    *Pointer8;
-  volatile UINT32                   *Pointer32;
-  volatile UINT64                   *Pointer64;
-  UINT32                            Value32;
-  UINT64                            Value64;
-
-  if ((((UINTN)Buffer & 0x7) == 0) && (Length >= 8)) {
-    // Generate the 64bit value
-    Value32 = (Value << 24) | (Value << 16) | (Value << 8) | Value;
-    Value64 = (((UINT64)Value32) << 32) | Value32;
-
-    Pointer64 = (UINT64*)Buffer;
-    while (Length >= 8) {
-      *(Pointer64++) = Value64;
-      Length -= 8;
-    }
-
-    // Finish with bytes if needed
-    Pointer8 = (UINT8*)Pointer64;
-    while (Length-- > 0) {
-      *(Pointer8++) = Value;
-    }
-  } else if ((((UINTN)Buffer & 0x3) == 0) && (Length >= 4)) {
-    // Generate the 32bit value
-    Value32 = (Value << 24) | (Value << 16) | (Value << 8) | Value;
-
-    Pointer32 = (UINT32*)Buffer;
-    while (Length >= 4) {
-      *(Pointer32++) = Value32;
-      Length -= 4;
-    }
-
-    // Finish with bytes if needed
-    Pointer8 = (UINT8*)Pointer32;
-    while (Length-- > 0) {
-      *(Pointer8++) = Value;
-    }
-  } else {
-    Pointer8 = (UINT8*)Buffer;
-    while (Length-- > 0) {
-      *(Pointer8++) = Value;
-    }
-  }
-  return Buffer;
-}
diff --git a/ArmPkg/Library/BaseMemoryLibStm/Arm/CopyMem.S b/ArmPkg/Library/BaseMemoryLibStm/Arm/CopyMem.S
deleted file mode 100644
index f90589c22594..000000000000
--- a/ArmPkg/Library/BaseMemoryLibStm/Arm/CopyMem.S
+++ /dev/null
@@ -1,169 +0,0 @@
-#------------------------------------------------------------------------------
-#
-# CopyMem() worker for ARM
-#
-# This file started out as C code that did 64 bit moves if the buffer was
-# 32-bit aligned, else it does a byte copy. It also does a byte copy for
-# any trailing bytes. It was updated to do 32-byte copies using stm/ldm.
-#
-# Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<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-r11, lr}
-  // Save the input parameters in extra registers (r11 = destination, r14 = source, r12 = length)
-  mov  r11, r0
-  mov  r10, r0
-  mov  r12, r2
-  mov  r14, r1
-
-memcopy_check_overlapped:
-  cmp  r11, r1
-  // If (dest < source)
-  bcc  memcopy_check_optim_default
-  // If (dest <= source). But with the previous condition ->  If (dest == source)
-  bls  memcopy_end
-
-  // If (source + length < dest)
-  rsb  r3, r1, r11
-  cmp  r12, r3
-  bcc  memcopy_check_optim_default
-
-  // If (length == 0)
-  cmp  r12, #0
-  beq  memcopy_end
-
-  b     memcopy_check_optim_overlap
-
-memcopy_check_optim_default:
-  // Check if we can use an optimized path ((length >= 32) && destination word-aligned && source word-aligned) for the memcopy (optimized path if r0 == 1)
-  tst  r0, #0xF
-  movne  r0, #0
-  bne   memcopy_default
-  tst  r1, #0xF
-  movne  r3, #0
-  moveq  r3, #1
-  cmp  r2, #31
-  movls  r0, #0
-  andhi  r0, r3, #1
-  b     memcopy_default
-
-memcopy_check_optim_overlap:
-  // r10 = dest_end, r14 = source_end
-  add  r10, r11, r12
-  add  r14, r12, r1
-
-  // Are we in the optimized case ((length >= 32) && dest_end word-aligned && source_end word-aligned)
-  cmp  r2, #31
-  movls  r0, #0
-  movhi  r0, #1
-  tst  r10, #0xF
-  movne  r0, #0
-  tst  r14, #0xF
-  movne  r0, #0
-  b  memcopy_overlapped
-
-memcopy_overlapped_non_optim:
-  // We read 1 byte from the end of the source buffer
-  sub  r3, r14, #1
-  sub  r12, r12, #1
-  ldrb  r3, [r3, #0]
-  sub  r2, r10, #1
-  cmp  r12, #0
-  // We write 1 byte at the end of the dest buffer
-  sub  r10, r10, #1
-  sub  r14, r14, #1
-  strb  r3, [r2, #0]
-  bne  memcopy_overlapped_non_optim
-  b   memcopy_end
-
-// r10 = dest_end, r14 = source_end
-memcopy_overlapped:
-  // Are we in the optimized case ?
-  cmp  r0, #0
-  beq  memcopy_overlapped_non_optim
-
-  // Optimized Overlapped - Read 32 bytes
-  sub  r14, r14, #32
-  sub  r12, r12, #32
-  cmp  r12, #31
-  ldmia  r14, {r2-r9}
-
-  // If length is less than 32 then disable optim
-  movls  r0, #0
-
-  cmp  r12, #0
-
-  // Optimized Overlapped - Write 32 bytes
-  sub  r10, r10, #32
-  stmia  r10, {r2-r9}
-
-  // while (length != 0)
-  bne  memcopy_overlapped
-  b   memcopy_end
-
-memcopy_default_non_optim:
-  // Byte copy
-  ldrb  r3, [r14], #1
-  sub  r12, r12, #1
-  strb  r3, [r10], #1
-
-memcopy_default:
-  cmp  r12, #0
-  beq  memcopy_end
-
-// r10 = dest, r14 = source
-memcopy_default_loop:
-  cmp  r0, #0
-  beq  memcopy_default_non_optim
-
-  // Optimized memcopy - Read 32 Bytes
-  sub  r12, r12, #32
-  cmp  r12, #31
-  ldmia  r14!, {r2-r9}
-
-  // If length is less than 32 then disable optim
-  movls  r0, #0
-
-  cmp  r12, #0
-
-  // Optimized memcopy - Write 32 Bytes
-  stmia  r10!, {r2-r9}
-
-  // while (length != 0)
-  bne  memcopy_default_loop
-
-memcopy_end:
-  mov  r0, r11
-  ldmfd  sp!, {r4-r11, pc}
-
diff --git a/ArmPkg/Library/BaseMemoryLibStm/Arm/CopyMem.asm b/ArmPkg/Library/BaseMemoryLibStm/Arm/CopyMem.asm
deleted file mode 100644
index 686253e5e5b3..000000000000
--- a/ArmPkg/Library/BaseMemoryLibStm/Arm/CopyMem.asm
+++ /dev/null
@@ -1,172 +0,0 @@
-;------------------------------------------------------------------------------
-;
-; CopyMem() worker for ARM
-;
-; This file started out as C code that did 64 bit moves if the buffer was
-; 32-bit aligned, else it does a byte copy. It also does a byte copy for
-; any trailing bytes. It was updated to do 32-byte copies using stm/ldm.
-;
-; Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<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-r11, lr}
-  // Save the input parameters in extra registers (r11 = destination, r14 = source, r12 = length)
-  mov  r11, r0
-  mov  r10, r0
-  mov  r12, r2
-  mov  r14, r1
-
-memcopy_check_overlapped
-  cmp  r11, r1
-  // If (dest < source)
-  bcc  memcopy_check_optim_default
-  // If (dest <= source). But with the previous condition ->  If (dest == source)
-  bls  memcopy_end
-
-  // If (source + length < dest)
-  rsb  r3, r1, r11
-  cmp  r12, r3
-  bcc  memcopy_check_optim_default
-
-  // If (length == 0)
-  cmp  r12, #0
-  beq  memcopy_end
-
-  b     memcopy_check_optim_overlap
-
-memcopy_check_optim_default
-  // Check if we can use an optimized path ((length >= 32) && destination word-aligned && source word-aligned) for the memcopy (optimized path if r0 == 1)
-  tst  r0, #0xF
-  movne  r0, #0
-  bne   memcopy_default
-  tst  r1, #0xF
-  movne  r3, #0
-  moveq  r3, #1
-  cmp  r2, #31
-  movls  r0, #0
-  andhi  r0, r3, #1
-  b     memcopy_default
-
-memcopy_check_optim_overlap
-  // r10 = dest_end, r14 = source_end
-  add  r10, r11, r12
-  add  r14, r12, r1
-
-  // Are we in the optimized case ((length >= 32) && dest_end word-aligned && source_end word-aligned)
-  cmp  r2, #31
-  movls  r0, #0
-  movhi  r0, #1
-  tst  r10, #0xF
-  movne  r0, #0
-  tst  r14, #0xF
-  movne  r0, #0
-  b  memcopy_overlapped
-
-memcopy_overlapped_non_optim
-  // We read 1 byte from the end of the source buffer
-  sub  r3, r14, #1
-  sub  r12, r12, #1
-  ldrb  r3, [r3, #0]
-  sub  r2, r10, #1
-  cmp  r12, #0
-  // We write 1 byte at the end of the dest buffer
-  sub  r10, r10, #1
-  sub  r14, r14, #1
-  strb  r3, [r2, #0]
-  bne  memcopy_overlapped_non_optim
-  b   memcopy_end
-
-// r10 = dest_end, r14 = source_end
-memcopy_overlapped
-  // Are we in the optimized case ?
-  cmp  r0, #0
-  beq  memcopy_overlapped_non_optim
-
-  // Optimized Overlapped - Read 32 bytes
-  sub  r14, r14, #32
-  sub  r12, r12, #32
-  cmp  r12, #31
-  ldmia  r14, {r2-r9}
-
-  // If length is less than 32 then disable optim
-  movls  r0, #0
-
-  cmp  r12, #0
-
-  // Optimized Overlapped - Write 32 bytes
-  sub  r10, r10, #32
-  stmia  r10, {r2-r9}
-
-  // while (length != 0)
-  bne  memcopy_overlapped
-  b   memcopy_end
-
-memcopy_default_non_optim
-  // Byte copy
-  ldrb  r3, [r14], #1
-  sub  r12, r12, #1
-  strb  r3, [r10], #1
-
-memcopy_default
-  cmp  r12, #0
-  beq  memcopy_end
-
-// r10 = dest, r14 = source
-memcopy_default_loop
-  cmp  r0, #0
-  beq  memcopy_default_non_optim
-
-  // Optimized memcopy - Read 32 Bytes
-  sub  r12, r12, #32
-  cmp  r12, #31
-  ldmia  r14!, {r2-r9}
-
-  // If length is less than 32 then disable optim
-  movls  r0, #0
-
-  cmp  r12, #0
-
-  // Optimized memcopy - Write 32 Bytes
-  stmia  r10!, {r2-r9}
-
-  // while (length != 0)
-  bne  memcopy_default_loop
-
-memcopy_end
-  mov  r0, r11
-  ldmfd  sp!, {r4-r11, pc}
-
-  END
-
diff --git a/ArmPkg/Library/BaseMemoryLibStm/Arm/SetMem.S b/ArmPkg/Library/BaseMemoryLibStm/Arm/SetMem.S
deleted file mode 100644
index 242de95f74d1..000000000000
--- a/ArmPkg/Library/BaseMemoryLibStm/Arm/SetMem.S
+++ /dev/null
@@ -1,81 +0,0 @@
-#------------------------------------------------------------------------------
-#
-# SemMem() worker for ARM
-#
-# This file started out as C code that did 64 bit moves if the buffer was
-# 32-bit aligned, else it does a byte copy. It also does a byte copy for
-# any trailing bytes. It was updated to do 32-byte at a time.
-#
-# Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<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
-  )
-**/
-
-.syntax unified
-
-ASM_FUNC(InternalMemSetMem)
-  stmfd  sp!, {r4-r11, lr}
-  tst    r0, #3
-  movne  r3, #0
-  moveq  r3, #1
-  cmp    r1, #31
-  movls lr, #0
-  andhi  lr, r3, #1
-  cmp    lr, #0
-  mov    r12, r0
-  bne    L31
-L32:
-  mov    r3, #0
-  b      L43
-L31:
-  and   r4, r2, #0xff
-  orr   r4, r4, r4, LSL #8
-  orr   r4, r4, r4, LSL #16
-  mov   r5, r4
-  mov   r6, r4
-  mov   r7, r4
-  mov   r8, r4
-  mov   r9, r4
-  mov   r10, r4
-  mov   r11, r4
-  b      L32
-L34:
-  cmp      lr, #0
-  strbeq  r2, [r12], #1
-  subeq    r1, r1, #1
-  beq      L43
-  sub      r1, r1, #32
-  cmp      r1, #31
-  movls    lr, r3
-  stmia    r12!, {r4-r11}
-L43:
-  cmp      r1, #0
-  bne      L34
-  ldmfd    sp!, {r4-r11, pc}
-
diff --git a/ArmPkg/Library/BaseMemoryLibStm/Arm/SetMem.asm b/ArmPkg/Library/BaseMemoryLibStm/Arm/SetMem.asm
deleted file mode 100644
index 1d5191f78fe3..000000000000
--- a/ArmPkg/Library/BaseMemoryLibStm/Arm/SetMem.asm
+++ /dev/null
@@ -1,80 +0,0 @@
-;------------------------------------------------------------------------------
-;
-; SetMem() worker for ARM
-;
-; This file started out as C code that did 64 bit moves if the buffer was
-; 32-bit aligned, else it does a byte copy. It also does a byte copy for
-; any trailing bytes. It was updated to do 32-byte at a time.
-;
-; Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<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!, {r4-r11, lr}
-  tst    r0, #3
-  movne  r3, #0
-  moveq  r3, #1
-  cmp    r1, #31
-  movls lr, #0
-  andhi  lr, r3, #1
-  cmp    lr, #0
-  mov    r12, r0
-  bne    L31
-L32
-  mov    r3, #0
-  b      L43
-L31
-  and   r4, r2, #0xff
-  orr   r4, r4, r4, LSL #8
-  orr   r4, r4, r4, LSL #16
-  mov   r5, r4
-  mov   r6, r4
-  mov   r7, r4
-  mov   r8, r4
-  mov   r9, r4
-  mov   r10, r4
-  mov   r11, r4
-  b      L32
-L34
-  cmp      lr, #0
-  streqb  r2, [r12], #1
-  subeq    r1, r1, #1
-  beq      L43
-  sub      r1, r1, #32
-  cmp      r1, #31
-  movls    lr, r3
-  stmia    r12!, {r4-r11}
-L43
-  cmp      r1, #0
-  bne      L34
-  ldmfd    sp!, {r4-r11, pc}
-
-  END
diff --git a/ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf b/ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf
deleted file mode 100644
index 30e2459bfd1e..000000000000
--- a/ArmPkg/Library/BaseMemoryLibStm/BaseMemoryLibStm.inf
+++ /dev/null
@@ -1,70 +0,0 @@
-## @file
-#  Instance of Base Memory Library with some ARM ldm/stm assembly.
-#
-#  This is a copy of the MdePkg BaseMemoryLib with the CopyMem and
-#  SetMem worker functions replaced with assembler that uses
-#  ldm/stm.
-#
-#  Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
-#  Portions copyright (c) 2010, Apple Inc. All rights reserved.<BR>
-#  Portions copyright (c) 2011 - 2013, ARM Ltd. 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                      = BaseMemoryLibStm
-  FILE_GUID                      = 4D466AF3-2380-448D-A337-E4033F29F3F7
-  MODULE_TYPE                    = BASE
-  VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = BaseMemoryLib
-
-
-#
-#  VALID_ARCHITECTURES           = ARM AARCH64
-#
-
-
-[Sources.Common]
-  ScanMem64Wrapper.c
-  ScanMem32Wrapper.c
-  ScanMem16Wrapper.c
-  ScanMem8Wrapper.c
-  ZeroMemWrapper.c
-  CompareMemWrapper.c
-  SetMem64Wrapper.c
-  SetMem32Wrapper.c
-  SetMem16Wrapper.c
-  SetMemWrapper.c
-  CopyMemWrapper.c
-  IsZeroBufferWrapper.c
-  MemLibGeneric.c
-  MemLibGuid.c
-  MemLibInternals.h
-
-[Sources.ARM]
-  Arm/CopyMem.asm
-  Arm/CopyMem.S
-  Arm/SetMem.asm
-  Arm/SetMem.S
-
-[Sources.AARCH64]
-  AArch64/CopyMem.c
-  AArch64/SetMem.c
-
-[Packages]
-  MdePkg/MdePkg.dec
-  ArmPkg/ArmPkg.dec
-
-[LibraryClasses]
-  DebugLib
-  BaseLib
-
diff --git a/ArmPkg/Library/BaseMemoryLibStm/CompareMemWrapper.c b/ArmPkg/Library/BaseMemoryLibStm/CompareMemWrapper.c
deleted file mode 100644
index c83988f59ecb..000000000000
--- a/ArmPkg/Library/BaseMemoryLibStm/CompareMemWrapper.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/** @file
-  CompareMem() implementation.
-
-  The following BaseMemoryLib instances contain the same copy of this file:
-    BaseMemoryLib
-    BaseMemoryLibMmx
-    BaseMemoryLibSse2
-    BaseMemoryLibRepStr
-    BaseMemoryLibOptDxe
-    BaseMemoryLibOptPei
-    PeiMemoryLib
-    UefiMemoryLib
-
-Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<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/BaseMemoryLibStm/CopyMem.c b/ArmPkg/Library/BaseMemoryLibStm/CopyMem.c
deleted file mode 100644
index b30faed5607d..000000000000
--- a/ArmPkg/Library/BaseMemoryLibStm/CopyMem.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/** @file
-  Implementation of the InternalMemCopyMem routine. This function is broken
-  out into its own source file so that it can be excluded from a build for a
-  particular platform easily if an optimized version is desired.
-
-  Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<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/BaseMemoryLibStm/CopyMemWrapper.c b/ArmPkg/Library/BaseMemoryLibStm/CopyMemWrapper.c
deleted file mode 100644
index 2adfb3114910..000000000000
--- a/ArmPkg/Library/BaseMemoryLibStm/CopyMemWrapper.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/** @file
-  CopyMem() implementation.
-
-  The following BaseMemoryLib instances contain the same copy of this file:
-
-    BaseMemoryLib
-    BaseMemoryLibMmx
-    BaseMemoryLibSse2
-    BaseMemoryLibRepStr
-    BaseMemoryLibOptDxe
-    BaseMemoryLibOptPei
-    PeiMemoryLib
-    UefiMemoryLib
-
-  Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<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/BaseMemoryLibStm/IsZeroBufferWrapper.c b/ArmPkg/Library/BaseMemoryLibStm/IsZeroBufferWrapper.c
deleted file mode 100644
index c42c1aa509b3..000000000000
--- a/ArmPkg/Library/BaseMemoryLibStm/IsZeroBufferWrapper.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/** @file
-  Implementation of IsZeroBuffer function.
-
-  The following BaseMemoryLib instances contain the same copy of this file:
-
-    BaseMemoryLib
-    BaseMemoryLibMmx
-    BaseMemoryLibSse2
-    BaseMemoryLibRepStr
-    BaseMemoryLibOptDxe
-    BaseMemoryLibOptPei
-    PeiMemoryLib
-    UefiMemoryLib
-
-  Copyright (c) 2016, Intel Corporation. All rights reserved.<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
deleted file mode 100644
index 43fbcb6b208f..000000000000
--- a/ArmPkg/Library/BaseMemoryLibStm/MemLibGeneric.c
+++ /dev/null
@@ -1,293 +0,0 @@
-/** @file
-  Architecture Independent Base Memory Library Implementation.
-
-  The following BaseMemoryLib instances contain the same copy of this file:
-    BaseMemoryLib
-    PeiMemoryLib
-    UefiMemoryLib
-
-  Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<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;
-}
-
-/**
-  Checks whether the contents of a buffer are all zeros.
-
-  @param  Buffer  The pointer to the buffer to be checked.
-  @param  Length  The size of the buffer (in bytes) to be checked.
-
-  @retval TRUE    Contents of the buffer are all zeros.
-  @retval FALSE   Contents of the buffer are not all zeros.
-
-**/
-BOOLEAN
-EFIAPI
-InternalMemIsZeroBuffer (
-  IN CONST VOID  *Buffer,
-  IN UINTN       Length
-  )
-{
-  CONST UINT8 *BufferData;
-  UINTN       Index;
-
-  BufferData = Buffer;
-  for (Index = 0; Index < Length; Index++) {
-    if (BufferData[Index] != 0) {
-      return FALSE;
-    }
-  }
-  return TRUE;
-}
diff --git a/ArmPkg/Library/BaseMemoryLibStm/MemLibGuid.c b/ArmPkg/Library/BaseMemoryLibStm/MemLibGuid.c
deleted file mode 100644
index 36d42d71d79a..000000000000
--- a/ArmPkg/Library/BaseMemoryLibStm/MemLibGuid.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/** @file
-  Implementation of GUID functions.
-
-  The following BaseMemoryLib instances contain the same copy of this file:
-
-    BaseMemoryLib
-    BaseMemoryLibMmx
-    BaseMemoryLibSse2
-    BaseMemoryLibRepStr
-    BaseMemoryLibOptDxe
-    BaseMemoryLibOptPei
-    PeiMemoryLib
-    UefiMemoryLib
-
-  Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<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;
-}
-
-/**
-  Checks if the given GUID is a zero GUID.
-
-  This function checks whether the given GUID is a zero GUID. If the GUID is
-  identical to a zero GUID then TRUE is returned. Otherwise, FALSE is returned.
-
-  If Guid is NULL, then ASSERT().
-
-  @param  Guid        The pointer to a 128 bit GUID.
-
-  @retval TRUE        Guid is a zero GUID.
-  @retval FALSE       Guid is not a zero GUID.
-
-**/
-BOOLEAN
-EFIAPI
-IsZeroGuid (
-  IN CONST GUID  *Guid
-  )
-{
-  UINT64  LowPartOfGuid;
-  UINT64  HighPartOfGuid;
-
-  LowPartOfGuid  = ReadUnaligned64 ((CONST UINT64*) Guid);
-  HighPartOfGuid = ReadUnaligned64 ((CONST UINT64*) Guid + 1);
-
-  return (BOOLEAN) (LowPartOfGuid == 0 && HighPartOfGuid == 0);
-}
diff --git a/ArmPkg/Library/BaseMemoryLibStm/MemLibInternals.h b/ArmPkg/Library/BaseMemoryLibStm/MemLibInternals.h
deleted file mode 100644
index f7b44f527059..000000000000
--- a/ArmPkg/Library/BaseMemoryLibStm/MemLibInternals.h
+++ /dev/null
@@ -1,251 +0,0 @@
-/** @file
-  Declaration of internal functions for Base Memory Library.
-
-  The following BaseMemoryLib instances contain the same copy of this file:
-    BaseMemoryLib
-    BaseMemoryLibMmx
-    BaseMemoryLibSse2
-    BaseMemoryLibRepStr
-    BaseMemoryLibOptDxe
-    BaseMemoryLibOptPei
-
-  Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<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
-  );
-
-/**
-  Checks whether the contents of a buffer are all zeros.
-
-  @param  Buffer  The pointer to the buffer to be checked.
-  @param  Length  The size of the buffer (in bytes) to be checked.
-
-  @retval TRUE    Contents of the buffer are all zeros.
-  @retval FALSE   Contents of the buffer are not all zeros.
-
-**/
-BOOLEAN
-EFIAPI
-InternalMemIsZeroBuffer (
-  IN CONST VOID  *Buffer,
-  IN UINTN       Length
-  );
-
-#endif
diff --git a/ArmPkg/Library/BaseMemoryLibStm/ScanMem16Wrapper.c b/ArmPkg/Library/BaseMemoryLibStm/ScanMem16Wrapper.c
deleted file mode 100644
index 1c727b3e8077..000000000000
--- a/ArmPkg/Library/BaseMemoryLibStm/ScanMem16Wrapper.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/** @file
-  ScanMem16() implementation.
-
-  The following BaseMemoryLib instances contain the same copy of this file:
-
-    BaseMemoryLib
-    BaseMemoryLibMmx
-    BaseMemoryLibSse2
-    BaseMemoryLibRepStr
-    BaseMemoryLibOptDxe
-    BaseMemoryLibOptPei
-    PeiMemoryLib
-    UefiMemoryLib
-
-  Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<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/BaseMemoryLibStm/ScanMem32Wrapper.c b/ArmPkg/Library/BaseMemoryLibStm/ScanMem32Wrapper.c
deleted file mode 100644
index 79ab60ced84c..000000000000
--- a/ArmPkg/Library/BaseMemoryLibStm/ScanMem32Wrapper.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/** @file
-  ScanMem32() implementation.
-
-  The following BaseMemoryLib instances contain the same copy of this file:
-    BaseMemoryLib
-    BaseMemoryLibMmx
-    BaseMemoryLibSse2
-    BaseMemoryLibRepStr
-    BaseMemoryLibOptDxe
-    BaseMemoryLibOptPei
-    PeiMemoryLib
-    UefiMemoryLib
-
-  Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<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/BaseMemoryLibStm/ScanMem64Wrapper.c b/ArmPkg/Library/BaseMemoryLibStm/ScanMem64Wrapper.c
deleted file mode 100644
index d11e50b9d5f6..000000000000
--- a/ArmPkg/Library/BaseMemoryLibStm/ScanMem64Wrapper.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/** @file
-  ScanMem64() implementation.
-
-  The following BaseMemoryLib instances contain the same copy of this file:
-
-    BaseMemoryLib
-    BaseMemoryLibMmx
-    BaseMemoryLibSse2
-    BaseMemoryLibRepStr
-    BaseMemoryLibOptDxe
-    BaseMemoryLibOptPei
-    PeiMemoryLib
-    UefiMemoryLib
-
-  Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<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/BaseMemoryLibStm/ScanMem8Wrapper.c b/ArmPkg/Library/BaseMemoryLibStm/ScanMem8Wrapper.c
deleted file mode 100644
index c6c6d5f39ba4..000000000000
--- a/ArmPkg/Library/BaseMemoryLibStm/ScanMem8Wrapper.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/** @file
-  ScanMem8() and ScanMemN() implementation.
-
-  The following BaseMemoryLib instances contain the same copy of this file:
-
-    BaseMemoryLib
-    BaseMemoryLibMmx
-    BaseMemoryLibSse2
-    BaseMemoryLibRepStr
-    BaseMemoryLibOptDxe
-    BaseMemoryLibOptPei
-    PeiMemoryLib
-    UefiMemoryLib
-
-  Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<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/BaseMemoryLibStm/SetMem.c b/ArmPkg/Library/BaseMemoryLibStm/SetMem.c
deleted file mode 100644
index 5c30e9b45f76..000000000000
--- a/ArmPkg/Library/BaseMemoryLibStm/SetMem.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/** @file
-  Implementation of the EfiSetMem routine. This function is broken
-  out into its own source file so that it can be excluded from a
-  build for a particular platform easily if an optimized version
-  is desired.
-
-  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<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/BaseMemoryLibStm/SetMem16Wrapper.c b/ArmPkg/Library/BaseMemoryLibStm/SetMem16Wrapper.c
deleted file mode 100644
index 8129d21e0dbe..000000000000
--- a/ArmPkg/Library/BaseMemoryLibStm/SetMem16Wrapper.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/** @file
-  SetMem16() implementation.
-
-  The following BaseMemoryLib instances contain the same copy of this file:
-    BaseMemoryLib
-    BaseMemoryLibMmx
-    BaseMemoryLibSse2
-    BaseMemoryLibRepStr
-    BaseMemoryLibOptDxe
-    BaseMemoryLibOptPei
-    PeiMemoryLib
-    UefiMemoryLib
-
-  Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<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/BaseMemoryLibStm/SetMem32Wrapper.c b/ArmPkg/Library/BaseMemoryLibStm/SetMem32Wrapper.c
deleted file mode 100644
index b57ba4057af6..000000000000
--- a/ArmPkg/Library/BaseMemoryLibStm/SetMem32Wrapper.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/** @file
-  SetMem32() implementation.
-
-  The following BaseMemoryLib instances contain the same copy of this file:
-    BaseMemoryLib
-    BaseMemoryLibMmx
-    BaseMemoryLibSse2
-    BaseMemoryLibRepStr
-    BaseMemoryLibOptDxe
-    BaseMemoryLibOptPei
-    PeiMemoryLib
-    UefiMemoryLib
-
-  Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<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/BaseMemoryLibStm/SetMem64Wrapper.c b/ArmPkg/Library/BaseMemoryLibStm/SetMem64Wrapper.c
deleted file mode 100644
index f979580b1739..000000000000
--- a/ArmPkg/Library/BaseMemoryLibStm/SetMem64Wrapper.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/** @file
-  SetMem64() implementation.
-
-  The following BaseMemoryLib instances contain the same copy of this file:
-    BaseMemoryLib
-    BaseMemoryLibMmx
-    BaseMemoryLibSse2
-    BaseMemoryLibRepStr
-    BaseMemoryLibOptDxe
-    BaseMemoryLibOptPei
-    PeiMemoryLib
-    UefiMemoryLib
-
-  Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<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/BaseMemoryLibStm/SetMemWrapper.c b/ArmPkg/Library/BaseMemoryLibStm/SetMemWrapper.c
deleted file mode 100644
index 9240c89e8b87..000000000000
--- a/ArmPkg/Library/BaseMemoryLibStm/SetMemWrapper.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/** @file
-  SetMem() and SetMemN() implementation.
-
-  The following BaseMemoryLib instances contain the same copy of this file:
-
-    BaseMemoryLib
-    BaseMemoryLibMmx
-    BaseMemoryLibSse2
-    BaseMemoryLibRepStr
-    BaseMemoryLibOptDxe
-    BaseMemoryLibOptPei
-    PeiMemoryLib
-    UefiMemoryLib
-
-  Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<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/BaseMemoryLibStm/ZeroMemWrapper.c b/ArmPkg/Library/BaseMemoryLibStm/ZeroMemWrapper.c
deleted file mode 100644
index d6c6279f682f..000000000000
--- a/ArmPkg/Library/BaseMemoryLibStm/ZeroMemWrapper.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/** @file
-  ZeroMem() implementation.
-
-  The following BaseMemoryLib instances contain the same copy of this file:
-
-    BaseMemoryLib
-    BaseMemoryLibMmx
-    BaseMemoryLibSse2
-    BaseMemoryLibRepStr
-    BaseMemoryLibOptDxe
-    BaseMemoryLibOptPei
-    PeiMemoryLib
-    UefiMemoryLib
-
-  Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<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);
-}
