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