diff options
| author | Wolfgang Denk <wd@denx.de> | 2010-10-28 20:35:36 +0200 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2010-10-29 21:39:59 +0200 | 
| commit | a9aa3926295df759306258e5e24cace414f53b67 (patch) | |
| tree | b63739471ef3aaebad27fd610f8394fee35120b5 /arch/arm/lib | |
| parent | 2e5167ccad93ca9cfa6a2acfab5e4785418e477e (diff) | |
| download | olio-uboot-2014.01-a9aa3926295df759306258e5e24cace414f53b67.tar.xz olio-uboot-2014.01-a9aa3926295df759306258e5e24cace414f53b67.zip | |
Drop support for CONFIG_SYS_ARM_WITHOUT_RELOC
When this define was introduced, the idea was to provide a soft
migration path for ARM boards to get adapted to the new relocation
support.  However, other recent changes led to a different
implementation (ELF relocation), where this no longer works.  By now
CONFIG_SYS_ARM_WITHOUT_RELOC does not only not help any more, but it
actually hurts because it obfuscates the actual code by sprinkling it
with lots of dead and non-working debris.
So let's make a clean cut and drop CONFIG_SYS_ARM_WITHOUT_RELOC.
Signed-off-by: Wolfgang Denk <wd@denx.de>
Tested-by: Heiko Schocher <hs@denx.de>
Tested-by: Reinhard Meyer <u-boot@emk-elektronik.de>
Diffstat (limited to 'arch/arm/lib')
| -rw-r--r-- | arch/arm/lib/board.c | 228 | ||||
| -rw-r--r-- | arch/arm/lib/cache-cp15.c | 19 | ||||
| -rw-r--r-- | arch/arm/lib/interrupts.c | 6 | 
3 files changed, 0 insertions, 253 deletions
| diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c index 33b369496..1fd5f8362 100644 --- a/arch/arm/lib/board.c +++ b/arch/arm/lib/board.c @@ -127,11 +127,7 @@ static int init_baudrate (void)  	char tmp[64];	/* long enough for environment variables */  	int i = getenv_f("baudrate", tmp, sizeof (tmp)); -#if !defined(CONFIG_SYS_ARM_WITHOUT_RELOC)  	gd->baudrate = (i > 0) -#else -	gd->bd->bi_baudrate = gd->baudrate = (i > 0) -#endif  			? (int) simple_strtoul (tmp, NULL, 10)  			: CONFIG_BAUDRATE; @@ -142,11 +138,7 @@ static int display_banner (void)  {  	printf ("\n\n%s\n\n", version_string);  	debug ("U-Boot code: %08lX -> %08lX  BSS: -> %08lX\n", -#if !defined(CONFIG_SYS_ARM_WITHOUT_RELOC)  	       _TEXT_BASE, -#else -	       _armboot_start, -#endif  	       _bss_start_ofs+_TEXT_BASE, _bss_end_ofs+_TEXT_BASE);  #ifdef CONFIG_MODEM_SUPPORT  	debug ("Modem Support enabled\n"); @@ -190,16 +182,6 @@ static int display_dram_config (void)  	return (0);  } -#if defined(CONFIG_SYS_ARM_WITHOUT_RELOC) -#ifndef CONFIG_SYS_NO_FLASH -static void display_flash_config (ulong size) -{ -	puts ("Flash: "); -	print_size (size, "\n"); -} -#endif /* CONFIG_SYS_NO_FLASH */ -#endif -  #if defined(CONFIG_HARD_I2C) || defined(CONFIG_SOFT_I2C)  static int init_func_i2c (void)  { @@ -246,214 +228,6 @@ typedef int (init_fnc_t) (void);  int print_cpuinfo (void); -#if defined(CONFIG_SYS_ARM_WITHOUT_RELOC) -init_fnc_t *init_sequence[] = { -#if defined(CONFIG_ARCH_CPU_INIT) -	arch_cpu_init,		/* basic arch cpu dependent setup */ -#endif -	board_init,		/* basic board dependent setup */ -#if defined(CONFIG_USE_IRQ) -	interrupt_init,		/* set up exceptions */ -#endif -	timer_init,		/* initialize timer */ -#ifdef CONFIG_FSL_ESDHC -	get_clocks, -#endif -	env_init,		/* initialize environment */ -	init_baudrate,		/* initialze baudrate settings */ -	serial_init,		/* serial communications setup */ -	console_init_f,		/* stage 1 init of console */ -	display_banner,		/* say that we are here */ -#if defined(CONFIG_DISPLAY_CPUINFO) -	print_cpuinfo,		/* display cpu info (and speed) */ -#endif -#if defined(CONFIG_DISPLAY_BOARDINFO) -	checkboard,		/* display board info */ -#endif -#if defined(CONFIG_HARD_I2C) || defined(CONFIG_SOFT_I2C) -	init_func_i2c, -#endif -	dram_init,		/* configure available RAM banks */ -#if defined(CONFIG_CMD_PCI) || defined (CONFIG_PCI) -	arm_pci_init, -#endif -	display_dram_config, -	NULL, -}; - -void start_armboot (void) -{ -	init_fnc_t **init_fnc_ptr; -	char *s; -#if defined(CONFIG_VFD) || defined(CONFIG_LCD) -	unsigned long addr; -#endif - -	/* Pointer is writable since we allocated a register for it */ -	gd = (gd_t*)(_armboot_start - CONFIG_SYS_MALLOC_LEN - sizeof(gd_t)); -	/* compiler optimization barrier needed for GCC >= 3.4 */ -	__asm__ __volatile__("": : :"memory"); - -	memset ((void*)gd, 0, sizeof (gd_t)); -	gd->bd = (bd_t*)((char*)gd - sizeof(bd_t)); -	memset (gd->bd, 0, sizeof (bd_t)); - -	gd->flags |= GD_FLG_RELOC; - -	monitor_flash_len = _bss_start - _armboot_start; - -	for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) { -		if ((*init_fnc_ptr)() != 0) { -			hang (); -		} -	} - -	/* armboot_start is defined in the board-specific linker script */ -	mem_malloc_init (_armboot_start - CONFIG_SYS_MALLOC_LEN, -			CONFIG_SYS_MALLOC_LEN); - -#ifndef CONFIG_SYS_NO_FLASH -	/* configure available FLASH banks */ -	display_flash_config (flash_init ()); -#endif /* CONFIG_SYS_NO_FLASH */ - -#ifdef CONFIG_VFD -#	ifndef PAGE_SIZE -#	  define PAGE_SIZE 4096 -#	endif -	/* -	 * reserve memory for VFD display (always full pages) -	 */ -	/* bss_end is defined in the board-specific linker script */ -	addr = (_bss_end + (PAGE_SIZE - 1)) & ~(PAGE_SIZE - 1); -	vfd_setmem (addr); -	gd->fb_base = addr; -#endif /* CONFIG_VFD */ - -#ifdef CONFIG_LCD -	/* board init may have inited fb_base */ -	if (!gd->fb_base) { -#		ifndef PAGE_SIZE -#		  define PAGE_SIZE 4096 -#		endif -		/* -		 * reserve memory for LCD display (always full pages) -		 */ -		/* bss_end is defined in the board-specific linker script */ -		addr = (_bss_end + (PAGE_SIZE - 1)) & ~(PAGE_SIZE - 1); -		lcd_setmem (addr); -		gd->fb_base = addr; -	} -#endif /* CONFIG_LCD */ - -#if defined(CONFIG_CMD_NAND) -	puts ("NAND:  "); -	nand_init();		/* go init the NAND */ -#endif - -#if defined(CONFIG_CMD_ONENAND) -	onenand_init(); -#endif - -#ifdef CONFIG_HAS_DATAFLASH -	AT91F_DataflashInit(); -	dataflash_print_info(); -#endif - -#ifdef CONFIG_GENERIC_MMC -/* - * MMC initialization is called before relocating env. - * Thus It is required that operations like pin multiplexer - * be put in board_init. - */ -	puts ("MMC:   "); -	mmc_initialize (gd->bd); -#endif - -	/* initialize environment */ -	env_relocate (); - -#ifdef CONFIG_VFD -	/* must do this after the framebuffer is allocated */ -	drv_vfd_init(); -#endif /* CONFIG_VFD */ - -#ifdef CONFIG_SERIAL_MULTI -	serial_initialize(); -#endif - -	/* IP Address */ -	gd->bd->bi_ip_addr = getenv_IPaddr ("ipaddr"); - -	stdio_init ();	/* get the devices list going. */ - -	jumptable_init (); - -#if defined(CONFIG_API) -	/* Initialize API */ -	api_init (); -#endif - -	console_init_r ();	/* fully init console as a device */ - -#if defined(CONFIG_ARCH_MISC_INIT) -	/* miscellaneous arch dependent initialisations */ -	arch_misc_init (); -#endif -#if defined(CONFIG_MISC_INIT_R) -	/* miscellaneous platform dependent initialisations */ -	misc_init_r (); -#endif - -	/* enable exceptions */ -	enable_interrupts (); - -	/* Perform network card initialisation if necessary */ - -#if defined(CONFIG_DRIVER_SMC91111) || defined (CONFIG_DRIVER_LAN91C96) -	/* XXX: this needs to be moved to board init */ -	if (getenv ("ethaddr")) { -		uchar enetaddr[6]; -		eth_getenv_enetaddr("ethaddr", enetaddr); -		smc_set_mac_addr(enetaddr); -	} -#endif /* CONFIG_DRIVER_SMC91111 || CONFIG_DRIVER_LAN91C96 */ - -	/* Initialize from environment */ -	if ((s = getenv ("loadaddr")) != NULL) { -		load_addr = simple_strtoul (s, NULL, 16); -	} -#if defined(CONFIG_CMD_NET) -	if ((s = getenv ("bootfile")) != NULL) { -		copy_filename (BootFile, s, sizeof (BootFile)); -	} -#endif - -#ifdef BOARD_LATE_INIT -	board_late_init (); -#endif - -#ifdef CONFIG_BITBANGMII -	bb_miiphy_init(); -#endif -#if defined(CONFIG_CMD_NET) -#if defined(CONFIG_NET_MULTI) -	puts ("Net:   "); -#endif -	eth_initialize(gd->bd); -#if defined(CONFIG_RESET_PHY_R) -	debug ("Reset Ethernet PHY\n"); -	reset_phy(); -#endif -#endif -	/* main_loop() can return to retry autoboot, if so just run it again. */ -	for (;;) { -		main_loop (); -	} - -	/* NOTREACHED - no way out of command loop except booting */ -} -#else  void __dram_init_banksize(void)  {  	gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE; @@ -868,8 +642,6 @@ void board_init_r (gd_t *id, ulong dest_addr)  	/* NOTREACHED - no way out of command loop except booting */  } -#endif /* defined(CONFIG_SYS_ARM_WITHOUT_RELOC) */ -  void hang (void)  {  	puts ("### ERROR ### Please RESET the board ###\n"); diff --git a/arch/arm/lib/cache-cp15.c b/arch/arm/lib/cache-cp15.c index fe6d45987..d9175f058 100644 --- a/arch/arm/lib/cache-cp15.c +++ b/arch/arm/lib/cache-cp15.c @@ -44,7 +44,6 @@ static void cp_delay (void)  	asm volatile("" : : : "memory");  } -#if !defined(CONFIG_SYS_ARM_WITHOUT_RELOC)  static inline void dram_bank_mmu_setup(int bank)  {  	u32 *page_table = (u32 *)gd->tlb_addr; @@ -58,18 +57,11 @@ static inline void dram_bank_mmu_setup(int bank)  		page_table[i] = i << 20 | (3 << 10) | CACHE_SETUP;  	}  } -#endif  /* to activate the MMU we need to set up virtual memory: use 1M areas */  static inline void mmu_setup(void)  { -#if !defined(CONFIG_SYS_ARM_WITHOUT_RELOC)  	u32 *page_table = (u32 *)gd->tlb_addr; -#else -	static u32 __attribute__((aligned(16384))) page_table[4096]; -	bd_t *bd = gd->bd; -	int j; -#endif  	int i;  	u32 reg; @@ -77,20 +69,9 @@ static inline void mmu_setup(void)  	for (i = 0; i < 4096; i++)  		page_table[i] = i << 20 | (3 << 10) | 0x12; -#if !defined(CONFIG_SYS_ARM_WITHOUT_RELOC)  	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {  		dram_bank_mmu_setup(i);  	} -#else -	/* Then, enable cacheable and bufferable for RAM only */ -	for (j = 0; j < CONFIG_NR_DRAM_BANKS; j++) { -		for (i = bd->bi_dram[j].start >> 20; -			i < (bd->bi_dram[j].start + bd->bi_dram[j].size) >> 20; -			i++) { -			page_table[i] = i << 20 | (3 << 10) | CACHE_SETUP; -		} -	} -#endif  	/* Copy the page table address to cp15 */  	asm volatile("mcr p15, 0, %0, c2, c0, 0" diff --git a/arch/arm/lib/interrupts.c b/arch/arm/lib/interrupts.c index 90aa04b87..74ff5ce1c 100644 --- a/arch/arm/lib/interrupts.c +++ b/arch/arm/lib/interrupts.c @@ -46,12 +46,8 @@ int interrupt_init (void)  	/*  	 * setup up stacks if necessary  	 */ -#if !defined(CONFIG_SYS_ARM_WITHOUT_RELOC)  	IRQ_STACK_START = gd->irq_sp - 4;  	IRQ_STACK_START_IN = gd->irq_sp + 8; -#else -	IRQ_STACK_START = _armboot_start - CONFIG_SYS_MALLOC_LEN - GENERATED_GBL_DATA_SIZE - 4; -#endif  	FIQ_STACK_START = IRQ_STACK_START - CONFIG_STACKSIZE_IRQ;  	return arch_interrupt_init(); @@ -86,7 +82,6 @@ int disable_interrupts (void)  	return (old & 0x80) == 0;  }  #else -#if !defined(CONFIG_SYS_ARM_WITHOUT_RELOC)  int interrupt_init (void)  {  	/* @@ -96,7 +91,6 @@ int interrupt_init (void)  	return 0;  } -#endif  void enable_interrupts (void)  { |