Linux 6.9-rc1
[linux-2.6-microblaze.git] / include / linux / libgcc.h
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 */