2010/4/16 malc <av1...@comtv.ru>: > On Fri, 16 Apr 2010, Jun Koi wrote: > >> On Fri, Apr 16, 2010 at 3:17 PM, malc <av1...@comtv.ru> 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. Thanks, J