summaryrefslogtreecommitdiff
path: root/lib/builtins/assembly.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/builtins/assembly.h')
-rw-r--r--lib/builtins/assembly.h14
1 files changed, 13 insertions, 1 deletions
diff --git a/lib/builtins/assembly.h b/lib/builtins/assembly.h
index d415a5f8d..b09fcd55a 100644
--- a/lib/builtins/assembly.h
+++ b/lib/builtins/assembly.h
@@ -22,6 +22,16 @@
#define SEPARATOR ;
#endif
+#if defined(__arm__)
+#if __ARM_ARCH_ISA_THUMB == 2
+#define IT it
+#define ITT itt
+#else
+#define IT @
+#define ITT @
+#endif
+#endif
+
#if defined(__APPLE__)
#define HIDDEN(name) .private_extern name
#define LOCAL_LABEL(name) L_##name
@@ -86,7 +96,9 @@
#ifdef ARM_HAS_BX
#define JMP(r) bx r
-#define JMPc(r, c) bx##c r
+#define JMPc(r, c) \
+ IT c; \
+ bx##c r
#else
#define JMP(r) mov pc, r
#define JMPc(r, c) mov##c pc, r