mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-10 02:54:58 -06:00
replace spinlock by QemuMutex.
spinlock is only used in two cases: * cpu-exec.c: to protect TranslationBlock * mem_helper.c: for lock helper in target-i386 (which seems broken). It's a pthread_mutex_t in user-mode, so we can use QemuMutex directly, with an #ifdef. The #ifdef will be removed when multithreaded TCG will need the mutex as well. Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com> Message-Id: <1439220437-23957-5-git-send-email-fred.konrad@greensocs.com> Signed-off-by: Emilio G. Cota <cota@braap.org> [Merge Emilio G. Cota's patch to remove volatile. - Paolo] Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
d5f8d61390
commit
677ef6230b
8 changed files with 73 additions and 19 deletions
|
@ -1318,6 +1318,9 @@ static inline MemTxAttrs cpu_get_mem_attrs(CPUX86State *env)
|
|||
void cpu_set_mxcsr(CPUX86State *env, uint32_t val);
|
||||
void cpu_set_fpuc(CPUX86State *env, uint16_t val);
|
||||
|
||||
/* mem_helper.c */
|
||||
void helper_lock_init(void);
|
||||
|
||||
/* svm_helper.c */
|
||||
void cpu_svm_check_intercept_param(CPUX86State *env1, uint32_t type,
|
||||
uint64_t param);
|
||||
|
|
|
@ -23,18 +23,37 @@
|
|||
|
||||
/* broken thread support */
|
||||
|
||||
static spinlock_t global_cpu_lock = SPIN_LOCK_UNLOCKED;
|
||||
#if defined(CONFIG_USER_ONLY)
|
||||
QemuMutex global_cpu_lock;
|
||||
|
||||
void helper_lock(void)
|
||||
{
|
||||
spin_lock(&global_cpu_lock);
|
||||
qemu_mutex_lock(&global_cpu_lock);
|
||||
}
|
||||
|
||||
void helper_unlock(void)
|
||||
{
|
||||
spin_unlock(&global_cpu_lock);
|
||||
qemu_mutex_unlock(&global_cpu_lock);
|
||||
}
|
||||
|
||||
void helper_lock_init(void)
|
||||
{
|
||||
qemu_mutex_init(&global_cpu_lock);
|
||||
}
|
||||
#else
|
||||
void helper_lock(void)
|
||||
{
|
||||
}
|
||||
|
||||
void helper_unlock(void)
|
||||
{
|
||||
}
|
||||
|
||||
void helper_lock_init(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
void helper_cmpxchg8b(CPUX86State *env, target_ulong a0)
|
||||
{
|
||||
uint64_t d;
|
||||
|
|
|
@ -7899,6 +7899,8 @@ void optimize_flags_init(void)
|
|||
offsetof(CPUX86State, regs[i]),
|
||||
reg_names[i]);
|
||||
}
|
||||
|
||||
helper_lock_init();
|
||||
}
|
||||
|
||||
/* generate intermediate code in gen_opc_buf and gen_opparam_buf for
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue