From: Jiaqing Du <jiaq...@gmail.com>
Date: Wed, Oct 7, 2009 at 9:21 PM
Subject: [Qemu-devel] Translated Basic Block Instrumentation
To: qemu-de...@nongnu.org


Hi list,

I'm working on the instrumentation of each (translated) basic block.
The host arch is x86_64. At the beginning of each translated basic
block, I added some instructions to do some accounting. Then under
some conditions I need to raise an NMI inside a translated basic
block. The following is (part of ) what I added to
tcg_gen_code_common().

    /* movq EXCP02_NMI,%rdi */
    tcg_out_movi(s, TCG_TYPE_I64, TCG_REG_RDI, EXCP02_NMI);

    /* callq helper_raise_interrupt(EXCP02_NMI) */
    tcg_out8(s, 0xe8);
    tcg_out32(s, (tcg_target_long)raise_exception -
(tcg_target_long)s->code_ptr - 4);


It seems that this NMI is not handled properly in cpu_exec(). I also
tried cpu_interrupt(), this also did not work. What I want to do is to
raise an NMI inside a translated basic block, any suggestions?


Thanks,
Jiaqing

Reply via email to