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~

Reply via email to