Author: marius
Date: Thu Nov 17 22:59:16 2011
New Revision: 227641
URL: http://svn.freebsd.org/changeset/base/227641

Log:
  Implement prefetch_read_{many,once}() for sparc64 and fix compilation on
  other !x86 architectures.

Modified:
  head/sys/dev/sfxge/common/efsys.h

Modified: head/sys/dev/sfxge/common/efsys.h
==============================================================================
--- head/sys/dev/sfxge/common/efsys.h   Thu Nov 17 22:56:40 2011        
(r227640)
+++ head/sys/dev/sfxge/common/efsys.h   Thu Nov 17 22:59:16 2011        
(r227641)
@@ -97,10 +97,11 @@ extern "C" {
 MALLOC_DECLARE(M_SFXGE);
 
 /* Machine dependend prefetch wrappers */
-#if defined(__i386) || defined(__amd64)
+#if defined(__i386__) || defined(__amd64__)
 static __inline void
 prefetch_read_many(void *addr)
 {
+
        __asm__(
            "prefetcht0 (%0)"
            :
@@ -110,11 +111,44 @@ prefetch_read_many(void *addr)
 static __inline void
 prefetch_read_once(void *addr)
 {
+
        __asm__(
            "prefetchnta (%0)"
            :
            : "r" (addr));
 }
+#elif defined(__sparc64__)
+static __inline void
+prefetch_read_many(void *addr)
+{
+
+       __asm__(
+           "prefetch [%0], 0"
+           :
+           : "r" (addr));
+}
+
+static __inline void
+prefetch_read_once(void *addr)
+{
+
+       __asm__(
+           "prefetch [%0], 1"
+           :
+           : "r" (addr));
+}
+#else
+static __inline void
+prefetch_read_many(void *addr)
+{
+
+}
+
+static __inline void
+prefetch_read_once(void *addr)
+{
+
+}
 #endif
 
 #if defined(__i386__) || defined(__amd64__)
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to