|
@@ -321,6 +321,8 @@ static enum plugin_dyn_cb_type op_to_cb_type(enum qemu_plugin_op op)
|
|
switch (op) {
|
|
switch (op) {
|
|
case QEMU_PLUGIN_INLINE_ADD_U64:
|
|
case QEMU_PLUGIN_INLINE_ADD_U64:
|
|
return PLUGIN_CB_INLINE_ADD_U64;
|
|
return PLUGIN_CB_INLINE_ADD_U64;
|
|
|
|
+ case QEMU_PLUGIN_INLINE_STORE_U64:
|
|
|
|
+ return PLUGIN_CB_INLINE_STORE_U64;
|
|
default:
|
|
default:
|
|
g_assert_not_reached();
|
|
g_assert_not_reached();
|
|
}
|
|
}
|
|
@@ -535,6 +537,9 @@ void exec_inline_op(struct qemu_plugin_dyn_cb *cb, int cpu_index)
|
|
case QEMU_PLUGIN_INLINE_ADD_U64:
|
|
case QEMU_PLUGIN_INLINE_ADD_U64:
|
|
*val += cb->inline_insn.imm;
|
|
*val += cb->inline_insn.imm;
|
|
break;
|
|
break;
|
|
|
|
+ case QEMU_PLUGIN_INLINE_STORE_U64:
|
|
|
|
+ *val = cb->inline_insn.imm;
|
|
|
|
+ break;
|
|
default:
|
|
default:
|
|
g_assert_not_reached();
|
|
g_assert_not_reached();
|
|
}
|
|
}
|
|
@@ -562,6 +567,7 @@ void qemu_plugin_vcpu_mem_cb(CPUState *cpu, uint64_t vaddr,
|
|
vaddr, cb->userp);
|
|
vaddr, cb->userp);
|
|
break;
|
|
break;
|
|
case PLUGIN_CB_INLINE_ADD_U64:
|
|
case PLUGIN_CB_INLINE_ADD_U64:
|
|
|
|
+ case PLUGIN_CB_INLINE_STORE_U64:
|
|
exec_inline_op(cb, cpu->cpu_index);
|
|
exec_inline_op(cb, cpu->cpu_index);
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|