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