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