projects
/
oweals
/
u-boot.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
net: move bootfile init into eth_initialize
[oweals/u-boot.git]
/
arch
/
x86
/
lib
/
bootm.c
diff --git
a/arch/x86/lib/bootm.c
b/arch/x86/lib/bootm.c
index a21a21f1f7f9fb0c1106884e17d42121211090d0..83caf6bdbd780113862d8d80374412cc9ff3cef4 100644
(file)
--- a/
arch/x86/lib/bootm.c
+++ b/
arch/x86/lib/bootm.c
@@
-28,15
+28,20
@@
#include <command.h>
#include <image.h>
#include <u-boot/zlib.h>
#include <command.h>
#include <image.h>
#include <u-boot/zlib.h>
+#include <asm/bootparam.h>
#include <asm/byteorder.h>
#include <asm/zimage.h>
#include <asm/byteorder.h>
#include <asm/zimage.h>
+#define COMMAND_LINE_OFFSET 0x9000
+
/*cmd_boot.c*/
/*cmd_boot.c*/
-int do_bootm_linux(int flag, int argc, char * const argv[], bootm_headers_t *images)
+int do_bootm_linux(int flag, int argc, char * const argv[],
+ bootm_headers_t *images)
{
{
- void *base_ptr;
- ulong os_data, os_len;
- image_header_t *hdr;
+ struct boot_params *base_ptr = NULL;
+ ulong os_data, os_len;
+ image_header_t *hdr;
+ void *load_address;
#if defined(CONFIG_FIT)
const void *data;
#if defined(CONFIG_FIT)
const void *data;
@@
-48,48
+53,55
@@
int do_bootm_linux(int flag, int argc, char * const argv[], bootm_headers_t *ima
if (images->legacy_hdr_valid) {
hdr = images->legacy_hdr_os;
if (images->legacy_hdr_valid) {
hdr = images->legacy_hdr_os;
- if (image_check_type
(hdr, IH_TYPE_MULTI)) {
+ if (image_check_type(hdr, IH_TYPE_MULTI)) {
/* if multi-part image, we need to get first subimage */
/* if multi-part image, we need to get first subimage */
- image_multi_getimg
(hdr, 0, &os_data, &os_len);
+ image_multi_getimg(hdr, 0, &os_data, &os_len);
} else {
/* otherwise get image data */
} else {
/* otherwise get image data */
- os_data = image_get_data
(hdr);
- os_len = image_get_data_size
(hdr);
+ os_data = image_get_data(hdr);
+ os_len = image_get_data_size(hdr);
}
#if defined(CONFIG_FIT)
} else if (images->fit_uname_os) {
}
#if defined(CONFIG_FIT)
} else if (images->fit_uname_os) {
- ret = fit_image_get_data
(images->fit_hdr_os,
+ ret = fit_image_get_data(images->fit_hdr_os,
images->fit_noffset_os, &data, &len);
if (ret) {
images->fit_noffset_os, &data, &len);
if (ret) {
- puts
("Can't get image data/size!\n");
+ puts("Can't get image data/size!\n");
goto error;
}
os_data = (ulong)data;
os_len = (ulong)len;
#endif
} else {
goto error;
}
os_data = (ulong)data;
os_len = (ulong)len;
#endif
} else {
- puts
("Could not find kernel image!\n");
+ puts("Could not find kernel image!\n");
goto error;
}
goto error;
}
- base_ptr = load_zimage ((void*)os_data, os_len,
- images->rd_start, images->rd_end - images->rd_start, 0);
+#ifdef CONFIG_CMD_ZBOOT
+ base_ptr = load_zimage((void *)os_data, os_len, &load_address);
+#endif
if (NULL == base_ptr) {
if (NULL == base_ptr) {
- printf
("## Kernel loading failed ...\n");
+ printf("## Kernel loading failed ...\n");
goto error;
goto error;
+ }
+ if (setup_zimage(base_ptr, (char *)base_ptr + COMMAND_LINE_OFFSET,
+ 0, images->rd_start,
+ images->rd_end - images->rd_start)) {
+ printf("## Setting up boot parameters failed ...\n");
+ goto error;
}
#ifdef DEBUG
}
#ifdef DEBUG
- printf
("## Transferring control to Linux (at address %08x) ...\n",
+ printf("## Transferring control to Linux (at address %08x) ...\n",
(u32)base_ptr);
#endif
/* we assume that the kernel is in place */
printf("\nStarting kernel ...\n\n");
(u32)base_ptr);
#endif
/* we assume that the kernel is in place */
printf("\nStarting kernel ...\n\n");
- boot_zimage(base_ptr);
+ boot_zimage(base_ptr
, load_address
);
/* does not return */
error:
/* does not return */
error: