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