Annotation of 43BSDReno/sys/tahoe/Locore.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1982, 1986, 1988 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.3 (Berkeley) 5/9/89
                      7:  */
                      8: 
                      9: #include "param.h"
                     10: #include "systm.h"
                     11: #include "user.h"
                     12: #include "vm.h"
                     13: #include "ioctl.h"
                     14: #include "tty.h"
                     15: #include "proc.h"
                     16: #include "buf.h"
                     17: #include "msgbuf.h"
                     18: #include "mbuf.h"
                     19: #include "protosw.h"
                     20: #include "domain.h"
                     21: #include "map.h"
                     22: 
                     23: #include "cpu.h"
                     24: #include "mtpr.h"
                     25: #include "trap.h"
                     26: #include "psl.h"
                     27: #include "pte.h"
                     28: #include "scb.h"
                     29: #include "cp.h"
                     30: #include "mem.h"
                     31: 
                     32: #include "../tahoemath/fp.h"
                     33: 
                     34: /*
                     35:  * Pseudo file for lint to show what is used/defined in locore.s.
                     36:  */
                     37: 
                     38: struct scb scb;
                     39: struct rpb rpb;
                     40: int    dumpflag;
                     41: int    intstack[3*NBPG];
                     42: int    masterpaddr;            /* p_addr of current process on master cpu */
                     43: struct user u;
                     44: int    icode[8];
                     45: int    szicode = sizeof (icode);
                     46: quad   catcher[SCB_LASTIV];
                     47: /*
                     48:  * Variables declared for savecore, or
                     49:  * implicitly, such as by config or the loader.
                     50:  */
                     51: char   version[] = "4.3 BSD UNIX ....";
                     52: int    etext;
                     53: 
                     54: doadump() { dumpsys(); }
                     55: 
                     56: lowinit()
                     57: {
                     58: #if !defined(GPROF)
                     59:        caddr_t cp;
                     60: #endif
                     61:        extern int dumpmag;
                     62:        extern int rthashsize;
                     63:        extern int arptab_size;
                     64:        extern int dk_ndrive;
                     65:        extern struct domain unixdomain;
                     66: #ifdef INET
                     67:        extern struct domain inetdomain;
                     68: #endif
                     69: #include "imp.h"
                     70: #if NIMP > 0
                     71:        extern struct domain impdomain;
                     72: #endif
                     73: #ifdef NS
                     74:        extern struct domain nsdomain;
                     75: #endif
                     76: 
                     77:        /* cpp messes these up for lint so put them here */
                     78:        unixdomain.dom_next = domains;
                     79:        domains = &unixdomain;
                     80: #ifdef INET
                     81:        inetdomain.dom_next = domains;
                     82:        domains = &inetdomain;
                     83: #endif
                     84: #if NIMP > 0
                     85:        impdomain.dom_next = domains;
                     86:        domains = &impdomain;
                     87: #endif
                     88: #ifdef NS
                     89:        nsdomain.dom_next = domains;
                     90:        domains = &nsdomain;
                     91: #endif
                     92:        dumpmag = 0;                    /* used only by savecore */
                     93:        rthashsize = rthashsize;        /* used by netstat, etc. */
                     94:        arptab_size = arptab_size;      /* used by arp command */
                     95:        dk_ndrive = dk_ndrive;          /* used by vmstat, iostat, etc. */
                     96: 
                     97:        /*
                     98:         * Pseudo-uses of globals.
                     99:         */
                    100:        lowinit();
                    101:        intstack[0] = intstack[1];
                    102:        rpb = rpb;
                    103:        scb = scb;
                    104:        maxmem = physmem = freemem = 0;
                    105:        u = u;
                    106:        fixctlrmask();
                    107:        main(0);
                    108: 
                    109:        /*
                    110:         * Routines called from interrupt vectors.
                    111:         */
                    112:        buserror((caddr_t)0);
                    113:        panic("Machine check");
                    114:        printf("Write timeout");
                    115:        rawintr();
                    116: #ifdef INET
                    117:        ipintr();
                    118: #endif
                    119: #ifdef NS
                    120:        nsintr();
                    121: #endif
                    122:        cnrint(0);
                    123:        cnxint(0);
                    124:        hardclock((caddr_t)0, 0);
                    125:        softclock((caddr_t)0, 0);
                    126:        fpemulate(0, 0, 0, 0, 0, 0, 0, 0, 0);
                    127:        trap(0, 0, 0, 0, 0, 0, (unsigned)0, 0, 0);
                    128:        syscall(0, 0, 0, 0, 0, 0, (unsigned)0, 0, 0);
                    129: 
                    130:        if (vmemall((struct pte *)0, 0, (struct proc *)0, 0))
                    131:                return;         /* use value */
                    132:        boothowto = 0;
                    133:        if (rmget((struct map *)0, 0, 0) == 0)
                    134:                return;
                    135:        dumpflag = 0; dumpflag = dumpflag;
                    136: #ifdef KADB
                    137:        bootesym = 0; bootesym = bootesym;
                    138: #endif
                    139: #if !defined(GPROF)
                    140:        cp = (caddr_t)&etext;
                    141:        cp = cp;
                    142: #endif
                    143: }
                    144: 
                    145: struct pte Sysmap[6*NPTEPG];
                    146: caddr_t        Sysbase;
                    147: struct pte VMEMmap[1];
                    148: caddr_t        vmem, vmembeg, vmemend;
                    149: struct pte VMEMmap1[1];
                    150: caddr_t        vmem1;
                    151: struct pte VBmap[1];
                    152: caddr_t        vbbase, vbend;
                    153: struct pte Usrptmap[USRPTSIZE];
                    154: struct pte usrpt[USRPTSIZE*NPTEPG];
                    155: struct pte Forkmap[UPAGES];
                    156: struct user forkutl;
                    157: struct pte Xswapmap[UPAGES];
                    158: struct user xswaputl;
                    159: struct pte Xswap2map[UPAGES];
                    160: struct user xswap2utl;
                    161: struct pte Swapmap[UPAGES];
                    162: struct user swaputl;
                    163: struct pte Pushmap[UPAGES];
                    164: struct user pushutl;
                    165: struct pte Vfmap[UPAGES];
                    166: struct user vfutl;
                    167: struct pte CMAP1[1], CMAP2[1];
                    168: caddr_t        CADDR1, CADDR2;
                    169: struct pte mmap[1];
                    170: char   vmmap[1];
                    171: struct pte msgbufmap[3*NBPG];
                    172: struct msgbuf msgbuf;
                    173: struct pte kmempt[100], ekmempt[1];
                    174: char   kmembase[100*NBPG];
                    175: struct pte Mbmap[NMBCLUSTERS/CLSIZE];
                    176: struct mbuf mbutl[NMBCLUSTERS*CLBYTES/sizeof (struct mbuf)];
                    177: #ifdef NFS
                    178: struct pte Nfsiomap[MAXPHYS/NBPG+1];
                    179: char   nfsiobuf[MAXPHYS+NBPG];
                    180: #endif
                    181: 
                    182: /*ARGSUSED*/
                    183: badaddr(addr, len) caddr_t addr; int len; { return (0); }
                    184: /*ARGSUSED*/
                    185: ovbcopy(from, to, len) caddr_t from, to; unsigned len; { }
                    186: copyinstr(udaddr, kaddr, maxlength, lencopied)
                    187:     caddr_t udaddr, kaddr; u_int maxlength, *lencopied;
                    188: { *kaddr = *udaddr; *lencopied = maxlength; return (0); }
                    189: copyoutstr(kaddr, udaddr, maxlength, lencopied)
                    190:     caddr_t kaddr, udaddr; u_int maxlength, *lencopied;
                    191: { *kaddr = *udaddr; *lencopied = maxlength; return (0); }
                    192: copystr(kfaddr, kdaddr, maxlength, lencopied)
                    193:     caddr_t kfaddr, kdaddr; u_int maxlength, *lencopied;
                    194: { *kdaddr = *kfaddr; *lencopied = maxlength; return (0); }
                    195: /*ARGSUSED*/
                    196: copyin(udaddr, kaddr, n) caddr_t udaddr, kaddr; u_int n; { return (0); }
                    197: /*ARGSUSED*/
                    198: copyout(kaddr, udaddr, n) caddr_t kaddr, udaddr; u_int n; { return (0); }
                    199: 
                    200: /*ARGSUSED*/
                    201: longjmp(lp) label_t *lp; { /*NOTREACHED*/ }
                    202: 
                    203: /*ARGSUSED*/
                    204: savectx(lp) label_t *lp; { return (0); }
                    205: 
                    206: /*ARGSUSED*/
                    207: setrq(p) struct proc *p; { }
                    208: 
                    209: /*ARGSUSED*/
                    210: remrq(p) struct proc *p; { }
                    211: 
                    212: swtch() { if (whichqs) whichqs = 0; if (masterpaddr) masterpaddr = 0; }
                    213: 
                    214: /*ARGSUSED*/
                    215: resume(pcbpf) unsigned pcbpf; { }
                    216: 
                    217: /*ARGSUSED*/
                    218: fubyte(base) caddr_t base; { return (0); }
                    219: /*ARGSUSED*/
                    220: subyte(base, i) caddr_t base; { return (0); }
                    221: /*ARGSUSED*/
                    222: fuword(base) caddr_t base; { return (0); }
                    223: /*ARGSUSED*/
                    224: suword(base, i) caddr_t base; { return (0); }
                    225: 
                    226: /*ARGSUSED*/
                    227: copyseg(udaddr, pf)
                    228:     caddr_t udaddr; unsigned pf;
                    229: { CMAP1[0] = CMAP1[0]; CADDR1[0] = CADDR1[0]; }
                    230: 
                    231: /*ARGSUSED*/
                    232: clearseg(pf) unsigned pf; { CMAP2[0] = CMAP2[0]; CADDR2[0] = CADDR2[0]; }
                    233: 
                    234: /*ARGSUSED*/
                    235: useracc(udaddr, bcnt, rw) caddr_t udaddr; unsigned bcnt; { return (0); }
                    236: 
                    237: /*ARGSUSED*/
                    238: kernacc(addr, bcnt, rw) caddr_t addr; unsigned bcnt; { return (0); }
                    239: 
                    240: /*ARGSUSED*/
                    241: addupc(pc, prof, counts) int pc; struct uprof *prof; int counts; { }
                    242: 
                    243: /*ARGSUSED*/
                    244: scanc(size, cp, table, mask)
                    245:     unsigned size; u_char *cp, table[]; u_char mask;
                    246: { return (0); }
                    247: 
                    248: /*ARGSUSED*/
                    249: skpc(mask, size, cp) int mask; int size; char *cp; { return (0); }
                    250: 
                    251: #ifdef notdef
                    252: /*ARGSUSED*/
                    253: locc(mask, size, cp) int mask; int size; char *cp; { return (0); }
                    254: #endif
                    255: 
                    256: /*
                    257:  * Routines expanded by inline.
                    258:  */
                    259: #ifdef notdef
                    260: fuibyte(base) caddr_t base; { return (fubyte(base)); }
                    261: #endif
                    262: fuiword(base) caddr_t base; { return (fuword(base)); }
                    263: suibyte(base, i) caddr_t base; { return (subyte(base, i)); }
                    264: suiword(base, i) caddr_t base; { return (suword(base, i)); }
                    265: 
                    266: /*ARGSUSED*/
                    267: setjmp(lp) label_t *lp; { return (0); }
                    268: 
                    269: /*ARGSUSED*/
                    270: _insque(p, q) caddr_t p, q; { }
                    271: /*ARGSUSED*/
                    272: _remque(p) caddr_t p; { }
                    273: 
                    274: /*ARGSUSED*/
                    275: bcopy(from, to, len) caddr_t from, to; unsigned len; { }
                    276: /*ARGSUSED*/
                    277: bzero(base, count) caddr_t base; unsigned count; { }
                    278: /*ARGSUSED*/
                    279: blkclr(base, count) caddr_t base; unsigned count; { }
                    280: 
                    281: /*ARGSUSED*/
                    282: /*VARARGS1*/
                    283: mtpr(reg, v) int reg; { }
                    284: /*ARGSUSED*/
                    285: mfpr(reg) int reg; { return (0); }
                    286: 
                    287: /*ARGSUSED*/
                    288: _movow(dst, v) u_short *dst, v; { }
                    289: /*ARGSUSED*/
                    290: _movob(dst, v) u_char *dst, v; { }
                    291: 
                    292: /*ARGSUSED*/
                    293: ffs(v) long v; { return (0); }
                    294: 
                    295: imin(a, b) int a, b; { return (a < b ? a : b); }
                    296: imax(a, b) int a, b; { return (a > b ? a : b); }
                    297: #ifdef notdef
                    298: unsigned min(a, b) u_int a, b; { return (a < b ? a : b); }
                    299: unsigned max(a, b) u_int a, b; { return (a > b ? a : b); }
                    300: #endif

unix.superglobalmegacorp.com

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