mirror of https://github.com/acidanthera/audk.git
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 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
|
||||
|
||||
|
|
Loading…
Reference in New Issue