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