mirror of
https://git.proxmox.com/git/mirror_edk2
synced 2025-10-25 20:01:48 +00:00
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.asm | ||
| CpuBreakpoint.S | ||
| CpuPause.asm | ||
| DisableInterrupts.asm | ||
| DisableInterrupts.S | ||
| EnableInterrupts.asm | ||
| EnableInterrupts.S | ||
| GetInterruptsState.asm | ||
| GetInterruptsState.S | ||
| InternalSwitchStack.c | ||
| Math64.S | ||
| MemoryFence.asm | ||
| MemoryFence.S | ||
| SetJumpLongJump.asm | ||
| SetJumpLongJump.S | ||
| SwitchStack.asm | ||
| SwitchStack.S | ||
| Unaligned.c | ||