1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
7 #include "unaligned-fundamental.h"
11 static inline uint16_t unaligned_read_be16(const void *_u
) {
12 const struct __attribute__((__packed__
, __may_alias__
)) { uint16_t x
; } *u
= _u
;
17 static inline uint32_t unaligned_read_be32(const void *_u
) {
18 const struct __attribute__((__packed__
, __may_alias__
)) { uint32_t x
; } *u
= _u
;
23 static inline uint64_t unaligned_read_be64(const void *_u
) {
24 const struct __attribute__((__packed__
, __may_alias__
)) { uint64_t x
; } *u
= _u
;
29 static inline void unaligned_write_be16(void *_u
, uint16_t a
) {
30 struct __attribute__((__packed__
, __may_alias__
)) { uint16_t x
; } *u
= _u
;
35 static inline void unaligned_write_be32(void *_u
, uint32_t a
) {
36 struct __attribute__((__packed__
, __may_alias__
)) { uint32_t x
; } *u
= _u
;
41 static inline void unaligned_write_be64(void *_u
, uint64_t a
) {
42 struct __attribute__((__packed__
, __may_alias__
)) { uint64_t x
; } *u
= _u
;
49 static inline uint16_t unaligned_read_le16(const void *_u
) {
50 const struct __attribute__((__packed__
, __may_alias__
)) { uint16_t x
; } *u
= _u
;
55 static inline uint32_t unaligned_read_le32(const void *_u
) {
56 const struct __attribute__((__packed__
, __may_alias__
)) { uint32_t x
; } *u
= _u
;
61 static inline uint64_t unaligned_read_le64(const void *_u
) {
62 const struct __attribute__((__packed__
, __may_alias__
)) { uint64_t x
; } *u
= _u
;
67 static inline void unaligned_write_le16(void *_u
, uint16_t a
) {
68 struct __attribute__((__packed__
, __may_alias__
)) { uint16_t x
; } *u
= _u
;
73 static inline void unaligned_write_le32(void *_u
, uint32_t a
) {
74 struct __attribute__((__packed__
, __may_alias__
)) { uint32_t x
; } *u
= _u
;
79 static inline void unaligned_write_le64(void *_u
, uint64_t a
) {
80 struct __attribute__((__packed__
, __may_alias__
)) { uint64_t x
; } *u
= _u
;