Annotation of src/sys/arch/alpha/alpha/clock.c, Revision 1.38.16.1
1.38.16.1! mjf 1: /* $NetBSD$ */
1.1 cgd 2:
3: /*
4: * Copyright (c) 1992, 1993
5: * The Regents of the University of California. All rights reserved.
6: *
7: * This code is derived from software contributed to Berkeley by
8: * the Systems Programming Group of the University of Utah Computer
9: * Science Department and Ralph Campbell.
10: *
11: * Redistribution and use in source and binary forms, with or without
12: * modification, are permitted provided that the following conditions
13: * are met:
14: * 1. Redistributions of source code must retain the above copyright
15: * notice, this list of conditions and the following disclaimer.
16: * 2. Redistributions in binary form must reproduce the above copyright
17: * notice, this list of conditions and the following disclaimer in the
18: * documentation and/or other materials provided with the distribution.
1.34 agc 19: * 3. Neither the name of the University nor the names of its contributors
20: * may be used to endorse or promote products derived from this software
21: * without specific prior written permission.
22: *
23: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33: * SUCH DAMAGE.
34: *
35: * from: Utah Hdr: clock.c 1.18 91/01/21
36: *
37: * @(#)clock.c 8.1 (Berkeley) 6/10/93
38: */
39: /*
40: * Copyright (c) 1988 University of Utah.
41: *
42: * This code is derived from software contributed to Berkeley by
43: * the Systems Programming Group of the University of Utah Computer
44: * Science Department and Ralph Campbell.
45: *
46: * Redistribution and use in source and binary forms, with or without
47: * modification, are permitted provided that the following conditions
48: * are met:
49: * 1. Redistributions of source code must retain the above copyright
50: * notice, this list of conditions and the following disclaimer.
51: * 2. Redistributions in binary form must reproduce the above copyright
52: * notice, this list of conditions and the following disclaimer in the
53: * documentation and/or other materials provided with the distribution.
1.1 cgd 54: * 3. All advertising materials mentioning features or use of this software
55: * must display the following acknowledgement:
56: * This product includes software developed by the University of
57: * California, Berkeley and its contributors.
58: * 4. Neither the name of the University nor the names of its contributors
59: * may be used to endorse or promote products derived from this software
60: * without specific prior written permission.
61: *
62: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
63: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
64: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
65: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
66: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
67: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
68: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
69: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
70: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
71: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
72: * SUCH DAMAGE.
73: *
74: * from: Utah Hdr: clock.c 1.18 91/01/21
75: *
76: * @(#)clock.c 8.1 (Berkeley) 6/10/93
77: */
1.15 cgd 78:
1.16 cgd 79: #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
80:
1.38.16.1! mjf 81: __KERNEL_RCSID(0, "$NetBSD$");
1.1 cgd 82:
83: #include <sys/param.h>
84: #include <sys/kernel.h>
85: #include <sys/systm.h>
86: #include <sys/device.h>
1.22 drochner 87:
1.11 cgd 88: #include <machine/autoconf.h>
1.19 mjacob 89: #include <machine/cpuconf.h>
1.37 tsutsui 90: #include <machine/cpu_counter.h>
1.1 cgd 91:
1.37 tsutsui 92: #include <alpha/alpha/clockvar.h>
1.5 cgd 93:
1.37 tsutsui 94: #define PCC_QUAL 1000
1.1 cgd 95:
1.37 tsutsui 96: void (*clock_init)(void *);
97: void *clockdev;
1.1 cgd 98:
1.9 cgd 99: void
1.37 tsutsui 100: clockattach(void (*fns)(void *), void *dev)
1.1 cgd 101: {
102:
1.5 cgd 103: /*
1.14 cgd 104: * Just bookkeeping.
1.3 cgd 105: */
1.37 tsutsui 106: if (clock_init != NULL)
1.9 cgd 107: panic("clockattach: multiple clocks");
1.37 tsutsui 108: clock_init = fns;
1.9 cgd 109: clockdev = dev;
1.1 cgd 110: }
111:
112: /*
113: * Start the real-time and statistics clocks. Leave stathz 0 since there
114: * are no other timers available.
115: */
1.10 cgd 116: void
1.37 tsutsui 117: cpu_initclocks(void)
1.1 cgd 118: {
1.37 tsutsui 119: uint64_t pcc_freq;
120:
121: if (clock_init == NULL)
1.5 cgd 122: panic("cpu_initclocks: no clock attached");
1.1 cgd 123:
1.14 cgd 124: /*
125: * Establish the clock interrupt; it's a special case.
126: *
127: * We establish the clock interrupt this late because if
128: * we do it at clock attach time, we may have never been at
129: * spl0() since taking over the system. Some versions of
130: * PALcode save a clock interrupt, which would get delivered
131: * when we spl0() in autoconf.c. If established the clock
132: * interrupt handler earlier, that interrupt would go to
133: * hardclock, which would then fall over because p->p_stats
134: * isn't set at that time.
135: */
1.27 thorpej 136: platform.clockintr = hardclock;
1.24 ross 137: schedhz = 16;
1.1 cgd 138:
1.3 cgd 139: /*
1.37 tsutsui 140: * Initialize PCC timecounter.
141: */
142: pcc_freq = cpu_frequency(curcpu());
1.38.16.1! mjf 143: cc_init(NULL, pcc_freq, "PCC", PCC_QUAL);
1.37 tsutsui 144:
145: /*
1.3 cgd 146: * Get the clock started.
147: */
1.37 tsutsui 148: (*clock_init)(clockdev);
1.1 cgd 149: }
150:
151: /*
152: * We assume newhz is either stathz or profhz, and that neither will
153: * change after being set up above. Could recalculate intervals here
154: * but that would be a drag.
155: */
156: void
157: setstatclockrate(newhz)
158: int newhz;
159: {
1.3 cgd 160:
1.1 cgd 161: /* nothing we can do */
162: }
CVSweb <webmaster@jp.NetBSD.org>