audk/MdePkg
Ard Biesheuvel 9cabe9d457 MdePkg/BaseIoLibIntrinsicArmVirt ARM: avoid double word loads and stores
BaseIoLibIntrinsicArmVirt was created to prevent LTO from merging
accesses to MMIO regions, resulting in instructions with multiple
output registers that KVM on ARM cannot emulate (since the exception
syndrome information that KVM relies on can only describe a single
output register)

However, using double word loads on ARM amounts to the same thing,
and so code that relies on doing 64-bit MMIO to regions that are
emulated under KVM (such as the GICv3 TYPER register) will still
suffer from the original issue.

So replace ldrd and strd with equivalent two instruction sequences.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Acked-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
2018-11-15 04:31:42 -08:00
..
Include MdePkg/Base.h: Implement BASE_CR() via OFFSET_OF(). 2018-11-02 22:15:54 +08:00
Library MdePkg/BaseIoLibIntrinsicArmVirt ARM: avoid double word loads and stores 2018-11-15 04:31:42 -08:00
MdePkg.dec MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
MdePkg.dsc MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
MdePkg.uni MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
MdePkgExtra.uni MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00