diff options
| author | Philippe Mathieu-Daudé <philmd@linaro.org> | 2024-12-12 16:20:12 +0100 |
|---|---|---|
| committer | Philippe Mathieu-Daudé <philmd@linaro.org> | 2024-12-20 17:44:57 +0100 |
| commit | 3e6bfabfbb12fbc19b92b03b72b948dc4f40d144 (patch) | |
| tree | 8973c6ffbbb2a74d34a2dbd7ad42c94c65de8c63 /accel/tcg/tb-internal.h | |
| parent | e07788a98909431ea32a7e5baf1e90b246b5b1cd (diff) | |
| download | focaccia-qemu-3e6bfabfbb12fbc19b92b03b72b948dc4f40d144.tar.gz focaccia-qemu-3e6bfabfbb12fbc19b92b03b72b948dc4f40d144.zip | |
accel/tcg: Move TranslationBlock declarations to 'tb-internal.h'
Move declarations related to TranslationBlock out of the generic "internal-target.h" to "tb-internal.h". Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20241212185341.2857-11-philmd@linaro.org>
Diffstat (limited to 'accel/tcg/tb-internal.h')
| -rw-r--r-- | accel/tcg/tb-internal.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/accel/tcg/tb-internal.h b/accel/tcg/tb-internal.h index 8313f90fd7..90be61f296 100644 --- a/accel/tcg/tb-internal.h +++ b/accel/tcg/tb-internal.h @@ -9,6 +9,45 @@ #ifndef ACCEL_TCG_TB_INTERNAL_TARGET_H #define ACCEL_TCG_TB_INTERNAL_TARGET_H +#include "exec/cpu-all.h" +#include "exec/exec-all.h" +#include "exec/translation-block.h" + +#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); +} + +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 *); +#endif + +#ifdef CONFIG_SOFTMMU +void tb_invalidate_phys_range_fast(ram_addr_t ram_addr, + unsigned size, + uintptr_t retaddr); +#endif /* CONFIG_SOFTMMU */ + +bool tb_invalidate_phys_page_unwind(tb_page_addr_t addr, uintptr_t pc); + void tb_check_watchpoint(CPUState *cpu, uintptr_t retaddr); #endif |