plugins: save value during memory accesses
authorPierrick Bouvier <pierrick.bouvier@linaro.org>
Mon, 16 Sep 2024 08:53:46 +0000 (09:53 +0100)
committerAlex Bennée <alex.bennee@linaro.org>
Thu, 19 Sep 2024 14:58:01 +0000 (15:58 +0100)
commitb709da5d29a8504b7132db0f7614102210aaf997
treeb632d20a2554d1f2bc7fd53bc63a5e1df540243e
parentf63c987b056303c5987ff90fbdb2d4f3c4c9fc14
plugins: save value during memory accesses

Different code paths handle memory accesses:
- tcg generated code
- load/store helpers
- atomic helpers

This value is saved in cpu->neg.plugin_mem_value_{high,low}. Values are
written only for accessed word size (upper bits are not set).

Atomic operations are doing read/write at the same time, so we generate
two memory callbacks instead of one, to allow plugins to access distinct
values.

For now, we can have access only up to 128 bits, thus split this in two
64 bits words. When QEMU will support wider operations, we'll be able to
reconsider this.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-Id: <20240724194708.1843704-2-pierrick.bouvier@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20240916085400.1046925-5-alex.bennee@linaro.org>
accel/tcg/atomic_common.c.inc
accel/tcg/atomic_template.h
accel/tcg/ldst_common.c.inc
include/hw/core/cpu.h
include/qemu/plugin.h
plugins/core.c
tcg/tcg-op-ldst.c