On 24/03/16 13:39, sergey.fedo...@linaro.org wrote: > - * The two least significant bits of a pointer are used to choose which > - * data field holds a pointer to the next TB: > + * jmp_list_first and jmp_list_next are 4-byte aligned pointers to a > + * TranslationBlock structure, and the two least significant bits of them > + * are used to encode which data field holds a pointer to the next TB:
Maybe would be better described like this: "..., and the two least significant bits of them are used to encode which data field of the pointed TB should be used to traverse the list further from that TB: ..."? Kind regards, Sergey > * 0 => jmp_list_next[0], 1 => jmp_list_next[1], 2 => jmp_list_first. > * In other words, 0/1 tells which jump is used in the pointed TB, > * and 2 means that this is a pointer back to the target TB of this list. > */ > - struct TranslationBlock *jmp_list_next[2]; > - struct TranslationBlock *jmp_list_first; > + uintptr_t jmp_list_next[2]; > + uintptr_t jmp_list_first;