Richard Henderson <[email protected]> writes:
> Let tb->page_addr[0] contain the offset within the page of the > start of the translation block. We need to recover this value > anyway at various points, and it is easier to discard the page > offset when it's not needed, which happens naturally via the > existing find_page shift. > > Signed-off-by: Richard Henderson <[email protected]> > --- > accel/tcg/cpu-exec.c | 16 ++++++++-------- > accel/tcg/cputlb.c | 3 ++- > accel/tcg/translate-all.c | 9 +++++---- > 3 files changed, 15 insertions(+), 13 deletions(-) > > diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c > index 5f43b9769a..dd58a144a8 100644 > --- a/accel/tcg/cpu-exec.c > +++ b/accel/tcg/cpu-exec.c > @@ -174,7 +174,7 @@ struct tb_desc { > target_ulong pc; > target_ulong cs_base; > CPUArchState *env; > - tb_page_addr_t phys_page1; > + tb_page_addr_t page_addr0; We don't actually document that this is an offset here (or indeed in TranslationBlock) and the definition of tb_page_addr_t: /* Page tracking code uses ram addresses in system mode, and virtual addresses in userspace mode. Define tb_page_addr_t to be an appropriate type. */ #if defined(CONFIG_USER_ONLY) typedef abi_ulong tb_page_addr_t; #define TB_PAGE_ADDR_FMT TARGET_ABI_FMT_lx #else typedef ram_addr_t tb_page_addr_t; #define TB_PAGE_ADDR_FMT RAM_ADDR_FMT #endif implies these are full size pointers into the guests address space. Either we need a new type (tb_page_offset_t) or to properly comment the structures with what they mean. Otherwise: Reviewed-by: Alex Bennée <[email protected]> -- Alex Bennée
