xref: /original-bsd/sys/vax/vax/Locore.c (revision f0fd5f8a)
1 /*	Locore.c	4.23	82/12/17	*/
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 
19 #include "../vax/nexus.h"
20 #include "../vaxuba/ubavar.h"
21 #include "../vaxuba/ubareg.h"
22 
23 /*
24  * Pseudo file for lint to show what is used/defined in locore.s.
25  */
26 
27 struct	scb scb;
28 int	(*UNIvec[128])();
29 struct	rpb rpb;
30 int	intstack[3*128];
31 
32 int	masterpaddr;		/* p_addr of current process on master cpu */
33 
34 struct	user u;
35 
36 doadump() { dumpsys(); }
37 
38 Xmba3int() { }
39 Xmba2int() { }
40 Xmba1int() { }
41 Xmba0int() { }
42 
43 lowinit()
44 {
45 
46 	/*
47 	 * Pseudo-uses of globals.
48 	 */
49 	lowinit();
50 	intstack[0] = intstack[1];
51 	rpb = rpb;
52 	scb = scb;
53 	maxmem = physmem = freemem = 0;
54 	u = u;
55 	fixctlrmask();
56 	main(0);
57 	Xustray();
58 
59 	/*
60 	 * Routines called from interrupt vectors.
61 	 */
62 	panic("Machine check");
63 	printf("Write timeout");
64 	(*UNIvec[0])();
65 	ubaerror(0, (struct uba_hd *)0, 0, 0, (struct uba_regs *)0);
66 	cnrint(0);
67 	cnxint(0);
68 	consdin();
69 	consdout();
70 #if NDZ > 0
71 	dzdma();
72 #endif
73 #if NMBA > 0
74 	mbintr(0);
75 #endif
76 	hardclock((caddr_t)0, 0);
77 	softclock((caddr_t)0, 0);
78 	trap(0, 0, (unsigned)0, 0, 0);
79 	syscall(0, 0, (unsigned)0, 0, 0);
80 	ipintr();
81 	rawintr();
82 
83 	if (vmemall((struct pte *)0, 0, (struct proc *)0, 0))
84 		return;		/* use value */
85 	machinecheck((caddr_t)0);
86 	memerr();
87 	boothowto = 0;
88 }
89 
90 consdin() { }
91 consdout() { }
92 #if NDZ > 0
93 dzdma() { dzxint((struct tty *)0); }
94 #endif
95 
96 int	catcher[256];
97 int	cold = 1;
98 
99 Xustray() { }
100 
101 struct	pte Sysmap[6*NPTEPG];
102 char	Sysbase[6*NPTEPG*NBPG];
103 int	umbabeg;
104 struct	pte Nexmap[16][16];
105 struct	nexus nexus[MAXNNEXUS];
106 struct	pte UMEMmap[MAXNUBA][512];
107 char	umem[MAXNUBA][512*NBPG];
108 int	umbaend;
109 struct	pte Usrptmap[USRPTSIZE];
110 struct	pte usrpt[USRPTSIZE*NPTEPG];
111 struct	pte Forkmap[UPAGES];
112 struct	user forkutl;
113 struct	pte Xswapmap[UPAGES];
114 struct	user xswaputl;
115 struct	pte Xswap2map[UPAGES];
116 struct	user xswap2utl;
117 struct	pte Swapmap[UPAGES];
118 struct	user swaputl;
119 struct	pte Pushmap[UPAGES];
120 struct	user pushutl;
121 struct	pte Vfmap[UPAGES];
122 struct	user vfutl;
123 struct	pte CMAP1;
124 char	CADDR1[NBPG];
125 struct	pte CMAP2;
126 char	CADDR2[NBPG];
127 struct	pte mmap[1];
128 char	vmmap[NBPG];
129 struct	pte Mbmap[NMBCLUSTERS/CLSIZE];
130 struct	mbuf mbutl[NMBCLUSTERS*CLBYTES/sizeof (struct mbuf)];
131 struct	pte msgbufmap[CLSIZE];
132 struct	msgbuf msgbuf;
133 struct	pte camap[32];
134 int	cabase;
135 #ifdef unneeded
136 char	caspace[32*NBPG];
137 #endif
138 int	calimit;
139 
140 /*ARGSUSED*/
141 badaddr(addr, len) caddr_t addr; int len; { return (0); }
142 
143 /*ARGSUSED*/
144 copyin(udaddr, kaddr, n) caddr_t udaddr, kaddr; unsigned n; { return (0); }
145 
146 /*ARGSUSED*/
147 copyout(kaddr, udaddr, n) caddr_t kaddr, udaddr; unsigned n; { return (0); }
148 
149 /*ARGSUSED*/
150 setjmp(lp) label_t *lp; { return (0); }
151 
152 /*ARGSUSED*/
153 longjmp(lp) label_t *lp; { /*NOTREACHED*/ }
154 
155 /*ARGSUSED*/
156 setrq(p) struct proc *p; { }
157 
158 /*ARGSUSED*/
159 remrq(p) struct proc *p; { }
160 
161 swtch() { if (whichqs) whichqs = 0; if (masterpaddr) masterpaddr = 0; }
162 
163 /*ARGSUSED*/
164 resume(pcbpf) unsigned pcbpf; { }
165 
166 /*ARGSUSED*/
167 fubyte(base) caddr_t base; { return (0); }
168 
169 /*ARGSUSED*/
170 subyte(base, i) caddr_t base; { return (0); }
171 
172 /*ARGSUSED*/
173 suibyte(base, i) caddr_t base; { return (0); }
174 
175 /*ARGSUSED*/
176 fuword(base) caddr_t base; { return (0); }
177 
178 /*ARGSUSED*/
179 fuiword(base) caddr_t base; { return (0); }
180 
181 /*ARGSUSED*/
182 suword(base, i) caddr_t base; { return (0); }
183 
184 /*ARGSUSED*/
185 suiword(base, i) caddr_t base; { return (0); }
186 
187 /*ARGSUSED*/
188 copyseg(udaddr, pf) caddr_t udaddr; unsigned pf; {
189     CMAP1 = CMAP1; CADDR1[0] = CADDR1[0];
190 }
191 
192 /*ARGSUSED*/
193 clearseg(pf) unsigned pf; { CMAP2 = CMAP2; CADDR2[0] = CADDR2[0]; }
194 
195 /*ARGSUSED*/
196 useracc(udaddr, bcnt, rw) caddr_t udaddr; unsigned bcnt; { return (0); }
197 
198 /*ARGSUSED*/
199 kernacc(addr, bcnt, rw) caddr_t addr; unsigned bcnt; { return (0); }
200 
201 /*VARARGS1*/
202 /*ARGSUSED*/
203 mtpr(reg, value) int reg, value; { }
204 
205 /*ARGSUSED*/
206 mfpr(reg) int reg; { return (0); }
207 
208 
209 spl0() { }
210 spl4() { return (0); }
211 spl5() { return (0); }
212 spl6() { return (0); }
213 spl7() { return (0); }
214 
215 /*ARGSUSED*/
216 splx(s) int s; { }
217 
218 /*ARGSUSED*/
219 bcopy(from, to, count) caddr_t from, to; unsigned count; { ; }
220 
221 /*ARGSUSED*/
222 bzero(base, count) caddr_t base; unsigned count; { ; }
223 
224 /*ARGSUSED*/
225 bcmp(s1, s2, count) caddr_t s1, s2; unsigned count; { return (0); }
226 
227 /*ARGSUSED*/
228 ffs(i) { return (0); }
229 
230 ntohs(s) u_short s; { return ((int)s); }
231 
232 htons(s) u_short s; { return ((int)s); }
233