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