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