[Pkg-voip-commits] r5922 - in /zaptel/trunk: debian/changelog kernel/oslec/oslec_wrap.c

tzafrir-guest at alioth.debian.org tzafrir-guest at alioth.debian.org
Mon Jun 30 09:29:07 UTC 2008


Author: tzafrir-guest
Date: Mon Jun 30 09:29:07 2008
New Revision: 5922

URL: http://svn.debian.org/wsvn/pkg-voip/?sc=1&rev=5922
Log:
* oslec_wrap.c: cycles code for powerpc by Stelios Koroneos.
* And dummy cycles code for other architectures.

Modified:
    zaptel/trunk/debian/changelog
    zaptel/trunk/kernel/oslec/oslec_wrap.c

Modified: zaptel/trunk/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-voip/zaptel/trunk/debian/changelog?rev=5922&op=diff
==============================================================================
--- zaptel/trunk/debian/changelog (original)
+++ zaptel/trunk/debian/changelog Mon Jun 30 09:29:07 2008
@@ -25,6 +25,8 @@
     a panic if disconnecting an Astribank device with a channel still open.
   * Patch florz-vmalloc: proper includes for zaphfc on non-x86 platforms.
     Hopfully C-loses: #488513.
+  * oslec_wrap.c: cycles code for powerpc by Stelios Koroneos.
+  * And dummy cycles code for other architectures.
 
   [ Mark Purcell ]
   * Build-Depends: asciidoc (>= 8.2.6-1.1)

Modified: zaptel/trunk/kernel/oslec/oslec_wrap.c
URL: http://svn.debian.org/wsvn/pkg-voip/zaptel/trunk/kernel/oslec/oslec_wrap.c?rev=5922&op=diff
==============================================================================
--- zaptel/trunk/kernel/oslec/oslec_wrap.c (original)
+++ zaptel/trunk/kernel/oslec/oslec_wrap.c Mon Jun 30 09:29:07 2008
@@ -86,15 +86,37 @@
 
    return ret;
 }
-#else
+#elif defined(__X86__) || defined (__i386) || defined (__x86_64__)
 static __inline__ uint64_t cycles(void) {
   uint32_t lo, hi;
   /* We cannot use "=A", since this would use %rax on x86_64 */
   __asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));
   return (uint64_t)hi << 32 | lo;
-}
-
+#elif (defined(__powerpc__) || defined(__ppc__))
+static inline __attribute__((always_inline)) unsigned long long cycles(void) {
+	register uint32_t tbu, tbl, tmp;
+
+	__asm__ volatile(
+	"0:\n\t"
+	"mftbu %0\n\t"          
+	"mftb %1\n\t"           
+	"mftbu %2\n\t"          
+	"cmpw %0, %2\n\t"       
+	"bne- 0b"               
+	: "=r"(tbu), "=r"(tbl), "=r"(tmp)
+	: /* nope */
+	: "cc");
+
+	return (((uint64_t)tbu)<<32) + tbl;
+} 
+#else
+static inline volatile unsigned int cycles(void) {
+	/* A dummy implementation for other architectures */
+	static unsigned int dummy_cycles = 1;
+	return dummy_cycles++;
 #endif
+}
+
 
 /* vars to help us with /proc interface */
 




More information about the Pkg-voip-commits mailing list