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 }