linux-user: Add i386 TLS setter
We can easily set the TLS on i386. Add code to do so. Signed-off-by: Alexander Graf <agraf@suse.de> [PMM: also remove "target_nptl=no" line from configure, for consistency with other patches in this series] Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
This commit is contained in:
parent
4ce6243dc6
commit
bc22eb447c
1
configure
vendored
1
configure
vendored
@ -4190,7 +4190,6 @@ TARGET_ABI_DIR=""
|
||||
|
||||
case "$target_name" in
|
||||
i386)
|
||||
target_nptl="no"
|
||||
;;
|
||||
x86_64)
|
||||
TARGET_BASE_ARCH=i386
|
||||
|
@ -28,6 +28,14 @@ static inline void cpu_clone_regs(CPUX86State *env, target_ulong newsp)
|
||||
env->regs[R_EAX] = 0;
|
||||
}
|
||||
|
||||
/* TODO: need to implement cpu_set_tls() */
|
||||
#if defined(TARGET_ABI32)
|
||||
abi_long do_set_thread_area(CPUX86State *env, abi_ulong ptr);
|
||||
|
||||
#endif
|
||||
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);
|
||||
}
|
||||
#endif /* defined(TARGET_ABI32) */
|
||||
|
||||
#endif /* !defined(TARGET_CPU_H) */
|
||||
|
@ -4055,7 +4055,7 @@ static abi_long do_modify_ldt(CPUX86State *env, int func, abi_ulong ptr,
|
||||
}
|
||||
|
||||
#if defined(TARGET_I386) && defined(TARGET_ABI32)
|
||||
static abi_long do_set_thread_area(CPUX86State *env, abi_ulong ptr)
|
||||
abi_long do_set_thread_area(CPUX86State *env, abi_ulong ptr)
|
||||
{
|
||||
uint64_t *gdt_table = g2h(env->gdt.base);
|
||||
struct target_modify_ldt_ldt_s ldt_info;
|
||||
|
Loading…
Reference in New Issue
Block a user