diff options
author | John Darrington <john@darrington.wattle.id.au> | 2018-07-11 10:42:01 +0200 |
---|---|---|
committer | John Darrington <john@darrington.wattle.id.au> | 2018-08-18 07:50:03 +0200 |
commit | 7ba3ba91a3dbc43f7ff16c4899f7f1cbef056db0 (patch) | |
tree | 9dc0beb27e3933bb64dc6d4265d391f65f601dbc /include/opcode/s12z.h | |
parent | 2e72a56e451cf26fb01712d6004d3b6a70749756 (diff) | |
download | gdb-7ba3ba91a3dbc43f7ff16c4899f7f1cbef056db0.zip gdb-7ba3ba91a3dbc43f7ff16c4899f7f1cbef056db0.tar.gz gdb-7ba3ba91a3dbc43f7ff16c4899f7f1cbef056db0.tar.bz2 |
S12Z: Move opcode header to public include directory.
opcodes/
* s12z.h: Delete.
* s12z-dis.c: Adjust path of included file.
include/
* opcode/s12z.h: New file.
gas/
* config/tc-s12z.c: Adjust path of included file.
Diffstat (limited to 'include/opcode/s12z.h')
-rw-r--r-- | include/opcode/s12z.h | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/include/opcode/s12z.h b/include/opcode/s12z.h new file mode 100644 index 0000000..7e38ac5 --- /dev/null +++ b/include/opcode/s12z.h @@ -0,0 +1,71 @@ +#ifndef S12Z_H +#define S12Z_H + +/* This byte is used to prefix instructions in "page 2" of the opcode + space */ +#define PAGE2_PREBYTE (0x1b) + +struct reg +{ + char *name; /* The canonical name of the register */ + int bytes; /* its size, in bytes */ +}; + + +/* How many registers do we have. Actually there are only 13, + because CCL and CCH are the low and high bytes of CCW. But + for assemnbly / disassembly purposes they are considered + distinct registers. */ +#define S12Z_N_REGISTERS 15 + +extern const struct reg registers[S12Z_N_REGISTERS]; + +enum { + REG_D2 = 0, + REG_D3, + REG_D4, + REG_D5, + REG_D0, + REG_D1, + REG_D6, + REG_D7, + REG_X, + REG_Y, + REG_S, + REG_P, + REG_CCH, + REG_CCL, + REG_CCW + }; + +/* Any of the registers d0, d1, ... d7 */ +#define REG_BIT_Dn \ +((0x1U << REG_D2) | \ + (0x1U << REG_D3) | \ + (0x1U << REG_D4) | \ + (0x1U << REG_D5) | \ + (0x1U << REG_D6) | \ + (0x1U << REG_D7) | \ + (0x1U << REG_D0) | \ + (0x1U << REG_D1)) + +/* Any of the registers x, y or z */ +#define REG_BIT_XYS \ +((0x1U << REG_X) | \ + (0x1U << REG_Y) | \ + (0x1U << REG_S)) + +/* Any of the registers x, y, z or p */ +#define REG_BIT_XYSP \ +((0x1U << REG_X) | \ + (0x1U << REG_Y) | \ + (0x1U << REG_S) | \ + (0x1U << REG_P)) + +/* The x register or the y register */ +#define REG_BIT_XY \ +((0x1U << REG_X) | \ + (0x1U << REG_Y)) + + +#endif |