Hi, all I am tracing how block linking is done in QEMU. I find there is a comment in struct TranslationBlock says,
/* 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; But after tracing the code, I think the comment might be wrong. For example, if we want to link tb1 to tb2, i.e., tb1 -> tb2. Then roughly speaking, tb1->jmp_next[n] should be tb2, and tb2->jmp_first should be tb1. So the comment "list of TBs jumping to this one" looks weird to me. Do I misunderstand how the block chaining is done? Thanks! Regards, chenwj -- Wei-Ren Chen (陳韋任) Computer Systems Lab, Institute of Information Science, Academia Sinica, Taiwan (R.O.C.) Tel:886-2-2788-3799 #1667