byteorder.h 970 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #ifndef _SPARC_BYTEORDER_H
  2. #define _SPARC_BYTEORDER_H
  3. #include <asm/types.h>
  4. #include <asm/asi.h>
  5. #define __BIG_ENDIAN
  6. #ifdef CONFIG_SPARC32
  7. #define __SWAB_64_THRU_32__
  8. #endif
  9. #ifdef CONFIG_SPARC64
  10. static inline __u16 __arch_swab16p(const __u16 *addr)
  11. {
  12. __u16 ret;
  13. __asm__ __volatile__ ("lduha [%1] %2, %0"
  14. : "=r" (ret)
  15. : "r" (addr), "i" (ASI_PL));
  16. return ret;
  17. }
  18. #define __arch_swab16p __arch_swab16p
  19. static inline __u32 __arch_swab32p(const __u32 *addr)
  20. {
  21. __u32 ret;
  22. __asm__ __volatile__ ("lduwa [%1] %2, %0"
  23. : "=r" (ret)
  24. : "r" (addr), "i" (ASI_PL));
  25. return ret;
  26. }
  27. #define __arch_swab32p __arch_swab32p
  28. static inline __u64 __arch_swab64p(const __u64 *addr)
  29. {
  30. __u64 ret;
  31. __asm__ __volatile__ ("ldxa [%1] %2, %0"
  32. : "=r" (ret)
  33. : "r" (addr), "i" (ASI_PL));
  34. return ret;
  35. }
  36. #define __arch_swab64p __arch_swab64p
  37. #endif /* CONFIG_SPARC64 */
  38. #include <linux/byteorder.h>
  39. #endif /* _SPARC_BYTEORDER_H */