.handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = adssphere_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 
        while (1)
                ;
 }
+
+void __init ep93xx_init_late(void)
+{
+       crunch_init();
+}
 
        .notifier_call  = crunch_do,
 };
 
-static int __init crunch_init(void)
+int __init crunch_init(void)
 {
        thread_register_notifier(&crunch_notifier_block);
        elf_hwcap |= HWCAP_CRUNCH;
 
        return 0;
 }
-
-late_initcall(crunch_init);
 
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = edb93xx_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 #endif
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = edb93xx_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 #endif
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = edb93xx_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 #endif
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = edb93xx_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 #endif
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = edb93xx_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 #endif
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = edb93xx_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 #endif
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = edb93xx_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 #endif
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = edb93xx_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 #endif
 
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = gesbc9312_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 
 extern struct sys_timer ep93xx_timer;
 
 void ep93xx_restart(char, const char *);
+void ep93xx_init_late(void);
+
+#ifdef CONFIG_CRUNCH
+int crunch_init(void);
+#else
+static inline int crunch_init(void) { return 0; }
+#endif
 
 #endif
 
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = micro9_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 #endif
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = micro9_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 #endif
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = micro9_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 #endif
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = micro9_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 #endif
 
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = simone_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = snappercl15_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = ts72xx_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END
 
        .handle_irq     = vic_handle_irq,
        .timer          = &ep93xx_timer,
        .init_machine   = vision_init_machine,
+       .init_late      = ep93xx_init_late,
        .restart        = ep93xx_restart,
 MACHINE_END