summaryrefslogtreecommitdiffstats
path: root/cmd/bootefi.c
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/bootefi.c')
-rw-r--r--cmd/bootefi.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/cmd/bootefi.c b/cmd/bootefi.c
index 7f552fc0d4..216906527f 100644
--- a/cmd/bootefi.c
+++ b/cmd/bootefi.c
@@ -197,11 +197,22 @@ static unsigned long do_bootefi_exec(void *efi, void *fdt)
#ifdef CONFIG_LCD
efi_gop_register();
#endif
+#ifdef CONFIG_NET
+ void *nethandle = loaded_image_info.device_handle;
+ efi_net_register(&nethandle);
- /* Call our payload! */
-#ifdef DEBUG_EFI
- printf("%s:%d Jumping to 0x%lx\n", __func__, __LINE__, (long)entry);
+ if (!memcmp(bootefi_device_path[0].str, "N\0e\0t", 6))
+ loaded_image_info.device_handle = nethandle;
#endif
+
+ /* Call our payload! */
+ debug("%s:%d Jumping to 0x%lx\n", __func__, __LINE__, (long)entry);
+
+ if (setjmp(&loaded_image_info.exit_jmp)) {
+ efi_status_t status = loaded_image_info.exit_status;
+ return status == EFI_SUCCESS ? 0 : -EINVAL;
+ }
+
return entry(&loaded_image_info, &systab);
}
OpenPOWER on IntegriCloud