1#ifndef __ASM_SH_BYTEORDER_H
2#define __ASM_SH_BYTEORDER_H
3
4/*
5 * Copyright (C) 1999  Niibe Yutaka
6 */
7
8#include <asm/types.h>
9
10static __inline__ __const__ __u32 ___arch__swab32(__u32 x)
11{
12	__asm__("swap.b	%0, %0\n\t"
13		"swap.w %0, %0\n\t"
14		"swap.b %0, %0"
15		: "=r" (x)
16		: "0" (x));
17	return x;
18}
19
20static __inline__ __const__ __u16 ___arch__swab16(__u16 x)
21{
22	__asm__("swap.b %0, %0"
23		: "=r" (x)
24		:  "0" (x));
25	return x;
26}
27
28#define __arch__swab32(x) ___arch__swab32(x)
29#define __arch__swab16(x) ___arch__swab16(x)
30
31#if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
32#  define __BYTEORDER_HAS_U64__
33#  define __SWAB_64_THRU_32__
34#endif
35
36#ifdef __LITTLE_ENDIAN__
37#include <linux/byteorder/little_endian.h>
38#else
39#include <linux/byteorder/big_endian.h>
40#endif
41
42#endif /* __ASM_SH_BYTEORDER_H */
43