Annotation of 43BSDTahoe/sys/tahoealign/defs.h, revision 1.1

1.1     ! root        1: /*     defs.h  1.1     86/07/20        */
        !             2: 
        !             3: #include "../tahoe/psl.h"
        !             4: 
        !             5: /************************************************/
        !             6: /*     Basic 6/32 machine definitions          */
        !             7: /************************************************/
        !             8: 
        !             9: #define        FALSE   0
        !            10: #define        TRUE    (~FALSE)
        !            11: #define READ   0
        !            12: #define WRITE  1
        !            13: 
        !            14: /*
        !            15:  * Some floatng point stuff.
        !            16:  */
        !            17: 
        !            18: #define exp(x)         ( (x) & 0x7f800000 )
        !            19: #define reserved(x)    ( (x) < 0  && (exp(x) == 0) )
        !            20: 
        !            21: /************************************************/
        !            22: /*                                             */
        !            23: /*     Opcodes description table stuff         */
        !            24: /*                                             */
        !            25: /************************************************/
        !            26: 
        !            27: struct operand_des     {               /* Operand descriptor in great table */
        !            28:                int     add_modes;      /* Allowed addressing modes */
        !            29:                int     length;         /* Length of this data (bytes) */
        !            30: };
        !            31: 
        !            32: #define        Add     1       /* Any address except PC relative & ablsolute */
        !            33: #define        Dir     2       /* Direct register */
        !            34: #define        Imm     4       /* Immediate datum */
        !            35: #define        Lit     8       /* Short literal */
        !            36: #define        Brd     0x10    /* Branch displacement */
        !            37: #define        Pcrel   0x20    /* PC relative allowed */
        !            38: #define        Abs     0x40    /* Absolute address allowed */
        !            39: #define        SPmode  0x80    /* The stack pointer was involved , -(sp) or (sp)+ */
        !            40: #define        ADDFIELD 0xff   /* Allowed addressing modes */
        !            41: 
        !            42: #define        W       0x100   /* Access is write */
        !            43: #define R      0x200   /* Access is 'read' */
        !            44: #define        Indx    0x400   /* Indexable base address */
        !            45: #define        NOVF    0x800   /* Inhibit overflow check when writing byte/word */
        !            46: #define FLP    0x1000  /* Floating point operand */
        !            47: 
        !            48: #define        M       (R|W)   /* Access is 'modify' */
        !            49: #define PR     (Pcrel|Abs)
        !            50: #define ADDR   (PR|Add)
        !            51: #define        ADI     (ADDR|Dir|Imm|Lit)
        !            52: #define        AD      (ADDR|Dir)
        !            53: #define        MAD     (M|ADDR|Dir)
        !            54: #define        WAD     (W|ADDR|Dir)
        !            55: #define WD     (W|Dir)
        !            56: #define NWAD   (NOVF|WAD)
        !            57: #define        NMAD    (NOVF|MAD)
        !            58: #define        RADI    (R|ADI) /* Readable datum */
        !            59: #define RAD    (R|AD)  /* Modify type access for destinations */
        !            60: #define RADF   (RAD|FLP)
        !            61: #define WADF   (WAD|FLP)
        !            62: 
        !            63: 
        !            64: 
        !            65: 
        !            66: struct opcode_des      {       /* One line in the big table */
        !            67:        int     (*routine)      ();             /* Handler for this opcode */
        !            68:        struct  operand_des operand[4];         /* Up to 4 operands */
        !            69: };
        !            70: 
        !            71: /************************************************/
        !            72: /*                                             */
        !            73: /*     Operand descriptor as returned          */
        !            74: /*     by the address mode decoder             */
        !            75: /*                                             */
        !            76: /************************************************/
        !            77: 
        !            78: struct oprnd {
        !            79:        long    mode;                   /* Add, Imm, Dir or Brd */
        !            80:        long    reg_number;             /* returned for Dir mode */
        !            81:        long    address;                /* Relevant for Add or Brd */
        !            82:        long    data;
        !            83:        long    data2;                  /* Up to 8 bytes returned */
        !            84:        long    length;                 /* Length of data manipulated */
        !            85: };
        !            86: 
        !            87: /************************************************/
        !            88: /*                                             */
        !            89: /*     Some PSL macros (usefull)               */
        !            90: /*                                             */
        !            91: /************************************************/
        !            92: #define        carry           (psl & PSL_C)
        !            93: #define        negative        (psl & PSL_N)
        !            94: #define overflow       (psl & PSL_V)
        !            95: #define zero           (psl & PSL_Z)
        !            96: 
        !            97: #define carry_1                psl |= PSL_C
        !            98: #define negative_1     psl |= PSL_N
        !            99: #define overflow_1     psl |= PSL_V
        !           100: #define zero_1         psl |= PSL_Z
        !           101: 
        !           102: #define carry_0                psl &= ~PSL_C
        !           103: #define negative_0     psl &= ~PSL_N
        !           104: #define overflow_0     psl &= ~PSL_V
        !           105: #define zero_0         psl &= ~PSL_Z
        !           106: 
        !           107: 
        !           108: struct oprnd           *operand ();
        !           109: struct opcode_des      Table[];
        !           110: 
        !           111: struct double_length
        !           112: {
        !           113:        int     low;
        !           114:        int     high;
        !           115: };
        !           116: 
        !           117: typedef        struct  double_length   quadword;
        !           118: 

unix.superglobalmegacorp.com

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