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