1 /* 2 * Plugin Memory API 3 * 4 * Copyright (c) 2019 Linaro Ltd 5 * 6 * SPDX-License-Identifier: GPL-2.0-or-later 7 */ 8 9 #ifndef PLUGIN_MEMORY_H 10 #define PLUGIN_MEMORY_H 11 12 #include "exec/cpu-defs.h" 13 #include "exec/hwaddr.h" 14 15 struct qemu_plugin_hwaddr { 16 bool is_io; 17 bool is_store; 18 union { 19 struct { 20 MemoryRegionSection *section; 21 hwaddr offset; 22 } io; 23 struct { 24 void *hostaddr; 25 } ram; 26 } v; 27 }; 28 29 /** 30 * tlb_plugin_lookup: query last TLB lookup 31 * @cpu: cpu environment 32 * 33 * This function can be used directly after a memory operation to 34 * query information about the access. It is used by the plugin 35 * infrastructure to expose more information about the address. 36 * 37 * It would only fail if not called from an instrumented memory access 38 * which would be an abuse of the API. 39 */ 40 bool tlb_plugin_lookup(CPUState *cpu, target_ulong addr, int mmu_idx, 41 bool is_store, struct qemu_plugin_hwaddr *data); 42 43 #endif /* PLUGIN_MEMORY_H */ 44