tcg: comment on which functions have to be called with mmap_lock held

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2015-08-11 10:59:50 +02:00
parent 6940fab84b
commit 756920876f

View File

@ -171,11 +171,13 @@ void cpu_gen_init(void)
} }
/* return non zero if the very first instruction is invalid so that /* return non zero if the very first instruction is invalid so that
the virtual CPU can trigger an exception. * the virtual CPU can trigger an exception.
*
'*gen_code_size_ptr' contains the size of the generated code (host * '*gen_code_size_ptr' contains the size of the generated code (host
code). * code).
*/ *
* Called with mmap_lock held for user-mode emulation.
*/
int cpu_gen_code(CPUArchState *env, TranslationBlock *tb, int *gen_code_size_ptr) int cpu_gen_code(CPUArchState *env, TranslationBlock *tb, int *gen_code_size_ptr)
{ {
TCGContext *s = &tcg_ctx; TCGContext *s = &tcg_ctx;
@ -420,6 +422,9 @@ static void page_init(void)
#endif #endif
} }
/* If alloc=1:
* Called with mmap_lock held for user-mode emulation.
*/
static PageDesc *page_find_alloc(tb_page_addr_t index, int alloc) static PageDesc *page_find_alloc(tb_page_addr_t index, int alloc)
{ {
PageDesc *pd; PageDesc *pd;
@ -1029,6 +1034,7 @@ static void build_page_bitmap(PageDesc *p)
} }
} }
/* Called with mmap_lock held for user mode emulation. */
TranslationBlock *tb_gen_code(CPUState *cpu, TranslationBlock *tb_gen_code(CPUState *cpu,
target_ulong pc, target_ulong cs_base, target_ulong pc, target_ulong cs_base,
int flags, int cflags) int flags, int cflags)
@ -1076,6 +1082,8 @@ TranslationBlock *tb_gen_code(CPUState *cpu,
* 'is_cpu_write_access' should be true if called from a real cpu write * 'is_cpu_write_access' should be true if called from a real cpu write
* access: the virtual CPU will exit the current TB if code is modified inside * access: the virtual CPU will exit the current TB if code is modified inside
* this TB. * this TB.
*
* Called with mmap_lock held for user-mode emulation
*/ */
void tb_invalidate_phys_range(tb_page_addr_t start, tb_page_addr_t end) void tb_invalidate_phys_range(tb_page_addr_t start, tb_page_addr_t end)
{ {
@ -1092,6 +1100,8 @@ void tb_invalidate_phys_range(tb_page_addr_t start, tb_page_addr_t end)
* 'is_cpu_write_access' should be true if called from a real cpu write * 'is_cpu_write_access' should be true if called from a real cpu write
* access: the virtual CPU will exit the current TB if code is modified inside * access: the virtual CPU will exit the current TB if code is modified inside
* this TB. * this TB.
*
* Called with mmap_lock held for user-mode emulation
*/ */
void tb_invalidate_phys_page_range(tb_page_addr_t start, tb_page_addr_t end, void tb_invalidate_phys_page_range(tb_page_addr_t start, tb_page_addr_t end,
int is_cpu_write_access) int is_cpu_write_access)
@ -1240,6 +1250,7 @@ void tb_invalidate_phys_page_fast(tb_page_addr_t start, int len)
} }
#if !defined(CONFIG_SOFTMMU) #if !defined(CONFIG_SOFTMMU)
/* Called with mmap_lock held. */
static void tb_invalidate_phys_page(tb_page_addr_t addr, static void tb_invalidate_phys_page(tb_page_addr_t addr,
uintptr_t pc, void *puc, uintptr_t pc, void *puc,
bool locked) bool locked)
@ -1309,7 +1320,10 @@ static void tb_invalidate_phys_page(tb_page_addr_t addr,
} }
#endif #endif
/* add the tb in the target page and protect it if necessary */ /* add the tb in the target page and protect it if necessary
*
* Called with mmap_lock held for user-mode emulation.
*/
static inline void tb_alloc_page(TranslationBlock *tb, static inline void tb_alloc_page(TranslationBlock *tb,
unsigned int n, tb_page_addr_t page_addr) unsigned int n, tb_page_addr_t page_addr)
{ {
@ -1365,7 +1379,8 @@ static inline void tb_alloc_page(TranslationBlock *tb,
} }
/* add a new TB and link it to the physical page tables. phys_page2 is /* add a new TB and link it to the physical page tables. phys_page2 is
(-1) to indicate that only one page contains the TB. */ * (-1) to indicate that only one page contains the TB.
*/
static void tb_link_page(TranslationBlock *tb, tb_page_addr_t phys_pc, static void tb_link_page(TranslationBlock *tb, tb_page_addr_t phys_pc,
tb_page_addr_t phys_page2) tb_page_addr_t phys_page2)
{ {