summaryrefslogtreecommitdiff
path: root/kexec/arch/arm/crashdump-arm.c
diff options
context:
space:
mode:
authorTaras Kondratiuk <taras.kondratiuk@linaro.org>2014-01-13 12:47:25 +0200
committerSimon Horman <horms@verge.net.au>2014-01-14 09:25:34 +0900
commit69336eb69fc021d00da9fbf2c6b25a4882f2c6b4 (patch)
tree6e063184940499ba4763f024633cb33821f8f668 /kexec/arch/arm/crashdump-arm.c
parent158d7638f1669a8d34def55ab81f10993e68e76a (diff)
kexec: arm: Fix endianness in crashdump header
Currently little-endian ELFDATA is hard-coded in crashdump header. This lead to a wrong header format if crashdump is generated on BE system. Set native endianness into ELFDATA field. Signed-off-by: Taras Kondratiuk <taras.kondratiuk@linaro.org> Signed-off-by: Simon Horman <horms@verge.net.au>
Diffstat (limited to 'kexec/arch/arm/crashdump-arm.c')
-rw-r--r--kexec/arch/arm/crashdump-arm.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/kexec/arch/arm/crashdump-arm.c b/kexec/arch/arm/crashdump-arm.c
index 01973b1..0cd6935 100644
--- a/kexec/arch/arm/crashdump-arm.c
+++ b/kexec/arch/arm/crashdump-arm.c
@@ -31,6 +31,13 @@
#include "../../crashdump.h"
#include "crashdump-arm.h"
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+#define ELFDATANATIVE ELFDATA2LSB
+#elif __BYTE_ORDER == __BIG_ENDIAN
+#define ELFDATANATIVE ELFDATA2MSB
+#else
+#error "Unknown machine endian"
+#endif
/*
* Used to save various memory ranges/regions needed for the captured
@@ -47,7 +54,7 @@ static struct memory_range crash_reserved_mem;
static struct crash_elf_info elf_info = {
.class = ELFCLASS32,
- .data = ELFDATA2LSB,
+ .data = ELFDATANATIVE,
.machine = EM_ARM,
.page_offset = PAGE_OFFSET,
};