#include <fdt_support.h>
#include <image.h>
#include <lmb.h>
+#include <log.h>
+#include <asm/global_data.h>
#include <linux/libfdt.h>
#include <malloc.h>
#include <mapmem.h>
static int do_bootm_netbsd(int flag, int argc, char *const argv[],
bootm_headers_t *images)
{
- void (*loader)(bd_t *, image_header_t *, char *, char *);
+ void (*loader)(struct bd_info *, image_header_t *, char *, char *);
image_header_t *os_hdr, *hdr;
ulong kernel_data, kernel_len;
char *cmdline;
cmdline = "";
}
- loader = (void (*)(bd_t *, image_header_t *, char *, char *))images->ep;
+ loader = (void (*)(struct bd_info *, image_header_t *, char *, char *))images->ep;
printf("## Transferring control to NetBSD stage-2 loader (at address %08lx) ...\n",
(ulong)loader);
static int do_bootm_rtems(int flag, int argc, char *const argv[],
bootm_headers_t *images)
{
- void (*entry_point)(bd_t *);
+ void (*entry_point)(struct bd_info *);
if (flag != BOOTM_STATE_OS_GO)
return 0;
}
#endif
- entry_point = (void (*)(bd_t *))images->ep;
+ entry_point = (void (*)(struct bd_info *))images->ep;
printf("## Transferring control to RTEMS (at address %08lx) ...\n",
(ulong)entry_point);
return ret;
/* Locate FDT etc */
- ret = bootm_find_images(flag, argc, argv);
+ ret = bootm_find_images(flag, argc, argv, 0, 0);
if (ret)
return ret;
return 0;
/* Locate FDT, if provided */
- ret = bootm_find_images(flag, argc, argv);
+ ret = bootm_find_images(flag, argc, argv, 0, 0);
if (ret)
return ret;
images->ep);
bootstage_mark(BOOTSTAGE_ID_RUN_OS);
+ /* We expect to return */
+ images->os.type = IH_TYPE_STANDALONE;
+
image_buf = map_sysmem(images->ep, images->os.image_len);
efi_ret = efi_run_image(image_buf, images->os.image_len);
- if (efi_ret != EFI_SUCCESS) {
- printf("## Failed to run EFI image: r = %lu\n",
- efi_ret & ~EFI_ERROR_MASK);
+ if (efi_ret != EFI_SUCCESS)
return 1;
- }
-
return 0;
}
#endif