Search
j0ke.net Open Build Service
>
Projects
>
virtualization
:
Qemu
>
qemu
> qemu-svn-i386-nptl.patch
Sign Up
|
Log In
Username
Password
Cancel
Overview
Repositories
Revisions
Requests
Users
Advanced
Attributes
Meta
File qemu-svn-i386-nptl.patch of Package qemu
Index: linux-user/syscall.c ================================================================================ --- configure +++ configure @@ -1610,6 +1610,7 @@ echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak echo "#define CONFIG_KVM 1" >> $config_h fi + target_nptl="yes" ;; x86_64) echo "TARGET_ARCH=x86_64" >> $config_mak --- linux-user/syscall.c +++ linux-user/syscall.c @@ -3175,8 +3175,14 @@ flags &= ~CLONE_NPTL_FLAGS2; /* TODO: Implement CLONE_CHILD_CLEARTID. */ - if (nptl_flags & CLONE_SETTLS) + if (nptl_flags & CLONE_SETTLS) { +#if defined(TARGET_I386) && defined(TARGET_ABI32) + do_set_thread_area(new_env, newtls); + cpu_x86_load_seg(new_env, R_GS, new_env->segs[R_GS].selector); +#else cpu_set_tls (new_env, newtls); +#endif + } /* Grab a mutex so that thread setup appears atomic. */ pthread_mutex_lock(&clone_lock); @@ -3247,8 +3253,14 @@ if (flags & CLONE_PARENT_SETTID) put_user_u32(gettid(), parent_tidptr); ts = (TaskState *)env->opaque; - if (flags & CLONE_SETTLS) + if (flags & CLONE_SETTLS) { +#if defined(TARGET_I386) && defined(TARGET_ABI32) + do_set_thread_area(env, newtls); + cpu_x86_load_seg(env, R_GS, env->segs[R_GS].selector); +#else cpu_set_tls (env, newtls); +#endif + } /* TODO: Implement CLONE_CHILD_CLEARTID. */ #endif } else {