diff options
| author | Heiko Schocher <hs@denx.de> | 2010-09-17 13:10:39 +0200 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2010-09-19 19:29:53 +0200 | 
| commit | f1d2b313c9eb6808d30c16a9eb5251240452a56c (patch) | |
| tree | 8b5488d9e882947ef493c0e579aebaa5f40413f4 /arch/arm/lib/interrupts.c | |
| parent | 4fff329df2516a7d9242d0642c07c4506f859051 (diff) | |
| download | olio-uboot-2014.01-f1d2b313c9eb6808d30c16a9eb5251240452a56c.tar.xz olio-uboot-2014.01-f1d2b313c9eb6808d30c16a9eb5251240452a56c.zip | |
ARM: add relocation support
!! This breaks support for all arm boards !!
To compile in old style, you must define
CONFIG_SYS_ARM_WITHOUT_RELOC or you can compile
with "CONFIG_SYS_ARM_WITHOUT_RELOC=1 ./MAKEALL board"
!! This define will be removed soon, so convert your
board to use relocation support
Portions of this work were supported by funding from
the CE Linux Forum.
Signed-off-by: Heiko Schocher <hs@denx.de>
Fix boot from NAND for non-ARM systems
Signed-off-by: Wolfgang Denk <wd@denx.de>
Diffstat (limited to 'arch/arm/lib/interrupts.c')
| -rw-r--r-- | arch/arm/lib/interrupts.c | 19 | 
1 files changed, 18 insertions, 1 deletions
| diff --git a/arch/arm/lib/interrupts.c b/arch/arm/lib/interrupts.c index 1f2b81561..9a21e7b40 100644 --- a/arch/arm/lib/interrupts.c +++ b/arch/arm/lib/interrupts.c @@ -38,15 +38,20 @@  #include <common.h>  #include <asm/proc-armv/ptrace.h> -#ifdef CONFIG_USE_IRQ  DECLARE_GLOBAL_DATA_PTR; +#ifdef CONFIG_USE_IRQ  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 - CONFIG_SYS_GBL_DATA_SIZE - 4; +#endif  	FIQ_STACK_START = IRQ_STACK_START - CONFIG_STACKSIZE_IRQ;  	return arch_interrupt_init(); @@ -81,6 +86,18 @@ int disable_interrupts (void)  	return (old & 0x80) == 0;  }  #else +#if !defined(CONFIG_SYS_ARM_WITHOUT_RELOC) +int interrupt_init (void) +{ +	/* +	 * setup up stacks if necessary +	 */ +	IRQ_STACK_START_IN = gd->irq_sp + 8; + +	return 0; +} +#endif +  void enable_interrupts (void)  {  	return; |