Home | History | Annotate | Download | only in bits
      1 #ifndef _BITS_COMPILER_H
      2 #define _BITS_COMPILER_H
      3 
      4 FILE_LICENCE ( GPL2_OR_LATER );
      5 
      6 #ifndef ASSEMBLY
      7 
      8 /** Declare a function with standard calling conventions */
      9 #define __asmcall __attribute__ (( cdecl, regparm(0) ))
     10 
     11 /**
     12  * Declare a function with libgcc implicit linkage
     13  *
     14  * It seems as though gcc expects its implicit arithmetic functions to
     15  * be cdecl, even if -mrtd is specified.  This is somewhat
     16  * inconsistent; for example, if -mregparm=3 is used then the implicit
     17  * functions do become regparm(3).
     18  *
     19  * The implicit calls to memcpy() and memset() which gcc can generate
     20  * do not seem to have this inconsistency; -mregparm and -mrtd affect
     21  * them in the same way as any other function.
     22  */
     23 #define __libgcc __attribute__ (( cdecl ))
     24 
     25 #endif /* ASSEMBLY */
     26 
     27 #endif /* _BITS_COMPILER_H */
     28