xref: /original-bsd/sys/vax/vax/Locore.c (revision 23a40993)
1 /*	Locore.c	4.25	83/06/13	*/
2 
3 #include "dz.h"
4 #include "mba.h"
5 
6 #include "../machine/pte.h"
7 
8 #include "../h/param.h"
9 #include "../h/systm.h"
10 #include "../h/dir.h"
11 #include "../h/user.h"
12 #include "../h/vm.h"
13 #include "../h/tty.h"
14 #include "../h/proc.h"
15 #include "../h/buf.h"
16 #include "../h/msgbuf.h"
17 #include "../h/mbuf.h"
18 #include "../h/protosw.h"
19 #include "../h/domain.h"
20 
21 #include "../vax/nexus.h"
22 #include "../vaxuba/ubavar.h"
23 #include "../vaxuba/ubareg.h"
24 
25 /*
26  * Pseudo file for lint to show what is used/defined in locore.s.
27  */
28 
29 struct	scb scb;
30 int	(*UNIvec[128])();
31 struct	rpb rpb;
32 int	intstack[3*128];
33 
34 int	masterpaddr;		/* p_addr of current process on master cpu */
35 
36 struct	user u;
37 
38 doadump() { dumpsys(); }
39 
40 Xmba3int() { }
41 Xmba2int() { }
42 Xmba1int() { }
43 Xmba0int() { }
44 
45 lowinit()
46 {
47 	extern int dumpmag;
48 	extern struct domain unixdomain;
49 #ifdef PUP
50 	extern struct domain pupdomain;
51 #endif
52 #ifdef INET
53 	extern struct domain inetdomain;
54 #endif
55 #include "imp.h"
56 #if NIMP > 0
57 	extern struct domain impdomain;
58 #endif
59 
60 	/* cpp messes these up for lint so put them here */
61 	unixdomain.dom_next = domains;
62 	domains = &unixdomain;
63 #ifdef PUP
64 	pupdomain.dom_next = domains;
65 	domains = &pupdomain;
66 #endif
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 	dumpmag = 0;			/* used only by savecore */
76 
77 	/*
78 	 * Pseudo-uses of globals.
79 	 */
80 	lowinit();
81 	intstack[0] = intstack[1];
82 	rpb = rpb;
83 	scb = scb;
84 	maxmem = physmem = freemem = 0;
85 	u = u;
86 	fixctlrmask();
87 	main(0);
88 	Xustray();
89 
90 	/*
91 	 * Routines called from interrupt vectors.
92 	 */
93 	panic("Machine check");
94 	printf("Write timeout");
95 	(*UNIvec[0])();
96 	ubaerror(0, (struct uba_hd *)0, 0, 0, (struct uba_regs *)0);
97 	cnrint(0);
98 	cnxint(0);
99 	consdin();
100 	consdout();
101 #if NDZ > 0
102 	dzdma();
103 #endif
104 #if NMBA > 0
105 	mbintr(0);
106 #endif
107 	hardclock((caddr_t)0, 0);
108 	softclock((caddr_t)0, 0);
109 	trap(0, 0, (unsigned)0, 0, 0);
110 	syscall(0, 0, (unsigned)0, 0, 0);
111 	ipintr();
112 	rawintr();
113 
114 	if (vmemall((struct pte *)0, 0, (struct proc *)0, 0))
115 		return;		/* use value */
116 	machinecheck((caddr_t)0);
117 	memerr();
118 	boothowto = 0;
119 }
120 
121 consdin() { }
122 consdout() { }
123 #if NDZ > 0
124 dzdma() { dzxint((struct tty *)0); }
125 #endif
126 
127 int	catcher[256];
128 int	cold = 1;
129 
130 Xustray() { }
131 
132 struct	pte Sysmap[6*NPTEPG];
133 char	Sysbase[6*NPTEPG*NBPG];
134 int	umbabeg;
135 struct	pte Nexmap[16][16];
136 struct	nexus nexus[MAXNNEXUS];
137 struct	pte UMEMmap[MAXNUBA][512];
138 char	umem[MAXNUBA][512*NBPG];
139 int	umbaend;
140 struct	pte Usrptmap[USRPTSIZE];
141 struct	pte usrpt[USRPTSIZE*NPTEPG];
142 struct	pte Forkmap[UPAGES];
143 struct	user forkutl;
144 struct	pte Xswapmap[UPAGES];
145 struct	user xswaputl;
146 struct	pte Xswap2map[UPAGES];
147 struct	user xswap2utl;
148 struct	pte Swapmap[UPAGES];
149 struct	user swaputl;
150 struct	pte Pushmap[UPAGES];
151 struct	user pushutl;
152 struct	pte Vfmap[UPAGES];
153 struct	user vfutl;
154 struct	pte CMAP1;
155 char	CADDR1[NBPG];
156 struct	pte CMAP2;
157 char	CADDR2[NBPG];
158 struct	pte mmap[1];
159 char	vmmap[NBPG];
160 struct	pte Mbmap[NMBCLUSTERS/CLSIZE];
161 struct	mbuf mbutl[NMBCLUSTERS*CLBYTES/sizeof (struct mbuf)];
162 struct	pte msgbufmap[CLSIZE];
163 struct	msgbuf msgbuf;
164 struct	pte camap[32];
165 int	cabase;
166 #ifdef unneeded
167 char	caspace[32*NBPG];
168 #endif
169 int	calimit;
170 
171 /*ARGSUSED*/
172 badaddr(addr, len) caddr_t addr; int len; { return (0); }
173 
174 /*ARGSUSED*/
175 copyin(udaddr, kaddr, n) caddr_t udaddr, kaddr; unsigned n; { return (0); }
176 
177 /*ARGSUSED*/
178 copyout(kaddr, udaddr, n) caddr_t kaddr, udaddr; unsigned n; { return (0); }
179 
180 /*ARGSUSED*/
181 setjmp(lp) label_t *lp; { return (0); }
182 
183 /*ARGSUSED*/
184 longjmp(lp) label_t *lp; { /*NOTREACHED*/ }
185 
186 /*ARGSUSED*/
187 setrq(p) struct proc *p; { }
188 
189 /*ARGSUSED*/
190 remrq(p) struct proc *p; { }
191 
192 swtch() { if (whichqs) whichqs = 0; if (masterpaddr) masterpaddr = 0; }
193 
194 /*ARGSUSED*/
195 resume(pcbpf) unsigned pcbpf; { }
196 
197 /*ARGSUSED*/
198 fubyte(base) caddr_t base; { return (0); }
199 
200 /*ARGSUSED*/
201 subyte(base, i) caddr_t base; { return (0); }
202 
203 /*ARGSUSED*/
204 suibyte(base, i) caddr_t base; { return (0); }
205 
206 /*ARGSUSED*/
207 fuword(base) caddr_t base; { return (0); }
208 
209 /*ARGSUSED*/
210 fuiword(base) caddr_t base; { return (0); }
211 
212 /*ARGSUSED*/
213 suword(base, i) caddr_t base; { return (0); }
214 
215 /*ARGSUSED*/
216 suiword(base, i) caddr_t base; { return (0); }
217 
218 /*ARGSUSED*/
219 copyseg(udaddr, pf) caddr_t udaddr; unsigned pf; {
220     CMAP1 = CMAP1; CADDR1[0] = CADDR1[0];
221 }
222 
223 /*ARGSUSED*/
224 clearseg(pf) unsigned pf; { CMAP2 = CMAP2; CADDR2[0] = CADDR2[0]; }
225 
226 /*ARGSUSED*/
227 useracc(udaddr, bcnt, rw) caddr_t udaddr; unsigned bcnt; { return (0); }
228 
229 /*ARGSUSED*/
230 kernacc(addr, bcnt, rw) caddr_t addr; unsigned bcnt; { return (0); }
231 
232 /*
233  * Routines handled by asm.sed script.
234  */
235 
236 /*VARARGS1*/
237 /*ARGSUSED*/
238 mtpr(reg, value) int reg, value; { }
239 
240 /*ARGSUSED*/
241 mfpr(reg) int reg; { return (0); }
242 
243 
244 spl0() { }
245 spl4() { return (0); }
246 spl5() { return (0); }
247 spl6() { return (0); }
248 spl7() { return (0); }
249 
250 /*ARGSUSED*/
251 splx(s) int s; { }
252 
253 /*ARGSUSED*/
254 bcopy(from, to, count) caddr_t from, to; unsigned count; { ; }
255 
256 /*ARGSUSED*/
257 bzero(base, count) caddr_t base; unsigned count; { ; }
258 
259 /*ARGSUSED*/
260 bcmp(s1, s2, count) caddr_t s1, s2; unsigned count; { return (0); }
261 
262 /*ARGSUSED*/
263 scanc(size, cp, table, mask)
264 unsigned size; caddr_t cp, table; int mask; { return (0); }
265 
266 /*ARGSUSED*/
267 ffs(i) { return (0); }
268 
269 ntohs(s) u_short s; { return ((int)s); }
270 
271 htons(s) u_short s; { return ((int)s); }
272 
273 /*
274  * Variables declared for savecore, or
275  * implicitly, such as by config or the loader.
276  */
277 char	version[] = "4.2 BSD UNIX ....";
278 char	etext;
279