[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