Annotation of researchv10no/cmd/lcc/gen2/mips/config.h, revision 1.1.1.1

1.1       root        1: /* C compiler: MIPS configuration parameters */
                      2: 
                      3: #define        IREG    0       /* a general-purpose register */
                      4: #define        FREG    1       /* a floating-point register */
                      5: 
                      6: #include "gen.h"
                      7: 
                      8: dclproto(extern Symbol argreg,(int, int, int, int));
                      9: dclproto(extern void emitargb,(Node));
                     10: dclproto(extern void emitasgnb,(Node));
                     11: dclproto(extern void addnops,(void));
                     12: extern int framesize;
                     13: extern int gnum;
                     14: extern char *nrflag;
                     15: 
                     16: #define announce(p) (bflag ? put.stackvar(p) : (unsigned)0)
                     17: #define strtod(a,b) atof(a)
                     18: dclproto(extern double atof,(char *));
                     19: 
                     20: struct emit {
                     21:        dclproto(void (*seg),(int));
                     22:        dclproto(void (*spacen),(int, char *));
                     23:        dclproto(void (*string),(char*, char*, int, char*));
                     24:        dclproto(unsigned (*emit),(unsigned, int, int, int, int));
                     25:        dclproto(void (*addr),(Symbol, Symbol, int));
                     26:        dclproto(unsigned (*def),(Symbol));
                     27:        dclproto(void (*defaddr),(Symbol));
                     28:        dclproto(void (*end),(Symbol));
                     29:        dclproto(void (*entry),(Symbol, int, int));
                     30:        dclproto(int (*offset),(int));
                     31:        dclproto(void (*symbol),(int, Symbol));
                     32:        dclproto(void (*word),(unsigned, int));
                     33: };
                     34: 
                     35: extern struct emit put;
                     36: 
                     37: #define        r_at    1
                     38: #define        r_gp    28
                     39: #define r_sp   29
                     40: 
                     41: #define ea_base(wd)    ((wd >> 21) & 0x001f)
                     42: #define ea_offset(wd)  ((wd) & 0xffff)
                     43: #define ea_addr(off,base) (assert(ea_base(off)==0), (((base&0x001f)<<21) | ea_offset(off)))
                     44: 
                     45: #define o_add_s                (((unsigned)021<<26)|(020<<21)|0)
                     46: #define o_add_d                (((unsigned)021<<26)|(021<<21)|0)
                     47: #define o_sub_s                (((unsigned)021<<26)|(020<<21)|1)
                     48: #define o_sub_d                (((unsigned)021<<26)|(021<<21)|1)
                     49: #define o_mul_s                (((unsigned)021<<26)|(020<<21)|2)
                     50: #define o_mul_d                (((unsigned)021<<26)|(021<<21)|2)
                     51: #define o_div_s                (((unsigned)021<<26)|(020<<21)|3)
                     52: #define o_div_d                (((unsigned)021<<26)|(021<<21)|3)
                     53: #define o_mov_s                (((unsigned)021<<26)|(020<<21)|6)
                     54: #define o_mov_d                (((unsigned)021<<26)|(021<<21)|6)
                     55: #define o_neg_s                (((unsigned)021<<26)|(020<<21)|7)
                     56: #define o_neg_d                (((unsigned)021<<26)|(021<<21)|7)
                     57: #define o_cvt_d_s      (((unsigned)021<<26)|(020<<21)|33)
                     58: #define o_cvt_d_w      (((unsigned)021<<26)|(024<<21)|33)
                     59: #define o_cvt_s_d      (((unsigned)021<<26)|(021<<21)|32)
                     60: #define o_cvt_w_s      (((unsigned)021<<26)|(020<<21)|36)
                     61: #define o_cvt_w_d      (((unsigned)021<<26)|(021<<21)|36)
                     62: #define o_c_eq_s       (((unsigned)021<<26)|(020<<21)|50)
                     63: #define o_c_eq_d       (((unsigned)021<<26)|(021<<21)|50)
                     64: #define o_c_le_s       (((unsigned)021<<26)|(020<<21)|62)
                     65: #define o_c_le_d       (((unsigned)021<<26)|(021<<21)|62)
                     66: #define o_c_lt_s       (((unsigned)021<<26)|(020<<21)|60)
                     67: #define o_c_lt_d       (((unsigned)021<<26)|(021<<21)|60)
                     68: #define o_mfc1_s       (((unsigned)021<<26)|(0<<21)|0) /* mfc1 */
                     69: #define o_mtc1_s       (((unsigned)021<<26)|(4<<21)|0) /* mtc1 */
                     70: #define o_mfc1_d       (((unsigned)021<<26)|(1<<21)|0) /* fake mfc1 */
                     71: #define o_mtc1_d       (((unsigned)021<<26)|(5<<21)|0) /* fake mtc1 */
                     72: #define o_cfc1         (((unsigned)021<<26)|(2<<21)|0)
                     73: #define o_ctc1         (((unsigned)021<<26)|(6<<21)|0)
                     74: #define o_l_s          ((unsigned)061<<26)             /* lwc1 */
                     75: #define o_l_d          ((unsigned)065<<26)             /* ldc1 */
                     76: #define o_s_s          ((unsigned)071<<26)             /* swc1 */
                     77: #define o_s_d          ((unsigned)075<<26)             /* sdc1 */
                     78: #define o_bc1f         (((unsigned)021<<26)|(0400<<16))
                     79: #define o_bc1t         (((unsigned)021<<26)|(0401<<16))
                     80: #define o_lui          ((unsigned)017<<26)
                     81: #define o_lb           ((unsigned)040<<26)
                     82: #define o_lbu          ((unsigned)044<<26)
                     83: #define o_lh           ((unsigned)041<<26)
                     84: #define o_lhu          ((unsigned)045<<26)
                     85: #define o_lw           ((unsigned)043<<26)
                     86: #define o_sb           ((unsigned)050<<26)
                     87: #define o_sh           ((unsigned)051<<26)
                     88: #define o_sw           ((unsigned)053<<26)
                     89: #define o_lwl          ((unsigned)042<<26)
                     90: #define o_lwr          ((unsigned)046<<26)
                     91: #define o_swl          ((unsigned)052<<26)
                     92: #define o_swr          ((unsigned)056<<26)
                     93: #define o_add          (((unsigned)0<<26)|040)
                     94: #define o_addu         (((unsigned)0<<26)|041)
                     95: #define o_addi         ((unsigned)010<<26)
                     96: #define o_addui                ((unsigned)011<<26)             /* addiu */
                     97: #define o_and          (((unsigned)0<<26)|044)
                     98: #define o_andi         ((unsigned)014<<26)
                     99: #define o_sub          (((unsigned)0<<26)|042)
                    100: #define o_subu         (((unsigned)0<<26)|043)
                    101: #define o_subui                ((unsigned)011<<26)             /* addiu */
                    102: #define o_or           (((unsigned)0<<26)|045)
                    103: #define o_ori          ((unsigned)015<<26)
                    104: #define o_xor          (((unsigned)0<<26)|046)
                    105: #define o_xori         ((unsigned)016<<26)
                    106: #define o_not          (((unsigned)0<<26)|047)         /* nor */
                    107: #define o_mul          (((unsigned)0<<26)|030)
                    108: #define o_mulu         (((unsigned)0<<26)|031)
                    109: #define o_div          (((unsigned)0<<26)|032)
                    110: #define o_divu         (((unsigned)0<<26)|033)
                    111: #define o_rem          o_div
                    112: #define o_remu         o_divu
                    113: #define o_negu         o_subu
                    114: #define o_sll          (((unsigned)0<<26)|04)          /* sllv */
                    115: #define o_slli         (((unsigned)0<<26)|0)           /* sll */
                    116: #define o_srl          (((unsigned)0<<26)|06)          /* srlv */
                    117: #define o_srli         (((unsigned)0<<26)|02)          /* srl */
                    118: #define o_sra          (((unsigned)0<<26)|07)          /* srav */
                    119: #define o_srai         (((unsigned)0<<26)|03)          /* sra */
                    120: #define        o_slt           (((unsigned)0<<26)|052)
                    121: #define o_slti         ((unsigned)012<<26)
                    122: #define        o_sltu          (((unsigned)0<<26)|053)
                    123: #define o_sltui                ((unsigned)013<<26)
                    124: #define o_beq          ((unsigned)04<<26)
                    125: #define o_bne          ((unsigned)05<<26)
                    126: #define o_bge          (((unsigned)01<<26)|(1<<16))    /* bgez */
                    127: #define o_bgt          ((unsigned)07<<26)              /* bgtz */
                    128: #define o_ble          ((unsigned)06<<26)              /* blez */
                    129: #define o_blt          (((unsigned)01<<26)|(0<<16))    /* bltz */
                    130: #define o_b            ((unsigned)02<<26)              /* j */
                    131: #define o_jal          ((unsigned)03<<26)              /* jalr */
                    132: #define o_jalr         (((unsigned)0<<26)|011)         /* jalr */
                    133: #define o_jr           (((unsigned)0<<26)|010)         /* jr */
                    134: #define o_move         o_addu
                    135: #define o_mfhi         (((unsigned)0<<26)|020)
                    136: #define o_mflo         (((unsigned)0<<26)|022)
                    137: #define o_break                (((unsigned)0<<26)|015)
                    138: #define o_syscall      (((unsigned)0<<26)|014)

unix.superglobalmegacorp.com

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