diff options
author | joerg <joerg@FreeBSD.org> | 2005-03-02 21:33:29 +0000 |
---|---|---|
committer | joerg <joerg@FreeBSD.org> | 2005-03-02 21:33:29 +0000 |
commit | c85a3e95f78bb183ec62ae6ef948265e7ade6b7a (patch) | |
tree | 69c98a86a28838e983d8eca9ba158f46450df8c1 /sys/amd64/include/profile.h | |
parent | 2307c11d0fa1ac2133cff99d6c1a90c711b15f61 (diff) | |
download | FreeBSD-src-c85a3e95f78bb183ec62ae6ef948265e7ade6b7a.zip FreeBSD-src-c85a3e95f78bb183ec62ae6ef948265e7ade6b7a.tar.gz |
netchild's mega-patch to isolate compiler dependencies into a central
place.
This moves the dependency on GCC's and other compiler's features into
the central sys/cdefs.h file, while the individual source files can
then refer to #ifdef __COMPILER_FEATURE_FOO where they by now used to
refer to #if __GNUC__ > 3.1415 && __BARC__ <= 42.
By now, GCC and ICC (the Intel compiler) have been actively tested on
IA32 platforms by netchild. Extension to other compilers is supposed
to be possible, of course.
Submitted by: netchild
Reviewed by: various developers on arch@, some time ago
Diffstat (limited to 'sys/amd64/include/profile.h')
-rw-r--r-- | sys/amd64/include/profile.h | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/sys/amd64/include/profile.h b/sys/amd64/include/profile.h index ecd3426..93e8614 100644 --- a/sys/amd64/include/profile.h +++ b/sys/amd64/include/profile.h @@ -33,6 +33,10 @@ #ifndef _MACHINE_PROFILE_H_ #define _MACHINE_PROFILE_H_ +#ifndef _SYS_CDEFS_H_ +#error this file needs sys/cdefs.h as a prerequisite +#endif + #ifdef _KERNEL /* @@ -53,7 +57,7 @@ #define MCOUNT_DECL(s) #define MCOUNT_ENTER(s) #define MCOUNT_EXIT(s) -#ifdef __GNUC__ +#ifdef __GNUCLIKE_ASM #define MCOUNT_OVERHEAD(label) \ __asm __volatile("pushq %0; call __mcount; popq %%rcx" \ : \ @@ -70,8 +74,8 @@ #define MEXITCOUNT_OVERHEAD() #define MEXITCOUNT_OVERHEAD_GETLABEL() #else -#error -#endif /* __GNUC */ +#error this file needs to be ported to your compiler +#endif /* __GNUCLIKE_ASM */ #else /* !GUPROF */ #define MCOUNT_DECL(s) u_long s; #ifdef SMP @@ -108,7 +112,7 @@ void user(void); static void _mcount(uintfptr_t frompc, uintfptr_t selfpc) __used; \ static void _mcount -#ifdef __GNUC__ +#ifdef __GNUCLIKE_ASM #define MCOUNT __asm(" \n\ .globl .mcount \n\ .type .mcount @function \n\ @@ -166,13 +170,13 @@ mcount() \ _mcount(frompc, selfpc); \ } #endif -#else /* !__GNUC__ */ +#else /* !__GNUCLIKE_ASM */ #define MCOUNT \ void \ mcount() \ { \ } -#endif /* __GNUC__ */ +#endif /* __GNUCLIKE_ASM */ typedef u_long uintfptr_t; @@ -193,7 +197,7 @@ void mcount(uintfptr_t frompc, uintfptr_t selfpc); #include <sys/cdefs.h> __BEGIN_DECLS -#ifdef __GNUC__ +#ifdef __GNUCLIKE_ASM void mcount(void) __asm(".mcount"); #endif __END_DECLS |