summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authordfr <dfr@FreeBSD.org>1998-10-06 08:40:18 +0000
committerdfr <dfr@FreeBSD.org>1998-10-06 08:40:18 +0000
commit0d820bb7dbaee50ef5d47caaf49721aca9b2dc96 (patch)
treea00ccbfa4b8988a4c91b957f58da14e29509f500 /sys
parentd84eda21c752599b444a613cb087194d1b7b5450 (diff)
downloadFreeBSD-src-0d820bb7dbaee50ef5d47caaf49721aca9b2dc96.zip
FreeBSD-src-0d820bb7dbaee50ef5d47caaf49721aca9b2dc96.tar.gz
Add support for adjkerntz (largely untested).
Diffstat (limited to 'sys')
-rw-r--r--sys/alpha/alpha/clock.c12
-rw-r--r--sys/alpha/alpha/machdep.c23
-rw-r--r--sys/alpha/include/clock.h3
-rw-r--r--sys/alpha/include/cpu.h10
-rw-r--r--sys/powerpc/include/clock.h3
5 files changed, 44 insertions, 7 deletions
diff --git a/sys/alpha/alpha/clock.c b/sys/alpha/alpha/clock.c
index 26a8969..ef32268 100644
--- a/sys/alpha/alpha/clock.c
+++ b/sys/alpha/alpha/clock.c
@@ -1,4 +1,4 @@
-/* $Id: clock.c,v 1.2 1998/06/14 13:44:38 dfr Exp $ */
+/* $Id: clock.c,v 1.3 1998/07/22 08:16:34 dfr Exp $ */
/* $NetBSD: clock.c,v 1.20 1998/01/31 10:32:47 ross Exp $ */
/*
@@ -67,6 +67,8 @@ device_t clockdev;
int clockinitted;
int tickfix;
int tickfixinterval;
+int adjkerntz; /* local offset from GMT in seconds */
+int disable_rtc_set; /* disable resettodr() if != 0 */
int wall_cmos_clock; /* wall CMOS clock assumed if != 0 */
static int beeping = 0;
@@ -280,6 +282,8 @@ inittodr(base)
s = splclock();
ts.tv_sec =
days * SECDAY + ct.hour * SECHOUR + ct.min * SECMIN + ct.sec;
+ if (wall_cmos_clock)
+ ts.tv_sec += adjkerntz;
ts.tv_nsec = 0;
set_timecounter(&ts);
splx(s);
@@ -315,6 +319,9 @@ resettodr()
struct clocktime ct;
unsigned long tm;
+ if (disable_rtc_set)
+ return;
+
s = splclock();
tm = time_second;
splx(s);
@@ -322,6 +329,9 @@ resettodr()
if (!clockinitted)
return;
+ /* Calculate local time to put in RTC */
+ tm -= (wall_cmos_clock ? adjkerntz : 0);
+
/* compute the day of week. */
t2 = tm / SECDAY;
ct.dow = (t2 + 4) % 7; /* 1/1/1970 was thursday */
diff --git a/sys/alpha/alpha/machdep.c b/sys/alpha/alpha/machdep.c
index d1164b6..5816af8 100644
--- a/sys/alpha/alpha/machdep.c
+++ b/sys/alpha/alpha/machdep.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: machdep.c,v 1.13 1998/09/14 22:43:19 jdp Exp $
+ * $Id: machdep.c,v 1.14 1998/09/17 09:35:31 dfr Exp $
*/
/*-
* Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -154,7 +154,6 @@ struct pcb* curpcb;
u_int64_t cycles_per_usec;
u_int32_t cycles_per_sec;
int whichqs, whichrtqs, whichidqs;
-int adjkerntz;
int cold = 1;
struct platform platform;
alpha_chipset_t chipset;
@@ -1828,3 +1827,23 @@ bad:
return(-1);
}
+
+static int
+sysctl_machdep_adjkerntz SYSCTL_HANDLER_ARGS
+{
+ int error;
+ error = sysctl_handle_int(oidp, oidp->oid_arg1, oidp->oid_arg2,
+ req);
+ if (!error && req->newptr)
+ resettodr();
+ return (error);
+}
+
+SYSCTL_PROC(_machdep, CPU_ADJKERNTZ, adjkerntz, CTLTYPE_INT|CTLFLAG_RW,
+ &adjkerntz, 0, sysctl_machdep_adjkerntz, "I", "");
+
+SYSCTL_INT(_machdep, CPU_DISRTCSET, disable_rtc_set,
+ CTLFLAG_RW, &disable_rtc_set, 0, "");
+
+SYSCTL_INT(_machdep, CPU_WALLCLOCK, wall_cmos_clock,
+ CTLFLAG_RW, &wall_cmos_clock, 0, "");
diff --git a/sys/alpha/include/clock.h b/sys/alpha/include/clock.h
index 15e4fa7..e191523 100644
--- a/sys/alpha/include/clock.h
+++ b/sys/alpha/include/clock.h
@@ -3,7 +3,7 @@
* Garrett Wollman, September 1994.
* This file is in the public domain.
*
- * $Id: clock.h,v 1.1 1998/06/10 10:54:35 dfr Exp $
+ * $Id: clock.h,v 1.2 1998/07/22 08:26:23 dfr Exp $
*/
#ifndef _MACHINE_CLOCK_H_
@@ -11,6 +11,7 @@
#ifdef KERNEL
+extern int disable_rtc_set;
extern int wall_cmos_clock;
extern int adjkerntz;
diff --git a/sys/alpha/include/cpu.h b/sys/alpha/include/cpu.h
index b63efaf..5a0a15a 100644
--- a/sys/alpha/include/cpu.h
+++ b/sys/alpha/include/cpu.h
@@ -1,4 +1,4 @@
-/* $Id: cpu.h,v 1.2 1998/06/10 10:54:45 dfr Exp $ */
+/* $Id: cpu.h,v 1.3 1998/07/12 16:32:06 dfr Exp $ */
/* From: NetBSD: cpu.h,v 1.18 1997/09/23 23:17:49 mjacob Exp */
/*
@@ -107,7 +107,10 @@ u_int32_t want_resched; /* resched() was called */
#define CPU_UNALIGNED_FIX 4 /* int: fix unaligned accesses */
#define CPU_UNALIGNED_SIGBUS 5 /* int: SIGBUS unaligned accesses */
#define CPU_BOOTED_KERNEL 6 /* string: booted kernel name */
-#define CPU_MAXID 7 /* 6 valid machdep IDs */
+#define CPU_ADJKERNTZ 7 /* int: timezone offset (seconds) */
+#define CPU_DISRTCSET 8 /* int: disable resettodr() call */
+#define CPU_WALLCLOCK 9 /* int: indicates wall CMOS clock */
+#define CPU_MAXID 9 /* 9 valid machdep IDs */
#define CTL_MACHDEP_NAMES { \
{ 0, 0 }, \
@@ -117,6 +120,9 @@ u_int32_t want_resched; /* resched() was called */
{ "unaligned_fix", CTLTYPE_INT }, \
{ "unaligned_sigbus", CTLTYPE_INT }, \
{ "booted_kernel", CTLTYPE_STRING }, \
+ { "adjkerntz", CTLTYPE_INT }, \
+ { "disable_rtc_set", CTLTYPE_INT }, \
+ { "wall_cmos_clock", CTLTYPE_INT }, \
}
#ifdef KERNEL
diff --git a/sys/powerpc/include/clock.h b/sys/powerpc/include/clock.h
index 15e4fa7..e191523 100644
--- a/sys/powerpc/include/clock.h
+++ b/sys/powerpc/include/clock.h
@@ -3,7 +3,7 @@
* Garrett Wollman, September 1994.
* This file is in the public domain.
*
- * $Id: clock.h,v 1.1 1998/06/10 10:54:35 dfr Exp $
+ * $Id: clock.h,v 1.2 1998/07/22 08:26:23 dfr Exp $
*/
#ifndef _MACHINE_CLOCK_H_
@@ -11,6 +11,7 @@
#ifdef KERNEL
+extern int disable_rtc_set;
extern int wall_cmos_clock;
extern int adjkerntz;
OpenPOWER on IntegriCloud