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