diff options
| author | Michael Brown | 2008-11-19 01:37:15 +0100 |
|---|---|---|
| committer | Michael Brown | 2008-11-19 20:14:24 +0100 |
| commit | 849e4b12d62e87f11277916cea92573fc3eaab9a (patch) | |
| tree | 51fe04c2bafbb51603944b338b9780decc2484f8 /src/arch/i386/include | |
| parent | [i386] Rename __cdecl to __asmcall (diff) | |
| download | ipxe-849e4b12d62e87f11277916cea92573fc3eaab9a.tar.gz ipxe-849e4b12d62e87f11277916cea92573fc3eaab9a.tar.xz ipxe-849e4b12d62e87f11277916cea92573fc3eaab9a.zip | |
[libgcc] Make __libgcc architecture-specific
Diffstat (limited to 'src/arch/i386/include')
| -rw-r--r-- | src/arch/i386/include/bits/compiler.h | 14 |
1 files changed, 14 insertions, 0 deletions
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 */ |
