Revision d09510b2

b/hw/lm32_timer.c
51 51

  
52 52
struct LM32TimerState {
53 53
    SysBusDevice busdev;
54
    MemoryRegion iomem;
54 55

  
55 56
    QEMUBH *bh;
56 57
    ptimer_state *ptimer;
......
70 71
    qemu_set_irq(s->irq, state);
71 72
}
72 73

  
73
static uint32_t timer_read(void *opaque, target_phys_addr_t addr)
74
static uint64_t timer_read(void *opaque, target_phys_addr_t addr, unsigned size)
74 75
{
75 76
    LM32TimerState *s = opaque;
76 77
    uint32_t r = 0;
......
95 96
    return r;
96 97
}
97 98

  
98
static void timer_write(void *opaque, target_phys_addr_t addr, uint32_t value)
99
static void timer_write(void *opaque, target_phys_addr_t addr,
100
                        uint64_t value, unsigned size)
99 101
{
100 102
    LM32TimerState *s = opaque;
101 103

  
......
131 133
    timer_update_irq(s);
132 134
}
133 135

  
134
static CPUReadMemoryFunc * const timer_read_fn[] = {
135
    NULL,
136
    NULL,
137
    &timer_read,
138
};
139

  
140
static CPUWriteMemoryFunc * const timer_write_fn[] = {
141
    NULL,
142
    NULL,
143
    &timer_write,
136
static const MemoryRegionOps timer_ops = {
137
    .read = timer_read,
138
    .write = timer_write,
139
    .endianness = DEVICE_NATIVE_ENDIAN,
140
    .valid = {
141
        .min_access_size = 4,
142
        .max_access_size = 4,
143
    },
144 144
};
145 145

  
146 146
static void timer_hit(void *opaque)
......
172 172
static int lm32_timer_init(SysBusDevice *dev)
173 173
{
174 174
    LM32TimerState *s = FROM_SYSBUS(typeof(*s), dev);
175
    int timer_regs;
176 175

  
177 176
    sysbus_init_irq(dev, &s->irq);
178 177

  
......
180 179
    s->ptimer = ptimer_init(s->bh);
181 180
    ptimer_set_freq(s->ptimer, s->freq_hz);
182 181

  
183
    timer_regs = cpu_register_io_memory(timer_read_fn, timer_write_fn, s,
184
            DEVICE_NATIVE_ENDIAN);
185
    sysbus_init_mmio(dev, R_MAX * 4, timer_regs);
182
    memory_region_init_io(&s->iomem, &timer_ops, s, "timer", R_MAX * 4);
183
    sysbus_init_mmio_region(dev, &s->iomem);
186 184

  
187 185
    return 0;
188 186
}

Also available in: Unified diff