
all arm init the IRQ stack the same way so unify it in lib_arm/interrupts.c and then call arch specific interrupt init
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD plagnioj@jcrosoft.com --- cpu/arm1136/cpu.c | 11 ----------- cpu/arm720t/cpu.c | 7 ------- cpu/arm720t/interrupts.c | 2 +- cpu/arm920t/cpu.c | 11 ----------- cpu/arm925t/cpu.c | 11 ----------- cpu/arm926ejs/cpu.c | 11 ----------- cpu/arm946es/cpu.c | 11 ----------- cpu/arm_cortexa8/cpu.c | 12 ------------ cpu/arm_intcm/cpu.c | 11 ----------- cpu/ixp/cpu.c | 12 ------------ cpu/ixp/interrupts.c | 2 +- cpu/lh7a40x/cpu.c | 11 ----------- cpu/pxa/cpu.c | 11 ----------- cpu/sa1100/cpu.c | 7 ------- include/asm-arm/u-boot-arm.h | 1 + lib_arm/interrupts.c | 13 +++++++++++++ 16 files changed, 16 insertions(+), 128 deletions(-)
diff --git a/cpu/arm1136/cpu.c b/cpu/arm1136/cpu.c index e03a765..f467b7a 100644 --- a/cpu/arm1136/cpu.c +++ b/cpu/arm1136/cpu.c @@ -35,21 +35,10 @@ #include <command.h> #include <asm/system.h>
-#ifdef CONFIG_USE_IRQ -DECLARE_GLOBAL_DATA_PTR; -#endif - static void cache_flush(void);
int cpu_init (void) { - /* - * setup up stacks if necessary - */ -#ifdef CONFIG_USE_IRQ - IRQ_STACK_START = _armboot_start - CONFIG_SYS_MALLOC_LEN - CONFIG_SYS_GBL_DATA_SIZE - 4; - FIQ_STACK_START = IRQ_STACK_START - CONFIG_STACKSIZE_IRQ; -#endif return 0; }
diff --git a/cpu/arm720t/cpu.c b/cpu/arm720t/cpu.c index 6c40903..7a2b9c3 100644 --- a/cpu/arm720t/cpu.c +++ b/cpu/arm720t/cpu.c @@ -42,13 +42,6 @@ static void cache_flush(void);
int cpu_init (void) { - /* - * setup up stacks if necessary - */ -#ifdef CONFIG_USE_IRQ - IRQ_STACK_START = _armboot_start - CONFIG_SYS_MALLOC_LEN - CONFIG_SYS_GBL_DATA_SIZE - 4; - FIQ_STACK_START = IRQ_STACK_START - CONFIG_STACKSIZE_IRQ; -#endif return 0; }
diff --git a/cpu/arm720t/interrupts.c b/cpu/arm720t/interrupts.c index ff21314..91d552c 100644 --- a/cpu/arm720t/interrupts.c +++ b/cpu/arm720t/interrupts.c @@ -111,7 +111,7 @@ static ulong timestamp; static ulong lastdec;
#if defined(CONFIG_USE_IRQ) && defined(CONFIG_S3C4510B) -int interrupt_init (void) +int arch_interrupt_init (void) { int i;
diff --git a/cpu/arm920t/cpu.c b/cpu/arm920t/cpu.c index 87c1adc..8c4b57f 100644 --- a/cpu/arm920t/cpu.c +++ b/cpu/arm920t/cpu.c @@ -34,21 +34,10 @@ #include <arm920t.h> #include <asm/system.h>
-#ifdef CONFIG_USE_IRQ -DECLARE_GLOBAL_DATA_PTR; -#endif - static void cache_flush(void);
int cpu_init (void) { - /* - * setup up stacks if necessary - */ -#ifdef CONFIG_USE_IRQ - IRQ_STACK_START = _armboot_start - CONFIG_SYS_MALLOC_LEN - CONFIG_SYS_GBL_DATA_SIZE - 4; - FIQ_STACK_START = IRQ_STACK_START - CONFIG_STACKSIZE_IRQ; -#endif return 0; }
diff --git a/cpu/arm925t/cpu.c b/cpu/arm925t/cpu.c index cf6a489..c8edadf 100644 --- a/cpu/arm925t/cpu.c +++ b/cpu/arm925t/cpu.c @@ -34,21 +34,10 @@ #include <arm925t.h> #include <asm/system.h>
-#ifdef CONFIG_USE_IRQ -DECLARE_GLOBAL_DATA_PTR; -#endif - static void cache_flush(void);
int cpu_init (void) { - /* - * setup up stacks if necessary - */ -#ifdef CONFIG_USE_IRQ - IRQ_STACK_START = _armboot_start - CONFIG_SYS_MALLOC_LEN - CONFIG_SYS_GBL_DATA_SIZE - 4; - FIQ_STACK_START = IRQ_STACK_START - CONFIG_STACKSIZE_IRQ; -#endif return 0; }
diff --git a/cpu/arm926ejs/cpu.c b/cpu/arm926ejs/cpu.c index 6307e33..75b62d3 100644 --- a/cpu/arm926ejs/cpu.c +++ b/cpu/arm926ejs/cpu.c @@ -34,21 +34,10 @@ #include <arm926ejs.h> #include <asm/system.h>
-#ifdef CONFIG_USE_IRQ -DECLARE_GLOBAL_DATA_PTR; -#endif - static void cache_flush(void);
int cpu_init (void) { - /* - * setup up stacks if necessary - */ -#ifdef CONFIG_USE_IRQ - IRQ_STACK_START = _armboot_start - CONFIG_SYS_MALLOC_LEN - CONFIG_SYS_GBL_DATA_SIZE - 4; - FIQ_STACK_START = IRQ_STACK_START - CONFIG_STACKSIZE_IRQ; -#endif return 0; }
diff --git a/cpu/arm946es/cpu.c b/cpu/arm946es/cpu.c index ef7995d..620f7ed 100644 --- a/cpu/arm946es/cpu.c +++ b/cpu/arm946es/cpu.c @@ -34,21 +34,10 @@ #include <arm946es.h> #include <asm/system.h>
-#ifdef CONFIG_USE_IRQ -DECLARE_GLOBAL_DATA_PTR; -#endif - static void cache_flush(void);
int cpu_init (void) { - /* - * setup up stacks if necessary - */ -#ifdef CONFIG_USE_IRQ - IRQ_STACK_START = _armboot_start - CONFIG_SYS_MALLOC_LEN - CONFIG_SYS_GBL_DATA_SIZE - 4; - FIQ_STACK_START = IRQ_STACK_START - CONFIG_STACKSIZE_IRQ; -#endif return 0; }
diff --git a/cpu/arm_cortexa8/cpu.c b/cpu/arm_cortexa8/cpu.c index 3e1780b..e911206 100644 --- a/cpu/arm_cortexa8/cpu.c +++ b/cpu/arm_cortexa8/cpu.c @@ -36,10 +36,6 @@ #include <asm/arch/sys_proto.h> #include <asm/system.h>
-#ifdef CONFIG_USE_IRQ -DECLARE_GLOBAL_DATA_PTR; -#endif - #ifndef CONFIG_L2_OFF void l2cache_disable(void); #endif @@ -48,14 +44,6 @@ static void cache_flush(void);
int cpu_init(void) { - /* - * setup up stacks if necessary - */ -#ifdef CONFIG_USE_IRQ - IRQ_STACK_START = - _armboot_start - CONFIG_SYS_MALLOC_LEN - CONFIG_SYS_GBL_DATA_SIZE - 4; - FIQ_STACK_START = IRQ_STACK_START - CONFIG_STACKSIZE_IRQ; -#endif return 0; }
diff --git a/cpu/arm_intcm/cpu.c b/cpu/arm_intcm/cpu.c index 1636ffb..9ce17f2 100644 --- a/cpu/arm_intcm/cpu.c +++ b/cpu/arm_intcm/cpu.c @@ -33,19 +33,8 @@ #include <common.h> #include <command.h>
-#ifdef CONFIG_USE_IRQ -DECLARE_GLOBAL_DATA_PTR; -#endif - int cpu_init (void) { - /* - * setup up stacks if necessary - */ -#ifdef CONFIG_USE_IRQ - IRQ_STACK_START = _armboot_start - CONFIG_SYS_MALLOC_LEN - CONFIG_SYS_GBL_DATA_SIZE - 4; - FIQ_STACK_START = IRQ_STACK_START - CONFIG_STACKSIZE_IRQ; -#endif return 0; }
diff --git a/cpu/ixp/cpu.c b/cpu/ixp/cpu.c index 42c62f6..5cfc39d 100644 --- a/cpu/ixp/cpu.c +++ b/cpu/ixp/cpu.c @@ -38,10 +38,6 @@
ulong loops_per_jiffy;
-#ifdef CONFIG_USE_IRQ -DECLARE_GLOBAL_DATA_PTR; -#endif - static void cache_flush(void);
#if defined(CONFIG_DISPLAY_CPUINFO) @@ -81,14 +77,6 @@ int print_cpuinfo (void)
int cpu_init (void) { - /* - * setup up stacks if necessary - */ -#ifdef CONFIG_USE_IRQ - IRQ_STACK_START = _armboot_start - CONFIG_SYS_MALLOC_LEN - CONFIG_SYS_GBL_DATA_SIZE - 4; - FIQ_STACK_START = IRQ_STACK_START - CONFIG_STACKSIZE_IRQ; -#endif - return 0; }
diff --git a/cpu/ixp/interrupts.c b/cpu/ixp/interrupts.c index a05e439..06a826a 100644 --- a/cpu/ixp/interrupts.c +++ b/cpu/ixp/interrupts.c @@ -67,7 +67,7 @@ void irq_install_handler (int irq, interrupt_handler_t handle_irq, void *data) IRQ_HANDLER[irq].m_func = handle_irq; }
-int interrupt_init (void) +int arch_interrupt_init (void) { int i;
diff --git a/cpu/lh7a40x/cpu.c b/cpu/lh7a40x/cpu.c index 93ebd13..8e08773 100644 --- a/cpu/lh7a40x/cpu.c +++ b/cpu/lh7a40x/cpu.c @@ -34,21 +34,10 @@ #include <arm920t.h> #include <asm/system.h>
-#ifdef CONFIG_USE_IRQ -DECLARE_GLOBAL_DATA_PTR; -#endif - static void cache_flush(void);
int cpu_init (void) { - /* - * setup up stacks if necessary - */ -#ifdef CONFIG_USE_IRQ - IRQ_STACK_START = _armboot_start - CONFIG_SYS_MALLOC_LEN - CONFIG_SYS_GBL_DATA_SIZE - 4; - FIQ_STACK_START = IRQ_STACK_START - CONFIG_STACKSIZE_IRQ; -#endif return 0; }
diff --git a/cpu/pxa/cpu.c b/cpu/pxa/cpu.c index 3a1be57..8edb44e 100644 --- a/cpu/pxa/cpu.c +++ b/cpu/pxa/cpu.c @@ -35,21 +35,10 @@ #include <asm/arch/pxa-regs.h> #include <asm/system.h>
-#ifdef CONFIG_USE_IRQ -DECLARE_GLOBAL_DATA_PTR; -#endif - static void cache_flush(void);
int cpu_init (void) { - /* - * setup up stacks if necessary - */ -#ifdef CONFIG_USE_IRQ - IRQ_STACK_START = _armboot_start - CONFIG_SYS_MALLOC_LEN - CONFIG_SYS_GBL_DATA_SIZE - 4; - FIQ_STACK_START = IRQ_STACK_START - CONFIG_STACKSIZE_IRQ; -#endif return 0; }
diff --git a/cpu/sa1100/cpu.c b/cpu/sa1100/cpu.c index ed1a6f7..39285a0 100644 --- a/cpu/sa1100/cpu.c +++ b/cpu/sa1100/cpu.c @@ -42,13 +42,6 @@ static void cache_flush(void);
int cpu_init (void) { - /* - * setup up stacks if necessary - */ -#ifdef CONFIG_USE_IRQ - IRQ_STACK_START = _armboot_start - CONFIG_SYS_MALLOC_LEN - CONFIG_SYS_GBL_DATA_SIZE - 4; - FIQ_STACK_START = IRQ_STACK_START - CONFIG_STACKSIZE_IRQ; -#endif return 0; }
diff --git a/include/asm-arm/u-boot-arm.h b/include/asm-arm/u-boot-arm.h index 238d408..76f1ffa 100644 --- a/include/asm-arm/u-boot-arm.h +++ b/include/asm-arm/u-boot-arm.h @@ -58,6 +58,7 @@ void setup_revision_tag (struct tag **params); int setenv (char *, char *);
/* cpu/.../interrupt.c */ +int arch_interrupt_init (void); void reset_timer_masked (void); ulong get_timer_masked (void); void udelay_masked (unsigned long usec); diff --git a/lib_arm/interrupts.c b/lib_arm/interrupts.c index 4dafbfa..d26b724 100644 --- a/lib_arm/interrupts.c +++ b/lib_arm/interrupts.c @@ -39,6 +39,19 @@ #include <asm/proc-armv/ptrace.h>
#ifdef CONFIG_USE_IRQ +DECLARE_GLOBAL_DATA_PTR; + +int interrupt_init (void) +{ + /* + * setup up stacks if necessary + */ + IRQ_STACK_START = _armboot_start - CONFIG_SYS_MALLOC_LEN - CONFIG_SYS_GBL_DATA_SIZE - 4; + FIQ_STACK_START = IRQ_STACK_START - CONFIG_STACKSIZE_IRQ; + + return arch_interrupt_init(); +} + /* enable IRQ interrupts */ void enable_interrupts (void) {