Home | History | Annotate | Line # | Download | only in opcode
      1 #ifndef S12Z_H
      2 #define S12Z_H
      3 
      4 /* This byte is used to prefix instructions in "page 2" of the opcode
      5    space.  */
      6 #define PAGE2_PREBYTE (0x1b)
      7 
      8 struct reg
      9 {
     10   char      *name;   /* The canonical name of the register.  */
     11   int       bytes;   /* its size, in bytes.  */
     12 };
     13 
     14 
     15 /* How many registers do we have.  Actually there are only 13,
     16    because CCL and CCH are the low and high bytes of CCW.  But
     17    for assemnbly / disassembly purposes they are considered
     18    distinct registers.  */
     19 #define S12Z_N_REGISTERS 15
     20 
     21 extern const struct reg registers[S12Z_N_REGISTERS];
     22 
     23 /* Solaris defines REG_Y in sys/regset.h; undef it here to avoid
     24    breaking compilation when this target is enabled.  */
     25 #undef REG_Y
     26 
     27 enum
     28   {
     29     REG_D2 = 0,
     30     REG_D3,
     31     REG_D4,
     32     REG_D5,
     33     REG_D0,
     34     REG_D1,
     35     REG_D6,
     36     REG_D7,
     37     REG_X,
     38     REG_Y,
     39     REG_S,
     40     REG_P,
     41     REG_CCH,
     42     REG_CCL,
     43     REG_CCW
     44   };
     45 
     46 /* Any of the registers d0, d1, ... d7.  */
     47 #define REG_BIT_Dn \
     48 ((0x1U << REG_D2) | \
     49  (0x1U << REG_D3) | \
     50  (0x1U << REG_D4) | \
     51  (0x1U << REG_D5) | \
     52  (0x1U << REG_D6) | \
     53  (0x1U << REG_D7) | \
     54  (0x1U << REG_D0) | \
     55  (0x1U << REG_D1))
     56 
     57 /* Any of the registers x, y or z.  */
     58 #define REG_BIT_XYS \
     59 ((0x1U << REG_X) | \
     60  (0x1U << REG_Y) | \
     61  (0x1U << REG_S))
     62 
     63 /* Any of the registers x, y, z or p.  */
     64 #define REG_BIT_XYSP \
     65 ((0x1U << REG_X)  | \
     66  (0x1U << REG_Y)  | \
     67  (0x1U << REG_S)  | \
     68  (0x1U << REG_P))
     69 
     70 /* The x register or the y register.  */
     71 #define REG_BIT_XY \
     72 ((0x1U << REG_X) | \
     73  (0x1U << REG_Y))
     74 
     75 #endif
     76