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