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