diff options
Diffstat (limited to 'arch/sparc')
| -rw-r--r-- | arch/sparc/include/asm/global_data.h | 20 | ||||
| -rw-r--r-- | arch/sparc/lib/board.c | 32 | 
2 files changed, 15 insertions, 37 deletions
| diff --git a/arch/sparc/include/asm/global_data.h b/arch/sparc/include/asm/global_data.h index dea285727..7c1ac0ddd 100644 --- a/arch/sparc/include/asm/global_data.h +++ b/arch/sparc/include/asm/global_data.h @@ -1,5 +1,5 @@  /* - * (C) Copyright 2002 + * (C) Copyright 2002-2010   * Wolfgang Denk, DENX Software Engineering, wd@denx.de.   *   * (C) Copyright 2007 @@ -70,19 +70,21 @@ typedef struct global_data {  #ifdef CONFIG_LWMON  	unsigned long kbd_status;  #endif -	void **jt;		/* jump table */ +	void	**jt;			/* jump table */ +	char	env_buf[32];		/* buffer for getenv() before reloc. */  } gd_t;  /*   * Global Data Flags   */ -#define	GD_FLG_RELOC	0x00001	/* Code was relocated to RAM            */ -#define	GD_FLG_DEVINIT	0x00002	/* Devices have been initialized        */ -#define	GD_FLG_SILENT	0x00004	/* Silent mode                          */ -#define	GD_FLG_POSTFAIL	0x00008	/* Critical POST test failed		*/ -#define	GD_FLG_POSTSTOP	0x00010	/* POST seqeunce aborted		*/ -#define	GD_FLG_LOGINIT	0x00020	/* Log Buffer has been initialized	*/ -#define GD_FLG_DISABLE_CONSOLE	0x00040		/* Disable console (in & out)	 */ +#define	GD_FLG_RELOC		0x00001	/* Code was relocated to RAM		*/ +#define	GD_FLG_DEVINIT		0x00002	/* Devices have been initialized	*/ +#define	GD_FLG_SILENT		0x00004	/* Silent mode				*/ +#define	GD_FLG_POSTFAIL		0x00008	/* Critical POST test failed		*/ +#define	GD_FLG_POSTSTOP		0x00010	/* POST seqeunce aborted		*/ +#define	GD_FLG_LOGINIT		0x00020	/* Log Buffer has been initialized	*/ +#define GD_FLG_DISABLE_CONSOLE	0x00040	/* Disable console (in & out)		*/ +#define GD_FLG_ENV_READY	0x00080	/* Environment imported into hash table	*/  #define DECLARE_GLOBAL_DATA_PTR     register volatile gd_t *gd asm ("%g7") diff --git a/arch/sparc/lib/board.c b/arch/sparc/lib/board.c index 4f6970965..09bcdb048 100644 --- a/arch/sparc/lib/board.c +++ b/arch/sparc/lib/board.c @@ -252,33 +252,13 @@ void board_init_f(ulong bootflag)  	post_run(NULL, POST_ROM | post_bootmode_get(0));  #endif +#if !defined(CONFIG_RELOC_FIXUP_WORKS)  	/*  	 * We have to relocate the command table manually  	 */ -	for (cmdtp = &__u_boot_cmd_start; cmdtp != &__u_boot_cmd_end; cmdtp++) { -		ulong addr; -		addr = (ulong) (cmdtp->cmd) + gd->reloc_off; -#if DEBUG_COMMANDS -		printf("Command \"%s\": 0x%08lx => 0x%08lx\n", -		       cmdtp->name, (ulong) (cmdtp->cmd), addr); -#endif -		cmdtp->cmd = -		    (int (*)(struct cmd_tbl_s *, int, int, char *[]))addr; - -		addr = (ulong) (cmdtp->name) + gd->reloc_off; -		cmdtp->name = (char *)addr; - -		if (cmdtp->usage) { -			addr = (ulong) (cmdtp->usage) + gd->reloc_off; -			cmdtp->usage = (char *)addr; -		} -#ifdef	CONFIG_SYS_LONGHELP -		if (cmdtp->help) { -			addr = (ulong) (cmdtp->help) + gd->reloc_off; -			cmdtp->help = (char *)addr; -		} -#endif -	} +	fixup_cmdtable(&__u_boot_cmd_start, +		(ulong)(&__u_boot_cmd_end - &__u_boot_cmd_start)); +#endif /* !defined(CONFIG_RELOC_FIXUP_WORKS) */  #if defined(CONFIG_CMD_AMBAPP) && defined(CONFIG_SYS_AMBAPP_PRINT_ON_STARTUP)  	puts("AMBA:\n"); @@ -379,10 +359,6 @@ void board_init_f(ulong bootflag)  	/* Initialize the console (after the relocation and devices init) */  	console_init_r(); -#ifdef CONFIG_SERIAL_SOFTWARE_FIFO -	serial_buffered_init(); -#endif -  #ifdef CONFIG_STATUS_LED  	status_led_set(STATUS_LED_BOOT, STATUS_LED_BLINKING);  #endif |