From patchwork Mon Feb 15 22:45:06 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [1/3] Add FreeBSD/ppc host ppc_init_cacheline_sizes() implementation. From: Juergen Lock X-Patchwork-Id: 45444 Message-Id: <20100215224506.GB29604@triton8.kn-bremen.de> To: malc Cc: Juergen Lock , qemu-devel@nongnu.org Date: Mon, 15 Feb 2010 23:45:06 +0100 On Mon, Feb 15, 2010 at 06:15:41AM +0300, malc wrote: > On Sun, 14 Feb 2010, Juergen Lock wrote: > > > Submitted by: Andreas Tobler > > > > Signed-off-by: Juergen Lock > > > > --- a/cache-utils.c > > +++ b/cache-utils.c > > @@ -57,6 +57,23 @@ > > } > > #endif > > > > +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) > > +#include > > +#include > > +#include > > + > > +static void ppc_init_cacheline_sizes(void) > > +{ > > + size_t len = 4; > > + unsigned cacheline; > > + > > + sysctlbyname ("machdep.cacheline_size", &cacheline, &len, NULL, 0); > > Error handling missing. Mmh I suspect thats a sysctl that simply can't fail but of course checking still doesn't hurt: Submitted by: Andreas Tobler Signed-off-by: Juergen Lock --- a/cache-utils.c +++ b/cache-utils.c @@ -57,6 +57,27 @@ static void ppc_init_cacheline_sizes(voi } #endif +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) +#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) {