home *** CD-ROM | disk | FTP | other *** search
- /* More subroutines needed by GCC output code on some machines. */
- /* Compile this one with gcc. */
-
- #include "config.h"
- #include <stddef.h>
-
- #ifndef SItype
- #define SItype long int
- #endif
-
- /* long long ints are pairs of long ints in the order determined by
- WORDS_BIG_ENDIAN. */
-
- #ifdef WORDS_BIG_ENDIAN
- struct longlong {long high, low;};
- #else
- struct longlong {long low, high;};
- #endif
-
- /* We need this union to unpack/pack longlongs, since we don't have
- any arithmetic yet. Incoming long long parameters are stored
- into the `ll' field, and the unpacked result is read from the struct
- longlong. */
-
- typedef union
- {
- struct longlong s;
- long long ll;
- SItype i[2];
- unsigned SItype ui[2];
- } long_long;
-
- /* Internally, long long ints are strings of unsigned shorts in the
- order determined by BYTES_BIG_ENDIAN. */
-
- #define B 0x10000
- #define low16 (B - 1)
-
- #ifdef BYTES_BIG_ENDIAN
-
- /* Note that HIGH and LOW do not describe the order
- of words in a long long. They describe the order of words
- in vectors ordered according to the byte order. */
-
- #define HIGH 0
- #define LOW 1
-
- #define big_end(n) 0
- #define little_end(n) ((n) - 1)
- #define next_msd(i) ((i) - 1)
- #define next_lsd(i) ((i) + 1)
- #define is_not_msd(i,n) ((i) >= 0)
- #define is_not_lsd(i,n) ((i) < (n))
-
- #else
-
- #define LOW 0
- #define HIGH 1
-
- #define big_end(n) ((n) - 1)
- #define little_end(n) 0
- #define next_msd(i) ((i) + 1)
- #define next_lsd(i) ((i) - 1)
- #define is_not_msd(i,n) ((i) < (n))
- #define is_not_lsd(i,n) ((i) >= 0)
-
- #endif
-