]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - include/asm-powerpc/time.h
powerpc: implement atomic64_t on ppc64
[karo-tx-linux.git] / include / asm-powerpc / time.h
index f8ef186c81e4764482f5d93c436d8b0cbce3b3f7..d9b86a17271ba95ed500061b3a83e7d98d0104f5 100644 (file)
@@ -21,7 +21,7 @@
 #include <asm/processor.h>
 #ifdef CONFIG_PPC64
 #include <asm/paca.h>
-#include <asm/iSeries/HvCall.h>
+#include <asm/iseries/hv_call.h>
 #endif
 
 /* time.c */
@@ -30,7 +30,8 @@ extern unsigned long tb_ticks_per_usec;
 extern unsigned long tb_ticks_per_sec;
 extern u64 tb_to_xs;
 extern unsigned      tb_to_us;
-extern u64 tb_last_stamp;
+extern unsigned long tb_last_stamp;
+extern u64 tb_last_jiffy;
 
 DECLARE_PER_CPU(unsigned long, last_jiffy);
 
@@ -113,6 +114,17 @@ static inline unsigned int get_rtcl(void)
        return rtcl;
 }
 
+static inline u64 get_rtc(void)
+{
+       unsigned int hi, lo, hi2;
+
+       do {
+               asm volatile("mfrtcu %0; mfrtcl %1; mfrtcu %2"
+                            : "=r" (hi), "=r" (lo), "=r" (hi2));
+       } while (hi2 != hi);
+       return (u64)hi * 1000000000 + lo;
+}
+
 #ifdef CONFIG_PPC64
 static inline u64 get_tb(void)
 {
@@ -196,9 +208,11 @@ static inline unsigned long tb_ticks_since(unsigned long tstamp)
 extern u64 mulhdu(u64, u64);
 #endif
 
-unsigned mulhwu_scale_factor(unsigned, unsigned);
-void div128_by_32(u64 dividend_high, u64 dividend_low,
-                 unsigned divisor, struct div_result *dr);
+extern void smp_space_timers(unsigned int);
+
+extern unsigned mulhwu_scale_factor(unsigned, unsigned);
+extern void div128_by_32(u64 dividend_high, u64 dividend_low,
+                        unsigned divisor, struct div_result *dr);
 
 /* Used to store Processor Utilization register (purr) values */