qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Glauber Costa <glommer@redhat.com>
To: qemu-devel@nongnu.org
Cc: aliguori@us.ibm.com, Gleb Natapov <gleb@redhat.com>
Subject: [Qemu-devel] [PATCH 10/15] BACKPORT: Add rtc reset function.
Date: Wed, 17 Jun 2009 13:09:59 -0400	[thread overview]
Message-ID: <1245258604-2843-11-git-send-email-glommer@redhat.com> (raw)
In-Reply-To: <1245258604-2843-10-git-send-email-glommer@redhat.com>

From: Gleb Natapov <gleb@redhat.com>

On reset:
Periodic Interrupt Enable (PIE) bit is cleared to zero
Alarm Interrupt Enable (AIE) bit is cleared to zero
Update ended Interrupt Flag (UF) bit is cleared to zero
Interrupt Request status Flag (IRQF) bit is cleared to zero
Periodic Interrupt Flag (PF) bit is cleared to zero
Alarm Interrupt Flag (AF) bit is cleared to zero
Square Wave output Enable (SQWE) zero

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Glauber Costa <glommer@redhat.com>
---
 hw/mc146818rtc.c |   23 +++++++++++++++++++++++
 1 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/hw/mc146818rtc.c b/hw/mc146818rtc.c
index 5b08d72..30a74ee 100644
--- a/hw/mc146818rtc.c
+++ b/hw/mc146818rtc.c
@@ -56,6 +56,11 @@
 #define REG_B_UIE 0x10
 #define REG_B_DM  0x04
 
+#define REG_C_UF   0x10
+#define REG_C_IRQF 0x80
+#define REG_C_PF   0x40
+#define REG_C_AF   0x20
+
 struct RTCState {
     uint8_t cmos_data[128];
     uint8_t cmos_index;
@@ -527,6 +532,21 @@ static int rtc_load_td(QEMUFile *f, void *opaque, int version_id)
 }
 #endif
 
+static void rtc_reset(void *opaque)
+{
+    RTCState *s = opaque;
+
+    s->cmos_data[RTC_REG_B] &= ~(REG_B_PIE | REG_B_AIE);
+    s->cmos_data[RTC_REG_C] &= ~(REG_C_UF | REG_C_IRQF | REG_C_PF | REG_C_AF);
+
+    qemu_irq_lower(s->irq);
+
+#ifdef TARGET_I386
+    if (rtc_td_hack)
+	    s->irq_coalesced = 0;
+#endif
+}
+
 RTCState *rtc_init(int base, qemu_irq irq, int base_year)
 {
     RTCState *s;
@@ -560,6 +580,8 @@ RTCState *rtc_init(int base, qemu_irq irq, int base_year)
     if (rtc_td_hack)
         register_savevm("mc146818rtc-td", base, 1, rtc_save_td, rtc_load_td, s);
 #endif
+    qemu_register_reset(rtc_reset, s);
+
     return s;
 }
 
@@ -670,5 +692,6 @@ RTCState *rtc_mm_init(target_phys_addr_t base, int it_shift, qemu_irq irq,
     if (rtc_td_hack)
         register_savevm("mc146818rtc-td", base, 1, rtc_save_td, rtc_load_td, s);
 #endif
+    qemu_register_reset(rtc_reset, s);
     return s;
 }
-- 
1.6.2.2

  reply	other threads:[~2009-06-17 17:10 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-17 17:09 [Qemu-devel] [GIT PULL 00/15] Stable branch update 2009-06-17 Glauber Costa
2009-06-17 17:09 ` [Qemu-devel] [PATCH 01/15] net: Fix -net socket, listen (Jan Kiszka) Glauber Costa
2009-06-17 17:09   ` [Qemu-devel] [PATCH 02/15] Minimal ethernet frame length is 64 bytes Glauber Costa
2009-06-17 17:09     ` [Qemu-devel] [PATCH 03/15] Don't send all gratuitous packets at once Glauber Costa
2009-06-17 17:09       ` [Qemu-devel] [PATCH 04/15] serial: fix lost character after sysrq Glauber Costa
2009-06-17 17:09         ` [Qemu-devel] [PATCH 05/15] e1000: Ignore reset command Glauber Costa
2009-06-17 17:09           ` [Qemu-devel] [PATCH 06/15] VNC: Fix memory allocation (wrong structure size) Glauber Costa
2009-06-17 17:09             ` [Qemu-devel] [PATCH 07/15] fix raw_pread_aligned return value Glauber Costa
2009-06-17 17:09               ` [Qemu-devel] [PATCH 08/15] BACKPORT: Register reset functions for e1000 and rtl8139 Glauber Costa
2009-06-17 17:09                 ` [Qemu-devel] [PATCH 09/15] BACKPORT: Update irqs on reset and device load Glauber Costa
2009-06-17 17:09                   ` Glauber Costa [this message]
2009-06-17 17:10                     ` [Qemu-devel] [PATCH 11/15] fix qemu_aio_flush Glauber Costa
2009-06-17 17:10                       ` [Qemu-devel] [PATCH 12/15] QEMU KVM: i386: Fix the cpu reset state Glauber Costa
2009-06-17 17:10                         ` [Qemu-devel] [PATCH 13/15] kvm: Fix IRQ injection into full queue Glauber Costa
2009-06-17 17:10                           ` [Qemu-devel] [PATCH 14/15] Prevent CD-ROM media eject while device is locked Glauber Costa
2009-06-17 17:10                             ` [Qemu-devel] [PATCH 15/15] Fix vga_screen_dump_blank() PPM generation Glauber Costa
2009-06-17 17:12                   ` [Qemu-devel] Re: [PATCH 09/15] BACKPORT: Update irqs on reset and device load Blue Swirl
2009-06-17 17:49                     ` Glauber Costa
2009-06-17 17:57 ` [Qemu-devel] [GIT PULL 00/15] Stable branch update 2009-06-17 Anthony Liguori

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1245258604-2843-11-git-send-email-glommer@redhat.com \
    --to=glommer@redhat.com \
    --cc=aliguori@us.ibm.com \
    --cc=gleb@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).