On 3/28/25 13:04, Richard Henderson wrote:
> Merge the user-only page_protect function with the user-only
> implementation of tb_lock_page0. This avoids pulling
> page-protection.h into tb-internal.h.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> accel/tcg/tb-internal.h | 11 +++--------
> include/user/page-protection.h | 1 -
> accel/tcg/user-exec.c | 2 +-
> 3 files changed, 4 insertions(+), 10 deletions(-)
>
> diff --git a/accel/tcg/tb-internal.h b/accel/tcg/tb-internal.h
> index 68aa8d17f4..f7c2073e29 100644
> --- a/accel/tcg/tb-internal.h
> +++ b/accel/tcg/tb-internal.h
> @@ -51,28 +51,23 @@
>
> #endif /* CONFIG_SOFTMMU */
>
> +void tb_lock_page0(tb_page_addr_t);
> +
> #ifdef CONFIG_USER_ONLY
> -#include "user/page-protection.h"
> /*
> * For user-only, page_protect sets the page read-only.
> * Since most execution is already on read-only pages, and we'd need to
> * account for other TBs on the same page, defer undoing any page protection
> * until we receive the write fault.
> */
> -static inline void tb_lock_page0(tb_page_addr_t p0)
> -{
> - page_protect(p0);
> -}
> -
> static inline void tb_lock_page1(tb_page_addr_t p0, tb_page_addr_t p1)
> {
> - page_protect(p1);
> + tb_lock_page0(p1);
> }
>
> static inline void tb_unlock_page1(tb_page_addr_t p0, tb_page_addr_t p1) { }
> static inline void tb_unlock_pages(TranslationBlock *tb) { }
> #else
> -void tb_lock_page0(tb_page_addr_t);
> void tb_lock_page1(tb_page_addr_t, tb_page_addr_t);
> void tb_unlock_page1(tb_page_addr_t, tb_page_addr_t);
> void tb_unlock_pages(TranslationBlock *);
> diff --git a/include/user/page-protection.h b/include/user/page-protection.h
> index 51daa18648..d5c8748d49 100644
> --- a/include/user/page-protection.h
> +++ b/include/user/page-protection.h
> @@ -16,7 +16,6 @@
> #include "exec/target_long.h"
> #include "exec/translation-block.h"
>
> -void page_protect(tb_page_addr_t page_addr);
> int page_unprotect(tb_page_addr_t address, uintptr_t pc);
>
> int page_get_flags(target_ulong address);
> diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c
> index 667c5e0354..72a9809c2d 100644
> --- a/accel/tcg/user-exec.c
> +++ b/accel/tcg/user-exec.c
> @@ -657,7 +657,7 @@ target_ulong page_find_range_empty(target_ulong min, target_ulong max,
> }
> }
>
> -void page_protect(tb_page_addr_t address)
> +void tb_lock_page0(tb_page_addr_t address)
> {
> PageFlagsNode *p;
> target_ulong start, last;
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>