Rev 332 | Rev 342 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 332 | Rev 338 | ||
---|---|---|---|
Line 28... | Line 28... | ||
28 | 28 | ||
29 | #ifndef __ppc_BYTEORDER_H__ |
29 | #ifndef __ppc_BYTEORDER_H__ |
30 | #define __ppc_BYTEORDER_H__ |
30 | #define __ppc_BYTEORDER_H__ |
31 | 31 | ||
32 | #include <arch/types.h> |
32 | #include <arch/types.h> |
- | 33 | #include <byteorder.h> |
|
- | 34 | ||
- | 35 | static inline __u64 __u64_le2host(__u64 n) |
|
- | 36 | { |
|
- | 37 | return __u64_byteorder_swap(n); |
|
- | 38 | } |
|
- | 39 | ||
33 | 40 | ||
34 | /** Convert little-endian __native to host __native |
41 | /** Convert little-endian __native to host __native |
35 | * |
42 | * |
36 | * Convert little-endian __native parameter to host endianess. |
43 | * Convert little-endian __native parameter to host endianess. |
37 | * |
44 | * |
38 | * @param n Little-endian __native argument. |
45 | * @param n Little-endian __native argument. |
39 | * |
46 | * |
40 | * @return Result in host endianess. |
47 | * @return Result in host endianess. |
41 | * |
48 | * |
42 | */ |
49 | */ |
43 | static inline __u64 u64_le2host(__u64 n) |
- | |
44 | { |
- | |
45 | return ((n & 0xff) << 56) | |
- | |
46 | ((n & 0xff00) << 40) | |
- | |
47 | ((n & 0xff0000) << 24) | |
- | |
48 | ((n & 0xff000000LL) << 8) | |
- | |
49 | ((n & 0xff00000000LL) >>8) | |
- | |
50 | ((n & 0xff0000000000LL) >> 24) | |
- | |
51 | ((n & 0xff000000000000LL) >> 40) | |
- | |
52 | ((n & 0xff00000000000000LL) >> 56); |
- | |
53 | } |
- | |
54 | static inline __native native_le2host(__native n) |
50 | static inline __native __native_le2host(__native n) |
55 | { |
51 | { |
56 | __address v; |
52 | __address v; |
57 | 53 | ||
58 | __asm__ volatile ("lwbrx %0, %1, %2\n" : "=r" (v) : "i" (0) , "r" (&n)); |
54 | __asm__ volatile ("lwbrx %0, %1, %2\n" : "=r" (v) : "i" (0) , "r" (&n)); |
59 | 55 |