Remove _ARCH_INDIRECT, it was the glue to enable having both hardware

and software versions of the floating point code in libm.  The runtime
selection was done by reading the hw.floatingpoint sysctl via
__get_hw_float().
This commit is contained in:
Peter Wemm 2003-07-23 04:28:51 +00:00
parent d48084b9e5
commit 461d4da338

View File

@ -101,71 +101,4 @@
#define __FBSDID(s) /* nothing */
#endif /* not lint and not STRIP_FBSDID */
#ifdef _ARCH_INDIRECT
/*
* Generate code to select between the generic functions and _ARCH_INDIRECT
* specific ones.
* XXX nested __CONCATs don't work with non-ANSI cpp's.
*/
#define ANAME(x) CNAME(__CONCAT(__CONCAT(__,_ARCH_INDIRECT),x))
#define ASELNAME(x) CNAME(__CONCAT(__arch_select_,x))
#define AVECNAME(x) CNAME(__CONCAT(__arch_,x))
#define GNAME(x) CNAME(__CONCAT(__generic_,x))
/* Don't bother profiling this. */
#ifdef PIC
#define ARCH_DISPATCH(x) \
_START_ENTRY; \
.globl CNAME(x); .type CNAME(x),@function; CNAME(x): ; \
PIC_PROLOGUE; \
movl PIC_GOT(AVECNAME(x)),%eax; \
PIC_EPILOGUE; \
jmpl *(%eax)
#define ARCH_SELECT(x) _START_ENTRY; \
.type ASELNAME(x),@function; \
ASELNAME(x): \
PIC_PROLOGUE; \
call PIC_PLT(CNAME(__get_hw_float)); \
testl %eax,%eax; \
movl PIC_GOT(ANAME(x)),%eax; \
jne 8f; \
movl PIC_GOT(GNAME(x)),%eax; \
8: \
movl PIC_GOT(AVECNAME(x)),%edx; \
movl %eax,(%edx); \
PIC_EPILOGUE; \
jmpl *%eax
#else /* !PIC */
#define ARCH_DISPATCH(x) \
_START_ENTRY; \
.globl CNAME(x); .type CNAME(x),@function; CNAME(x): ; \
jmpl *AVECNAME(x)
#define ARCH_SELECT(x) _START_ENTRY; \
.type ASELNAME(x),@function; \
ASELNAME(x): \
call CNAME(__get_hw_float); \
testl %eax,%eax; \
movl $ANAME(x),%eax; \
jne 8f; \
movl $GNAME(x),%eax; \
8: \
movl %eax,AVECNAME(x); \
jmpl *%eax
#endif /* PIC */
#define ARCH_VECTOR(x) .data; .p2align 2; \
.globl AVECNAME(x); \
.type AVECNAME(x),@object; \
.size AVECNAME(x),4; \
AVECNAME(x): .long ASELNAME(x)
#undef _ENTRY
#define _ENTRY(x) ARCH_VECTOR(x); ARCH_SELECT(x); ARCH_DISPATCH(x); \
_START_ENTRY; \
.globl ANAME(x); .type ANAME(x),@function; ANAME(x):
#endif /* _ARCH_INDIRECT */
#endif /* !_MACHINE_ASM_H_ */