|  | /* | 
|  | * Copyright 2003 PathScale, Inc. | 
|  | * Copied from arch/x86_64 | 
|  | * | 
|  | * Licensed under the GPL | 
|  | */ | 
|  |  | 
|  | #include <linux/module.h> | 
|  | #include <linux/delay.h> | 
|  | #include <asm/processor.h> | 
|  | #include <asm/param.h> | 
|  |  | 
|  | void __delay(unsigned long loops) | 
|  | { | 
|  | unsigned long i; | 
|  |  | 
|  | for(i = 0; i < loops; i++) | 
|  | cpu_relax(); | 
|  | } | 
|  |  | 
|  | void __udelay(unsigned long usecs) | 
|  | { | 
|  | unsigned long i, n; | 
|  |  | 
|  | n = (loops_per_jiffy * HZ * usecs) / MILLION; | 
|  | for(i=0;i<n;i++) | 
|  | cpu_relax(); | 
|  | } | 
|  |  | 
|  | EXPORT_SYMBOL(__udelay); | 
|  |  | 
|  | void __const_udelay(unsigned long usecs) | 
|  | { | 
|  | unsigned long i, n; | 
|  |  | 
|  | n = (loops_per_jiffy * HZ * usecs) / MILLION; | 
|  | for(i=0;i<n;i++) | 
|  | cpu_relax(); | 
|  | } | 
|  |  | 
|  | EXPORT_SYMBOL(__const_udelay); |