mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-11-30 00:02:44 +00:00
Moved userland assembler macros from <machine/asmacros.h> to
<machine/asm.h>.
This commit is contained in:
parent
ac225cf76d
commit
13a44161a2
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=23576
@ -34,7 +34,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)DEFS.h 5.1 (Berkeley) 4/23/90
|
||||
* $Id$
|
||||
* $Id: asm.h,v 1.1 1997/03/09 10:39:15 bde Exp $
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
@ -118,3 +118,84 @@
|
||||
#define ALTASENTRY(x) ASENTRY(x)
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This header is currently only used in lib/msun/i387.
|
||||
* Use it to generate code to select between the generic math functions
|
||||
* and the i387 ones.
|
||||
*/
|
||||
#undef ENTRY
|
||||
#define ANAME(x) CNAME(__CONCAT(__i387_,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; .align 2; \
|
||||
.globl AVECNAME(x); \
|
||||
.type AVECNAME(x),@object; \
|
||||
.size AVECNAME(x),4; \
|
||||
AVECNAME(x): .long ASELNAME(x)
|
||||
|
||||
#ifdef PROF
|
||||
|
||||
#define ALTENTRY(x) ENTRY(x); jmp 9f
|
||||
#define ENTRY(x) ARCH_VECTOR(x); ARCH_SELECT(x); ARCH_DISPATCH(x); \
|
||||
_START_ENTRY; \
|
||||
.globl ANAME(x); .type ANAME(x),@function; ANAME(x):; \
|
||||
call HIDENAME(mcount); 9:
|
||||
|
||||
#else /* !PROF */
|
||||
|
||||
#define ALTENTRY(x) ENTRY(x)
|
||||
#define ENTRY(x) ARCH_VECTOR(x); ARCH_SELECT(x); ARCH_DISPATCH(x); \
|
||||
_START_ENTRY; \
|
||||
.globl ANAME(x); .type ANAME(x),@function; ANAME(x):
|
||||
|
||||
#endif /* PROF */
|
||||
|
||||
#ifndef RCSID
|
||||
#define RCSID(a)
|
||||
#endif
|
||||
|
@ -30,13 +30,12 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id$
|
||||
* $Id: asmacros.h,v 1.14 1997/02/22 09:33:56 peter Exp $
|
||||
*/
|
||||
|
||||
#ifndef _MACHINE_ASMACROS_H_
|
||||
#define _MACHINE_ASMACROS_H_
|
||||
|
||||
#ifdef KERNEL
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
/* XXX too much duplication in various asm*.h's. */
|
||||
@ -123,91 +122,4 @@
|
||||
#define MEXITCOUNT
|
||||
#endif /* GPROF */
|
||||
|
||||
#else /* !KERNEL */
|
||||
|
||||
#include "/usr/src/lib/libc/i386/DEFS.h" /* XXX blech */
|
||||
|
||||
/*
|
||||
* In the !KERNEL case, this header is only (ab)used in lib/msun/i387.
|
||||
* Use it to generate code to select between the generic math functions
|
||||
* and the i387 ones.
|
||||
*/
|
||||
#undef ENTRY
|
||||
#define ANAME(x) CNAME(__CONCAT(__i387_,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; .align 2; \
|
||||
.globl AVECNAME(x); \
|
||||
.type AVECNAME(x),@object; \
|
||||
.size AVECNAME(x),4; \
|
||||
AVECNAME(x): .long ASELNAME(x)
|
||||
|
||||
#ifdef PROF
|
||||
|
||||
#define ALTENTRY(x) ENTRY(x); jmp 9f
|
||||
#define ENTRY(x) ARCH_VECTOR(x); ARCH_SELECT(x); ARCH_DISPATCH(x); \
|
||||
_START_ENTRY; \
|
||||
.globl ANAME(x); .type ANAME(x),@function; ANAME(x):; \
|
||||
call HIDENAME(mcount); 9:
|
||||
|
||||
#else /* !PROF */
|
||||
|
||||
#define ALTENTRY(x) ENTRY(x)
|
||||
#define ENTRY(x) ARCH_VECTOR(x); ARCH_SELECT(x); ARCH_DISPATCH(x); \
|
||||
_START_ENTRY; \
|
||||
.globl ANAME(x); .type ANAME(x),@function; ANAME(x):
|
||||
|
||||
#endif /* PROF */
|
||||
|
||||
#ifndef RCSID
|
||||
#define RCSID(a)
|
||||
#endif
|
||||
|
||||
#endif /* KERNEL */
|
||||
|
||||
#endif /* !_MACHINE_ASMACROS_H_ */
|
||||
|
@ -34,7 +34,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)DEFS.h 5.1 (Berkeley) 4/23/90
|
||||
* $Id$
|
||||
* $Id: asm.h,v 1.1 1997/03/09 10:39:15 bde Exp $
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
@ -118,3 +118,84 @@
|
||||
#define ALTASENTRY(x) ASENTRY(x)
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This header is currently only used in lib/msun/i387.
|
||||
* Use it to generate code to select between the generic math functions
|
||||
* and the i387 ones.
|
||||
*/
|
||||
#undef ENTRY
|
||||
#define ANAME(x) CNAME(__CONCAT(__i387_,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; .align 2; \
|
||||
.globl AVECNAME(x); \
|
||||
.type AVECNAME(x),@object; \
|
||||
.size AVECNAME(x),4; \
|
||||
AVECNAME(x): .long ASELNAME(x)
|
||||
|
||||
#ifdef PROF
|
||||
|
||||
#define ALTENTRY(x) ENTRY(x); jmp 9f
|
||||
#define ENTRY(x) ARCH_VECTOR(x); ARCH_SELECT(x); ARCH_DISPATCH(x); \
|
||||
_START_ENTRY; \
|
||||
.globl ANAME(x); .type ANAME(x),@function; ANAME(x):; \
|
||||
call HIDENAME(mcount); 9:
|
||||
|
||||
#else /* !PROF */
|
||||
|
||||
#define ALTENTRY(x) ENTRY(x)
|
||||
#define ENTRY(x) ARCH_VECTOR(x); ARCH_SELECT(x); ARCH_DISPATCH(x); \
|
||||
_START_ENTRY; \
|
||||
.globl ANAME(x); .type ANAME(x),@function; ANAME(x):
|
||||
|
||||
#endif /* PROF */
|
||||
|
||||
#ifndef RCSID
|
||||
#define RCSID(a)
|
||||
#endif
|
||||
|
@ -30,13 +30,12 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id$
|
||||
* $Id: asmacros.h,v 1.14 1997/02/22 09:33:56 peter Exp $
|
||||
*/
|
||||
|
||||
#ifndef _MACHINE_ASMACROS_H_
|
||||
#define _MACHINE_ASMACROS_H_
|
||||
|
||||
#ifdef KERNEL
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
/* XXX too much duplication in various asm*.h's. */
|
||||
@ -123,91 +122,4 @@
|
||||
#define MEXITCOUNT
|
||||
#endif /* GPROF */
|
||||
|
||||
#else /* !KERNEL */
|
||||
|
||||
#include "/usr/src/lib/libc/i386/DEFS.h" /* XXX blech */
|
||||
|
||||
/*
|
||||
* In the !KERNEL case, this header is only (ab)used in lib/msun/i387.
|
||||
* Use it to generate code to select between the generic math functions
|
||||
* and the i387 ones.
|
||||
*/
|
||||
#undef ENTRY
|
||||
#define ANAME(x) CNAME(__CONCAT(__i387_,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; .align 2; \
|
||||
.globl AVECNAME(x); \
|
||||
.type AVECNAME(x),@object; \
|
||||
.size AVECNAME(x),4; \
|
||||
AVECNAME(x): .long ASELNAME(x)
|
||||
|
||||
#ifdef PROF
|
||||
|
||||
#define ALTENTRY(x) ENTRY(x); jmp 9f
|
||||
#define ENTRY(x) ARCH_VECTOR(x); ARCH_SELECT(x); ARCH_DISPATCH(x); \
|
||||
_START_ENTRY; \
|
||||
.globl ANAME(x); .type ANAME(x),@function; ANAME(x):; \
|
||||
call HIDENAME(mcount); 9:
|
||||
|
||||
#else /* !PROF */
|
||||
|
||||
#define ALTENTRY(x) ENTRY(x)
|
||||
#define ENTRY(x) ARCH_VECTOR(x); ARCH_SELECT(x); ARCH_DISPATCH(x); \
|
||||
_START_ENTRY; \
|
||||
.globl ANAME(x); .type ANAME(x),@function; ANAME(x):
|
||||
|
||||
#endif /* PROF */
|
||||
|
||||
#ifndef RCSID
|
||||
#define RCSID(a)
|
||||
#endif
|
||||
|
||||
#endif /* KERNEL */
|
||||
|
||||
#endif /* !_MACHINE_ASMACROS_H_ */
|
||||
|
Loading…
Reference in New Issue
Block a user