*/
#include <string.h>
+#include "internal/endian.h"
static ossl_inline uint32_t load32(const uint8_t *src)
{
- const union {
- long one;
- char little;
- } is_endian = { 1 };
+ DECLARE_IS_ENDIAN;
- if (is_endian.little) {
+ if (IS_LITTLE_ENDIAN) {
uint32_t w;
memcpy(&w, src, sizeof(w));
return w;
static ossl_inline uint64_t load64(const uint8_t *src)
{
- const union {
- long one;
- char little;
- } is_endian = { 1 };
+ DECLARE_IS_ENDIAN;
- if (is_endian.little) {
+ if (IS_LITTLE_ENDIAN) {
uint64_t w;
memcpy(&w, src, sizeof(w));
return w;
static ossl_inline void store32(uint8_t *dst, uint32_t w)
{
- const union {
- long one;
- char little;
- } is_endian = { 1 };
+ DECLARE_IS_ENDIAN;
- if (is_endian.little) {
+ if (IS_LITTLE_ENDIAN) {
memcpy(dst, &w, sizeof(w));
} else {
uint8_t *p = (uint8_t *)dst;
static ossl_inline void store64(uint8_t *dst, uint64_t w)
{
- const union {
- long one;
- char little;
- } is_endian = { 1 };
+ DECLARE_IS_ENDIAN;
- if (is_endian.little) {
+ if (IS_LITTLE_ENDIAN) {
memcpy(dst, &w, sizeof(w));
} else {
uint8_t *p = (uint8_t *)dst;