From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1O2hCX-0006LX-9f for qemu-devel@nongnu.org; Fri, 16 Apr 2010 04:47:01 -0400 Received: from [140.186.70.92] (port=36456 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1O2hCJ-0006Qh-TG for qemu-devel@nongnu.org; Fri, 16 Apr 2010 04:47:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1O2fXI-0002dd-7u for qemu-devel@nongnu.org; Fri, 16 Apr 2010 03:03:42 -0400 Received: from mail-gy0-f173.google.com ([209.85.160.173]:39041) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1O2fXF-0002d5-HF for qemu-devel@nongnu.org; Fri, 16 Apr 2010 03:00:17 -0400 Received: by gyd5 with SMTP id 5so1161144gyd.4 for ; Fri, 16 Apr 2010 00:00:16 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: References: From: Jun Koi Date: Fri, 16 Apr 2010 15:59:56 +0900 Message-ID: Subject: Re: [Qemu-devel] Which functions writes to memory? Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: quoted-printable List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: malc Cc: qemu-devel@nongnu.org 2010/4/16 malc : > On Fri, 16 Apr 2010, Jun Koi wrote: > >> On Fri, Apr 16, 2010 at 3:17 PM, malc wrote: >> > On Fri, 16 Apr 2010, Jun Koi wrote: >> > >> >> Hi, >> >> >> >> I am writing a small tool to trace all the activities that write to a= n >> >> area of (virtual) memory in Qemu. >> >> I am currently doing that by putting my code at the top of the below >> >> macro in softmmu_header.h >> >> >> >> static inline void glue(glue(st, SUFFIX), MEMSUFFIX).... >> >> >> >> However, it seems I still miss some written events: in some occasions= , >> >> I believe that Qemu has another code writing data to memory, which >> >> happens even before this macro. >> >> Is it true that elsewhere, Qemu also writes into memory besides using >> >> above function? >> >> >> >> The memory area I am tracking for written events belong to normal are= a >> >> in OS kernel, where usually only normal code (kernel, not something >> >> like SMM handler) =9Awrite to. >> > >> > Once the TLB is properly set up st helpers are bypassed entirely and >> > tcg generated code writes to it directly, it's quite easy to "workarou= nd" >> > that at the expense of much slower execution. >> > >> >> This saves me a lot of frustrated time, thanks! >> >> Now I can see that tcg code calls to __stb*_mmu(), but cannot find any >> code call to st*_mmu(). >> Do you have any hint? > > The tcg generated code fetches appropriate helper's address from the > qemu_st/ld_helpers array and calls it indirectly. Sorry if that was not clear, but my question is: which code called st*mmu() macros (in softmmu_header.h) I searched around everywhere, but dont see which calls these macros. Thanks, J