Message ID | 20250328200459.483089-4-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: > 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>
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;
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(-)