sys/_endian.h: Move powerpc workaround into _endian.h

Powerpc compilers often define _BIG_ENDIAN or _LITTLE_ENDIAN depending
on the byte order of the target. This interfers with the endian.h and
sys/endian.h APIs which expect those two to be 4321 or 1234.
Unconditionally undefine these two before we define them to work around
this issue. By including endian.h, the programmer is saying they want
this API not the native one. This matches historic practice as well.

Fixes:		e35448a901
Sponsored by:	Netflix
Noticed by:	powerpc, powerpc64 CI jobs
This commit is contained in:
Warner Losh 2023-02-14 10:48:05 -07:00
parent 50fce3b4b0
commit 6f23df1ae7

View File

@ -41,9 +41,13 @@
/*
* Definitions for byte order, according to byte significance from low
* address to high.
* address to high. We undefine any prior definition of them because
* powerpc compilers define _LITTLE_ENDIAN and _BIG_ENDIAN to mean
* something else.
*/
#undef _LITTLE_ENDIAN
#define _LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__ /* LSB first: 1234 */
#undef _BIG_ENDIAN
#define _BIG_ENDIAN __ORDER_BIG_ENDIAN__ /* MSB first: 4321 */
#define _PDP_ENDIAN __ORDER_PDP_ENDIAN__ /* LSB first in word,
* MSW first in long: 3412 */