diff options
| author | Richard Henderson <richard.henderson@linaro.org> | 2025-04-05 09:36:27 -0700 |
|---|---|---|
| committer | Richard Henderson <richard.henderson@linaro.org> | 2025-04-30 12:45:05 -0700 |
| commit | dfda9281266d57899dc03fc613a25587babd67aa (patch) | |
| tree | df231d01b463dafcf5542459bc28b6181c948690 /accel/tcg/internal-common.h | |
| parent | 2e8fe327eb67f90822a3e8a8fb6c914dd573f299 (diff) | |
| download | focaccia-qemu-dfda9281266d57899dc03fc613a25587babd67aa.tar.gz focaccia-qemu-dfda9281266d57899dc03fc613a25587babd67aa.zip | |
accel/tcg: Merge internal-target.h into internal-common.h
There's nothing left in internal-target.h that is target specific. Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'accel/tcg/internal-common.h')
| -rw-r--r-- | accel/tcg/internal-common.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/accel/tcg/internal-common.h b/accel/tcg/internal-common.h index 2f00560d10..573e8438c3 100644 --- a/accel/tcg/internal-common.h +++ b/accel/tcg/internal-common.h @@ -11,6 +11,7 @@ #include "exec/cpu-common.h" #include "exec/translation-block.h" +#include "exec/mmap-lock.h" extern int64_t max_delay; extern int64_t max_advance; @@ -108,4 +109,32 @@ static inline tb_page_addr_t get_page_addr_code(CPUArchState *env, return get_page_addr_code_hostp(env, addr, NULL); } +/* + * Access to the various translations structures need to be serialised + * via locks for consistency. In user-mode emulation access to the + * memory related structures are protected with mmap_lock. + * In !user-mode we use per-page locks. + */ +#ifdef CONFIG_USER_ONLY +#define assert_memory_lock() tcg_debug_assert(have_mmap_lock()) +#else +#define assert_memory_lock() +#endif + +#if defined(CONFIG_SOFTMMU) && defined(CONFIG_DEBUG_TCG) +void assert_no_pages_locked(void); +#else +static inline void assert_no_pages_locked(void) { } +#endif + +#ifdef CONFIG_USER_ONLY +static inline void page_table_config_init(void) { } +#else +void page_table_config_init(void); +#endif + +#ifndef CONFIG_USER_ONLY +G_NORETURN void cpu_io_recompile(CPUState *cpu, uintptr_t retaddr); +#endif /* CONFIG_USER_ONLY */ + #endif |