Add FreeBSD/ppc host ppc_init_cacheline_sizes() implementation.
authorJuergen Lock <nox@jelal.kn-bremen.de>
Fri, 19 Feb 2010 18:28:23 +0000 (19:28 +0100)
committermalc <av1474@comtv.ru>
Fri, 19 Feb 2010 22:37:33 +0000 (01:37 +0300)
New version after malc's comments.  (Added error handling.)

Submitted by: Andreas Tobler <andreast@fgznet.ch>

Signed-off-by: Juergen Lock <nox@jelal.kn-bremen.de>
Signed-off-by: malc <av1474@comtv.ru>
cache-utils.c

index 45d62c91c5030393aa1b2cd4838eaee88cfda746..8bbd68054d4dfa938ba45991251e2ec1836f4014 100644 (file)
@@ -57,6 +57,27 @@ static void ppc_init_cacheline_sizes(void)
 }
 #endif
 
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/sysctl.h>
+
+static void ppc_init_cacheline_sizes(void)
+{
+    size_t len = 4;
+    unsigned cacheline;
+
+    if (sysctlbyname ("machdep.cacheline_size", &cacheline, &len, NULL, 0)) {
+        fprintf(stderr, "sysctlbyname machdep.cacheline_size failed: %s\n",
+                strerror(errno));
+        exit(1);
+    }
+
+    qemu_cache_conf.dcache_bsize = cacheline;
+    qemu_cache_conf.icache_bsize = cacheline;
+}
+#endif    
+
 #ifdef __linux__
 void qemu_cache_utils_init(char **envp)
 {