@ -37,13 +37,7 @@
DECLARE_GLOBAL_DATA_PTR ;
DECLARE_GLOBAL_DATA_PTR ;
# if defined(CONFIG_SETUP_MEMORY_TAGS) || \
defined ( CONFIG_CMDLINE_TAG ) | | \
defined ( CONFIG_INITRD_TAG ) | | \
defined ( CONFIG_SERIAL_TAG ) | | \
defined ( CONFIG_REVISION_TAG )
static struct tag * params ;
static struct tag * params ;
# endif
static ulong get_sp ( void )
static ulong get_sp ( void )
{
{
@ -109,11 +103,6 @@ static void announce_and_cleanup(void)
cleanup_before_linux ( ) ;
cleanup_before_linux ( ) ;
}
}
# if defined(CONFIG_SETUP_MEMORY_TAGS) || \
defined ( CONFIG_CMDLINE_TAG ) | | \
defined ( CONFIG_INITRD_TAG ) | | \
defined ( CONFIG_SERIAL_TAG ) | | \
defined ( CONFIG_REVISION_TAG )
static void setup_start_tag ( bd_t * bd )
static void setup_start_tag ( bd_t * bd )
{
{
params = ( struct tag * ) bd - > bi_boot_params ;
params = ( struct tag * ) bd - > bi_boot_params ;
@ -127,9 +116,7 @@ static void setup_start_tag (bd_t *bd)
params = tag_next ( params ) ;
params = tag_next ( params ) ;
}
}
# endif
# ifdef CONFIG_SETUP_MEMORY_TAGS
static void setup_memory_tags ( bd_t * bd )
static void setup_memory_tags ( bd_t * bd )
{
{
int i ;
int i ;
@ -144,9 +131,7 @@ static void setup_memory_tags(bd_t *bd)
params = tag_next ( params ) ;
params = tag_next ( params ) ;
}
}
}
}
# endif
# ifdef CONFIG_CMDLINE_TAG
static void setup_commandline_tag ( bd_t * bd , char * commandline )
static void setup_commandline_tag ( bd_t * bd , char * commandline )
{
{
char * p ;
char * p ;
@ -171,9 +156,7 @@ static void setup_commandline_tag(bd_t *bd, char *commandline)
params = tag_next ( params ) ;
params = tag_next ( params ) ;
}
}
# endif
# ifdef CONFIG_INITRD_TAG
static void setup_initrd_tag ( bd_t * bd , ulong initrd_start , ulong initrd_end )
static void setup_initrd_tag ( bd_t * bd , ulong initrd_start , ulong initrd_end )
{
{
/* an ATAG_INITRD node tells the kernel where the compressed
/* an ATAG_INITRD node tells the kernel where the compressed
@ -187,14 +170,11 @@ static void setup_initrd_tag(bd_t *bd, ulong initrd_start, ulong initrd_end)
params = tag_next ( params ) ;
params = tag_next ( params ) ;
}
}
# endif
# ifdef CONFIG_SERIAL_TAG
static void setup_serial_tag ( struct tag * * tmp )
void setup_serial_tag ( struct tag * * tmp )
{
{
struct tag * params = * tmp ;
struct tag * params = * tmp ;
struct tag_serialnr serialnr ;
struct tag_serialnr serialnr ;
void get_board_serial ( struct tag_serialnr * serialnr ) ;
get_board_serial ( & serialnr ) ;
get_board_serial ( & serialnr ) ;
params - > hdr . tag = ATAG_SERIAL ;
params - > hdr . tag = ATAG_SERIAL ;
@ -204,13 +184,10 @@ void setup_serial_tag(struct tag **tmp)
params = tag_next ( params ) ;
params = tag_next ( params ) ;
* tmp = params ;
* tmp = params ;
}
}
# endif
# ifdef CONFIG_REVISION_TAG
static void setup_revision_tag ( struct tag * * in_params )
void setup_revision_tag ( struct tag * * in_params )
{
{
u32 rev = 0 ;
u32 rev = 0 ;
u32 get_board_rev ( void ) ;
rev = get_board_rev ( ) ;
rev = get_board_rev ( ) ;
params - > hdr . tag = ATAG_REVISION ;
params - > hdr . tag = ATAG_REVISION ;
@ -218,19 +195,12 @@ void setup_revision_tag(struct tag **in_params)
params - > u . revision . rev = rev ;
params - > u . revision . rev = rev ;
params = tag_next ( params ) ;
params = tag_next ( params ) ;
}
}
# endif
# if defined(CONFIG_SETUP_MEMORY_TAGS) || \
defined ( CONFIG_CMDLINE_TAG ) | | \
defined ( CONFIG_INITRD_TAG ) | | \
defined ( CONFIG_SERIAL_TAG ) | | \
defined ( CONFIG_REVISION_TAG )
static void setup_end_tag ( bd_t * bd )
static void setup_end_tag ( bd_t * bd )
{
{
params - > hdr . tag = ATAG_NONE ;
params - > hdr . tag = ATAG_NONE ;
params - > hdr . size = 0 ;
params - > hdr . size = 0 ;
}
}
# endif
# ifdef CONFIG_OF_LIBFDT
# ifdef CONFIG_OF_LIBFDT
static int create_fdt ( bootm_headers_t * images )
static int create_fdt ( bootm_headers_t * images )
@ -274,50 +244,38 @@ __weak void setup_board_tags(struct tag **in_params) {}
/* Subcommand: PREP */
/* Subcommand: PREP */
static void boot_prep_linux ( bootm_headers_t * images )
static void boot_prep_linux ( bootm_headers_t * images )
{
{
# ifdef CONFIG_CMDLINE_TAG
char * commandline = getenv ( " bootargs " ) ;
char * commandline = getenv ( " bootargs " ) ;
# endif
if ( IMAGE_ENABLE_OF_LIBFDT & & images - > ft_len ) {
# ifdef CONFIG_OF_LIBFDT
# ifdef CONFIG_OF_LIBFDT
if ( images - > ft_len ) {
debug ( " using: FDT \n " ) ;
debug ( " using: FDT \n " ) ;
if ( create_fdt ( images ) ) {
if ( create_fdt ( images ) ) {
printf ( " FDT creation failed! hanging... " ) ;
printf ( " FDT creation failed! hanging... " ) ;
hang ( ) ;
hang ( ) ;
}
}
} else
# endif
# endif
{
} else if ( BOOTM_ENABLE_TAGS ) {
# if defined(CONFIG_SETUP_MEMORY_TAGS) || \
defined ( CONFIG_CMDLINE_TAG ) | | \
defined ( CONFIG_INITRD_TAG ) | | \
defined ( CONFIG_SERIAL_TAG ) | | \
defined ( CONFIG_REVISION_TAG )
debug ( " using: ATAGS \n " ) ;
debug ( " using: ATAGS \n " ) ;
setup_start_tag ( gd - > bd ) ;
setup_start_tag ( gd - > bd ) ;
# ifdef CONFIG_SERIAL_TAG
if ( BOOTM_ENABLE_SERIAL_TAG )
setup_serial_tag ( & params ) ;
setup_serial_tag ( & params ) ;
# endif
if ( BOOTM_ENABLE_CMDLINE_TAG )
# ifdef CONFIG_CMDLINE_TAG
setup_commandline_tag ( gd - > bd , commandline ) ;
setup_commandline_tag ( gd - > bd , commandline ) ;
if ( BOOTM_ENABLE_REVISION_TAG )
# endif
setup_revision_tag ( & params ) ;
# ifdef CONFIG_REVISION_TAG
if ( BOOTM_ENABLE_MEMORY_TAGS )
setup_revision_tag ( & params ) ;
setup_memory_tags ( gd - > bd ) ;
# endif
if ( BOOTM_ENABLE_INITRD_TAG ) {
# ifdef CONFIG_SETUP_MEMORY_TAGS
if ( images - > rd_start & & images - > rd_end ) {
setup_memory_tags ( gd - > bd ) ;
setup_initrd_tag ( gd - > bd , images - > rd_start ,
# endif
images - > rd_end ) ;
# ifdef CONFIG_INITRD_TAG
}
if ( images - > rd_start & & images - > rd_end )
}
setup_initrd_tag ( gd - > bd , images - > rd_start ,
images - > rd_end ) ;
# endif
setup_board_tags ( & params ) ;
setup_board_tags ( & params ) ;
setup_end_tag ( gd - > bd ) ;
setup_end_tag ( gd - > bd ) ;
# else /* all tags */
} else {
printf ( " FDT and ATAGS support not compiled in - hanging \n " ) ;
printf ( " FDT and ATAGS support not compiled in - hanging \n " ) ;
hang ( ) ;
hang ( ) ;
# endif /* all tags */
}
}
}
}
@ -342,11 +300,9 @@ static void boot_jump_linux(bootm_headers_t *images)
bootstage_mark ( BOOTSTAGE_ID_RUN_OS ) ;
bootstage_mark ( BOOTSTAGE_ID_RUN_OS ) ;
announce_and_cleanup ( ) ;
announce_and_cleanup ( ) ;
# ifdef CONFIG_OF_LIBFDT
if ( IMAGE_ENABLE_OF_LIBFDT & & images - > ft_len )
if ( images - > ft_len )
r2 = ( unsigned long ) images - > ft_addr ;
r2 = ( unsigned long ) images - > ft_addr ;
else
else
# endif
r2 = gd - > bd - > bi_boot_params ;
r2 = gd - > bd - > bi_boot_params ;
kernel_entry ( 0 , machid , r2 ) ;
kernel_entry ( 0 , machid , r2 ) ;