diff options
author | Ard Biesheuvel <ard.biesheuvel@linaro.org> | 2016-09-13 18:22:33 +0100 |
---|---|---|
committer | Ard Biesheuvel <ard.biesheuvel@linaro.org> | 2016-09-21 08:42:48 +0100 |
commit | 60fe5e8a9c8deafcc302c715a91947d75d38e544 (patch) | |
tree | bf8b3e3f105ec60329bec621041ef8ab05f820dc /MdePkg/Library/BaseMemoryLibOptDxe | |
parent | 93638568c1c6bd6bace2cd27666796b7c87fc45c (diff) | |
download | edk2-60fe5e8a9c8deafcc302c715a91947d75d38e544.tar.gz edk2-60fe5e8a9c8deafcc302c715a91947d75d38e544.tar.bz2 edk2-60fe5e8a9c8deafcc302c715a91947d75d38e544.zip |
MdePkg/BaseMemoryLibOptDxe ARM: fix arithmetic bugs in CompareMem()
Fix two bugs:
- Erroneous shift of 2 in a bytes to bits conversion.
- Use reverse subtract rather than negate for value that is subsequently
used as operand #2 in a shift operation.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Liming Gao <liming.gao@intel.com>
Diffstat (limited to 'MdePkg/Library/BaseMemoryLibOptDxe')
-rw-r--r-- | MdePkg/Library/BaseMemoryLibOptDxe/Arm/CompareMem.S | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/MdePkg/Library/BaseMemoryLibOptDxe/Arm/CompareMem.S b/MdePkg/Library/BaseMemoryLibOptDxe/Arm/CompareMem.S index 951d15777a..3aadebace3 100644 --- a/MdePkg/Library/BaseMemoryLibOptDxe/Arm/CompareMem.S +++ b/MdePkg/Library/BaseMemoryLibOptDxe/Arm/CompareMem.S @@ -110,9 +110,9 @@ ASM_PFX(InternalMemCompareMem): bic src1, src1, #3
bic src2, src2, #3
add limit, limit, tmp1 // Adjust the limit for the extra.
- lsl tmp1, tmp1, #2 // Bytes beyond alignment -> bits.
+ lsl tmp1, tmp1, #3 // Bytes beyond alignment -> bits.
ldr data1, [src1], #4
- neg tmp1, tmp1 // Bits to alignment -32.
+ rsb tmp1, tmp1, #32 // Bits to alignment -32.
ldr data2, [src2], #4
mov tmp2, #~0
|