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