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/cpu/arm1176/start.S | |
| 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/cpu/arm1176/start.S')
| -rw-r--r-- | arch/arm/cpu/arm1176/start.S | 214 | 
1 files changed, 0 insertions, 214 deletions
| diff --git a/arch/arm/cpu/arm1176/start.S b/arch/arm/cpu/arm1176/start.S index 7f32db787..1a2e5aa37 100644 --- a/arch/arm/cpu/arm1176/start.S +++ b/arch/arm/cpu/arm1176/start.S @@ -108,12 +108,6 @@ _TEXT_BASE:  _TEXT_PHY_BASE:  	.word	CONFIG_SYS_PHY_UBOOT_BASE -#if defined(CONFIG_SYS_ARM_WITHOUT_RELOC) -.globl _armboot_start -_armboot_start: -	.word _start -#endif -  /*   * These are defined in the board-specific linker script.   * Subtracting _start from them lets the linker put their @@ -157,7 +151,6 @@ _rel_dyn_end_ofs:  _dynsym_start_ofs:  	.word __dynsym_start - _start -#if !defined(CONFIG_SYS_ARM_WITHOUT_RELOC)  /* IRQ stack memory (calculated at run-time) + 8 bytes */  .globl IRQ_STACK_START_IN  IRQ_STACK_START_IN: @@ -419,188 +412,6 @@ _board_init_r_ofs:  	.word board_init_r - _start  #endif -#else /* #if !defined(CONFIG_SYS_ARM_WITHOUT_RELOC) */ - -/* - * the actual reset code - */ - -reset: -	/* -	 * set the cpu to SVC32 mode -	 */ -	mrs	r0, cpsr -	bic	r0, r0, #0x3f -	orr	r0, r0, #0xd3 -	msr	cpsr, r0 - -/* - ************************************************************************* - * - * CPU_init_critical registers - * - * setup important registers - * setup memory timing - * - ************************************************************************* - */ -	/* -	 * we do sys-critical inits only at reboot, -	 * not when booting from ram! -	 */ -cpu_init_crit: -	/* -	 * When booting from NAND - it has definitely been a reset, so, no need -	 * to flush caches and disable the MMU -	 */ -#ifndef CONFIG_NAND_SPL -	/* -	 * flush v4 I/D caches -	 */ -	mov	r0, #0 -	mcr	p15, 0, r0, c7, c7, 0	/* flush v3/v4 cache */ -	mcr	p15, 0, r0, c8, c7, 0	/* flush v4 TLB */ - -	/* -	 * disable MMU stuff and caches -	 */ -	mrc	p15, 0, r0, c1, c0, 0 -	bic	r0, r0, #0x00002300	@ clear bits 13, 9:8 (--V- --RS) -	bic	r0, r0, #0x00000087	@ clear bits 7, 2:0 (B--- -CAM) -	orr	r0, r0, #0x00000002	@ set bit 2 (A) Align -	orr	r0, r0, #0x00001000	@ set bit 12 (I) I-Cache - -	/* Prepare to disable the MMU */ -	adr	r2, mmu_disable_phys -	sub	r2, r2, #(CONFIG_SYS_PHY_UBOOT_BASE - CONFIG_SYS_TEXT_BASE) -	b	mmu_disable - -	.align 5 -	/* Run in a single cache-line */ -mmu_disable: -	mcr	p15, 0, r0, c1, c0, 0 -	nop -	nop -	mov	pc, r2 -mmu_disable_phys: - -#ifdef CONFIG_DISABLE_TCM -	/* -	 * Disable the TCMs -	 */ -	mrc	p15, 0, r0, c0, c0, 2	/* Return TCM details */ -	cmp	r0, #0 -	beq	skip_tcmdisable -	mov	r1, #0 -	mov	r2, #1 -	tst	r0, r2 -	mcrne	p15, 0, r1, c9, c1, 1	/* Disable Instruction TCM if present*/ -	tst	r0, r2, LSL #16 -	mcrne	p15, 0, r1, c9, c1, 0	/* Disable Data TCM if present*/ -skip_tcmdisable: -#endif -#endif - -#ifdef CONFIG_PERIPORT_REMAP -	/* Peri port setup */ -	ldr	r0, =CONFIG_PERIPORT_BASE -	orr	r0, r0, #CONFIG_PERIPORT_SIZE -	mcr	p15,0,r0,c15,c2,4 -#endif - -	/* -	 * Go setup Memory and board specific bits prior to relocation. -	 */ -	bl	lowlevel_init		/* go setup pll,mux,memory */ - -#ifndef CONFIG_SKIP_RELOCATE_UBOOT -relocate:				/* relocate U-Boot to RAM	    */ -	adr	r0, _start		/* r0 <- current position of code   */ -	ldr	r1, _TEXT_BASE		/* test if we run from flash or RAM */ -	cmp     r0, r1                  /* don't reloc during debug         */ -	beq     stack_setup - -	ldr	r2, _armboot_start -	ldr	r3, _bss_start -	sub	r2, r3, r2		/* r2 <- size of armboot            */ -	add	r2, r0, r2		/* r2 <- source end address         */ - -copy_loop: -	ldmia	r0!, {r3-r10}		/* copy from source address [r0]    */ -	stmia	r1!, {r3-r10}		/* copy to   target address [r1]    */ -	cmp	r0, r2			/* until source end address [r2]    */ -	blo	copy_loop -#endif	/* CONFIG_SKIP_RELOCATE_UBOOT */ - -#ifdef CONFIG_ENABLE_MMU -enable_mmu: -	/* enable domain access */ -	ldr	r5, =0x0000ffff -	mcr	p15, 0, r5, c3, c0, 0	/* load domain access register */ - -	/* Set the TTB register */ -	ldr	r0, _mmu_table_base -	ldr	r1, =CONFIG_SYS_PHY_UBOOT_BASE -	ldr	r2, =0xfff00000 -	bic	r0, r0, r2 -	orr	r1, r0, r1 -	mcr	p15, 0, r1, c2, c0, 0 - -	/* Enable the MMU */ -	mrc	p15, 0, r0, c1, c0, 0 -	orr	r0, r0, #1		/* Set CR_M to enable MMU */ - -	/* Prepare to enable the MMU */ -	adr	r1, skip_hw_init -	and	r1, r1, #0x3fc -	ldr	r2, _TEXT_BASE -	ldr	r3, =0xfff00000 -	and	r2, r2, r3 -	orr	r2, r2, r1 -	b	mmu_enable - -	.align 5 -	/* Run in a single cache-line */ -mmu_enable: - -	mcr	p15, 0, r0, c1, c0, 0 -	nop -	nop -	mov	pc, r2 -skip_hw_init: -#endif - -	/* Set up the stack						    */ -stack_setup: -	ldr	r0, =CONFIG_SYS_UBOOT_BASE	/* base of copy in DRAM	    */ -	sub	r0, r0, #CONFIG_SYS_MALLOC_LEN	/* malloc area                      */ -	sub	r0, r0, #GENERATED_GBL_DATA_SIZE /* bdinfo                        */ -	sub	sp, r0, #12		/* leave 3 words for abort-stack    */ -	bic	sp, sp, #7		/* 8-byte alignment for ABI compliance */ - -clear_bss: -	ldr	r0, _bss_start		/* find start of bss segment        */ -	ldr	r1, _bss_end		/* stop here                        */ -	mov 	r2, #0			/* clear                            */ - -clbss_l: -	str	r2, [r0]		/* clear loop...                    */ -	add	r0, r0, #4 -	cmp	r0, r1 -	blo	clbss_l - -#ifndef CONFIG_NAND_SPL -	ldr	pc, _start_armboot - -_start_armboot: -	.word start_armboot -#else -	b	nand_boot -/*	.word nand_boot*/ -#endif - -#endif /* #if !defined(CONFIG_SYS_ARM_WITHOUT_RELOC) */ -  #ifdef CONFIG_ENABLE_MMU  _mmu_table_base:  	.word mmu_table @@ -687,14 +498,7 @@ phy_last_jump:  	/* Save user registers (now in svc mode) r0-r12 */  	stmia	sp, {r0 - r12} -#if defined(CONFIG_SYS_ARM_WITHOUT_RELOC) -	ldr	r2, _armboot_start -	sub	r2, r2, #(CONFIG_SYS_MALLOC_LEN) -	/* set base 2 words into abort stack */ -	sub	r2, r2, #(GENERATED_GBL_DATA_SIZE+8) -#else  	ldr	r2, IRQ_STACK_START_IN -#endif  	/* get values for "aborted" pc and cpsr (into parm regs) */  	ldmia	r2, {r2 - r3}  	/* grab pointer to old stack */ @@ -709,16 +513,7 @@ phy_last_jump:  	.endm  	.macro get_bad_stack -#if defined(CONFIG_SYS_ARM_WITHOUT_RELOC) -	/* setup our mode stack (enter in banked mode) */ -	ldr	r13, _armboot_start -	/* move past malloc pool */ -	sub	r13, r13, #(CONFIG_SYS_MALLOC_LEN) -	/* move to reserved a couple spots for abort stack */ -	sub	r13, r13, #(GENERATED_GBL_DATA_SIZE + 8) -#else  	ldr	r13, IRQ_STACK_START_IN		@ setup our mode stack -#endif  	/* save caller lr in position 0 of saved stack */  	str	lr, [r13] @@ -743,16 +538,7 @@ phy_last_jump:  	sub	r13, r13, #4  	/* save R0's value. */  	str	r0, [r13] -#if defined(CONFIG_SYS_ARM_WITHOUT_RELOC) -	/* get data regions start */ -	ldr	r0, _armboot_start -	/* move past malloc pool */ -	sub	r0, r0, #(CONFIG_SYS_MALLOC_LEN) -	/* move past gbl and a couple spots for abort stack */ -	sub	r0, r0, #(GENERATED_GBL_DATA_SIZE + 8) -#else  	ldr	r13, IRQ_STACK_START_IN		@ setup our mode stack -#endif  	/* save caller lr in position 0 of saved stack */  	str	lr, [r0]  	/* get the spsr */ |