diff options
author | Juergen Lock <nox@jelal.kn-bremen.de> | 2010-02-19 19:28:23 +0100 |
---|---|---|
committer | malc <av1474@comtv.ru> | 2010-02-20 01:37:33 +0300 |
commit | e4ee916d3f9a93df06bd498c92767c1558d59a0b (patch) | |
tree | d0e348c6c468c3eca4f339f1744a85e6b678e165 /cache-utils.c | |
parent | 584771e6b6cba9f1571264645e15272d0ce9fe8e (diff) |
Add FreeBSD/ppc host ppc_init_cacheline_sizes() implementation.
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>
Diffstat (limited to 'cache-utils.c')
-rw-r--r-- | cache-utils.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/cache-utils.c b/cache-utils.c index 45d62c91c5..8bbd68054d 100644 --- a/cache-utils.c +++ b/cache-utils.c @@ -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) { |