@ -14,6 +14,7 @@
# include <errno.h>
# include <linux/libfdt.h>
# include <linux/libfdt_env.h>
# include <mapmem.h>
# include <memalign.h>
# include <asm/global_data.h>
# include <asm-generic/sections.h>
@ -431,7 +432,8 @@ static int do_bootefi(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
unsigned long addr ;
char * saddr ;
efi_status_t r ;
void * fdt_addr ;
unsigned long fdt_addr ;
void * fdt ;
/* Allow unaligned memory access */
allow_unaligned ( ) ;
@ -448,11 +450,12 @@ static int do_bootefi(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
return CMD_RET_USAGE ;
if ( argc > 2 ) {
fdt_addr = ( void * ) simple_strtoul ( argv [ 2 ] , NULL , 16 ) ;
fdt_addr = simple_strtoul ( argv [ 2 ] , NULL , 16 ) ;
if ( ! fdt_addr & & * argv [ 2 ] ! = ' 0 ' )
return CMD_RET_USAGE ;
/* Install device tree */
r = efi_install_fdt ( fdt_addr ) ;
fdt = map_sysmem ( fdt_addr , 0 ) ;
r = efi_install_fdt ( fdt ) ;
if ( r ! = EFI_SUCCESS ) {
printf ( " ERROR: failed to install device tree \n " ) ;
return CMD_RET_FAILURE ;
@ -471,7 +474,7 @@ static int do_bootefi(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
addr = simple_strtoul ( saddr , NULL , 16 ) ;
else
addr = CONFIG_SYS_LOAD_ADDR ;
memcpy ( ( char * ) addr , __efi_helloworld_begin , size ) ;
memcpy ( map_sysmem ( addr , size ) , __efi_helloworld_begin , size ) ;
} else
# endif
# ifdef CONFIG_CMD_BOOTEFI_SELFTEST
@ -517,7 +520,7 @@ static int do_bootefi(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
}
printf ( " ## Starting EFI application at %08lx ... \n " , addr ) ;
r = do_bootefi_exec ( ( void * ) addr , bootefi_device_path ,
r = do_bootefi_exec ( map_sysmem ( addr , 0 ) , bootefi_device_path ,
bootefi_image_path ) ;
printf ( " ## Application terminated, r = %lu \n " ,
r & ~ EFI_ERROR_MASK ) ;