aboutsummaryrefslogtreecommitdiff
blob: 0df807601c3cb1705604a60aa839d8425871300c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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