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