diff options
author | H. Peter Anvin <hpa@zytor.com> | 2017-04-25 12:51:17 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2017-04-25 12:51:17 -0700 |
commit | 53cd7c7bf0a100d01fc31caf3c20987e66a9ed64 (patch) | |
tree | 19bcbec393f4f3ebc846a58325f8104375a696b0 /include/bytesex.h | |
parent | 573112ee8695ee0d7c5134c26a23024c04872a75 (diff) | |
download | nasm-elf.tar.gz |
bytesex: more endianness detection hackself
A few more tricks for sussing out endinanness, and add an ultimate
fallback option.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'include/bytesex.h')
-rw-r--r-- | include/bytesex.h | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/include/bytesex.h b/include/bytesex.h index 376bb6d6..ee20adff 100644 --- a/include/bytesex.h +++ b/include/bytesex.h @@ -223,8 +223,42 @@ static inline uint64_t cpu_to_le64(uint64_t v) #else /* not WORDS_LITTLEENDIAN or WORDS_BIGENDIAN */ -#error "Update byteord.h to include arbitrary byte orders" +static inline uint16_t cpu_to_le16(uint16_t v) +{ + union u16 { + uint16_t v; + uint8_t c[2]; + } x; + uint8_t *cp = &x.c; + + WRITESHORT(cp, v); + return x.v; +} + +static inline uint32_t cpu_to_le32(uint32_t v) +{ + union u32 { + uint32_t v; + uint8_t c[4]; + } x; + uint8_t *cp = &x.c; + + WRITELONG(cp, v); + return x.v; +} + +static inline uint64_t cpu_to_le64(uint64_t v) +{ + union u64 { + uint64_t v; + uint8_t c[8]; + } x; + uint8_t *cp = &x.c; + + WRITEDLONG(cp, v); + return x.v; +} #endif -#endif /* NASM_BYTEORD_H */ +#endif /* NASM_BYTESEX_H */ |