xref: /openbmc/linux/arch/microblaze/lib/libgcc.h (revision 293d5b43)
1 #ifndef __ASM_LIBGCC_H
2 #define __ASM_LIBGCC_H
3 
4 #include <asm/byteorder.h>
5 
6 typedef int word_type __attribute__ ((mode (__word__)));
7 
8 #ifdef __BIG_ENDIAN
9 struct DWstruct {
10 	int high, low;
11 };
12 #elif defined(__LITTLE_ENDIAN)
13 struct DWstruct {
14 	int low, high;
15 };
16 #else
17 #error I feel sick.
18 #endif
19 
20 typedef union {
21 	struct DWstruct s;
22 	long long ll;
23 } DWunion;
24 
25 extern long long __ashldi3(long long u, word_type b);
26 extern long long __ashrdi3(long long u, word_type b);
27 extern word_type __cmpdi2(long long a, long long b);
28 extern long long __lshrdi3(long long u, word_type b);
29 extern long long __muldi3(long long u, long long v);
30 extern word_type __ucmpdi2(unsigned long long a, unsigned long long b);
31 
32 #endif /* __ASM_LIBGCC_H */
33