blob: ad10164f4c7536da6d8982b0b07129d1d930bdfe [file] [log] [blame]
Shin-ichiro KAWASAKI10093272009-09-28 16:11:39 +09001/* $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_ */