diff mbox series

[1/9] include/exec: Move tb_{, set_}page_addr[01] to translation-block.h

Message ID 20250328200459.483089-2-richard.henderson@linaro.org
State New
Headers show
Series single-binary: Restrict scope of TARGET_PAGE_BITS_MIN | expand

Commit Message

Richard Henderson March 28, 2025, 8:04 p.m. UTC
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(-)

Comments

Pierrick Bouvier March 28, 2025, 8:16 p.m. UTC | #1
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 mbox series

Patch

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 */