Annotation of 43BSD/sys/vax/Locore.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1982, 1986 Regents of the University of California.
                      3:  * All rights reserved.  The Berkeley software License Agreement
                      4:  * specifies the terms and conditions for redistribution.
                      5:  *
                      6:  *     @(#)Locore.c    7.1 (Berkeley) 6/5/86
                      7:  */
                      8: 
                      9: #include "dz.h"
                     10: #include "mba.h"
                     11: #include "uba.h"
                     12: 
                     13: #include "pte.h"
                     14: 
                     15: #include "param.h"
                     16: #include "systm.h"
                     17: #include "dir.h"
                     18: #include "user.h"
                     19: #include "vm.h"
                     20: #include "ioctl.h"
                     21: #include "tty.h"
                     22: #include "proc.h"
                     23: #include "buf.h"
                     24: #include "msgbuf.h"
                     25: #include "mbuf.h"
                     26: #include "protosw.h"
                     27: #include "domain.h"
                     28: #include "map.h"
                     29: 
                     30: #include "nexus.h"
                     31: #include "ioa.h"
                     32: #include "ka630.h"
                     33: #include "../vaxuba/ubavar.h"
                     34: #include "../vaxuba/ubareg.h"
                     35: 
                     36: /*
                     37:  * Pseudo file for lint to show what is used/defined in locore.s.
                     38:  */
                     39: 
                     40: struct scb scb;
                     41: int    (*UNIvec[128])();
                     42: #if NUBA > 1
                     43: int    (*UNI1vec[128])();
                     44: #endif
                     45: struct rpb rpb;
                     46: int    dumpflag;
                     47: int    intstack[3*NBPG];
                     48: int    masterpaddr;            /* p_addr of current process on master cpu */
                     49: struct user u;
                     50: int    icode[8];
                     51: int    szicode = sizeof (icode);
                     52: /*
                     53:  * Variables declared for savecore, or
                     54:  * implicitly, such as by config or the loader.
                     55:  */
                     56: char   version[] = "4.2 BSD UNIX ....";
                     57: int    etext;
                     58: 
                     59: doadump() { dumpsys(); }
                     60: 
                     61: Xmba3int() { }
                     62: Xmba2int() { }
                     63: Xmba1int() { }
                     64: Xmba0int() { }
                     65: 
                     66: lowinit()
                     67: {
                     68: #if !defined(GPROF)
                     69:        caddr_t cp;
                     70: #endif
                     71:        extern int dumpmag;
                     72:        extern int rthashsize;
                     73:        extern int arptab_size;
                     74:        extern int dk_ndrive;
                     75:        extern struct domain unixdomain;
                     76: #ifdef PUP
                     77:        extern struct domain pupdomain;
                     78: #endif
                     79: #ifdef INET
                     80:        extern struct domain inetdomain;
                     81: #endif
                     82: #include "imp.h"
                     83: #if NIMP > 0
                     84:        extern struct domain impdomain;
                     85: #endif
                     86: #ifdef NS
                     87:        extern struct domain nsdomain;
                     88: #endif
                     89: 
                     90:        /* cpp messes these up for lint so put them here */
                     91:        unixdomain.dom_next = domains;
                     92:        domains = &unixdomain;
                     93: #ifdef PUP
                     94:        pupdomain.dom_next = domains;
                     95:        domains = &pupdomain;
                     96: #endif
                     97: #ifdef INET
                     98:        inetdomain.dom_next = domains;
                     99:        domains = &inetdomain;
                    100: #endif
                    101: #if NIMP > 0
                    102:        impdomain.dom_next = domains;
                    103:        domains = &impdomain;
                    104: #endif
                    105: #ifdef NS
                    106:        nsdomain.dom_next = domains;
                    107:        domains = &nsdomain;
                    108: #endif
                    109:        dumpmag = 0;                    /* used only by savecore */
                    110:        rthashsize = rthashsize;        /* used by netstat, etc. */
                    111:        arptab_size = arptab_size;      /* used by arp command */
                    112:        dk_ndrive = dk_ndrive;          /* used by vmstat, iostat, etc. */
                    113: 
                    114:        /*
                    115:         * Pseudo-uses of globals.
                    116:         */
                    117:        lowinit();
                    118:        intstack[0] = intstack[1];
                    119:        rpb = rpb;
                    120:        scb = scb;
                    121:        maxmem = physmem = freemem = 0;
                    122:        u = u;
                    123:        fixctlrmask();
                    124:        main(0);
                    125:        Xustray();
                    126: 
                    127:        /*
                    128:         * Routines called from interrupt vectors.
                    129:         */
                    130:        panic("Machine check");
                    131:        printf("Write timeout");
                    132:        (*UNIvec[0])();
                    133: #if NUBA > 1
                    134:        (*UNI1vec[0])();
                    135: #endif
                    136:        ubaerror(0, (struct uba_hd *)0, 0, 0, (struct uba_regs *)0);
                    137:        cnrint(0);
                    138:        cnxint(0);
                    139:        consdin();
                    140:        consdout();
                    141: #if NDZ > 0
                    142:        dzdma();
                    143: #endif
                    144: #if NMBA > 0
                    145:        mbintr(0);
                    146: #endif
                    147:        hardclock((caddr_t)0, 0);
                    148:        softclock((caddr_t)0, 0);
                    149:        trap(0, 0, (unsigned)0, 0, 0);
                    150:        syscall(0, 0, (unsigned)0, 0, 0);
                    151:        rawintr();
                    152: #ifdef INET
                    153:        ipintr();
                    154: #endif
                    155: #ifdef NS
                    156:        nsintr();
                    157: #endif
                    158: 
                    159:        if (vmemall((struct pte *)0, 0, (struct proc *)0, 0))
                    160:                return;         /* use value */
                    161:        machinecheck((caddr_t)0);
                    162:        memerr();
                    163:        boothowto = 0;
                    164:        dumpflag = 0; dumpflag = dumpflag;
                    165: #if !defined(GPROF)
                    166:        cp = (caddr_t)&etext;
                    167:        cp = cp;
                    168: #endif
                    169: }
                    170: 
                    171: consdin() { }
                    172: consdout() { }
                    173: #if NDZ > 0
                    174: dzdma() { dzxint((struct tty *)0); }
                    175: #endif
                    176: 
                    177: int    catcher[256];
                    178: int    cold = 1;
                    179: 
                    180: Xustray() { }
                    181: 
                    182: struct pte Sysmap[6*NPTEPG];
                    183: char   Sysbase[6*NPTEPG*NBPG];
                    184: int    umbabeg;
                    185: struct pte Nexmap[16][16];
                    186: struct nexus nexus[MAXNNEXUS];
                    187: struct pte Ioamap[MAXNIOA][IOAMAPSIZ/NBPG];
                    188: struct pte UMEMmap[NUBA][512];
                    189: char   umem[NUBA][512*NBPG];
                    190: int    umbaend;
                    191: struct pte Usrptmap[USRPTSIZE];
                    192: struct pte usrpt[USRPTSIZE*NPTEPG];
                    193: struct pte Forkmap[UPAGES];
                    194: struct user forkutl;
                    195: struct pte Xswapmap[UPAGES];
                    196: struct user xswaputl;
                    197: struct pte Xswap2map[UPAGES];
                    198: struct user xswap2utl;
                    199: struct pte Swapmap[UPAGES];
                    200: struct user swaputl;
                    201: struct pte Pushmap[UPAGES];
                    202: struct user pushutl;
                    203: struct pte Vfmap[UPAGES];
                    204: struct user vfutl;
                    205: struct pte CMAP1;
                    206: char   CADDR1[NBPG];
                    207: struct pte CMAP2;
                    208: char   CADDR2[NBPG];
                    209: struct pte mmap[1];
                    210: char   vmmap[NBPG];
                    211: struct pte Mbmap[NMBCLUSTERS/CLSIZE];
                    212: struct mbuf mbutl[NMBCLUSTERS*CLBYTES/sizeof (struct mbuf)];
                    213: struct pte msgbufmap[CLSIZE];
                    214: struct msgbuf msgbuf;
                    215: struct pte camap[32];
                    216: #ifdef VAX630
                    217: struct pte Clockmap[1];
                    218: struct cldevice cldevice;
                    219: struct pte Ka630map[1];
                    220: struct ka630cpu ka630cpu;
                    221: #endif
                    222: int    cabase, calimit;
                    223: #ifdef unneeded
                    224: char   caspace[32*NBPG];
                    225: #endif
                    226: int    calimit;
                    227: 
                    228: /*ARGSUSED*/
                    229: badaddr(addr, len) caddr_t addr; int len; { return (0); }
                    230: 
                    231: /*ARGSUSED*/
                    232: ovbcopy(from, to, len) caddr_t from, to; unsigned len; { }
                    233: copyinstr(udaddr, kaddr, maxlength, lencopied)
                    234:     caddr_t udaddr, kaddr; u_int maxlength, *lencopied;
                    235: { *kaddr = *udaddr; *lencopied = maxlength; return (0); }
                    236: copyoutstr(kaddr, udaddr, maxlength, lencopied)
                    237:     caddr_t kaddr, udaddr; u_int maxlength, *lencopied;
                    238: { *udaddr = *kaddr; *lencopied = maxlength; return (0); }
                    239: copystr(kfaddr, kdaddr, maxlength, lencopied)
                    240:     caddr_t kfaddr, kdaddr; u_int maxlength, *lencopied;
                    241: { *kdaddr = *kfaddr; *lencopied = maxlength; return (0); }
                    242: 
                    243: /*ARGSUSED*/
                    244: copyin(udaddr, kaddr, n) caddr_t udaddr, kaddr; u_int n; { return (0); }
                    245: /*ARGSUSED*/
                    246: copyout(kaddr, udaddr, n) caddr_t kaddr, udaddr; u_int n; { return (0); }
                    247: 
                    248: /*ARGSUSED*/
                    249: longjmp(lp) label_t *lp; { /*NOTREACHED*/ }
                    250: 
                    251: /*ARGSUSED*/
                    252: savectx(lp) label_t *lp; { return (0); }
                    253: 
                    254: /*ARGSUSED*/
                    255: setrq(p) struct proc *p; { }
                    256: 
                    257: /*ARGSUSED*/
                    258: remrq(p) struct proc *p; { }
                    259: 
                    260: swtch() { if (whichqs) whichqs = 0; if (masterpaddr) masterpaddr = 0; }
                    261: 
                    262: /*ARGSUSED*/
                    263: resume(pcbpf) unsigned pcbpf; { }
                    264: 
                    265: /*ARGSUSED*/
                    266: fubyte(base) caddr_t base; { return (0); }
                    267: #ifdef notdef
                    268: /*ARGSUSED*/
                    269: fuibyte(base) caddr_t base; { return (0); }
                    270: #endif
                    271: /*ARGSUSED*/
                    272: subyte(base, i) caddr_t base; { return (0); }
                    273: /*ARGSUSED*/
                    274: suibyte(base, i) caddr_t base; { return (0); }
                    275: /*ARGSUSED*/
                    276: fuword(base) caddr_t base; { return (0); }
                    277: /*ARGSUSED*/
                    278: fuiword(base) caddr_t base; { return (0); }
                    279: /*ARGSUSED*/
                    280: suword(base, i) caddr_t base; { return (0); }
                    281: /*ARGSUSED*/
                    282: suiword(base, i) caddr_t base; { return (0); }
                    283: 
                    284: /*ARGSUSED*/
                    285: copyseg(udaddr, pf)
                    286:     caddr_t udaddr; unsigned pf;
                    287: { CMAP1 = CMAP1; CADDR1[0] = CADDR1[0]; }
                    288: 
                    289: /*ARGSUSED*/
                    290: clearseg(pf) unsigned pf; { CMAP2 = CMAP2; CADDR2[0] = CADDR2[0]; }
                    291: 
                    292: /*ARGSUSED*/
                    293: useracc(udaddr, bcnt, rw) caddr_t udaddr; unsigned bcnt; { return (0); }
                    294: 
                    295: /*ARGSUSED*/
                    296: kernacc(addr, bcnt, rw) caddr_t addr; unsigned bcnt; { return (0); }
                    297: 
                    298: /*ARGSUSED*/
                    299: addupc(pc, prof, counts) int pc; struct uprof *prof; int counts; { }
                    300: 
                    301: /*
                    302:  * Routines expanded by inline.
                    303:  */
                    304: spl0() { }
                    305: splsoftclock() { return (0); }
                    306: splnet() { return (0); }
                    307: spl4() { return (0); }
                    308: spl5() { return (0); }
                    309: splbio() { return (0); }
                    310: spltty() { return (0); }
                    311: #ifdef notdef
                    312: spl6() { return (0); }         /* not currently used */
                    313: #endif
                    314: splclock() { return (0); }
                    315: spl7() { return (0); }
                    316: splhigh() { return (0); }
                    317: 
                    318: /*ARGSUSED*/
                    319: splx(s) int s; { }
                    320: 
                    321: /*ARGSUSED*/
                    322: bcopy(from, to, len) caddr_t from, to; unsigned len; { }
                    323: /*ARGSUSED*/
                    324: bzero(base, count) caddr_t base; unsigned count; { }
                    325: /*ARGSUSED*/
                    326: blkclr(base, count) caddr_t base; unsigned count; { }
                    327: 
                    328: /*ARGSUSED*/
                    329: /*VARARGS1*/
                    330: mtpr(reg, v) int reg; { }
                    331: /*ARGSUSED*/
                    332: mfpr(reg) int reg; { return (0); }
                    333: 
                    334: /*ARGSUSED*/
                    335: setjmp(lp) label_t *lp; { return (0); }
                    336: 
                    337: /*ARGSUSED*/
                    338: scanc(size, cp, table, mask)
                    339:     unsigned size; char *cp, table[]; int mask;
                    340: { return (0); }
                    341: 
                    342: /*ARGSUSED*/
                    343: skpc(mask, size, cp) int mask; int size; char *cp; { return (0); }
                    344: 
                    345: #ifdef notdef
                    346: /*ARGSUSED*/
                    347: locc(mask, size, cp) int mask; char *cp; unsigned size; { return (0); }
                    348: #endif
                    349: 
                    350: /*ARGSUSED*/
                    351: _insque(p, q) caddr_t p, q; { }
                    352: /*ARGSUSED*/
                    353: _remque(p) caddr_t p; { }
                    354: 
                    355: /*ARGSUSED*/
                    356: ffs(v) long v; { return (0); }
                    357: 
                    358: #ifdef notdef
                    359: imin(a, b) int a, b; { return (a < b ? a : b); }
                    360: imax(a, b) int a, b; { return (a > b ? a : b); }
                    361: unsigned min(a, b) u_int a, b; { return (a < b ? a : b); }
                    362: unsigned max(a, b) u_int a, b; { return (a > b ? a : b); }
                    363: #endif
                    364: u_short ntohs(s) u_short s; { return ((u_short)s); }
                    365: u_short htons(s) u_short s; { return ((u_short)s); }
                    366: u_long ntohl(l) u_long l; { return ((u_long)l); }
                    367: u_long htonl(l) u_long l; { return ((u_long)l); }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.