@ -28,25 +28,11 @@
# include <command.h>
# include <net.h>
# if defined(CONFIG_I386)
DECLARE_GLOBAL_DATA_PTR ;
# endif
static inline void go_setup ( int argc , char * argv [ ] )
/* Allow ports to override the default behavior */
__attribute__ ( ( weak ) )
unsigned long do_go_exec ( ulong ( * entry ) ( int , char * [ ] ) , int argc , char * argv [ ] )
{
# if defined(CONFIG_I386)
/*
* x86 does not use a dedicated register to pass the pointer
* to the global_data
*/
argv [ 0 ] = ( char * ) gd ;
# elif defined(CONFIG_BLACKFIN)
if ( dcache_status ( ) )
dcache_disable ( ) ;
if ( icache_status ( ) )
icache_disable ( ) ;
# endif
return entry ( argc , argv ) ;
}
int do_go ( cmd_tbl_t * cmdtp , int flag , int argc , char * argv [ ] )
@ -63,20 +49,11 @@ int do_go (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
printf ( " ## Starting application at 0x%08lX ... \n " , addr ) ;
go_setup ( argc , argv ) ;
# if defined(CONFIG_NIOS)
/*
* Nios function pointers are address > > 1
*/
addr > > = 1 ;
# endif
/*
* pass address parameter as argv [ 0 ] ( aka command name ) ,
* and all remaining args
*/
rc = ( ( ulong ( * ) ( int , char * [ ] ) ) addr ) ( - - argc , & argv [ 1 ] ) ;
rc = do_go_exec ( ( void * ) addr , argc - 1 , argv + 1 ) ;
if ( rc ! = 0 ) rcode = 1 ;
printf ( " ## Application terminated, rc = 0x%lX \n " , rc ) ;