audk/MdePkg/Library/BaseIoLibIntrinsic
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
..
AArch64 MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
Arm MdePkg/BaseIoLibIntrinsicArmVirt ARM: avoid double word loads and stores 2018-11-15 04:31:42 -08:00
Ia32 MdePkg: Remove X86 ASM and S files 2018-06-07 15:26:27 +08:00
X64 MdePkg: Remove X86 ASM and S files 2018-06-07 15:26:27 +08:00
BaseIoLibIntrinsic.inf MdePkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:48:21 +08:00
BaseIoLibIntrinsic.uni MdePkg: Convert all .uni files to utf-8 2015-12-15 04:53:50 +00:00
BaseIoLibIntrinsicArmVirt.inf MdePkg/BaseIoLibIntrinsic: make BaseIoLibIntrinsic safe for ArmVirt/KVM 2018-06-11 18:03:52 +02:00
BaseIoLibIntrinsicArmVirt.uni MdePkg/BaseIoLibIntrinsic: make BaseIoLibIntrinsic safe for ArmVirt/KVM 2018-06-11 18:03:52 +02:00
BaseIoLibIntrinsicInternal.h Minor grammatical work--mostly adding periods. Items with ONLY period added did not have the heading date changed, but Items with content changes had heading copyright dates updated. Sending separately a list of files missing Doxygen @param and @return information. (PENDING) 2010-06-25 21:56:02 +00:00
BaseIoLibIntrinsicSev.inf MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
IoHighLevel.c MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
IoLib.c MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
IoLibArm.c MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
IoLibArmVirt.c MdePkg/BaseIoLibIntrinsic: make BaseIoLibIntrinsic safe for ArmVirt/KVM 2018-06-11 18:03:52 +02:00
IoLibEbc.c MdePkg: Expand BaseIoLibIntrinsic (IoLib class) library 2017-01-17 10:09:50 +08:00
IoLibGcc.c MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
IoLibIcc.c MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
IoLibMmioBuffer.c MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00
IoLibMsc.c MdePkg: Clean up source files 2018-06-28 11:19:47 +08:00