1#include "alignment.h" 2 3uint16_t mbedtls_get_unaligned_uint16(const void *p) 4{ 5 uint16_t r; 6#if defined(UINT_UNALIGNED) 7 mbedtls_uint16_unaligned_t *p16 = (mbedtls_uint16_unaligned_t *) p; 8 r = *p16; 9#elif defined(UINT_UNALIGNED_STRUCT) 10 mbedtls_uint16_unaligned_t *p16 = (mbedtls_uint16_unaligned_t *) p; 11 r = p16->x; 12#else 13 memcpy(&r, p, sizeof(r)); 14#endif 15 return r; 16} 17 18void mbedtls_put_unaligned_uint16(void *p, uint16_t x) 19{ 20#if defined(UINT_UNALIGNED) 21 mbedtls_uint16_unaligned_t *p16 = (mbedtls_uint16_unaligned_t *) p; 22 *p16 = x; 23#elif defined(UINT_UNALIGNED_STRUCT) 24 mbedtls_uint16_unaligned_t *p16 = (mbedtls_uint16_unaligned_t *) p; 25 p16->x = x; 26#else 27 memcpy(p, &x, sizeof(x)); 28#endif 29} 30 31uint32_t mbedtls_get_unaligned_uint32(const void *p) 32{ 33 uint32_t r; 34#if defined(UINT_UNALIGNED) 35 mbedtls_uint32_unaligned_t *p32 = (mbedtls_uint32_unaligned_t *) p; 36 r = *p32; 37#elif defined(UINT_UNALIGNED_STRUCT) 38 mbedtls_uint32_unaligned_t *p32 = (mbedtls_uint32_unaligned_t *) p; 39 r = p32->x; 40#else 41 memcpy(&r, p, sizeof(r)); 42#endif 43 return r; 44} 45 46void mbedtls_put_unaligned_uint32(void *p, uint32_t x) 47{ 48#if defined(UINT_UNALIGNED) 49 mbedtls_uint32_unaligned_t *p32 = (mbedtls_uint32_unaligned_t *) p; 50 *p32 = x; 51#elif defined(UINT_UNALIGNED_STRUCT) 52 mbedtls_uint32_unaligned_t *p32 = (mbedtls_uint32_unaligned_t *) p; 53 p32->x = x; 54#else 55 memcpy(p, &x, sizeof(x)); 56#endif 57} 58 59uint64_t mbedtls_get_unaligned_uint64(const void *p) 60{ 61 uint64_t r; 62#if defined(UINT_UNALIGNED) 63 mbedtls_uint64_unaligned_t *p64 = (mbedtls_uint64_unaligned_t *) p; 64 r = *p64; 65#elif defined(UINT_UNALIGNED_STRUCT) 66 mbedtls_uint64_unaligned_t *p64 = (mbedtls_uint64_unaligned_t *) p; 67 r = p64->x; 68#else 69 memcpy(&r, p, sizeof(r)); 70#endif 71 return r; 72} 73 74void mbedtls_put_unaligned_uint64(void *p, uint64_t x) 75{ 76#if defined(UINT_UNALIGNED) 77 mbedtls_uint64_unaligned_t *p64 = (mbedtls_uint64_unaligned_t *) p; 78 *p64 = x; 79#elif defined(UINT_UNALIGNED_STRUCT) 80 mbedtls_uint64_unaligned_t *p64 = (mbedtls_uint64_unaligned_t *) p; 81 p64->x = x; 82#else 83 memcpy(p, &x, sizeof(x)); 84#endif 85}