Revision 61074e46 hw/integratorcp.c
b/hw/integratorcp.c | ||
---|---|---|
279 | 279 |
typedef struct icp_pic_state |
280 | 280 |
{ |
281 | 281 |
SysBusDevice busdev; |
282 |
MemoryRegion iomem; |
|
282 | 283 |
uint32_t level; |
283 | 284 |
uint32_t irq_enabled; |
284 | 285 |
uint32_t fiq_enabled; |
... | ... | |
306 | 307 |
icp_pic_update(s); |
307 | 308 |
} |
308 | 309 |
|
309 |
static uint32_t icp_pic_read(void *opaque, target_phys_addr_t offset) |
|
310 |
static uint64_t icp_pic_read(void *opaque, target_phys_addr_t offset, |
|
311 |
unsigned size) |
|
310 | 312 |
{ |
311 | 313 |
icp_pic_state *s = (icp_pic_state *)opaque; |
312 | 314 |
|
... | ... | |
335 | 337 |
} |
336 | 338 |
|
337 | 339 |
static void icp_pic_write(void *opaque, target_phys_addr_t offset, |
338 |
uint32_t value)
|
|
340 |
uint64_t value, unsigned size)
|
|
339 | 341 |
{ |
340 | 342 |
icp_pic_state *s = (icp_pic_state *)opaque; |
341 | 343 |
|
... | ... | |
371 | 373 |
icp_pic_update(s); |
372 | 374 |
} |
373 | 375 |
|
374 |
static CPUReadMemoryFunc * const icp_pic_readfn[] = { |
|
375 |
icp_pic_read, |
|
376 |
icp_pic_read, |
|
377 |
icp_pic_read |
|
378 |
}; |
|
379 |
|
|
380 |
static CPUWriteMemoryFunc * const icp_pic_writefn[] = { |
|
381 |
icp_pic_write, |
|
382 |
icp_pic_write, |
|
383 |
icp_pic_write |
|
376 |
static const MemoryRegionOps icp_pic_ops = { |
|
377 |
.read = icp_pic_read, |
|
378 |
.write = icp_pic_write, |
|
379 |
.endianness = DEVICE_NATIVE_ENDIAN, |
|
384 | 380 |
}; |
385 | 381 |
|
386 | 382 |
static int icp_pic_init(SysBusDevice *dev) |
387 | 383 |
{ |
388 | 384 |
icp_pic_state *s = FROM_SYSBUS(icp_pic_state, dev); |
389 |
int iomemtype; |
|
390 | 385 |
|
391 | 386 |
qdev_init_gpio_in(&dev->qdev, icp_pic_set_irq, 32); |
392 | 387 |
sysbus_init_irq(dev, &s->parent_irq); |
393 | 388 |
sysbus_init_irq(dev, &s->parent_fiq); |
394 |
iomemtype = cpu_register_io_memory(icp_pic_readfn, |
|
395 |
icp_pic_writefn, s, |
|
396 |
DEVICE_NATIVE_ENDIAN); |
|
397 |
sysbus_init_mmio(dev, 0x00800000, iomemtype); |
|
389 |
memory_region_init_io(&s->iomem, &icp_pic_ops, s, "icp-pic", 0x00800000); |
|
390 |
sysbus_init_mmio_region(dev, &s->iomem); |
|
398 | 391 |
return 0; |
399 | 392 |
} |
400 | 393 |
|
Also available in: Unified diff