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