From 76146a471dc385b371e92418d67506842f7dbe8b Mon Sep 17 00:00:00 2001
From: "Suren A. Chilingaryan" <csa@dside.dyndns.org>
Date: Sun, 13 Feb 2011 17:40:22 +0100
Subject: Commented out unsuccesfull attempts to make 64 bit transfers

---
 tools.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 70 insertions(+), 1 deletion(-)

diff --git a/tools.c b/tools.c
index 7766c6a..9770b60 100644
--- a/tools.c
+++ b/tools.c
@@ -35,9 +35,77 @@ void *memcpy64(void * dst, void const * src, size_t len) {
 
     while (len >= 8) {
         *plDst++ = *plSrc++;
-        len -= 4;
+        len -= 8;
+    }
+
+    char * pcDst = (char *) plDst;
+    char const * pcSrc = (char const *) plSrc;
+
+    while (len--) {
+        *pcDst++ = *pcSrc++;
+    }
+
+    return (dst);
+} 
+
+/*
+void *memcpy128(void * dst, void const * src, size_t len) {
+
+    long pos = - (len>>2);
+    char * plDst = (char *) dst - 4 * pos;
+    char const * plSrc = (char const *) src - 4 * pos;
+
+    if (pos) {
+        __asm__ __volatile__ (
+            "1:						\n\t"
+            "mov	(%0,%2,4), %%edi		\n\t"
+            "mov	%%edi, (%1,%2,4)		\n\t"
+            "inc	%2				\n\t"
+            "jnz 	1b				\n\t"
+	: 
+	: "r" (plSrc), "r" (plDst), "r" (pos)
+	: "%edi"
+        );
+    }
+
+
+
+    long pos = - ((len>>4)<<4);
+    char * plDst = (char *) dst - pos;
+    char const * plSrc = (char const *) src - pos;
+
+    if (pos) {
+        __asm__ __volatile__ (
+            "1:						\n\t"
+//            "movdqa	(%0,%2), %%xmm0			\n\t"
+            "mov	(%0,%2), %%esi			\n\t"
+            "movd	%%esi, %%xmm0			\n\t"
+            "mov	4(%0,%2), %%esi			\n\t"
+            "movd	%%esi, %%xmm1			\n\t"
+            "mov	8(%0,%2), %%esi			\n\t"
+            "movd	%%esi, %%xmm2			\n\t"
+            "mov	12(%0,%2), %%esi		\n\t"
+            "movd	%%esi, %%xmm3			\n\t"
+	    "pslldq	$4, %%xmm1			\n\t"
+	    "por	%%xmm1, %%xmm0			\n\t"
+	    "pslldq	$8, %%xmm2			\n\t"
+	    "por	%%xmm2, %%xmm0			\n\t"
+	    "pslldq	$12, %%xmm3			\n\t"
+	    "por	%%xmm3, %%xmm0			\n\t"
+	    
+            "movntdq	%%xmm0, (%1,%2)			\n\t"
+            "add	$16, %2				\n\t"
+            "jnz 	1b				\n\t"
+	: 
+	: "r" (plSrc), "r" (plDst), "r" (pos)
+	: "%rsi"
+        );
     }
 
+
+
+    len &= 0x3;
+
     char * pcDst = (char *) plDst;
     char const * pcSrc = (char const *) plSrc;
 
@@ -47,6 +115,7 @@ void *memcpy64(void * dst, void const * src, size_t len) {
 
     return (dst);
 } 
+*/
 
 
 int get_page_mask() {
-- 
cgit v1.2.3