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