[BACK]Return to clock.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / arch / alpha / alpha

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>