We need to re-initialise the stack pointers for undefined, IRQ
and abort mode handlers whenever we resume.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  * cpu_init dumps the cache information, initialises SMP specific
  * information, and sets up the per-CPU stacks.
  */
-void __init cpu_init(void)
+void cpu_init(void)
 {
        unsigned int cpu = smp_processor_id();
        struct stack *stk = &stacks[cpu];
 
        /* *** go zzz *** */
        pxa_cpu_pm_enter(state);
 
+       cpu_init();
+
        /* after sleeping, validate the checksum */
        checksum = 0;
        for (i = 0; i < SLEEP_SAVE_SIZE - 1; i++)
 
        /* go zzz */
        sa1100_cpu_suspend();
 
+       cpu_init();
+
        /*
         * Ensure not to come back here if it wasn't intended
         */
 
 extern void __show_regs(struct pt_regs *);
 
 extern int cpu_architecture(void);
+extern void cpu_init(void);
 
 #define set_cr(x)                                      \
        __asm__ __volatile__(                           \