@ -458,19 +458,30 @@ static efi_status_t EFIAPI efi_start_image(efi_handle_t image_handle,
efi_is_direct_boot = false ;
/* call the image! */
if ( setjmp ( & info - > exit_jmp ) ) {
/* We returned from the child image */
return EFI_EXIT ( info - > exit_status ) ;
}
entry ( image_handle , & systab ) ;
/* Should usually never get here */
return EFI_EXIT ( EFI_SUCCESS ) ;
}
static efi_status_t EFIAPI efi_exit ( void * image_handle , long exit_status ,
unsigned long exit_data_size ,
u int16_t * exit_data )
static efi_status_t EFIAPI efi_exit ( efi_handle_t image_handle ,
efi_status_t exit_status , unsigned long exit_data_size ,
int16_t * exit_data )
{
struct efi_loaded_image * loaded_image_info = ( void * ) image_handle ;
EFI_ENTRY ( " %p, %ld, %ld, %p " , image_handle , exit_status ,
exit_data_size , exit_data ) ;
return EFI_EXIT ( efi_unsupported ( __func__ ) ) ;
loaded_image_info - > exit_status = exit_status ;
longjmp ( & loaded_image_info - > exit_jmp ) ;
panic ( " EFI application exited " ) ;
}
static struct efi_object * efi_search_obj ( void * handle )
@ -746,7 +757,7 @@ static const struct efi_boot_services efi_boot_services = {
. install_configuration_table = efi_install_configuration_table ,
. load_image = efi_load_image ,
. start_image = efi_start_image ,
. exit = ( void * ) efi_exit ,
. exit = efi_exit ,
. unload_image = efi_unload_image ,
. exit_boot_services = efi_exit_boot_services ,
. get_next_monotonic_count = efi_get_next_monotonic_count ,