1 #include "alignment.h"
2 
mbedtls_get_unaligned_uint16(const void *p)3 uint16_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 
mbedtls_put_unaligned_uint16(void *p, uint16_t x)18 void 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 
mbedtls_get_unaligned_uint32(const void *p)31 uint32_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 
mbedtls_put_unaligned_uint32(void *p, uint32_t x)46 void 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 
mbedtls_get_unaligned_uint64(const void *p)59 uint64_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 
mbedtls_put_unaligned_uint64(void *p, uint64_t x)74 void 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 }