0001
0002
0003
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