mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-23 19:49:43 +00:00
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:
parent
6940fab84b
commit
756920876f
@ -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)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user