Skip to content

Commit

Permalink
hw/pc.c: Fix converting of ioport_register* to MemoryRegion
Browse files Browse the repository at this point in the history
The commit 258711 introduced MemoryRegion to replace ioport_region*
for ioport 80h and F0h.
A MemoryRegion needs to have both read and write callback otherwise a segfault
will occur when an access is made.

The previous behaviour of this both ioport is to return 0xffffffffffffffff.
So keep this behaviour.

Reported-by: Adam Lackorzynski <adam@os.inf.tu-dresden.de>
Signed-off-by: Julien Grall <julien.grall@citrix.com>
Tested-by: Adam Lackorzynski <adam@os.inf.tu-dresden.de>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
  • Loading branch information
Julien Grall authored and stefanhaRH committed Jan 11, 2013
1 parent eb7ff6f commit c02e1ea
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions hw/pc.c
Expand Up @@ -103,6 +103,11 @@ static void ioport80_write(void *opaque, hwaddr addr, uint64_t data,
{
}

static uint64_t ioport80_read(void *opaque, hwaddr addr, unsigned size)
{
return 0xffffffffffffffff;
}

/* MSDOS compatibility mode FPU exception support */
static qemu_irq ferr_irq;

Expand All @@ -123,6 +128,11 @@ static void ioportF0_write(void *opaque, hwaddr addr, uint64_t data,
qemu_irq_lower(ferr_irq);
}

static uint64_t ioportF0_read(void *opaque, hwaddr addr, unsigned size)
{
return 0xffffffffffffffff;
}

/* TSC handling */
uint64_t cpu_get_tsc(CPUX86State *env)
{
Expand Down Expand Up @@ -960,6 +970,7 @@ static void cpu_request_exit(void *opaque, int irq, int level)

static const MemoryRegionOps ioport80_io_ops = {
.write = ioport80_write,
.read = ioport80_read,
.endianness = DEVICE_NATIVE_ENDIAN,
.impl = {
.min_access_size = 1,
Expand All @@ -969,6 +980,7 @@ static const MemoryRegionOps ioport80_io_ops = {

static const MemoryRegionOps ioportF0_io_ops = {
.write = ioportF0_write,
.read = ioportF0_read,
.endianness = DEVICE_NATIVE_ENDIAN,
.impl = {
.min_access_size = 1,
Expand Down

0 comments on commit c02e1ea

Please sign in to comment.