#include "linux/spinlock.h"
 #include "linux/highmem.h"
 #include "asm/current.h"
-#include "asm/delay.h"
 #include "asm/processor.h"
 #include "asm/unistd.h"
 #include "asm/pgalloc.h"
 EXPORT_SYMBOL(set_signals);
 EXPORT_SYMBOL(get_signals);
 EXPORT_SYMBOL(kernel_thread);
-EXPORT_SYMBOL(__const_udelay);
-EXPORT_SYMBOL(__udelay);
 EXPORT_SYMBOL(sys_waitpid);
 EXPORT_SYMBOL(task_size);
 EXPORT_SYMBOL(flush_tlb_range);
 
 static long long delta;                /* Deviation per interval */
 #endif
 
-#define MILLION 1000000
-
 void timer_irq(union uml_pt_regs *regs)
 {
        unsigned long long ticks = 0;
        return 0;
 }
 
-void __udelay(unsigned long usecs)
-{
-       int i, n;
-
-       n = (loops_per_jiffy * HZ * usecs) / MILLION;
-       for(i=0;i<n;i++) ;
-}
-
-void __const_udelay(unsigned long usecs)
-{
-       int i, n;
-
-       n = (loops_per_jiffy * HZ * usecs) / MILLION;
-       for(i=0;i<n;i++) ;
-}
-
 void timer_handler(int sig, union uml_pt_regs *regs)
 {
        local_irq_disable();
 
+#include "linux/delay.h"
+#include "asm/param.h"
+
 void __delay(unsigned long time)
 {
        /* Stolen from the i386 __loop_delay */
                :"0" (time));
 }
 
+void __udelay(unsigned long usecs)
+{
+       int i, n;
+
+       n = (loops_per_jiffy * HZ * usecs) / MILLION;
+       for(i=0;i<n;i++) ;
+}
+
+void __const_udelay(unsigned long usecs)
+{
+       int i, n;
+
+       n = (loops_per_jiffy * HZ * usecs) / MILLION;
+       for(i=0;i<n;i++) ;
+}
 
 #include "linux/in6.h"
 #include "linux/rwsem.h"
 #include "asm/byteorder.h"
+#include "asm/delay.h"
 #include "asm/semaphore.h"
 #include "asm/uaccess.h"
 #include "asm/checksum.h"
 
 /* Networking helper routines. */
 EXPORT_SYMBOL(csum_partial);
+
+/* delay core functions */
+EXPORT_SYMBOL(__const_udelay);
+EXPORT_SYMBOL(__udelay);
 
  * Licensed under the GPL
  */
 
+#include "linux/delay.h"
 #include "asm/processor.h"
+#include "asm/param.h"
 
 void __delay(unsigned long loops)
 {
        for(i = 0; i < loops; i++) ;
 }
 
+void __udelay(unsigned long usecs)
+{
+       int i, n;
+
+       n = (loops_per_jiffy * HZ * usecs) / MILLION;
+       for(i=0;i<n;i++) ;
+}
+
+void __const_udelay(unsigned long usecs)
+{
+       int i, n;
+
+       n = (loops_per_jiffy * HZ * usecs) / MILLION;
+       for(i=0;i<n;i++) ;
+}
+
 /*
  * Overrides for Emacs so that we follow Linus's tabbing style.
  * Emacs will notice this stuff at the end of the file and automatically
 
 #include "asm/arch/delay.h"
 #include "asm/archparam.h"
 
+#define MILLION 1000000
+
 #endif