[BACK]Return to cpuconf.h CVS log [TXT][DIR] Up to [local] / sys / arch / alpha / include

Annotation of sys/arch/alpha/include/cpuconf.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: cpuconf.h,v 1.5 2006/06/15 20:08:29 brad Exp $        */
                      2: /*     $NetBSD: cpuconf.h,v 1.12 2000/06/08 03:10:06 thorpej Exp $     */
                      3:
                      4: /*
                      5:  * Copyright (c) 1996 Christopher G. Demetriou.  All rights reserved.
                      6:  *
                      7:  * Redistribution and use in source and binary forms, with or without
                      8:  * modification, are permitted provided that the following conditions
                      9:  * are met:
                     10:  * 1. Redistributions of source code must retain the above copyright
                     11:  *    notice, this list of conditions and the following disclaimer.
                     12:  * 2. Redistributions in binary form must reproduce the above copyright
                     13:  *    notice, this list of conditions and the following disclaimer in the
                     14:  *    documentation and/or other materials provided with the distribution.
                     15:  * 3. All advertising materials mentioning features or use of this software
                     16:  *    must display the following acknowledgement:
                     17:  *      This product includes software developed by Christopher G. Demetriou
                     18:  *     for the NetBSD Project.
                     19:  * 4. The name of the author may not be used to endorse or promote products
                     20:  *    derived from this software without specific prior written permission
                     21:  *
                     22:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
                     23:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
                     24:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
                     25:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
                     26:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
                     27:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
                     28:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
                     29:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
                     30:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
                     31:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                     32:  */
                     33: /*
                     34:  * Additional reworking by Matthew Jacob for NASA/Ames Research Center.
                     35:  * Copyright (c) 1997
                     36:  */
                     37:
                     38: #ifndef        _ALPHA_CPUCONF_H_
                     39: #define        _ALPHA_CPUCONF_H_
                     40:
                     41: /*
                     42:  * Platform Specific Information and Function Hooks.
                     43:  *
                     44:  * The tags family and model information are strings describing the platform.
                     45:  *
                     46:  * The tag iobus describes the primary iobus for the platform- primarily
                     47:  * to give a hint as to where to start configuring. The likely choices
                     48:  * are one of tcasic, lca, apecs, cia, or tlsb.
                     49:  */
                     50:
                     51: struct clockframe;
                     52:
                     53: struct platform {
                     54:        /*
                     55:         * Platform Information.
                     56:         */
                     57:        const char      *family;        /* Family Name */
                     58:        const char      *model;         /* Model (variant) Name */
                     59:        const char      *iobus;         /* Primary iobus name */
                     60:
                     61:        /*
                     62:         * Platform Specific Function Hooks
                     63:         *      cons_init       -       console initialization
                     64:         *      device_register -       boot configuration aid
                     65:         *      clockintr       -       Clock Interrupt Handler
                     66:         *      mcheck_handler  -       Platform Specific Machine Check Handler
                     67:         */
                     68:        void    (*cons_init)(void);
                     69:        void    (*device_register)(struct device *, void *);
                     70:        void    (*clockintr)(struct clockframe *);
                     71:        void    (*mcheck_handler)(unsigned long, struct trapframe *,
                     72:                    unsigned long, unsigned long);
                     73:        void    (*powerdown)(void);
                     74: };
                     75:
                     76: /*
                     77:  * There is an array of functions to initialize the platform structure.
                     78:  *
                     79:  * It's responsible for filling in the family, model_name and iobus
                     80:  * tags. It may optionally fill in the cons_init, device_register and
                     81:  * mcheck_handler tags.
                     82:  *
                     83:  * The iointr tag is filled in by set_iointr (in interrupt.c).
                     84:  * The clockintr tag is filled in by cpu_initclocks (in clock.c).
                     85:  *
                     86:  * nocpu is function to call when you can't figure what platform you're on.
                     87:  * There's no return from this function.
                     88:  */
                     89:
                     90: struct cpuinit {
                     91:        void    (*init)(void);
                     92:        u_int64_t systype;
                     93:        const char *option;
                     94: };
                     95:
                     96: #ifdef _KERNEL
                     97: #define        cpu_notsupp(st, str)    { platform_not_supported, st, str }
                     98:
                     99: #define        cpu_init(st, fn, opt)   { fn, st, opt }
                    100:
                    101: extern struct platform platform;
                    102: extern const struct cpuinit *platform_lookup(int);
                    103: extern void platform_not_configured(void);
                    104: extern void platform_not_supported(void);
                    105: #endif /* _KERNEL */
                    106: #endif /* ! _ALPHA_CPUCONF_H_ */

CVSweb