summaryrefslogtreecommitdiffstats
path: root/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
diff options
context:
space:
mode:
authorPhil Dennis-Jordan <phil@philjordan.eu>2017-04-07 18:25:57 +1200
committerLaszlo Ersek <lersek@redhat.com>2017-04-07 12:22:30 +0200
commit05a5379458725234de8a05780fcb5da2c12680e4 (patch)
tree1513828a075954852173baa3b3a0d2b8574c02d2 /OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
parent9bcca53fe466cdff397578328d9d87d257aba493 (diff)
downloadedk2-05a5379458725234de8a05780fcb5da2c12680e4.tar.gz
edk2-05a5379458725234de8a05780fcb5da2c12680e4.tar.bz2
edk2-05a5379458725234de8a05780fcb5da2c12680e4.zip
OvmfPkg/QemuVideoDxe: Helper functions for unaligned port I/O.
The VMWare SVGA display device implemented by Qemu (-vga vmware) uses an I/O-type BAR which is laid out such that some register offsets are not aligned to the read/write width with which they are expected to be accessed. (The register value port has an offset of 1 and requires 32 bit wide read/write access.) The EFI_PCI_IO_PROTOCOL's Io.Read/Io.Write functions do not support such unaligned I/O. Before a driver for this device can be added to QemuVideoDxe, helper functions for unaligned I/O are therefore required. This adds the functions UnalignedIoWrite32 and UnalignedIoRead32, based on IoLib's IoWrite32 and IoRead32, for the Ia32 and X64 architectures. Port I/O requires inline assembly, so implementations are provided for the GCC, ICC, and Microsoft compiler families. Such I/O is not possible on other architectures, a dummy (ASSERT()ing) implementation is therefore provided to satisfy the linker. Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Suggested-by: Jordan Justen <jordan.l.justen@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Phil Dennis-Jordan <phil@philjordan.eu> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Diffstat (limited to 'OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf')
-rw-r--r--OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf6
1 files changed, 6 insertions, 0 deletions
diff --git a/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf b/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
index affb6ffd88..346a5aed94 100644
--- a/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
+++ b/OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf
@@ -41,6 +41,12 @@
[Sources.Ia32, Sources.X64]
VbeShim.c
+ UnalignedIoGcc.c | GCC
+ UnalignedIoMsc.c | MSFT
+ UnalignedIoIcc.c | INTEL
+
+[Sources.IPF, Sources.EBC, Sources.ARM, Sources.AARCH64]
+ UnalignedIoUnsupported.c
[Packages]
MdePkg/MdePkg.dec