1 1.1 itojun /* $NetBSD: bswap.h,v 1.1 1999/09/13 10:31:14 itojun Exp $ */ 2 1.1 itojun 3 1.1 itojun /* Written by Manuel Bouyer. Public domain */ 4 1.1 itojun 5 1.1 itojun #ifndef _SH3_BSWAP_H_ 6 1.1 itojun #define _SH3_BSWAP_H_ 7 1.1 itojun 8 1.1 itojun #include <sys/cdefs.h> 9 1.1 itojun 10 1.1 itojun #ifndef _KERNEL 11 1.1 itojun 12 1.1 itojun __BEGIN_DECLS 13 1.1 itojun u_int16_t bswap16 __P((u_int16_t)); 14 1.1 itojun u_int32_t bswap32 __P((u_int32_t)); 15 1.1 itojun u_int64_t bswap64 __P((u_int64_t)); 16 1.1 itojun __END_DECLS 17 1.1 itojun 18 1.1 itojun #else /* _KERNEL */ 19 1.1 itojun 20 1.1 itojun __BEGIN_DECLS 21 1.1 itojun static __inline u_int16_t bswap16 __P((u_int16_t)); 22 1.1 itojun static __inline u_int32_t bswap32 __P((u_int32_t)); 23 1.1 itojun u_int64_t bswap64 __P((u_int64_t)); 24 1.1 itojun __END_DECLS 25 1.1 itojun 26 1.1 itojun static __inline u_int16_t 27 1.1 itojun bswap16(x) 28 1.1 itojun u_int16_t x; 29 1.1 itojun { 30 1.1 itojun u_int16_t rval; 31 1.1 itojun 32 1.1 itojun __asm __volatile ("swap.b %1,%0" : "=r"(rval) : "r"(x)); 33 1.1 itojun 34 1.1 itojun return rval; 35 1.1 itojun } 36 1.1 itojun 37 1.1 itojun static __inline u_int32_t 38 1.1 itojun bswap32(x) 39 1.1 itojun u_int32_t x; 40 1.1 itojun { 41 1.1 itojun u_int32_t rval; 42 1.1 itojun 43 1.1 itojun __asm __volatile ("swap.b %1,%0; swap.w %0,%0; swap.b %0,%0" 44 1.1 itojun : "=r"(rval) : "r"(x)); 45 1.1 itojun 46 1.1 itojun return rval; 47 1.1 itojun } 48 1.1 itojun #endif /* _KERNEL */ 49 1.1 itojun 50 1.1 itojun #endif /* _SH3_BSWAP_H_ */ 51