From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1O2goG-000497-GI for qemu-devel@nongnu.org; Fri, 16 Apr 2010 04:21:56 -0400 Received: from [140.186.70.92] (port=54565 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1O2glH-0005FU-4B for qemu-devel@nongnu.org; Fri, 16 Apr 2010 04:21:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1O2ghv-00085V-Aj for qemu-devel@nongnu.org; Fri, 16 Apr 2010 04:17:44 -0400 Received: from fe01x03-cgp.akado.ru ([77.232.31.164]:58658 helo=akado.ru) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1O2ghu-00084O-Qw for qemu-devel@nongnu.org; Fri, 16 Apr 2010 04:15:23 -0400 Date: Fri, 16 Apr 2010 12:15:09 +0400 (MSD) From: malc Subject: Re: [Qemu-devel] Which functions writes to memory? In-Reply-To: Message-ID: References: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="33734824-940698168-1271405714=:3853" List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jun Koi Cc: qemu-devel@nongnu.org This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --33734824-940698168-1271405714=:3853 Content-Type: TEXT/PLAIN; charset=KOI8-R Content-Transfer-Encoding: 8BIT On Fri, 16 Apr 2010, Jun Koi wrote: > 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 an > >> >> 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 area > >> >> in OS kernel, where usually only normal code (kernel, not something > >> >> like SMM handler) šwrite 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 "workaround" > >> > 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. > It's being called by automatically generated code, code generators for various platforms leave in tcg/platform/tcg-target.c -- mailto:av1474@comtv.ru --33734824-940698168-1271405714=:3853--