xref: /openbmc/linux/arch/microblaze/lib/libgcc.h (revision 9f2a45bd81ad2362b61fe2dc6fa202ae18308b7b)
14e07dba7SMichal Simek #ifndef __ASM_LIBGCC_H
24e07dba7SMichal Simek #define __ASM_LIBGCC_H
34e07dba7SMichal Simek 
44e07dba7SMichal Simek #include <asm/byteorder.h>
54e07dba7SMichal Simek 
64e07dba7SMichal Simek typedef int word_type __attribute__ ((mode (__word__)));
74e07dba7SMichal Simek 
84e07dba7SMichal Simek #ifdef __BIG_ENDIAN
94e07dba7SMichal Simek struct DWstruct {
104e07dba7SMichal Simek 	int high, low;
114e07dba7SMichal Simek };
124e07dba7SMichal Simek #elif defined(__LITTLE_ENDIAN)
134e07dba7SMichal Simek struct DWstruct {
144e07dba7SMichal Simek 	int low, high;
154e07dba7SMichal Simek };
164e07dba7SMichal Simek #else
174e07dba7SMichal Simek #error I feel sick.
184e07dba7SMichal Simek #endif
194e07dba7SMichal Simek 
204e07dba7SMichal Simek typedef union {
214e07dba7SMichal Simek 	struct DWstruct s;
224e07dba7SMichal Simek 	long long ll;
234e07dba7SMichal Simek } DWunion;
244e07dba7SMichal Simek 
25*9f2a45bdSMichal Simek extern long long __ashldi3(long long u, word_type b);
26*9f2a45bdSMichal Simek extern long long __ashrdi3(long long u, word_type b);
27*9f2a45bdSMichal Simek extern word_type __cmpdi2(long long a, long long b);
28*9f2a45bdSMichal Simek extern long long __lshrdi3(long long u, word_type b);
29*9f2a45bdSMichal Simek extern long long __muldi3(long long u, long long v);
30*9f2a45bdSMichal Simek extern word_type __ucmpdi2(unsigned long long a, unsigned long long b);
31*9f2a45bdSMichal Simek 
324e07dba7SMichal Simek #endif /* __ASM_LIBGCC_H */
33