Commit f4d2b14501bb7f9a3fa75c07ec0940068fadf728
Committed by
Linus Torvalds
1 parent
1af84a6253
sparc: introduce asm/swab.h
Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Showing 3 changed files with 48 additions and 44 deletions Side-by-side Diff
arch/sparc/include/asm/Kbuild
arch/sparc/include/asm/byteorder.h
1 | 1 | #ifndef _SPARC_BYTEORDER_H |
2 | 2 | #define _SPARC_BYTEORDER_H |
3 | 3 | |
4 | -#include <linux/types.h> | |
5 | -#include <asm/asi.h> | |
6 | - | |
7 | -#define __BIG_ENDIAN | |
8 | - | |
9 | -#if defined(__sparc__) && defined(__arch64__) | |
10 | -static inline __u16 __arch_swab16p(const __u16 *addr) | |
11 | -{ | |
12 | - __u16 ret; | |
13 | - | |
14 | - __asm__ __volatile__ ("lduha [%1] %2, %0" | |
15 | - : "=r" (ret) | |
16 | - : "r" (addr), "i" (ASI_PL)); | |
17 | - return ret; | |
18 | -} | |
19 | -#define __arch_swab16p __arch_swab16p | |
20 | - | |
21 | -static inline __u32 __arch_swab32p(const __u32 *addr) | |
22 | -{ | |
23 | - __u32 ret; | |
24 | - | |
25 | - __asm__ __volatile__ ("lduwa [%1] %2, %0" | |
26 | - : "=r" (ret) | |
27 | - : "r" (addr), "i" (ASI_PL)); | |
28 | - return ret; | |
29 | -} | |
30 | -#define __arch_swab32p __arch_swab32p | |
31 | - | |
32 | -static inline __u64 __arch_swab64p(const __u64 *addr) | |
33 | -{ | |
34 | - __u64 ret; | |
35 | - | |
36 | - __asm__ __volatile__ ("ldxa [%1] %2, %0" | |
37 | - : "=r" (ret) | |
38 | - : "r" (addr), "i" (ASI_PL)); | |
39 | - return ret; | |
40 | -} | |
41 | -#define __arch_swab64p __arch_swab64p | |
42 | - | |
43 | -#else | |
44 | -#define __SWAB_64_THRU_32__ | |
45 | -#endif /* defined(__sparc__) && defined(__arch64__) */ | |
46 | - | |
47 | -#include <linux/byteorder.h> | |
4 | +#include <asm/swab.h> | |
5 | +#include <linux/byteorder/big_endian.h> | |
48 | 6 | |
49 | 7 | #endif /* _SPARC_BYTEORDER_H */ |
arch/sparc/include/asm/swab.h
1 | +#ifndef _SPARC_SWAB_H | |
2 | +#define _SPARC_SWAB_H | |
3 | + | |
4 | +#include <linux/types.h> | |
5 | +#include <asm/asi.h> | |
6 | + | |
7 | +#if defined(__sparc__) && defined(__arch64__) | |
8 | +static inline __u16 __arch_swab16p(const __u16 *addr) | |
9 | +{ | |
10 | + __u16 ret; | |
11 | + | |
12 | + __asm__ __volatile__ ("lduha [%1] %2, %0" | |
13 | + : "=r" (ret) | |
14 | + : "r" (addr), "i" (ASI_PL)); | |
15 | + return ret; | |
16 | +} | |
17 | +#define __arch_swab16p __arch_swab16p | |
18 | + | |
19 | +static inline __u32 __arch_swab32p(const __u32 *addr) | |
20 | +{ | |
21 | + __u32 ret; | |
22 | + | |
23 | + __asm__ __volatile__ ("lduwa [%1] %2, %0" | |
24 | + : "=r" (ret) | |
25 | + : "r" (addr), "i" (ASI_PL)); | |
26 | + return ret; | |
27 | +} | |
28 | +#define __arch_swab32p __arch_swab32p | |
29 | + | |
30 | +static inline __u64 __arch_swab64p(const __u64 *addr) | |
31 | +{ | |
32 | + __u64 ret; | |
33 | + | |
34 | + __asm__ __volatile__ ("ldxa [%1] %2, %0" | |
35 | + : "=r" (ret) | |
36 | + : "r" (addr), "i" (ASI_PL)); | |
37 | + return ret; | |
38 | +} | |
39 | +#define __arch_swab64p __arch_swab64p | |
40 | + | |
41 | +#else | |
42 | +#define __SWAB_64_THRU_32__ | |
43 | +#endif /* defined(__sparc__) && defined(__arch64__) */ | |
44 | + | |
45 | +#endif /* _SPARC_SWAB_H */ |