Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  * Follows implementation found in linux/virtio_byteorder.h
0004  */
0005 #ifndef _LINUX_RPMSG_BYTEORDER_H
0006 #define _LINUX_RPMSG_BYTEORDER_H
0007 #include <linux/types.h>
0008 #include <uapi/linux/rpmsg_types.h>
0009 
0010 static inline bool rpmsg_is_little_endian(void)
0011 {
0012 #ifdef __LITTLE_ENDIAN
0013     return true;
0014 #else
0015     return false;
0016 #endif
0017 }
0018 
0019 static inline u16 __rpmsg16_to_cpu(bool little_endian, __rpmsg16 val)
0020 {
0021     if (little_endian)
0022         return le16_to_cpu((__force __le16)val);
0023     else
0024         return be16_to_cpu((__force __be16)val);
0025 }
0026 
0027 static inline __rpmsg16 __cpu_to_rpmsg16(bool little_endian, u16 val)
0028 {
0029     if (little_endian)
0030         return (__force __rpmsg16)cpu_to_le16(val);
0031     else
0032         return (__force __rpmsg16)cpu_to_be16(val);
0033 }
0034 
0035 static inline u32 __rpmsg32_to_cpu(bool little_endian, __rpmsg32 val)
0036 {
0037     if (little_endian)
0038         return le32_to_cpu((__force __le32)val);
0039     else
0040         return be32_to_cpu((__force __be32)val);
0041 }
0042 
0043 static inline __rpmsg32 __cpu_to_rpmsg32(bool little_endian, u32 val)
0044 {
0045     if (little_endian)
0046         return (__force __rpmsg32)cpu_to_le32(val);
0047     else
0048         return (__force __rpmsg32)cpu_to_be32(val);
0049 }
0050 
0051 static inline u64 __rpmsg64_to_cpu(bool little_endian, __rpmsg64 val)
0052 {
0053     if (little_endian)
0054         return le64_to_cpu((__force __le64)val);
0055     else
0056         return be64_to_cpu((__force __be64)val);
0057 }
0058 
0059 static inline __rpmsg64 __cpu_to_rpmsg64(bool little_endian, u64 val)
0060 {
0061     if (little_endian)
0062         return (__force __rpmsg64)cpu_to_le64(val);
0063     else
0064         return (__force __rpmsg64)cpu_to_be64(val);
0065 }
0066 
0067 #endif /* _LINUX_RPMSG_BYTEORDER_H */