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