## @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 | |
[LibraryClasses] | |
DebugLib | |
BaseLib | |