Message ID | 20121120235248.GA24638@cs.nctu.edu.tw |
---|---|
State | New |
Headers | show |
On 20 November 2012 23:52, 陳韋任 (Wei-Ren Chen) <chenwj@iis.sinica.edu.tw> wrote: > When tb_remove was first commited at fd6ce8f6, there were three different > calls pass different names to offsetof. In current codebase, the other two > calls are replaced with tb_page_remove. There is no need to have a general > tb_remove. Omit passing the third parameter and using tb1->phys_hash_next > directly. > > Signed-off-by: Chen Wei-Ren <chenwj@iis.sinica.edu.tw> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> -- PMM
[CC'ed qemu-trivial] ping? On Wed, Nov 21, 2012 at 07:52:48AM +0800, 陳韋任 (Wei-Ren Chen) wrote: > When tb_remove was first commited at fd6ce8f6, there were three different > calls pass different names to offsetof. In current codebase, the other two > calls are replaced with tb_page_remove. There is no need to have a general > tb_remove. Omit passing the third parameter and using tb1->phys_hash_next > directly. > > Signed-off-by: Chen Wei-Ren <chenwj@iis.sinica.edu.tw> > --- > > v2: Address Peter's comment. > - place comment used belong tb_remove above tb_phys_invalidate. > - remove unnecessary bracket. > > exec.c | 12 +++++------- > 1 files changed, 5 insertions(+), 7 deletions(-) > > diff --git a/exec.c b/exec.c > index 8435de0..6343838 100644 > --- a/exec.c > +++ b/exec.c > @@ -862,18 +862,16 @@ static void tb_page_check(void) > > #endif > > -/* invalidate one TB */ > -static inline void tb_remove(TranslationBlock **ptb, TranslationBlock *tb, > - int next_offset) > +static inline void tb_hash_remove(TranslationBlock **ptb, TranslationBlock *tb) > { > TranslationBlock *tb1; > for(;;) { > tb1 = *ptb; > if (tb1 == tb) { > - *ptb = *(TranslationBlock **)((char *)tb1 + next_offset); > + *ptb = tb1->phys_hash_next; > break; > } > - ptb = (TranslationBlock **)((char *)tb1 + next_offset); > + ptb = &tb1->phys_hash_next; > } > } > > @@ -929,6 +927,7 @@ static inline void tb_reset_jump(TranslationBlock *tb, int n) > tb_set_jmp_target(tb, n, (uintptr_t)(tb->tc_ptr + tb->tb_next_offset[n])); > } > > +/* invalidate one TB */ > void tb_phys_invalidate(TranslationBlock *tb, tb_page_addr_t page_addr) > { > CPUArchState *env; > @@ -940,8 +939,7 @@ void tb_phys_invalidate(TranslationBlock *tb, tb_page_addr_t page_addr) > /* remove the TB from the hash list */ > phys_pc = tb->page_addr[0] + (tb->pc & ~TARGET_PAGE_MASK); > h = tb_phys_hash_func(phys_pc); > - tb_remove(&tb_phys_hash[h], tb, > - offsetof(TranslationBlock, phys_hash_next)); > + tb_hash_remove(&tb_phys_hash[h], tb); > > /* remove the TB from the page list */ > if (tb->page_addr[0] != page_addr) { > -- > 1.7.3.4 > > > -- > Wei-Ren Chen (陳韋任) > Computer Systems Lab, Institute of Information Science, > Academia Sinica, Taiwan (R.O.C.) > Tel:886-2-2788-3799 #1667 > Homepage: http://people.cs.nctu.edu.tw/~chenwj
On Wed, Nov 21, 2012 at 07:52:48AM +0800, 陳韋任 (Wei-Ren Chen) wrote: > When tb_remove was first commited at fd6ce8f6, there were three different > calls pass different names to offsetof. In current codebase, the other two > calls are replaced with tb_page_remove. There is no need to have a general > tb_remove. Omit passing the third parameter and using tb1->phys_hash_next > directly. > > Signed-off-by: Chen Wei-Ren <chenwj@iis.sinica.edu.tw> > --- > > v2: Address Peter's comment. > - place comment used belong tb_remove above tb_phys_invalidate. > - remove unnecessary bracket. > > exec.c | 12 +++++------- > 1 files changed, 5 insertions(+), 7 deletions(-) Please rebase onto qemu.git/master. Stefan
On Tue, Dec 18, 2012 at 05:37:53PM +0100, Stefan Hajnoczi wrote: > On Wed, Nov 21, 2012 at 07:52:48AM +0800, 陳韋任 (Wei-Ren Chen) wrote: > > When tb_remove was first commited at fd6ce8f6, there were three different > > calls pass different names to offsetof. In current codebase, the other two > > calls are replaced with tb_page_remove. There is no need to have a general > > tb_remove. Omit passing the third parameter and using tb1->phys_hash_next > > directly. > > > > Signed-off-by: Chen Wei-Ren <chenwj@iis.sinica.edu.tw> > > --- > > > > v2: Address Peter's comment. > > - place comment used belong tb_remove above tb_phys_invalidate. > > - remove unnecessary bracket. > > > > exec.c | 12 +++++------- > > 1 files changed, 5 insertions(+), 7 deletions(-) > > Please rebase onto qemu.git/master. done. I sent to qemu-trivial this time. :)
diff --git a/exec.c b/exec.c index 8435de0..6343838 100644 --- a/exec.c +++ b/exec.c @@ -862,18 +862,16 @@ static void tb_page_check(void) #endif -/* invalidate one TB */ -static inline void tb_remove(TranslationBlock **ptb, TranslationBlock *tb, - int next_offset) +static inline void tb_hash_remove(TranslationBlock **ptb, TranslationBlock *tb) { TranslationBlock *tb1; for(;;) { tb1 = *ptb; if (tb1 == tb) { - *ptb = *(TranslationBlock **)((char *)tb1 + next_offset); + *ptb = tb1->phys_hash_next; break; } - ptb = (TranslationBlock **)((char *)tb1 + next_offset); + ptb = &tb1->phys_hash_next; } } @@ -929,6 +927,7 @@ static inline void tb_reset_jump(TranslationBlock *tb, int n) tb_set_jmp_target(tb, n, (uintptr_t)(tb->tc_ptr + tb->tb_next_offset[n])); } +/* invalidate one TB */ void tb_phys_invalidate(TranslationBlock *tb, tb_page_addr_t page_addr) { CPUArchState *env; @@ -940,8 +939,7 @@ void tb_phys_invalidate(TranslationBlock *tb, tb_page_addr_t page_addr) /* remove the TB from the hash list */ phys_pc = tb->page_addr[0] + (tb->pc & ~TARGET_PAGE_MASK); h = tb_phys_hash_func(phys_pc); - tb_remove(&tb_phys_hash[h], tb, - offsetof(TranslationBlock, phys_hash_next)); + tb_hash_remove(&tb_phys_hash[h], tb); /* remove the TB from the page list */ if (tb->page_addr[0] != page_addr) {
When tb_remove was first commited at fd6ce8f6, there were three different calls pass different names to offsetof. In current codebase, the other two calls are replaced with tb_page_remove. There is no need to have a general tb_remove. Omit passing the third parameter and using tb1->phys_hash_next directly. Signed-off-by: Chen Wei-Ren <chenwj@iis.sinica.edu.tw> --- v2: Address Peter's comment. - place comment used belong tb_remove above tb_phys_invalidate. - remove unnecessary bracket. exec.c | 12 +++++------- 1 files changed, 5 insertions(+), 7 deletions(-)