summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscop <scop>2005-03-14 17:04:35 +0000
committerscop <scop>2005-03-14 17:04:35 +0000
commit981b154cbd0665283264d3bd211089cd3057e36b (patch)
tree7fb0aa71537d0a75da99ea7413de0cca09c3a2fe
parentaba4ff4379da49b7c310659fd6d4344b1464c4ef (diff)
downloadvdr-plugin-dxr3-981b154cbd0665283264d3bd211089cd3057e36b.tar.gz
vdr-plugin-dxr3-981b154cbd0665283264d3bd211089cd3057e36b.tar.bz2
Handle __x86_64__.
-rw-r--r--dxr3memcpy.c23
1 files changed, 9 insertions, 14 deletions
diff --git a/dxr3memcpy.c b/dxr3memcpy.c
index 0d59e09..3572501 100644
--- a/dxr3memcpy.c
+++ b/dxr3memcpy.c
@@ -42,12 +42,12 @@
//! our function pointer
void *(* dxr3_memcpy)(void *to, const void *from, size_t len);
-#ifdef __i386__
+#if defined(__i386__) || defined(__x86_64__)
// ==================================
// for small memory blocks (<256 bytes) this version is faster
#define small_memcpy(to,from,n) { register unsigned long int dummy; __asm__ __volatile__("rep; movsb":"=&D"(to), "=&S"(from), "=&c"(dummy) :"0" (to), "1" (from),"2" (n) : "memory"); }
/*
-// -- dosn't compile with 2.95 gcc --
+// -- doesn't compile with 2.95 gcc --
#define small_memcpy(to,from,n)\
{\
register unsigned long int dummy;\
@@ -313,7 +313,7 @@ static void * mmx2_memcpy(void * to, const void * from, size_t len)
static void *linux_kernel_memcpy(void *to, const void *from, size_t len) {
return __memcpy(to,from,len);
}
-#endif /*__i386__*/
+#endif /* __i386__ || __x86_64__ */
// ==================================
@@ -333,7 +333,7 @@ cDxr3MemcpyBench::cDxr3MemcpyBench(uint32_t config_flags)
routine.cpu_require = 0;
m_methods.push_back(routine);
- #ifdef __i386__
+#if defined(__i386__) || defined(__x86_64__)
// linux_kernel_memcpy
routine.name = "linux_kernel_memcpy()";
@@ -353,7 +353,7 @@ cDxr3MemcpyBench::cDxr3MemcpyBench(uint32_t config_flags)
routine.cpu_require = CC_MMXEXT;
m_methods.push_back(routine);
- # ifndef __FreeBSD__
+#ifndef __FreeBSD__
// SSE optimized memcpy()
routine.name = "SSE optimized memcpy()";
@@ -361,9 +361,8 @@ cDxr3MemcpyBench::cDxr3MemcpyBench(uint32_t config_flags)
routine.cpu_require = CC_MMXEXT|CC_SSE;
m_methods.push_back(routine);
- # endif /*__FreeBSD__*/
- #endif /*__i386__*/
-
+#endif /* not __FreeBSD__ */
+#endif /* __i386__ || __x86_64__ */
//
// run benchmarking
@@ -423,9 +422,9 @@ cDxr3MemcpyBench::cDxr3MemcpyBench(uint32_t config_flags)
// ==================================
//! needed for exact timing
-#ifdef __i386__
unsigned long long int cDxr3MemcpyBench::Rdtsc(uint32_t config_flags)
{
+#if defined(__i386__) || defined(__x86_64__)
// we need rdtsc support
if (config_flags && CC_MMX)
{
@@ -437,12 +436,8 @@ unsigned long long int cDxr3MemcpyBench::Rdtsc(uint32_t config_flags)
{
return times(NULL);
}
-
-}
#else
-unsigned long long int cDxr3MemcpyBench::Rdtsc(uint32_t config_flags)
-{
struct tms tp;
return times(&tp);
+#endif /* __i386__ || __x86_64__ */
}
-#endif