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