X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=cache-utils.c;h=2db5af2db14d025a5b24c606191c020028480a36;hb=e0e8384dd471376c3f815c3070f161480a28cc90;hp=73a824a07f0840963b4c83fff728a64e6783d270;hpb=1eff7fbf116790aaacc8f89def68be11149626cc;p=qemu.git diff --git a/cache-utils.c b/cache-utils.c index 73a824a07..2db5af2db 100644 --- a/cache-utils.c +++ b/cache-utils.c @@ -1,6 +1,6 @@ #include "cache-utils.h" -#ifdef HOST_PPC +#if defined(_ARCH_PPC) struct qemu_cache_conf qemu_cache_conf = { .dcache_bsize = 16, .icache_bsize = 16 @@ -37,6 +37,7 @@ static void ppc_init_cacheline_sizes(char **envp) } #elif defined __APPLE__ +#include #include #include @@ -46,6 +47,7 @@ static void ppc_init_cacheline_sizes(void) unsigned cacheline; int name[2] = { CTL_HW, HW_CACHELINE }; + len = sizeof(cacheline); if (sysctl(name, 2, &cacheline, &len, NULL, 0)) { perror("sysctl CTL_HW HW_CACHELINE failed"); } else { @@ -55,6 +57,30 @@ static void ppc_init_cacheline_sizes(void) } #endif +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) +#include +#include +#include +#include +#include +#include + +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) { @@ -68,4 +94,4 @@ void qemu_cache_utils_init(char **envp) } #endif -#endif /* HOST_PPC */ +#endif /* _ARCH_PPC */