diff options
Diffstat (limited to 'sys/arch/mvme68k/stand/libsa/clock.c')
-rw-r--r-- | sys/arch/mvme68k/stand/libsa/clock.c | 107 |
1 files changed, 30 insertions, 77 deletions
diff --git a/sys/arch/mvme68k/stand/libsa/clock.c b/sys/arch/mvme68k/stand/libsa/clock.c index c937a90085d..f56085c83ba 100644 --- a/sys/arch/mvme68k/stand/libsa/clock.c +++ b/sys/arch/mvme68k/stand/libsa/clock.c @@ -1,79 +1,30 @@ -/* $NetBSD: clock.c,v 1.1.1.1 1995/07/25 23:12:22 chuck Exp $ */ - -/* - * Copyright (c) 1992, 1993 - * The Regents of the University of California. All rights reserved. - * Copyright (c) 1994 Gordon W. Ross - * Copyright (c) 1993 Adam Glass - * - * This software was developed by the Computer Systems Engineering group - * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and - * contributed to Berkeley. - * - * All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Lawrence Berkeley Laboratory. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)clock.c 8.1 (Berkeley) 6/11/93 - */ - -/* - * Clock driver. - */ +/* $OpenBSD: clock.c,v 1.2 1996/04/28 10:48:57 deraadt Exp $ */ #include <sys/types.h> -#include "clockreg.h" -static struct clockreg *clockreg = (struct clockreg *) CLOCK_ADDR; -int hz = 1; /* XXX ? */ +#include "clockreg.h" +#include "config.h" +#include "clock.h" /* * BCD to decimal and decimal to BCD. */ -#define FROMBCD(x) (((x) >> 4) * 10 + ((x) & 0xf)) -#define TOBCD(x) (((x) / 10 * 16) + ((x) % 10)) +#define FROMBCD(x) (((x) >> 4) * 10 + ((x) & 0xf)) +#define TOBCD(x) (((x) / 10 * 16) + ((x) % 10)) -#define SECDAY (24 * 60 * 60) -#define SECYR (SECDAY * 365) -#define LEAPYEAR(y) (((y) & 3) == 0) +#define SECDAY (24 * 60 * 60) +#define SECYR (SECDAY * 365) +#define LEAPYEAR(y) (((y) & 3) == 0) /* * This code is defunct after 2068. * Will Unix still be here then?? */ const short dayyr[12] = - { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 }; +{0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}; -static u_long chiptotime(sec, min, hour, day, mon, year) +static u_long +chiptotime(sec, min, hour, day, mon, year) register int sec, min, hour, day, mon, year; { register int days, yr; @@ -84,7 +35,8 @@ static u_long chiptotime(sec, min, hour, day, mon, year) day = FROMBCD(day); mon = FROMBCD(mon); year = FROMBCD(year) + YEAR0; - if (year < 70) year = 70; + if (year < 70) + year = 70; /* simple sanity checks */ if (year < 70 || mon < 1 || mon > 12 || day < 1 || day > 31) @@ -99,30 +51,31 @@ static u_long chiptotime(sec, min, hour, day, mon, year) return (days * SECDAY + hour * 3600 + min * 60 + sec); } -/* - * Set up the system's time, given a `reasonable' time value. - */ -time_t getsecs() +time_t +getsecs() { - register struct clockreg *cl = clockreg; - int sec, min, hour, day, mon, year; + extern int cputyp; + register struct clockreg *cl; + int sec, min, hour, day, mon, year; + + if (cputyp == CPU_147) + cl = (struct clockreg *) CLOCK_ADDR_147; + else + cl = (struct clockreg *) CLOCK_ADDR_16x; - cl->cl_csr |= CLK_READ; /* enable read (stop time) */ + cl->cl_csr |= CLK_READ; /* enable read (stop time) */ sec = cl->cl_sec; min = cl->cl_min; hour = cl->cl_hour; day = cl->cl_mday; mon = cl->cl_month; year = cl->cl_year; - cl->cl_csr &= ~CLK_READ; /* time wears on */ - return(chiptotime(sec, min, hour, day, mon, year)); + cl->cl_csr &= ~CLK_READ;/* time wears on */ + return (chiptotime(sec, min, hour, day, mon, year)); } -/* - * delay - */ - -int getticks() +int +getticks() { - return((int)getsecs()); + return getsecs() * 100; } |