|
@@ -13,43 +13,7 @@
|
|
|
* Anton Blanchard.
|
|
|
*/
|
|
|
|
|
|
-extern unsigned long tb_ticks_per_usec;
|
|
|
-
|
|
|
-#ifdef CONFIG_PPC64
|
|
|
-/* define these here to prevent circular dependencies */
|
|
|
-/* these instructions control the thread priority on multi-threaded cpus */
|
|
|
-#define __HMT_low() asm volatile("or 1,1,1")
|
|
|
-#define __HMT_medium() asm volatile("or 2,2,2")
|
|
|
-#else
|
|
|
-#define __HMT_low()
|
|
|
-#define __HMT_medium()
|
|
|
-#endif
|
|
|
-
|
|
|
-#define __barrier() asm volatile("" ::: "memory")
|
|
|
-
|
|
|
-static inline unsigned long __get_tb(void)
|
|
|
-{
|
|
|
- unsigned long rval;
|
|
|
-
|
|
|
- asm volatile("mftb %0" : "=r" (rval));
|
|
|
- return rval;
|
|
|
-}
|
|
|
-
|
|
|
-static inline void __delay(unsigned long loops)
|
|
|
-{
|
|
|
- unsigned long start = __get_tb();
|
|
|
-
|
|
|
- while((__get_tb() - start) < loops)
|
|
|
- __HMT_low();
|
|
|
- __HMT_medium();
|
|
|
- __barrier();
|
|
|
-}
|
|
|
-
|
|
|
-static inline void udelay(unsigned long usecs)
|
|
|
-{
|
|
|
- unsigned long loops = tb_ticks_per_usec * usecs;
|
|
|
-
|
|
|
- __delay(loops);
|
|
|
-}
|
|
|
+extern void __delay(unsigned long loops);
|
|
|
+extern void udelay(unsigned long usecs);
|
|
|
|
|
|
#endif /* _ASM_POWERPC_DELAY_H */
|