Message ID | 20250328200459.483089-2-richard.henderson@linaro.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | single-binary: Restrict scope of TARGET_PAGE_BITS_MIN | expand |
On 3/28/25 13:04, Richard Henderson wrote: > Move the accessor functions for TranslationBlock > into the header related to the structure. > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > include/exec/exec-all.h | 49 ------------------------------- > include/exec/translation-block.h | 50 ++++++++++++++++++++++++++++++++ > 2 files changed, 50 insertions(+), 49 deletions(-) > > diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h > index 19b0eda44a..fcad3446fe 100644 > --- a/include/exec/exec-all.h > +++ b/include/exec/exec-all.h > @@ -123,55 +123,6 @@ int probe_access_full_mmu(CPUArchState *env, vaddr addr, int size, > #endif /* !CONFIG_USER_ONLY */ > #endif /* CONFIG_TCG */ > > -static inline tb_page_addr_t tb_page_addr0(const TranslationBlock *tb) > -{ > -#ifdef CONFIG_USER_ONLY > - return tb->itree.start; > -#else > - return tb->page_addr[0]; > -#endif > -} > - > -static inline tb_page_addr_t tb_page_addr1(const TranslationBlock *tb) > -{ > -#ifdef CONFIG_USER_ONLY > - tb_page_addr_t next = tb->itree.last & TARGET_PAGE_MASK; > - return next == (tb->itree.start & TARGET_PAGE_MASK) ? -1 : next; > -#else > - return tb->page_addr[1]; > -#endif > -} > - > -static inline void tb_set_page_addr0(TranslationBlock *tb, > - tb_page_addr_t addr) > -{ > -#ifdef CONFIG_USER_ONLY > - tb->itree.start = addr; > - /* > - * To begin, we record an interval of one byte. When the translation > - * loop encounters a second page, the interval will be extended to > - * include the first byte of the second page, which is sufficient to > - * allow tb_page_addr1() above to work properly. The final corrected > - * interval will be set by tb_page_add() from tb->size before the > - * node is added to the interval tree. > - */ > - tb->itree.last = addr; > -#else > - tb->page_addr[0] = addr; > -#endif > -} > - > -static inline void tb_set_page_addr1(TranslationBlock *tb, > - tb_page_addr_t addr) > -{ > -#ifdef CONFIG_USER_ONLY > - /* Extend the interval to the first byte of the second page. See above. */ > - tb->itree.last = addr; > -#else > - tb->page_addr[1] = addr; > -#endif > -} > - > /* TranslationBlock invalidate API */ > void tb_phys_invalidate(TranslationBlock *tb, tb_page_addr_t page_addr); > void tb_invalidate_phys_range(tb_page_addr_t start, tb_page_addr_t last); > diff --git a/include/exec/translation-block.h b/include/exec/translation-block.h > index 3c69bc71a9..8b8e730561 100644 > --- a/include/exec/translation-block.h > +++ b/include/exec/translation-block.h > @@ -13,6 +13,7 @@ > #include "exec/vaddr.h" > #ifdef CONFIG_USER_ONLY > #include "qemu/interval-tree.h" > +#include "exec/target_page.h" > #endif > > /* > @@ -157,4 +158,53 @@ static inline uint32_t tb_cflags(const TranslationBlock *tb) > bool tcg_cflags_has(CPUState *cpu, uint32_t flags); > void tcg_cflags_set(CPUState *cpu, uint32_t flags); > > +static inline tb_page_addr_t tb_page_addr0(const TranslationBlock *tb) > +{ > +#ifdef CONFIG_USER_ONLY > + return tb->itree.start; > +#else > + return tb->page_addr[0]; > +#endif > +} > + > +static inline tb_page_addr_t tb_page_addr1(const TranslationBlock *tb) > +{ > +#ifdef CONFIG_USER_ONLY > + tb_page_addr_t next = tb->itree.last & TARGET_PAGE_MASK; > + return next == (tb->itree.start & TARGET_PAGE_MASK) ? -1 : next; > +#else > + return tb->page_addr[1]; > +#endif > +} > + > +static inline void tb_set_page_addr0(TranslationBlock *tb, > + tb_page_addr_t addr) > +{ > +#ifdef CONFIG_USER_ONLY > + tb->itree.start = addr; > + /* > + * To begin, we record an interval of one byte. When the translation > + * loop encounters a second page, the interval will be extended to > + * include the first byte of the second page, which is sufficient to > + * allow tb_page_addr1() above to work properly. The final corrected > + * interval will be set by tb_page_add() from tb->size before the > + * node is added to the interval tree. > + */ > + tb->itree.last = addr; > +#else > + tb->page_addr[0] = addr; > +#endif > +} > + > +static inline void tb_set_page_addr1(TranslationBlock *tb, > + tb_page_addr_t addr) > +{ > +#ifdef CONFIG_USER_ONLY > + /* Extend the interval to the first byte of the second page. See above. */ > + tb->itree.last = addr; > +#else > + tb->page_addr[1] = addr; > +#endif > +} > + > #endif /* EXEC_TRANSLATION_BLOCK_H */ Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h index 19b0eda44a..fcad3446fe 100644 --- a/include/exec/exec-all.h +++ b/include/exec/exec-all.h @@ -123,55 +123,6 @@ int probe_access_full_mmu(CPUArchState *env, vaddr addr, int size, #endif /* !CONFIG_USER_ONLY */ #endif /* CONFIG_TCG */ -static inline tb_page_addr_t tb_page_addr0(const TranslationBlock *tb) -{ -#ifdef CONFIG_USER_ONLY - return tb->itree.start; -#else - return tb->page_addr[0]; -#endif -} - -static inline tb_page_addr_t tb_page_addr1(const TranslationBlock *tb) -{ -#ifdef CONFIG_USER_ONLY - tb_page_addr_t next = tb->itree.last & TARGET_PAGE_MASK; - return next == (tb->itree.start & TARGET_PAGE_MASK) ? -1 : next; -#else - return tb->page_addr[1]; -#endif -} - -static inline void tb_set_page_addr0(TranslationBlock *tb, - tb_page_addr_t addr) -{ -#ifdef CONFIG_USER_ONLY - tb->itree.start = addr; - /* - * To begin, we record an interval of one byte. When the translation - * loop encounters a second page, the interval will be extended to - * include the first byte of the second page, which is sufficient to - * allow tb_page_addr1() above to work properly. The final corrected - * interval will be set by tb_page_add() from tb->size before the - * node is added to the interval tree. - */ - tb->itree.last = addr; -#else - tb->page_addr[0] = addr; -#endif -} - -static inline void tb_set_page_addr1(TranslationBlock *tb, - tb_page_addr_t addr) -{ -#ifdef CONFIG_USER_ONLY - /* Extend the interval to the first byte of the second page. See above. */ - tb->itree.last = addr; -#else - tb->page_addr[1] = addr; -#endif -} - /* TranslationBlock invalidate API */ void tb_phys_invalidate(TranslationBlock *tb, tb_page_addr_t page_addr); void tb_invalidate_phys_range(tb_page_addr_t start, tb_page_addr_t last); diff --git a/include/exec/translation-block.h b/include/exec/translation-block.h index 3c69bc71a9..8b8e730561 100644 --- a/include/exec/translation-block.h +++ b/include/exec/translation-block.h @@ -13,6 +13,7 @@ #include "exec/vaddr.h" #ifdef CONFIG_USER_ONLY #include "qemu/interval-tree.h" +#include "exec/target_page.h" #endif /* @@ -157,4 +158,53 @@ static inline uint32_t tb_cflags(const TranslationBlock *tb) bool tcg_cflags_has(CPUState *cpu, uint32_t flags); void tcg_cflags_set(CPUState *cpu, uint32_t flags); +static inline tb_page_addr_t tb_page_addr0(const TranslationBlock *tb) +{ +#ifdef CONFIG_USER_ONLY + return tb->itree.start; +#else + return tb->page_addr[0]; +#endif +} + +static inline tb_page_addr_t tb_page_addr1(const TranslationBlock *tb) +{ +#ifdef CONFIG_USER_ONLY + tb_page_addr_t next = tb->itree.last & TARGET_PAGE_MASK; + return next == (tb->itree.start & TARGET_PAGE_MASK) ? -1 : next; +#else + return tb->page_addr[1]; +#endif +} + +static inline void tb_set_page_addr0(TranslationBlock *tb, + tb_page_addr_t addr) +{ +#ifdef CONFIG_USER_ONLY + tb->itree.start = addr; + /* + * To begin, we record an interval of one byte. When the translation + * loop encounters a second page, the interval will be extended to + * include the first byte of the second page, which is sufficient to + * allow tb_page_addr1() above to work properly. The final corrected + * interval will be set by tb_page_add() from tb->size before the + * node is added to the interval tree. + */ + tb->itree.last = addr; +#else + tb->page_addr[0] = addr; +#endif +} + +static inline void tb_set_page_addr1(TranslationBlock *tb, + tb_page_addr_t addr) +{ +#ifdef CONFIG_USER_ONLY + /* Extend the interval to the first byte of the second page. See above. */ + tb->itree.last = addr; +#else + tb->page_addr[1] = addr; +#endif +} + #endif /* EXEC_TRANSLATION_BLOCK_H */
Move the accessor functions for TranslationBlock into the header related to the structure. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- include/exec/exec-all.h | 49 ------------------------------- include/exec/translation-block.h | 50 ++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 49 deletions(-)