xref: /original-bsd/sys/vax/include/clock.h (revision 87a44d1b)
1 /*
2  * Copyright (c) 1982, 1986 Regents of the University of California.
3  * All rights reserved.  The Berkeley software License Agreement
4  * specifies the terms and conditions for redistribution.
5  *
6  *	@(#)clock.h	7.2 (Berkeley) 05/07/88
7  */
8 
9 /*
10  * VAX clock registers
11  */
12 
13 #define	ICCS_RUN	0x00000001
14 #define	ICCS_TRANS	0x00000010
15 #define	ICCS_SS		0x00000020
16 #define	ICCS_IE		0x00000040
17 #define	ICCS_INT	0x00000080
18 #define	ICCS_ERR	0x80000000
19 
20 #define	SECDAY		((unsigned)(24*60*60))		/* seconds per day */
21 #define	SECYR		((unsigned)(365*SECDAY))	/* per common year */
22 /*
23  * TODRZERO is the what the TODR should contain when the ``year'' begins.
24  * The TODR should always contain a number between 0 and SECYR+SECDAY.
25  */
26 #define	TODRZERO	((unsigned)(1<<28))
27 
28 #define	YRREF		1970
29 #define	LEAPYEAR(year)	((year)%4==0)	/* good till time becomes negative */
30 
31 /*
32  * Has the time-of-day clock wrapped around?
33  */
34 #define	clkwrap()	(((unsigned)mfpr(TODR) - TODRZERO)/100 > SECYR+SECDAY)
35 
36 /*
37  * Software clock is software interrupt level 8,
38  * implemented as mtpr(SIRR, 0x8) in asm.sed.
39  */
40 
41 #ifndef LOCORE
42 /*
43  * 8200s and 630s have a clock chip like those found in digital alarm
44  * clocks and watches.  Converting this to and from system times is
45  * painful, so we do it in only one place.  The routine chiptotime()
46  * converts a chiptime to the right value for time.tv_sec, and
47  * timetochip converts time.tv_sec back.
48  */
49 struct chiptime {
50 	int	sec;
51 	int	min;
52 	int	hour;
53 	int	day;
54 	int	mon;
55 	int	year;
56 };
57 
58 /*
59  * Clock read routine return values.
60  */
61 #define	CLKREAD_OK	0	/* success, time.tv_sec set */
62 #define	CLKREAD_WARN	1	/* clock appears wrong but time set anyway */
63 #define	CLKREAD_BAD	2	/* clock is bad, no time available */
64 #endif
65