summaryrefslogtreecommitdiff
path: root/src/arch/arm/v7/helpers.h
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2014-12-09 23:07:29 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2014-12-09 23:07:29 (GMT)
commit224a2ef04e37cd180a58ede3469fddc59e39bc13 (patch)
tree9b61b706f525304e919e9fa8b1fcb78392746acd /src/arch/arm/v7/helpers.h
parent096f123b87437cf25cd008a6dea710286fbefcf0 (diff)
Supported new ARMv7 instructions.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@438 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/arch/arm/v7/helpers.h')
-rw-r--r--src/arch/arm/v7/helpers.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/arch/arm/v7/helpers.h b/src/arch/arm/v7/helpers.h
index fee5aea..919611e 100644
--- a/src/arch/arm/v7/helpers.h
+++ b/src/arch/arm/v7/helpers.h
@@ -31,6 +31,7 @@
#include "pseudo.h"
#include "operands/maccess.h"
#include "operands/offset.h"
+#include "operands/reglist.h"
#include "operands/shift.h"
#include "../../operand.h"
@@ -188,8 +189,30 @@ return shift_t;
+/**
+ * Glue purement interne pour les listes de registres.
+ */
+
+#define RegistersList(mask) \
+ ({ \
+ GArchOperand *__result; \
+ __result = g_armv7_reglist_operand_new(); \
+ if (!g_armv7_reglist_load_registers(G_ARMV7_REGLIST_OPERAND(__result), mask)) \
+ { \
+ g_object_unref(G_OBJECT(__result)); \
+ __result = NULL; \
+ } \
+ __result; \
+ })
+#define ListFromRegister(reg) \
+ ({ \
+ GArchOperand *__result; \
+ __result = g_armv7_reglist_operand_new(); \
+ g_armv7_reglist_add_register(G_ARMV7_REGLIST_OPERAND(__result), reg); \
+ __result; \
+ })