summaryrefslogtreecommitdiff
path: root/kexec/arch
diff options
context:
space:
mode:
authorSebastian Andrzej Siewior <sebastian@breakpoint.cc>2010-01-22 18:15:38 +0100
committerSebastian Andrzej Siewior <bigeasy@linutronix.de>2010-03-31 10:01:29 +0200
commitde5dd4d4036211b0a8e1839ce87984a074eb18f8 (patch)
treebf66e9eb865a868bbbf572cdebbddb0e94cd6488 /kexec/arch
parent872edb58246b9f310bd99315e5e102ab754fb765 (diff)
Let SH adn ARM use common uImage probe code
The now generic probe function is more complete than the currently used. It seems that ARM's and SH's uImage are always uncompressed so it might be good to check for this. Cc: Paul Mundt <lethal@linux-sh.org> Cc: Marc Andre Tanner <mat@brain-dump.org> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Diffstat (limited to 'kexec/arch')
-rw-r--r--kexec/arch/arm/Makefile1
-rw-r--r--kexec/arch/arm/kexec-uImage-arm.c15
-rw-r--r--kexec/arch/sh/Makefile1
-rw-r--r--kexec/arch/sh/kexec-uImage-sh.c15
4 files changed, 6 insertions, 26 deletions
diff --git a/kexec/arch/arm/Makefile b/kexec/arch/arm/Makefile
index 9416339..2ecdb66 100644
--- a/kexec/arch/arm/Makefile
+++ b/kexec/arch/arm/Makefile
@@ -5,6 +5,7 @@ arm_KEXEC_SRCS= kexec/arch/arm/kexec-elf-rel-arm.c
arm_KEXEC_SRCS+= kexec/arch/arm/kexec-zImage-arm.c
arm_KEXEC_SRCS+= kexec/arch/arm/kexec-uImage-arm.c
arm_KEXEC_SRCS+= kexec/arch/arm/kexec-arm.c
+arm_KEXEC_SRCS+= kexec/kexec-uImage.c
dist += kexec/arch/arm/Makefile $(arm_KEXEC_SRCS) \
kexec/arch/arm/kexec-arm.h \
diff --git a/kexec/arch/arm/kexec-uImage-arm.c b/kexec/arch/arm/kexec-uImage-arm.c
index e881fd8..4875185 100644
--- a/kexec/arch/arm/kexec-uImage-arm.c
+++ b/kexec/arch/arm/kexec-uImage-arm.c
@@ -5,24 +5,13 @@
#include <string.h>
#include <sys/types.h>
#include <image.h>
+#include <kexec-uImage.h>
#include "../../kexec.h"
#include "kexec-arm.h"
int uImage_arm_probe(const char *buf, off_t len)
{
- struct image_header header;
-
- if ((uintmax_t)len < (uintmax_t)sizeof(header))
- return -1;
-
- memcpy(&header, buf, sizeof(header));
-
- if (cpu_to_be32(header.ih_magic) != IH_MAGIC)
- return -1;
-
- /* XXX: check CRC Checksum? */
-
- return 0;
+ return uImage_probe(buf, len, IH_ARCH_ARM);
}
int uImage_arm_load(int argc, char **argv, const char *buf, off_t len,
diff --git a/kexec/arch/sh/Makefile b/kexec/arch/sh/Makefile
index 9ccd008..a9f6081 100644
--- a/kexec/arch/sh/Makefile
+++ b/kexec/arch/sh/Makefile
@@ -9,6 +9,7 @@ sh_KEXEC_SRCS += kexec/arch/sh/kexec-elf-sh.c
sh_KEXEC_SRCS += kexec/arch/sh/kexec-elf-rel-sh.c
sh_KEXEC_SRCS += kexec/arch/sh/netbsd_booter.S
sh_KEXEC_SRCS += kexec/arch/sh/crashdump-sh.c
+sh_KEXEC_SRCS += kexec/kexec-uImage.c
sh_ADD_BUFFER =
sh_ADD_SEGMENT =
diff --git a/kexec/arch/sh/kexec-uImage-sh.c b/kexec/arch/sh/kexec-uImage-sh.c
index c2bce53..e983165 100644
--- a/kexec/arch/sh/kexec-uImage-sh.c
+++ b/kexec/arch/sh/kexec-uImage-sh.c
@@ -7,24 +7,13 @@
#include <string.h>
#include <sys/types.h>
#include <image.h>
+#include <kexec-uImage.h>
#include "../../kexec.h"
#include "kexec-sh.h"
int uImage_sh_probe(const char *buf, off_t len)
{
- struct image_header header;
-
- if ((uintmax_t)len < (uintmax_t)sizeof(header))
- return -1;
-
- memcpy(&header, buf, sizeof(header));
-
- if (cpu_to_be32(header.ih_magic) != IH_MAGIC)
- return -1;
-
- /* XXX: check CRC Checksum? */
-
- return 0;
+ return uImage_probe(buf, len, IH_ARCH_SH);
}
int uImage_sh_load(int argc, char **argv, const char *buf, off_t len,