• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /****************************************************************************
2  ****************************************************************************
3  ***
4  ***   This header was automatically generated from a Linux kernel header
5  ***   of the same name, to make information necessary for userspace to
6  ***   call into the kernel available to libc.  It contains only constants,
7  ***   structures, and macros generated from the original header, and thus,
8  ***   contains no copyrightable information.
9  ***
10  ***   To edit the content of this header, modify the corresponding
11  ***   source file (e.g. under external/kernel-headers/original/) then
12  ***   run bionic/libc/kernel/tools/update_all.py
13  ***
14  ***   Any manual change here will be lost the next time this script will
15  ***   be run. You've been warned!
16  ***
17  ****************************************************************************
18  ****************************************************************************/
19 #ifndef _UAPI_ASM_INST_H
20 #define _UAPI_ASM_INST_H
21 #include <asm/bitfield.h>
22 enum major_op {
23   spec_op,
24   bcond_op,
25   j_op,
26   jal_op,
27   beq_op,
28   bne_op,
29   blez_op,
30   bgtz_op,
31   addi_op,
32   pop10_op = addi_op,
33   addiu_op,
34   slti_op,
35   sltiu_op,
36   andi_op,
37   ori_op,
38   xori_op,
39   lui_op,
40   cop0_op,
41   cop1_op,
42   cop2_op,
43   cop1x_op,
44   beql_op,
45   bnel_op,
46   blezl_op,
47   bgtzl_op,
48   daddi_op,
49   pop30_op = daddi_op,
50   daddiu_op,
51   ldl_op,
52   ldr_op,
53   spec2_op,
54   jalx_op,
55   mdmx_op,
56   msa_op = mdmx_op,
57   spec3_op,
58   lb_op,
59   lh_op,
60   lwl_op,
61   lw_op,
62   lbu_op,
63   lhu_op,
64   lwr_op,
65   lwu_op,
66   sb_op,
67   sh_op,
68   swl_op,
69   sw_op,
70   sdl_op,
71   sdr_op,
72   swr_op,
73   cache_op,
74   ll_op,
75   lwc1_op,
76   lwc2_op,
77   bc6_op = lwc2_op,
78   pref_op,
79   lld_op,
80   ldc1_op,
81   ldc2_op,
82   pop66_op = ldc2_op,
83   ld_op,
84   sc_op,
85   swc1_op,
86   swc2_op,
87   balc6_op = swc2_op,
88   major_3b_op,
89   scd_op,
90   sdc1_op,
91   sdc2_op,
92   pop76_op = sdc2_op,
93   sd_op
94 };
95 enum spec_op {
96   sll_op,
97   movc_op,
98   srl_op,
99   sra_op,
100   sllv_op,
101   pmon_op,
102   srlv_op,
103   srav_op,
104   jr_op,
105   jalr_op,
106   movz_op,
107   movn_op,
108   syscall_op,
109   break_op,
110   spim_op,
111   sync_op,
112   mfhi_op,
113   mthi_op,
114   mflo_op,
115   mtlo_op,
116   dsllv_op,
117   spec2_unused_op,
118   dsrlv_op,
119   dsrav_op,
120   mult_op,
121   multu_op,
122   div_op,
123   divu_op,
124   dmult_op,
125   dmultu_op,
126   ddiv_op,
127   ddivu_op,
128   add_op,
129   addu_op,
130   sub_op,
131   subu_op,
132   and_op,
133   or_op,
134   xor_op,
135   nor_op,
136   spec3_unused_op,
137   spec4_unused_op,
138   slt_op,
139   sltu_op,
140   dadd_op,
141   daddu_op,
142   dsub_op,
143   dsubu_op,
144   tge_op,
145   tgeu_op,
146   tlt_op,
147   tltu_op,
148   teq_op,
149   spec5_unused_op,
150   tne_op,
151   spec6_unused_op,
152   dsll_op,
153   spec7_unused_op,
154   dsrl_op,
155   dsra_op,
156   dsll32_op,
157   spec8_unused_op,
158   dsrl32_op,
159   dsra32_op
160 };
161 enum spec2_op {
162   madd_op,
163   maddu_op,
164   mul_op,
165   spec2_3_unused_op,
166   msub_op,
167   msubu_op,
168   clz_op = 0x20,
169   clo_op,
170   dclz_op = 0x24,
171   dclo_op,
172   sdbpp_op = 0x3f
173 };
174 enum spec3_op {
175   ext_op,
176   dextm_op,
177   dextu_op,
178   dext_op,
179   ins_op,
180   dinsm_op,
181   dinsu_op,
182   dins_op,
183   yield_op = 0x09,
184   lx_op = 0x0a,
185   lwle_op = 0x19,
186   lwre_op = 0x1a,
187   cachee_op = 0x1b,
188   sbe_op = 0x1c,
189   she_op = 0x1d,
190   sce_op = 0x1e,
191   swe_op = 0x1f,
192   bshfl_op = 0x20,
193   swle_op = 0x21,
194   swre_op = 0x22,
195   prefe_op = 0x23,
196   dbshfl_op = 0x24,
197   cache6_op = 0x25,
198   sc6_op = 0x26,
199   scd6_op = 0x27,
200   lbue_op = 0x28,
201   lhue_op = 0x29,
202   lbe_op = 0x2c,
203   lhe_op = 0x2d,
204   lle_op = 0x2e,
205   lwe_op = 0x2f,
206   pref6_op = 0x35,
207   ll6_op = 0x36,
208   lld6_op = 0x37,
209   rdhwr_op = 0x3b
210 };
211 enum mult_op {
212   mult_mult_op = 0x0,
213   mult_mul_op = 0x2,
214   mult_muh_op = 0x3,
215 };
216 enum multu_op {
217   multu_multu_op = 0x0,
218   multu_mulu_op = 0x2,
219   multu_muhu_op = 0x3,
220 };
221 enum div_op {
222   div_div_op = 0x0,
223   div_div6_op = 0x2,
224   div_mod_op = 0x3,
225 };
226 enum divu_op {
227   divu_divu_op = 0x0,
228   divu_divu6_op = 0x2,
229   divu_modu_op = 0x3,
230 };
231 enum dmult_op {
232   dmult_dmult_op = 0x0,
233   dmult_dmul_op = 0x2,
234   dmult_dmuh_op = 0x3,
235 };
236 enum dmultu_op {
237   dmultu_dmultu_op = 0x0,
238   dmultu_dmulu_op = 0x2,
239   dmultu_dmuhu_op = 0x3,
240 };
241 enum ddiv_op {
242   ddiv_ddiv_op = 0x0,
243   ddiv_ddiv6_op = 0x2,
244   ddiv_dmod_op = 0x3,
245 };
246 enum ddivu_op {
247   ddivu_ddivu_op = 0x0,
248   ddivu_ddivu6_op = 0x2,
249   ddivu_dmodu_op = 0x3,
250 };
251 enum rt_op {
252   bltz_op,
253   bgez_op,
254   bltzl_op,
255   bgezl_op,
256   spimi_op,
257   unused_rt_op_0x05,
258   unused_rt_op_0x06,
259   unused_rt_op_0x07,
260   tgei_op,
261   tgeiu_op,
262   tlti_op,
263   tltiu_op,
264   teqi_op,
265   unused_0x0d_rt_op,
266   tnei_op,
267   unused_0x0f_rt_op,
268   bltzal_op,
269   bgezal_op,
270   bltzall_op,
271   bgezall_op,
272   rt_op_0x14,
273   rt_op_0x15,
274   rt_op_0x16,
275   rt_op_0x17,
276   rt_op_0x18,
277   rt_op_0x19,
278   rt_op_0x1a,
279   rt_op_0x1b,
280   bposge32_op,
281   rt_op_0x1d,
282   rt_op_0x1e,
283   synci_op
284 };
285 enum cop_op {
286   mfc_op = 0x00,
287   dmfc_op = 0x01,
288   cfc_op = 0x02,
289   mfhc0_op = 0x02,
290   mfhc_op = 0x03,
291   mtc_op = 0x04,
292   dmtc_op = 0x05,
293   ctc_op = 0x06,
294   mthc0_op = 0x06,
295   mthc_op = 0x07,
296   bc_op = 0x08,
297   bc1eqz_op = 0x09,
298   mfmc0_op = 0x0b,
299   bc1nez_op = 0x0d,
300   wrpgpr_op = 0x0e,
301   cop_op = 0x10,
302   copm_op = 0x18
303 };
304 enum bcop_op {
305   bcf_op,
306   bct_op,
307   bcfl_op,
308   bctl_op
309 };
310 enum cop0_coi_func {
311   tlbr_op = 0x01,
312   tlbwi_op = 0x02,
313   tlbwr_op = 0x06,
314   tlbp_op = 0x08,
315   rfe_op = 0x10,
316   eret_op = 0x18,
317   wait_op = 0x20,
318 };
319 enum cop0_com_func {
320   tlbr1_op = 0x01,
321   tlbw_op = 0x02,
322   tlbp1_op = 0x08,
323   dctr_op = 0x09,
324   dctw_op = 0x0a
325 };
326 enum cop1_fmt {
327   s_fmt,
328   d_fmt,
329   e_fmt,
330   q_fmt,
331   w_fmt,
332   l_fmt
333 };
334 enum cop1_sdw_func {
335   fadd_op = 0x00,
336   fsub_op = 0x01,
337   fmul_op = 0x02,
338   fdiv_op = 0x03,
339   fsqrt_op = 0x04,
340   fabs_op = 0x05,
341   fmov_op = 0x06,
342   fneg_op = 0x07,
343   froundl_op = 0x08,
344   ftruncl_op = 0x09,
345   fceill_op = 0x0a,
346   ffloorl_op = 0x0b,
347   fround_op = 0x0c,
348   ftrunc_op = 0x0d,
349   fceil_op = 0x0e,
350   ffloor_op = 0x0f,
351   fsel_op = 0x10,
352   fmovc_op = 0x11,
353   fmovz_op = 0x12,
354   fmovn_op = 0x13,
355   fseleqz_op = 0x14,
356   frecip_op = 0x15,
357   frsqrt_op = 0x16,
358   fselnez_op = 0x17,
359   fmaddf_op = 0x18,
360   fmsubf_op = 0x19,
361   frint_op = 0x1a,
362   fclass_op = 0x1b,
363   fmin_op = 0x1c,
364   fmina_op = 0x1d,
365   fmax_op = 0x1e,
366   fmaxa_op = 0x1f,
367   fcvts_op = 0x20,
368   fcvtd_op = 0x21,
369   fcvte_op = 0x22,
370   fcvtw_op = 0x24,
371   fcvtl_op = 0x25,
372   fcmp_op = 0x30
373 };
374 enum cop1x_func {
375   lwxc1_op = 0x00,
376   ldxc1_op = 0x01,
377   swxc1_op = 0x08,
378   sdxc1_op = 0x09,
379   pfetch_op = 0x0f,
380   madd_s_op = 0x20,
381   madd_d_op = 0x21,
382   madd_e_op = 0x22,
383   msub_s_op = 0x28,
384   msub_d_op = 0x29,
385   msub_e_op = 0x2a,
386   nmadd_s_op = 0x30,
387   nmadd_d_op = 0x31,
388   nmadd_e_op = 0x32,
389   nmsub_s_op = 0x38,
390   nmsub_d_op = 0x39,
391   nmsub_e_op = 0x3a
392 };
393 enum mad_func {
394   madd_fp_op = 0x08,
395   msub_fp_op = 0x0a,
396   nmadd_fp_op = 0x0c,
397   nmsub_fp_op = 0x0e
398 };
399 enum ptw_func {
400   lwdir_op = 0x00,
401   lwpte_op = 0x01,
402   lddir_op = 0x02,
403   ldpte_op = 0x03,
404 };
405 enum lx_func {
406   lwx_op = 0x00,
407   lhx_op = 0x04,
408   lbux_op = 0x06,
409   ldx_op = 0x08,
410   lwux_op = 0x10,
411   lhux_op = 0x14,
412   lbx_op = 0x16,
413 };
414 enum bshfl_func {
415   wsbh_op = 0x2,
416   dshd_op = 0x5,
417   seb_op = 0x10,
418   seh_op = 0x18,
419 };
420 enum msa_func {
421   msa_elm_op = 0x19,
422 };
423 enum msa_elm {
424   msa_ctc_op = 0x3e,
425   msa_cfc_op = 0x7e,
426 };
427 enum msa_mi10_func {
428   msa_ld_op = 8,
429   msa_st_op = 9,
430 };
431 enum msa_2b_fmt {
432   msa_fmt_b = 0,
433   msa_fmt_h = 1,
434   msa_fmt_w = 2,
435   msa_fmt_d = 3,
436 };
437 enum mm_major_op {
438   mm_pool32a_op,
439   mm_pool16a_op,
440   mm_lbu16_op,
441   mm_move16_op,
442   mm_addi32_op,
443   mm_lbu32_op,
444   mm_sb32_op,
445   mm_lb32_op,
446   mm_pool32b_op,
447   mm_pool16b_op,
448   mm_lhu16_op,
449   mm_andi16_op,
450   mm_addiu32_op,
451   mm_lhu32_op,
452   mm_sh32_op,
453   mm_lh32_op,
454   mm_pool32i_op,
455   mm_pool16c_op,
456   mm_lwsp16_op,
457   mm_pool16d_op,
458   mm_ori32_op,
459   mm_pool32f_op,
460   mm_pool32s_op,
461   mm_reserved2_op,
462   mm_pool32c_op,
463   mm_lwgp16_op,
464   mm_lw16_op,
465   mm_pool16e_op,
466   mm_xori32_op,
467   mm_jals32_op,
468   mm_addiupc_op,
469   mm_reserved3_op,
470   mm_reserved4_op,
471   mm_pool16f_op,
472   mm_sb16_op,
473   mm_beqz16_op,
474   mm_slti32_op,
475   mm_beq32_op,
476   mm_swc132_op,
477   mm_lwc132_op,
478   mm_reserved5_op,
479   mm_reserved6_op,
480   mm_sh16_op,
481   mm_bnez16_op,
482   mm_sltiu32_op,
483   mm_bne32_op,
484   mm_sdc132_op,
485   mm_ldc132_op,
486   mm_reserved7_op,
487   mm_reserved8_op,
488   mm_swsp16_op,
489   mm_b16_op,
490   mm_andi32_op,
491   mm_j32_op,
492   mm_sd32_op,
493   mm_ld32_op,
494   mm_reserved11_op,
495   mm_reserved12_op,
496   mm_sw16_op,
497   mm_li16_op,
498   mm_jalx32_op,
499   mm_jal32_op,
500   mm_sw32_op,
501   mm_lw32_op,
502 };
503 enum mm_32i_minor_op {
504   mm_bltz_op,
505   mm_bltzal_op,
506   mm_bgez_op,
507   mm_bgezal_op,
508   mm_blez_op,
509   mm_bnezc_op,
510   mm_bgtz_op,
511   mm_beqzc_op,
512   mm_tlti_op,
513   mm_tgei_op,
514   mm_tltiu_op,
515   mm_tgeiu_op,
516   mm_tnei_op,
517   mm_lui_op,
518   mm_teqi_op,
519   mm_reserved13_op,
520   mm_synci_op,
521   mm_bltzals_op,
522   mm_reserved14_op,
523   mm_bgezals_op,
524   mm_bc2f_op,
525   mm_bc2t_op,
526   mm_reserved15_op,
527   mm_reserved16_op,
528   mm_reserved17_op,
529   mm_reserved18_op,
530   mm_bposge64_op,
531   mm_bposge32_op,
532   mm_bc1f_op,
533   mm_bc1t_op,
534   mm_reserved19_op,
535   mm_reserved20_op,
536   mm_bc1any2f_op,
537   mm_bc1any2t_op,
538   mm_bc1any4f_op,
539   mm_bc1any4t_op,
540 };
541 enum mm_32a_minor_op {
542   mm_sll32_op = 0x000,
543   mm_ins_op = 0x00c,
544   mm_sllv32_op = 0x010,
545   mm_ext_op = 0x02c,
546   mm_pool32axf_op = 0x03c,
547   mm_srl32_op = 0x040,
548   mm_sra_op = 0x080,
549   mm_srlv32_op = 0x090,
550   mm_rotr_op = 0x0c0,
551   mm_lwxs_op = 0x118,
552   mm_addu32_op = 0x150,
553   mm_subu32_op = 0x1d0,
554   mm_wsbh_op = 0x1ec,
555   mm_mul_op = 0x210,
556   mm_and_op = 0x250,
557   mm_or32_op = 0x290,
558   mm_xor32_op = 0x310,
559   mm_slt_op = 0x350,
560   mm_sltu_op = 0x390,
561 };
562 enum mm_32b_func {
563   mm_lwc2_func = 0x0,
564   mm_lwp_func = 0x1,
565   mm_ldc2_func = 0x2,
566   mm_ldp_func = 0x4,
567   mm_lwm32_func = 0x5,
568   mm_cache_func = 0x6,
569   mm_ldm_func = 0x7,
570   mm_swc2_func = 0x8,
571   mm_swp_func = 0x9,
572   mm_sdc2_func = 0xa,
573   mm_sdp_func = 0xc,
574   mm_swm32_func = 0xd,
575   mm_sdm_func = 0xf,
576 };
577 enum mm_32c_func {
578   mm_pref_func = 0x2,
579   mm_ll_func = 0x3,
580   mm_swr_func = 0x9,
581   mm_sc_func = 0xb,
582   mm_lwu_func = 0xe,
583 };
584 enum mm_32axf_minor_op {
585   mm_mfc0_op = 0x003,
586   mm_mtc0_op = 0x00b,
587   mm_tlbp_op = 0x00d,
588   mm_mfhi32_op = 0x035,
589   mm_jalr_op = 0x03c,
590   mm_tlbr_op = 0x04d,
591   mm_mflo32_op = 0x075,
592   mm_jalrhb_op = 0x07c,
593   mm_tlbwi_op = 0x08d,
594   mm_mthi32_op = 0x0b5,
595   mm_tlbwr_op = 0x0cd,
596   mm_mtlo32_op = 0x0f5,
597   mm_di_op = 0x11d,
598   mm_jalrs_op = 0x13c,
599   mm_jalrshb_op = 0x17c,
600   mm_sync_op = 0x1ad,
601   mm_syscall_op = 0x22d,
602   mm_wait_op = 0x24d,
603   mm_eret_op = 0x3cd,
604   mm_divu_op = 0x5dc,
605 };
606 enum mm_32f_minor_op {
607   mm_32f_00_op = 0x00,
608   mm_32f_01_op = 0x01,
609   mm_32f_02_op = 0x02,
610   mm_32f_10_op = 0x08,
611   mm_32f_11_op = 0x09,
612   mm_32f_12_op = 0x0a,
613   mm_32f_20_op = 0x10,
614   mm_32f_30_op = 0x18,
615   mm_32f_40_op = 0x20,
616   mm_32f_41_op = 0x21,
617   mm_32f_42_op = 0x22,
618   mm_32f_50_op = 0x28,
619   mm_32f_51_op = 0x29,
620   mm_32f_52_op = 0x2a,
621   mm_32f_60_op = 0x30,
622   mm_32f_70_op = 0x38,
623   mm_32f_73_op = 0x3b,
624   mm_32f_74_op = 0x3c,
625 };
626 enum mm_32f_10_minor_op {
627   mm_lwxc1_op = 0x1,
628   mm_swxc1_op,
629   mm_ldxc1_op,
630   mm_sdxc1_op,
631   mm_luxc1_op,
632   mm_suxc1_op,
633 };
634 enum mm_32f_func {
635   mm_lwxc1_func = 0x048,
636   mm_swxc1_func = 0x088,
637   mm_ldxc1_func = 0x0c8,
638   mm_sdxc1_func = 0x108,
639 };
640 enum mm_32f_40_minor_op {
641   mm_fmovf_op,
642   mm_fmovt_op,
643 };
644 enum mm_32f_60_minor_op {
645   mm_fadd_op,
646   mm_fsub_op,
647   mm_fmul_op,
648   mm_fdiv_op,
649 };
650 enum mm_32f_70_minor_op {
651   mm_fmovn_op,
652   mm_fmovz_op,
653 };
654 enum mm_32f_73_minor_op {
655   mm_fmov0_op = 0x01,
656   mm_fcvtl_op = 0x04,
657   mm_movf0_op = 0x05,
658   mm_frsqrt_op = 0x08,
659   mm_ffloorl_op = 0x0c,
660   mm_fabs0_op = 0x0d,
661   mm_fcvtw_op = 0x24,
662   mm_movt0_op = 0x25,
663   mm_fsqrt_op = 0x28,
664   mm_ffloorw_op = 0x2c,
665   mm_fneg0_op = 0x2d,
666   mm_cfc1_op = 0x40,
667   mm_frecip_op = 0x48,
668   mm_fceill_op = 0x4c,
669   mm_fcvtd0_op = 0x4d,
670   mm_ctc1_op = 0x60,
671   mm_fceilw_op = 0x6c,
672   mm_fcvts0_op = 0x6d,
673   mm_mfc1_op = 0x80,
674   mm_fmov1_op = 0x81,
675   mm_movf1_op = 0x85,
676   mm_ftruncl_op = 0x8c,
677   mm_fabs1_op = 0x8d,
678   mm_mtc1_op = 0xa0,
679   mm_movt1_op = 0xa5,
680   mm_ftruncw_op = 0xac,
681   mm_fneg1_op = 0xad,
682   mm_mfhc1_op = 0xc0,
683   mm_froundl_op = 0xcc,
684   mm_fcvtd1_op = 0xcd,
685   mm_mthc1_op = 0xe0,
686   mm_froundw_op = 0xec,
687   mm_fcvts1_op = 0xed,
688 };
689 enum mm_32s_minor_op {
690   mm_32s_elm_op = 0x16,
691 };
692 enum mm_16c_minor_op {
693   mm_lwm16_op = 0x04,
694   mm_swm16_op = 0x05,
695   mm_jr16_op = 0x0c,
696   mm_jrc_op = 0x0d,
697   mm_jalr16_op = 0x0e,
698   mm_jalrs16_op = 0x0f,
699   mm_jraddiusp_op = 0x18,
700 };
701 enum mm_16d_minor_op {
702   mm_addius5_func,
703   mm_addiusp_func,
704 };
705 enum MIPS16e_ops {
706   MIPS16e_jal_op = 003,
707   MIPS16e_ld_op = 007,
708   MIPS16e_i8_op = 014,
709   MIPS16e_sd_op = 017,
710   MIPS16e_lb_op = 020,
711   MIPS16e_lh_op = 021,
712   MIPS16e_lwsp_op = 022,
713   MIPS16e_lw_op = 023,
714   MIPS16e_lbu_op = 024,
715   MIPS16e_lhu_op = 025,
716   MIPS16e_lwpc_op = 026,
717   MIPS16e_lwu_op = 027,
718   MIPS16e_sb_op = 030,
719   MIPS16e_sh_op = 031,
720   MIPS16e_swsp_op = 032,
721   MIPS16e_sw_op = 033,
722   MIPS16e_rr_op = 035,
723   MIPS16e_extend_op = 036,
724   MIPS16e_i64_op = 037,
725 };
726 enum MIPS16e_i64_func {
727   MIPS16e_ldsp_func,
728   MIPS16e_sdsp_func,
729   MIPS16e_sdrasp_func,
730   MIPS16e_dadjsp_func,
731   MIPS16e_ldpc_func,
732 };
733 enum MIPS16e_rr_func {
734   MIPS16e_jr_func,
735 };
736 enum MIPS6e_i8_func {
737   MIPS16e_swrasp_func = 02,
738 };
739 #define MM_NOP16 0x0c00
740 struct j_format {
741   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int target : 26,;
742  ))
743 };
744 struct i_format {
745   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(signed int simmediate : 16,;
746  ))))
747 };
748 struct u_format {
749   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int uimmediate : 16,;
750  ))))
751 };
752 struct c_format {
753   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int c_op : 3, __BITFIELD_FIELD(unsigned int cache : 2, __BITFIELD_FIELD(unsigned int simmediate : 16,;
754  )))))
755 };
756 struct r_format {
757   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int re : 5, __BITFIELD_FIELD(unsigned int func : 6,;
758  ))))))
759 };
760 struct c0r_format {
761   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int z : 8, __BITFIELD_FIELD(unsigned int sel : 3,;
762  ))))))
763 };
764 struct mfmc0_format {
765   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int re : 5, __BITFIELD_FIELD(unsigned int sc : 1, __BITFIELD_FIELD(unsigned int : 2, __BITFIELD_FIELD(unsigned int sel : 3,;
766  ))))))))
767 };
768 struct co_format {
769   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int co : 1, __BITFIELD_FIELD(unsigned int code : 19, __BITFIELD_FIELD(unsigned int func : 6,;
770  ))))
771 };
772 struct p_format {
773   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int re : 5, __BITFIELD_FIELD(unsigned int func : 6,;
774  ))))))
775 };
776 struct f_format {
777   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int : 1, __BITFIELD_FIELD(unsigned int fmt : 4, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int re : 5, __BITFIELD_FIELD(unsigned int func : 6,;
778  )))))))
779 };
780 struct ma_format {
781   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int fr : 5, __BITFIELD_FIELD(unsigned int ft : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int func : 4, __BITFIELD_FIELD(unsigned int fmt : 2,;
782  )))))))
783 };
784 struct b_format {
785   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int code : 20, __BITFIELD_FIELD(unsigned int func : 6,;
786  )))
787 };
788 struct ps_format {
789   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int ft : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int func : 6,;
790  ))))))
791 };
792 struct v_format {
793   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int sel : 4, __BITFIELD_FIELD(unsigned int fmt : 1, __BITFIELD_FIELD(unsigned int vt : 5, __BITFIELD_FIELD(unsigned int vs : 5, __BITFIELD_FIELD(unsigned int vd : 5, __BITFIELD_FIELD(unsigned int func : 6,;
794  )))))))
795 };
796 struct msa_mi10_format {
797   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(signed int s10 : 10, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int wd : 5, __BITFIELD_FIELD(unsigned int func : 4, __BITFIELD_FIELD(unsigned int df : 2,;
798  ))))))
799 };
800 struct spec3_format {
801   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(signed int simmediate : 9, __BITFIELD_FIELD(unsigned int func : 7,;
802  )))))
803 };
804 struct fb_format {
805   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int bc : 5, __BITFIELD_FIELD(unsigned int cc : 3, __BITFIELD_FIELD(unsigned int flag : 2, __BITFIELD_FIELD(signed int simmediate : 16,;
806  )))))
807 };
808 struct fp0_format {
809   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int fmt : 5, __BITFIELD_FIELD(unsigned int ft : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int func : 6,;
810  ))))))
811 };
812 struct mm_fp0_format {
813   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int ft : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int fmt : 3, __BITFIELD_FIELD(unsigned int op : 2, __BITFIELD_FIELD(unsigned int func : 6,;
814  )))))))
815 };
816 struct fp1_format {
817   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int op : 5, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int func : 6,;
818  ))))))
819 };
820 struct mm_fp1_format {
821   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fmt : 2, __BITFIELD_FIELD(unsigned int op : 8, __BITFIELD_FIELD(unsigned int func : 6,;
822  ))))))
823 };
824 struct mm_fp2_format {
825   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int cc : 3, __BITFIELD_FIELD(unsigned int zero : 2, __BITFIELD_FIELD(unsigned int fmt : 2, __BITFIELD_FIELD(unsigned int op : 3, __BITFIELD_FIELD(unsigned int func : 6,;
826  ))))))))
827 };
828 struct mm_fp3_format {
829   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fmt : 3, __BITFIELD_FIELD(unsigned int op : 7, __BITFIELD_FIELD(unsigned int func : 6,;
830  ))))))
831 };
832 struct mm_fp4_format {
833   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int cc : 3, __BITFIELD_FIELD(unsigned int fmt : 3, __BITFIELD_FIELD(unsigned int cond : 4, __BITFIELD_FIELD(unsigned int func : 6,;
834  )))))))
835 };
836 struct mm_fp5_format {
837   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int index : 5, __BITFIELD_FIELD(unsigned int base : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int op : 5, __BITFIELD_FIELD(unsigned int func : 6,;
838  ))))))
839 };
840 struct fp6_format {
841   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int fr : 5, __BITFIELD_FIELD(unsigned int ft : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int func : 6,;
842  ))))))
843 };
844 struct mm_fp6_format {
845   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int ft : 5, __BITFIELD_FIELD(unsigned int fs : 5, __BITFIELD_FIELD(unsigned int fd : 5, __BITFIELD_FIELD(unsigned int fr : 5, __BITFIELD_FIELD(unsigned int func : 6,;
846  ))))))
847 };
848 struct mm_i_format {
849   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(unsigned int rs : 5, __BITFIELD_FIELD(signed int simmediate : 16,;
850  ))))
851 };
852 struct mm_m_format {
853   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int base : 5, __BITFIELD_FIELD(unsigned int func : 4, __BITFIELD_FIELD(signed int simmediate : 12,;
854  )))))
855 };
856 struct mm_x_format {
857   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int index : 5, __BITFIELD_FIELD(unsigned int base : 5, __BITFIELD_FIELD(unsigned int rd : 5, __BITFIELD_FIELD(unsigned int func : 11,;
858  )))))
859 };
860 struct mm_a_format {
861   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 3, __BITFIELD_FIELD(signed int simmediate : 23,;
862  )))
863 };
864 struct mm_b0_format {
865   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(signed int simmediate : 10, __BITFIELD_FIELD(unsigned int : 16,;
866  )))
867 };
868 struct mm_b1_format {
869   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rs : 3, __BITFIELD_FIELD(signed int simmediate : 7, __BITFIELD_FIELD(unsigned int : 16,;
870  ))))
871 };
872 struct mm16_m_format {
873   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int func : 4, __BITFIELD_FIELD(unsigned int rlist : 2, __BITFIELD_FIELD(unsigned int imm : 4, __BITFIELD_FIELD(unsigned int : 16,;
874  )))))
875 };
876 struct mm16_rb_format {
877   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 3, __BITFIELD_FIELD(unsigned int base : 3, __BITFIELD_FIELD(signed int simmediate : 4, __BITFIELD_FIELD(unsigned int : 16,;
878  )))))
879 };
880 struct mm16_r3_format {
881   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 3, __BITFIELD_FIELD(signed int simmediate : 7, __BITFIELD_FIELD(unsigned int : 16,;
882  ))))
883 };
884 struct mm16_r5_format {
885   __BITFIELD_FIELD(unsigned int opcode : 6, __BITFIELD_FIELD(unsigned int rt : 5, __BITFIELD_FIELD(signed int simmediate : 5, __BITFIELD_FIELD(unsigned int : 16,;
886  ))))
887 };
888 struct m16e_rr {
889   __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int rx : 3, __BITFIELD_FIELD(unsigned int nd : 1, __BITFIELD_FIELD(unsigned int l : 1, __BITFIELD_FIELD(unsigned int ra : 1, __BITFIELD_FIELD(unsigned int func : 5,;
890  ))))))
891 };
892 struct m16e_jal {
893   __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int x : 1, __BITFIELD_FIELD(unsigned int imm20_16 : 5, __BITFIELD_FIELD(signed int imm25_21 : 5,;
894  ))))
895 };
896 struct m16e_i64 {
897   __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int func : 3, __BITFIELD_FIELD(unsigned int imm : 8,;
898  )))
899 };
900 struct m16e_ri64 {
901   __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int func : 3, __BITFIELD_FIELD(unsigned int ry : 3, __BITFIELD_FIELD(unsigned int imm : 5,;
902  ))))
903 };
904 struct m16e_ri {
905   __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int rx : 3, __BITFIELD_FIELD(unsigned int imm : 8,;
906  )))
907 };
908 struct m16e_rri {
909   __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int rx : 3, __BITFIELD_FIELD(unsigned int ry : 3, __BITFIELD_FIELD(unsigned int imm : 5,;
910  ))))
911 };
912 struct m16e_i8 {
913   __BITFIELD_FIELD(unsigned int opcode : 5, __BITFIELD_FIELD(unsigned int func : 3, __BITFIELD_FIELD(unsigned int imm : 8,;
914  )))
915 };
916 union mips_instruction {
917   unsigned int word;
918   unsigned short halfword[2];
919   unsigned char byte[4];
920   struct j_format j_format;
921   struct i_format i_format;
922   struct u_format u_format;
923   struct c_format c_format;
924   struct r_format r_format;
925   struct c0r_format c0r_format;
926   struct mfmc0_format mfmc0_format;
927   struct co_format co_format;
928   struct p_format p_format;
929   struct f_format f_format;
930   struct ma_format ma_format;
931   struct msa_mi10_format msa_mi10_format;
932   struct b_format b_format;
933   struct ps_format ps_format;
934   struct v_format v_format;
935   struct spec3_format spec3_format;
936   struct fb_format fb_format;
937   struct fp0_format fp0_format;
938   struct mm_fp0_format mm_fp0_format;
939   struct fp1_format fp1_format;
940   struct mm_fp1_format mm_fp1_format;
941   struct mm_fp2_format mm_fp2_format;
942   struct mm_fp3_format mm_fp3_format;
943   struct mm_fp4_format mm_fp4_format;
944   struct mm_fp5_format mm_fp5_format;
945   struct fp6_format fp6_format;
946   struct mm_fp6_format mm_fp6_format;
947   struct mm_i_format mm_i_format;
948   struct mm_m_format mm_m_format;
949   struct mm_x_format mm_x_format;
950   struct mm_a_format mm_a_format;
951   struct mm_b0_format mm_b0_format;
952   struct mm_b1_format mm_b1_format;
953   struct mm16_m_format mm16_m_format;
954   struct mm16_rb_format mm16_rb_format;
955   struct mm16_r3_format mm16_r3_format;
956   struct mm16_r5_format mm16_r5_format;
957 };
958 union mips16e_instruction {
959   unsigned int full : 16;
960   struct m16e_rr rr;
961   struct m16e_jal jal;
962   struct m16e_i64 i64;
963   struct m16e_ri64 ri64;
964   struct m16e_ri ri;
965   struct m16e_rri rri;
966   struct m16e_i8 i8;
967 };
968 #endif
969