From 849e4b12d62e87f11277916cea92573fc3eaab9a Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Tue, 18 Nov 2008 16:37:15 -0800 Subject: [libgcc] Make __libgcc architecture-specific --- src/arch/i386/include/bits/compiler.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/arch') diff --git a/src/arch/i386/include/bits/compiler.h b/src/arch/i386/include/bits/compiler.h index af796069f..119a9a21d 100644 --- a/src/arch/i386/include/bits/compiler.h +++ b/src/arch/i386/include/bits/compiler.h @@ -6,6 +6,20 @@ /** Declare a function with standard calling conventions */ #define __asmcall __attribute__ (( cdecl, regparm(0) )) +/** + * Declare a function with libgcc implicit linkage + * + * It seems as though gcc expects its implicit arithmetic functions to + * be cdecl, even if -mrtd is specified. This is somewhat + * inconsistent; for example, if -mregparm=3 is used then the implicit + * functions do become regparm(3). + * + * The implicit calls to memcpy() and memset() which gcc can generate + * do not seem to have this inconsistency; -mregparm and -mrtd affect + * them in the same way as any other function. + */ +#define __libgcc __attribute__ (( cdecl )) + #endif /* ASSEMBLY */ #endif /* _BITS_COMPILER_H */ -- cgit v1.2.3-55-g7522