.. | .. |
---|
55 | 55 | spec3_unused_op, spec4_unused_op, slt_op, sltu_op, |
---|
56 | 56 | dadd_op, daddu_op, dsub_op, dsubu_op, |
---|
57 | 57 | tge_op, tgeu_op, tlt_op, tltu_op, |
---|
58 | | - teq_op, spec5_unused_op, tne_op, spec6_unused_op, |
---|
59 | | - dsll_op, spec7_unused_op, dsrl_op, dsra_op, |
---|
60 | | - dsll32_op, spec8_unused_op, dsrl32_op, dsra32_op |
---|
| 58 | + teq_op, seleqz_op, tne_op, selnez_op, |
---|
| 59 | + dsll_op, spec5_unused_op, dsrl_op, dsra_op, |
---|
| 60 | + dsll32_op, spec6_unused_op, dsrl32_op, dsra32_op |
---|
61 | 61 | }; |
---|
62 | 62 | |
---|
63 | 63 | /* |
---|
.. | .. |
---|
371 | 371 | mm_srl32_op = 0x040, |
---|
372 | 372 | mm_srlv32_op = 0x050, |
---|
373 | 373 | mm_sra_op = 0x080, |
---|
| 374 | + mm_srav_op = 0x090, |
---|
374 | 375 | mm_rotr_op = 0x0c0, |
---|
375 | 376 | mm_lwxs_op = 0x118, |
---|
376 | 377 | mm_addu32_op = 0x150, |
---|
.. | .. |
---|
988 | 989 | }; |
---|
989 | 990 | |
---|
990 | 991 | /* |
---|
| 992 | + * Loongson-3 overridden COP2 instruction formats (32-bit length) |
---|
| 993 | + */ |
---|
| 994 | +struct loongson3_lswc2_format { /* Loongson-3 overridden lwc2/swc2 Load/Store format */ |
---|
| 995 | + __BITFIELD_FIELD(unsigned int opcode : 6, |
---|
| 996 | + __BITFIELD_FIELD(unsigned int base : 5, |
---|
| 997 | + __BITFIELD_FIELD(unsigned int rt : 5, |
---|
| 998 | + __BITFIELD_FIELD(unsigned int fr : 1, |
---|
| 999 | + __BITFIELD_FIELD(unsigned int offset : 9, |
---|
| 1000 | + __BITFIELD_FIELD(unsigned int ls : 1, |
---|
| 1001 | + __BITFIELD_FIELD(unsigned int rq : 5, |
---|
| 1002 | + ;))))))) |
---|
| 1003 | +}; |
---|
| 1004 | + |
---|
| 1005 | +struct loongson3_lsdc2_format { /* Loongson-3 overridden ldc2/sdc2 Load/Store format */ |
---|
| 1006 | + __BITFIELD_FIELD(unsigned int opcode : 6, |
---|
| 1007 | + __BITFIELD_FIELD(unsigned int base : 5, |
---|
| 1008 | + __BITFIELD_FIELD(unsigned int rt : 5, |
---|
| 1009 | + __BITFIELD_FIELD(unsigned int index : 5, |
---|
| 1010 | + __BITFIELD_FIELD(unsigned int offset : 8, |
---|
| 1011 | + __BITFIELD_FIELD(unsigned int opcode1 : 3, |
---|
| 1012 | + ;)))))) |
---|
| 1013 | +}; |
---|
| 1014 | + |
---|
| 1015 | +struct loongson3_lscsr_format { /* Loongson-3 CPUCFG&CSR read/write format */ |
---|
| 1016 | + __BITFIELD_FIELD(unsigned int opcode : 6, |
---|
| 1017 | + __BITFIELD_FIELD(unsigned int rs : 5, |
---|
| 1018 | + __BITFIELD_FIELD(unsigned int fr : 5, |
---|
| 1019 | + __BITFIELD_FIELD(unsigned int rd : 5, |
---|
| 1020 | + __BITFIELD_FIELD(unsigned int fd : 5, |
---|
| 1021 | + __BITFIELD_FIELD(unsigned int func : 6, |
---|
| 1022 | + ;)))))) |
---|
| 1023 | +}; |
---|
| 1024 | + |
---|
| 1025 | +/* |
---|
991 | 1026 | * MIPS16e instruction formats (16-bit length) |
---|
992 | 1027 | */ |
---|
993 | 1028 | struct m16e_rr { |
---|
.. | .. |
---|
1087 | 1122 | struct mm16_rb_format mm16_rb_format; |
---|
1088 | 1123 | struct mm16_r3_format mm16_r3_format; |
---|
1089 | 1124 | struct mm16_r5_format mm16_r5_format; |
---|
| 1125 | + struct loongson3_lswc2_format loongson3_lswc2_format; |
---|
| 1126 | + struct loongson3_lsdc2_format loongson3_lsdc2_format; |
---|
| 1127 | + struct loongson3_lscsr_format loongson3_lscsr_format; |
---|
1090 | 1128 | }; |
---|
1091 | 1129 | |
---|
1092 | 1130 | union mips16e_instruction { |
---|