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}