]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blob - include/asm-sh64/byteorder.h
Linux-2.6.12-rc2
[mirror_ubuntu-artful-kernel.git] / include / asm-sh64 / byteorder.h
1 #ifndef __ASM_SH64_BYTEORDER_H
2 #define __ASM_SH64_BYTEORDER_H
3
4 /*
5 * This file is subject to the terms and conditions of the GNU General Public
6 * License. See the file "COPYING" in the main directory of this archive
7 * for more details.
8 *
9 * include/asm-sh64/byteorder.h
10 *
11 * Copyright (C) 2000, 2001 Paolo Alberelli
12 *
13 */
14
15 #include <asm/types.h>
16
17 static __inline__ __const__ __u32 ___arch__swab32(__u32 x)
18 {
19 __asm__("byterev %0, %0\n\t"
20 "shari %0, 32, %0"
21 : "=r" (x)
22 : "0" (x));
23 return x;
24 }
25
26 static __inline__ __const__ __u16 ___arch__swab16(__u16 x)
27 {
28 __asm__("byterev %0, %0\n\t"
29 "shari %0, 48, %0"
30 : "=r" (x)
31 : "0" (x));
32 return x;
33 }
34
35 #define __arch__swab32(x) ___arch__swab32(x)
36 #define __arch__swab16(x) ___arch__swab16(x)
37
38 #if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
39 # define __BYTEORDER_HAS_U64__
40 # define __SWAB_64_THRU_32__
41 #endif
42
43 #ifdef __LITTLE_ENDIAN__
44 #include <linux/byteorder/little_endian.h>
45 #else
46 #include <linux/byteorder/big_endian.h>
47 #endif
48
49 #endif /* __ASM_SH64_BYTEORDER_H */