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