Revision ee6847d1 hw/slavio_intctl.c
b/hw/slavio_intctl.c | ||
---|---|---|
69 | 69 |
qemu_irq cpu_irqs[MAX_CPUS][MAX_PILS]; |
70 | 70 |
const uint32_t *intbit_to_level; |
71 | 71 |
uint32_t cputimer_lbit, cputimer_mbit; |
72 |
uint32_t cputimer_bit; |
|
72 | 73 |
uint32_t pil_out[MAX_CPUS]; |
73 | 74 |
SLAVIO_CPUINTCTLState slaves[MAX_CPUS]; |
74 | 75 |
} SLAVIO_INTCTLState; |
... | ... | |
388 | 389 |
static void slavio_intctl_init1(SysBusDevice *dev) |
389 | 390 |
{ |
390 | 391 |
SLAVIO_INTCTLState *s = FROM_SYSBUS(SLAVIO_INTCTLState, dev); |
391 |
int io_memory, cputimer;
|
|
392 |
int io_memory; |
|
392 | 393 |
unsigned int i, j; |
393 | 394 |
|
394 | 395 |
qdev_init_gpio_in(&dev->qdev, slavio_set_irq_all, 32 + MAX_CPUS); |
395 | 396 |
io_memory = cpu_register_io_memory(slavio_intctlm_mem_read, |
396 | 397 |
slavio_intctlm_mem_write, s); |
397 | 398 |
sysbus_init_mmio(dev, INTCTLM_SIZE, io_memory); |
398 |
s->intbit_to_level = qdev_get_prop_ptr(&dev->qdev, "intbit_to_level"); |
|
399 |
cputimer = qdev_get_prop_int(&dev->qdev, "cputimer_bit", -1); |
|
400 |
s->cputimer_mbit = 1 << cputimer; |
|
401 |
s->cputimer_lbit = 1 << s->intbit_to_level[cputimer]; |
|
399 |
s->cputimer_mbit = 1 << s->cputimer_bit; |
|
400 |
s->cputimer_lbit = 1 << s->intbit_to_level[s->cputimer_bit]; |
|
402 | 401 |
|
403 | 402 |
for (i = 0; i < MAX_CPUS; i++) { |
404 | 403 |
for (j = 0; j < MAX_PILS; j++) { |
... | ... | |
427 | 426 |
unsigned int i, j; |
428 | 427 |
|
429 | 428 |
dev = qdev_create(NULL, "slavio_intctl"); |
430 |
qdev_set_prop_ptr(dev, "intbit_to_level", (void *)intbit_to_level);
|
|
431 |
qdev_set_prop_int(dev, "cputimer_bit", cputimer);
|
|
429 |
qdev_prop_set_ptr(dev, "intbit_to_level", (void *)intbit_to_level);
|
|
430 |
qdev_prop_set_uint32(dev, "cputimer_bit", cputimer);
|
|
432 | 431 |
qdev_init(dev); |
433 | 432 |
|
434 | 433 |
s = sysbus_from_qdev(dev); |
... | ... | |
450 | 449 |
.init = slavio_intctl_init1, |
451 | 450 |
.qdev.name = "slavio_intctl", |
452 | 451 |
.qdev.size = sizeof(SLAVIO_INTCTLState), |
453 |
.qdev.props = (DevicePropList[]) { |
|
454 |
{.name = "intbit_to_level", .type = PROP_TYPE_PTR}, |
|
455 |
{.name = "cputimer_bit", .type = PROP_TYPE_INT}, |
|
456 |
{.name = NULL} |
|
452 |
.qdev.props = (Property[]) { |
|
453 |
{ |
|
454 |
.name = "intbit_to_level", |
|
455 |
.info = &qdev_prop_ptr, |
|
456 |
.offset = offsetof(SLAVIO_INTCTLState, intbit_to_level), |
|
457 |
}, |
|
458 |
{ |
|
459 |
.name = "cputimer_bit", |
|
460 |
.info = &qdev_prop_uint32, |
|
461 |
.offset = offsetof(SLAVIO_INTCTLState, cputimer_bit), |
|
462 |
}, |
|
463 |
{/* end of property list */} |
|
457 | 464 |
} |
458 | 465 |
}; |
459 | 466 |
|
Also available in: Unified diff