xref: /netbsd-src/sys/arch/sun3/sun3/machdep.h (revision 451f3d23c3aff3c1b4b35a29f67dc03b9c88f913)
1 /*	$NetBSD: machdep.h,v 1.41 2024/01/12 23:46:53 thorpej Exp $	*/
2 
3 /*
4  * Copyright (c) 1982, 1990 The Regents of the University of California.
5  * 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.
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.
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: cpu.h 1.16 91/03/25
36  *	from: @(#)cpu.h	7.7 (Berkeley) 6/27/91
37  *	cpu.h,v 1.2 1993/05/22 07:58:17 cgd Exp
38  */
39 
40 /*
41  * Copyright (c) 1994 Gordon W. Ross
42  * Copyright (c) 1993 Adam Glass
43  * Copyright (c) 1988 University of Utah.
44  *
45  * This code is derived from software contributed to Berkeley by
46  * the Systems Programming Group of the University of Utah Computer
47  * Science Department.
48  *
49  * Redistribution and use in source and binary forms, with or without
50  * modification, are permitted provided that the following conditions
51  * are met:
52  * 1. Redistributions of source code must retain the above copyright
53  *    notice, this list of conditions and the following disclaimer.
54  * 2. Redistributions in binary form must reproduce the above copyright
55  *    notice, this list of conditions and the following disclaimer in the
56  *    documentation and/or other materials provided with the distribution.
57  * 3. All advertising materials mentioning features or use of this software
58  *    must display the following acknowledgement:
59  *	This product includes software developed by the University of
60  *	California, Berkeley and its contributors.
61  * 4. Neither the name of the University nor the names of its contributors
62  *    may be used to endorse or promote products derived from this software
63  *    without specific prior written permission.
64  *
65  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
66  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
67  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
68  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
69  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
70  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
71  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
72  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
73  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
74  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
75  * SUCH DAMAGE.
76  *
77  *	from: Utah Hdr: cpu.h 1.16 91/03/25
78  *	from: @(#)cpu.h	7.7 (Berkeley) 6/27/91
79  *	cpu.h,v 1.2 1993/05/22 07:58:17 cgd Exp
80  */
81 
82 /*
83  * Internal definitions unique to sun3/68k CPU support.
84  * These are the "private" declarations - those needed
85  * only here in machine-independent code.  The "public"
86  * definitions are in cpu.h (used by common code).
87  */
88 
89 #ifdef _KERNEL
90 
91 /* Prototypes... */
92 
93 struct frame;
94 struct fpframe;
95 struct pcb;
96 struct proc;
97 struct reg;
98 struct trapframe;
99 struct uio;
100 struct mmu_rootptr;
101 
102 extern label_t *nofault;
103 
104 extern vaddr_t vmmap;	/* XXX - See mem.c */
105 
106 void	clock_init (void);
107 void	cninit(void);
108 
109 void	dumpsys(void);
110 
111 void	enable_fpu(int);
112 void	enable_init(void);
113 void	enable_video(int);
114 
115 int	fpu_emulate(struct trapframe *, struct fpframe *, ksiginfo_t *);
116 
117 int	getcrp(struct mmu_rootptr *);
118 
119 void	initfpu(void);
120 void	intreg_init(void);
121 
122 void	isr_init(void);
123 void	isr_config(void);
124 
125 void	netintr(void);
126 
127 void	obio_init(void);
128 
129 void	sunmon_abort(void);
130 void	sunmon_halt(void);
131 void	sunmon_init(void);
132 void	sunmon_reboot(const char *);
133 
134 void	swapconf(void);
135 
136 void	zs_init(void);
137 
138 #ifdef	_SUN3_
139 
140 struct sun3_kcore_hdr;
141 
142 extern int cache_size;
143 void	cache_enable(void);
144 
145 /* Kernel virtual address space available: */
146 extern vaddr_t virtual_avail, virtual_end;
147 /* Physical address space available: */
148 extern paddr_t avail_start, avail_end;
149 
150 /* cache.c */
151 void	cache_enable(void);
152 void	cache_flush_page(vaddr_t);
153 void	cache_flush_segment(vaddr_t);
154 void	cache_flush_context(void);
155 
156 /* pmap.c */
157 void	pmap_bootstrap(vaddr_t);
158 void	pmap_kcore_hdr(struct sun3_kcore_hdr *);
159 void	pmap_get_pagemap(int *, int);
160 
161 #endif	/* SUN3 */
162 
163 #ifdef	_SUN3X_
164 
165 struct mmu_rootptr;
166 struct sun3x_kcore_hdr;
167 
168 extern int has_iocache;
169 
170 /* This is set by locore.s with the monitor's root ptr. */
171 extern struct mmu_rootptr mon_crp;
172 
173 /* Lowest "managed" kernel virtual address. */
174 extern vaddr_t virtual_avail;
175 
176 void	loadcrp(struct mmu_rootptr *);
177 
178 void	pmap_bootstrap(vaddr_t);
179 void	pmap_kcore_hdr(struct sun3x_kcore_hdr *);
180 int	pmap_pa_exists(paddr_t);
181 
182 #endif	/* SUN3X */
183 
184 #endif	/* _KERNEL */
185