[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     ! 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