aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/ia64/fpu/libm-symbols.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/ia64/fpu/libm-symbols.h')
-rw-r--r--sysdeps/ia64/fpu/libm-symbols.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/sysdeps/ia64/fpu/libm-symbols.h b/sysdeps/ia64/fpu/libm-symbols.h
new file mode 100644
index 0000000..0df8076
--- /dev/null
+++ b/sysdeps/ia64/fpu/libm-symbols.h
@@ -0,0 +1,58 @@
+#include <sysdep.h>
+#undef ret /* get rid of the stupid "ret" macro; it breaks br.ret */
+
+/* Support for compatible assembler handling. */
+
+#define ASM_SIZE_DIRECTIVE(name) .size name,.-name
+
+#define LOCAL_LIBM_ENTRY(name) \
+ .proc name; \
+ name:
+
+#define LOCAL_LIBM_END(name) \
+ .endp name; \
+ ASM_SIZE_DIRECTIVE(name)
+
+
+#define RODATA .rodata
+#define LOCAL_OBJECT_START(name) \
+ name:; \
+ .type name, @object
+#define LOCAL_OBJECT_END(name) \
+ ASM_SIZE_DIRECTIVE(name)
+
+#define GLOBAL_LIBM_ENTRY(name) \
+ LOCAL_LIBM_ENTRY(name); \
+ .global name
+#define GLOBAL_LIBM_END(name) LOCAL_LIBM_END(name)
+
+#define INTERNAL_LIBM_ENTRY(name) \
+ GLOBAL_LIBM_ENTRY(__libm_##name); \
+ .global __libm_##name
+#define INTERNAL_LIBM_END(name) GLOBAL_LIBM_END(__libm_##name)
+
+#define WEAK_LIBM_ENTRY(name) \
+ .align 32; \
+ LOCAL_LIBM_ENTRY(__##name); \
+ .global __##name; \
+ __##name:
+#define WEAK_LIBM_END(name) \
+ weak_alias (__##name, name); \
+ .hidden __##name; \
+ LOCAL_LIBM_END(__##name); \
+ ASM_SIZE_DIRECTIVE(__##name); \
+ .type __##name, @function
+
+#define GLOBAL_IEEE754_ENTRY(name) \
+ WEAK_LIBM_ENTRY(name); \
+ .global __ieee754_##name; \
+ .hidden __ieee754_##name; \
+ __ieee754_##name:
+#define GLOBAL_IEEE754_END(name) \
+ WEAK_LIBM_END(name); \
+ ASM_SIZE_DIRECTIVE(__ieee754_##name); \
+ .type __ieee754_##name, @function
+
+#if defined ASSEMBLER && !defined NOT_IN_libc
+# define __libm_error_support HIDDEN_JUMPTARGET(__libm_error_support)
+#endif