Annotation of coherent/f/usr/include.78/sys/machine.h, revision 1.1

1.1     ! root        1: /* (-lgl
        !             2:  *     COHERENT Version 3.0
        !             3:  *     Copyright (c) 1982, 1990 by Mark Williams Company.
        !             4:  *     All rights reserved. May not be copied without permission.
        !             5:  -lgl) */
        !             6: /*
        !             7:  * Machine dependent definitions.
        !             8:  * 8086/8088 Coherent, IBM PC.
        !             9:  */
        !            10: #ifndef        __SYS_MACHINE_H__
        !            11: #define        __SYS_MACHINE_H__
        !            12: 
        !            13: #include <sys/const.h>
        !            14: #include <sys/types.h>
        !            15: 
        !            16: /*
        !            17:  * Offsets for registers.
        !            18:  */
        !            19: #define        OIP     -3
        !            20: 
        !            21: /*
        !            22:  * Alloc definitions.
        !            23:  */
        !            24: #define        align(p)        ((ALL *) ((int) (p) & ~1))
        !            25: #define        link(p)         align((p)->a_link)
        !            26: #define        tstfree(p)      (((int) (p)->a_link&1) == 0)
        !            27: #define        setfree(p)      ((p)->a_link = (int) (p)->a_link & ~1)
        !            28: #define        setused(p)      ((p)->a_link = (int) (p)->a_link | 1)
        !            29: 
        !            30: /*
        !            31:  * Functions.
        !            32:  * blockn - block number from byte number
        !            33:  * blocko - block offset from byte number
        !            34:  * nbnrem - offset into indirect block from block number
        !            35:  * nbndiv - residual indirect mapping from block number
        !            36:  * btocru - byte to click (saddr_t) rounding up
        !            37:  * btocrd - byte to click rounding down
        !            38:  * bruc - byte rounded up to click boundary
        !            39:  * ctob - click to byte
        !            40:  * ctokrd - click to Kbyte rounding down
        !            41:  * stod - saddr_t to daddr_t conversion for swapper.
        !            42:  */
        !            43: #define        blockn(n)               ((n)>>9)
        !            44: #define        blocko(n)               ((n)&(512-1))
        !            45: #define nbnrem(b)              ((int)(b)&(128-1))
        !            46: #define nbndiv(b)              ((b)>>7)
        !            47:        /* A click is a 16 byte paragraph, but they are allocated in chunks
        !            48:         * of 512 bytes so that disk and memory segments have same granularity.
        !            49:         */
        !            50: /* The following macros are no longer valid in protected mode.
        !            51:  * #define btocru(n)           ((saddr_t) (((n+511)>>9) << 5))
        !            52:  * #define btocrd(n)           ((saddr_t) ((n)>>4))
        !            53:  * #define bruc(n)             ((n+511)&~511)
        !            54:  * #define ctob(n)             ((n)<<4)
        !            55:  * #define ctokrd(n)           ((n)>>6)
        !            56:  * #define stod(n)             ((daddr_t)((n)>>5))
        !            57:  */
        !            58: 
        !            59: /*
        !            60:  * Simple functions.
        !            61:  */
        !            62: #define        msetppc(v)    (((int *)((char *)&u+UPASIZE))[OIP] = (v))
        !            63: #define sxalloc(s, f) ((f&SFHIGH)?shalloc(s):smalloc(s))
        !            64: #define        vsegpair(v)     (v),sds
        !            65: 
        !            66: /* The following macro is no longer valid in protected mode.
        !            67:  * #define psegpair(p) (int)((p)&0xF),((int)((p)>>4))
        !            68:  */
        !            69: 
        !            70: /*
        !            71:  * For mapping auxiliary segment in exec.
        !            72:  */
        !            73: #define        asave(o)
        !            74: #define        arest(o)
        !            75: #define        abase(s)        (sas=s, 0)
        !            76: #define        adone(s)
        !            77: 
        !            78: /*
        !            79:  * Buffers are not mapped.
        !            80:  */
        !            81: #define        bsave(o)
        !            82: #define        brest(o)
        !            83: #define        bmapv(p)
        !            84: #define        bconv(p)        (p)
        !            85: /* #define     bvirt(p)        (p-ctob(sds)) */
        !            86: 
        !            87: /*
        !            88:  * Clist are not mapped.
        !            89:  */
        !            90: #define        csave(o)
        !            91: #define        crest(o)
        !            92: #define        cmapv(p)
        !            93: #define        cconv(p)        (p)
        !            94: #define        cvirt(p)        ((CLIST *)(p))
        !            95: 
        !            96: /*
        !            97:  * Drivers are not mapped.
        !            98:  */
        !            99: #define        dsave(o)
        !           100: #define        drest(o)
        !           101: #define        dmapv(s)
        !           102: #define        dvirt()         0
        !           103: #define dcopy(dst,src)
        !           104: 
        !           105: /*
        !           106:  * Register structure.
        !           107:  */
        !           108: typedef union mreg_u {
        !           109:        unsigned m_reg[];
        !           110:        unsigned m_int;
        !           111: } MREG;
        !           112: 
        !           113: /*
        !           114:  * Segmenation prototype.
        !           115:  */
        !           116: typedef struct mproto {
        !           117:        saddr_t *mp_cbp;
        !           118:        saddr_t *mp_dbp;
        !           119:        unsigned mp_csl;
        !           120:        unsigned mp_dsl;
        !           121:        vaddr_t mp_svb;
        !           122:        vaddr_t mp_svl;
        !           123: } MPROTO;
        !           124: 
        !           125: /*
        !           126:  * Set jump and return structure.
        !           127:  */
        !           128: typedef        struct menv_s {
        !           129:        int     me_di;
        !           130:        int     me_si;
        !           131:        int     me_bp;
        !           132:        int     me_sp;
        !           133:        int     me_pc;
        !           134:        int     me_fw;
        !           135:        int     me_depth;               /* Stack depth */
        !           136: }      MENV;
        !           137: 
        !           138: /*
        !           139:  * Context structure.
        !           140:  */
        !           141: typedef        struct mcon_s {
        !           142:        int     mc_di;
        !           143:        int     mc_si;
        !           144:        int     mc_bp;
        !           145:        int     mc_sp;
        !           146:        int     mc_pc;
        !           147:        int     mc_fw;
        !           148:        int     mc_depth;               /* Stack depth */
        !           149: }      MCON;
        !           150: 
        !           151: /*
        !           152:  * General register structure.
        !           153:  */
        !           154: typedef struct mgen {
        !           155: } MGEN;
        !           156: 
        !           157: #ifdef KERNEL
        !           158: /*
        !           159:  * Global variables.
        !           160:  */
        !           161: extern unsigned sas;                   /* System auxiliary segment */
        !           162: extern unsigned scs;                   /* System code segment */
        !           163: extern unsigned sds;                   /* System data segment */
        !           164: 
        !           165: extern saddr_t uasa;                   /* Currently active uarea segment */
        !           166: #endif
        !           167: 
        !           168: #endif

unix.superglobalmegacorp.com

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