1## @file 2# Instance of Base Memory Library with some ARM vldm/vstm assembly. 3# 4# This is a copy of the MdePkg BaseMemoryLib with the CopyMem and 5# SetMem worker functions replaced with assembler that uses 6# vldm/vstm (part of NEON SIMD, optional in ARMv7-A). 7# 8# Note: You need to enable NEON in SEC to use this library 9# // Enable NEON register in case folks want to use them for optimizations (CopyMem) 10# mrc p15, 0, r0, c1, c0, 2 11# orr r0, r0, #0x00f00000 // Enable VPF access (V* instructions) 12# mcr p15, 0, r0, c1, c0, 2 13# mov r0, #0x40000000 // Set EN bit in FPEXC 14# msr FPEXC,r0 15# 16# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR> 17# Portions copyright (c) 2010, Apple Inc. All rights reserved.<BR> 18# 19# This program and the accompanying materials 20# are licensed and made available under the terms and conditions of the BSD License 21# which accompanies this distribution. The full text of the license may be found at 22# http://opensource.org/licenses/bsd-license.php 23# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 24# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 25# 26# 27## 28 29[Defines] 30 INF_VERSION = 0x00010005 31 BASE_NAME = BaseMemoryLibVstm 32 FILE_GUID = 09EE1E8D-7A2E-4573-8117-68A18569C1F5 33 MODULE_TYPE = BASE 34 VERSION_STRING = 1.0 35 LIBRARY_CLASS = BaseMemoryLib 36 37 38# 39# VALID_ARCHITECTURES = ARM 40# 41 42[Sources.ARM] 43 ScanMem64Wrapper.c 44 ScanMem32Wrapper.c 45 ScanMem16Wrapper.c 46 ScanMem8Wrapper.c 47 ZeroMemWrapper.c 48 CompareMemWrapper.c 49 SetMem64Wrapper.c 50 SetMem32Wrapper.c 51 SetMem16Wrapper.c 52 SetMemWrapper.c 53 CopyMemWrapper.c 54 MemLibGeneric.c 55 MemLibGuid.c 56 MemLibInternals.h 57 Arm/CopyMem.asm 58 Arm/CopyMem.S 59 Arm/SetMem.asm 60 Arm/SetMem.S 61 62 63[Packages] 64 MdePkg/MdePkg.dec 65 ArmPkg/ArmPkg.dec 66 67[LibraryClasses] 68 DebugLib 69 BaseLib 70 71