Skip to content

Commit

Permalink
linux-user: Enable NPTL for x86-64
Browse files Browse the repository at this point in the history
Add x86-64 implementation of cpu_set_tls() (like the kernel, we
just have to call do_arch_prctl() to set FS); this allows us to
enable NPTL.

Signed-off-by: Peter Maydell <[email protected]>
Signed-off-by: Riku Voipio <[email protected]>
  • Loading branch information
pm215 authored and Riku Voipio committed Jul 22, 2013
1 parent bc22eb4 commit 2667e71
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 2 deletions.
1 change: 0 additions & 1 deletion configure
Original file line number Diff line number Diff line change
Expand Up @@ -4193,7 +4193,6 @@ case "$target_name" in
;;
x86_64)
TARGET_BASE_ARCH=i386
target_nptl="no"
;;
alpha)
;;
Expand Down
7 changes: 7 additions & 0 deletions linux-user/i386/target_cpu.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,13 @@ static inline void cpu_set_tls(CPUX86State *env, target_ulong newtls)
do_set_thread_area(env, newtls);
cpu_x86_load_seg(env, R_GS, env->segs[R_GS].selector);
}
#else
abi_long do_arch_prctl(CPUX86State *env, int code, abi_ulong addr);

static inline void cpu_set_tls(CPUX86State *env, target_ulong newtls)
{
do_arch_prctl(env, TARGET_ARCH_SET_FS, newtls);
}
#endif /* defined(TARGET_ABI32) */

#endif /* !defined(TARGET_CPU_H) */
2 changes: 1 addition & 1 deletion linux-user/syscall.c
Original file line number Diff line number Diff line change
Expand Up @@ -4189,7 +4189,7 @@ static abi_long do_get_thread_area(CPUX86State *env, abi_ulong ptr)
#endif /* TARGET_I386 && TARGET_ABI32 */

#ifndef TARGET_ABI32
static abi_long do_arch_prctl(CPUX86State *env, int code, abi_ulong addr)
abi_long do_arch_prctl(CPUX86State *env, int code, abi_ulong addr)
{
abi_long ret = 0;
abi_ulong val;
Expand Down

0 comments on commit 2667e71

Please sign in to comment.