mirror of https://github.com/acidanthera/audk.git
55f5af1871
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 |
||
---|---|---|
.. | ||
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 |