|
13 | 13 | #define ECRYPT_CONFIG |
14 | 14 |
|
15 | 15 | /* ------------------------------------------------------------------------- */ |
| 16 | +/* Try standard-ish macros for endianness */ |
| 17 | +#if defined (__LITTLE_ENDIAN__) |
| 18 | +#define ECRYPT_LITTLE_ENDIAN |
| 19 | +#elif defined (__BIG_ENDIAN__) |
| 20 | +#define ECRYPT_BIG_ENDIAN |
| 21 | +#elif defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) |
| 22 | +#define ECRYPT_LITTLE_ENDIAN |
| 23 | +#elif defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) |
| 24 | +#define ECRYPT_BIG_ENDIAN |
| 25 | +#elif defined(__FLOAT_WORD_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && (__FLOAT_WORD_ORDER__ == __ORDER_LITTLE_ENDIAN__) |
| 26 | +#define ECRYPT_LITTLE_ENDIAN |
| 27 | +#elif defined(__FLOAT_WORD_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && (__FLOAT_WORD_ORDER__ == __ORDER_BIG_ENDIAN__) |
| 28 | +#define ECRYPT_BIG_ENDIAN |
| 29 | +#endif |
16 | 30 |
|
17 | | -/* Guess the endianness of the target architecture. */ |
18 | | - |
| 31 | +/* Guess the endianness of the target architecture if not already determined. */ |
| 32 | +#if !defined(ECRYPT_LITTLE_ENDIAN) && !defined(ECRYPT_BIG_ENDIAN) |
19 | 33 | /* |
20 | 34 | * The LITTLE endian machines: |
21 | 35 | */ |
22 | | -#if defined (__LITTLE_ENDIAN__) |
23 | | -#define ECRYPT_LITTLE_ENDIAN |
24 | | -#elif defined(__ultrix) /* Older MIPS */ |
| 36 | +#if defined(__ultrix) /* Older MIPS */ |
25 | 37 | #define ECRYPT_LITTLE_ENDIAN |
26 | 38 | #elif defined(__alpha) /* Alpha */ |
27 | 39 | #define ECRYPT_LITTLE_ENDIAN |
|
44 | 56 | /* |
45 | 57 | * The BIG endian machines: |
46 | 58 | */ |
| 59 | +#elif defined(__ARMEB__) |
| 60 | +#define ECRYPT_BIG_ENDIAN |
| 61 | +#elif defined(__AARCH64EB__) |
| 62 | +#define ECRYPT_BIG_ENDIAN |
47 | 63 | #elif defined(sun) /* Newer Sparc's */ |
48 | 64 | #define ECRYPT_BIG_ENDIAN |
49 | 65 | #elif defined(__ppc__) /* PowerPC */ |
|
65 | 81 | #else /* Any other processor */ |
66 | 82 | #define ECRYPT_UNKNOWN |
67 | 83 | #endif |
68 | | - |
| 84 | +#endif /* !defined(ECRYPT_LITTLE_ENDIAN) && !defined(ECRYPT_BIG_ENDIAN) */ |
69 | 85 | /* ------------------------------------------------------------------------- */ |
70 | 86 |
|
71 | 87 | /* |
|
0 commit comments