diff options
author | Ard Biesheuvel <ard.biesheuvel@linaro.org> | 2015-03-27 17:27:14 +0000 |
---|---|---|
committer | lersek <lersek@Edk2> | 2015-03-27 17:27:14 +0000 |
commit | 55f5af1871d07d62def7bafa20b4761cc8b66e7d (patch) | |
tree | ddc8668bc2eec00ce9bad8c1da1145ccc6148ff3 /MdePkg/Library/DxeSmbusLib/InternalSmbusLib.h | |
parent | e2ab3f819f4e8165c24bd6f4fdc24ef17bdf458b (diff) | |
download | edk2-platforms-55f5af1871d07d62def7bafa20b4761cc8b66e7d.tar.xz |
MdePkg: fix ARM version of InternalMathSwapBytes64 ()
The ARM asm implementation of InternalMathSwapBytes64 () does
interesting things if bit 7 of operand r1 (upper 32 bits of the
input value) is set. After the recursive swap, bit 7 ends up in
the sign bit position, after which it is right shifted with sign
extension, and or'ed with the upper half of the output value.
This means SwapBytes64 (0x00000080_00000000) returns an incorrect
value of 0xFFFFFFFF_80000000.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Ronald Cron <Ronald.Cron@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17077 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdePkg/Library/DxeSmbusLib/InternalSmbusLib.h')
0 files changed, 0 insertions, 0 deletions