at v2.6.26 57 lines 1.1 kB view raw
1#ifndef _SPARC_BYTEORDER_H 2#define _SPARC_BYTEORDER_H 3 4#include <asm/types.h> 5#include <asm/asi.h> 6 7#ifdef __GNUC__ 8 9#ifdef CONFIG_SPARC32 10#define __SWAB_64_THRU_32__ 11#endif 12 13#ifdef CONFIG_SPARC64 14 15static inline __u16 ___arch__swab16p(const __u16 *addr) 16{ 17 __u16 ret; 18 19 __asm__ __volatile__ ("lduha [%1] %2, %0" 20 : "=r" (ret) 21 : "r" (addr), "i" (ASI_PL)); 22 return ret; 23} 24 25static inline __u32 ___arch__swab32p(const __u32 *addr) 26{ 27 __u32 ret; 28 29 __asm__ __volatile__ ("lduwa [%1] %2, %0" 30 : "=r" (ret) 31 : "r" (addr), "i" (ASI_PL)); 32 return ret; 33} 34 35static inline __u64 ___arch__swab64p(const __u64 *addr) 36{ 37 __u64 ret; 38 39 __asm__ __volatile__ ("ldxa [%1] %2, %0" 40 : "=r" (ret) 41 : "r" (addr), "i" (ASI_PL)); 42 return ret; 43} 44 45#define __arch__swab16p(x) ___arch__swab16p(x) 46#define __arch__swab32p(x) ___arch__swab32p(x) 47#define __arch__swab64p(x) ___arch__swab64p(x) 48 49#endif /* CONFIG_SPARC64 */ 50 51#define __BYTEORDER_HAS_U64__ 52 53#endif 54 55#include <linux/byteorder/big_endian.h> 56 57#endif /* _SPARC_BYTEORDER_H */