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

unix.superglobalmegacorp.com

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