linux/include/linux/unaligned/le_byteshift.h
<<
>>
Prefs
   1#ifndef _LINUX_UNALIGNED_LE_BYTESHIFT_H
   2#define _LINUX_UNALIGNED_LE_BYTESHIFT_H
   3
   4#include <linux/kernel.h>
   5
   6static inline u16 __get_unaligned_le16(const u8 *p)
   7{
   8        return p[0] | p[1] << 8;
   9}
  10
  11static inline u32 __get_unaligned_le32(const u8 *p)
  12{
  13        return p[0] | p[1] << 8 | p[2] << 16 | p[3] << 24;
  14}
  15
  16static inline u64 __get_unaligned_le64(const u8 *p)
  17{
  18        return (u64)__get_unaligned_le32(p + 4) << 32 |
  19               __get_unaligned_le32(p);
  20}
  21
  22static inline void __put_unaligned_le16(u16 val, u8 *p)
  23{
  24        *p++ = val;
  25        *p++ = val >> 8;
  26}
  27
  28static inline void __put_unaligned_le32(u32 val, u8 *p)
  29{
  30        __put_unaligned_le16(val >> 16, p + 2);
  31        __put_unaligned_le16(val, p);
  32}
  33
  34static inline void __put_unaligned_le64(u64 val, u8 *p)
  35{
  36        __put_unaligned_le32(val >> 32, p + 4);
  37        __put_unaligned_le32(val, p);
  38}
  39
  40static inline u16 get_unaligned_le16(const void *p)
  41{
  42        return __get_unaligned_le16((const u8 *)p);
  43}
  44
  45static inline u32 get_unaligned_le32(const void *p)
  46{
  47        return __get_unaligned_le32((const u8 *)p);
  48}
  49
  50static inline u64 get_unaligned_le64(const void *p)
  51{
  52        return __get_unaligned_le64((const u8 *)p);
  53}
  54
  55static inline void put_unaligned_le16(u16 val, void *p)
  56{
  57        __put_unaligned_le16(val, p);
  58}
  59
  60static inline void put_unaligned_le32(u32 val, void *p)
  61{
  62        __put_unaligned_le32(val, p);
  63}
  64
  65static inline void put_unaligned_le64(u64 val, void *p)
  66{
  67        __put_unaligned_le64(val, p);
  68}
  69
  70#endif /* _LINUX_UNALIGNED_LE_BYTESHIFT_H */
  71