host: Perform compile-time endian check if supported
This commit is contained in:
parent
7989064599
commit
153412f53e
|
@ -151,8 +151,6 @@ static uint32_t crc32(void *_stream, size_t len) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool bigendian = false;
|
|
||||||
|
|
||||||
static uint16_t endswap16(uint16_t value) {
|
static uint16_t endswap16(uint16_t value) {
|
||||||
uint16_t ret = 0;
|
uint16_t ret = 0;
|
||||||
ret |= (value >> 8) & 0x00ff;
|
ret |= (value >> 8) & 0x00ff;
|
||||||
|
@ -182,6 +180,20 @@ static uint64_t endswap64(uint64_t value) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __BYTE_ORDER__
|
||||||
|
|
||||||
|
#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
|
||||||
|
#define bigendian true
|
||||||
|
#else
|
||||||
|
#define bigendian false
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#else /* !__BYTE_ORDER__ */
|
||||||
|
|
||||||
|
static bool bigendian = false;
|
||||||
|
|
||||||
|
#endif /* !__BYTE_ORDER__ */
|
||||||
|
|
||||||
#define ENDSWAP(VALUE) (bigendian ? ( \
|
#define ENDSWAP(VALUE) (bigendian ? ( \
|
||||||
sizeof(VALUE) == 1 ? (VALUE) : \
|
sizeof(VALUE) == 1 ? (VALUE) : \
|
||||||
sizeof(VALUE) == 2 ? endswap16(VALUE) : \
|
sizeof(VALUE) == 2 ? endswap16(VALUE) : \
|
||||||
|
@ -535,9 +547,11 @@ static int bios_install(int argc, char *argv[]) {
|
||||||
uint8_t orig_mbr[70], timestamp[6];
|
uint8_t orig_mbr[70], timestamp[6];
|
||||||
const char *part_ndx = NULL;
|
const char *part_ndx = NULL;
|
||||||
|
|
||||||
|
#ifndef __BYTE_ORDER__
|
||||||
uint32_t endcheck = 0x12345678;
|
uint32_t endcheck = 0x12345678;
|
||||||
uint8_t endbyte = *((uint8_t *)&endcheck);
|
uint8_t endbyte = *((uint8_t *)&endcheck);
|
||||||
bigendian = endbyte == 0x12;
|
bigendian = endbyte == 0x12;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (argc < 2) {
|
if (argc < 2) {
|
||||||
bios_install_usage(argv[-1]);
|
bios_install_usage(argv[-1]);
|
||||||
|
|
Loading…
Reference in New Issue