Home | History | Annotate | Line # | Download | only in opcode
      1   1.1  christos /* bfin.h -- Header file for ADI Blackfin opcode table
      2  1.10  christos    Copyright (C) 2005-2025 Free Software Foundation, Inc.
      3   1.1  christos 
      4   1.1  christos    This file is part of GDB, GAS, and the GNU binutils.
      5   1.1  christos 
      6   1.1  christos    GDB, GAS, and the GNU binutils are free software; you can redistribute
      7   1.1  christos    them and/or modify them under the terms of the GNU General Public
      8   1.1  christos    License as published by the Free Software Foundation; either version 3,
      9   1.1  christos    or (at your option) any later version.
     10   1.1  christos 
     11   1.1  christos    GDB, GAS, and the GNU binutils are distributed in the hope that they
     12   1.1  christos    will be useful, but WITHOUT ANY WARRANTY; without even the implied
     13   1.1  christos    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
     14   1.1  christos    the GNU General Public License for more details.
     15   1.1  christos 
     16   1.1  christos    You should have received a copy of the GNU General Public License
     17   1.1  christos    along with this file; see the file COPYING3.  If not, write to the Free
     18   1.1  christos    Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
     19   1.1  christos    MA 02110-1301, USA.  */
     20   1.1  christos 
     21   1.1  christos #ifndef OPCODE_BFIN_H
     22   1.1  christos #define OPCODE_BFIN_H
     23   1.1  christos 
     24   1.1  christos /* Common to all DSP32 instructions.  */
     25   1.1  christos #define BIT_MULTI_INS 0x0800
     26   1.1  christos 
     27   1.1  christos /* This just sets the multi instruction bit of a DSP32 instruction.  */
     28   1.1  christos #define SET_MULTI_INSTRUCTION_BIT(x) x->value |=  BIT_MULTI_INS;
     29   1.1  christos 
     30   1.1  christos 
     31   1.1  christos /* DSP instructions (32 bit) */
     32   1.1  christos 
     33   1.1  christos /* mmod field.  */
     34   1.1  christos #define M_S2RND 1
     35   1.1  christos #define M_T     2
     36   1.1  christos #define M_W32   3
     37   1.1  christos #define M_FU    4
     38   1.1  christos #define M_TFU   6
     39   1.1  christos #define M_IS    8
     40   1.1  christos #define M_ISS2  9
     41   1.1  christos #define M_IH    11
     42   1.1  christos #define M_IU    12
     43   1.1  christos 
     44   1.1  christos static inline int is_macmod_pmove (int x)
     45   1.1  christos {
     46   1.1  christos   return (x == 0) || (x == M_IS) || (x == M_FU) || (x == M_S2RND)
     47   1.1  christos          || (x == M_ISS2) || (x == M_IU);
     48   1.1  christos }
     49   1.1  christos 
     50   1.1  christos static inline int is_macmod_hmove (int x)
     51   1.1  christos {
     52   1.1  christos   return (x == 0) || (x == M_IS) || (x == M_FU) || (x == M_IU) || (x == M_T)
     53   1.1  christos          || (x == M_TFU) || (x == M_S2RND) || (x == M_ISS2) || (x == M_IH);
     54   1.1  christos }
     55   1.1  christos 
     56   1.1  christos static inline int is_macmod_signed (int x)
     57   1.1  christos {
     58   1.1  christos   return (x == 0) || (x == M_IS) || (x == M_T) || (x == M_S2RND)
     59   1.1  christos          || (x == M_ISS2) || (x == M_IH) || (x == M_W32);
     60   1.1  christos }
     61   1.1  christos 
     62   1.1  christos /*   dsp32mac
     63   1.1  christos +----+----+---+---|---+----+----+---|---+---+---+---|---+---+---+---+
     64   1.1  christos | 1  | 1  | 0 | 0 |.M.| 0  | 0  |.mmod..........|.MM|.P.|.w1|.op1...|
     65   1.1  christos |.h01|.h11|.w0|.op0...|.h00|.h10|.dst.......|.src0......|.src1......|
     66   1.1  christos +----+----+---+---|---+----+----+---|---+---+---+---|---+---+---+---+
     67   1.1  christos */
     68   1.1  christos 
     69   1.1  christos typedef struct
     70   1.1  christos {
     71   1.1  christos   unsigned long opcode;
     72   1.1  christos   int bits_src1;
     73   1.1  christos   int mask_src1;
     74   1.1  christos   int bits_src0;
     75   1.1  christos   int mask_src0;
     76   1.1  christos   int bits_dst;
     77   1.1  christos   int mask_dst;
     78   1.1  christos   int bits_h10;
     79   1.1  christos   int mask_h10;
     80   1.1  christos   int bits_h00;
     81   1.1  christos   int mask_h00;
     82   1.1  christos   int bits_op0;
     83   1.1  christos   int mask_op0;
     84   1.1  christos   int bits_w0;
     85   1.1  christos   int mask_w0;
     86   1.1  christos   int bits_h11;
     87   1.1  christos   int mask_h11;
     88   1.1  christos   int bits_h01;
     89   1.1  christos   int mask_h01;
     90   1.1  christos   int bits_op1;
     91   1.1  christos   int mask_op1;
     92   1.1  christos   int bits_w1;
     93   1.1  christos   int mask_w1;
     94   1.1  christos   int bits_P;
     95   1.1  christos   int mask_P;
     96   1.1  christos   int bits_MM;
     97   1.1  christos   int mask_MM;
     98   1.1  christos   int bits_mmod;
     99   1.1  christos   int mask_mmod;
    100   1.1  christos   int bits_code2;
    101   1.1  christos   int mask_code2;
    102   1.1  christos   int bits_M;
    103   1.1  christos   int mask_M;
    104   1.1  christos   int bits_code;
    105   1.1  christos   int mask_code;
    106   1.1  christos } DSP32Mac;
    107   1.1  christos 
    108   1.1  christos #define DSP32Mac_opcode			0xc0000000
    109   1.1  christos #define DSP32Mac_src1_bits		0
    110   1.1  christos #define DSP32Mac_src1_mask		0x7
    111   1.1  christos #define DSP32Mac_src0_bits		3
    112   1.1  christos #define DSP32Mac_src0_mask		0x7
    113   1.1  christos #define DSP32Mac_dst_bits		6
    114   1.1  christos #define DSP32Mac_dst_mask		0x7
    115   1.1  christos #define DSP32Mac_h10_bits		9
    116   1.1  christos #define DSP32Mac_h10_mask		0x1
    117   1.1  christos #define DSP32Mac_h00_bits		10
    118   1.1  christos #define DSP32Mac_h00_mask		0x1
    119   1.1  christos #define DSP32Mac_op0_bits		11
    120   1.1  christos #define DSP32Mac_op0_mask		0x3
    121   1.1  christos #define DSP32Mac_w0_bits		13
    122   1.1  christos #define DSP32Mac_w0_mask		0x1
    123   1.1  christos #define DSP32Mac_h11_bits		14
    124   1.1  christos #define DSP32Mac_h11_mask		0x1
    125   1.1  christos #define DSP32Mac_h01_bits		15
    126   1.1  christos #define DSP32Mac_h01_mask		0x1
    127   1.1  christos #define DSP32Mac_op1_bits		16
    128   1.1  christos #define DSP32Mac_op1_mask		0x3
    129   1.1  christos #define DSP32Mac_w1_bits		18
    130   1.1  christos #define DSP32Mac_w1_mask		0x1
    131   1.1  christos #define DSP32Mac_p_bits			19
    132   1.1  christos #define DSP32Mac_p_mask			0x1
    133   1.1  christos #define DSP32Mac_MM_bits		20
    134   1.1  christos #define DSP32Mac_MM_mask		0x1
    135   1.1  christos #define DSP32Mac_mmod_bits		21
    136   1.1  christos #define DSP32Mac_mmod_mask		0xf
    137   1.1  christos #define DSP32Mac_code2_bits		25
    138   1.1  christos #define DSP32Mac_code2_mask		0x3
    139   1.1  christos #define DSP32Mac_M_bits			27
    140   1.1  christos #define DSP32Mac_M_mask			0x1
    141   1.1  christos #define DSP32Mac_code_bits		28
    142   1.1  christos #define DSP32Mac_code_mask		0xf
    143   1.1  christos 
    144   1.1  christos #define init_DSP32Mac				\
    145   1.1  christos {						\
    146   1.1  christos   DSP32Mac_opcode,				\
    147   1.1  christos   DSP32Mac_src1_bits,	DSP32Mac_src1_mask,	\
    148   1.1  christos   DSP32Mac_src0_bits,	DSP32Mac_src0_mask,	\
    149   1.1  christos   DSP32Mac_dst_bits,	DSP32Mac_dst_mask,	\
    150   1.1  christos   DSP32Mac_h10_bits,	DSP32Mac_h10_mask,	\
    151   1.1  christos   DSP32Mac_h00_bits,	DSP32Mac_h00_mask,	\
    152   1.1  christos   DSP32Mac_op0_bits,	DSP32Mac_op0_mask,	\
    153   1.1  christos   DSP32Mac_w0_bits,	DSP32Mac_w0_mask,	\
    154   1.1  christos   DSP32Mac_h11_bits,	DSP32Mac_h11_mask,	\
    155   1.1  christos   DSP32Mac_h01_bits,	DSP32Mac_h01_mask,	\
    156   1.1  christos   DSP32Mac_op1_bits,	DSP32Mac_op1_mask,	\
    157   1.1  christos   DSP32Mac_w1_bits,	DSP32Mac_w1_mask,	\
    158   1.1  christos   DSP32Mac_p_bits,	DSP32Mac_p_mask,	\
    159   1.1  christos   DSP32Mac_MM_bits,	DSP32Mac_MM_mask,	\
    160   1.1  christos   DSP32Mac_mmod_bits,	DSP32Mac_mmod_mask,	\
    161   1.1  christos   DSP32Mac_code2_bits,	DSP32Mac_code2_mask,	\
    162   1.1  christos   DSP32Mac_M_bits,	DSP32Mac_M_mask,	\
    163   1.1  christos   DSP32Mac_code_bits,	DSP32Mac_code_mask	\
    164   1.1  christos };
    165   1.1  christos 
    166   1.1  christos /*  dsp32mult
    167   1.1  christos +----+----+---+---|---+----+----+---|---+---+---+---|---+---+---+---+
    168   1.1  christos | 1  | 1  | 0 | 0 |.M.| 0  | 1  |.mmod..........|.MM|.P.|.w1|.op1...|
    169   1.1  christos |.h01|.h11|.w0|.op0...|.h00|.h10|.dst.......|.src0......|.src1......|
    170   1.1  christos +----+----+---+---|---+----+----+---|---+---+---+---|---+---+---+---+
    171   1.1  christos */
    172   1.1  christos 
    173   1.1  christos typedef DSP32Mac DSP32Mult;
    174   1.1  christos #define DSP32Mult_opcode 	0xc2000000
    175   1.1  christos 
    176   1.1  christos #define init_DSP32Mult				\
    177   1.1  christos {						\
    178   1.1  christos   DSP32Mult_opcode,				\
    179   1.1  christos   DSP32Mac_src1_bits,	DSP32Mac_src1_mask,	\
    180   1.1  christos   DSP32Mac_src0_bits,	DSP32Mac_src0_mask,	\
    181   1.1  christos   DSP32Mac_dst_bits,	DSP32Mac_dst_mask,	\
    182   1.1  christos   DSP32Mac_h10_bits,	DSP32Mac_h10_mask,	\
    183   1.1  christos   DSP32Mac_h00_bits,	DSP32Mac_h00_mask,	\
    184   1.1  christos   DSP32Mac_op0_bits,	DSP32Mac_op0_mask,	\
    185   1.1  christos   DSP32Mac_w0_bits,	DSP32Mac_w0_mask,	\
    186   1.1  christos   DSP32Mac_h11_bits,	DSP32Mac_h11_mask,	\
    187   1.1  christos   DSP32Mac_h01_bits,	DSP32Mac_h01_mask,	\
    188   1.1  christos   DSP32Mac_op1_bits,	DSP32Mac_op1_mask,	\
    189   1.1  christos   DSP32Mac_w1_bits,	DSP32Mac_w1_mask,	\
    190   1.1  christos   DSP32Mac_p_bits,	DSP32Mac_p_mask,	\
    191   1.1  christos   DSP32Mac_MM_bits,	DSP32Mac_MM_mask,	\
    192   1.1  christos   DSP32Mac_mmod_bits,	DSP32Mac_mmod_mask,	\
    193   1.1  christos   DSP32Mac_code2_bits,	DSP32Mac_code2_mask,	\
    194   1.1  christos   DSP32Mac_M_bits,	DSP32Mac_M_mask,	\
    195   1.1  christos   DSP32Mac_code_bits,	DSP32Mac_code_mask	\
    196   1.1  christos };
    197   1.1  christos 
    198   1.1  christos /*  dsp32alu
    199   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    200   1.1  christos | 1 | 1 | 0 | 0 |.M.| 1 | 0 | - | - | - |.HL|.aopcde............|
    201   1.1  christos |.aop...|.s.|.x.|.dst0......|.dst1......|.src0......|.src1......|
    202   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    203   1.1  christos */
    204   1.1  christos 
    205   1.1  christos typedef struct
    206   1.1  christos {
    207   1.1  christos   unsigned long opcode;
    208   1.1  christos   int bits_src1;
    209   1.1  christos   int mask_src1;
    210   1.1  christos   int bits_src0;
    211   1.1  christos   int mask_src0;
    212   1.1  christos   int bits_dst1;
    213   1.1  christos   int mask_dst1;
    214   1.1  christos   int bits_dst0;
    215   1.1  christos   int mask_dst0;
    216   1.1  christos   int bits_x;
    217   1.1  christos   int mask_x;
    218   1.1  christos   int bits_s;
    219   1.1  christos   int mask_s;
    220   1.1  christos   int bits_aop;
    221   1.1  christos   int mask_aop;
    222   1.1  christos   int bits_aopcde;
    223   1.1  christos   int mask_aopcde;
    224   1.1  christos   int bits_HL;
    225   1.1  christos   int mask_HL;
    226   1.1  christos   int bits_dontcare;
    227   1.1  christos   int mask_dontcare;
    228   1.1  christos   int bits_code2;
    229   1.1  christos   int mask_code2;
    230   1.1  christos   int bits_M;
    231   1.1  christos   int mask_M;
    232   1.1  christos   int bits_code;
    233   1.1  christos   int mask_code;
    234   1.1  christos } DSP32Alu;
    235   1.1  christos 
    236   1.1  christos #define DSP32Alu_opcode		0xc4000000
    237   1.1  christos #define DSP32Alu_src1_bits	0
    238   1.1  christos #define DSP32Alu_src1_mask	0x7
    239   1.1  christos #define DSP32Alu_src0_bits	3
    240   1.1  christos #define DSP32Alu_src0_mask	0x7
    241   1.1  christos #define DSP32Alu_dst1_bits	6
    242   1.1  christos #define DSP32Alu_dst1_mask	0x7
    243   1.1  christos #define DSP32Alu_dst0_bits	9
    244   1.1  christos #define DSP32Alu_dst0_mask	0x7
    245   1.1  christos #define DSP32Alu_x_bits		12
    246   1.1  christos #define DSP32Alu_x_mask		0x1
    247   1.1  christos #define DSP32Alu_s_bits		13
    248   1.1  christos #define DSP32Alu_s_mask		0x1
    249   1.1  christos #define DSP32Alu_aop_bits	14
    250   1.1  christos #define DSP32Alu_aop_mask	0x3
    251   1.1  christos #define DSP32Alu_aopcde_bits	16
    252   1.1  christos #define DSP32Alu_aopcde_mask	0x1f
    253   1.1  christos #define DSP32Alu_HL_bits	21
    254   1.1  christos #define DSP32Alu_HL_mask	0x1
    255   1.1  christos #define DSP32Alu_dontcare_bits	22
    256   1.1  christos #define DSP32Alu_dontcare_mask	0x7
    257   1.1  christos #define DSP32Alu_code2_bits	25
    258   1.1  christos #define DSP32Alu_code2_mask	0x3
    259   1.1  christos #define DSP32Alu_M_bits		27
    260   1.1  christos #define DSP32Alu_M_mask		0x1
    261   1.1  christos #define DSP32Alu_code_bits	28
    262   1.1  christos #define DSP32Alu_code_mask	0xf
    263   1.1  christos 
    264   1.1  christos #define init_DSP32Alu 					\
    265   1.1  christos {							\
    266   1.1  christos   DSP32Alu_opcode,					\
    267   1.1  christos   DSP32Alu_src1_bits,		DSP32Alu_src1_mask,	\
    268   1.1  christos   DSP32Alu_src0_bits,		DSP32Alu_src0_mask,	\
    269   1.1  christos   DSP32Alu_dst1_bits,		DSP32Alu_dst1_mask,	\
    270   1.1  christos   DSP32Alu_dst0_bits,		DSP32Alu_dst0_mask,	\
    271   1.1  christos   DSP32Alu_x_bits,		DSP32Alu_x_mask,	\
    272   1.1  christos   DSP32Alu_s_bits,		DSP32Alu_s_mask,	\
    273   1.1  christos   DSP32Alu_aop_bits,		DSP32Alu_aop_mask,	\
    274   1.1  christos   DSP32Alu_aopcde_bits,		DSP32Alu_aopcde_mask,	\
    275   1.1  christos   DSP32Alu_HL_bits,		DSP32Alu_HL_mask,	\
    276   1.1  christos   DSP32Alu_dontcare_bits,	DSP32Alu_dontcare_mask,	\
    277   1.1  christos   DSP32Alu_code2_bits,		DSP32Alu_code2_mask,	\
    278   1.1  christos   DSP32Alu_M_bits,		DSP32Alu_M_mask,	\
    279   1.1  christos   DSP32Alu_code_bits,		DSP32Alu_code_mask 	\
    280   1.1  christos };
    281   1.1  christos 
    282   1.1  christos /*  dsp32shift
    283   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    284   1.1  christos | 1 | 1 | 0 | 0 |.M.| 1 | 1 | 0 | 0 | - | - |.sopcde............|
    285   1.1  christos |.sop...|.HLs...|.dst0......| - | - | - |.src0......|.src1......|
    286   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    287   1.1  christos */
    288   1.1  christos 
    289   1.1  christos typedef struct
    290   1.1  christos {
    291   1.1  christos   unsigned long opcode;
    292   1.1  christos   int bits_src1;
    293   1.1  christos   int mask_src1;
    294   1.1  christos   int bits_src0;
    295   1.1  christos   int mask_src0;
    296   1.1  christos   int bits_dst1;
    297   1.1  christos   int mask_dst1;
    298   1.1  christos   int bits_dst0;
    299   1.1  christos   int mask_dst0;
    300   1.1  christos   int bits_HLs;
    301   1.1  christos   int mask_HLs;
    302   1.1  christos   int bits_sop;
    303   1.1  christos   int mask_sop;
    304   1.1  christos   int bits_sopcde;
    305   1.1  christos   int mask_sopcde;
    306   1.1  christos   int bits_dontcare;
    307   1.1  christos   int mask_dontcare;
    308   1.1  christos   int bits_code2;
    309   1.1  christos   int mask_code2;
    310   1.1  christos   int bits_M;
    311   1.1  christos   int mask_M;
    312   1.1  christos   int bits_code;
    313   1.1  christos   int mask_code;
    314   1.1  christos } DSP32Shift;
    315   1.1  christos 
    316   1.1  christos #define DSP32Shift_opcode		0xc6000000
    317   1.1  christos #define DSP32Shift_src1_bits		0
    318   1.1  christos #define DSP32Shift_src1_mask		0x7
    319   1.1  christos #define DSP32Shift_src0_bits		3
    320   1.1  christos #define DSP32Shift_src0_mask		0x7
    321   1.1  christos #define DSP32Shift_dst1_bits		6
    322   1.1  christos #define DSP32Shift_dst1_mask		0x7
    323   1.1  christos #define DSP32Shift_dst0_bits		9
    324   1.1  christos #define DSP32Shift_dst0_mask		0x7
    325   1.1  christos #define DSP32Shift_HLs_bits		12
    326   1.1  christos #define DSP32Shift_HLs_mask		0x3
    327   1.1  christos #define DSP32Shift_sop_bits		14
    328   1.1  christos #define DSP32Shift_sop_mask		0x3
    329   1.1  christos #define DSP32Shift_sopcde_bits		16
    330   1.1  christos #define DSP32Shift_sopcde_mask		0x1f
    331   1.1  christos #define DSP32Shift_dontcare_bits	21
    332   1.1  christos #define DSP32Shift_dontcare_mask	0x3
    333   1.1  christos #define DSP32Shift_code2_bits		23
    334   1.1  christos #define DSP32Shift_code2_mask		0xf
    335   1.1  christos #define DSP32Shift_M_bits		27
    336   1.1  christos #define DSP32Shift_M_mask		0x1
    337   1.1  christos #define DSP32Shift_code_bits		28
    338   1.1  christos #define DSP32Shift_code_mask		0xf
    339   1.1  christos 
    340   1.1  christos #define init_DSP32Shift						\
    341   1.1  christos {								\
    342   1.1  christos   DSP32Shift_opcode,						\
    343   1.1  christos   DSP32Shift_src1_bits,		DSP32Shift_src1_mask,		\
    344   1.1  christos   DSP32Shift_src0_bits,		DSP32Shift_src0_mask,		\
    345   1.1  christos   DSP32Shift_dst1_bits,		DSP32Shift_dst1_mask,		\
    346   1.1  christos   DSP32Shift_dst0_bits,		DSP32Shift_dst0_mask,		\
    347   1.1  christos   DSP32Shift_HLs_bits,		DSP32Shift_HLs_mask,		\
    348   1.1  christos   DSP32Shift_sop_bits,		DSP32Shift_sop_mask,		\
    349   1.1  christos   DSP32Shift_sopcde_bits,	DSP32Shift_sopcde_mask,		\
    350   1.1  christos   DSP32Shift_dontcare_bits,	DSP32Shift_dontcare_mask,	\
    351   1.1  christos   DSP32Shift_code2_bits,	DSP32Shift_code2_mask,		\
    352   1.1  christos   DSP32Shift_M_bits,		DSP32Shift_M_mask,		\
    353   1.1  christos   DSP32Shift_code_bits,		DSP32Shift_code_mask		\
    354   1.1  christos };
    355   1.1  christos 
    356   1.1  christos /*  dsp32shiftimm
    357   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    358   1.1  christos | 1 | 1 | 0 | 0 |.M.| 1 | 1 | 0 | 1 | - | - |.sopcde............|
    359   1.1  christos |.sop...|.HLs...|.dst0......|.immag.................|.src1......|
    360   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    361   1.1  christos */
    362   1.1  christos 
    363   1.1  christos typedef struct
    364   1.1  christos {
    365   1.1  christos   unsigned long opcode;
    366   1.1  christos   int bits_src1;
    367   1.1  christos   int mask_src1;
    368   1.1  christos   int bits_immag;
    369   1.1  christos   int mask_immag;
    370   1.1  christos   int bits_dst0;
    371   1.1  christos   int mask_dst0;
    372   1.1  christos   int bits_HLs;
    373   1.1  christos   int mask_HLs;
    374   1.1  christos   int bits_sop;
    375   1.1  christos   int mask_sop;
    376   1.1  christos   int bits_sopcde;
    377   1.1  christos   int mask_sopcde;
    378   1.1  christos   int bits_dontcare;
    379   1.1  christos   int mask_dontcare;
    380   1.1  christos   int bits_code2;
    381   1.1  christos   int mask_code2;
    382   1.1  christos   int bits_M;
    383   1.1  christos   int mask_M;
    384   1.1  christos   int bits_code;
    385   1.1  christos   int mask_code;
    386   1.1  christos } DSP32ShiftImm;
    387   1.1  christos 
    388   1.1  christos #define DSP32ShiftImm_opcode		0xc6800000
    389   1.1  christos #define DSP32ShiftImm_src1_bits		0
    390   1.1  christos #define DSP32ShiftImm_src1_mask		0x7
    391   1.1  christos #define DSP32ShiftImm_immag_bits	3
    392   1.1  christos #define DSP32ShiftImm_immag_mask	0x3f
    393   1.1  christos #define DSP32ShiftImm_dst0_bits		9
    394   1.1  christos #define DSP32ShiftImm_dst0_mask		0x7
    395   1.1  christos #define DSP32ShiftImm_HLs_bits		12
    396   1.1  christos #define DSP32ShiftImm_HLs_mask		0x3
    397   1.1  christos #define DSP32ShiftImm_sop_bits		14
    398   1.1  christos #define DSP32ShiftImm_sop_mask		0x3
    399   1.1  christos #define DSP32ShiftImm_sopcde_bits	16
    400   1.1  christos #define DSP32ShiftImm_sopcde_mask	0x1f
    401   1.1  christos #define DSP32ShiftImm_dontcare_bits	21
    402   1.1  christos #define DSP32ShiftImm_dontcare_mask	0x3
    403   1.1  christos #define DSP32ShiftImm_code2_bits	23
    404   1.1  christos #define DSP32ShiftImm_code2_mask	0xf
    405   1.1  christos #define DSP32ShiftImm_M_bits		27
    406   1.1  christos #define DSP32ShiftImm_M_mask		0x1
    407   1.1  christos #define DSP32ShiftImm_code_bits		28
    408   1.1  christos #define DSP32ShiftImm_code_mask		0xf
    409   1.1  christos 
    410   1.1  christos #define init_DSP32ShiftImm					\
    411   1.1  christos {								\
    412   1.1  christos   DSP32ShiftImm_opcode,						\
    413   1.1  christos   DSP32ShiftImm_src1_bits,	DSP32ShiftImm_src1_mask,	\
    414   1.1  christos   DSP32ShiftImm_immag_bits,	DSP32ShiftImm_immag_mask,	\
    415   1.1  christos   DSP32ShiftImm_dst0_bits,	DSP32ShiftImm_dst0_mask,	\
    416   1.1  christos   DSP32ShiftImm_HLs_bits,	DSP32ShiftImm_HLs_mask,		\
    417   1.1  christos   DSP32ShiftImm_sop_bits,	DSP32ShiftImm_sop_mask,		\
    418   1.1  christos   DSP32ShiftImm_sopcde_bits,	DSP32ShiftImm_sopcde_mask,	\
    419   1.1  christos   DSP32ShiftImm_dontcare_bits,	DSP32ShiftImm_dontcare_mask,	\
    420   1.1  christos   DSP32ShiftImm_code2_bits,	DSP32ShiftImm_code2_mask,	\
    421   1.1  christos   DSP32ShiftImm_M_bits,		DSP32ShiftImm_M_mask,		\
    422   1.1  christos   DSP32ShiftImm_code_bits,	DSP32ShiftImm_code_mask		\
    423   1.1  christos };
    424   1.1  christos 
    425   1.1  christos /* LOAD / STORE  */
    426   1.1  christos 
    427   1.1  christos /*  LDSTidxI
    428   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    429   1.1  christos | 1 | 1 | 1 | 0 | 0 | 1 |.W.|.Z.|.sz....|.ptr.......|.reg.......|
    430   1.1  christos |.offset........................................................|
    431   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    432   1.1  christos */
    433   1.1  christos 
    434   1.1  christos typedef struct
    435   1.1  christos {
    436   1.1  christos   unsigned long opcode;
    437   1.1  christos   int bits_offset;
    438   1.1  christos   int mask_offset;
    439   1.1  christos   int bits_reg;
    440   1.1  christos   int mask_reg;
    441   1.1  christos   int bits_ptr;
    442   1.1  christos   int mask_ptr;
    443   1.1  christos   int bits_sz;
    444   1.1  christos   int mask_sz;
    445   1.1  christos   int bits_Z;
    446   1.1  christos   int mask_Z;
    447   1.1  christos   int bits_W;
    448   1.1  christos   int mask_W;
    449   1.1  christos   int bits_code;
    450   1.1  christos   int mask_code;
    451   1.1  christos } LDSTidxI;
    452   1.1  christos 
    453   1.1  christos #define LDSTidxI_opcode		0xe4000000
    454   1.1  christos #define LDSTidxI_offset_bits	0
    455   1.1  christos #define LDSTidxI_offset_mask	0xffff
    456   1.1  christos #define LDSTidxI_reg_bits	16
    457   1.1  christos #define LDSTidxI_reg_mask	0x7
    458   1.1  christos #define LDSTidxI_ptr_bits	19
    459   1.1  christos #define LDSTidxI_ptr_mask	0x7
    460   1.1  christos #define LDSTidxI_sz_bits	22
    461   1.1  christos #define LDSTidxI_sz_mask	0x3
    462   1.1  christos #define LDSTidxI_Z_bits		24
    463   1.1  christos #define LDSTidxI_Z_mask		0x1
    464   1.1  christos #define LDSTidxI_W_bits		25
    465   1.1  christos #define LDSTidxI_W_mask		0x1
    466   1.1  christos #define LDSTidxI_code_bits	26
    467   1.1  christos #define LDSTidxI_code_mask	0x3f
    468   1.1  christos 
    469   1.1  christos #define init_LDSTidxI				\
    470   1.1  christos {						\
    471   1.1  christos   LDSTidxI_opcode,				\
    472   1.1  christos   LDSTidxI_offset_bits, LDSTidxI_offset_mask,	\
    473   1.1  christos   LDSTidxI_reg_bits, LDSTidxI_reg_mask,		\
    474   1.1  christos   LDSTidxI_ptr_bits, LDSTidxI_ptr_mask,		\
    475   1.1  christos   LDSTidxI_sz_bits, LDSTidxI_sz_mask,		\
    476   1.1  christos   LDSTidxI_Z_bits, LDSTidxI_Z_mask,		\
    477   1.1  christos   LDSTidxI_W_bits, LDSTidxI_W_mask,		\
    478   1.1  christos   LDSTidxI_code_bits, LDSTidxI_code_mask	\
    479   1.1  christos };
    480   1.1  christos 
    481   1.1  christos 
    482   1.1  christos /*  LDST
    483   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    484   1.1  christos | 1 | 0 | 0 | 1 |.sz....|.W.|.aop...|.Z.|.ptr.......|.reg.......|
    485   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    486   1.1  christos */
    487   1.1  christos 
    488   1.1  christos typedef struct
    489   1.1  christos {
    490   1.1  christos   unsigned short opcode;
    491   1.1  christos   int bits_reg;
    492   1.1  christos   int mask_reg;
    493   1.1  christos   int bits_ptr;
    494   1.1  christos   int mask_ptr;
    495   1.1  christos   int bits_Z;
    496   1.1  christos   int mask_Z;
    497   1.1  christos   int bits_aop;
    498   1.1  christos   int mask_aop;
    499   1.1  christos   int bits_W;
    500   1.1  christos   int mask_W;
    501   1.1  christos   int bits_sz;
    502   1.1  christos   int mask_sz;
    503   1.1  christos   int bits_code;
    504   1.1  christos   int mask_code;
    505   1.1  christos } LDST;
    506   1.1  christos 
    507   1.1  christos #define LDST_opcode		0x9000
    508   1.1  christos #define LDST_reg_bits		0
    509   1.1  christos #define LDST_reg_mask		0x7
    510   1.1  christos #define LDST_ptr_bits		3
    511   1.1  christos #define LDST_ptr_mask		0x7
    512   1.1  christos #define LDST_Z_bits		6
    513   1.1  christos #define LDST_Z_mask		0x1
    514   1.1  christos #define LDST_aop_bits		7
    515   1.1  christos #define LDST_aop_mask		0x3
    516   1.1  christos #define LDST_W_bits		9
    517   1.1  christos #define LDST_W_mask		0x1
    518   1.1  christos #define LDST_sz_bits		10
    519   1.1  christos #define LDST_sz_mask		0x3
    520   1.1  christos #define LDST_code_bits		12
    521   1.1  christos #define LDST_code_mask		0xf
    522   1.1  christos 
    523   1.1  christos #define init_LDST			\
    524   1.1  christos {					\
    525   1.1  christos   LDST_opcode,				\
    526   1.1  christos   LDST_reg_bits,	LDST_reg_mask,	\
    527   1.1  christos   LDST_ptr_bits,	LDST_ptr_mask,	\
    528   1.1  christos   LDST_Z_bits,		LDST_Z_mask,	\
    529   1.1  christos   LDST_aop_bits,	LDST_aop_mask,	\
    530   1.1  christos   LDST_W_bits,		LDST_W_mask,	\
    531   1.1  christos   LDST_sz_bits,		LDST_sz_mask,	\
    532   1.1  christos   LDST_code_bits,	LDST_code_mask	\
    533   1.1  christos };
    534   1.1  christos 
    535   1.1  christos /*  LDSTii
    536   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    537   1.1  christos | 1 | 0 | 1 |.W.|.op....|.offset........|.ptr.......|.reg.......|
    538   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    539   1.1  christos */
    540   1.1  christos 
    541   1.1  christos typedef struct
    542   1.1  christos {
    543   1.1  christos   unsigned short opcode;
    544   1.1  christos   int bits_reg;
    545   1.1  christos   int mask_reg;
    546   1.1  christos   int bits_ptr;
    547   1.1  christos   int mask_ptr;
    548   1.1  christos   int bits_offset;
    549   1.1  christos   int mask_offset;
    550   1.1  christos   int bits_op;
    551   1.1  christos   int mask_op;
    552   1.1  christos   int bits_W;
    553   1.1  christos   int mask_W;
    554   1.1  christos   int bits_code;
    555   1.1  christos   int mask_code;
    556   1.1  christos } LDSTii;
    557   1.1  christos 
    558   1.1  christos #define LDSTii_opcode		0xa000
    559   1.1  christos #define LDSTii_reg_bit		0
    560   1.1  christos #define LDSTii_reg_mask		0x7
    561   1.1  christos #define LDSTii_ptr_bit		3
    562   1.1  christos #define LDSTii_ptr_mask		0x7
    563   1.1  christos #define LDSTii_offset_bit	6
    564   1.1  christos #define LDSTii_offset_mask	0xf
    565   1.1  christos #define LDSTii_op_bit		10
    566   1.1  christos #define LDSTii_op_mask		0x3
    567   1.1  christos #define LDSTii_W_bit		12
    568   1.1  christos #define LDSTii_W_mask		0x1
    569   1.1  christos #define LDSTii_code_bit		13
    570   1.1  christos #define LDSTii_code_mask	0x7
    571   1.1  christos 
    572   1.1  christos #define init_LDSTii 				\
    573   1.1  christos {						\
    574   1.1  christos   LDSTii_opcode,				\
    575   1.1  christos   LDSTii_reg_bit,	LDSTii_reg_mask,	\
    576   1.1  christos   LDSTii_ptr_bit,	LDSTii_ptr_mask,	\
    577   1.1  christos   LDSTii_offset_bit,    LDSTii_offset_mask, 	\
    578   1.1  christos   LDSTii_op_bit,        LDSTii_op_mask,		\
    579   1.1  christos   LDSTii_W_bit,		LDSTii_W_mask,		\
    580   1.1  christos   LDSTii_code_bit,	LDSTii_code_mask	\
    581   1.1  christos };
    582   1.1  christos 
    583   1.1  christos 
    584   1.1  christos /*  LDSTiiFP
    585   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    586   1.1  christos | 1 | 0 | 1 | 1 | 1 | 0 |.W.|.offset............|.reg...........|
    587   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    588   1.1  christos */
    589   1.1  christos 
    590   1.1  christos typedef struct
    591   1.1  christos {
    592   1.1  christos   unsigned short opcode;
    593   1.1  christos   int bits_reg;
    594   1.1  christos   int mask_reg;
    595   1.1  christos   int bits_offset;
    596   1.1  christos   int mask_offset;
    597   1.1  christos   int bits_W;
    598   1.1  christos   int mask_W;
    599   1.1  christos   int bits_code;
    600   1.1  christos   int mask_code;
    601   1.1  christos } LDSTiiFP;
    602   1.1  christos 
    603   1.1  christos #define LDSTiiFP_opcode		0xb800
    604   1.1  christos #define LDSTiiFP_reg_bits	0
    605   1.1  christos #define LDSTiiFP_reg_mask	0xf
    606   1.1  christos #define LDSTiiFP_offset_bits	4
    607   1.1  christos #define LDSTiiFP_offset_mask	0x1f
    608   1.1  christos #define LDSTiiFP_W_bits		9
    609   1.1  christos #define LDSTiiFP_W_mask		0x1
    610   1.1  christos #define LDSTiiFP_code_bits	10
    611   1.1  christos #define LDSTiiFP_code_mask	0x3f
    612   1.1  christos 
    613   1.1  christos #define init_LDSTiiFP				\
    614   1.1  christos {						\
    615   1.1  christos   LDSTiiFP_opcode,				\
    616   1.1  christos   LDSTiiFP_reg_bits,	LDSTiiFP_reg_mask,	\
    617   1.1  christos   LDSTiiFP_offset_bits, LDSTiiFP_offset_mask,	\
    618   1.1  christos   LDSTiiFP_W_bits,	LDSTiiFP_W_mask,	\
    619   1.1  christos   LDSTiiFP_code_bits,	LDSTiiFP_code_mask	\
    620   1.1  christos };
    621   1.1  christos 
    622   1.1  christos /*  dspLDST
    623   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    624   1.1  christos | 1 | 0 | 0 | 1 | 1 | 1 |.W.|.aop...|.m.....|.i.....|.reg.......|
    625   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    626   1.1  christos */
    627   1.1  christos 
    628   1.1  christos typedef struct
    629   1.1  christos {
    630   1.1  christos   unsigned short opcode;
    631   1.1  christos   int bits_reg;
    632   1.1  christos   int mask_reg;
    633   1.1  christos   int bits_i;
    634   1.1  christos   int mask_i;
    635   1.1  christos   int bits_m;
    636   1.1  christos   int mask_m;
    637   1.1  christos   int bits_aop;
    638   1.1  christos   int mask_aop;
    639   1.1  christos   int bits_W;
    640   1.1  christos   int mask_W;
    641   1.1  christos   int bits_code;
    642   1.1  christos   int mask_code;
    643   1.1  christos } DspLDST;
    644   1.1  christos 
    645   1.1  christos #define DspLDST_opcode		0x9c00
    646   1.1  christos #define DspLDST_reg_bits	0
    647   1.1  christos #define DspLDST_reg_mask	0x7
    648   1.1  christos #define DspLDST_i_bits		3
    649   1.1  christos #define DspLDST_i_mask		0x3
    650   1.1  christos #define DspLDST_m_bits		5
    651   1.1  christos #define DspLDST_m_mask		0x3
    652   1.1  christos #define DspLDST_aop_bits	7
    653   1.1  christos #define DspLDST_aop_mask	0x3
    654   1.1  christos #define DspLDST_W_bits		9
    655   1.1  christos #define DspLDST_W_mask		0x1
    656   1.1  christos #define DspLDST_code_bits	10
    657   1.1  christos #define DspLDST_code_mask	0x3f
    658   1.1  christos 
    659   1.1  christos #define init_DspLDST				\
    660   1.1  christos {						\
    661   1.1  christos   DspLDST_opcode,				\
    662   1.1  christos   DspLDST_reg_bits,	DspLDST_reg_mask,	\
    663   1.1  christos   DspLDST_i_bits,	DspLDST_i_mask,		\
    664   1.1  christos   DspLDST_m_bits,	DspLDST_m_mask,		\
    665   1.1  christos   DspLDST_aop_bits,	DspLDST_aop_mask,	\
    666   1.1  christos   DspLDST_W_bits,	DspLDST_W_mask,		\
    667   1.1  christos   DspLDST_code_bits,	DspLDST_code_mask	\
    668   1.1  christos };
    669   1.1  christos 
    670   1.1  christos 
    671   1.1  christos /*  LDSTpmod
    672   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    673   1.1  christos | 1 | 0 | 0 | 0 |.W.|.aop...|.reg.......|.idx.......|.ptr.......|
    674   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    675   1.1  christos */
    676   1.1  christos 
    677   1.1  christos typedef struct
    678   1.1  christos {
    679   1.1  christos   unsigned short opcode;
    680   1.1  christos   int bits_ptr;
    681   1.1  christos   int mask_ptr;
    682   1.1  christos   int bits_idx;
    683   1.1  christos   int mask_idx;
    684   1.1  christos   int bits_reg;
    685   1.1  christos   int mask_reg;
    686   1.1  christos   int bits_aop;
    687   1.1  christos   int mask_aop;
    688   1.1  christos   int bits_W;
    689   1.1  christos   int mask_W;
    690   1.1  christos   int bits_code;
    691   1.1  christos   int mask_code;
    692   1.1  christos } LDSTpmod;
    693   1.1  christos 
    694   1.1  christos #define LDSTpmod_opcode		0x8000
    695   1.1  christos #define LDSTpmod_ptr_bits	0
    696   1.1  christos #define LDSTpmod_ptr_mask	0x7
    697   1.1  christos #define LDSTpmod_idx_bits	3
    698   1.1  christos #define LDSTpmod_idx_mask	0x7
    699   1.1  christos #define LDSTpmod_reg_bits	6
    700   1.1  christos #define LDSTpmod_reg_mask	0x7
    701   1.1  christos #define LDSTpmod_aop_bits	9
    702   1.1  christos #define LDSTpmod_aop_mask	0x3
    703   1.1  christos #define LDSTpmod_W_bits		11
    704   1.1  christos #define LDSTpmod_W_mask		0x1
    705   1.1  christos #define LDSTpmod_code_bits	12
    706   1.1  christos #define LDSTpmod_code_mask	0xf
    707   1.1  christos 
    708   1.1  christos #define init_LDSTpmod				\
    709   1.1  christos {						\
    710   1.1  christos   LDSTpmod_opcode,				\
    711   1.1  christos   LDSTpmod_ptr_bits, 	LDSTpmod_ptr_mask,	\
    712   1.1  christos   LDSTpmod_idx_bits,	LDSTpmod_idx_mask,	\
    713   1.1  christos   LDSTpmod_reg_bits,	LDSTpmod_reg_mask,	\
    714   1.1  christos   LDSTpmod_aop_bits,	LDSTpmod_aop_mask,	\
    715   1.1  christos   LDSTpmod_W_bits,	LDSTpmod_W_mask,	\
    716   1.1  christos   LDSTpmod_code_bits,	LDSTpmod_code_mask	\
    717   1.1  christos };
    718   1.1  christos 
    719   1.1  christos 
    720   1.1  christos /*  LOGI2op
    721   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    722   1.1  christos | 0 | 1 | 0 | 0 | 1 |.opc.......|.src...............|.dst.......|
    723   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    724   1.1  christos */
    725   1.1  christos 
    726   1.1  christos typedef struct
    727   1.1  christos {
    728   1.1  christos   unsigned short opcode;
    729   1.1  christos   int bits_dst;
    730   1.1  christos   int mask_dst;
    731   1.1  christos   int bits_src;
    732   1.1  christos   int mask_src;
    733   1.1  christos   int bits_opc;
    734   1.1  christos   int mask_opc;
    735   1.1  christos   int bits_code;
    736   1.1  christos   int mask_code;
    737   1.1  christos } LOGI2op;
    738   1.1  christos 
    739   1.1  christos #define LOGI2op_opcode		0x4800
    740   1.1  christos #define LOGI2op_dst_bits	0
    741   1.1  christos #define LOGI2op_dst_mask	0x7
    742   1.1  christos #define LOGI2op_src_bits	3
    743   1.1  christos #define LOGI2op_src_mask	0x1f
    744   1.1  christos #define LOGI2op_opc_bits	8
    745   1.1  christos #define LOGI2op_opc_mask	0x7
    746   1.1  christos #define LOGI2op_code_bits	11
    747   1.1  christos #define LOGI2op_code_mask	0x1f
    748   1.1  christos 
    749   1.1  christos #define init_LOGI2op				\
    750   1.1  christos {						\
    751   1.1  christos   LOGI2op_opcode,				\
    752   1.1  christos   LOGI2op_dst_bits, 	LOGI2op_dst_mask,	\
    753   1.1  christos   LOGI2op_src_bits,	LOGI2op_src_mask,	\
    754   1.1  christos   LOGI2op_opc_bits,	LOGI2op_opc_mask,	\
    755   1.1  christos   LOGI2op_code_bits,	LOGI2op_code_mask	\
    756   1.1  christos };
    757   1.1  christos 
    758   1.1  christos 
    759   1.1  christos /*  ALU2op
    760   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    761   1.1  christos | 0 | 1 | 0 | 0 | 0 | 0 |.opc...........|.src.......|.dst.......|
    762   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    763   1.1  christos */
    764   1.1  christos 
    765   1.1  christos typedef struct
    766   1.1  christos {
    767   1.1  christos   unsigned short opcode;
    768   1.1  christos   int bits_dst;
    769   1.1  christos   int mask_dst;
    770   1.1  christos   int bits_src;
    771   1.1  christos   int mask_src;
    772   1.1  christos   int bits_opc;
    773   1.1  christos   int mask_opc;
    774   1.1  christos   int bits_code;
    775   1.1  christos   int mask_code;
    776   1.1  christos } ALU2op;
    777   1.1  christos 
    778   1.1  christos #define ALU2op_opcode 		0x4000
    779   1.1  christos #define ALU2op_dst_bits		0
    780   1.1  christos #define ALU2op_dst_mask		0x7
    781   1.1  christos #define ALU2op_src_bits		3
    782   1.1  christos #define ALU2op_src_mask		0x7
    783   1.1  christos #define ALU2op_opc_bits		6
    784   1.1  christos #define ALU2op_opc_mask		0xf
    785   1.1  christos #define ALU2op_code_bits	10
    786   1.1  christos #define ALU2op_code_mask	0x3f
    787   1.1  christos 
    788   1.1  christos #define init_ALU2op				\
    789   1.1  christos {						\
    790   1.1  christos   ALU2op_opcode,				\
    791   1.1  christos   ALU2op_dst_bits,	ALU2op_dst_mask,	\
    792   1.1  christos   ALU2op_src_bits,	ALU2op_src_mask,	\
    793   1.1  christos   ALU2op_opc_bits,	ALU2op_opc_mask,	\
    794   1.1  christos   ALU2op_code_bits,	ALU2op_code_mask	\
    795   1.1  christos };
    796   1.1  christos 
    797   1.1  christos 
    798   1.1  christos /*  BRCC
    799   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    800   1.1  christos | 0 | 0 | 0 | 1 |.T.|.B.|.offset................................|
    801   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    802   1.1  christos */
    803   1.1  christos 
    804   1.1  christos typedef struct
    805   1.1  christos {
    806   1.1  christos   unsigned short opcode;
    807   1.1  christos   int bits_offset;
    808   1.1  christos   int mask_offset;
    809   1.1  christos   int bits_B;
    810   1.1  christos   int mask_B;
    811   1.1  christos   int bits_T;
    812   1.1  christos   int mask_T;
    813   1.1  christos   int bits_code;
    814   1.1  christos   int mask_code;
    815   1.1  christos } BRCC;
    816   1.1  christos 
    817   1.1  christos #define BRCC_opcode		0x1000
    818   1.1  christos #define BRCC_offset_bits	0
    819   1.1  christos #define BRCC_offset_mask	0x3ff
    820   1.1  christos #define BRCC_B_bits		10
    821   1.1  christos #define BRCC_B_mask		0x1
    822   1.1  christos #define BRCC_T_bits		11
    823   1.1  christos #define BRCC_T_mask		0x1
    824   1.1  christos #define BRCC_code_bits		12
    825   1.1  christos #define BRCC_code_mask		0xf
    826   1.1  christos 
    827   1.1  christos #define init_BRCC				\
    828   1.1  christos {						\
    829   1.1  christos   BRCC_opcode,					\
    830   1.1  christos   BRCC_offset_bits,	BRCC_offset_mask,	\
    831   1.1  christos   BRCC_B_bits,		BRCC_B_mask,		\
    832   1.1  christos   BRCC_T_bits,		BRCC_T_mask,		\
    833   1.1  christos   BRCC_code_bits,	BRCC_code_mask		\
    834   1.1  christos };
    835   1.1  christos 
    836   1.1  christos 
    837   1.1  christos /*  UJUMP
    838   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    839   1.1  christos | 0 | 0 | 1 | 0 |.offset........................................|
    840   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    841   1.1  christos */
    842   1.1  christos 
    843   1.1  christos typedef struct
    844   1.1  christos {
    845   1.1  christos   unsigned short opcode;
    846   1.1  christos   int bits_offset;
    847   1.1  christos   int mask_offset;
    848   1.1  christos   int bits_code;
    849   1.1  christos   int mask_code;
    850   1.1  christos } UJump;
    851   1.1  christos 
    852   1.1  christos #define UJump_opcode		0x2000
    853   1.1  christos #define UJump_offset_bits	0
    854   1.1  christos #define UJump_offset_mask	0xfff
    855   1.1  christos #define UJump_code_bits		12
    856   1.1  christos #define UJump_code_mask		0xf
    857   1.1  christos 
    858   1.1  christos #define init_UJump				\
    859   1.1  christos {						\
    860   1.1  christos   UJump_opcode,					\
    861   1.1  christos   UJump_offset_bits,	UJump_offset_mask,	\
    862   1.1  christos   UJump_code_bits,	UJump_code_mask		\
    863   1.1  christos };
    864   1.1  christos 
    865   1.1  christos 
    866   1.1  christos /*  ProgCtrl
    867   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    868   1.1  christos | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |.prgfunc.......|.poprnd........|
    869   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    870   1.1  christos */
    871   1.1  christos 
    872   1.1  christos typedef struct
    873   1.1  christos {
    874   1.1  christos   unsigned short opcode;
    875   1.1  christos   int bits_poprnd;
    876   1.1  christos   int mask_poprnd;
    877   1.1  christos   int bits_prgfunc;
    878   1.1  christos   int mask_prgfunc;
    879   1.1  christos   int bits_code;
    880   1.1  christos   int mask_code;
    881   1.1  christos } ProgCtrl;
    882   1.1  christos 
    883   1.1  christos #define ProgCtrl_opcode		0x0000
    884   1.1  christos #define ProgCtrl_poprnd_bits	0
    885   1.1  christos #define ProgCtrl_poprnd_mask	0xf
    886   1.1  christos #define ProgCtrl_prgfunc_bits	4
    887   1.1  christos #define ProgCtrl_prgfunc_mask	0xf
    888   1.1  christos #define ProgCtrl_code_bits	8
    889   1.1  christos #define ProgCtrl_code_mask	0xff
    890   1.1  christos 
    891   1.1  christos #define init_ProgCtrl					\
    892   1.1  christos {							\
    893   1.1  christos   ProgCtrl_opcode,					\
    894   1.1  christos   ProgCtrl_poprnd_bits,		ProgCtrl_poprnd_mask,	\
    895   1.1  christos   ProgCtrl_prgfunc_bits,	ProgCtrl_prgfunc_mask,	\
    896   1.1  christos   ProgCtrl_code_bits,		ProgCtrl_code_mask	\
    897   1.1  christos };
    898   1.1  christos 
    899   1.1  christos /*  CALLa
    900   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    901   1.1  christos | 1 | 1 | 1 | 0 | 0 | 0 | 1 |.S.|.msw...........................|
    902   1.1  christos |.lsw...........................................................|
    903   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    904   1.1  christos */
    905   1.1  christos 
    906   1.1  christos 
    907   1.1  christos typedef struct
    908   1.1  christos {
    909   1.1  christos   unsigned long opcode;
    910   1.1  christos   int bits_addr;
    911   1.1  christos   int mask_addr;
    912   1.1  christos   int bits_S;
    913   1.1  christos   int mask_S;
    914   1.1  christos   int bits_code;
    915   1.1  christos   int mask_code;
    916   1.1  christos } CALLa;
    917   1.1  christos 
    918   1.1  christos #define CALLa_opcode	0xe2000000
    919   1.1  christos #define CALLa_addr_bits	0
    920   1.1  christos #define CALLa_addr_mask	0xffffff
    921   1.1  christos #define CALLa_S_bits	24
    922   1.1  christos #define CALLa_S_mask	0x1
    923   1.1  christos #define CALLa_code_bits	25
    924   1.1  christos #define CALLa_code_mask	0x7f
    925   1.1  christos 
    926   1.1  christos #define init_CALLa				\
    927   1.1  christos {						\
    928   1.1  christos   CALLa_opcode,					\
    929   1.1  christos   CALLa_addr_bits,	CALLa_addr_mask,	\
    930   1.1  christos   CALLa_S_bits,		CALLa_S_mask,		\
    931   1.1  christos   CALLa_code_bits,	CALLa_code_mask		\
    932   1.1  christos };
    933   1.1  christos 
    934   1.1  christos 
    935   1.1  christos /*  pseudoDEBUG
    936   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    937   1.1  christos | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |.fn....|.grp.......|.reg.......|
    938   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    939   1.1  christos */
    940   1.1  christos 
    941   1.1  christos typedef struct
    942   1.1  christos {
    943   1.1  christos   unsigned short opcode;
    944   1.1  christos   int bits_reg;
    945   1.1  christos   int mask_reg;
    946   1.1  christos   int bits_grp;
    947   1.1  christos   int mask_grp;
    948   1.1  christos   int bits_fn;
    949   1.1  christos   int mask_fn;
    950   1.1  christos   int bits_code;
    951   1.1  christos   int mask_code;
    952   1.1  christos } PseudoDbg;
    953   1.1  christos 
    954   1.1  christos #define PseudoDbg_opcode	0xf800
    955   1.1  christos #define PseudoDbg_reg_bits	0
    956   1.1  christos #define PseudoDbg_reg_mask	0x7
    957   1.1  christos #define PseudoDbg_grp_bits	3
    958   1.1  christos #define PseudoDbg_grp_mask	0x7
    959   1.1  christos #define PseudoDbg_fn_bits	6
    960   1.1  christos #define PseudoDbg_fn_mask	0x3
    961   1.1  christos #define PseudoDbg_code_bits	8
    962   1.1  christos #define PseudoDbg_code_mask	0xff
    963   1.1  christos 
    964   1.1  christos #define init_PseudoDbg				\
    965   1.1  christos {						\
    966   1.1  christos   PseudoDbg_opcode,				\
    967   1.1  christos   PseudoDbg_reg_bits,	PseudoDbg_reg_mask,	\
    968   1.1  christos   PseudoDbg_grp_bits,	PseudoDbg_grp_mask,	\
    969   1.1  christos   PseudoDbg_fn_bits,	PseudoDbg_fn_mask,	\
    970   1.1  christos   PseudoDbg_code_bits,	PseudoDbg_code_mask	\
    971   1.1  christos };
    972   1.1  christos 
    973   1.1  christos /*  PseudoDbg_assert
    974   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    975   1.1  christos | 1 | 1 | 1 | 1 | 0 | - | - | - | dbgop |.grp.......|.regtest...|
    976   1.1  christos |.expected......................................................|
    977   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    978   1.1  christos */
    979   1.1  christos 
    980   1.1  christos typedef struct
    981   1.1  christos {
    982   1.1  christos   unsigned long opcode;
    983   1.1  christos   int bits_expected;
    984   1.1  christos   int mask_expected;
    985   1.1  christos   int bits_regtest;
    986   1.1  christos   int mask_regtest;
    987   1.1  christos   int bits_grp;
    988   1.1  christos   int mask_grp;
    989   1.1  christos   int bits_dbgop;
    990   1.1  christos   int mask_dbgop;
    991   1.1  christos   int bits_dontcare;
    992   1.1  christos   int mask_dontcare;
    993   1.1  christos   int bits_code;
    994   1.1  christos   int mask_code;
    995   1.1  christos } PseudoDbg_Assert;
    996   1.1  christos 
    997   1.1  christos #define PseudoDbg_Assert_opcode		0xf0000000
    998   1.1  christos #define PseudoDbg_Assert_expected_bits	0
    999   1.1  christos #define PseudoDbg_Assert_expected_mask	0xffff
   1000   1.1  christos #define PseudoDbg_Assert_regtest_bits	16
   1001   1.1  christos #define PseudoDbg_Assert_regtest_mask	0x7
   1002   1.1  christos #define PseudoDbg_Assert_grp_bits	19
   1003   1.1  christos #define PseudoDbg_Assert_grp_mask	0x7
   1004   1.1  christos #define PseudoDbg_Assert_dbgop_bits	22
   1005   1.1  christos #define PseudoDbg_Assert_dbgop_mask	0x3
   1006   1.1  christos #define PseudoDbg_Assert_dontcare_bits	24
   1007   1.1  christos #define PseudoDbg_Assert_dontcare_mask	0x7
   1008   1.1  christos #define PseudoDbg_Assert_code_bits	27
   1009   1.1  christos #define PseudoDbg_Assert_code_mask	0x1f
   1010   1.1  christos 
   1011   1.1  christos #define init_PseudoDbg_Assert						\
   1012   1.1  christos {									\
   1013   1.1  christos   PseudoDbg_Assert_opcode,						\
   1014   1.1  christos   PseudoDbg_Assert_expected_bits, 	PseudoDbg_Assert_expected_mask,	\
   1015   1.1  christos   PseudoDbg_Assert_regtest_bits, 	PseudoDbg_Assert_regtest_mask,	\
   1016   1.1  christos   PseudoDbg_Assert_grp_bits,		PseudoDbg_Assert_grp_mask,	\
   1017   1.1  christos   PseudoDbg_Assert_dbgop_bits, 		PseudoDbg_Assert_dbgop_mask,	\
   1018   1.1  christos   PseudoDbg_Assert_dontcare_bits, 	PseudoDbg_Assert_dontcare_mask,	\
   1019   1.1  christos   PseudoDbg_Assert_code_bits,	 	PseudoDbg_Assert_code_mask	\
   1020   1.1  christos };
   1021   1.1  christos 
   1022   1.1  christos /*  pseudoChr
   1023   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1024   1.1  christos | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |.ch............................|
   1025   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1026   1.1  christos */
   1027   1.1  christos 
   1028   1.1  christos typedef struct
   1029   1.1  christos {
   1030   1.1  christos   unsigned short opcode;
   1031   1.1  christos   int bits_ch;
   1032   1.1  christos   int mask_ch;
   1033   1.1  christos   int bits_code;
   1034   1.1  christos   int mask_code;
   1035   1.1  christos } PseudoChr;
   1036   1.1  christos 
   1037   1.1  christos #define PseudoChr_opcode	0xf900
   1038   1.1  christos #define PseudoChr_ch_bits	0
   1039   1.1  christos #define PseudoChr_ch_mask	0xff
   1040   1.1  christos #define PseudoChr_code_bits	8
   1041   1.1  christos #define PseudoChr_code_mask	0xff
   1042   1.1  christos 
   1043   1.1  christos #define init_PseudoChr				\
   1044   1.1  christos {						\
   1045   1.1  christos   PseudoChr_opcode,				\
   1046   1.1  christos   PseudoChr_ch_bits,	PseudoChr_ch_mask,	\
   1047   1.1  christos   PseudoChr_code_bits,	PseudoChr_code_mask	\
   1048   1.1  christos };
   1049   1.1  christos 
   1050   1.1  christos /*  CaCTRL
   1051   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1052   1.1  christos | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 |.a.|.op....|.reg.......|
   1053   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1054   1.1  christos */
   1055   1.1  christos 
   1056   1.1  christos typedef struct
   1057   1.1  christos {
   1058   1.1  christos   unsigned short opcode;
   1059   1.1  christos   int bits_reg;
   1060   1.1  christos   int mask_reg;
   1061   1.1  christos   int bits_op;
   1062   1.1  christos   int mask_op;
   1063   1.1  christos   int bits_a;
   1064   1.1  christos   int mask_a;
   1065   1.1  christos   int bits_code;
   1066   1.1  christos   int mask_code;
   1067   1.1  christos } CaCTRL;
   1068   1.1  christos 
   1069   1.1  christos #define CaCTRL_opcode		0x0240
   1070   1.1  christos #define CaCTRL_reg_bits		0
   1071   1.1  christos #define CaCTRL_reg_mask		0x7
   1072   1.1  christos #define CaCTRL_op_bits		3
   1073   1.1  christos #define CaCTRL_op_mask		0x3
   1074   1.1  christos #define CaCTRL_a_bits		5
   1075   1.1  christos #define CaCTRL_a_mask		0x1
   1076   1.1  christos #define CaCTRL_code_bits	6
   1077   1.1  christos #define CaCTRL_code_mask	0x3fff
   1078   1.1  christos 
   1079   1.1  christos #define init_CaCTRL				\
   1080   1.1  christos {						\
   1081   1.1  christos   CaCTRL_opcode,				\
   1082   1.1  christos   CaCTRL_reg_bits,	CaCTRL_reg_mask,	\
   1083   1.1  christos   CaCTRL_op_bits,	CaCTRL_op_mask,		\
   1084   1.1  christos   CaCTRL_a_bits,	CaCTRL_a_mask,		\
   1085   1.1  christos   CaCTRL_code_bits,	CaCTRL_code_mask	\
   1086   1.1  christos };
   1087   1.1  christos 
   1088   1.1  christos /*  PushPopMultiple
   1089   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1090   1.1  christos | 0 | 0 | 0 | 0 | 0 | 1 | 0 |.d.|.p.|.W.|.dr........|.pr........|
   1091   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1092   1.1  christos */
   1093   1.1  christos 
   1094   1.1  christos typedef struct
   1095   1.1  christos {
   1096   1.1  christos   unsigned short opcode;
   1097   1.1  christos   int bits_pr;
   1098   1.1  christos   int mask_pr;
   1099   1.1  christos   int bits_dr;
   1100   1.1  christos   int mask_dr;
   1101   1.1  christos   int bits_W;
   1102   1.1  christos   int mask_W;
   1103   1.1  christos   int bits_p;
   1104   1.1  christos   int mask_p;
   1105   1.1  christos   int bits_d;
   1106   1.1  christos   int mask_d;
   1107   1.1  christos   int bits_code;
   1108   1.1  christos   int mask_code;
   1109   1.1  christos } PushPopMultiple;
   1110   1.1  christos 
   1111   1.1  christos #define PushPopMultiple_opcode		0x0400
   1112   1.1  christos #define PushPopMultiple_pr_bits		0
   1113   1.1  christos #define PushPopMultiple_pr_mask		0x7
   1114   1.1  christos #define PushPopMultiple_dr_bits		3
   1115   1.1  christos #define PushPopMultiple_dr_mask		0x7
   1116   1.1  christos #define PushPopMultiple_W_bits		6
   1117   1.1  christos #define PushPopMultiple_W_mask		0x1
   1118   1.1  christos #define PushPopMultiple_p_bits		7
   1119   1.1  christos #define PushPopMultiple_p_mask		0x1
   1120   1.1  christos #define PushPopMultiple_d_bits		8
   1121   1.1  christos #define PushPopMultiple_d_mask		0x1
   1122   1.1  christos #define PushPopMultiple_code_bits	8
   1123   1.1  christos #define PushPopMultiple_code_mask	0x1
   1124   1.1  christos 
   1125   1.1  christos #define init_PushPopMultiple					\
   1126   1.1  christos {								\
   1127   1.1  christos   PushPopMultiple_opcode,					\
   1128   1.1  christos   PushPopMultiple_pr_bits,	PushPopMultiple_pr_mask,	\
   1129   1.1  christos   PushPopMultiple_dr_bits,	PushPopMultiple_dr_mask,	\
   1130   1.1  christos   PushPopMultiple_W_bits,	PushPopMultiple_W_mask,		\
   1131   1.1  christos   PushPopMultiple_p_bits,	PushPopMultiple_p_mask,		\
   1132   1.1  christos   PushPopMultiple_d_bits,	PushPopMultiple_d_mask,		\
   1133   1.1  christos   PushPopMultiple_code_bits,	PushPopMultiple_code_mask	\
   1134   1.1  christos };
   1135   1.1  christos 
   1136   1.1  christos /*  PushPopReg
   1137   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1138   1.1  christos | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |.W.|.grp.......|.reg.......|
   1139   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1140   1.1  christos */
   1141   1.1  christos 
   1142   1.1  christos typedef struct
   1143   1.1  christos {
   1144   1.1  christos   unsigned short opcode;
   1145   1.1  christos   int bits_reg;
   1146   1.1  christos   int mask_reg;
   1147   1.1  christos   int bits_grp;
   1148   1.1  christos   int mask_grp;
   1149   1.1  christos   int bits_W;
   1150   1.1  christos   int mask_W;
   1151   1.1  christos   int bits_code;
   1152   1.1  christos   int mask_code;
   1153   1.1  christos } PushPopReg;
   1154   1.1  christos 
   1155   1.1  christos #define PushPopReg_opcode	0x0100
   1156   1.1  christos #define PushPopReg_reg_bits	0
   1157   1.1  christos #define PushPopReg_reg_mask	0x7
   1158   1.1  christos #define PushPopReg_grp_bits	3
   1159   1.1  christos #define PushPopReg_grp_mask	0x7
   1160   1.1  christos #define PushPopReg_W_bits	6
   1161   1.1  christos #define PushPopReg_W_mask	0x1
   1162   1.1  christos #define PushPopReg_code_bits	7
   1163   1.1  christos #define PushPopReg_code_mask	0x1ff
   1164   1.1  christos 
   1165   1.1  christos #define init_PushPopReg				\
   1166   1.1  christos {						\
   1167   1.1  christos   PushPopReg_opcode,				\
   1168   1.1  christos   PushPopReg_reg_bits,	PushPopReg_reg_mask,	\
   1169   1.1  christos   PushPopReg_grp_bits,	PushPopReg_grp_mask,	\
   1170   1.1  christos   PushPopReg_W_bits,	PushPopReg_W_mask,	\
   1171   1.1  christos   PushPopReg_code_bits,	PushPopReg_code_mask,	\
   1172   1.1  christos };
   1173   1.1  christos 
   1174   1.1  christos /*  linkage
   1175   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1176   1.1  christos | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |.R.|
   1177   1.1  christos |.framesize.....................................................|
   1178   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1179   1.1  christos */
   1180   1.1  christos 
   1181   1.1  christos typedef struct
   1182   1.1  christos {
   1183   1.1  christos   unsigned long opcode;
   1184   1.1  christos   int bits_framesize;
   1185   1.1  christos   int mask_framesize;
   1186   1.1  christos   int bits_R;
   1187   1.1  christos   int mask_R;
   1188   1.1  christos   int bits_code;
   1189   1.1  christos   int mask_code;
   1190   1.1  christos } Linkage;
   1191   1.1  christos 
   1192   1.1  christos #define Linkage_opcode		0xe8000000
   1193   1.1  christos #define Linkage_framesize_bits	0
   1194   1.1  christos #define Linkage_framesize_mask	0xffff
   1195   1.1  christos #define Linkage_R_bits		16
   1196   1.1  christos #define Linkage_R_mask		0x1
   1197   1.1  christos #define Linkage_code_bits	17
   1198   1.1  christos #define Linkage_code_mask	0x7fff
   1199   1.1  christos 
   1200   1.1  christos #define init_Linkage					\
   1201   1.1  christos {							\
   1202   1.1  christos   Linkage_opcode,					\
   1203   1.1  christos   Linkage_framesize_bits,	Linkage_framesize_mask,	\
   1204   1.1  christos   Linkage_R_bits,		Linkage_R_mask,		\
   1205   1.1  christos   Linkage_code_bits,		Linkage_code_mask	\
   1206   1.1  christos };
   1207   1.1  christos 
   1208   1.1  christos /*  LoopSetup
   1209   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1210   1.1  christos | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |.rop...|.c.|.soffset.......|
   1211   1.1  christos |.reg...........| - | - |.eoffset...............................|
   1212   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1213   1.1  christos */
   1214   1.1  christos 
   1215   1.1  christos typedef struct
   1216   1.1  christos {
   1217   1.1  christos   unsigned long opcode;
   1218   1.1  christos   int bits_eoffset;
   1219   1.1  christos   int mask_eoffset;
   1220   1.1  christos   int bits_dontcare;
   1221   1.1  christos   int mask_dontcare;
   1222   1.1  christos   int bits_reg;
   1223   1.1  christos   int mask_reg;
   1224   1.1  christos   int bits_soffset;
   1225   1.1  christos   int mask_soffset;
   1226   1.1  christos   int bits_c;
   1227   1.1  christos   int mask_c;
   1228   1.1  christos   int bits_rop;
   1229   1.1  christos   int mask_rop;
   1230   1.1  christos   int bits_code;
   1231   1.1  christos   int mask_code;
   1232   1.1  christos } LoopSetup;
   1233   1.1  christos 
   1234   1.1  christos #define LoopSetup_opcode		0xe0800000
   1235   1.1  christos #define LoopSetup_eoffset_bits		0
   1236   1.1  christos #define LoopSetup_eoffset_mask		0x3ff
   1237   1.1  christos #define LoopSetup_dontcare_bits		10
   1238   1.1  christos #define LoopSetup_dontcare_mask		0x3
   1239   1.1  christos #define LoopSetup_reg_bits		12
   1240   1.1  christos #define LoopSetup_reg_mask		0xf
   1241   1.1  christos #define LoopSetup_soffset_bits		16
   1242   1.1  christos #define LoopSetup_soffset_mask		0xf
   1243   1.1  christos #define LoopSetup_c_bits		20
   1244   1.1  christos #define LoopSetup_c_mask		0x1
   1245   1.1  christos #define LoopSetup_rop_bits		21
   1246   1.1  christos #define LoopSetup_rop_mask		0x3
   1247   1.1  christos #define LoopSetup_code_bits		23
   1248   1.1  christos #define LoopSetup_code_mask		0x1ff
   1249   1.1  christos 
   1250   1.1  christos #define init_LoopSetup						\
   1251   1.1  christos {								\
   1252   1.1  christos   LoopSetup_opcode,						\
   1253   1.1  christos   LoopSetup_eoffset_bits,	LoopSetup_eoffset_mask,		\
   1254   1.1  christos   LoopSetup_dontcare_bits,	LoopSetup_dontcare_mask,	\
   1255   1.1  christos   LoopSetup_reg_bits,		LoopSetup_reg_mask,		\
   1256   1.1  christos   LoopSetup_soffset_bits,	LoopSetup_soffset_mask,		\
   1257   1.1  christos   LoopSetup_c_bits,		LoopSetup_c_mask,		\
   1258   1.1  christos   LoopSetup_rop_bits,		LoopSetup_rop_mask,		\
   1259   1.1  christos   LoopSetup_code_bits,		LoopSetup_code_mask		\
   1260   1.1  christos };
   1261   1.1  christos 
   1262   1.1  christos /*  LDIMMhalf
   1263   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1264   1.1  christos | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 |.Z.|.H.|.S.|.grp...|.reg.......|
   1265   1.1  christos |.hword.........................................................|
   1266   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1267   1.1  christos */
   1268   1.1  christos 
   1269   1.1  christos typedef struct
   1270   1.1  christos {
   1271   1.1  christos   unsigned long opcode;
   1272   1.1  christos   int bits_hword;
   1273   1.1  christos   int mask_hword;
   1274   1.1  christos   int bits_reg;
   1275   1.1  christos   int mask_reg;
   1276   1.1  christos   int bits_grp;
   1277   1.1  christos   int mask_grp;
   1278   1.1  christos   int bits_S;
   1279   1.1  christos   int mask_S;
   1280   1.1  christos   int bits_H;
   1281   1.1  christos   int mask_H;
   1282   1.1  christos   int bits_Z;
   1283   1.1  christos   int mask_Z;
   1284   1.1  christos   int bits_code;
   1285   1.1  christos   int mask_code;
   1286   1.1  christos } LDIMMhalf;
   1287   1.1  christos 
   1288   1.1  christos #define LDIMMhalf_opcode	0xe1000000
   1289   1.1  christos #define LDIMMhalf_hword_bits	0
   1290   1.1  christos #define LDIMMhalf_hword_mask	0xffff
   1291   1.1  christos #define LDIMMhalf_reg_bits	16
   1292   1.1  christos #define LDIMMhalf_reg_mask	0x7
   1293   1.1  christos #define LDIMMhalf_grp_bits	19
   1294   1.1  christos #define LDIMMhalf_grp_mask	0x3
   1295   1.1  christos #define LDIMMhalf_S_bits	21
   1296   1.1  christos #define LDIMMhalf_S_mask	0x1
   1297   1.1  christos #define LDIMMhalf_H_bits	22
   1298   1.1  christos #define LDIMMhalf_H_mask	0x1
   1299   1.1  christos #define LDIMMhalf_Z_bits	23
   1300   1.1  christos #define LDIMMhalf_Z_mask	0x1
   1301   1.1  christos #define LDIMMhalf_code_bits	24
   1302   1.1  christos #define LDIMMhalf_code_mask	0xff
   1303   1.1  christos 
   1304   1.1  christos #define init_LDIMMhalf				\
   1305   1.1  christos {						\
   1306   1.1  christos   LDIMMhalf_opcode,				\
   1307   1.1  christos   LDIMMhalf_hword_bits,	LDIMMhalf_hword_mask,	\
   1308   1.1  christos   LDIMMhalf_reg_bits,	LDIMMhalf_reg_mask,	\
   1309   1.1  christos   LDIMMhalf_grp_bits,	LDIMMhalf_grp_mask,	\
   1310   1.1  christos   LDIMMhalf_S_bits,	LDIMMhalf_S_mask,	\
   1311   1.1  christos   LDIMMhalf_H_bits,	LDIMMhalf_H_mask,	\
   1312   1.1  christos   LDIMMhalf_Z_bits,	LDIMMhalf_Z_mask,	\
   1313   1.1  christos   LDIMMhalf_code_bits,	LDIMMhalf_code_mask	\
   1314   1.1  christos };
   1315   1.1  christos 
   1316   1.1  christos 
   1317   1.1  christos /*  CC2dreg
   1318   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1319   1.1  christos | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |.op....|.reg.......|
   1320   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1321   1.1  christos */
   1322   1.1  christos 
   1323   1.1  christos typedef struct
   1324   1.1  christos {
   1325   1.1  christos   unsigned short opcode;
   1326   1.1  christos   int bits_reg;
   1327   1.1  christos   int mask_reg;
   1328   1.1  christos   int bits_op;
   1329   1.1  christos   int mask_op;
   1330   1.1  christos   int bits_code;
   1331   1.1  christos   int mask_code;
   1332   1.1  christos } CC2dreg;
   1333   1.1  christos 
   1334   1.1  christos #define CC2dreg_opcode		0x0200
   1335   1.1  christos #define CC2dreg_reg_bits	0
   1336   1.1  christos #define CC2dreg_reg_mask	0x7
   1337   1.1  christos #define CC2dreg_op_bits		3
   1338   1.1  christos #define CC2dreg_op_mask		0x3
   1339   1.1  christos #define CC2dreg_code_bits	5
   1340   1.1  christos #define CC2dreg_code_mask	0x7fff
   1341   1.1  christos 
   1342   1.1  christos #define init_CC2dreg				\
   1343   1.1  christos {						\
   1344   1.1  christos   CC2dreg_opcode,				\
   1345   1.1  christos   CC2dreg_reg_bits,	CC2dreg_reg_mask,	\
   1346   1.1  christos   CC2dreg_op_bits,	CC2dreg_op_mask,	\
   1347   1.1  christos   CC2dreg_code_bits,	CC2dreg_code_mask	\
   1348   1.1  christos };
   1349   1.1  christos 
   1350   1.1  christos 
   1351   1.1  christos /*  PTR2op
   1352   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1353   1.1  christos | 0 | 1 | 0 | 0 | 0 | 1 | 0 |.opc.......|.src.......|.dst.......|
   1354   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1355   1.1  christos */
   1356   1.1  christos 
   1357   1.1  christos typedef struct
   1358   1.1  christos {
   1359   1.1  christos   unsigned short opcode;
   1360   1.1  christos   int bits_dst;
   1361   1.1  christos   int mask_dst;
   1362   1.1  christos   int bits_src;
   1363   1.1  christos   int mask_src;
   1364   1.1  christos   int bits_opc;
   1365   1.1  christos   int mask_opc;
   1366   1.1  christos   int bits_code;
   1367   1.1  christos   int mask_code;
   1368   1.1  christos } PTR2op;
   1369   1.1  christos 
   1370   1.1  christos #define PTR2op_opcode		0x4400
   1371   1.1  christos #define PTR2op_dst_bits		0
   1372   1.1  christos #define PTR2op_dst_mask		0x7
   1373   1.1  christos #define PTR2op_src_bits		3
   1374   1.1  christos #define PTR2op_src_mask		0x7
   1375   1.1  christos #define PTR2op_opc_bits		6
   1376   1.1  christos #define PTR2op_opc_mask		0x7
   1377   1.1  christos #define PTR2op_code_bits	9
   1378   1.1  christos #define PTR2op_code_mask	0x7f
   1379   1.1  christos 
   1380   1.1  christos #define init_PTR2op				\
   1381   1.1  christos {						\
   1382   1.1  christos   PTR2op_opcode,				\
   1383   1.1  christos   PTR2op_dst_bits,	PTR2op_dst_mask,	\
   1384   1.1  christos   PTR2op_src_bits,	PTR2op_src_mask,	\
   1385   1.1  christos   PTR2op_opc_bits,	PTR2op_opc_mask,	\
   1386   1.1  christos   PTR2op_code_bits,	PTR2op_code_mask	\
   1387   1.1  christos };
   1388   1.1  christos 
   1389   1.1  christos 
   1390   1.1  christos /*  COMP3op
   1391   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1392   1.1  christos | 0 | 1 | 0 | 1 |.opc.......|.dst.......|.src1......|.src0......|
   1393   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1394   1.1  christos */
   1395   1.1  christos 
   1396   1.1  christos typedef struct
   1397   1.1  christos {
   1398   1.1  christos   unsigned short opcode;
   1399   1.1  christos   int bits_src0;
   1400   1.1  christos   int mask_src0;
   1401   1.1  christos   int bits_src1;
   1402   1.1  christos   int mask_src1;
   1403   1.1  christos   int bits_dst;
   1404   1.1  christos   int mask_dst;
   1405   1.1  christos   int bits_opc;
   1406   1.1  christos   int mask_opc;
   1407   1.1  christos   int bits_code;
   1408   1.1  christos   int mask_code;
   1409   1.1  christos } COMP3op;
   1410   1.1  christos 
   1411   1.1  christos #define COMP3op_opcode		0x5000
   1412   1.1  christos #define COMP3op_src0_bits	0
   1413   1.1  christos #define COMP3op_src0_mask	0x7
   1414   1.1  christos #define COMP3op_src1_bits	3
   1415   1.1  christos #define COMP3op_src1_mask	0x7
   1416   1.1  christos #define COMP3op_dst_bits	6
   1417   1.1  christos #define COMP3op_dst_mask	0x7
   1418   1.1  christos #define COMP3op_opc_bits	9
   1419   1.1  christos #define COMP3op_opc_mask	0x7
   1420   1.1  christos #define COMP3op_code_bits	12
   1421   1.1  christos #define COMP3op_code_mask	0xf
   1422   1.1  christos 
   1423   1.1  christos #define init_COMP3op				\
   1424   1.1  christos {						\
   1425   1.1  christos   COMP3op_opcode,				\
   1426   1.1  christos   COMP3op_src0_bits,	COMP3op_src0_mask,	\
   1427   1.1  christos   COMP3op_src1_bits,	COMP3op_src1_mask,	\
   1428   1.1  christos   COMP3op_dst_bits,	COMP3op_dst_mask,	\
   1429   1.1  christos   COMP3op_opc_bits,	COMP3op_opc_mask,	\
   1430   1.1  christos   COMP3op_code_bits,	COMP3op_code_mask	\
   1431   1.1  christos };
   1432   1.1  christos 
   1433   1.1  christos /*  ccMV
   1434   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1435   1.1  christos | 0 | 0 | 0 | 0 | 0 | 1 | 1 |.T.|.d.|.s.|.dst.......|.src.......|
   1436   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1437   1.1  christos */
   1438   1.1  christos 
   1439   1.1  christos typedef struct
   1440   1.1  christos {
   1441   1.1  christos   unsigned short opcode;
   1442   1.1  christos   int bits_src;
   1443   1.1  christos   int mask_src;
   1444   1.1  christos   int bits_dst;
   1445   1.1  christos   int mask_dst;
   1446   1.1  christos   int bits_s;
   1447   1.1  christos   int mask_s;
   1448   1.1  christos   int bits_d;
   1449   1.1  christos   int mask_d;
   1450   1.1  christos   int bits_T;
   1451   1.1  christos   int mask_T;
   1452   1.1  christos   int bits_code;
   1453   1.1  christos   int mask_code;
   1454   1.1  christos } CCmv;
   1455   1.1  christos 
   1456   1.1  christos #define CCmv_opcode	0x0600
   1457   1.1  christos #define CCmv_src_bits	0
   1458   1.1  christos #define CCmv_src_mask	0x7
   1459   1.1  christos #define CCmv_dst_bits	3
   1460   1.1  christos #define CCmv_dst_mask	0x7
   1461   1.1  christos #define CCmv_s_bits	6
   1462   1.1  christos #define CCmv_s_mask	0x1
   1463   1.1  christos #define CCmv_d_bits	7
   1464   1.1  christos #define CCmv_d_mask	0x1
   1465   1.1  christos #define CCmv_T_bits	8
   1466   1.1  christos #define CCmv_T_mask	0x1
   1467   1.1  christos #define CCmv_code_bits	9
   1468   1.1  christos #define CCmv_code_mask	0x7f
   1469   1.1  christos 
   1470   1.1  christos #define init_CCmv			\
   1471   1.1  christos {					\
   1472   1.1  christos   CCmv_opcode,				\
   1473   1.1  christos   CCmv_src_bits,	CCmv_src_mask,	\
   1474   1.1  christos   CCmv_dst_bits,	CCmv_dst_mask,	\
   1475   1.1  christos   CCmv_s_bits,		CCmv_s_mask,	\
   1476   1.1  christos   CCmv_d_bits,		CCmv_d_mask,	\
   1477   1.1  christos   CCmv_T_bits,		CCmv_T_mask,	\
   1478   1.1  christos   CCmv_code_bits,	CCmv_code_mask	\
   1479   1.1  christos };
   1480   1.1  christos 
   1481   1.1  christos 
   1482   1.1  christos /*  CCflag
   1483   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1484   1.1  christos | 0 | 0 | 0 | 0 | 1 |.I.|.opc.......|.G.|.y.........|.x.........|
   1485   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1486   1.1  christos */
   1487   1.1  christos 
   1488   1.1  christos typedef struct
   1489   1.1  christos {
   1490   1.1  christos   unsigned short opcode;
   1491   1.1  christos   int bits_x;
   1492   1.1  christos   int mask_x;
   1493   1.1  christos   int bits_y;
   1494   1.1  christos   int mask_y;
   1495   1.1  christos   int bits_G;
   1496   1.1  christos   int mask_G;
   1497   1.1  christos   int bits_opc;
   1498   1.1  christos   int mask_opc;
   1499   1.1  christos   int bits_I;
   1500   1.1  christos   int mask_I;
   1501   1.1  christos   int bits_code;
   1502   1.1  christos   int mask_code;
   1503   1.1  christos } CCflag;
   1504   1.1  christos 
   1505   1.1  christos #define CCflag_opcode		0x0800
   1506   1.1  christos #define CCflag_x_bits		0
   1507   1.1  christos #define CCflag_x_mask		0x7
   1508   1.1  christos #define CCflag_y_bits		3
   1509   1.1  christos #define CCflag_y_mask		0x7
   1510   1.1  christos #define CCflag_G_bits		6
   1511   1.1  christos #define CCflag_G_mask		0x1
   1512   1.1  christos #define CCflag_opc_bits		7
   1513   1.1  christos #define CCflag_opc_mask		0x7
   1514   1.1  christos #define CCflag_I_bits		10
   1515   1.1  christos #define CCflag_I_mask		0x1
   1516   1.1  christos #define CCflag_code_bits	11
   1517   1.1  christos #define CCflag_code_mask	0x1f
   1518   1.1  christos 
   1519   1.1  christos #define init_CCflag				\
   1520   1.1  christos {						\
   1521   1.1  christos   CCflag_opcode,				\
   1522   1.1  christos   CCflag_x_bits,	CCflag_x_mask,		\
   1523   1.1  christos   CCflag_y_bits,	CCflag_y_mask,		\
   1524   1.1  christos   CCflag_G_bits,	CCflag_G_mask,		\
   1525   1.1  christos   CCflag_opc_bits,	CCflag_opc_mask,	\
   1526   1.1  christos   CCflag_I_bits,	CCflag_I_mask,		\
   1527   1.1  christos   CCflag_code_bits,	CCflag_code_mask,	\
   1528   1.1  christos };
   1529   1.1  christos 
   1530   1.1  christos 
   1531   1.1  christos /*  CC2stat
   1532   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1533   1.1  christos | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |.D.|.op....|.cbit..............|
   1534   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1535   1.1  christos */
   1536   1.1  christos 
   1537   1.1  christos typedef struct
   1538   1.1  christos {
   1539   1.1  christos   unsigned short opcode;
   1540   1.1  christos   int bits_cbit;
   1541   1.1  christos   int mask_cbit;
   1542   1.1  christos   int bits_op;
   1543   1.1  christos   int mask_op;
   1544   1.1  christos   int bits_D;
   1545   1.1  christos   int mask_D;
   1546   1.1  christos   int bits_code;
   1547   1.1  christos   int mask_code;
   1548   1.1  christos } CC2stat;
   1549   1.1  christos 
   1550   1.1  christos #define CC2stat_opcode		0x0300
   1551   1.1  christos #define CC2stat_cbit_bits	0
   1552   1.1  christos #define CC2stat_cbit_mask	0x1f
   1553   1.1  christos #define CC2stat_op_bits		5
   1554   1.1  christos #define CC2stat_op_mask		0x3
   1555   1.1  christos #define CC2stat_D_bits		7
   1556   1.1  christos #define CC2stat_D_mask		0x1
   1557   1.1  christos #define CC2stat_code_bits	8
   1558   1.1  christos #define CC2stat_code_mask	0xff
   1559   1.1  christos 
   1560   1.1  christos #define init_CC2stat				\
   1561   1.1  christos {						\
   1562   1.1  christos   CC2stat_opcode,				\
   1563   1.1  christos   CC2stat_cbit_bits,	CC2stat_cbit_mask,	\
   1564   1.1  christos   CC2stat_op_bits,	CC2stat_op_mask,	\
   1565   1.1  christos   CC2stat_D_bits,	CC2stat_D_mask,		\
   1566   1.1  christos   CC2stat_code_bits,	CC2stat_code_mask	\
   1567   1.1  christos };
   1568   1.1  christos 
   1569   1.1  christos 
   1570   1.1  christos /*  REGMV
   1571   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1572   1.1  christos | 0 | 0 | 1 | 1 |.gd........|.gs........|.dst.......|.src.......|
   1573   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1574   1.1  christos */
   1575   1.1  christos 
   1576   1.1  christos typedef struct
   1577   1.1  christos {
   1578   1.1  christos   unsigned short opcode;
   1579   1.1  christos   int bits_src;
   1580   1.1  christos   int mask_src;
   1581   1.1  christos   int bits_dst;
   1582   1.1  christos   int mask_dst;
   1583   1.1  christos   int bits_gs;
   1584   1.1  christos   int mask_gs;
   1585   1.1  christos   int bits_gd;
   1586   1.1  christos   int mask_gd;
   1587   1.1  christos   int bits_code;
   1588   1.1  christos   int mask_code;
   1589   1.1  christos } RegMv;
   1590   1.1  christos 
   1591   1.1  christos #define RegMv_opcode		0x3000
   1592   1.1  christos #define RegMv_src_bits		0
   1593   1.1  christos #define RegMv_src_mask		0x7
   1594   1.1  christos #define RegMv_dst_bits		3
   1595   1.1  christos #define RegMv_dst_mask		0x7
   1596   1.1  christos #define RegMv_gs_bits		6
   1597   1.1  christos #define RegMv_gs_mask		0x7
   1598   1.1  christos #define RegMv_gd_bits		9
   1599   1.1  christos #define RegMv_gd_mask		0x7
   1600   1.1  christos #define RegMv_code_bits		12
   1601   1.1  christos #define RegMv_code_mask		0xf
   1602   1.1  christos 
   1603   1.1  christos #define init_RegMv			\
   1604   1.1  christos {					\
   1605   1.1  christos   RegMv_opcode,				\
   1606   1.1  christos   RegMv_src_bits,	RegMv_src_mask,	\
   1607   1.1  christos   RegMv_dst_bits,	RegMv_dst_mask,	\
   1608   1.1  christos   RegMv_gs_bits,	RegMv_gs_mask,	\
   1609   1.1  christos   RegMv_gd_bits,	RegMv_gd_mask,	\
   1610   1.1  christos   RegMv_code_bits,	RegMv_code_mask	\
   1611   1.1  christos };
   1612   1.1  christos 
   1613   1.1  christos 
   1614   1.1  christos /*  COMPI2opD
   1615   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1616   1.1  christos | 0 | 1 | 1 | 0 | 0 |.op|.isrc......................|.dst.......|
   1617   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1618   1.1  christos */
   1619   1.1  christos 
   1620   1.1  christos typedef struct
   1621   1.1  christos {
   1622   1.1  christos   unsigned short opcode;
   1623   1.1  christos   int bits_dst;
   1624   1.1  christos   int mask_dst;
   1625   1.1  christos   int bits_src;
   1626   1.1  christos   int mask_src;
   1627   1.1  christos   int bits_op;
   1628   1.1  christos   int mask_op;
   1629   1.1  christos   int bits_code;
   1630   1.1  christos   int mask_code;
   1631   1.1  christos } COMPI2opD;
   1632   1.1  christos 
   1633   1.1  christos #define COMPI2opD_opcode	0x6000
   1634   1.1  christos #define COMPI2opD_dst_bits	0
   1635   1.1  christos #define COMPI2opD_dst_mask	0x7
   1636   1.1  christos #define COMPI2opD_src_bits	3
   1637   1.1  christos #define COMPI2opD_src_mask	0x7f
   1638   1.1  christos #define COMPI2opD_op_bits	10
   1639   1.1  christos #define COMPI2opD_op_mask	0x1
   1640   1.1  christos #define COMPI2opD_code_bits	11
   1641   1.1  christos #define COMPI2opD_code_mask	0x1f
   1642   1.1  christos 
   1643   1.1  christos #define init_COMPI2opD				\
   1644   1.1  christos {						\
   1645   1.1  christos   COMPI2opD_opcode,				\
   1646   1.1  christos   COMPI2opD_dst_bits,	COMPI2opD_dst_mask,	\
   1647   1.1  christos   COMPI2opD_src_bits,	COMPI2opD_src_mask,	\
   1648   1.1  christos   COMPI2opD_op_bits,	COMPI2opD_op_mask,	\
   1649   1.1  christos   COMPI2opD_code_bits,	COMPI2opD_code_mask	\
   1650   1.1  christos };
   1651   1.1  christos 
   1652   1.1  christos /*  COMPI2opP
   1653   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1654   1.1  christos | 0 | 1 | 1 | 0 | 1 |.op|.src.......................|.dst.......|
   1655   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1656   1.1  christos */
   1657   1.1  christos 
   1658   1.1  christos typedef COMPI2opD COMPI2opP;
   1659   1.1  christos 
   1660   1.1  christos #define COMPI2opP_opcode 	0x6800
   1661   1.1  christos #define COMPI2opP_dst_bits	0
   1662   1.1  christos #define COMPI2opP_dst_mask	0x7
   1663   1.1  christos #define COMPI2opP_src_bits	3
   1664   1.1  christos #define COMPI2opP_src_mask	0x7f
   1665   1.1  christos #define COMPI2opP_op_bits	10
   1666   1.1  christos #define COMPI2opP_op_mask	0x1
   1667   1.1  christos #define COMPI2opP_code_bits	11
   1668   1.1  christos #define COMPI2opP_code_mask	0x1f
   1669   1.1  christos 
   1670   1.1  christos #define init_COMPI2opP				\
   1671   1.1  christos {						\
   1672   1.1  christos   COMPI2opP_opcode,				\
   1673   1.1  christos   COMPI2opP_dst_bits,	COMPI2opP_dst_mask,	\
   1674   1.1  christos   COMPI2opP_src_bits,	COMPI2opP_src_mask,	\
   1675   1.1  christos   COMPI2opP_op_bits,	COMPI2opP_op_mask,	\
   1676   1.1  christos   COMPI2opP_code_bits,	COMPI2opP_code_mask	\
   1677   1.1  christos };
   1678   1.1  christos 
   1679   1.1  christos 
   1680   1.1  christos /*  dagMODim
   1681   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1682   1.1  christos | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 |.br| 1 | 1 |.op|.m.....|.i.....|
   1683   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1684   1.1  christos */
   1685   1.1  christos 
   1686   1.1  christos typedef struct
   1687   1.1  christos {
   1688   1.1  christos   unsigned short opcode;
   1689   1.1  christos   int bits_i;
   1690   1.1  christos   int mask_i;
   1691   1.1  christos   int bits_m;
   1692   1.1  christos   int mask_m;
   1693   1.1  christos   int bits_op;
   1694   1.1  christos   int mask_op;
   1695   1.1  christos   int bits_code2;
   1696   1.1  christos   int mask_code2;
   1697   1.1  christos   int bits_br;
   1698   1.1  christos   int mask_br;
   1699   1.1  christos   int bits_code;
   1700   1.1  christos   int mask_code;
   1701   1.1  christos } DagMODim;
   1702   1.1  christos 
   1703   1.1  christos #define DagMODim_opcode		0x9e60
   1704   1.1  christos #define DagMODim_i_bits		0
   1705   1.1  christos #define DagMODim_i_mask		0x3
   1706   1.1  christos #define DagMODim_m_bits		2
   1707   1.1  christos #define DagMODim_m_mask		0x3
   1708   1.1  christos #define DagMODim_op_bits	4
   1709   1.1  christos #define DagMODim_op_mask	0x1
   1710   1.1  christos #define DagMODim_code2_bits	5
   1711   1.1  christos #define DagMODim_code2_mask	0x3
   1712   1.1  christos #define DagMODim_br_bits	7
   1713   1.1  christos #define DagMODim_br_mask	0x1
   1714   1.1  christos #define DagMODim_code_bits	8
   1715   1.1  christos #define DagMODim_code_mask	0xff
   1716   1.1  christos 
   1717   1.1  christos #define init_DagMODim				\
   1718   1.1  christos {						\
   1719   1.1  christos   DagMODim_opcode,				\
   1720   1.1  christos   DagMODim_i_bits,	DagMODim_i_mask,	\
   1721   1.1  christos   DagMODim_m_bits,	DagMODim_m_mask,	\
   1722   1.1  christos   DagMODim_op_bits,	DagMODim_op_mask,	\
   1723   1.1  christos   DagMODim_code2_bits,	DagMODim_code2_mask,	\
   1724   1.1  christos   DagMODim_br_bits,	DagMODim_br_mask,	\
   1725   1.1  christos   DagMODim_code_bits,	DagMODim_code_mask	\
   1726   1.1  christos };
   1727   1.1  christos 
   1728   1.1  christos /*  dagMODik
   1729   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1730   1.1  christos | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 |.op....|.i.....|
   1731   1.1  christos +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1732   1.1  christos */
   1733   1.1  christos 
   1734   1.1  christos typedef struct
   1735   1.1  christos {
   1736   1.1  christos   unsigned short opcode;
   1737   1.1  christos   int bits_i;
   1738   1.1  christos   int mask_i;
   1739   1.1  christos   int bits_op;
   1740   1.1  christos   int mask_op;
   1741   1.1  christos   int bits_code;
   1742   1.1  christos   int mask_code;
   1743   1.1  christos } DagMODik;
   1744   1.1  christos 
   1745   1.1  christos #define DagMODik_opcode		0x9f60
   1746   1.1  christos #define DagMODik_i_bits		0
   1747   1.1  christos #define DagMODik_i_mask		0x3
   1748   1.1  christos #define DagMODik_op_bits	2
   1749   1.1  christos #define DagMODik_op_mask	0x3
   1750   1.1  christos #define DagMODik_code_bits	3
   1751   1.1  christos #define DagMODik_code_mask	0xfff
   1752   1.1  christos 
   1753   1.1  christos #define init_DagMODik				\
   1754   1.1  christos {						\
   1755   1.1  christos   DagMODik_opcode,				\
   1756   1.1  christos   DagMODik_i_bits,	DagMODik_i_mask,	\
   1757   1.1  christos   DagMODik_op_bits,	DagMODik_op_mask,	\
   1758   1.1  christos   DagMODik_code_bits,	DagMODik_code_mask	\
   1759   1.1  christos };
   1760   1.1  christos 
   1761   1.1  christos #endif
   1762