|
@@ -316,22 +316,6 @@ static struct qemu_plugin_dyn_cb *plugin_get_dyn_cb(GArray **arr)
|
|
|
return &g_array_index(cbs, struct qemu_plugin_dyn_cb, cbs->len - 1);
|
|
|
}
|
|
|
|
|
|
-void plugin_register_inline_op(GArray **arr,
|
|
|
- enum qemu_plugin_mem_rw rw,
|
|
|
- enum qemu_plugin_op op,
|
|
|
- void *ptr,
|
|
|
- uint64_t imm)
|
|
|
-{
|
|
|
- struct qemu_plugin_dyn_cb *dyn_cb;
|
|
|
-
|
|
|
- dyn_cb = plugin_get_dyn_cb(arr);
|
|
|
- dyn_cb->userp = ptr;
|
|
|
- dyn_cb->type = PLUGIN_CB_INLINE;
|
|
|
- dyn_cb->rw = rw;
|
|
|
- dyn_cb->inline_insn.op = op;
|
|
|
- dyn_cb->inline_insn.imm = imm;
|
|
|
-}
|
|
|
-
|
|
|
void plugin_register_inline_op_on_entry(GArray **arr,
|
|
|
enum qemu_plugin_mem_rw rw,
|
|
|
enum qemu_plugin_op op,
|
|
@@ -494,15 +478,10 @@ void qemu_plugin_flush_cb(void)
|
|
|
|
|
|
void exec_inline_op(struct qemu_plugin_dyn_cb *cb, int cpu_index)
|
|
|
{
|
|
|
- char *ptr = cb->userp;
|
|
|
- size_t elem_size = 0;
|
|
|
- size_t offset = 0;
|
|
|
- if (!ptr) {
|
|
|
- /* use inline entry */
|
|
|
- ptr = cb->inline_insn.entry.score->data->data;
|
|
|
- elem_size = g_array_get_element_size(cb->inline_insn.entry.score->data);
|
|
|
- offset = cb->inline_insn.entry.offset;
|
|
|
- }
|
|
|
+ char *ptr = cb->inline_insn.entry.score->data->data;
|
|
|
+ size_t elem_size = g_array_get_element_size(
|
|
|
+ cb->inline_insn.entry.score->data);
|
|
|
+ size_t offset = cb->inline_insn.entry.offset;
|
|
|
uint64_t *val = (uint64_t *)(ptr + offset + cpu_index * elem_size);
|
|
|
|
|
|
switch (cb->inline_insn.op) {
|