1*7804dd52SRuslan Bukin /* $NetBSD: arm-gcc.h,v 1.2 2001/02/21 18:09:25 bjh21 Exp $ */ 2*7804dd52SRuslan Bukin 3*7804dd52SRuslan Bukin /* 4*7804dd52SRuslan Bukin ------------------------------------------------------------------------------- 5*7804dd52SRuslan Bukin One of the macros `BIGENDIAN' or `LITTLEENDIAN' must be defined. 6*7804dd52SRuslan Bukin ------------------------------------------------------------------------------- 7*7804dd52SRuslan Bukin */ 8*7804dd52SRuslan Bukin #define LITTLEENDIAN 9*7804dd52SRuslan Bukin 10*7804dd52SRuslan Bukin /* 11*7804dd52SRuslan Bukin ------------------------------------------------------------------------------- 12*7804dd52SRuslan Bukin The macro `BITS64' can be defined to indicate that 64-bit integer types are 13*7804dd52SRuslan Bukin supported by the compiler. 14*7804dd52SRuslan Bukin ------------------------------------------------------------------------------- 15*7804dd52SRuslan Bukin */ 16*7804dd52SRuslan Bukin #define BITS64 17*7804dd52SRuslan Bukin 18*7804dd52SRuslan Bukin /* 19*7804dd52SRuslan Bukin ------------------------------------------------------------------------------- 20*7804dd52SRuslan Bukin Each of the following `typedef's defines the most convenient type that holds 21*7804dd52SRuslan Bukin integers of at least as many bits as specified. For example, `uint8' should 22*7804dd52SRuslan Bukin be the most convenient type that can hold unsigned integers of as many as 23*7804dd52SRuslan Bukin 8 bits. The `flag' type must be able to hold either a 0 or 1. For most 24*7804dd52SRuslan Bukin implementations of C, `flag', `uint8', and `int8' should all be `typedef'ed 25*7804dd52SRuslan Bukin to the same as `int'. 26*7804dd52SRuslan Bukin ------------------------------------------------------------------------------- 27*7804dd52SRuslan Bukin */ 28*7804dd52SRuslan Bukin typedef int flag; 29*7804dd52SRuslan Bukin typedef int uint8; 30*7804dd52SRuslan Bukin typedef int int8; 31*7804dd52SRuslan Bukin typedef int uint16; 32*7804dd52SRuslan Bukin typedef int int16; 33*7804dd52SRuslan Bukin typedef unsigned int uint32; 34*7804dd52SRuslan Bukin typedef signed int int32; 35*7804dd52SRuslan Bukin #ifdef BITS64 36*7804dd52SRuslan Bukin typedef unsigned long long int uint64; 37*7804dd52SRuslan Bukin typedef signed long long int int64; 38*7804dd52SRuslan Bukin #endif 39*7804dd52SRuslan Bukin 40*7804dd52SRuslan Bukin /* 41*7804dd52SRuslan Bukin ------------------------------------------------------------------------------- 42*7804dd52SRuslan Bukin Each of the following `typedef's defines a type that holds integers 43*7804dd52SRuslan Bukin of _exactly_ the number of bits specified. For instance, for most 44*7804dd52SRuslan Bukin implementation of C, `bits16' and `sbits16' should be `typedef'ed to 45*7804dd52SRuslan Bukin `unsigned short int' and `signed short int' (or `short int'), respectively. 46*7804dd52SRuslan Bukin ------------------------------------------------------------------------------- 47*7804dd52SRuslan Bukin */ 48*7804dd52SRuslan Bukin typedef unsigned char bits8; 49*7804dd52SRuslan Bukin typedef signed char sbits8; 50*7804dd52SRuslan Bukin typedef unsigned short int bits16; 51*7804dd52SRuslan Bukin typedef signed short int sbits16; 52*7804dd52SRuslan Bukin typedef unsigned int bits32; 53*7804dd52SRuslan Bukin typedef signed int sbits32; 54*7804dd52SRuslan Bukin #ifdef BITS64 55*7804dd52SRuslan Bukin typedef unsigned long long int bits64; 56*7804dd52SRuslan Bukin typedef signed long long int sbits64; 57*7804dd52SRuslan Bukin #endif 58*7804dd52SRuslan Bukin 59*7804dd52SRuslan Bukin #ifdef BITS64 60*7804dd52SRuslan Bukin /* 61*7804dd52SRuslan Bukin ------------------------------------------------------------------------------- 62*7804dd52SRuslan Bukin The `LIT64' macro takes as its argument a textual integer literal and 63*7804dd52SRuslan Bukin if necessary ``marks'' the literal as having a 64-bit integer type. 64*7804dd52SRuslan Bukin For example, the GNU C Compiler (`gcc') requires that 64-bit literals be 65*7804dd52SRuslan Bukin appended with the letters `LL' standing for `long long', which is `gcc's 66*7804dd52SRuslan Bukin name for the 64-bit integer type. Some compilers may allow `LIT64' to be 67*7804dd52SRuslan Bukin defined as the identity macro: `#define LIT64( a ) a'. 68*7804dd52SRuslan Bukin ------------------------------------------------------------------------------- 69*7804dd52SRuslan Bukin */ 70*7804dd52SRuslan Bukin #define LIT64( a ) a##LL 71*7804dd52SRuslan Bukin #endif 72*7804dd52SRuslan Bukin 73*7804dd52SRuslan Bukin /* 74*7804dd52SRuslan Bukin ------------------------------------------------------------------------------- 75*7804dd52SRuslan Bukin The macro `INLINE' can be used before functions that should be inlined. If 76*7804dd52SRuslan Bukin a compiler does not support explicit inlining, this macro should be defined 77*7804dd52SRuslan Bukin to be `static'. 78*7804dd52SRuslan Bukin ------------------------------------------------------------------------------- 79*7804dd52SRuslan Bukin */ 80*7804dd52SRuslan Bukin #define INLINE static __inline 81*7804dd52SRuslan Bukin 82*7804dd52SRuslan Bukin #if defined(SOFTFLOAT_FOR_GCC) 83*7804dd52SRuslan Bukin #define FLOAT64_DEMANGLE(a) (a) 84*7804dd52SRuslan Bukin #define FLOAT64_MANGLE(a) (a) 85*7804dd52SRuslan Bukin #endif 86