constants added from merging in hp300 support from Utah
[unix-history] / usr / src / sys / vax / include / clock.h
index 54d27a5..2124355 100644 (file)
@@ -1,20 +1,64 @@
-/*     clock.h 3.1     %H%     */
+/*
+ * Copyright (c) 1982, 1986 Regents of the University of California.
+ * All rights reserved.  The Berkeley software License Agreement
+ * specifies the terms and conditions for redistribution.
+ *
+ *     @(#)clock.h     7.2 (Berkeley) %G%
+ */
 
 /*
  * VAX clock registers
  */
 
 
 /*
  * VAX clock registers
  */
 
-#define        ICCS_RUN        0x1
-#define        ICCS_TRANS      0x10
-#define        ICCS_SS         0x20
-#define        ICCS_IE         0x40
-#define        ICCS_INT        0x80
+#define        ICCS_RUN        0x00000001
+#define        ICCS_TRANS      0x00000010
+#define        ICCS_SS         0x00000020
+#define        ICCS_IE         0x00000040
+#define        ICCS_INT        0x00000080
 #define        ICCS_ERR        0x80000000
        
 #define        ICCS_ERR        0x80000000
        
-/* THIS IS RIDICULOUS */
-#define        YRCURR  1980            /* current year */
+#define        SECDAY          ((unsigned)(24*60*60))          /* seconds per day */
+#define        SECYR           ((unsigned)(365*SECDAY))        /* per common year */
+/*
+ * TODRZERO is the what the TODR should contain when the ``year'' begins.
+ * The TODR should always contain a number between 0 and SECYR+SECDAY.
+ */
+#define        TODRZERO        ((unsigned)(1<<28))
+
+#define        YRREF           1970
+#define        LEAPYEAR(year)  ((year)%4==0)   /* good till time becomes negative */
+
+/*
+ * Has the time-of-day clock wrapped around?
+ */
+#define        clkwrap()       (((unsigned)mfpr(TODR) - TODRZERO)/100 > SECYR+SECDAY)
 
 
-#define        YRREF   1970            /* reference year for time */
-#define        SECHR   (60*60)         /* seconds/hr */
-#define        SECDAY  (24*SECHR)      /* seconds/day */
-#define        SECYR   (365*SECDAY)    /* seconds/common year */
+/*
+ * Software clock is software interrupt level 8,
+ * implemented as mtpr(SIRR, 0x8) in asm.sed.
+ */
+
+#ifndef LOCORE
+/*
+ * 8200s and 630s have a clock chip like those found in digital alarm
+ * clocks and watches.  Converting this to and from system times is
+ * painful, so we do it in only one place.  The routine chiptotime()
+ * converts a chiptime to the right value for time.tv_sec, and
+ * timetochip converts time.tv_sec back.
+ */
+struct chiptime {
+       int     sec;
+       int     min;
+       int     hour;
+       int     day;
+       int     mon;
+       int     year;
+};
+
+/*
+ * Clock read routine return values.
+ */
+#define        CLKREAD_OK      0       /* success, time.tv_sec set */
+#define        CLKREAD_WARN    1       /* clock appears wrong but time set anyway */
+#define        CLKREAD_BAD     2       /* clock is bad, no time available */
+#endif