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