On 10/14/19 3:49 AM, Alex Bennée wrote: > From: "Emilio G. Cota" <c...@braap.org> > > We first inject empty instrumentation from translator_loop. > After translation, we go through the plugins to see what > they want to register for, filling in the empty instrumentation. > If if turns out that some instrumentation remains unused, we > remove it. > > This approach supports the following features: > > - Inlining TCG code for simple operations. Note that we do not > export TCG ops to plugins. Instead, we give them a C API to > insert inlined ops. So far we only support adding an immediate > to a u64, e.g. to count events. > > - "Direct" callbacks. These are callbacks that do not go via > a helper. Instead, the helper is defined at run-time, so that > the plugin code is directly called from TCG. This makes direct > callbacks as efficient as possible; they are therefore used > for very frequent events, e.g. memory callbacks. > > - Passing the host address to memory callbacks. Most of this > is implemented in a later patch though. > > - Instrumentation of memory accesses performed from helpers. > See the corresponding comment, as well as a later patch. > > Signed-off-by: Emilio G. Cota <c...@braap.org> > [AJB: add alloc_tcg_plugin_context, use glib, rm hwaddr] > Signed-off-by: Alex Bennée <alex.ben...@linaro.org> > > --- > v3 > - introduce alloc_tcg_plugin_context > - allocate GPtrArray for tracking insns > v4 > - remove hwaddr variants of callbacks > - pass full 32bit meminfo > - remove now unused code > - move plugin_gen_from into .c file > v5 > - fix offsets when storing mem callbacks. > - remove #if 0 code no longer needed > ---
Reviewed-by: Richard Henderson <richard.hender...@linaro.org> r~