Commit | Line | Data |
---|---|---|
1da177e4 LT |
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 | ||
21264136 | 17 | static inline __attribute_const__ __u32 ___arch__swab32(__u32 x) |
1da177e4 LT |
18 | { |
19 | __asm__("byterev %0, %0\n\t" | |
20 | "shari %0, 32, %0" | |
21 | : "=r" (x) | |
22 | : "0" (x)); | |
23 | return x; | |
24 | } | |
25 | ||
21264136 | 26 | static inline __attribute_const__ __u16 ___arch__swab16(__u16 x) |
1da177e4 LT |
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 */ |