Aaron Lindsay <aa...@os.amperecomputing.com> writes:
> On Mar 12 17:28, Alex Bennée wrote: >> Also add a note to explain currently they are unused. >> >> Signed-off-by: Alex Bennée <alex.ben...@linaro.org> > > I'm personally interested in one clarification below, but don't think > that affects my: > > Reviewed-by: Aaron Lindsay <aa...@os.amperecomputing.com> > >> --- >> include/qemu/qemu-plugin.h | 16 +++++++++++++--- >> 1 file changed, 13 insertions(+), 3 deletions(-) >> >> diff --git a/include/qemu/qemu-plugin.h b/include/qemu/qemu-plugin.h >> index 9ae3940d89..c98866a637 100644 >> --- a/include/qemu/qemu-plugin.h >> +++ b/include/qemu/qemu-plugin.h >> @@ -207,10 +207,20 @@ struct qemu_plugin_tb; >> /** struct qemu_plugin_insn - Opaque handle for a translated instruction */ >> struct qemu_plugin_insn; >> >> +/** >> + * enum qemu_plugin_cb_flags - type of callback >> + * >> + * @QEMU_PLUGIN_CB_NO_REGS: callback does not access the CPU's regs >> + * @QEMU_PLUGIN_CB_R_REGS: callback reads the CPU's regs >> + * @QEMU_PLUGIN_CB_RW_REGS: callback reads and writes the CPU's regs >> + * >> + * Note: currently unused, plugins cannot read or change system >> + * register state. > > They are unused in the sense that the current plugin interface does not > provide a way to make use of them. But are they completely free from > side effects? They are free of side effects visible to the plugin. Under the covers it uses the existing TCG_CALL_NO_* mechanics to ensure that register state is synced to/from TCG temporaries before the callback. > > -Aaron -- Alex Bennée