mpc8544_guts: convert to memory API
authorAvi Kivity <avi@redhat.com>
Sun, 13 Nov 2011 13:05:28 +0000 (15:05 +0200)
committerAvi Kivity <avi@redhat.com>
Thu, 24 Nov 2011 16:32:00 +0000 (18:32 +0200)
Signed-off-by: Avi Kivity <avi@redhat.com>
hw/mpc8544_guts.c

index c685f3e..00637f6 100644 (file)
 
 struct GutsState {
     SysBusDevice busdev;
+    MemoryRegion iomem;
 };
 
 typedef struct GutsState GutsState;
 
-static uint32_t mpc8544_guts_read32(void *opaque, target_phys_addr_t addr)
+static uint64_t mpc8544_guts_read(void *opaque, target_phys_addr_t addr,
+                                  unsigned size)
 {
     uint32_t value = 0;
     CPUState *env = cpu_single_env;
@@ -78,14 +80,8 @@ static uint32_t mpc8544_guts_read32(void *opaque, target_phys_addr_t addr)
     return value;
 }
 
-static CPUReadMemoryFunc * const mpc8544_guts_read[] = {
-    NULL,
-    NULL,
-    &mpc8544_guts_read32,
-};
-
-static void mpc8544_guts_write32(void *opaque, target_phys_addr_t addr,
-                              uint32_t value)
+static void mpc8544_guts_write(void *opaque, target_phys_addr_t addr,
+                               uint64_t value, unsigned size)
 {
     addr &= MPC8544_GUTS_MMIO_SIZE - 1;
 
@@ -97,27 +93,30 @@ static void mpc8544_guts_write32(void *opaque, target_phys_addr_t addr,
         break;
     default:
         fprintf(stderr, "guts: Unknown register write: %x = %x\n",
-                (int)addr, value);
+                (int)addr, (unsigned)value);
         break;
     }
 }
 
-static CPUWriteMemoryFunc * const mpc8544_guts_write[] = {
-    NULL,
-    NULL,
-    &mpc8544_guts_write32,
+static const MemoryRegionOps mpc8544_guts_ops = {
+    .read = mpc8544_guts_read,
+    .write = mpc8544_guts_write,
+    .endianness = DEVICE_BIG_ENDIAN,
+    .valid = {
+        .min_access_size = 4,
+        .max_access_size = 4,
+    },
 };
 
 static int mpc8544_guts_initfn(SysBusDevice *dev)
 {
     GutsState *s;
-    int iomem;
 
     s = FROM_SYSBUS(GutsState, sysbus_from_qdev(dev));
 
-    iomem = cpu_register_io_memory(mpc8544_guts_read, mpc8544_guts_write, s,
-                                   DEVICE_BIG_ENDIAN);
-    sysbus_init_mmio(dev, MPC8544_GUTS_MMIO_SIZE, iomem);
+    memory_region_init_io(&s->iomem, &mpc8544_guts_ops, s,
+                          "mpc6544.guts", MPC8544_GUTS_MMIO_SIZE);
+    sysbus_init_mmio_region(dev, &s->iomem);
 
     return 0;
 }