1 #ifndef _ISOMAC
2 # include <sysdep.h>
3 # undef ret	/* get rid of the stupid "ret" macro; it breaks br.ret */
4 
5 # include <libm-alias-float.h>
6 # include <libm-alias-double.h>
7 # include <libm-alias-ldouble.h>
8 # include <math-narrow-alias.h>
9 
10 /* Support for compatible assembler handling.  */
11 
12 # define ASM_SIZE_DIRECTIVE(name) .size name,.-name
13 
14 # define LOCAL_LIBM_ENTRY(name)			\
15 	.proc name;				\
16  name:
17 
18 # define LOCAL_LIBM_END(name)			\
19 	.endp name;				\
20  ASM_SIZE_DIRECTIVE(name)
21 
22 
23 # define RODATA		.rodata
24 # define LOCAL_OBJECT_START(name)		\
25    name:;					\
26    .type name, @object
27 # define LOCAL_OBJECT_END(name)			\
28    ASM_SIZE_DIRECTIVE(name)
29 
30 # define GLOBAL_LIBM_ENTRY(name)		\
31 	LOCAL_LIBM_ENTRY(name);			\
32 	.global name
33 # define GLOBAL_LIBM_END(name)		LOCAL_LIBM_END(name)
34 
35 # define INTERNAL_LIBM_ENTRY(name)		\
36 	GLOBAL_LIBM_ENTRY(__libm_##name);	\
37 	.global __libm_##name
38 # define INTERNAL_LIBM_END(name)	GLOBAL_LIBM_END(__libm_##name)
39 
40 # define WEAK_LIBM_ENTRY(name)			\
41 	.align 32;				\
42 	LOCAL_LIBM_ENTRY(__##name);		\
43 	.global __##name;			\
44  __##name:
45 # define WEAK_LIBM_END(name)			\
46  weak_alias (__##name, name);			\
47  .hidden __##name;				\
48 	LOCAL_LIBM_END(__##name);		\
49  ASM_SIZE_DIRECTIVE(__##name);			\
50  .type __##name, @function
51 
52 # define GLOBAL_IEEE754_ENTRY(name)		\
53 	WEAK_LIBM_ENTRY(name);			\
54 	.global __ieee754_##name;		\
55 	.hidden __ieee754_##name;		\
56  __ieee754_##name:
57 # define GLOBAL_IEEE754_END(name)			\
58 	WEAK_LIBM_END(name);				\
59  ASM_SIZE_DIRECTIVE(__ieee754_##name);			\
60  .type __ieee754_##name, @function
61 
62 # if defined ASSEMBLER && IS_IN (libc)
63 #  define __libm_error_support	HIDDEN_JUMPTARGET(__libm_error_support)
64 # endif
65 #endif
66