summaryrefslogtreecommitdiffstats
path: root/commands
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2010-10-07 14:11:38 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2010-10-07 14:11:38 +0200
commitf7403928a9ee57ac717e38610dcbb04bb7798734 (patch)
tree3b7d58ff844b1ea9edbf0147035c62fe4887be5f /commands
parent884f4d47c697b825a7e69fe51d3b409be58da5d0 (diff)
downloadbarebox-f7403928a9ee57ac717e38610dcbb04bb7798734.tar.gz
barebox-f7403928a9ee57ac717e38610dcbb04bb7798734.tar.xz
Revert "Replace direct header access with the API routines"
This reverts commit 0ceafe14be072696eff3e549d8c7b7de8a3e416d. Conflicts: include/image.h Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'commands')
-rw-r--r--commands/bootm.c79
1 files changed, 37 insertions, 42 deletions
diff --git a/commands/bootm.c b/commands/bootm.c
index 98047cda69..a64f67879d 100644
--- a/commands/bootm.c
+++ b/commands/bootm.c
@@ -98,19 +98,19 @@ fixup_silent_linux ()
int relocate_image(struct image_handle *handle, void *load_address)
{
image_header_t *hdr = &handle->header;
- unsigned long len = image_get_size(hdr);
+ unsigned long len = ntohl(hdr->ih_size);
unsigned long data = (unsigned long)(handle->data);
#if defined CONFIG_CMD_BOOTM_ZLIB || defined CONFIG_CMD_BOOTM_BZLIB
uint unc_len = CFG_BOOTM_LEN;
#endif
- switch (image_get_comp(hdr)) {
+ switch (hdr->ih_comp) {
case IH_COMP_NONE:
- if(image_get_load(hdr) == data) {
+ if(ntohl(hdr->ih_load) == data) {
printf (" XIP ... ");
} else {
- memmove ((void *) image_get_load(hdr), (uchar *)data, len);
+ memmove ((void *) ntohl(hdr->ih_load), (uchar *)data, len);
}
break;
#ifdef CONFIG_CMD_BOOTM_ZLIB
@@ -137,8 +137,7 @@ int relocate_image(struct image_handle *handle, void *load_address)
break;
#endif
default:
- printf("Unimplemented compression type %d\n",
- image_get_comp(hdr));
+ printf ("Unimplemented compression type %d\n", hdr->ih_comp);
return -1;
}
@@ -162,24 +161,24 @@ struct image_handle *map_image(const char *filename, int verify)
handle = xzalloc(sizeof(struct image_handle));
header = &handle->header;
- if (read(fd, header, image_get_header_size()) < 0) {
+ if (read(fd, header, sizeof(image_header_t)) < 0) {
printf("could not read: %s\n", errno_str());
goto err_out;
}
- if (image_check_magic(header)) {
+ if (ntohl(header->ih_magic) != IH_MAGIC) {
puts ("Bad Magic Number\n");
goto err_out;
}
- checksum = image_get_hcrc(header);
+ checksum = ntohl(header->ih_hcrc);
header->ih_hcrc = 0;
- if (crc32 (0, (uchar *)header, image_get_header_size()) != checksum) {
+ if (crc32 (0, (uchar *)header, sizeof(image_header_t)) != checksum) {
puts ("Bad Header Checksum\n");
goto err_out;
}
- len = image_get_size(header);
+ len = ntohl(header->ih_size);
handle->data = memmap(fd, PROT_READ);
if (handle->data == (void *)-1) {
@@ -190,13 +189,12 @@ struct image_handle *map_image(const char *filename, int verify)
goto err_out;
}
} else {
- handle->data = (void *)((unsigned long)handle->data +
- image_get_header_size());
+ handle->data = (void *)((unsigned long)handle->data + sizeof(image_header_t));
}
if (verify) {
puts (" Verifying Checksum ... ");
- if (crc32 (0, handle->data, len) != image_get_dcrc(header)) {
+ if (crc32 (0, handle->data, len) != ntohl(header->ih_dcrc)) {
printf ("Bad Data CRC\n");
goto err_out;
}
@@ -332,9 +330,8 @@ static int do_bootm(struct command *cmdtp, int argc, char *argv[])
os_header = &os_handle->header;
- if (image_check_arch(os_header, IH_ARCH)) {
- printf("Unsupported Architecture 0x%x\n",
- image_get_arch(os_header));
+ if (os_header->ih_arch != IH_ARCH) {
+ printf ("Unsupported Architecture 0x%x\n", os_header->ih_arch);
goto err_out;
}
@@ -350,15 +347,14 @@ static int do_bootm(struct command *cmdtp, int argc, char *argv[])
/* loop through the registered handlers */
list_for_each_entry(handler, &handler_list, list) {
- if (image_check_os(os_header, handler->image_type)) {
+ if (handler->image_type == os_header->ih_os) {
handler->bootm(&data);
printf("handler returned!\n");
goto err_out;
}
}
- printf("no image handler found for image type %d\n",
- image_get_os(os_header));
+ printf("no image handler found for image type %d\n", os_header->ih_os);
err_out:
if (os_handle)
@@ -407,17 +403,17 @@ static int image_info (ulong addr)
printf ("\n## Checking Image at %08lx ...\n", addr);
/* Copy header so we can blank CRC field for re-calculation */
- memmove (&header, (char *)addr, image_get_header_size());
+ memmove (&header, (char *)addr, sizeof(image_header_t));
- if (image_check_magic(hdr)) {
+ if (ntohl(hdr->ih_magic) != IH_MAGIC) {
puts (" Bad Magic Number\n");
return 1;
}
data = (ulong)&header;
- len = image_get_header_size();
+ len = sizeof(image_header_t);
- checksum = image_get_hcrc(hdr);
+ checksum = ntohl(hdr->ih_hcrc);
hdr->ih_hcrc = 0;
if (crc32 (0, (uchar *)data, len) != checksum) {
@@ -428,11 +424,11 @@ static int image_info (ulong addr)
/* for multi-file images we need the data part, too */
print_image_hdr ((image_header_t *)addr);
- data = addr + image_get_header_size();
- len = image_get_size(hdr);
+ data = addr + sizeof(image_header_t);
+ len = ntohl(hdr->ih_size);
puts (" Verifying Checksum ... ");
- if (crc32 (0, (uchar *)data, len) != image_get_dcrc(hdr)) {
+ if (crc32 (0, (uchar *)data, len) != ntohl(hdr->ih_dcrc)) {
puts (" Bad Data CRC\n");
return 1;
}
@@ -455,11 +451,11 @@ void
print_image_hdr (image_header_t *hdr)
{
#if defined(CONFIG_CMD_DATE) || defined(CONFIG_TIMESTAMP)
- time_t timestamp = (time_t)image_get_time(hdr);
+ time_t timestamp = (time_t)ntohl(hdr->ih_time);
struct rtc_time tm;
#endif
- printf (" Image Name: %.*s\n", IH_NMLEN, image_get_name(hdr));
+ printf (" Image Name: %.*s\n", IH_NMLEN, hdr->ih_name);
#if defined(CONFIG_CMD_DATE) || defined(CONFIG_TIMESTAMP)
to_tm (timestamp, &tm);
printf (" Created: %4d-%02d-%02d %2d:%02d:%02d UTC\n",
@@ -468,27 +464,26 @@ print_image_hdr (image_header_t *hdr)
#endif /* CONFIG_CMD_DATE, CONFIG_TIMESTAMP */
#ifdef CONFIG_CMD_BOOTM_SHOW_TYPE
printf (" Image Type: %s %s %s (%s)\n",
- image_get_arch_name(image_get_arch(hdr)),
- image_get_os_name(image_get_os(hdr)),
- image_get_type_name(image_get_type(hdr)),
- image_get_comp_name(image_get_comp(hdr)));
+ image_arch(hdr->ih_arch),
+ image_os(hdr->ih_os),
+ image_type(hdr->ih_type),
+ image_compression(hdr->ih_comp));
#endif
printf (" Data Size: %d Bytes = %s\n"
" Load Address: %08x\n"
" Entry Point: %08x\n",
- image_get_size(hdr),
- size_human_readable(image_get_size(hdr)),
- image_get_load(hdr),
- image_get_ep(hdr));
+ ntohl(hdr->ih_size),
+ size_human_readable(ntohl(hdr->ih_size)),
+ ntohl(hdr->ih_load),
+ ntohl(hdr->ih_ep));
- if (image_check_type(hdr, IH_TYPE_MULTI)) {
+ if (hdr->ih_type == IH_TYPE_MULTI) {
int i;
- uint32_t len;
- uint32_t *len_ptr = (uint32_t *)((ulong)hdr + image_get_header_size());
+ ulong len;
+ ulong *len_ptr = (ulong *)((ulong)hdr + sizeof(image_header_t));
puts (" Contents:\n");
- for (i=0; len_ptr[i]; ++i) {
- len = ntohl(len_ptr[i]);
+ for (i=0; (len = ntohl(*len_ptr)); ++i, ++len_ptr) {
printf (" Image %d: %8ld Bytes = %s", i, len,
size_human_readable (len));
}