Home | History | Annotate | Line # | Download | only in include
byte_swap.h revision 1.1.2.1
      1  1.1.2.1  rpaulo /*      $NetBSD: byte_swap.h,v 1.1.2.1 2006/09/09 02:42:59 rpaulo Exp $      */
      2      1.1     dsl 
      3      1.1     dsl /* Written by Manuel Bouyer. Public domain */
      4      1.1     dsl 
      5  1.1.2.1  rpaulo #ifndef _SH3_BYTE_SWAP_H_
      6  1.1.2.1  rpaulo #define	_SH3_BYTE_SWAP_H_
      7      1.1     dsl 
      8      1.1     dsl #include <sys/cdefs.h>
      9      1.1     dsl 
     10      1.1     dsl #ifdef  __GNUC__
     11      1.1     dsl #include <sys/types.h>
     12      1.1     dsl __BEGIN_DECLS
     13      1.1     dsl 
     14      1.1     dsl #define __BYTE_SWAP_U16_VARIABLE __byte_swap_u16_variable
     15  1.1.2.1  rpaulo static __inline uint16_t
     16      1.1     dsl __byte_swap_u16_variable(uint16_t x)
     17      1.1     dsl {
     18      1.1     dsl 	uint16_t rval;
     19      1.1     dsl 
     20      1.1     dsl 	__asm volatile ("swap.b %1,%0" : "=r"(rval) : "r"(x));
     21      1.1     dsl 
     22      1.1     dsl 	return (rval);
     23      1.1     dsl }
     24      1.1     dsl 
     25      1.1     dsl #define __BYTE_SWAP_U32_VARIABLE __byte_swap_u32_variable
     26  1.1.2.1  rpaulo static __inline uint32_t
     27      1.1     dsl __byte_swap_u32_variable(uint32_t x)
     28      1.1     dsl {
     29      1.1     dsl 	uint32_t rval;
     30      1.1     dsl 
     31      1.1     dsl 	__asm volatile ("swap.b %1,%0; swap.w %0,%0; swap.b %0,%0"
     32      1.1     dsl 			  : "=r"(rval) : "r"(x));
     33      1.1     dsl 
     34      1.1     dsl 	return (rval);
     35      1.1     dsl }
     36      1.1     dsl 
     37      1.1     dsl __END_DECLS
     38  1.1.2.1  rpaulo #endif /* __GNUC_ */
     39      1.1     dsl 
     40  1.1.2.1  rpaulo #endif /* !_SH3_BYPE_SWAP_H_ */
     41