summaryrefslogtreecommitdiffstats
path: root/lib/libsetjmp/sh/asm.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libsetjmp/sh/asm.h')
-rw-r--r--lib/libsetjmp/sh/asm.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/lib/libsetjmp/sh/asm.h b/lib/libsetjmp/sh/asm.h
new file mode 100644
index 0000000000..db30b149b5
--- /dev/null
+++ b/lib/libsetjmp/sh/asm.h
@@ -0,0 +1,42 @@
+#ifdef __STDC__
+# define _C_LABEL(x) _ ## x
+#else
+# define _C_LABEL(x) _/**/x
+#endif
+#define _ASM_LABEL(x) x
+
+#if __SH5__
+# if __SH5__ == 32 && __SHMEDIA__
+# define TEXT .section .text..SHmedia32, "ax"
+# else
+# define TEXT .text
+# endif
+
+# define _ENTRY(name) \
+ TEXT; .balign 8; .globl name; name:
+#else
+#define _ENTRY(name) \
+ .text; .align 2; .globl name; name:
+#endif /* __SH5__ */
+
+#define ENTRY(name) \
+ _ENTRY(_C_LABEL(name))
+
+#if (defined (__sh2__) || defined (__SH2E__) || defined (__sh3__) || defined (__SH3E__) \
+ || defined (__SH4_SINGLE__) || defined (__SH4__)) \
+ || defined (__SH4_SINGLE_ONLY__) || defined (__SH5__) || defined (__SH2A__)
+#define DELAYED_BRANCHES
+#define SL(branch, dest, in_slot, in_slot_arg2) \
+ branch##.s dest; in_slot, in_slot_arg2
+#else
+#define SL(branch, dest, in_slot, in_slot_arg2) \
+ in_slot, in_slot_arg2; branch dest
+#endif
+
+#ifdef __LITTLE_ENDIAN__
+#define SHHI shlld
+#define SHLO shlrd
+#else
+#define SHHI shlrd
+#define SHLO shlld
+#endif