Linux-libre 4.19.20-gnu
[librecmc/linux-libre.git] / arch / h8300 / lib / libgcc.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __H8300_LIBGCC_H__
3 #define __H8300_LIBGCC_H__
4
5 #ifdef __ASSEMBLY__
6 #define A0 r0
7 #define A0L r0l
8 #define A0H r0h
9
10 #define A1 r1
11 #define A1L r1l
12 #define A1H r1h
13
14 #define A2 r2
15 #define A2L r2l
16 #define A2H r2h
17
18 #define A3 r3
19 #define A3L r3l
20 #define A3H r3h
21
22 #define S0 r4
23 #define S0L r4l
24 #define S0H r4h
25
26 #define S1 r5
27 #define S1L r5l
28 #define S1H r5h
29
30 #define S2 r6
31 #define S2L r6l
32 #define S2H r6h
33
34 #define PUSHP   push.l
35 #define POPP    pop.l
36
37 #define A0P     er0
38 #define A1P     er1
39 #define A2P     er2
40 #define A3P     er3
41 #define S0P     er4
42 #define S1P     er5
43 #define S2P     er6
44
45 #define A0E     e0
46 #define A1E     e1
47 #define A2E     e2
48 #define A3E     e3
49 #else
50 #define Wtype   SItype
51 #define UWtype  USItype
52 #define HWtype  SItype
53 #define UHWtype USItype
54 #define DWtype  DItype
55 #define UDWtype UDItype
56 #define UWtype  USItype
57 #define Wtype   SItype
58 #define UWtype  USItype
59 #define W_TYPE_SIZE (4 * BITS_PER_UNIT)
60 #define BITS_PER_UNIT (8)
61
62 typedef          int SItype     __attribute__ ((mode (SI)));
63 typedef unsigned int USItype    __attribute__ ((mode (SI)));
64 typedef          int DItype     __attribute__ ((mode (DI)));
65 typedef unsigned int UDItype    __attribute__ ((mode (DI)));
66 struct DWstruct {
67         Wtype high, low;
68 };
69 typedef union {
70         struct DWstruct s;
71         DWtype ll;
72 } DWunion;
73
74 typedef int word_type __attribute__ ((mode (__word__)));
75
76 #endif
77
78 #endif