Revision d7d02e3c hw/i8254.c

b/hw/i8254.c
434 434
    return 0;
435 435
}
436 436

  
437
PITState *pit_init(int base, int irq)
437
static void pit_reset(void *opaque)
438 438
{
439
    PITState *pit = &pit_state;
439
    PITState *pit = opaque;
440 440
    PITChannelState *s;
441 441
    int i;
442 442

  
443 443
    for(i = 0;i < 3; i++) {
444 444
        s = &pit->channels[i];
445
        if (i == 0) {
446
            /* the timer 0 is connected to an IRQ */
447
            s->irq_timer = qemu_new_timer(vm_clock, pit_irq_timer, s);
448
            s->irq = irq;
449
        }
450 445
        s->mode = 3;
451 446
        s->gate = (i != 2);
452 447
        pit_load_count(s, 0);
453 448
    }
449
}
450

  
451
PITState *pit_init(int base, int irq)
452
{
453
    PITState *pit = &pit_state;
454
    PITChannelState *s;
455

  
456
    s = &pit->channels[0];
457
    /* the timer 0 is connected to an IRQ */
458
    s->irq_timer = qemu_new_timer(vm_clock, pit_irq_timer, s);
459
    s->irq = irq;
454 460

  
455 461
    register_savevm("i8254", base, 1, pit_save, pit_load, pit);
456 462

  
463
    qemu_register_reset(pit_reset, pit);
457 464
    register_ioport_write(base, 4, 1, pit_ioport_write, pit);
458 465
    register_ioport_read(base, 3, 1, pit_ioport_read, pit);
466

  
467
    pit_reset(pit);
468

  
459 469
    return pit;
460 470
}

Also available in: Unified diff