diff options
author | Jeremy Kerr <jk@ozlabs.org> | 2015-02-10 23:55:44 -0500 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2015-03-16 03:58:31 -0400 |
commit | 6c87b2202f5414be3acae9df2e1833e8b46c5688 (patch) | |
tree | 66b618a24bac394d129577d24ecfd423b467ebba /arch/powerpc | |
parent | 1680e4ba3d4f0ab12c387975584924f585fc77eb (diff) |
powerpc/boot/fdt: Add little-endian support to libfdt wrappers
For epapr-style boot, we may be little-endian. This change implements
the proper conversion for fdt*_to_cpu and cpu_to_fdt*. We also need the
full cpu_to_* and *_to_cpu macros for this.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/boot/libfdt_env.h | 14 | ||||
-rw-r--r-- | arch/powerpc/boot/of.h | 8 |
2 files changed, 16 insertions, 6 deletions
diff --git a/arch/powerpc/boot/libfdt_env.h b/arch/powerpc/boot/libfdt_env.h index c89fdb1b80e1..8dcd744e5728 100644 --- a/arch/powerpc/boot/libfdt_env.h +++ b/arch/powerpc/boot/libfdt_env.h | |||
@@ -4,15 +4,17 @@ | |||
4 | #include <types.h> | 4 | #include <types.h> |
5 | #include <string.h> | 5 | #include <string.h> |
6 | 6 | ||
7 | #include "of.h" | ||
8 | |||
7 | typedef u32 uint32_t; | 9 | typedef u32 uint32_t; |
8 | typedef u64 uint64_t; | 10 | typedef u64 uint64_t; |
9 | typedef unsigned long uintptr_t; | 11 | typedef unsigned long uintptr_t; |
10 | 12 | ||
11 | #define fdt16_to_cpu(x) (x) | 13 | #define fdt16_to_cpu(x) be16_to_cpu(x) |
12 | #define cpu_to_fdt16(x) (x) | 14 | #define cpu_to_fdt16(x) cpu_to_be16(x) |
13 | #define fdt32_to_cpu(x) (x) | 15 | #define fdt32_to_cpu(x) be32_to_cpu(x) |
14 | #define cpu_to_fdt32(x) (x) | 16 | #define cpu_to_fdt32(x) cpu_to_be32(x) |
15 | #define fdt64_to_cpu(x) (x) | 17 | #define fdt64_to_cpu(x) be64_to_cpu(x) |
16 | #define cpu_to_fdt64(x) (x) | 18 | #define cpu_to_fdt64(x) cpu_to_be64(x) |
17 | 19 | ||
18 | #endif /* _ARCH_POWERPC_BOOT_LIBFDT_ENV_H */ | 20 | #endif /* _ARCH_POWERPC_BOOT_LIBFDT_ENV_H */ |
diff --git a/arch/powerpc/boot/of.h b/arch/powerpc/boot/of.h index c8c1750aba0c..5603320dce07 100644 --- a/arch/powerpc/boot/of.h +++ b/arch/powerpc/boot/of.h | |||
@@ -24,11 +24,19 @@ void of_console_init(void); | |||
24 | typedef u32 __be32; | 24 | typedef u32 __be32; |
25 | 25 | ||
26 | #ifdef __LITTLE_ENDIAN__ | 26 | #ifdef __LITTLE_ENDIAN__ |
27 | #define cpu_to_be16(x) swab16(x) | ||
28 | #define be16_to_cpu(x) swab16(x) | ||
27 | #define cpu_to_be32(x) swab32(x) | 29 | #define cpu_to_be32(x) swab32(x) |
28 | #define be32_to_cpu(x) swab32(x) | 30 | #define be32_to_cpu(x) swab32(x) |
31 | #define cpu_to_be64(x) swab64(x) | ||
32 | #define be64_to_cpu(x) swab64(x) | ||
29 | #else | 33 | #else |
34 | #define cpu_to_be16(x) (x) | ||
35 | #define be16_to_cpu(x) (x) | ||
30 | #define cpu_to_be32(x) (x) | 36 | #define cpu_to_be32(x) (x) |
31 | #define be32_to_cpu(x) (x) | 37 | #define be32_to_cpu(x) (x) |
38 | #define cpu_to_be64(x) (x) | ||
39 | #define be64_to_cpu(x) (x) | ||
32 | #endif | 40 | #endif |
33 | 41 | ||
34 | #define PROM_ERROR (-1u) | 42 | #define PROM_ERROR (-1u) |