diff --git a/sys/arch/mvme68k/conf/files.mvme68k b/sys/arch/mvme68k/conf/files.mvme68k index f61cf52cc363..50c7148130da 100644 --- a/sys/arch/mvme68k/conf/files.mvme68k +++ b/sys/arch/mvme68k/conf/files.mvme68k @@ -1,4 +1,4 @@ -# $NetBSD: files.mvme68k,v 1.46 2001/07/27 18:40:28 scw Exp $ +# $NetBSD: files.mvme68k,v 1.47 2001/08/12 18:33:12 scw Exp $ # config file for mvme68k @@ -88,6 +88,11 @@ device memc attach memc at mainbus file arch/mvme68k/dev/memc.c memc +# TimeKeeper NVRAM device +device timekeeper: mk48txx +attach timekeeper at mainbus +file arch/mvme68k/dev/timekeeper.c timekeeper + # Memory disk for boot tape file dev/md_root.c memory_disk_hooks @@ -131,6 +136,7 @@ file arch/mvme68k/mvme68k/sys_machdep.c file arch/mvme68k/mvme68k/trap.c file arch/mvme68k/mvme68k/vm_machdep.c file arch/m68k/m68k/cacheops.c +file dev/clock_subr.c file dev/cons.c file dev/cninit.c diff --git a/sys/arch/mvme68k/conf/std.mvme68k b/sys/arch/mvme68k/conf/std.mvme68k index da71759d132c..53901f00c299 100644 --- a/sys/arch/mvme68k/conf/std.mvme68k +++ b/sys/arch/mvme68k/conf/std.mvme68k @@ -1,10 +1,12 @@ -# $NetBSD: std.mvme68k,v 1.9 2000/11/30 22:31:27 scw Exp $ +# $NetBSD: std.mvme68k,v 1.10 2001/08/12 18:33:12 scw Exp $ # # Options/devices that all mvme68ks should have # machine mvme68k m68k +timekeeper0 at mainbus0 + options EXEC_AOUT # support for exec'ing a.out options EXEC_ELF32 # support for exec'ing Elf options EXEC_SCRIPT # support for #! scripts diff --git a/sys/arch/mvme68k/dev/clock_pcc.c b/sys/arch/mvme68k/dev/clock_pcc.c index 199106aef46d..ffa4d0491d73 100644 --- a/sys/arch/mvme68k/dev/clock_pcc.c +++ b/sys/arch/mvme68k/dev/clock_pcc.c @@ -1,4 +1,4 @@ -/* $NetBSD: clock_pcc.c,v 1.9 2001/07/06 19:00:13 scw Exp $ */ +/* $NetBSD: clock_pcc.c,v 1.10 2001/08/12 18:33:13 scw Exp $ */ /*- * Copyright (c) 1996 The NetBSD Foundation, Inc. @@ -49,7 +49,6 @@ #include #include -#include #include #include #include @@ -118,28 +117,16 @@ clock_pcc_attach(parent, self, aux) panic("clock_pcc_attach: wrong interrupt level"); clock_pcc_sc = sc; - - /* Map the RTC's registers */ - sc->sc_clock_args.ca_bust = pa->pa_bust; - bus_space_map(pa->pa_bust, pa->pa_offset, - MK48T_REGSIZE, 0, &sc->sc_clock_args.ca_bush); - sc->sc_clock_args.ca_arg = sc; sc->sc_clock_args.ca_initfunc = clock_pcc_initclocks; sc->sc_clock_args.ca_microtime = clock_pcc_microtime; /* Do common portions of clock config. */ - clock_config(self, &sc->sc_clock_args); + clock_config(self, &sc->sc_clock_args, pccintr_evcnt(pa->pa_ipl)); /* Ensure our interrupts get disabled at shutdown time. */ (void) shutdownhook_establish(clock_pcc_shutdown, NULL); - /* Register the event counters */ - evcnt_attach_dynamic(&clock_profcnt, EVCNT_TYPE_INTR, - pccintr_evcnt(pa->pa_ipl), "clock", "profint"); - evcnt_attach_dynamic(&clock_statcnt, EVCNT_TYPE_INTR, - pccintr_evcnt(pa->pa_ipl), "clock", "statint"); - /* Attach the interrupt handlers. */ pccintr_establish(PCCV_TIMER1, clock_pcc_profintr, pa->pa_ipl, NULL, &clock_profcnt); diff --git a/sys/arch/mvme68k/dev/clock_pcctwo.c b/sys/arch/mvme68k/dev/clock_pcctwo.c index f8a6e619d58a..19d651d528b1 100644 --- a/sys/arch/mvme68k/dev/clock_pcctwo.c +++ b/sys/arch/mvme68k/dev/clock_pcctwo.c @@ -1,4 +1,4 @@ -/* $NetBSD: clock_pcctwo.c,v 1.7 2001/07/06 19:00:13 scw Exp $ */ +/* $NetBSD: clock_pcctwo.c,v 1.8 2001/08/12 18:33:13 scw Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -50,7 +50,6 @@ #include #include -#include #include #include #include @@ -116,17 +115,12 @@ clock_pcctwo_attach(parent, self, aux) if (pa->pa_ipl != CLOCK_LEVEL) panic("clock_pcctwo_attach: wrong interrupt level"); - /* Map the RTC's registers */ - sc->sc_clock_args.ca_bust = pa->pa_bust; - bus_space_map(pa->pa_bust, pa->pa_offset, - MK48T_REGSIZE, 0, &sc->sc_clock_args.ca_bush); - sc->sc_clock_args.ca_arg = sc; sc->sc_clock_args.ca_initfunc = clock_pcctwo_initclocks; sc->sc_clock_args.ca_microtime = clock_pcctwo_microtime; /* Do common portions of clock config. */ - clock_config(self, &sc->sc_clock_args); + clock_config(self, &sc->sc_clock_args, pcctwointr_evcnt(pa->pa_ipl)); /* Ensure our interrupts get disabled at shutdown time. */ (void) shutdownhook_establish(clock_pcctwo_shutdown, NULL); @@ -134,12 +128,6 @@ clock_pcctwo_attach(parent, self, aux) sc->sc_clock_lvl = (pa->pa_ipl & PCCTWO_ICR_LEVEL_MASK) | PCCTWO_ICR_ICLR | PCCTWO_ICR_IEN; - /* Register the event counters */ - evcnt_attach_dynamic(&clock_profcnt, EVCNT_TYPE_INTR, - pcctwointr_evcnt(pa->pa_ipl), "clock", "profint"); - evcnt_attach_dynamic(&clock_statcnt, EVCNT_TYPE_INTR, - pcctwointr_evcnt(pa->pa_ipl), "clock", "statint"); - /* Attach the interrupt handlers. */ pcctwointr_establish(PCCTWOV_TIMER1, clock_pcctwo_profintr, pa->pa_ipl, NULL, &clock_profcnt); diff --git a/sys/arch/mvme68k/dev/mainbus.c b/sys/arch/mvme68k/dev/mainbus.c index bfd7d9c30212..d62d98045084 100644 --- a/sys/arch/mvme68k/dev/mainbus.c +++ b/sys/arch/mvme68k/dev/mainbus.c @@ -1,4 +1,4 @@ -/* $NetBSD: mainbus.c,v 1.10 2001/07/27 18:38:54 scw Exp $ */ +/* $NetBSD: mainbus.c,v 1.11 2001/08/12 18:33:13 scw Exp $ */ /*- * Copyright (c) 2000 The NetBSD Foundation, Inc. @@ -81,6 +81,7 @@ struct mainbus_devices { #ifdef MVME147 static struct mainbus_devices mainbusdevs_147[] = { {"pcc", MAINBUS_PCC_OFFSET}, + {"timekeeper", MAINBUS_TK147_OFFSET}, {NULL, 0} }; #endif @@ -89,6 +90,7 @@ static struct mainbus_devices mainbusdevs_147[] = { static struct mainbus_devices mainbusdevs_1x7[] = { {"pcctwo", MAINBUS_PCCTWO_OFFSET}, {"vmetwo", MAINBUS_VMETWO_OFFSET}, + {"timekeeper", MAINBUS_TIMEKEEPER_OFFSET}, {NULL, 0} }; #endif diff --git a/sys/arch/mvme68k/dev/mainbus.h b/sys/arch/mvme68k/dev/mainbus.h index c35c654bc572..12a761f80268 100644 --- a/sys/arch/mvme68k/dev/mainbus.h +++ b/sys/arch/mvme68k/dev/mainbus.h @@ -1,4 +1,4 @@ -/* $NetBSD: mainbus.h,v 1.5 2001/07/27 18:38:54 scw Exp $ */ +/* $NetBSD: mainbus.h,v 1.6 2001/08/12 18:33:13 scw Exp $ */ /*- * Copyright (c) 2000 The NetBSD Foundation, Inc. @@ -49,7 +49,8 @@ struct mainbus_attach_args { /* * Mainbus offsets for devices on MVME147 */ -#define MAINBUS_PCC_OFFSET 0x0000u +#define MAINBUS_TK147_OFFSET 0x0000u +#define MAINBUS_PCC_OFFSET 0x1000u /* * Mainbus offsets for devices on all other boards. @@ -59,6 +60,7 @@ struct mainbus_attach_args { #define MAINBUS_MEMC1_OFFSET 0x3000u #define MAINBUS_MEMC2_OFFSET 0x3100u #define MAINBUS_IPACK_OFFSET 0x18000u /* mvme162/mvme172 only */ +#define MAINBUS_TIMEKEEPER_OFFSET 0x80000u extern struct mvme68k_bus_space_tag _mainbus_space_tag; extern struct mvme68k_bus_dma_tag _mainbus_dma_tag; diff --git a/sys/arch/mvme68k/dev/pcc.c b/sys/arch/mvme68k/dev/pcc.c index 86213cd2038d..82d34e57f441 100644 --- a/sys/arch/mvme68k/dev/pcc.c +++ b/sys/arch/mvme68k/dev/pcc.c @@ -1,4 +1,4 @@ -/* $NetBSD: pcc.c,v 1.19 2001/07/06 19:00:13 scw Exp $ */ +/* $NetBSD: pcc.c,v 1.20 2001/08/12 18:33:13 scw Exp $ */ /*- * Copyright (c) 1996, 1997 The NetBSD Foundation, Inc. @@ -112,8 +112,7 @@ struct pcc_device { * Devices that live on the PCC, attached in this order. */ static struct pcc_device pcc_devices[] = { - {"clock", PCC_RTC_OFF}, - {"nvram", PCC_NVRAM_OFF}, + {"clock", 0}, {"zsc", PCC_ZS0_OFF}, {"zsc", PCC_ZS1_OFF}, {"le", PCC_LE_OFF}, @@ -181,8 +180,7 @@ pccattach(parent, self, args) /* Get a handle to the PCC's registers. */ sc->sc_bust = ma->ma_bust; - bus_space_map(sc->sc_bust, PCC_REG_OFF + ma->ma_offset, - PCCREG_SIZE, 0, &sc->sc_bush); + bus_space_map(sc->sc_bust, ma->ma_offset, PCCREG_SIZE, 0, &sc->sc_bush); /* Tell the chip the base interrupt vector */ pcc_reg_write(sc, PCCREG_VECTOR_BASE, PCC_VECBASE); diff --git a/sys/arch/mvme68k/dev/pccreg.h b/sys/arch/mvme68k/dev/pccreg.h index b9f4003de8cd..bde9f29ac0d9 100644 --- a/sys/arch/mvme68k/dev/pccreg.h +++ b/sys/arch/mvme68k/dev/pccreg.h @@ -1,4 +1,4 @@ -/* $NetBSD: pccreg.h,v 1.8 2001/04/14 13:53:06 scw Exp $ */ +/* $NetBSD: pccreg.h,v 1.9 2001/08/12 18:33:13 scw Exp $ */ /* * @@ -41,15 +41,12 @@ * Offsets to the MVME147's onboard device registers. * (Relative to the bus_space_tag_t passed in from 'mainbus') */ -#define PCC_NVRAM_OFF 0x0000 /* offset of Mostek NVRAM/RTC chip */ -#define PCC_RTC_OFF 0x07f8 /* offset of clock registers NVRAM */ -#define PCC_REG_OFF 0x1000 /* offset of PCC chip registers */ -#define PCC_LE_OFF 0x1800 /* offset of LANCE ethernet chip */ -#define PCC_VME_OFF 0x2000 /* offset of VME chip */ -#define PCC_LPT_OFF 0x2800 /* offset of parallel port register */ -#define PCC_ZS0_OFF 0x3000 /* offset of first 8530 UART */ -#define PCC_ZS1_OFF 0x3800 /* offset of second 8530 UART */ -#define PCC_WDSC_OFF 0x4000 /* offset of 33c93 SCSI chip */ +#define PCC_LE_OFF 0x0800 /* offset of LANCE ethernet chip */ +#define PCC_VME_OFF 0x1000 /* offset of VME chip */ +#define PCC_LPT_OFF 0x1800 /* offset of parallel port register */ +#define PCC_ZS0_OFF 0x2000 /* offset of first 8530 UART */ +#define PCC_ZS1_OFF 0x2800 /* offset of second 8530 UART */ +#define PCC_WDSC_OFF 0x3000 /* offset of 33c93 SCSI chip */ /* * This is needed to figure out the boot device. diff --git a/sys/arch/mvme68k/dev/pcctwo.c b/sys/arch/mvme68k/dev/pcctwo.c index f29bb9303a7c..36bf6c4e596b 100644 --- a/sys/arch/mvme68k/dev/pcctwo.c +++ b/sys/arch/mvme68k/dev/pcctwo.c @@ -1,4 +1,4 @@ -/* $NetBSD: pcctwo.c,v 1.14 2001/07/27 18:38:55 scw Exp $ */ +/* $NetBSD: pcctwo.c,v 1.15 2001/08/12 18:33:13 scw Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -91,12 +91,11 @@ struct pcctwo_device { * Devices that live on the PCCchip2, attached in this order. */ static struct pcctwo_device pcctwo_devices[] = { - {"clock", PCCTWO_RTC_OFF}, + {"clock", 0}, {"clmpcc", PCCTWO_SCC_OFF}, {"ie", PCCTWO_IE_OFF}, {"osiop", PCCTWO_NCRSC_OFF}, {"lpt", PCCTWO_LPT_OFF}, - {"nvram", PCCTWO_NVRAM_OFF}, {NULL, 0} }; @@ -125,12 +124,11 @@ static int pcctwo_vec2icsr_1x7[] = { * Devices that live on the MCchip, attached in this order. */ static struct pcctwo_device mcchip_devices[] = { - {"clock", PCCTWO_RTC_OFF}, + {"clock", PCCTWO_NVRAM_OFF}, {"zsc", MCCHIP_ZS0_OFF}, {"zsc", MCCHIP_ZS1_OFF}, {"ie", PCCTWO_IE_OFF}, {"osiop", PCCTWO_NCRSC_OFF}, - {"nvram", PCCTWO_NVRAM_OFF}, {NULL, 0} }; diff --git a/sys/arch/mvme68k/dev/pcctworeg.h b/sys/arch/mvme68k/dev/pcctworeg.h index b04d1b253925..d5e15d682ed1 100644 --- a/sys/arch/mvme68k/dev/pcctworeg.h +++ b/sys/arch/mvme68k/dev/pcctworeg.h @@ -1,4 +1,4 @@ -/* $NetBSD: pcctworeg.h,v 1.9 2001/07/27 18:38:55 scw Exp $ */ +/* $NetBSD: pcctworeg.h,v 1.10 2001/08/12 18:33:13 scw Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -53,8 +53,6 @@ #define PCCTWO_SCC_OFF 0x03000 /* Offset of CD2401 Serial Comms chip */ #define PCCTWO_IE_OFF 0x04000 /* Offset of 82596 LAN controller */ #define PCCTWO_NCRSC_OFF 0x05000 /* Offset of NCR53C710 SCSI chip */ -#define PCCTWO_NVRAM_OFF 0x7e000 /* Offset of MK48T18 NVRAM */ -#define PCCTWO_RTC_OFF 0x7fff8 /* Offset of MK48T18 RTC registers */ /* * The two devices on mvme162's MCchip diff --git a/sys/arch/mvme68k/mvme68k/clock.c b/sys/arch/mvme68k/mvme68k/clock.c index 658420bb4c0d..6e4ec2a82273 100644 --- a/sys/arch/mvme68k/mvme68k/clock.c +++ b/sys/arch/mvme68k/mvme68k/clock.c @@ -1,4 +1,4 @@ -/* $NetBSD: clock.c,v 1.15 2001/05/31 18:46:09 scw Exp $ */ +/* $NetBSD: clock.c,v 1.16 2001/08/12 18:33:13 scw Exp $ */ /* * Copyright (c) 1992, 1993 @@ -52,14 +52,10 @@ #include #include -#include #include -#if defined(GPROF) -#include -#endif - static struct clock_attach_args *clock_args; +static todr_chip_handle_t todr_handle; struct evcnt clock_profcnt; struct evcnt clock_statcnt; @@ -76,40 +72,41 @@ struct evcnt clock_statcnt; int clock_statvar = 8192; int clock_statmin; /* statclock interval - (1/2 * variance) */ -/* - * autoconf - */ - -struct chiptime { - int sec; - int min; - int hour; - int wday; - int day; - int mon; - int year; -}; - -static void timetochip __P((struct chiptime *)); -static long chiptotime __P((int, int, int, int, int, int)); /* * Common parts of clock autoconfiguration. */ void -clock_config(dev, ca) +clock_config(dev, ca, ev) struct device *dev; struct clock_attach_args *ca; + struct evcnt *ev; { extern int delay_divisor; /* from machdep.c */ /* Hook up that which we need. */ clock_args = ca; + evcnt_attach_dynamic(&clock_profcnt, EVCNT_TYPE_INTR, ev, + dev->dv_xname, "profint"); + evcnt_attach_dynamic(&clock_statcnt, EVCNT_TYPE_INTR, ev, + dev->dv_xname, "statint"); + /* Print info about the clock. */ printf(": delay_divisor %d\n", delay_divisor); } +void +clock_rtc_config(todr) + todr_chip_handle_t todr; +{ + + if (todr_handle) + panic("clock_config: clock already configured"); + + todr_handle = todr; +} + /* * Set up the real-time and statistics clocks. Leave stathz 0 only * if no alternative timer is available. @@ -191,101 +188,6 @@ microtime(tvp) splx(s); } -/* - * BCD to decimal and decimal to BCD. - */ -#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) - -/* - * 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 }; - -static long -chiptotime(sec, min, hour, day, mon, year) - int sec, min, hour, day, mon, year; -{ - int days, yr; - - sec = FROMBCD(sec); - min = FROMBCD(min); - hour = FROMBCD(hour); - day = FROMBCD(day); - mon = FROMBCD(mon); - year = FROMBCD(year) + YEAR0; - - /* simple sanity checks */ - if (year < 70 || mon < 1 || mon > 12 || day < 1 || day > 31) - return (0); - days = 0; - for (yr = 70; yr < year; yr++) - days += LEAPYEAR(yr) ? 366 : 365; - days += dayyr[mon - 1] + day - 1; - if (LEAPYEAR(yr) && mon > 2) - days++; - /* now have days since Jan 1, 1970; the rest is easy... */ - return (days * SECDAY + hour * 3600 + min * 60 + sec); -} - -static void -timetochip(c) - struct chiptime *c; -{ - int t, t2, t3, now = time.tv_sec; - - /* compute the year */ - t2 = now / SECDAY; - t3 = (t2 + 2) % 7; /* day of week */ - c->wday = TOBCD(t3 + 1); - - t = 69; - while (t2 >= 0) { /* whittle off years */ - t3 = t2; - t++; - t2 -= LEAPYEAR(t) ? 366 : 365; - } - c->year = t; - - /* t3 = month + day; separate */ - t = LEAPYEAR(t); - for (t2 = 1; t2 < 12; t2++) - if (t3 < dayyr[t2] + (t && t2 > 1)) - break; - - /* t2 is month */ - c->mon = t2; - c->day = t3 - dayyr[t2 - 1] + 1; - if (t && t2 > 2) - c->day--; - - /* the rest is easy */ - t = now % SECDAY; - c->hour = t / 3600; - t %= 3600; - c->min = t / 60; - c->sec = t % 60; - - c->sec = TOBCD(c->sec); - c->min = TOBCD(c->min); - c->hour = TOBCD(c->hour); - c->day = TOBCD(c->day); - c->mon = TOBCD(c->mon); - c->year = TOBCD(c->year - YEAR0); -} - - -#define rtc_read(r) bus_space_read_1(clock_args->ca_bust, \ - clock_args->ca_bush, (r)) -#define rtc_write(r,v) bus_space_write_1(clock_args->ca_bust, \ - clock_args->ca_bush, (r), (v)) - /* * Set up the system's time, given a `reasonable' time value. */ @@ -293,8 +195,10 @@ void inittodr(base) time_t base; { - int sec, min, hour, day, mon, year; - int badbase = 0, waszero = base == 0; + int badbase = 0, waszero = (base == 0); + + if (todr_handle == NULL) + panic("todr not configured"); if (base < 5 * SECYR) { /* @@ -308,20 +212,8 @@ inittodr(base) badbase = 1; } - /* enable read (stop time) */ - rtc_write(MK48TREG_CSR, rtc_read(MK48TREG_CSR) | CLK_READ); - - sec = rtc_read(MK48TREG_SEC); - min = rtc_read(MK48TREG_MIN); - hour = rtc_read(MK48TREG_HOUR); - day = rtc_read(MK48TREG_MDAY); - mon = rtc_read(MK48TREG_MONTH); - year = rtc_read(MK48TREG_YEAR); - - /* time wears on */ - rtc_write(MK48TREG_CSR, rtc_read(MK48TREG_CSR) & ~CLK_READ); - - if ((time.tv_sec = chiptotime(sec, min, hour, day, mon, year)) == 0) { + if (todr_gettime(todr_handle, (struct timeval *)&time) != 0 || + time.tv_sec == 0) { printf("WARNING: bad date in battery clock"); /* * Believe the time in the file system for lack of @@ -353,24 +245,10 @@ inittodr(base) void resettodr() { - struct chiptime c; if (!time.tv_sec) return; - timetochip(&c); - - /* enable write */ - rtc_write(MK48TREG_CSR, rtc_read(MK48TREG_CSR) | CLK_WRITE); - - rtc_write(MK48TREG_SEC, c.sec); - rtc_write(MK48TREG_MIN, c.min); - rtc_write(MK48TREG_HOUR, c.hour); - rtc_write(MK48TREG_WDAY, c.wday); - rtc_write(MK48TREG_MDAY, c.day); - rtc_write(MK48TREG_MONTH, c.mon); - rtc_write(MK48TREG_YEAR, c.year); - - /* load them up */ - rtc_write(MK48TREG_CSR, rtc_read(MK48TREG_CSR) & ~CLK_WRITE); + if (todr_settime(todr_handle, (struct timeval *)&time) != 0) + printf("resettodr: failed to set time\n"); } diff --git a/sys/arch/mvme68k/mvme68k/clockvar.h b/sys/arch/mvme68k/mvme68k/clockvar.h index 7115c1656d52..083e76c9efcd 100644 --- a/sys/arch/mvme68k/mvme68k/clockvar.h +++ b/sys/arch/mvme68k/mvme68k/clockvar.h @@ -1,4 +1,4 @@ -/* $NetBSD: clockvar.h,v 1.6 2001/04/14 13:53:06 scw Exp $ */ +/* $NetBSD: clockvar.h,v 1.7 2001/08/12 18:33:13 scw Exp $ */ /*- * Copyright (c) 1996 The NetBSD Foundation, Inc. @@ -39,6 +39,9 @@ #ifndef _MVME68K_CLOCKVAR_H #define _MVME68K_CLOCKVAR_H +#include +#include + /* * Defintions exported to ASIC-specific clock attachment. */ @@ -50,14 +53,15 @@ extern int clock_statvar; extern int clock_statmin; struct clock_attach_args { - bus_space_tag_t ca_bust; - bus_space_handle_t ca_bush; void (*ca_initfunc) __P((void *, int, int)); long (*ca_microtime) __P((void *)); void *ca_arg; }; -void clock_config __P((struct device *, struct clock_attach_args *)); +void clock_config __P((struct device *, struct clock_attach_args *, + struct evcnt *)); + +void clock_rtc_config __P((todr_chip_handle_t)); /* * Macro to compute a new randomized interval. The intervals are @@ -72,4 +76,15 @@ void clock_config __P((struct device *, struct clock_attach_args *)); (statmin + r); \ }) +/* + * Sun chose the year `68' as their base count, so that + * cl_year==0 means 1968. + */ +#define YEAR0 1968 + +/* + * interrupt level for clock + */ +#define CLOCK_LEVEL 5 + #endif /* _MVME68K_CLOCKVAR_H */ diff --git a/sys/arch/mvme68k/mvme68k/machdep.c b/sys/arch/mvme68k/mvme68k/machdep.c index dc94dbb618d6..ef0bb7dddc35 100644 --- a/sys/arch/mvme68k/mvme68k/machdep.c +++ b/sys/arch/mvme68k/mvme68k/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.84 2001/07/07 07:51:38 scw Exp $ */ +/* $NetBSD: machdep.c,v 1.85 2001/08/12 18:33:13 scw Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -297,8 +297,7 @@ mvme147_init() /* * Set up a temporary mapping to the PCC's registers */ - bus_space_map(bt, intiobase_phys + MAINBUS_PCC_OFFSET + PCC_REG_OFF, - PCCREG_SIZE, 0, &bh); + bus_space_map(bt, intiobase_phys + MAINBUS_PCC_OFFSET, PCCREG_SIZE, 0, &bh); /* * calibrate delay() using the 6.25 usec counter. diff --git a/sys/arch/mvme68k/mvme68k/pmap_bootstrap.c b/sys/arch/mvme68k/mvme68k/pmap_bootstrap.c index 551cc7596920..2f89ad0695f2 100644 --- a/sys/arch/mvme68k/mvme68k/pmap_bootstrap.c +++ b/sys/arch/mvme68k/mvme68k/pmap_bootstrap.c @@ -1,4 +1,4 @@ -/* $NetBSD: pmap_bootstrap.c,v 1.15 2000/11/20 19:35:30 scw Exp $ */ +/* $NetBSD: pmap_bootstrap.c,v 1.16 2001/08/12 18:33:13 scw Exp $ */ /* * Copyright (c) 1991, 1993 @@ -43,7 +43,6 @@ #include #include #include -#include #include #include