Revision 4b48bf05 hw/slavio_timer.c
b/hw/slavio_timer.c | ||
---|---|---|
76 | 76 |
#define SYS_TIMER_SIZE 0x14 |
77 | 77 |
#define CPU_TIMER_SIZE 0x10 |
78 | 78 |
|
79 |
#define SYS_TIMER_OFFSET 0x10000ULL |
|
80 |
#define CPU_TIMER_OFFSET(cpu) (0x1000ULL * cpu) |
|
81 |
|
|
82 | 79 |
#define TIMER_LIMIT 0 |
83 | 80 |
#define TIMER_COUNTER 1 |
84 | 81 |
#define TIMER_COUNTER_NORST 2 |
... | ... | |
415 | 412 |
s->cputimer_mode = 0; |
416 | 413 |
} |
417 | 414 |
|
418 |
void slavio_timer_init_all(target_phys_addr_t addr, qemu_irq master_irq, |
|
419 |
qemu_irq *cpu_irqs, unsigned int num_cpus) |
|
420 |
{ |
|
421 |
DeviceState *dev; |
|
422 |
SysBusDevice *s; |
|
423 |
unsigned int i; |
|
424 |
|
|
425 |
dev = qdev_create(NULL, "slavio_timer"); |
|
426 |
qdev_prop_set_uint32(dev, "num_cpus", num_cpus); |
|
427 |
qdev_init(dev); |
|
428 |
s = sysbus_from_qdev(dev); |
|
429 |
sysbus_connect_irq(s, 0, master_irq); |
|
430 |
sysbus_mmio_map(s, 0, addr + SYS_TIMER_OFFSET); |
|
431 |
|
|
432 |
for (i = 0; i < MAX_CPUS; i++) { |
|
433 |
sysbus_mmio_map(s, i + 1, addr + (target_phys_addr_t)CPU_TIMER_OFFSET(i)); |
|
434 |
sysbus_connect_irq(s, i + 1, cpu_irqs[i]); |
|
435 |
} |
|
436 |
} |
|
437 |
|
|
438 | 415 |
static void slavio_timer_init1(SysBusDevice *dev) |
439 | 416 |
{ |
440 | 417 |
int io; |
Also available in: Unified diff