FT32: define macros for instruction recognition.
authorjamesbowman <jamesb@excamera.com>
Mon, 28 Sep 2015 18:22:06 +0000 (11:22 -0700)
committerjamesbowman <jamesb@excamera.com>
Mon, 28 Sep 2015 18:23:54 +0000 (11:23 -0700)
Other places (e.g. the gdb stack unwinder) can use these instead of
hard-coded patterns.

[include/Changelog]

2015-09-26  James Bowman  <james.bowman@ftdichip.com>

* opcode/ft32.h: Add instruction macros FT32_*()

include/ChangeLog
include/opcode/ft32.h

index 8b9f921f292c5440296ff18970002f249fcbec9f..99a8bd9109758fa871edaac7e6ab6dc7d76ba88a 100644 (file)
@@ -1,3 +1,7 @@
+2015-09-26  James Bowman  <james.bowman@ftdichip.com>
+
+       * opcode/ft32.h: Add instruction macros FT32_*()
+
 2015-09-20  Rich Felker  <dalias@libc.org>
 
        * bfdlink.h (struct bfd_link_info): Add "nointerp" field.
index 961789086c0687746e757f2c08937362a7c6bfdc..6db46d929a7be9c9d034b995a1ffb83c50111ee6 100644 (file)
@@ -96,5 +96,11 @@ typedef struct ft32_opc_info_t
 #define FT32_FLD_AL_BIT 0
 #define FT32_FLD_AL_SIZ 4
 
+#define FT32_IS_CALL(inst)   (((inst) & 0xfffc0000) == 0x00340000)
+#define FT32_IS_PUSH(inst)   (((inst) & 0xfff00000) == 0x84000000)
+#define FT32_PUSH_REG(inst)  (((inst) >> 15) & 0x1f)
+#define FT32_IS_LINK(inst)   (((inst) & 0xffff0000) == 0x95d00000)
+#define FT32_LINK_SIZE(inst) ((inst) & 0xffff)
+
 #define FT32_FLD_R_D_POST (1 << 17)
 #define FT32_FLD_R_1_POST (1 << 18)