[BACK]Return to endian.h CVS log [TXT][DIR] Up to [local] / sys / arch / sh / include

Annotation of sys/arch/sh/include/endian.h, Revision 1.1.1.1

1.1       nbrk        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: #ifdef __LITTLE_ENDIAN__
                     35: #define        _BYTE_ORDER _LITTLE_ENDIAN
                     36: #else
                     37: #define        _BYTE_ORDER _BIG_ENDIAN
                     38: #endif
                     39: #include <sys/endian.h>
                     40:
                     41: #define        __STRICT_ALIGNMENT
                     42:
                     43: #endif /* !_SH_ENDIAN_H_ */

CVSweb