Peter Maydell writes: > On 14 October 2016 at 10:21, 凌英剑 <lingyingj...@gmail.com> wrote: >> I've been trying to get GVA when the memory access instruction is >> executed,so I traced a function tcg_qemu_tb_exec() and I found the address >> used by ld/st operations is HVA. >> I would like to know how can I transform HVA to GVA? >> if I record GVA during the TB translation,will I miss some memory access >> instruction traces since a TB only be translated once but may be executed >> several times?
> At translation time the GVA is unknown (consider the case of > "load value from the address in this register" -- the load > address is not known until runtime because it depends on the > value in the register when the TB is executed. If you wnt to get the addresses at *execution* time, you can use the tracing event guest_mem_before: * Remove the "disable" property for "guest_mem_before" from the trace-events file. * Recompile QEMU. * Tell QEMU to generate traces for the event "guest_mem_before_exec" (see file "docs/tracing.txt" for more information). Cheers, Lluis