diff options
author | H. Peter Anvin <hpa@zytor.com> | 2015-11-05 08:52:33 -0800 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2015-11-05 14:22:01 -0800 |
commit | bc18ea796db39b8d3575948b3d0de28daee38261 (patch) | |
tree | 20e7f1894fc0173e88f10ce0cc5cd0b842fac432 | |
parent | 3438d861da2e6939a6b0d454ffe247c19ead5993 (diff) | |
download | klibc-bc18ea796db39b8d3575948b3d0de28daee38261.tar.gz |
[klibc] Inline __arch_libcinit()
__arch_libcinit() is only ever used as part of __libc_init(), so we
might as well make it an inline function.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
-rw-r--r-- | scripts/Kbuild.klibc.include | 11 | ||||
-rw-r--r-- | usr/include/arch/i386/klibc/archconfig.h | 2 | ||||
-rw-r--r-- | usr/include/arch/i386/klibc/archinit.h (renamed from usr/klibc/arch/i386/archinit.c) | 4 | ||||
-rw-r--r-- | usr/include/klibc/sysconfig.h | 2 | ||||
-rw-r--r-- | usr/klibc/arch/i386/Kbuild | 2 | ||||
-rw-r--r-- | usr/klibc/libc_init.c | 7 |
6 files changed, 22 insertions, 6 deletions
diff --git a/scripts/Kbuild.klibc.include b/scripts/Kbuild.klibc.include new file mode 100644 index 00000000000000..b3172866a0c2ff --- /dev/null +++ b/scripts/Kbuild.klibc.include @@ -0,0 +1,11 @@ + +# klibc-cc-option +# Usage: cflags-y += $(call klibc-cc-option,-march=winchip-c6,-march=i586) + +klibc-cc-option = $(call try-run,\ + $(CC) $(KLIBCCPPFLAGS) $(KLIBCCFLAGS) $(1) -c -xc /dev/null -o "$$TMP",$(1),$(2)) + +# klibc-cc-option-yn +# Usage: flag := $(call klibc-cc-option-yn,-march=winchip-c6) +klibc-cc-option-yn = $(call try-run,\ + $(CC) $(KLIBCCPPFLAGS) $(KLIBCCFLAGS) $(1) -c -xc /dev/null -o "$$TMP",y,n) diff --git a/usr/include/arch/i386/klibc/archconfig.h b/usr/include/arch/i386/klibc/archconfig.h index d8db763e70052d..f070f5bb4daa5e 100644 --- a/usr/include/arch/i386/klibc/archconfig.h +++ b/usr/include/arch/i386/klibc/archconfig.h @@ -12,7 +12,7 @@ /* The i386 <asm/signal.h> is still not clean enough for this... */ #define _KLIBC_USE_RT_SIG 0 -/* We have __libc_arch_init() */ +/* We have klibc/archinit.h and __libc_archinit() */ #define _KLIBC_HAS_ARCHINIT 1 #endif /* _KLIBC_ARCHCONFIG_H */ diff --git a/usr/klibc/arch/i386/archinit.c b/usr/include/arch/i386/klibc/archinit.h index 111d130d356b44..8995ebfdd8215f 100644 --- a/usr/klibc/arch/i386/archinit.c +++ b/usr/include/arch/i386/klibc/archinit.h @@ -1,5 +1,5 @@ /* - * arch/i386/archinit.c + * arch/i386/include/klibc/archinit.h * * Architecture-specific libc initialization */ @@ -11,7 +11,7 @@ extern void (*__syscall_entry)(int, ...); -void __libc_archinit(void) +static inline void __libc_archinit(void) { if (__auxval[AT_SYSINFO]) __syscall_entry = (void (*)(int, ...)) __auxval[AT_SYSINFO]; diff --git a/usr/include/klibc/sysconfig.h b/usr/include/klibc/sysconfig.h index ab947c0bfc0077..c91d5b85a31059 100644 --- a/usr/include/klibc/sysconfig.h +++ b/usr/include/klibc/sysconfig.h @@ -219,7 +219,7 @@ /* * _KLIBC_HAS_ARCHINIT * - * This architecture uses __libc_archinit() + * This architecture has klibc/archinit.h and __libc_archinit() */ #ifndef _KLIBC_HAS_ARCHINIT # define _KLIBC_HAS_ARCHINIT 0 diff --git a/usr/klibc/arch/i386/Kbuild b/usr/klibc/arch/i386/Kbuild index 16423742919c13..edc7b3ccfd653c 100644 --- a/usr/klibc/arch/i386/Kbuild +++ b/usr/klibc/arch/i386/Kbuild @@ -2,7 +2,7 @@ # klibc .o files for i386 # -klib-y := archinit.o socketcall.o setjmp.o syscall.o varsyscall.o +klib-y := socketcall.o setjmp.o syscall.o varsyscall.o klib-y += open.o openat.o vfork.o klib-y += libgcc/__ashldi3.o libgcc/__ashrdi3.o libgcc/__lshrdi3.o klib-y += libgcc/__muldi3.o libgcc/__negdi2.o diff --git a/usr/klibc/libc_init.c b/usr/klibc/libc_init.c index c54d0224281786..c5b9bab4ef0c87 100644 --- a/usr/klibc/libc_init.c +++ b/usr/klibc/libc_init.c @@ -28,6 +28,12 @@ #include <klibc/sysconfig.h> #include "atexit.h" +#if _KLIBC_HAS_ARCHINIT +# include "klibc/archinit.h" +#else +# define __libc_archinit() ((void)0) +#endif + /* This file is included from __static_init.c or __shared_init.c */ #ifndef SHARED # error "SHARED should be defined to 0 or 1" @@ -42,7 +48,6 @@ struct auxentry { }; extern void __libc_init_stdio(void); -extern void __libc_archinit(void); unsigned long __auxval[_AUXVAL_MAX]; |