endian.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. /* SPDX-License-Identifier: GPL-2.0-or-later */
  2. /*
  3. * endian.h - Defines for endianness handling in NTFS Linux kernel driver.
  4. * Part of the Linux-NTFS project.
  5. *
  6. * Copyright (c) 2001-2004 Anton Altaparmakov
  7. */
  8. #ifndef _LINUX_NTFS_ENDIAN_H
  9. #define _LINUX_NTFS_ENDIAN_H
  10. #include <asm/byteorder.h>
  11. #include "types.h"
  12. /*
  13. * Signed endianness conversion functions.
  14. */
  15. static inline s16 sle16_to_cpu(sle16 x)
  16. {
  17. return le16_to_cpu((__force le16)x);
  18. }
  19. static inline s32 sle32_to_cpu(sle32 x)
  20. {
  21. return le32_to_cpu((__force le32)x);
  22. }
  23. static inline s64 sle64_to_cpu(sle64 x)
  24. {
  25. return le64_to_cpu((__force le64)x);
  26. }
  27. static inline s16 sle16_to_cpup(sle16 *x)
  28. {
  29. return le16_to_cpu(*(__force le16*)x);
  30. }
  31. static inline s32 sle32_to_cpup(sle32 *x)
  32. {
  33. return le32_to_cpu(*(__force le32*)x);
  34. }
  35. static inline s64 sle64_to_cpup(sle64 *x)
  36. {
  37. return le64_to_cpu(*(__force le64*)x);
  38. }
  39. static inline sle16 cpu_to_sle16(s16 x)
  40. {
  41. return (__force sle16)cpu_to_le16(x);
  42. }
  43. static inline sle32 cpu_to_sle32(s32 x)
  44. {
  45. return (__force sle32)cpu_to_le32(x);
  46. }
  47. static inline sle64 cpu_to_sle64(s64 x)
  48. {
  49. return (__force sle64)cpu_to_le64(x);
  50. }
  51. static inline sle16 cpu_to_sle16p(s16 *x)
  52. {
  53. return (__force sle16)cpu_to_le16(*x);
  54. }
  55. static inline sle32 cpu_to_sle32p(s32 *x)
  56. {
  57. return (__force sle32)cpu_to_le32(*x);
  58. }
  59. static inline sle64 cpu_to_sle64p(s64 *x)
  60. {
  61. return (__force sle64)cpu_to_le64(*x);
  62. }
  63. #endif /* _LINUX_NTFS_ENDIAN_H */