So, the only test I need to make to be sure that a given TB was completely
executed is to check the two lowest bits of next_tb (after tcg_qemu_tb_exec()
call), and, if they are not equal to 2 or 3, then the TB finished its
execution (if it has 0 or 1 on the 2 lowest bits)? And in the next
iteration, the next TB will be executed, considering that chaining is
disabled (1 TB per cpu_exec iteration).
Am I missing something?

Thanks


2014-07-09 10:52 GMT-03:00 Anderson Sartor <[email protected]>:

> Thank you for your response.
> I want to count how many TBs that are executed. For this, I need to know
> when a given TB is completely executed, without interrupts of any kind.
> I disabled the chaining, so, at each iteration, it will execute a single
> TB.
> I will check the documentation that you mentioned.
>
> Thanks
>
>
> 2014-07-09 7:02 GMT-03:00 Peter Maydell <[email protected]>:
>
> On 8 July 2014 18:26, Anderson Sartor <[email protected]> wrote:
>> > Hi all,
>> > Which method, in fact, executes the TBs (full-system emulation)? Is it
>> > tcg_qemu_tb_exec() from cpu_exec()?
>>
>> Yes.
>>
>> > At this point, is it possible for the execution of the TB to be
>> interrupted
>> > (it will try to execute this TB again)?
>>
>> Depends what you mean. There are circumstances where we
>> won't actually execute the TB but will stop immediately, but
>> guest interrupts aren't one of them. (tcg/tcg.h has a good
>> documentation comment for tcg_qemu_tb_exec describing
>> this.) It's also possible that execution of the TB might be aborted
>> due to an exception that causes us to longjmp out and never
>> return from tcg_qemu_tb_exec().
>>
>> > If positive, how do I know whether a
>> > TB was completely executed?
>>
>> Not sure exactly what you're trying to do here; bear in mind
>> that tcg_qemu_tb_exec() may execute more than one TB
>> before it returns.
>>
>> thanks
>> -- PMM
>>
>
>

Reply via email to