exec: make mmap_lock/mmap_unlock globally available
There is some iffy lock hierarchy going on in translate-all.c. To fix it, we need to take the mmap_lock in cpu-exec.c. Make the functions globally available. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
756920876f
commit
8fd19e6cfd
|
@ -211,8 +211,6 @@ abi_long target_mremap(abi_ulong old_addr, abi_ulong old_size,
|
||||||
abi_ulong new_addr);
|
abi_ulong new_addr);
|
||||||
int target_msync(abi_ulong start, abi_ulong len, int flags);
|
int target_msync(abi_ulong start, abi_ulong len, int flags);
|
||||||
extern unsigned long last_brk;
|
extern unsigned long last_brk;
|
||||||
void mmap_lock(void);
|
|
||||||
void mmap_unlock(void);
|
|
||||||
void cpu_list_lock(void);
|
void cpu_list_lock(void);
|
||||||
void cpu_list_unlock(void);
|
void cpu_list_unlock(void);
|
||||||
#if defined(CONFIG_USE_NPTL)
|
#if defined(CONFIG_USE_NPTL)
|
||||||
|
|
|
@ -374,11 +374,17 @@ void tlb_fill(CPUState *cpu, target_ulong addr, int is_write, int mmu_idx,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_USER_ONLY)
|
#if defined(CONFIG_USER_ONLY)
|
||||||
|
void mmap_lock(void);
|
||||||
|
void mmap_unlock(void);
|
||||||
|
|
||||||
static inline tb_page_addr_t get_page_addr_code(CPUArchState *env1, target_ulong addr)
|
static inline tb_page_addr_t get_page_addr_code(CPUArchState *env1, target_ulong addr)
|
||||||
{
|
{
|
||||||
return addr;
|
return addr;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
static inline void mmap_lock(void) {}
|
||||||
|
static inline void mmap_unlock(void) {}
|
||||||
|
|
||||||
/* cputlb.c */
|
/* cputlb.c */
|
||||||
tb_page_addr_t get_page_addr_code(CPUArchState *env1, target_ulong addr);
|
tb_page_addr_t get_page_addr_code(CPUArchState *env1, target_ulong addr);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -261,8 +261,6 @@ abi_long target_mremap(abi_ulong old_addr, abi_ulong old_size,
|
||||||
int target_msync(abi_ulong start, abi_ulong len, int flags);
|
int target_msync(abi_ulong start, abi_ulong len, int flags);
|
||||||
extern unsigned long last_brk;
|
extern unsigned long last_brk;
|
||||||
extern abi_ulong mmap_next_start;
|
extern abi_ulong mmap_next_start;
|
||||||
void mmap_lock(void);
|
|
||||||
void mmap_unlock(void);
|
|
||||||
abi_ulong mmap_find_vma(abi_ulong, abi_ulong);
|
abi_ulong mmap_find_vma(abi_ulong, abi_ulong);
|
||||||
void cpu_list_lock(void);
|
void cpu_list_lock(void);
|
||||||
void cpu_list_unlock(void);
|
void cpu_list_unlock(void);
|
||||||
|
|
|
@ -466,11 +466,6 @@ static inline PageDesc *page_find(tb_page_addr_t index)
|
||||||
return page_find_alloc(index, 0);
|
return page_find_alloc(index, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !defined(CONFIG_USER_ONLY)
|
|
||||||
#define mmap_lock() do { } while (0)
|
|
||||||
#define mmap_unlock() do { } while (0)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(CONFIG_USER_ONLY)
|
#if defined(CONFIG_USER_ONLY)
|
||||||
/* Currently it is not recommended to allocate big chunks of data in
|
/* Currently it is not recommended to allocate big chunks of data in
|
||||||
user mode. It will change when a dedicated libc will be used. */
|
user mode. It will change when a dedicated libc will be used. */
|
||||||
|
|
Loading…
Reference in a new issue