1 /* $OpenBSD: powerpc.h,v 1.6 2001/06/29 06:07:09 drahn Exp $ */ 2 /* $NetBSD: powerpc.h,v 1.1 1996/09/30 16:34:30 ws Exp $ */ 3 4 /* 5 * Copyright (C) 1996 Wolfgang Solfrank. 6 * Copyright (C) 1996 TooLs GmbH. 7 * All rights reserved. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions 11 * are met: 12 * 1. Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * 2. Redistributions in binary form must reproduce the above copyright 15 * notice, this list of conditions and the following disclaimer in the 16 * documentation and/or other materials provided with the distribution. 17 * 3. All advertising materials mentioning features or use of this software 18 * must display the following acknowledgement: 19 * This product includes software developed by TooLs GmbH. 20 * 4. The name of TooLs GmbH may not be used to endorse or promote products 21 * derived from this software without specific prior written permission. 22 * 23 * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR 24 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 25 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 26 * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 27 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 28 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 29 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 30 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 31 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 32 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33 */ 34 #ifndef _MACHINE_POWERPC_H_ 35 #define _MACHINE_POWERPC_H_ 36 37 struct mem_region { 38 vm_offset_t start; 39 vm_size_t size; 40 }; 41 42 void mem_regions __P((struct mem_region **, struct mem_region **)); 43 44 /* 45 * These two functions get used solely in boot() in machdep.c. 46 * 47 * Not sure whether boot itself should be implementation dependent instead. XXX 48 */ 49 typedef void (exit_f) __P((void)) /*__attribute__((__noreturn__))*/ ; 50 typedef void (boot_f) __P((char *bootspec)) /* __attribute__((__noreturn__))*/ ; 51 typedef void (vmon_f) __P((void)); 52 53 /* firmware interface. 54 * regardless of type of firmware used several items 55 * are need from firmware to boot up. 56 * these include: 57 * memory information 58 * vmsetup for firmware calls. 59 * default character print mechanism ??? 60 * firmware exit (return) 61 * firmware boot (reset) 62 * vmon - tell firmware the bsd vm is active. 63 */ 64 65 typedef void (mem_regions_f)__P((struct mem_region **memp, 66 struct mem_region **availp)); 67 68 struct firmware { 69 mem_regions_f *mem_regions; 70 exit_f *exit; 71 boot_f *boot; 72 vmon_f *vmon; 73 74 #ifdef FW_HAS_PUTC 75 boot_f *putc; 76 #endif 77 }; 78 extern struct firmware *fw; 79 void ofwconprobe(void); 80 int ppc_open_pci_bridge __P((void)); 81 void ppc_close_pci_bridge __P((int)); 82 void install_extint __P((void (*handler) (void))); 83 void ppc_intr_enable __P((int enable)); 84 int ppc_intr_disable __P((void)); 85 86 #endif /* _MACHINE_POWERPC_H_ */ 87