[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 3/7] RTC: Update interrupt state when interrupts are
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH 3/7] RTC: Update interrupt state when interrupts are masked/unmasked |
Date: |
Fri, 20 Jul 2012 12:53:49 +0200 |
From: "Zhang, Yang Z" <address@hidden>
If an interrupt flag is already set when the interrupt becomes enabled,
raise an interrupt immediately, and vice versa if interrupts become
disabled.
Signed-off-by: Yang Zhang <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
hw/mc146818rtc.c | 9 +++++++++
hw/mc146818rtc_regs.h | 1 +
2 files changed, 10 insertions(+)
diff --git a/hw/mc146818rtc.c b/hw/mc146818rtc.c
index 6a7dcb8..46f0c10 100644
--- a/hw/mc146818rtc.c
+++ b/hw/mc146818rtc.c
@@ -220,6 +220,15 @@ static void cmos_ioport_write(void *opaque, uint32_t addr,
uint32_t data)
rtc_set_time(s);
}
}
+ /* if an interrupt flag is already set when the interrupt
+ * becomes enabled, raise an interrupt immediately. */
+ if (data & s->cmos_data[RTC_REG_C] & REG_C_MASK) {
+ s->cmos_data[RTC_REG_C] |= REG_C_IRQF;
+ qemu_irq_raise(s->irq);
+ } else {
+ s->cmos_data[RTC_REG_C] &= ~REG_C_IRQF;
+ qemu_irq_lower(s->irq);
+ }
s->cmos_data[RTC_REG_B] = data;
periodic_timer_update(s, qemu_get_clock_ns(rtc_clock));
break;
diff --git a/hw/mc146818rtc_regs.h b/hw/mc146818rtc_regs.h
index 3ab3770..fc10076 100644
--- a/hw/mc146818rtc_regs.h
+++ b/hw/mc146818rtc_regs.h
@@ -58,5 +58,6 @@
#define REG_C_IRQF 0x80
#define REG_C_PF 0x40
#define REG_C_AF 0x20
+#define REG_C_MASK 0x70
#endif
--
1.7.10.2
- [Qemu-devel] [PATCH 0/7] Remove periodic wakeup from RTC timer, Paolo Bonzini, 2012/07/20
- [Qemu-devel] [PATCH 1/7] RTC: Remove the logic to update time format when DM bit changed, Paolo Bonzini, 2012/07/20
- [Qemu-devel] [PATCH 2/7] RTC: Rename rtc_timer_update, Paolo Bonzini, 2012/07/20
- [Qemu-devel] [PATCH 3/7] RTC: Update interrupt state when interrupts are masked/unmasked,
Paolo Bonzini <=
- [Qemu-devel] [PATCH 4/7] RTC: Update the RTC clock only when reading it, Paolo Bonzini, 2012/07/20
- [Qemu-devel] [PATCH 5/7] RTC: Add divider reset support, Paolo Bonzini, 2012/07/20
- [Qemu-devel] [PATCH 6/7] RTC: Do not fire timer periodically to catch next alarm, Paolo Bonzini, 2012/07/20
- [Qemu-devel] [PATCH 7/7] RTC: Allow to migrate from old QEMU, Paolo Bonzini, 2012/07/20