xref: /original-bsd/sys/pmax/pmax/OLD/Locore.c (revision ca98dac2)
1 /*
2  * Copyright (c) 1992 Regents of the University of California.
3  * All rights reserved.
4  *
5  * %sccs.include.redist.c%
6  *
7  *	@(#)Locore.c	7.2 (Berkeley) 10/11/92
8  */
9 
10 #include <sys/param.h>
11 #include <sys/systm.h>
12 #include <sys/user.h>
13 #include <sys/vm.h>
14 #include <sys/ioctl.h>
15 #include <sys/tty.h>
16 #include <sys/proc.h>
17 #include <sys/buf.h>
18 #include <sys/mbuf.h>
19 #include <sys/protosw.h>
20 #include <sys/domain.h>
21 #include <sys/map.h>
22 
23 #include <machine/pte.h>
24 
25 /*
26  * Pseudo file for lint to show what is used/defined in locore.s.
27  */
28 
29 int	dumpflag;
30 int	intstack[3*NBPG];
31 int	icode[8];
32 int	szicode = sizeof (icode);
33 char	MachUTLBMiss[10], MachUTLBMissEnd[1];
34 char	MachException[10], MachException[1];
35 
36 /*
37  * Variables declared for savecore, or
38  * implicitly, such as by config or the loader.
39  */
40 char	version[] = "4.3 BSD UNIX ....";
41 int	etext;
42 
43 lowinit()
44 {
45 #if !defined(GPROF)
46 	caddr_t cp;
47 #endif
48 	extern int dumpmag;
49 	extern int rthashsize;
50 	extern int arptab_size;
51 	extern int dk_ndrive;
52 	extern struct domain unixdomain;
53 #ifdef INET
54 	extern struct domain inetdomain;
55 #endif
56 #include "imp.h"
57 #if NIMP > 0
58 	extern struct domain impdomain;
59 #endif
60 #ifdef NS
61 	extern struct domain nsdomain;
62 #endif
63 
64 	/* cpp messes these up for lint so put them here */
65 	unixdomain.dom_next = domains;
66 	domains = &unixdomain;
67 #ifdef INET
68 	inetdomain.dom_next = domains;
69 	domains = &inetdomain;
70 #endif
71 #if NIMP > 0
72 	impdomain.dom_next = domains;
73 	domains = &impdomain;
74 #endif
75 #ifdef NS
76 	nsdomain.dom_next = domains;
77 	domains = &nsdomain;
78 #endif
79 	dumpmag = 0;			/* used only by savecore */
80 	rthashsize = rthashsize;	/* used by netstat, etc. */
81 	arptab_size = arptab_size;	/* used by arp command */
82 	dk_ndrive = dk_ndrive;		/* used by vmstat, iostat, etc. */
83 
84 	/*
85 	 * Pseudo-uses of globals.
86 	 */
87 	lowinit();
88 	intstack[0] = intstack[1];
89 	maxmem = physmem = freemem = 0;
90 	u = u;
91 	fixctlrmask();
92 	main(0);
93 	Xustray();
94 
95 	/*
96 	 * Routines called from interrupt vectors.
97 	 */
98 	panic("Machine check");
99 	printf("Write timeout");
100 	consdin();
101 	consdout();
102 	hardclock((caddr_t)0, 0);
103 	softclock((caddr_t)0, 0);
104 	trap((unsigned)0, (unsigned)0, (unsigned)0, (unsigned)0);
105 	memerr();
106 
107 	/*
108 	 * Miscellaneous routines called from configurable
109 	 * drivers.
110 	 */
111 	disksort((struct buf *)0, (struct buf *)0);
112 	(void) uwritec((struct uio *)0);
113 	(void) todr();
114 	if (vmemall((struct pte *)0, 0, (struct proc *)0, 0))
115 		return;		/* use value */
116 	boothowto = 0;
117 	dumpflag = 0; dumpflag = dumpflag;
118 #ifdef KADB
119 	bootesym = 0; bootesym = bootesym;
120 #endif
121 #if !defined(GPROF)
122 	cp = (caddr_t)&etext;
123 	cp = cp;
124 #endif
125 }
126 
127 struct	pte Sysmap[6*NPTEPG];
128 #ifdef KADB
129 char	Sysbase[6*NPTEPG*NBPG];
130 #endif
131 struct	pte Usrptmap[USRPTSIZE];
132 struct	pte usrpt[USRPTSIZE*NPTEPG];
133 struct	pte Usriomap[USRIOSIZE];
134 struct	pte usrio[USRIOSIZE*NPTEPG];
135 struct	pte Forkmap[UPAGES];
136 struct	user forkutl;
137 struct	pte Xswapmap[UPAGES];
138 struct	user xswaputl;
139 struct	pte Xswap2map[UPAGES];
140 struct	user xswap2utl;
141 struct	pte Swapmap[UPAGES];
142 struct	user swaputl;
143 struct	pte Pushmap[UPAGES];
144 struct	user pushutl;
145 struct	pte Vfmap[UPAGES];
146 struct	user vfutl;
147 struct	pte Mbmap[NMBCLUSTERS/CLSIZE];
148 struct	mbuf mbutl[NMBCLUSTERS*CLBYTES/sizeof (struct mbuf)];
149 struct	pte kmempt[200];
150 char	kmembase[100*NBPG];
151 
152 /*ARGSUSED*/
153 badaddr(addr, len) char *addr; int len; { return (0); }
154 
155 /*ARGSUSED*/
156 copyinstr(udaddr, kaddr, maxlength, lencopied)
157     caddr_t udaddr, kaddr; u_int maxlength, *lencopied;
158 { *kaddr = *udaddr; *lencopied = maxlength; return (0); }
159 copyoutstr(kaddr, udaddr, maxlength, lencopied)
160     caddr_t kaddr, udaddr; u_int maxlength, *lencopied;
161 { *udaddr = *kaddr; *lencopied = maxlength; return (0); }
162 copystr(kfaddr, kdaddr, maxlength, lencopied)
163     caddr_t kfaddr, kdaddr; u_int maxlength, *lencopied;
164 { *kdaddr = *kfaddr; *lencopied = maxlength; return (0); }
165 
166 /*ARGSUSED*/
167 copyin(udaddr, kaddr, n) caddr_t udaddr, kaddr; u_int n; { return (0); }
168 /*ARGSUSED*/
169 copyout(kaddr, udaddr, n) caddr_t kaddr, udaddr; u_int n; { return (0); }
170 
171 /*ARGSUSED*/
172 bzero(to, n) caddr_t to; u_int n; { }
173 /*ARGSUSED*/
174 bcmp(from, to, n) caddr_t from, to; u_int n; { }
175 /*ARGSUSED*/
176 bcopy(from, to, n) caddr_t from, to; u_int n; { }
177 
178 /*ARGSUSED*/
179 CopyToBuffer(src, dst, length)
180 	u_short *src, *dst; int length;
181 { *dst = *src; }
182 /*ARGSUSED*/
183 CopyFromBuffer(src, dst, length)
184 	u_short *src; char *dst; int length;
185 { *dst = *src; }
186 
187 /*ARGSUSED*/
188 savectx(lp) label_t *lp; { return (0); }
189 
190 /*ARGSUSED*/
191 setrq(p) struct proc *p; { }
192 
193 /*ARGSUSED*/
194 remrq(p) struct proc *p; { }
195 
196 swtch() { if (whichqs) whichqs = 0; }
197 
198 /*ARGSUSED*/
199 fubyte(base) caddr_t base; { return (0); }
200 #ifdef notdef
201 /*ARGSUSED*/
202 fuibyte(base) caddr_t base; { return (0); }
203 #endif
204 /*ARGSUSED*/
205 subyte(base, i) caddr_t base; { return (0); }
206 /*ARGSUSED*/
207 suibyte(base, i) caddr_t base; { return (0); }
208 /*ARGSUSED*/
209 fuword(base) caddr_t base; { return (0); }
210 /*ARGSUSED*/
211 fuiword(base) caddr_t base; { return (0); }
212 /*ARGSUSED*/
213 suword(base, i) caddr_t base; { return (0); }
214 /*ARGSUSED*/
215 suiword(base, i) caddr_t base; { return (0); }
216 
217 /*ARGSUSED*/
218 copyseg(udaddr, pf) caddr_t udaddr; unsigned pf; { }
219 
220 /*ARGSUSED*/
221 clearseg(pf) unsigned pf; { }
222 
223 /*ARGSUSED*/
224 addupc(pc, prof, ticks) unsigned pc; struct uprof *prof; int ticks; { }
225 
226 void MachEnableIntr() { }
227 void setsoftnet() { }
228 void clearsoftnet() { }
229 void setsoftclock() { }
230 void clearsoftclock() { }
231 spl0() { return (0); }
232 splsoftclock() { return (0); }
233 splnet() { return (0); }
234 splimp() { return (0); } /* XXX */
235 splbio() { return (0); }
236 spltty() { return (0); }
237 splclock() { return (0); }
238 splhigh() { return (0); }
239 
240 /*ARGSUSED*/
241 splx(s) int s; { }
242 
243 #ifdef notdef
244 /*ARGSUSED*/
245 scanc(size, cp, table, mask)
246     unsigned size; char *cp, table[]; int mask;
247 { return (0); }
248 
249 /*ARGSUSED*/
250 skpc(mask, size, cp) int mask; int size; char *cp; { return (0); }
251 
252 /*ARGSUSED*/
253 locc(mask, size, cp) int mask; char *cp; unsigned size; { return (0); }
254 #endif
255 
256 /*ARGSUSED*/
257 _insque(p, q) caddr_t p, q; { }
258 /*ARGSUSED*/
259 _remque(p) caddr_t p; { }
260 
261 /*ARGSUSED*/
262 ffs(v) long v; { return (0); }
263 
264 /*ARGSUSED*/
265 strlen(str) char *str; { return (0); }
266 
267 #ifdef notdef
268 imin(a, b) int a, b; { return (a < b ? a : b); }
269 imax(a, b) int a, b; { return (a > b ? a : b); }
270 unsigned min(a, b) u_int a, b; { return (a < b ? a : b); }
271 unsigned max(a, b) u_int a, b; { return (a > b ? a : b); }
272 #endif
273 
274 u_short ntohs(s) u_short s; { return ((u_short)s); }
275 u_short htons(s) u_short s; { return ((u_short)s); }
276 u_long ntohl(l) u_long l; { return ((u_long)l); }
277 u_long htonl(l) u_long l; { return ((u_long)l); }
278 
279 void MachKernGenException() { }
280 void MachUserGenException() { }
281 void MachTLBModException() { }
282 void MachTLBMissException() { }
283 void MachEmptyWriteBuffer() { }
284 /*ARGSUSED*/
285 void MachTLBWriteIndexed(index, highEntry, lowEntry)
286 	int index, highEntry, lowEntry; { }
287 /*ARGSUSED*/
288 void MachSetPID(pid) int pid; { }
289 /*ARGSUSED*/
290 void newptes(pte, v, size) struct pte *pte; u_int v; int size; { }
291 void MachTLBFlush() { }
292 /*ARGSUSED*/
293 void MachTLBFlushPID(pid) int pid; { }
294 /*ARGSUSED*/
295 void MachTLBFlushAddr(virt) caddr_t virt; { }
296 /*ARGSUSED*/
297 void MachSwitchFPState(from, to) struct proc *from; struct user *to; { }
298 /*ARGSUSED*/
299 void MachGetCurFPState(p) struct proc *p; { }
300 /*ARGSUSED*/
301 void MachFPInterrupt(p) struct proc *p; { }
302 /*ARGSUSED*/
303 void MachFPInterrupt(statusReg, causeReg, pc)
304 	unsigned statusReg, causeReg, pc; { }
305 void MachConfigCache() { }
306 void MachFlushCache() { }
307 /*ARGSUSED*/
308 void MachFlushICache(vaddr, len) caddr_t vaddr, int len; { }
309