From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:53147) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RvGxn-0006OE-FV for qemu-devel@nongnu.org; Wed, 08 Feb 2012 18:30:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RvGxl-0002fG-EQ for qemu-devel@nongnu.org; Wed, 08 Feb 2012 18:30:11 -0500 Received: from ch1ehsobe004.messaging.microsoft.com ([216.32.181.184]:21684 helo=ch1outboundpool.messaging.microsoft.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RvGxl-0002ee-0z for qemu-devel@nongnu.org; Wed, 08 Feb 2012 18:30:09 -0500 Message-ID: <4F330575.1020407@freescale.com> Date: Wed, 8 Feb 2012 17:29:57 -0600 From: Scott Wood MIME-Version: 1.0 References: <20120207125222.111560@gmx.net> <443210D1-C948-435B-9C58-D4E989591BC5@suse.de> <4F31A5E6.2090802@comstyle.com> In-Reply-To: Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] Help - `flush_icache_range' MacPPC List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alexander Graf Cc: Maurizio Caloro , qemu-devel@nongnu.org, Brad Smith On 02/07/2012 04:57 PM, Alexander Graf wrote: > > On 07.02.2012, at 23:29, Brad Smith wrote: > >> On 07/02/12 5:12 PM, malc wrote: >>> On Tue, 7 Feb 2012, Alexander Graf wrote: >>> >>>> >>>> On 07.02.2012, at 22:12, malc wrote: >>>> >>>>> On Tue, 7 Feb 2012, Alexander Graf wrote: >>>>> >>>>>> >>>>>> On 07.02.2012, at 13:52, Maurizio Caloro wrote: >>>>>> >>>>>>> Hello Together >>>>>>> Here i drive with me MiniMac G4 1.4Ghz and i try to run Qemu 1.0. i wan't run one Virt. MS Server2008 it's this realistic?. >>>>>>> >>>>>>> Unfortunitly from the first (other) Mailinglist i don't become any Answer. >>>>>>> >>>>>>> on a possible error recovery support, I would grateful to you. >>>>>>> Thanks and best regards >>>>>>> Mauri >>>>>>> >>>>>>>> NetBSD powermac.G4 5.1 NetBSD 5.1 (GENERIC) #0: Sat Nov 6 17:09:11 UTC>2010 builds@b7.netbsd.org:/home/builds/ab/netbsd-5-1->RELEASE/macppc/201011061943Z-obj/home/builds/ab/netbsd-5-1->RELEASE/src/sys/arch/macppc/compile/GENERIC macppc >>>>>>>> >>>>>>>> # gmake >>>>>>>> CC i386-softmmu/memory.o >>>>>>>> LINK i386-softmmu/qemu-system-i386 >>>>>>>> ld: warning: libintl.so.0, needed by /usr/pkg/lib/libgthread-2.0.so, may conflict with libintl.so.8 >>>>>>>> tcg/tcg.o: In function `tcg_prologue_init': >>>>>>>> /usr/source/qemu-1.0/tcg/tcg.c:268: undefined reference to `flush_icache_range' >>>>>>>> tcg/tcg.o: In function `ppc_tb_set_jmp_target': >>>>>>>> /usr/source/qemu-1.0/tcg/ppc/tcg-target.c:1291: undefined reference to `flush_icache_range' >>>>>>>> tcg/tcg.o: In function `tcg_gen_code': >>>>>>>> /usr/source/qemu-1.0/tcg/tcg.c:2191: undefined reference to `flush_icache_range' >>>>>> >>>>>> I'd say your gcc is too old / buggy. >>>>> >>>>> You probably missed the NetBSD part (anyway originally i did) >>>> >>>> Gcc on NetBSD doesn't implement the cache flush helpers? They're just a >>>> bunch of instructions, so I don't see how that'd be target os specific. >>>> >>> >>> Take a look at cache-utils.c, it conditionally (depending on the host OS >>> type) tries to gigure out the cache line sizes, there's code to do that >>> on Linux, OSX, AIX and FreeBSD. I have no idea if FreeBSD method works >>> for Net/Open/Dragonfly.. so.. >> >> The FreeBSD method will not work with NetBSD. For NetBSD you have to use >> the machdep.cacheinfo sysctl MIB. For OpenBSD this is the only local patch >> we have since there is no sysctl (yet) to retrieve the cache line size. >> DragonFly has no PowerPC support. > > Eh, this patch: > > diff --git a/tcg/ppc/tcg-target.c b/tcg/ppc/tcg-target.c > index f5d9bf3..f9793e6 100644 > --- a/tcg/ppc/tcg-target.c > +++ b/tcg/ppc/tcg-target.c > @@ -1260,6 +1260,17 @@ static void tcg_out_brcond2 (TCGContext *s, const TCGArg *args, > tcg_out_bc (s, (BC | BI (7, CR_EQ) | BO_COND_TRUE), args[5]); > } > > +#ifdef __NetBSD__ > +static void flush_icache_range(unsigned long begin, unsigned long end) > +{ > + unsigned int i = begin & ~15UL; > + for (; i < end; i+=16) { > + asm("icbi 0,%0" : : "r"(i)); > + } > + asm("isync"); > +} > +#endif What about flushing the data cache first, as the other flush_icache_range does? Why isn't the cache-utils.h version of flush_icache_range being seen? It's only ppc_init_cacheline_sizes() that is OS-conditional -- shouldn't that be what the undefined reference is for? Is _ARCH_PPC failing to be defined? -Scott