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