Revision 4b48bf05 hw/slavio_intctl.c
b/hw/slavio_intctl.c | ||
---|---|---|
416 | 416 |
slavio_intctl_reset(s); |
417 | 417 |
} |
418 | 418 |
|
419 |
DeviceState *slavio_intctl_init(target_phys_addr_t addr, |
|
420 |
target_phys_addr_t addrg, |
|
421 |
const uint32_t *intbit_to_level, |
|
422 |
qemu_irq **parent_irq, unsigned int cputimer) |
|
423 |
{ |
|
424 |
DeviceState *dev; |
|
425 |
SysBusDevice *s; |
|
426 |
unsigned int i, j; |
|
427 |
|
|
428 |
dev = qdev_create(NULL, "slavio_intctl"); |
|
429 |
qdev_prop_set_ptr(dev, "intbit_to_level", (void *)intbit_to_level); |
|
430 |
qdev_prop_set_uint32(dev, "cputimer_bit", cputimer); |
|
431 |
qdev_init(dev); |
|
432 |
|
|
433 |
s = sysbus_from_qdev(dev); |
|
434 |
|
|
435 |
for (i = 0; i < MAX_CPUS; i++) { |
|
436 |
for (j = 0; j < MAX_PILS; j++) { |
|
437 |
sysbus_connect_irq(s, i * MAX_PILS + j, parent_irq[i][j]); |
|
438 |
} |
|
439 |
} |
|
440 |
sysbus_mmio_map(s, 0, addrg); |
|
441 |
for (i = 0; i < MAX_CPUS; i++) { |
|
442 |
sysbus_mmio_map(s, i + 1, addr + i * TARGET_PAGE_SIZE); |
|
443 |
} |
|
444 |
|
|
445 |
return dev; |
|
446 |
} |
|
447 |
|
|
448 | 419 |
static SysBusDeviceInfo slavio_intctl_info = { |
449 | 420 |
.init = slavio_intctl_init1, |
450 | 421 |
.qdev.name = "slavio_intctl", |
Also available in: Unified diff