mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-23 21:54:27 +02:00
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>
This commit is contained in:
parent
93638568c1
commit
60fe5e8a9c
@ -110,9 +110,9 @@ ASM_PFX(InternalMemCompareMem):
|
|||||||
bic src1, src1, #3
|
bic src1, src1, #3
|
||||||
bic src2, src2, #3
|
bic src2, src2, #3
|
||||||
add limit, limit, tmp1 // Adjust the limit for the extra.
|
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
|
ldr data1, [src1], #4
|
||||||
neg tmp1, tmp1 // Bits to alignment -32.
|
rsb tmp1, tmp1, #32 // Bits to alignment -32.
|
||||||
ldr data2, [src2], #4
|
ldr data2, [src2], #4
|
||||||
mov tmp2, #~0
|
mov tmp2, #~0
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user