>From d46b14dfd74dcc37fe187dc76cd681ad7dbff2d5 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Wed, 19 Sep 2012 13:31:04 +0200 Subject: [PATCH] [fixup] vga mmio Signed-off-by: Gerd Hoffmann --- hw/vga-pci.c | 25 ++++++++++++++++++++++--- 1 files changed, 22 insertions(+), 3 deletions(-) diff --git a/hw/vga-pci.c b/hw/vga-pci.c index e05e2ef..7fd305d 100644 --- a/hw/vga-pci.c +++ b/hw/vga-pci.c @@ -78,14 +78,33 @@ static uint64_t pci_vga_ioport_read(void *ptr, target_phys_addr_t addr, unsigned size) { PCIVGAState *d = ptr; - return vga_ioport_read(&d->vga, addr); + uint64_t ret = 0; + + switch (size) { + case 1: + ret = vga_ioport_read(&d->vga, addr); + break; + case 2: + ret = vga_ioport_read(&d->vga, addr); + ret |= vga_ioport_read(&d->vga, addr+1) << 8; + break; + } + return ret; } static void pci_vga_ioport_write(void *ptr, target_phys_addr_t addr, uint64_t val, unsigned size) { PCIVGAState *d = ptr; - vga_ioport_write(&d->vga, addr, val); + switch (size) { + case 1: + vga_ioport_write(&d->vga, addr, val); + break; + case 2: + vga_ioport_write(&d->vga, addr, val & 0xff); + vga_ioport_write(&d->vga, addr+1, (val >> 8) & 0xff); + break; + } } static const MemoryRegionOps pci_vga_ioport_ops = { @@ -94,7 +113,7 @@ static const MemoryRegionOps pci_vga_ioport_ops = { .valid.min_access_size = 1, .valid.max_access_size = 4, .impl.min_access_size = 1, - .impl.max_access_size = 1, + .impl.max_access_size = 2, .endianness = DEVICE_LITTLE_ENDIAN, }; -- 1.7.1