]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPkg/Library/BaseMemoryLibVstm/BaseMemoryLibVstm.inf
Add some ldm/vldm optimized CopyMem routines. Add performance macros to BDS
[mirror_edk2.git] / ArmPkg / Library / BaseMemoryLibVstm / BaseMemoryLibVstm.inf
diff --git a/ArmPkg/Library/BaseMemoryLibVstm/BaseMemoryLibVstm.inf b/ArmPkg/Library/BaseMemoryLibVstm/BaseMemoryLibVstm.inf
new file mode 100755 (executable)
index 0000000..7725eb8
--- /dev/null
@@ -0,0 +1,69 @@
+## @file\r
+#  Instance of Base Memory Library with some ARM vldm/vstm assembly.\r
+#\r
+#  This is a copy of the MdePkg BaseMemoryLib with the CopyMem and \r
+#  SetMem worker functions replaced with assembler that uses \r
+#  vldm/vstm (part of NEON SIMD, optional in ARMv7-A).\r
+#\r
+#  Note: You need to enable NEON in SEC to use this library\r
+#  // Enable NEON register in case folks want to use them for optimizations (CopyMem)\r
+#  mrc     p15, 0, r0, c1, c0, 2\r
+#  orr     r0, r0, #0x00f00000   // Enable VPF access (V* instructions)\r
+#  mcr     p15, 0, r0, c1, c0, 2\r
+#  mov     r0, #0x40000000       // Set EN bit in FPEXC\r
+#  msr     FPEXC,r0\r
+#\r
+#  Copyright (c) 2007 - 2010, Intel Corporation.\r
+#  Portions Copyright (c) 2010, Apple, Inc. All rights reserved.\r
+#\r
+#  All rights reserved. This program and the accompanying materials\r
+#  are licensed and made available under the terms and conditions of the BSD License\r
+#  which accompanies this distribution. The full text of the license may be found at\r
+#  http://opensource.org/licenses/bsd-license.php\r
+#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+#\r
+##\r
+\r
+[Defines]\r
+  INF_VERSION                    = 0x00010005\r
+  BASE_NAME                      = BaseMemoryLibVstm\r
+  FILE_GUID                      = 09EE1E8D-7A2E-4573-8117-68A18569C1F5\r
+  MODULE_TYPE                    = BASE\r
+  VERSION_STRING                 = 1.0\r
+  LIBRARY_CLASS                  = BaseMemoryLib \r
+\r
+\r
+#\r
+#  VALID_ARCHITECTURES           = ARM\r
+#\r
+\r
+[Sources.ARM]\r
+  ScanMem64Wrapper.c\r
+  ScanMem32Wrapper.c\r
+  ScanMem16Wrapper.c\r
+  ScanMem8Wrapper.c\r
+  ZeroMemWrapper.c\r
+  CompareMemWrapper.c\r
+  SetMem64Wrapper.c\r
+  SetMem32Wrapper.c\r
+  SetMem16Wrapper.c\r
+  SetMemWrapper.c\r
+  CopyMemWrapper.c\r
+  MemLibGeneric.c\r
+  MemLibGuid.c  \r
+  MemLibInternals.h\r
+  Arm/CopyMem.asm\r
+  Arm/CopyMem.S\r
+  Arm/SetMem.asm\r
+  Arm/SetMem.S\r
+\r
+\r
+[Packages]\r
+  MdePkg/MdePkg.dec\r
+\r
+[LibraryClasses]\r
+  DebugLib\r
+  BaseLib\r
+\r