]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[libgcc] Make __libgcc architecture-specific
authorMichael Brown <mcb30@etherboot.org>
Wed, 19 Nov 2008 00:37:15 +0000 (16:37 -0800)
committerMichael Brown <mcb30@etherboot.org>
Wed, 19 Nov 2008 19:14:24 +0000 (19:14 +0000)
src/arch/i386/include/bits/compiler.h
src/libgcc/__divdi3.c
src/libgcc/__moddi3.c
src/libgcc/__udivdi3.c
src/libgcc/__udivmoddi4.c
src/libgcc/__umoddi3.c
src/libgcc/libgcc.h

index af796069ff5cc636dc71808b1dd26e89f5c7f744..119a9a21d2ddf1829eff9afb01242465596666ab 100644 (file)
@@ -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 */
index 36f0b37fac6fc8e6028ef4eaa0016a219c32ee49..7097b11e1171d681e7bc46c6443d5e6d02d9d751 100644 (file)
@@ -4,7 +4,7 @@
 
 #include "libgcc.h"
 
-LIBGCC int64_t __divdi3(int64_t num, int64_t den)
+__libgcc int64_t __divdi3(int64_t num, int64_t den)
 {
   int minus = 0;
   int64_t v;
index eb7784b75a56d637eb5c7ae18d66465a688f0e24..d671bbc4df928b8ad20dab047f720da859fc7395 100644 (file)
@@ -4,7 +4,7 @@
 
 #include "libgcc.h"
 
-LIBGCC int64_t __moddi3(int64_t num, int64_t den)
+__libgcc int64_t __moddi3(int64_t num, int64_t den)
 {
   int minus = 0;
   int64_t v;
index 9ae0c3dc02047bea12f6f39a41912c5ed20c813d..f5a14de2014e4cc814cf55b67fedccef33bc0c61 100644 (file)
@@ -4,7 +4,7 @@
 
 #include "libgcc.h"
 
-LIBGCC uint64_t __udivdi3(uint64_t num, uint64_t den)
+__libgcc uint64_t __udivdi3(uint64_t num, uint64_t den)
 {
   return __udivmoddi4(num, den, NULL);
 }
index 59966edb4a039533b11804afc4dcb00c4490d570..21e0d51f952bb89275254dac23abe9cc2454fa07 100644 (file)
@@ -1,6 +1,6 @@
 #include "libgcc.h"
 
-LIBGCC uint64_t __udivmoddi4(uint64_t num, uint64_t den, uint64_t *rem_p)
+__libgcc uint64_t __udivmoddi4(uint64_t num, uint64_t den, uint64_t *rem_p)
 {
   uint64_t quot = 0, qbit = 1;
 
index f6c76cb634959c63feb0db6df1c489551870ed29..fb4da991c18498829888101ef91cfea8ac6c07d2 100644 (file)
@@ -4,7 +4,7 @@
 
 #include "libgcc.h"
 
-LIBGCC uint64_t __umoddi3(uint64_t num, uint64_t den)
+__libgcc uint64_t __umoddi3(uint64_t num, uint64_t den)
 {
   uint64_t v;
 
index 5b4a624444cc4b94f6c169256b7e5831be336227..d3e9bdd73b21c4214fcb89dc75bb3383d858c898 100644 (file)
@@ -4,23 +4,11 @@
 #include <stdint.h>
 #include <stddef.h>
 
-/*
- * 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 ))
-
-extern LIBGCC uint64_t __udivmoddi4(uint64_t num, uint64_t den, uint64_t *rem);
-extern LIBGCC uint64_t __udivdi3(uint64_t num, uint64_t den);
-extern LIBGCC uint64_t __umoddi3(uint64_t num, uint64_t den);
-extern LIBGCC int64_t __divdi3(int64_t num, int64_t den);
-extern LIBGCC int64_t __moddi3(int64_t num, int64_t den);
+extern __libgcc uint64_t __udivmoddi4 ( uint64_t num, uint64_t den,
+                                       uint64_t *rem );
+extern __libgcc uint64_t __udivdi3  (uint64_t num, uint64_t den );
+extern __libgcc uint64_t __umoddi3 ( uint64_t num, uint64_t den );
+extern __libgcc int64_t __divdi3 ( int64_t num, int64_t den );
+extern __libgcc int64_t __moddi3 ( int64_t num, int64_t den );
 
 #endif /* _LIBGCC_H */