patch-2.3.16 linux/arch/ppc/kernel/time.c
Next file: linux/arch/ppc/kernel/time.h
Previous file: linux/arch/ppc/kernel/softemu8xx.c
Back to the patch index
Back to the overall index
- Lines: 60
- Date:
Tue Aug 31 11:36:43 1999
- Orig file:
v2.3.15/linux/arch/ppc/kernel/time.c
- Orig date:
Mon Jun 28 13:40:39 1999
diff -u --recursive --new-file v2.3.15/linux/arch/ppc/kernel/time.c linux/arch/ppc/kernel/time.c
@@ -1,5 +1,5 @@
/*
- * $Id: time.c,v 1.50 1999/06/05 00:23:20 cort Exp $
+ * $Id: time.c,v 1.55 1999/08/31 06:54:09 davem Exp $
* Common time routines among all ppc machines.
*
* Written by Cort Dougan (cort@cs.nmt.edu) to merge
@@ -52,7 +52,7 @@
void smp_local_timer_interrupt(struct pt_regs *);
/* keep track of when we need to update the rtc */
-unsigned long last_rtc_update = 0;
+time_t last_rtc_update = 0;
/* The decrementer counts down by 128 every 128ns on a 601. */
#define DECREMENTER_COUNT_601 (1000000000 / HZ)
@@ -110,15 +110,15 @@
/*
* update the rtc when needed
*/
- if ( xtime.tv_sec > last_rtc_update + 660 )
+ if ( (time_status & STA_UNSYNC) &&
+ ((xtime.tv_sec > last_rtc_update + 60) ||
+ (xtime.tv_sec < last_rtc_update)) )
{
- if (ppc_md.set_rtc_time(xtime.tv_sec) == 0) {
+ if (ppc_md.set_rtc_time(xtime.tv_sec) == 0)
last_rtc_update = xtime.tv_sec;
- }
- else {
+ else
/* do it again in 60 s */
- last_rtc_update = xtime.tv_sec - 60;
- }
+ last_rtc_update = xtime.tv_sec;
}
}
}
@@ -176,7 +176,7 @@
}
-__initfunc(void time_init(void))
+void __init time_init(void)
{
if (ppc_md.time_init != NULL)
{
@@ -196,10 +196,8 @@
xtime.tv_usec = 0;
set_dec(decrementer_count);
- /* mark the rtc/on-chip timer as in sync
- * so we don't update right away
- */
- last_rtc_update = xtime.tv_sec;
+ /* allow setting the time right away */
+ last_rtc_update = 0;
}
/* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)