xref: /original-bsd/sys/pmax/pmax/OLD/Locore.c (revision 327b2279)
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 
lowinit()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*/
badaddr(addr,len)153 badaddr(addr, len) char *addr; int len; { return (0); }
154 
155 /*ARGSUSED*/
copyinstr(udaddr,kaddr,maxlength,lencopied)156 copyinstr(udaddr, kaddr, maxlength, lencopied)
157     caddr_t udaddr, kaddr; u_int maxlength, *lencopied;
158 { *kaddr = *udaddr; *lencopied = maxlength; return (0); }
copyoutstr(kaddr,udaddr,maxlength,lencopied)159 copyoutstr(kaddr, udaddr, maxlength, lencopied)
160     caddr_t kaddr, udaddr; u_int maxlength, *lencopied;
161 { *udaddr = *kaddr; *lencopied = maxlength; return (0); }
copystr(kfaddr,kdaddr,maxlength,lencopied)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*/
copyin(udaddr,kaddr,n)167 copyin(udaddr, kaddr, n) caddr_t udaddr, kaddr; u_int n; { return (0); }
168 /*ARGSUSED*/
copyout(kaddr,udaddr,n)169 copyout(kaddr, udaddr, n) caddr_t kaddr, udaddr; u_int n; { return (0); }
170 
171 /*ARGSUSED*/
bzero(to,n)172 bzero(to, n) caddr_t to; u_int n; { }
173 /*ARGSUSED*/
bcmp(from,to,n)174 bcmp(from, to, n) caddr_t from, to; u_int n; { }
175 /*ARGSUSED*/
bcopy(from,to,n)176 bcopy(from, to, n) caddr_t from, to; u_int n; { }
177 
178 /*ARGSUSED*/
CopyToBuffer(src,dst,length)179 CopyToBuffer(src, dst, length)
180 	u_short *src, *dst; int length;
181 { *dst = *src; }
182 /*ARGSUSED*/
CopyFromBuffer(src,dst,length)183 CopyFromBuffer(src, dst, length)
184 	u_short *src; char *dst; int length;
185 { *dst = *src; }
186 
187 /*ARGSUSED*/
savectx(lp)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 
swtch()196 swtch() { if (whichqs) whichqs = 0; }
197 
198 /*ARGSUSED*/
fubyte(base)199 fubyte(base) caddr_t base; { return (0); }
200 #ifdef notdef
201 /*ARGSUSED*/
fuibyte(base)202 fuibyte(base) caddr_t base; { return (0); }
203 #endif
204 /*ARGSUSED*/
subyte(base,i)205 subyte(base, i) caddr_t base; { return (0); }
206 /*ARGSUSED*/
suibyte(base,i)207 suibyte(base, i) caddr_t base; { return (0); }
208 /*ARGSUSED*/
fuword(base)209 fuword(base) caddr_t base; { return (0); }
210 /*ARGSUSED*/
fuiword(base)211 fuiword(base) caddr_t base; { return (0); }
212 /*ARGSUSED*/
suword(base,i)213 suword(base, i) caddr_t base; { return (0); }
214 /*ARGSUSED*/
suiword(base,i)215 suiword(base, i) caddr_t base; { return (0); }
216 
217 /*ARGSUSED*/
copyseg(udaddr,pf)218 copyseg(udaddr, pf) caddr_t udaddr; unsigned pf; { }
219 
220 /*ARGSUSED*/
clearseg(pf)221 clearseg(pf) unsigned pf; { }
222 
223 /*ARGSUSED*/
addupc(pc,prof,ticks)224 addupc(pc, prof, ticks) unsigned pc; struct uprof *prof; int ticks; { }
225 
MachEnableIntr()226 void MachEnableIntr() { }
setsoftnet()227 void setsoftnet() { }
clearsoftnet()228 void clearsoftnet() { }
setsoftclock()229 void setsoftclock() { }
clearsoftclock()230 void clearsoftclock() { }
spl0()231 spl0() { return (0); }
splsoftclock()232 splsoftclock() { return (0); }
splnet()233 splnet() { return (0); }
splimp()234 splimp() { return (0); } /* XXX */
splbio()235 splbio() { return (0); }
spltty()236 spltty() { return (0); }
splclock()237 splclock() { return (0); }
splhigh()238 splhigh() { return (0); }
239 
240 /*ARGSUSED*/
splx(s)241 splx(s) int s; { }
242 
243 #ifdef notdef
244 /*ARGSUSED*/
scanc(size,cp,table,mask)245 scanc(size, cp, table, mask)
246     unsigned size; char *cp, table[]; int mask;
247 { return (0); }
248 
249 /*ARGSUSED*/
skpc(mask,size,cp)250 skpc(mask, size, cp) int mask; int size; char *cp; { return (0); }
251 
252 /*ARGSUSED*/
locc(mask,size,cp)253 locc(mask, size, cp) int mask; char *cp; unsigned size; { return (0); }
254 #endif
255 
256 /*ARGSUSED*/
_insque(p,q)257 _insque(p, q) caddr_t p, q; { }
258 /*ARGSUSED*/
_remque(p)259 _remque(p) caddr_t p; { }
260 
261 /*ARGSUSED*/
ffs(v)262 ffs(v) long v; { return (0); }
263 
264 /*ARGSUSED*/
strlen(str)265 strlen(str) char *str; { return (0); }
266 
267 #ifdef notdef
imin(a,b)268 imin(a, b) int a, b; { return (a < b ? a : b); }
imax(a,b)269 imax(a, b) int a, b; { return (a > b ? a : b); }
min(a,b)270 unsigned min(a, b) u_int a, b; { return (a < b ? a : b); }
max(a,b)271 unsigned max(a, b) u_int a, b; { return (a > b ? a : b); }
272 #endif
273 
ntohs(s)274 u_short ntohs(s) u_short s; { return ((u_short)s); }
htons(s)275 u_short htons(s) u_short s; { return ((u_short)s); }
ntohl(l)276 u_long ntohl(l) u_long l; { return ((u_long)l); }
htonl(l)277 u_long htonl(l) u_long l; { return ((u_long)l); }
278 
MachKernGenException()279 void MachKernGenException() { }
MachUserGenException()280 void MachUserGenException() { }
MachTLBModException()281 void MachTLBModException() { }
MachTLBMissException()282 void MachTLBMissException() { }
MachEmptyWriteBuffer()283 void MachEmptyWriteBuffer() { }
284 /*ARGSUSED*/
MachTLBWriteIndexed(index,highEntry,lowEntry)285 void MachTLBWriteIndexed(index, highEntry, lowEntry)
286 	int index, highEntry, lowEntry; { }
287 /*ARGSUSED*/
MachSetPID(pid)288 void MachSetPID(pid) int pid; { }
289 /*ARGSUSED*/
newptes(pte,v,size)290 void newptes(pte, v, size) struct pte *pte; u_int v; int size; { }
MachTLBFlush()291 void MachTLBFlush() { }
292 /*ARGSUSED*/
MachTLBFlushPID(pid)293 void MachTLBFlushPID(pid) int pid; { }
294 /*ARGSUSED*/
MachTLBFlushAddr(virt)295 void MachTLBFlushAddr(virt) caddr_t virt; { }
296 /*ARGSUSED*/
MachSwitchFPState(from,to)297 void MachSwitchFPState(from, to) struct proc *from; struct user *to; { }
298 /*ARGSUSED*/
MachGetCurFPState(p)299 void MachGetCurFPState(p) struct proc *p; { }
300 /*ARGSUSED*/
MachFPInterrupt(p)301 void MachFPInterrupt(p) struct proc *p; { }
302 /*ARGSUSED*/
MachFPInterrupt(statusReg,causeReg,pc)303 void MachFPInterrupt(statusReg, causeReg, pc)
304 	unsigned statusReg, causeReg, pc; { }
MachConfigCache()305 void MachConfigCache() { }
MachFlushCache()306 void MachFlushCache() { }
307 /*ARGSUSED*/
MachFlushICache(vaddr,len)308 void MachFlushICache(vaddr, len) caddr_t vaddr, int len; { }
309