diff options
author | Alexander Graf <agraf@suse.de> | 2012-05-29 15:30:01 +0200 |
---|---|---|
committer | Yury Usishchev <y.usishchev@samsung.com> | 2014-12-10 13:48:35 +0300 |
commit | 19b1e30663fcae89a7fb0d38e863a15c667ea0ec (patch) | |
tree | f9d99def9d7e91edc40fed35e83c514f26ff9365 | |
parent | e771036f20046354b296c5cd28eb594ae1698f0b (diff) | |
download | qemu-19b1e30663fcae89a7fb0d38e863a15c667ea0ec.tar.gz qemu-19b1e30663fcae89a7fb0d38e863a15c667ea0ec.tar.bz2 qemu-19b1e30663fcae89a7fb0d38e863a15c667ea0ec.zip |
target-arm: linux-user: no tb_flush on reset
When running automoc4 as linux-user guest program, it segfaults right after
it creates a thread. Bisecting pointed to commit a84fac1426 which introduces
tb_flush on reset.
So something in our thread creation is broken. But for now, let's revert the
change to at least get a working build again.
[AF: Rebased, fixed typo]
-rw-r--r-- | target-arm/cpu.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/target-arm/cpu.c b/target-arm/cpu.c index 5ce7350ce..345a61cb0 100644 --- a/target-arm/cpu.c +++ b/target-arm/cpu.c @@ -181,6 +181,15 @@ static void arm_cpu_reset(CPUState *s) set_float_detect_tininess(float_tininess_before_rounding, &env->vfp.standard_fp_status); tlb_flush(s, 1); + /* Reset is a state change for some CPUARMState fields which we + * bake assumptions about into translated code, so we need to + * tb_flush(). + */ +#if !defined(CONFIG_USER_ONLY) + /* XXX hack alert! automoc4 segfaults after spawning a new thread with + * this flush enabled */ + tb_flush(env); +#endif #ifndef CONFIG_USER_ONLY if (kvm_enabled()) { |