MdePkg/BaseMemoryLibOptDxe: add accelerated ARM routines

This adds ARM support to BaseMemoryLibOptDxe, partially based on the
cortex-strings library (ScanMem) and the existing CopyMem() implementation
from BaseMemoryLibStm in ArmPkg.

All string routines are accelerated except ScanMem16, ScanMem32,
ScanMem64 and IsZeroBuffer, which can wait for another day. (Very few
occurrences exist in the codebase)

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
Ard Biesheuvel
2016-09-06 15:06:38 +01:00
parent 01f688be90
commit a37f660599
10 changed files with 1209 additions and 14 deletions

View File

@ -27,7 +27,7 @@
#
# VALID_ARCHITECTURES = IA32 X64
# VALID_ARCHITECTURES = IA32 X64 ARM
#
[Sources]
@ -79,19 +79,6 @@
Ia32/CopyMem.nasm
Ia32/CopyMem.asm
Ia32/IsZeroBuffer.nasm
ScanMem64Wrapper.c
ScanMem32Wrapper.c
ScanMem16Wrapper.c
ScanMem8Wrapper.c
ZeroMemWrapper.c
CompareMemWrapper.c
SetMem64Wrapper.c
SetMem32Wrapper.c
SetMem16Wrapper.c
SetMemWrapper.c
CopyMemWrapper.c
IsZeroBufferWrapper.c
MemLibGuid.c
[Sources.X64]
X64/ScanMem64.nasm
@ -128,6 +115,21 @@
X64/CopyMem.asm
X64/CopyMem.S
X64/IsZeroBuffer.nasm
[Sources.ARM]
Arm/ScanMem.S |GCC
Arm/SetMem.S |GCC
Arm/CopyMem.S |GCC
Arm/CompareMem.S |GCC
Arm/ScanMem.asm |RVCT
Arm/SetMem.asm |RVCT
Arm/CopyMem.asm |RVCT
Arm/CompareMem.asm |RVCT
Arm/ScanMemGeneric.c
[Sources]
ScanMem64Wrapper.c
ScanMem32Wrapper.c
ScanMem16Wrapper.c