• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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