On 09/22/2011 09:58 AM, 陳韋任 wrote:
/* list of TBs jumping to this one. This is a circular list using
the two least significant bits of the pointers to tell what is
the next pointer: 0 = jmp_next[0], 1 = jmp_next[1], 2 =
jmp_first */
struct TranslationBlock *jmp_next[2];
struct TranslationBlock *jmp_first;
After tracing the code, I found the comment might be wrong.
For example, if we link tb1 to tb2, i.e., tb1 -> tb2. Then
"tb1->jmp_next[n] = tb2" and "tb2->jmp_first = tb1" (roughly
speaking). I'm not sure if I misunderstand the comment "list
of TBs jumping to this one", or it is just wrong.
Well, the comment is from source code. I don't catch why you think "list
of TBS jumping to this one" is wrong.
My understand is that TB chain be used forreduce switch from the translation
cache to the guest code. It will be a circular list if there is no interrupt
or exceptional.
At mean while, it's just the date related to TB chain in TB struct, it's
not about process of how TB chain work.
Regards,
chenwj
--
Lei