diff options
Diffstat (limited to 'hw/pxa2xx.c')
-rw-r--r-- | hw/pxa2xx.c | 27 |
1 files changed, 11 insertions, 16 deletions
diff --git a/hw/pxa2xx.c b/hw/pxa2xx.c index 14e3b9573e..0cb16725af 100644 --- a/hw/pxa2xx.c +++ b/hw/pxa2xx.c @@ -1183,27 +1183,22 @@ static CPUWriteMemoryFunc *pxa2xx_rtc_writefn[] = { static void pxa2xx_rtc_init(struct pxa2xx_state_s *s) { - struct tm *tm; - time_t ti; + struct tm tm; int wom; s->rttr = 0x7fff; s->rtsr = 0; - time(&ti); - if (rtc_utc) - tm = gmtime(&ti); - else - tm = localtime(&ti); - wom = ((tm->tm_mday - 1) / 7) + 1; - - s->last_rcnr = (uint32_t) ti; - s->last_rdcr = (wom << 20) | ((tm->tm_wday + 1) << 17) | - (tm->tm_hour << 12) | (tm->tm_min << 6) | tm->tm_sec; - s->last_rycr = ((tm->tm_year + 1900) << 9) | - ((tm->tm_mon + 1) << 5) | tm->tm_mday; - s->last_swcr = (tm->tm_hour << 19) | - (tm->tm_min << 13) | (tm->tm_sec << 7); + qemu_get_timedate(&tm, 0); + wom = ((tm.tm_mday - 1) / 7) + 1; + + s->last_rcnr = (uint32_t) mktime(&tm); + s->last_rdcr = (wom << 20) | ((tm.tm_wday + 1) << 17) | + (tm.tm_hour << 12) | (tm.tm_min << 6) | tm.tm_sec; + s->last_rycr = ((tm.tm_year + 1900) << 9) | + ((tm.tm_mon + 1) << 5) | tm.tm_mday; + s->last_swcr = (tm.tm_hour << 19) | + (tm.tm_min << 13) | (tm.tm_sec << 7); s->last_rtcpicr = 0; s->last_hz = s->last_sw = s->last_pi = qemu_get_clock(rt_clock); |