Revision d537cf6c hw/mc146818rtc.c
b/hw/mc146818rtc.c | ||
---|---|---|
54 | 54 |
uint8_t cmos_data[128]; |
55 | 55 |
uint8_t cmos_index; |
56 | 56 |
struct tm current_tm; |
57 |
int irq;
|
|
57 |
qemu_irq irq;
|
|
58 | 58 |
/* periodic timer */ |
59 | 59 |
QEMUTimer *periodic_timer; |
60 | 60 |
int64_t next_periodic_time; |
... | ... | |
95 | 95 |
|
96 | 96 |
rtc_timer_update(s, s->next_periodic_time); |
97 | 97 |
s->cmos_data[RTC_REG_C] |= 0xc0; |
98 |
pic_set_irq(s->irq, 1);
|
|
98 |
qemu_irq_raise(s->irq);
|
|
99 | 99 |
} |
100 | 100 |
|
101 | 101 |
static void cmos_ioport_write(void *opaque, uint32_t addr, uint32_t data) |
... | ... | |
314 | 314 |
s->cmos_data[RTC_HOURS_ALARM] == s->current_tm.tm_hour)) { |
315 | 315 |
|
316 | 316 |
s->cmos_data[RTC_REG_C] |= 0xa0; |
317 |
pic_set_irq(s->irq, 1);
|
|
317 |
qemu_irq_raise(s->irq);
|
|
318 | 318 |
} |
319 | 319 |
} |
320 | 320 |
|
321 | 321 |
/* update ended interrupt */ |
322 | 322 |
if (s->cmos_data[RTC_REG_B] & REG_B_UIE) { |
323 | 323 |
s->cmos_data[RTC_REG_C] |= 0x90; |
324 |
pic_set_irq(s->irq, 1);
|
|
324 |
qemu_irq_raise(s->irq);
|
|
325 | 325 |
} |
326 | 326 |
|
327 | 327 |
/* clear update in progress bit */ |
... | ... | |
353 | 353 |
break; |
354 | 354 |
case RTC_REG_C: |
355 | 355 |
ret = s->cmos_data[s->cmos_index]; |
356 |
pic_set_irq(s->irq, 0);
|
|
356 |
qemu_irq_lower(s->irq);
|
|
357 | 357 |
s->cmos_data[RTC_REG_C] = 0x00; |
358 | 358 |
break; |
359 | 359 |
default: |
... | ... | |
453 | 453 |
return 0; |
454 | 454 |
} |
455 | 455 |
|
456 |
RTCState *rtc_init(int base, int irq)
|
|
456 |
RTCState *rtc_init(int base, qemu_irq irq)
|
|
457 | 457 |
{ |
458 | 458 |
RTCState *s; |
459 | 459 |
|
Also available in: Unified diff