+--- a/arch/arm/kernel/setup.c
++++ b/arch/arm/kernel/setup.c
+@@ -322,12 +322,13 @@ static void __init setup_processor(void)
+ void cpu_init(void)
+ {
+ unsigned int cpu = smp_processor_id();
+- struct stack *stk = &stacks[cpu];
++ struct stack *stk;
+
+ if (cpu >= NR_CPUS) {
+ printk(KERN_CRIT "CPU%u: bad primary CPU number\n", cpu);
+ BUG();
+ }
++ stk = &stacks[cpu];
+
+ /*
+ * Define the placement constraint for the inline asm directive below.
+@@ -386,13 +387,14 @@ static struct machine_desc * __init setu
+
+ static int __init arm_add_memory(unsigned long start, unsigned long size)
+ {
+- struct membank *bank = &meminfo.bank[meminfo.nr_banks];
++ struct membank *bank;
+
+ if (meminfo.nr_banks >= NR_BANKS) {
+ printk(KERN_CRIT "NR_BANKS too low, "
+ "ignoring memory at %#lx\n", start);
+ return -EINVAL;
+ }
++ bank = &meminfo.bank[meminfo.nr_banks];
+
+ /*
+ * Ensure that start/size are aligned to a page boundary.