Annotation of cci/usr/src/bin/cdb/macdefs.h, revision 1.1.1.1

1.1       root        1: /* @(#)macdefs.h       2.5 */
                      2: /* the following defines give the SIZE and ALIGNMENT requirements
                      3:  * of the various types in BITS.  This information differs
                      4:  * from machine to machine.  If you have the source for the
                      5:  * PCC compiler, this can be found in the `macdefs.h' file
                      6:  */
                      7: 
                      8: /* ANY use of the union STUFFU is inherently MACHINE DEPENDENT
                      9:  * it is used for stuffing bytes into longs, etc.
                     10:  * most machines can be made to work if you move the fields and recompile
                     11:  */
                     12: 
                     13: #ifdef TAHOE
                     14: #define SZCHAR 8
                     15: #define SZSHORT        16
                     16: #define SZINT  32
                     17: #define SZLONG 32
                     18: #define SZPOINT        32
                     19: #define SZFLOAT        32
                     20: #define SZDOUBLE       64
                     21: 
                     22: #define ALCHAR 8
                     23: #define ALSHORT        16
                     24: #define ALINT  32
                     25: #define ALLONG 32
                     26: #define ALPOINT        32
                     27: #define ALFLOAT        32
                     28: #define ALDOUBLE       32
                     29: #define ALSTRUCT       32
                     30: 
                     31: #define LTORBYTES /* bytes are numbered from left to right */
                     32: #define RTOLBITS /* bits are numbered from right to left */
                     33: #define cbPage 512             /* # of bytes on a disk page */
                     34: 
                     35: typedef union {
                     36:        long    lng;
                     37:        float   fl;
                     38:        struct {
                     39:            short       shortHi;
                     40:            short       shortLo;
                     41:            } shorts;
                     42:        struct {
                     43:            char        chHiHi;
                     44:            char        chHiLo;
                     45:            char        chLoHi;
                     46:            char        chLoLo;
                     47:            } chars;
                     48:        } STUFFU;
                     49: #endif
                     50: 
                     51: #ifdef ONYX
                     52: #define SZCHAR 8
                     53: #define SZSHORT        16
                     54: #define SZINT  16
                     55: #define SZLONG 32
                     56: #define SZPOINT        16
                     57: #define SZFLOAT        32
                     58: #define SZDOUBLE       64
                     59: 
                     60: #define ALCHAR 8
                     61: #define ALSHORT        16
                     62: #define ALINT  16
                     63: #define ALLONG 16
                     64: #define ALPOINT        16
                     65: #define ALFLOAT        16
                     66: #define ALDOUBLE       16
                     67: #define ALSTRUCT       8
                     68: 
                     69: #define EVENBYTES      /* accesses must be made on even byte boundaries */
                     70: #define RTOLBYTES /* bytes are numbered from right to left */
                     71: #define RTOLBITS /* bits are numbered from right to left */
                     72: #define cbPage 512             /* # of bytes on a disk page */
                     73: 
                     74: typedef union {
                     75:        long    lng;
                     76:        float   fl;
                     77:        struct {
                     78:            short       shortHi;
                     79:            short       shortLo;
                     80:            } shorts;
                     81:        struct {
                     82:            char        chHiHi;
                     83:            char        chHiLo;
                     84:            char        chLoHi;
                     85:            char        chLoLo;
                     86:            } chars;
                     87:        } STUFFU;
                     88: #endif
                     89: 
                     90: #ifdef REGULUS
                     91: #define SZCHAR 8
                     92: #define SZSHORT        16
                     93: #define SZINT  16
                     94: #define SZLONG 32
                     95: #define SZPOINT        32
                     96: #define SZFLOAT        32
                     97: #define SZDOUBLE       32
                     98: 
                     99: #define ALCHAR 16
                    100: #define ALSHORT        16
                    101: #define ALINT  16
                    102: #define ALLONG 16
                    103: #define ALPOINT        16
                    104: #define ALFLOAT        16
                    105: #define ALDOUBLE       16
                    106: #define ALSTRUCT       16
                    107: 
                    108: #define EVENBYTES      /* accesses must be made on even byte boundaries */
                    109: #define LTORBYTES /* bytes are numbered from left to right */
                    110: #define LTORBITS /* bits are numbered from left to right */
                    111: #define cbPage 512             /* # of bytes on a disk page */
                    112: 
                    113: typedef union {
                    114:        long    lng;
                    115:        float   fl;
                    116:        struct {
                    117:            short       shortHi;
                    118:            short       shortLo;
                    119:            } shorts;
                    120:        struct {
                    121:            char        chHiHi;
                    122:            char        chHiLo;
                    123:            char        chLoHi;
                    124:            char        chLoLo;
                    125:            } chars;
                    126:        } STUFFU;
                    127: #endif
                    128: 
                    129: #ifdef VAX
                    130: #define SZCHAR 8
                    131: #define SZSHORT        16
                    132: #define SZINT  32
                    133: #define SZLONG 32
                    134: #define SZPOINT        32
                    135: #define SZFLOAT        32
                    136: #define SZDOUBLE       64
                    137: 
                    138: #define ALCHAR 8
                    139: #define ALSHORT        8
                    140: #define ALINT  8
                    141: #define ALLONG 8
                    142: #define ALPOINT        8
                    143: #define ALFLOAT        8
                    144: #define ALDOUBLE       8
                    145: #define ALSTRUCT       8
                    146: 
                    147: #define RTOLBYTES /* bytes are numbered from right to left */
                    148: #define RTOLBITS /* bits are numbered from right to left */
                    149: #define cbPage 512             /* # of bytes on a disk page */
                    150: 
                    151: typedef union {
                    152:        long    lng;
                    153:        float   fl;
                    154:        struct {
                    155:            short       shortLo;
                    156:            short       shortHi;
                    157:            } shorts;
                    158:        struct {
                    159:            char        chLoLo;
                    160:            char        chLoHi;
                    161:            char        chHiLo;
                    162:            char        chHiHi;
                    163:            } chars;
                    164:        } STUFFU;
                    165: #endif
                    166: 
                    167: #ifdef SUN
                    168: #define SZCHAR 8
                    169: #define SZSHORT        16
                    170: #define SZINT  32
                    171: #define SZLONG 32
                    172: #define SZPOINT        32
                    173: #define SZFLOAT        32
                    174: #define SZDOUBLE       64
                    175: 
                    176: #define ALCHAR 8
                    177: #define ALSHORT        8
                    178: #define ALINT  8
                    179: #define ALLONG 8
                    180: #define ALPOINT        8
                    181: #define ALFLOAT        8
                    182: #define ALDOUBLE       8
                    183: #define ALSTRUCT       8
                    184: 
                    185: #define EVENBYTES      /* accesses must be made on even byte boundaries */
                    186: #define LTORBYTES /* bytes are numbered from left to right */
                    187: #define LTORBITS /* bits are numbered from left to right */
                    188: #define cbPage 512             /* # of bytes on a disk page */
                    189: 
                    190: typedef union {
                    191:        long    lng;
                    192:        float   fl;
                    193:        struct {
                    194:            short       shortHi;
                    195:            short       shortLo;
                    196:            } shorts;
                    197:        struct {
                    198:            char        chHiHi;
                    199:            char        chHiLo;
                    200:            char        chLoHi;
                    201:            char        chLoLo;
                    202:            } chars;
                    203:        } STUFFU;
                    204:   /* SUN */
                    205: #endif
                    206: 
                    207: 
                    208: #define CBCHAR 1       /* I hope that this is right!!! */
                    209: #define CBSHORT        SZSHORT/SZCHAR
                    210: #define CBINT  SZINT/SZCHAR
                    211: #define CBLONG SZLONG/SZCHAR
                    212: #define CBPOINT        SZPOINT/SZCHAR
                    213: #define CBFLOAT        SZFLOAT/SZCHAR
                    214: #define CBDOUBLE       SZDOUBLE/SZCHAR
                    215: 
                    216: 
                    217: #define        U1      ((unsigned)~0)
                    218: #define shortMax (U1>>(SZINT-SZSHORT+1)) /* largest signed short integer */
                    219: #define shortMin (-shortMax-1) /* smallest signed short integer */
                    220: #define intMax (U1>>1)         /* largest signed integer */
                    221: #define intMin (-intMax-1)     /* smallest signed long integer */
                    222: #define longMax (U1>>1)                /* largest signed long */
                    223: #define longMin (-longMax-1)   /* smallest signed long */
                    224: 
                    225: #define Mask(width) (~(U1<<width))     /* generate a bunch of 1111111's */
                    226: #ifdef RTOLBITS
                    227: #define Extract(x, pos, width) ((x>>pos) & Mask(width))
                    228: #define SetBits(x, width, pos, val) {x &= ~(Mask(width)<<pos); x |= val<<pos;}
                    229: #else
                    230: #define Extract(x, pos, width) ((x>>(SZINT-pos-width)) & Mask(width))
                    231: #define SetBits(x, width, pos, val)\
                    232:        {x &= ~(Mask(width)<<(SZINT-pos-width)); x |= val<<(SZINT-pos-width);}
                    233: #endif
                    234: 
                    235: /* adrReg0 is usually the reference point in "core". It's the displacement
                    236:  * for the end of the (user+kernel) stack.
                    237:  * adrReason is the displacement in a core file header where we can find
                    238:  * the reason for the child's death (relative to adrReg0).  I know of no way to
                    239:  * determine this number other than by Divine insight, or by
                    240:  * looking at the sources for the crash program(?).
                    241:  */
                    242: #ifdef TAHOE
                    243: 
                    244: #ifndef        BSD42
                    245: #define adrReg0 (4*1024)       /* see InitAll in init.c for discussion */
                    246: #else
                    247: #define adrReg0 (6*1024)       /* The _u structure is 6k in Unix 4.2 ! */
                    248: #endif
                    249: 
                    250: #define adrReason -3*4 /* On Tahoe, HW pushes psl, pc, then the code */
                    251: #endif
                    252: 
                    253: #ifdef ONYX
                    254: #define adrReg0 ((int *)03742) /* see InitAll in init.c for discussion */
                    255: #define adrReason 03654        /* -27 */
                    256: #endif
                    257: 
                    258: #ifdef PLEXUS
                    259: #undef adrReg0
                    260: #undef adrReason
                    261: #define adrReg0 ((int *)03750) /* see InitAll in init.c for discussion */
                    262: #define adrReason 03650
                    263: #define SP R15
                    264: #endif
                    265: 
                    266: #ifdef M68000
                    267: #define adrReg0 ((int *)010000)        /* see InitAll in init.c for discussion */
                    268: #define adrReason 07764        /* -3 */
                    269: #endif
                    270: 
                    271: #ifdef VAX
                    272: #define adrReg0 ((int *)010000)        /* see InitAll in init.c for discussion */
                    273: #define adrReason 07764        /* -3 */
                    274: #endif
                    275: 
                    276: #ifndef M68000
                    277: /* these are internal names for registers, REAL offsets are in vrgOffset */
                    278: #define        u0      0
                    279: #define        u1      1
                    280: #define        u2      2
                    281: #define        u3      3
                    282: #define        u4      4
                    283: #define        u5      5
                    284: #define        u6      6
                    285: #define        u7      7
                    286: #define        u8      8
                    287: #define        u9      9
                    288: #define        u10     10
                    289: #define        u11     11
                    290: #define        u12     12
                    291: #ifndef        TAHOE
                    292: #define        u13     13
                    293: #endif
                    294: 
                    295: #ifdef ONYX
                    296: #define        u14     14
                    297: #define        u15     15
                    298: #define        usp     16
                    299: #define        upc     17
                    300: #define        ufp     18
                    301: #define        ufcw    19
                    302: #define uregMax 20
                    303: #endif
                    304: 
                    305: #ifdef VAX
                    306: #define        uap     14
                    307: #define                ufp     15
                    308: #define                usp     16
                    309: #define                ups     17
                    310: #define                upc     18
                    311: #define uregMax 19
                    312: #endif
                    313: 
                    314: #ifdef TAHOE
                    315: #define                ufp     13
                    316: #define                usp     14
                    317: #define                upc     15
                    318: #define                ups     16
                    319: #define        uregMax 17
                    320: #endif
                    321: 
                    322: #endif
                    323: 
                    324: #ifdef SUN
                    325: #define adrReg0 ((int *)013666)        /* see InitAll in init.c for discussion */
                    326: #define adrReason 013652       /* -3 */
                    327: #endif
                    328: 
                    329: #ifdef M68000
                    330: /* these are internal names for registers, REAL offsets are in vrgOffset */
                    331: #define        ud0     0
                    332: #define        ud1     1
                    333: #define        ud2     2
                    334: #define        ud3     3
                    335: #define        ud4     4
                    336: #define        ud5     5
                    337: #define        ud6     6
                    338: #define        ud7     7
                    339: #define        ua0     8
                    340: #define        ua1     9
                    341: #define        ua2     10
                    342: #define        ua3     11
                    343: #define        ua4     12
                    344: #define        ua5     13
                    345: #define        ua6     14
                    346: #define        ua7     15
                    347: #define        upc     16
                    348: #define        ups     17
                    349: #define        ufp     18
                    350: #define        usp     19
                    351: #define uregMax 20
                    352: #endif

unix.superglobalmegacorp.com

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