+/* global function/external symbol */
+#ifndef __APPLE__
+#define ESYM(name) name
+
+#define FUNCTION(name) \
+ .globl name; \
+ .type name, %function; \
+ name
+
+#define ESIZE(name_, size_) \
+ .size name_, size_
+
+#define EOBJECT(name_) \
+ .type name_, %object
+
+#define EXTRA_UNSAVED_REGS
+
+#else
+#define ESYM(name) _##name
+
+#define FUNCTION(name) \
+ name: ASM_SEPARATOR \
+ .globl ESYM(name) ASM_SEPARATOR \
+ ESYM(name)
+
+#define ESIZE(name_, size_)
+#define EOBJECT(name_)
+
+// r7 is preserved, but add it for EABI alignment..
+#define EXTRA_UNSAVED_REGS r7, r9,
+
+#endif
+
+#if defined(__MACH__) || defined(__PIC__)
+#define TEXRELS_FORBIDDEN
+#endif