From patchwork Tue Feb 9 17:43:51 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 8264481 Return-Path: X-Original-To: patchwork-qemu-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 6300FBEEE5 for ; Tue, 9 Feb 2016 17:49:09 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id B1C60201EF for ; Tue, 9 Feb 2016 17:49:08 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id F2681201B4 for ; Tue, 9 Feb 2016 17:49:07 +0000 (UTC) Received: from localhost ([::1]:58874 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aTCPT-0005qq-Bo for patchwork-qemu-devel@patchwork.kernel.org; Tue, 09 Feb 2016 12:49:07 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33882) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aTCLm-00087A-TI for qemu-devel@nongnu.org; Tue, 09 Feb 2016 12:45:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aTCLl-0000vE-Tj for qemu-devel@nongnu.org; Tue, 09 Feb 2016 12:45:18 -0500 Received: from mail-pa0-x244.google.com ([2607:f8b0:400e:c03::244]:33142) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aTCLl-0000v7-Ma for qemu-devel@nongnu.org; Tue, 09 Feb 2016 12:45:17 -0500 Received: by mail-pa0-x244.google.com with SMTP id gc2so537018pab.0 for ; Tue, 09 Feb 2016 09:45:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=voWfdgs/GcEE3+MiNT9rMJWQVm6q9s2SZ2IP02eM6/0=; b=IYjIYs9gSBd1msNWtRWuEyMXdgdYpOf7u4Jx5QZErtYGYOokbDS0oQbFDRT3kXq4cL jEr6NiefXQb1TtvFxH/8DWnC25ZggqA5Zy8gLJInqCgFn6t2cg4j6LhZb67dLKUFH0JV uouIjw4c4VPoYcehglrB0+ULS224xQXVwdYGGmrSBDp9FnHIwYw6TTk6SYvFlrQMHuEj BkeGrp2+5HTTzojFEqkd8G2U1i+sr1ux8VG8PMvANgcqH3FvGp6DS4xesvFDq/AKHaTA 0g8jUvClb7qkYXOzpSZ5E/R5apZPXNpVpRRFNEuxxf7gebhdUTz9zIrP1TlEoTd72QmP qikw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=voWfdgs/GcEE3+MiNT9rMJWQVm6q9s2SZ2IP02eM6/0=; b=VltytEEFu5FT274q5vqC8eM4zGtpG2RXcI9gYE8KpaFTIverqfsKHCB4gq2tpkWyVs GGqxlToqCcWUQadgySCYcawW3yOc+SpNDU11ssAb6LLf1W7Gv5P/qQm+fcV7lviUKl1E CPkqo4HTM+y+e9smPdCP5MntNU1LEgpfhV6Vey6/cgXotBlocPgSNQnOnRTLGFnADq0Z wBqowa4/tSNfEiA1W57K963kTcRjO1jm7IpZzMYLmmET3quicf9NFimM6eBHxC//oQfn O01k+Gmp8KUnDuLBS+kc4t+Mh52cMhoU2nFC0DWt6/heFDP54MB8zBiZC2Db0R5sKReo MUtA== X-Gm-Message-State: AG10YORgSn0om4+CHWfrAh+wjFUfPf6NYmt20J7HUtvH0ewn+y+3cMOa2ZVgQPNRxJLNAg== X-Received: by 10.66.158.129 with SMTP id wu1mr52397647pab.146.1455039917071; Tue, 09 Feb 2016 09:45:17 -0800 (PST) Received: from bigtime.com (alanje.lnk.telstra.net. [120.151.179.201]) by smtp.gmail.com with ESMTPSA id pu3sm52144740pac.9.2016.02.09.09.45.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 09 Feb 2016 09:45:16 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 10 Feb 2016 04:43:51 +1100 Message-Id: <1455039832-9133-16-git-send-email-rth@twiddle.net> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1455039832-9133-1-git-send-email-rth@twiddle.net> References: <1455039832-9133-1-git-send-email-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c03::244 Cc: pbonzini@redhat.com Subject: [Qemu-devel] [PATCH 15/16] target-i386: Enable CR4/XCR0 features for user-mode X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Signed-off-by: Richard Henderson --- target-i386/cpu.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/target-i386/cpu.c b/target-i386/cpu.c index 4682166..063c8fb 100644 --- a/target-i386/cpu.c +++ b/target-i386/cpu.c @@ -2643,6 +2643,8 @@ static void x86_cpu_reset(CPUState *s) X86CPU *cpu = X86_CPU(s); X86CPUClass *xcc = X86_CPU_GET_CLASS(cpu); CPUX86State *env = &cpu->env; + target_ulong cr4; + uint64_t xcr0; int i; xcc->parent_reset(s); @@ -2702,7 +2704,8 @@ static void x86_cpu_reset(CPUState *s) cpu_set_fpuc(env, 0x37f); env->mxcsr = 0x1f80; - env->xstate_bv = XSTATE_FP | XSTATE_SSE; + /* All units are in INIT state. */ + env->xstate_bv = 0; env->pat = 0x0007040600070406ULL; env->msr_ia32_misc_enable = MSR_IA32_MISC_ENABLE_DEFAULT; @@ -2713,7 +2716,24 @@ static void x86_cpu_reset(CPUState *s) cpu_breakpoint_remove_all(s, BP_CPU); cpu_watchpoint_remove_all(s, BP_CPU); - env->xcr0 = 1; + cr4 = 0; + xcr0 = XSTATE_FP; + +#ifdef CONFIG_USER_ONLY + /* Enable all the features for user-mode. */ + if (env->features[FEAT_1_EDX] & CPUID_SSE) { + xcr0 |= XSTATE_SSE; + } + if (env->features[FEAT_7_0_EBX] & CPUID_7_0_EBX_MPX) { + xcr0 |= XSTATE_BNDREGS | XSTATE_BNDCSR; + } + if (env->features[FEAT_1_ECX] & CPUID_EXT_XSAVE) { + cr4 |= CR4_OSFXSR_MASK | CR4_OSXSAVE_MASK; + } +#endif + + env->xcr0 = xcr0; + cpu_x86_update_cr4(env, cr4); /* * SDM 11.11.5 requires: