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

1.1       root        1: /*     Locore.c        6.1     83/08/11        */
                      2: 
                      3: #include "dz.h"
                      4: #include "mba.h"
                      5: #include "uba.h"
                      6: 
                      7: #include "../machine/pte.h"
                      8: 
                      9: #include "../h/param.h"
                     10: #include "../h/systm.h"
                     11: #include "../h/dir.h"
                     12: #include "../h/user.h"
                     13: #include "../h/vm.h"
                     14: #include "../h/tty.h"
                     15: #include "../h/proc.h"
                     16: #include "../h/buf.h"
                     17: #include "../h/msgbuf.h"
                     18: #include "../h/mbuf.h"
                     19: #include "../h/protosw.h"
                     20: #include "../h/domain.h"
                     21: 
                     22: #include "../vax/nexus.h"
                     23: #include "../vaxuba/ubavar.h"
                     24: #include "../vaxuba/ubareg.h"
                     25: 
                     26: /*
                     27:  * Pseudo file for lint to show what is used/defined in locore.s.
                     28:  */
                     29: 
                     30: struct scb scb;
                     31: int    (*UNIvec[128])();
                     32: #if NUBA > 1
                     33: int    (*UNI1vec[128])();
                     34: #endif
                     35: struct rpb rpb;
                     36: int    intstack[3*128];
                     37: 
                     38: int    masterpaddr;            /* p_addr of current process on master cpu */
                     39: 
                     40: struct user u;
                     41: 
                     42: doadump() { dumpsys(); }
                     43: 
                     44: Xmba3int() { }
                     45: Xmba2int() { }
                     46: Xmba1int() { }
                     47: Xmba0int() { }
                     48: 
                     49: lowinit()
                     50: {
                     51:        extern int dumpmag;
                     52:        extern struct domain unixdomain;
                     53: #ifdef PUP
                     54:        extern struct domain pupdomain;
                     55: #endif
                     56: #ifdef INET
                     57:        extern struct domain inetdomain;
                     58: #endif
                     59: #include "imp.h"
                     60: #if NIMP > 0
                     61:        extern struct domain impdomain;
                     62: #endif
                     63: 
                     64:        /* cpp messes these up for lint so put them here */
                     65:        unixdomain.dom_next = domains;
                     66:        domains = &unixdomain;
                     67: #ifdef PUP
                     68:        pupdomain.dom_next = domains;
                     69:        domains = &pupdomain;
                     70: #endif
                     71: #ifdef INET
                     72:        inetdomain.dom_next = domains;
                     73:        domains = &inetdomain;
                     74: #endif
                     75: #if NIMP > 0
                     76:        impdomain.dom_next = domains;
                     77:        domains = &impdomain;
                     78: #endif
                     79:        dumpmag = 0;                    /* used only by savecore */
                     80: 
                     81:        /*
                     82:         * Pseudo-uses of globals.
                     83:         */
                     84:        lowinit();
                     85:        intstack[0] = intstack[1];
                     86:        rpb = rpb;
                     87:        scb = scb;
                     88:        maxmem = physmem = freemem = 0;
                     89:        u = u;
                     90:        fixctlrmask();
                     91:        main(0);
                     92:        Xustray();
                     93: 
                     94:        /*
                     95:         * Routines called from interrupt vectors.
                     96:         */
                     97:        panic("Machine check");
                     98:        printf("Write timeout");
                     99:        (*UNIvec[0])();
                    100: #if NUBA > 1
                    101:        (*UNI1vec[0])();
                    102: #endif
                    103:        ubaerror(0, (struct uba_hd *)0, 0, 0, (struct uba_regs *)0);
                    104:        cnrint(0);
                    105:        cnxint(0);
                    106:        consdin();
                    107:        consdout();
                    108: #if NDZ > 0
                    109:        dzdma();
                    110: #endif
                    111: #if NMBA > 0
                    112:        mbintr(0);
                    113: #endif
                    114:        hardclock((caddr_t)0, 0);
                    115:        softclock((caddr_t)0, 0);
                    116:        trap(0, 0, (unsigned)0, 0, 0);
                    117:        syscall(0, 0, (unsigned)0, 0, 0);
                    118:        ipintr();
                    119:        rawintr();
                    120: 
                    121:        if (vmemall((struct pte *)0, 0, (struct proc *)0, 0))
                    122:                return;         /* use value */
                    123:        machinecheck((caddr_t)0);
                    124:        memerr();
                    125:        boothowto = 0;
                    126: }
                    127: 
                    128: consdin() { }
                    129: consdout() { }
                    130: #if NDZ > 0
                    131: dzdma() { dzxint((struct tty *)0); }
                    132: #endif
                    133: 
                    134: int    catcher[256];
                    135: int    cold = 1;
                    136: 
                    137: Xustray() { }
                    138: 
                    139: struct pte Sysmap[6*NPTEPG];
                    140: char   Sysbase[6*NPTEPG*NBPG];
                    141: int    umbabeg;
                    142: struct pte Nexmap[16][16];
                    143: struct nexus nexus[MAXNNEXUS];
                    144: struct pte UMEMmap[MAXNUBA][512];
                    145: char   umem[MAXNUBA][512*NBPG];
                    146: int    umbaend;
                    147: struct pte Usrptmap[USRPTSIZE];
                    148: struct pte usrpt[USRPTSIZE*NPTEPG];
                    149: struct pte Forkmap[UPAGES];
                    150: struct user forkutl;
                    151: struct pte Xswapmap[UPAGES];
                    152: struct user xswaputl;
                    153: struct pte Xswap2map[UPAGES];
                    154: struct user xswap2utl;
                    155: struct pte Swapmap[UPAGES];
                    156: struct user swaputl;
                    157: struct pte Pushmap[UPAGES];
                    158: struct user pushutl;
                    159: struct pte Vfmap[UPAGES];
                    160: struct user vfutl;
                    161: struct pte CMAP1;
                    162: char   CADDR1[NBPG];
                    163: struct pte CMAP2;
                    164: char   CADDR2[NBPG];
                    165: struct pte mmap[1];
                    166: char   vmmap[NBPG];
                    167: struct pte Mbmap[NMBCLUSTERS/CLSIZE];
                    168: struct mbuf mbutl[NMBCLUSTERS*CLBYTES/sizeof (struct mbuf)];
                    169: struct pte msgbufmap[CLSIZE];
                    170: struct msgbuf msgbuf;
                    171: struct pte camap[32];
                    172: int    cabase;
                    173: #ifdef unneeded
                    174: char   caspace[32*NBPG];
                    175: #endif
                    176: int    calimit;
                    177: 
                    178: /*ARGSUSED*/
                    179: badaddr(addr, len) caddr_t addr; int len; { return (0); }
                    180: 
                    181: /*ARGSUSED*/
                    182: copyin(udaddr, kaddr, n) caddr_t udaddr, kaddr; unsigned n; { return (0); }
                    183: 
                    184: /*ARGSUSED*/
                    185: copyout(kaddr, udaddr, n) caddr_t kaddr, udaddr; unsigned n; { return (0); }
                    186: 
                    187: /*ARGSUSED*/
                    188: setjmp(lp) label_t *lp; { return (0); }
                    189: 
                    190: /*ARGSUSED*/
                    191: longjmp(lp) label_t *lp; { /*NOTREACHED*/ }
                    192: 
                    193: /*ARGSUSED*/
                    194: setrq(p) struct proc *p; { }
                    195: 
                    196: /*ARGSUSED*/
                    197: remrq(p) struct proc *p; { }
                    198: 
                    199: swtch() { if (whichqs) whichqs = 0; if (masterpaddr) masterpaddr = 0; }
                    200: 
                    201: /*ARGSUSED*/
                    202: resume(pcbpf) unsigned pcbpf; { }
                    203: 
                    204: /*ARGSUSED*/
                    205: fubyte(base) caddr_t base; { return (0); }
                    206: 
                    207: /*ARGSUSED*/
                    208: subyte(base, i) caddr_t base; { return (0); }
                    209: 
                    210: /*ARGSUSED*/
                    211: suibyte(base, i) caddr_t base; { return (0); }
                    212: 
                    213: /*ARGSUSED*/
                    214: fuword(base) caddr_t base; { return (0); }
                    215: 
                    216: /*ARGSUSED*/
                    217: fuiword(base) caddr_t base; { return (0); }
                    218: 
                    219: /*ARGSUSED*/
                    220: suword(base, i) caddr_t base; { return (0); }
                    221: 
                    222: /*ARGSUSED*/
                    223: suiword(base, i) caddr_t base; { return (0); }
                    224: 
                    225: /*ARGSUSED*/
                    226: copyseg(udaddr, pf) caddr_t udaddr; unsigned pf; {
                    227:     CMAP1 = CMAP1; CADDR1[0] = CADDR1[0];
                    228: }
                    229: 
                    230: /*ARGSUSED*/
                    231: clearseg(pf) unsigned pf; { CMAP2 = CMAP2; CADDR2[0] = CADDR2[0]; }
                    232: 
                    233: /*ARGSUSED*/
                    234: useracc(udaddr, bcnt, rw) caddr_t udaddr; unsigned bcnt; { return (0); }
                    235: 
                    236: /*ARGSUSED*/
                    237: kernacc(addr, bcnt, rw) caddr_t addr; unsigned bcnt; { return (0); }
                    238: 
                    239: /*
                    240:  * Routines handled by asm.sed script.
                    241:  */
                    242: 
                    243: /*VARARGS1*/
                    244: /*ARGSUSED*/
                    245: mtpr(reg, value) int reg, value; { }
                    246: 
                    247: /*ARGSUSED*/
                    248: mfpr(reg) int reg; { return (0); }
                    249: 
                    250: 
                    251: spl0() { }
                    252: spl4() { return (0); }
                    253: spl5() { return (0); }
                    254: spl6() { return (0); }
                    255: spl7() { return (0); }
                    256: 
                    257: /*ARGSUSED*/
                    258: splx(s) int s; { }
                    259: 
                    260: /*ARGSUSED*/
                    261: bcopy(from, to, count) caddr_t from, to; unsigned count; { ; }
                    262: 
                    263: /*ARGSUSED*/
                    264: bzero(base, count) caddr_t base; unsigned count; { ; }
                    265: 
                    266: /*ARGSUSED*/
                    267: bcmp(s1, s2, count) caddr_t s1, s2; unsigned count; { return (0); }
                    268: 
                    269: /*ARGSUSED*/
                    270: scanc(size, cp, table, mask)
                    271: unsigned size; caddr_t cp, table; int mask; { return (0); }
                    272: 
                    273: /*ARGSUSED*/
                    274: ffs(i) { return (0); }
                    275: 
                    276: ntohs(s) u_short s; { return ((int)s); }
                    277: 
                    278: htons(s) u_short s; { return ((int)s); }
                    279: 
                    280: /*
                    281:  * Variables declared for savecore, or
                    282:  * implicitly, such as by config or the loader.
                    283:  */
                    284: char   version[] = "4.2 BSD UNIX ....";
                    285: char   etext;

unix.superglobalmegacorp.com

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