diff options
| -rw-r--r-- | common/board_f.c | 17 | ||||
| -rw-r--r-- | common/board_r.c | 11 | ||||
| -rw-r--r-- | include/asm-generic/global_data.h | 3 | 
3 files changed, 30 insertions, 1 deletions
| diff --git a/common/board_f.c b/common/board_f.c index 8efdb6365..ab4242a77 100644 --- a/common/board_f.c +++ b/common/board_f.c @@ -53,6 +53,7 @@  #include <os.h>  #include <post.h>  #include <spi.h> +#include <trace.h>  #include <watchdog.h>  #include <asm/errno.h>  #include <asm/io.h> @@ -500,6 +501,18 @@ static int reserve_lcd(void)  }  #endif /* CONFIG_LCD */ +static int reserve_trace(void) +{ +#ifdef CONFIG_TRACE +	gd->relocaddr -= CONFIG_TRACE_BUFFER_SIZE; +	gd->trace_buff = map_sysmem(gd->relocaddr, CONFIG_TRACE_BUFFER_SIZE); +	debug("Reserving %dk for trace data at: %08lx\n", +	      CONFIG_TRACE_BUFFER_SIZE >> 10, gd->relocaddr); +#endif + +	return 0; +} +  #if defined(CONFIG_VIDEO) && (!defined(CONFIG_PPC) || defined(CONFIG_8xx)) \  		&& !defined(CONFIG_ARM) && !defined(CONFIG_X86)  static int reserve_video(void) @@ -818,8 +831,9 @@ static init_fnc_t init_sequence_f[] = {  #ifdef CONFIG_SANDBOX  	setup_ram_buf,  #endif -	setup_fdt,  	setup_mon_len, +	setup_fdt, +	trace_early_init,  #if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx)  	/* TODO: can this go into arch_cpu_init()? */  	probecpu, @@ -963,6 +977,7 @@ static init_fnc_t init_sequence_f[] = {  #ifdef CONFIG_LCD  	reserve_lcd,  #endif +	reserve_trace,  	/* TODO: Why the dependency on CONFIG_8xx? */  #if defined(CONFIG_VIDEO) && (!defined(CONFIG_PPC) || defined(CONFIG_8xx)) \  		&& !defined(CONFIG_ARM) && !defined(CONFIG_X86) diff --git a/common/board_r.c b/common/board_r.c index f5649c95f..f7a036e32 100644 --- a/common/board_r.c +++ b/common/board_r.c @@ -58,6 +58,7 @@  #include <serial.h>  #include <spi.h>  #include <stdio_dev.h> +#include <trace.h>  #include <watchdog.h>  #ifdef CONFIG_ADDR_MAP  #include <asm/mmu.h> @@ -106,6 +107,15 @@ static int initr_secondary_cpu(void)  	return 0;  } +static int initr_trace(void) +{ +#ifdef CONFIG_TRACE +	trace_init(gd->trace_buff, CONFIG_TRACE_BUFFER_SIZE); +#endif + +	return 0; +} +  static int initr_reloc(void)  {  	gd->flags |= GD_FLG_RELOC;	/* tell others: relocation done */ @@ -711,6 +721,7 @@ static int run_main_loop(void)   * TODO: perhaps reset the watchdog in the initcall function after each call?   */  init_fnc_t init_sequence_r[] = { +	initr_trace,  	initr_reloc,  	/* TODO: could x86/PPC have this also perhaps? */  #ifdef CONFIG_ARM diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h index 3e9ca1182..8cfc3fa77 100644 --- a/include/asm-generic/global_data.h +++ b/include/asm-generic/global_data.h @@ -82,6 +82,9 @@ typedef struct global_data {  	unsigned long fdt_size;	/* Space reserved for relocated FDT */  	void **jt;		/* jump table */  	char env_buf[32];	/* buffer for getenv() before reloc. */ +#ifdef CONFIG_TRACE +	void		*trace_buff;	/* The trace buffer */ +#endif  	struct arch_global_data arch;	/* architecture-specific data */  } gd_t;  #endif |