audk/MdePkg/Library/BaseLib/Arm
Ard Biesheuvel 55f5af1871 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
2015-03-27 17:27:14 +00:00
..
CpuBreakpoint.S
CpuBreakpoint.asm
CpuPause.asm
DisableInterrupts.S
DisableInterrupts.asm
EnableInterrupts.S
EnableInterrupts.asm
GetInterruptsState.S
GetInterruptsState.asm
InternalSwitchStack.c
Math64.S
MemoryFence.S
MemoryFence.asm
SetJumpLongJump.S
SetJumpLongJump.asm
SwitchStack.S
SwitchStack.asm
Unaligned.c