Revision 9c48dee6 hw/slavio_misc.c
b/hw/slavio_misc.c | ||
---|---|---|
48 | 48 |
|
49 | 49 |
typedef struct APCState { |
50 | 50 |
SysBusDevice busdev; |
51 |
MemoryRegion iomem; |
|
51 | 52 |
qemu_irq cpu_halt; |
52 | 53 |
} APCState; |
53 | 54 |
|
... | ... | |
270 | 271 |
NULL, |
271 | 272 |
}; |
272 | 273 |
|
273 |
static void apc_mem_writeb(void *opaque, target_phys_addr_t addr, uint32_t val) |
|
274 |
static void apc_mem_writeb(void *opaque, target_phys_addr_t addr, |
|
275 |
uint64_t val, unsigned size) |
|
274 | 276 |
{ |
275 | 277 |
APCState *s = opaque; |
276 | 278 |
|
... | ... | |
278 | 280 |
qemu_irq_raise(s->cpu_halt); |
279 | 281 |
} |
280 | 282 |
|
281 |
static uint32_t apc_mem_readb(void *opaque, target_phys_addr_t addr) |
|
283 |
static uint64_t apc_mem_readb(void *opaque, target_phys_addr_t addr, |
|
284 |
unsigned size) |
|
282 | 285 |
{ |
283 | 286 |
uint32_t ret = 0; |
284 | 287 |
|
... | ... | |
286 | 289 |
return ret; |
287 | 290 |
} |
288 | 291 |
|
289 |
static CPUReadMemoryFunc * const apc_mem_read[3] = { |
|
290 |
apc_mem_readb, |
|
291 |
NULL, |
|
292 |
NULL, |
|
293 |
}; |
|
294 |
|
|
295 |
static CPUWriteMemoryFunc * const apc_mem_write[3] = { |
|
296 |
apc_mem_writeb, |
|
297 |
NULL, |
|
298 |
NULL, |
|
292 |
static const MemoryRegionOps apc_mem_ops = { |
|
293 |
.read = apc_mem_readb, |
|
294 |
.write = apc_mem_writeb, |
|
295 |
.endianness = DEVICE_NATIVE_ENDIAN, |
|
296 |
.valid = { |
|
297 |
.min_access_size = 1, |
|
298 |
.max_access_size = 1, |
|
299 |
} |
|
299 | 300 |
}; |
300 | 301 |
|
301 | 302 |
static uint32_t slavio_sysctrl_mem_readl(void *opaque, target_phys_addr_t addr) |
... | ... | |
407 | 408 |
static int apc_init1(SysBusDevice *dev) |
408 | 409 |
{ |
409 | 410 |
APCState *s = FROM_SYSBUS(APCState, dev); |
410 |
int io; |
|
411 | 411 |
|
412 | 412 |
sysbus_init_irq(dev, &s->cpu_halt); |
413 | 413 |
|
414 | 414 |
/* Power management (APC) XXX: not a Slavio device */ |
415 |
io = cpu_register_io_memory(apc_mem_read, apc_mem_write, s,
|
|
416 |
DEVICE_NATIVE_ENDIAN);
|
|
417 |
sysbus_init_mmio(dev, MISC_SIZE, io);
|
|
415 |
memory_region_init_io(&s->iomem, &apc_mem_ops, s,
|
|
416 |
"apc", MISC_SIZE);
|
|
417 |
sysbus_init_mmio_region(dev, &s->iomem);
|
|
418 | 418 |
return 0; |
419 | 419 |
} |
420 | 420 |
|
Also available in: Unified diff