From patchwork Tue Jul 16 17:44:58 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 18387 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-ve0-f197.google.com (mail-ve0-f197.google.com [209.85.128.197]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id EA2AA27748 for ; Tue, 16 Jul 2013 17:45:13 +0000 (UTC) Received: by mail-ve0-f197.google.com with SMTP id d10sf1300379vea.4 for ; Tue, 16 Jul 2013 10:45:13 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:x-beenthere:x-forwarded-to:x-forwarded-for :delivered-to:from:to:cc:subject:date:message-id:x-mailer :in-reply-to:references:x-gm-message-state:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :x-google-group-id:list-post:list-help:list-archive:list-unsubscribe; bh=5EzMnJuiWIjzXB+U3K7zbIfrEBdS6Lf+O+VZVk9oerY=; b=TfTp/3axH2Z26LkyjKqJsg8Q0K+lGV7Urjz82qM2K2UQG57ZEGQMcKgPbw69ZsIWmO jwJdtcUQiZvlzKnSMzVkgDJQueJWYbHGtP1Z1Nz1Nl7wnN+HuyS7boFbd18dhD9Wx+SX fyzZBDjgdR3rWx0CNCA1OwEAvAfn+nPqYmV0OUEPhAYqEl6NE5XxM4cpcpK3Vj0KN6n1 8VIYg8JdkB6fNVxx7C6oyVLKBaL5SjUXGaQ0IdDqjBuswdqlfgfT9PygV5RcPW4/kxhA 80bh9OmpwWRG8j7lsCi85JLHa/TZle4ZXPEe8K/GzXEes1mbFaRN0kTSlTtsU8W9udAd rZWw== X-Received: by 10.236.220.5 with SMTP id n5mr1289878yhp.21.1373996713378; Tue, 16 Jul 2013 10:45:13 -0700 (PDT) MIME-Version: 1.0 X-BeenThere: patchwork-forward@linaro.org Received: by 10.49.25.164 with SMTP id d4ls289585qeg.34.gmail; Tue, 16 Jul 2013 10:45:13 -0700 (PDT) X-Received: by 10.58.226.199 with SMTP id ru7mr765346vec.68.1373996713222; Tue, 16 Jul 2013 10:45:13 -0700 (PDT) Received: from mail-vc0-f176.google.com (mail-vc0-f176.google.com [209.85.220.176]) by mx.google.com with ESMTPS id zw14si449213veb.140.2013.07.16.10.45.13 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 16 Jul 2013 10:45:13 -0700 (PDT) Received-SPF: neutral (google.com: 209.85.220.176 is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) client-ip=209.85.220.176; Received: by mail-vc0-f176.google.com with SMTP id ha12so659171vcb.21 for ; Tue, 16 Jul 2013 10:45:13 -0700 (PDT) X-Received: by 10.220.18.133 with SMTP id w5mr791581vca.8.1373996713135; Tue, 16 Jul 2013 10:45:13 -0700 (PDT) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patches@linaro.org Received: by 10.220.149.77 with SMTP id s13csp131946vcv; Tue, 16 Jul 2013 10:45:12 -0700 (PDT) X-Received: by 10.14.7.2 with SMTP id 2mr2526253eeo.145.1373996708361; Tue, 16 Jul 2013 10:45:08 -0700 (PDT) Received: from mnementh.archaic.org.uk (1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.1.0.0.b.8.0.1.0.0.2.ip6.arpa. [2001:8b0:1d0::1]) by mx.google.com with ESMTPS id a48si2220873eep.353.2013.07.16.10.45.07 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Tue, 16 Jul 2013 10:45:08 -0700 (PDT) Received-SPF: neutral (google.com: 2001:8b0:1d0::1 is neither permitted nor denied by best guess record for domain of pm215@archaic.org.uk) client-ip=2001:8b0:1d0::1; Received: from pm215 by mnementh.archaic.org.uk with local (Exim 4.80) (envelope-from ) id 1Uz9J8-0007dX-78; Tue, 16 Jul 2013 18:45:02 +0100 From: Peter Maydell To: qemu-devel@nongnu.org Cc: patches@linaro.org, Riku Voipio , Richard Henderson , Aurelien Jarno , Alexander Graf , Blue Swirl , Guan Xuetao , "Edgar E. Iglesias" , Jia Liu , Laurent Vivier Subject: [PATCH v3 11/13] linux-user: Add i386 TLS setter Date: Tue, 16 Jul 2013 18:44:58 +0100 Message-Id: <1373996700-29286-12-git-send-email-peter.maydell@linaro.org> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1373996700-29286-1-git-send-email-peter.maydell@linaro.org> References: <1373996700-29286-1-git-send-email-peter.maydell@linaro.org> X-Gm-Message-State: ALoCoQk4V+rZpto8GVJUCinRnvf6Lns+J35XFem++MZd5nMqAipYETNsrQdRDTwLToMA3D/fRZ6P X-Original-Sender: peter.maydell@linaro.org X-Original-Authentication-Results: mx.google.com; spf=neutral (google.com: 209.85.220.176 is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Precedence: list Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org List-ID: X-Google-Group-Id: 836684582541 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , From: Alexander Graf We can easily set the TLS on i386. Add code to do so. Signed-off-by: Alexander Graf [PMM: also remove "target_nptl=no" line from configure, for consistency with other patches in this series] Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson --- configure | 1 - linux-user/i386/target_cpu.h | 12 ++++++++++-- linux-user/syscall.c | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/configure b/configure index 67e6437..8059b2b 100755 --- a/configure +++ b/configure @@ -4183,7 +4183,6 @@ TARGET_ABI_DIR="" case "$target_name" in i386) - target_nptl="no" ;; x86_64) TARGET_BASE_ARCH=i386 diff --git a/linux-user/i386/target_cpu.h b/linux-user/i386/target_cpu.h index abcac79..1170d84 100644 --- a/linux-user/i386/target_cpu.h +++ b/linux-user/i386/target_cpu.h @@ -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) */ diff --git a/linux-user/syscall.c b/linux-user/syscall.c index b167d7f..452b89d 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -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;