diff options
| -rw-r--r-- | arch/arm/cpu/armv7/Makefile | 6 | ||||
| -rw-r--r-- | arch/arm/cpu/armv7/lowlevel_init.S | 50 | ||||
| -rw-r--r-- | arch/arm/cpu/armv7/omap-common/lowlevel_init.S | 18 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-am33xx/hardware.h | 3 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-am33xx/omap.h | 1 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-omap4/omap.h | 1 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-omap5/omap.h | 2 | ||||
| -rw-r--r-- | include/configs/am335x_evm.h | 4 | ||||
| -rw-r--r-- | include/configs/omap4_common.h | 7 | ||||
| -rw-r--r-- | include/configs/omap5_evm.h | 7 | 
10 files changed, 63 insertions, 36 deletions
| diff --git a/arch/arm/cpu/armv7/Makefile b/arch/arm/cpu/armv7/Makefile index 6b2addca1..788eadaaf 100644 --- a/arch/arm/cpu/armv7/Makefile +++ b/arch/arm/cpu/armv7/Makefile @@ -32,8 +32,12 @@ COBJS	+= cache_v7.o  COBJS	+= cpu.o  COBJS	+= syslib.o +ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX),) +SOBJS	+= lowlevel_init.o +endif +  SRCS	:= $(START:.o=.S) $(COBJS:.o=.c) -OBJS	:= $(addprefix $(obj),$(COBJS)) +OBJS	:= $(addprefix $(obj),$(COBJS) $(SOBJS))  START	:= $(addprefix $(obj),$(START))  all:	$(obj).depend $(START) $(LIB) diff --git a/arch/arm/cpu/armv7/lowlevel_init.S b/arch/arm/cpu/armv7/lowlevel_init.S new file mode 100644 index 000000000..ef04575e8 --- /dev/null +++ b/arch/arm/cpu/armv7/lowlevel_init.S @@ -0,0 +1,50 @@ +/* + * A lowlevel_init function that sets up the stack to call a C function to + * perform further init. + * + * (C) Copyright 2010 + * Texas Instruments, <www.ti.com> + * + * Author : + *	Aneesh V	<aneesh@ti.com> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <asm-offsets.h> +#include <config.h> +#include <linux/linkage.h> + +ENTRY(lowlevel_init) +	/* +	 * Setup a temporary stack +	 */ +	ldr	sp, =CONFIG_SYS_INIT_SP_ADDR + +	/* +	 * Save the old lr(passed in ip) and the current lr to stack +	 */ +	push	{ip, lr} + +	/* +	 * go setup pll, mux, memory +	 */ +	bl	s_init +	pop	{ip, pc} +ENDPROC(lowlevel_init) diff --git a/arch/arm/cpu/armv7/omap-common/lowlevel_init.S b/arch/arm/cpu/armv7/omap-common/lowlevel_init.S index ccc6bb6b8..1ece07363 100644 --- a/arch/arm/cpu/armv7/omap-common/lowlevel_init.S +++ b/arch/arm/cpu/armv7/omap-common/lowlevel_init.S @@ -78,24 +78,6 @@ ENTRY(save_boot_params)  	bx	lr  ENDPROC(save_boot_params) -ENTRY(lowlevel_init) -	/* -	 * Setup a temporary stack -	 */ -	ldr	sp, =LOW_LEVEL_SRAM_STACK - -	/* -	 * Save the old lr(passed in ip) and the current lr to stack -	 */ -	push	{ip, lr} - -	/* -	 * go setup pll, mux, memory -	 */ -	bl	s_init -	pop	{ip, pc} -ENDPROC(lowlevel_init) -  ENTRY(set_pl310_ctrl_reg)  	PUSH	{r4-r11, lr}	@ save registers - ROM code may pollute  				@ our registers diff --git a/arch/arm/include/asm/arch-am33xx/hardware.h b/arch/arm/include/asm/arch-am33xx/hardware.h index c61733185..62332f2de 100644 --- a/arch/arm/include/asm/arch-am33xx/hardware.h +++ b/arch/arm/include/asm/arch-am33xx/hardware.h @@ -19,8 +19,9 @@  #ifndef __AM33XX_HARDWARE_H  #define __AM33XX_HARDWARE_H +#include <asm/arch/omap.h> +  /* Module base addresses */ -#define LOW_LEVEL_SRAM_STACK		0x4030B7FC  #define UART0_BASE			0x44E09000  /* DM Timer base addresses */ diff --git a/arch/arm/include/asm/arch-am33xx/omap.h b/arch/arm/include/asm/arch-am33xx/omap.h index fc2b7a5a2..850f8a551 100644 --- a/arch/arm/include/asm/arch-am33xx/omap.h +++ b/arch/arm/include/asm/arch-am33xx/omap.h @@ -30,7 +30,6 @@   */  #define NON_SECURE_SRAM_START	0x40304000  #define NON_SECURE_SRAM_END	0x4030E000 -#define LOW_LEVEL_SRAM_STACK	0x4030B7FC  /* ROM code defines */  /* Boot device */ diff --git a/arch/arm/include/asm/arch-omap4/omap.h b/arch/arm/include/asm/arch-omap4/omap.h index 03bd92314..d4b507610 100644 --- a/arch/arm/include/asm/arch-omap4/omap.h +++ b/arch/arm/include/asm/arch-omap4/omap.h @@ -172,7 +172,6 @@ struct control_lpddr2io_regs {  /* base address for indirect vectors (internal boot mode) */  #define SRAM_ROM_VECT_BASE	0x4030D000  /* Temporary SRAM stack used while low level init is done */ -#define LOW_LEVEL_SRAM_STACK		NON_SECURE_SRAM_END  #define SRAM_SCRATCH_SPACE_ADDR		NON_SECURE_SRAM_START  /* SRAM scratch space entries */  #define OMAP4_SRAM_SCRATCH_OMAP4_REV	SRAM_SCRATCH_SPACE_ADDR diff --git a/arch/arm/include/asm/arch-omap5/omap.h b/arch/arm/include/asm/arch-omap5/omap.h index 7f05cb5b4..9dce49ac4 100644 --- a/arch/arm/include/asm/arch-omap5/omap.h +++ b/arch/arm/include/asm/arch-omap5/omap.h @@ -262,8 +262,6 @@ struct omap_sys_ctrl_regs {  #define NON_SECURE_SRAM_END	0x40320000	/* Not inclusive */  /* base address for indirect vectors (internal boot mode) */  #define SRAM_ROM_VECT_BASE	0x4031F000 -/* Temporary SRAM stack used while low level init is done */ -#define LOW_LEVEL_SRAM_STACK	NON_SECURE_SRAM_END  #define SRAM_SCRATCH_SPACE_ADDR		NON_SECURE_SRAM_START  /* diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h index 2bfe8c6dc..a8a6b8ed9 100644 --- a/include/configs/am335x_evm.h +++ b/include/configs/am335x_evm.h @@ -148,7 +148,7 @@  #define CONFIG_MAX_RAM_BANK_SIZE	(1024 << 20)	/* 1GB */  #define CONFIG_SYS_SDRAM_BASE		PHYS_DRAM_1 -#define CONFIG_SYS_INIT_SP_ADDR         (CONFIG_SYS_SDRAM_BASE + 0x1000 - \ +#define CONFIG_SYS_INIT_SP_ADDR         (NON_SECURE_SRAM_END - \  						GENERATED_GBL_DATA_SIZE)   /* Platform/Board specific defs */  #define CONFIG_SYS_TIMERBASE		0x48040000	/* Use Timer2 */ @@ -195,7 +195,7 @@  #define CONFIG_SPL  #define CONFIG_SPL_TEXT_BASE		0x402F0400  #define CONFIG_SPL_MAX_SIZE		(46 * 1024) -#define CONFIG_SPL_STACK		LOW_LEVEL_SRAM_STACK +#define CONFIG_SPL_STACK		CONFIG_SYS_INIT_SP_ADDR  #define CONFIG_SPL_BSS_START_ADDR	0x80000000  #define CONFIG_SPL_BSS_MAX_SIZE		0x80000		/* 512 KB */ diff --git a/include/configs/omap4_common.h b/include/configs/omap4_common.h index 6f298a1f7..277183996 100644 --- a/include/configs/omap4_common.h +++ b/include/configs/omap4_common.h @@ -225,10 +225,7 @@  #define CONFIG_NR_DRAM_BANKS	1  #define CONFIG_SYS_SDRAM_BASE		0x80000000 -#define CONFIG_SYS_INIT_RAM_ADDR	0x4030D800 -#define CONFIG_SYS_INIT_RAM_SIZE	0x800 -#define CONFIG_SYS_INIT_SP_ADDR		(CONFIG_SYS_INIT_RAM_ADDR + \ -					 CONFIG_SYS_INIT_RAM_SIZE - \ +#define CONFIG_SYS_INIT_SP_ADDR         (NON_SECURE_SRAM_END - \  					 GENERATED_GBL_DATA_SIZE)  #ifndef CONFIG_SYS_L2CACHE_OFF @@ -249,7 +246,7 @@  #define CONFIG_SPL  #define CONFIG_SPL_TEXT_BASE		0x40304350  #define CONFIG_SPL_MAX_SIZE		(38 * 1024) -#define CONFIG_SPL_STACK		LOW_LEVEL_SRAM_STACK +#define CONFIG_SPL_STACK		CONFIG_SYS_INIT_SP_ADDR  /*   * 64 bytes before this address should be set aside for u-boot.img's diff --git a/include/configs/omap5_evm.h b/include/configs/omap5_evm.h index 088428035..4d6de1673 100644 --- a/include/configs/omap5_evm.h +++ b/include/configs/omap5_evm.h @@ -228,10 +228,7 @@  #define CONFIG_NR_DRAM_BANKS	1  #define CONFIG_SYS_SDRAM_BASE		0x80000000 -#define CONFIG_SYS_INIT_RAM_ADDR	0x4030D800 -#define CONFIG_SYS_INIT_RAM_SIZE	0x800 -#define CONFIG_SYS_INIT_SP_ADDR		(CONFIG_SYS_INIT_RAM_ADDR + \ -					 CONFIG_SYS_INIT_RAM_SIZE - \ +#define CONFIG_SYS_INIT_SP_ADDR         (NON_SECURE_SRAM_END - \  					 GENERATED_GBL_DATA_SIZE)  #define CONFIG_SYS_EMIF_PRECALCULATED_TIMING_REGS @@ -246,7 +243,7 @@  #define CONFIG_SPL  #define CONFIG_SPL_TEXT_BASE		0x40300350  #define CONFIG_SPL_MAX_SIZE		0x19000	/* 100K */ -#define CONFIG_SPL_STACK		LOW_LEVEL_SRAM_STACK +#define CONFIG_SPL_STACK		CONFIG_SYS_INIT_SP_ADDR  #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR	0x300 /* address 0x60000 */  #define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS	0x200 /* 256 KB */ |