xref: /openbsd-src/sys/arch/powerpc/include/powerpc.h (revision b2ea75c1b17e1a9a339660e7ed45cd24946b230e)
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