105 lines
4.3 KiB
C
105 lines
4.3 KiB
C
/* $NetBSD: clock_machdep.h,v 1.2 1997/06/22 22:41:33 jonathan Exp $ */
|
|
|
|
/*-
|
|
* Copyright (c) 1997 The NetBSD Foundation, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This code is derived from software contributed to The NetBSD Foundation
|
|
* by Jonathan Stone.
|
|
*
|
|
* 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 NetBSD
|
|
* Foundation, Inc. and its contributors.
|
|
* 4. Neither the name of The NetBSD Foundation 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
|
|
*/
|
|
|
|
/*
|
|
* System-dependent clock declarations for the ``cpu-independent''
|
|
* clock interface.
|
|
*
|
|
* This file must prototype or define the folluwing functions of
|
|
* macros (one or more of which may be no-ops):
|
|
*
|
|
* CLOCK_RATE default rate at which clock runs. Some platforms
|
|
* run the RTC at a fixed rate, independent of
|
|
* the acutal RTC hardware in use. clock
|
|
*
|
|
* clk_rtc_to_systime(struct clocktime *ct, base)
|
|
* hook called just after getting a time from the RTC but
|
|
* before sanity checks, and before (*ct) is written to
|
|
* the RTC hardware.
|
|
* Allows machine-dependent ransformation to the clocktime
|
|
* (e.g., for compatibility with PROMS which filter out
|
|
* high-order RTC bits.)
|
|
*
|
|
* clk_systime_to_rtc(struct clocktime *ct, base)
|
|
*
|
|
* hook called just before *ct is written to the RTC hardware.
|
|
* Allows machine-dependent transformation of the RTC
|
|
* (e.g., forcing the non-volatile RTC to keep time-of-year
|
|
* even when the hardware has more higher-order bits.)
|
|
*
|
|
*/
|
|
|
|
|
|
/* The default clock rate on a pmax is 256 Hz. */
|
|
#define CLOCK_RATE 256
|
|
|
|
|
|
/*
|
|
* Experiments (and passing years) show that Decstation PROMS
|
|
* assume the kernel uses the clock chip as a time-of-year clock.
|
|
* The PROM assumes the clock is always set to 1972 or 1973, and contains
|
|
* time-of-year in seconds. The PROM checks the clock at boot time,
|
|
* and if it's outside that range, sets it to 1972-01-01.
|
|
* Use clk_systime_to_rtc() and clk_rtc_to_systime to hide that.
|
|
*
|
|
* XXX should be at the mc146818 layer?
|
|
* XXX should use filesystem base time to convert to a TOY, and
|
|
* get rid of the fixed offset which needs changing every two years.
|
|
*/
|
|
|
|
#define DEC_DAY_OFFSET 0 /* maybe 1 */
|
|
#define DEC_YR_OFFSET 25 /* good until Dec 31, 1998 */
|
|
|
|
/*
|
|
* convert RTC time to system time.
|
|
* On a pmax, add the current year less 1972 to the RTC clock time.
|
|
* (should be 1973 in leapyears, but we don't care.)
|
|
*/
|
|
|
|
#define clk_rtc_to_systime(ct, base) \
|
|
do { (ct)->year += DEC_YR_OFFSET; (ct)->day += DEC_DAY_OFFSET; } while(0)
|
|
|
|
/*
|
|
* convert RTC time to system time.
|
|
* On a pmax, subtract the current year less 1972 from the RTC clock time,
|
|
* to give a time in 1972 or 1973..
|
|
* (should use 1973 only for leapyears but we don't care.)
|
|
*/
|
|
#define clk_systime_to_rtc(ct, base) \
|
|
do { (ct)->year -= DEC_YR_OFFSET; (ct)->day -= DEC_DAY_OFFSET; } while(0)
|