Home | History | Annotate | Download | only in include
      1 /*	$OpenBSD: endian.h,v 1.1.1.1 2006/10/06 21:02:55 miod Exp $	*/
      2 /*	$NetBSD: endian.h,v 1.4 2000/03/17 00:09:25 mycroft Exp $	*/
      3 
      4 /* Written by Manuel Bouyer. Public domain */
      5 
      6 #ifndef _SH_ENDIAN_H_
      7 #define	_SH_ENDIAN_H_
      8 
      9 #ifdef  __GNUC__
     10 
     11 #define	__swap64md	__swap64gen
     12 
     13 #define __swap16md(x) ({						\
     14 	uint16_t rval;							\
     15 									\
     16 	__asm volatile ("swap.b %1,%0" : "=r"(rval) : "r"(x));		\
     17 									\
     18 	rval;								\
     19 })
     20 
     21 #define __swap32md(x) ({						\
     22 	uint32_t rval;							\
     23 									\
     24 	__asm volatile ("swap.b %1,%0; swap.w %0,%0; swap.b %0,%0"	\
     25 			  : "=r"(rval) : "r"(x));			\
     26 									\
     27 	rval;								\
     28 })
     29 
     30 #define MD_SWAP
     31 
     32 #endif /* __GNUC_ */
     33 
     34 #define	_BYTE_ORDER _LITTLE_ENDIAN
     35 #include <sys/endian.h>
     36 
     37 #define	__STRICT_ALIGNMENT
     38 
     39 #endif /* !_SH_ENDIAN_H_ */
     40