[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 2/8] tcg: Use uintptr_t type for jmp_list_{next|
From: |
Sergey Fedorov |
Subject: |
Re: [Qemu-devel] [PATCH 2/8] tcg: Use uintptr_t type for jmp_list_{next|first} fields of TB |
Date: |
Thu, 24 Mar 2016 18:15:21 +0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 |
On 24/03/16 17:58, Alex Bennée wrote:
>> diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h
>> > index cc3d2ca25917..cd96219a89e7 100644
>> > --- a/include/exec/exec-all.h
>> > +++ b/include/exec/exec-all.h
>> > @@ -275,14 +275,15 @@ struct TranslationBlock {
>> > * jmp_list_first points to the first TB jumping to this one.
>> > * jmp_list_next is used to point to the next TB in a list.
>> > * Since each TB can have two jumps, it can participate in two lists.
>> > - * 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:
>> > * 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.
>> > */
> Ahh I see you anticipate my previous confusion. Does this mean each time
> a jump is resolved for a particular chain the next tb could be in a
> different entry in the next TB?
I'm not sure I got your question right... When we patch the n-th jump of
a TB we use it's 'jmp_list_next[n]' to add it to the list of the TBs
jumping to the same target TB. And we use 'jmp_list_first' of the target
TB to track all those TBs jumping to it.
Kind regards,
Sergey
- [Qemu-devel] [PATCH 1/8] tcg: Clean up direct block chaining data fields, (continued)
- [Qemu-devel] [PATCH 1/8] tcg: Clean up direct block chaining data fields, sergey . fedorov, 2016/03/24
- Re: [Qemu-devel] [PATCH 1/8] tcg: Clean up direct block chaining data fields, Alex Bennée, 2016/03/24
- Re: [Qemu-devel] [PATCH 1/8] tcg: Clean up direct block chaining data fields, Sergey Fedorov, 2016/03/24
- Re: [Qemu-devel] [PATCH 1/8] tcg: Clean up direct block chaining data fields, Alex Bennée, 2016/03/24
- Re: [Qemu-devel] [PATCH 1/8] tcg: Clean up direct block chaining data fields, Sergey Fedorov, 2016/03/24
- Re: [Qemu-devel] [PATCH 1/8] tcg: Clean up direct block chaining data fields, Paolo Bonzini, 2016/03/24
- Re: [Qemu-devel] [PATCH 1/8] tcg: Clean up direct block chaining data fields, Alex Bennée, 2016/03/24
[Qemu-devel] [PATCH 2/8] tcg: Use uintptr_t type for jmp_list_{next|first} fields of TB, sergey . fedorov, 2016/03/24
[Qemu-devel] [PATCH 5/8] tcg: Clarify "thread safaty" check in tb_add_jump(), sergey . fedorov, 2016/03/24
[Qemu-devel] [PATCH 3/8] tcg: Rearrange tb_link_page() to avoid forward declaration, sergey . fedorov, 2016/03/24
[Qemu-devel] [PATCH 6/8] tcg: Rename tb_jmp_remove() to tb_remove_from_jmp_list(), sergey . fedorov, 2016/03/24
[Qemu-devel] [PATCH 8/8] tcg: Clean up tb_jmp_unlink(), sergey . fedorov, 2016/03/24