Annotation of coherent/d/PS2_KERNEL/include/sys/machine.h, revision 1.1.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         MACHINE_H
                     11: #define        MACHINE_H       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.