From patchwork Tue Jun 20 00:04:05 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 9798235 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 643A3600C5 for ; Tue, 20 Jun 2017 00:10:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 57ACA26E56 for ; Tue, 20 Jun 2017 00:10:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4C8B626E46; Tue, 20 Jun 2017 00:10:56 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 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.wl.linuxfoundation.org (Postfix) with ESMTPS id 39C5E26E46 for ; Tue, 20 Jun 2017 00:10:54 +0000 (UTC) Received: from localhost ([::1]:44886 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dN6kv-0000Ht-Qg for patchwork-qemu-devel@patchwork.kernel.org; Mon, 19 Jun 2017 20:10:53 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33786) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dN6ej-0003cq-Jm for qemu-devel@nongnu.org; Mon, 19 Jun 2017 20:04:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dN6eh-00020k-J6 for qemu-devel@nongnu.org; Mon, 19 Jun 2017 20:04:29 -0400 Received: from mail-pg0-x241.google.com ([2607:f8b0:400e:c05::241]:33206) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dN6eh-00020e-Ct for qemu-devel@nongnu.org; Mon, 19 Jun 2017 20:04:27 -0400 Received: by mail-pg0-x241.google.com with SMTP id u62so12966995pgb.0 for ; Mon, 19 Jun 2017 17:04:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=aZqtjU1eQCjmQlVEF2GDgWra87QILfoEmcbjMv+ovCU=; b=iebPJY2SLM4q1ENBXclZTf6FgwqlnASTtWLFQNxfSQ+vxYTWqPihQBq7FP651HJ4OC DiUaSPN8E1En6nWc9W5OEczgBCQFhO79S632+ObTD4/QOoywo5fJT6N2sAF3lynUE0mQ ascA3FnCEox/FCkocks4L1THagGE4w+jPafuL9YBs+ICSBoO9/vLjhhJudm1U9CCOfZB 7n0GqYdBGBBlCz9v4BCYs84mkg0xdOht1WgtrEtHwmSEBG6xhOt32JwiAgYMAaWlRw/+ dMXzC4XyytMbDdkBXTy/zyDdyVOM1x77iQzPsRRjlx2S5OuBkpp0PlteQag4kem46LQ1 b0Cw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=aZqtjU1eQCjmQlVEF2GDgWra87QILfoEmcbjMv+ovCU=; b=uiLeBPNmGZLSoLF2fHcZ/VZHgfnAFikVmwcHZTIoLnxC+9RSvB1Wk8pyhRPMQiGiyK VLjItOfYI8/k+G6OMT1n2mgSmd0epNwfkY6kU7x2QNR7yOab4zXleALsll5a2kPshDZf XZa+qOxoXTMnQIWZ8u4jfMgpaGvrDO2STLp2n8KADnrOFSHMPTJbacLNeEiBXbhPvFPf N8Mhp7OssoXDRXys+aBWISd7ISzHjb9SOqJLK0213kj3dHLgo6Rq5H5/iAvBVb+4bvs2 /swCarMo6ZdtjnZqUNJ0BqMdh12fmugbtthmA/qXfHxGeZlm5wi2Qqq2vixfIPtICzcU nHug== X-Gm-Message-State: AKS2vOyQzT3uBL8avYjJMNQriXyfN8zqC8AOCPNWTJTtG+arurS0kLhe 8++o/7J08cZthNaiTeU= X-Received: by 10.98.48.5 with SMTP id w5mr27592463pfw.44.1497917066353; Mon, 19 Jun 2017 17:04:26 -0700 (PDT) Received: from bigtime.twiddle.net (97-113-165-157.tukw.qwest.net. [97.113.165.157]) by smtp.gmail.com with ESMTPSA id o8sm23064937pgn.52.2017.06.19.17.04.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 19 Jun 2017 17:04:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Mon, 19 Jun 2017 17:04:05 -0700 Message-Id: <20170620000405.3391-19-rth@twiddle.net> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170620000405.3391-1-rth@twiddle.net> References: <20170620000405.3391-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c05::241 Subject: [Qemu-devel] [PATCH v3 18/18] target/s390x: Clean up TB flag bits X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, aurelien@aurel32.net Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP Most of the PSW bits that were being copied into TB->flags are not relevant to translation. Removing those that are unnecessary reduces the amount of translation required. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Aurelien Jarno --- target/s390x/cpu.h | 24 +++++++++--------------- target/s390x/translate.c | 16 ++++++++-------- 2 files changed, 17 insertions(+), 23 deletions(-) diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h index 5b94ace..9faca04 100644 --- a/target/s390x/cpu.h +++ b/target/s390x/cpu.h @@ -346,19 +346,14 @@ void s390x_cpu_debug_excp_handler(CPUState *cs); /* tb flags */ -#define FLAG_MASK_PER (PSW_MASK_PER >> 32) -#define FLAG_MASK_DAT (PSW_MASK_DAT >> 32) -#define FLAG_MASK_IO (PSW_MASK_IO >> 32) -#define FLAG_MASK_EXT (PSW_MASK_EXT >> 32) -#define FLAG_MASK_KEY (PSW_MASK_KEY >> 32) -#define FLAG_MASK_MCHECK (PSW_MASK_MCHECK >> 32) -#define FLAG_MASK_WAIT (PSW_MASK_WAIT >> 32) -#define FLAG_MASK_PSTATE (PSW_MASK_PSTATE >> 32) -#define FLAG_MASK_ASC (PSW_MASK_ASC >> 32) -#define FLAG_MASK_CC (PSW_MASK_CC >> 32) -#define FLAG_MASK_PM (PSW_MASK_PM >> 32) -#define FLAG_MASK_64 (PSW_MASK_64 >> 32) -#define FLAG_MASK_32 0x00001000 +#define FLAG_MASK_PSW_SHIFT 31 +#define FLAG_MASK_PER (PSW_MASK_PER >> FLAG_MASK_PSW_SHIFT) +#define FLAG_MASK_PSTATE (PSW_MASK_PSTATE >> FLAG_MASK_PSW_SHIFT) +#define FLAG_MASK_ASC (PSW_MASK_ASC >> FLAG_MASK_PSW_SHIFT) +#define FLAG_MASK_64 (PSW_MASK_64 >> FLAG_MASK_PSW_SHIFT) +#define FLAG_MASK_32 (PSW_MASK_32 >> FLAG_MASK_PSW_SHIFT) +#define FLAG_MASK_PSW (FLAG_MASK_PER | FLAG_MASK_PSTATE \ + | FLAG_MASK_ASC | FLAG_MASK_64 | FLAG_MASK_32) /* Control register 0 bits */ #define CR0_LOWPROT 0x0000000010000000ULL @@ -416,8 +411,7 @@ static inline void cpu_get_tb_cpu_state(CPUS390XState* env, target_ulong *pc, { *pc = env->psw.addr; *cs_base = env->ex_value; - *flags = ((env->psw.mask >> 32) & ~FLAG_MASK_CC) | - ((env->psw.mask & PSW_MASK_32) ? FLAG_MASK_32 : 0); + *flags = (env->psw.mask >> FLAG_MASK_PSW_SHIFT) & FLAG_MASK_PSW; } #define MAX_ILEN 6 diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 9893551..bee163f 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -323,11 +323,11 @@ static inline uint64_t ld_code4(CPUS390XState *env, uint64_t pc) static int get_mem_index(DisasContext *s) { switch (s->tb->flags & FLAG_MASK_ASC) { - case PSW_ASC_PRIMARY >> 32: + case PSW_ASC_PRIMARY >> FLAG_MASK_PSW_SHIFT: return 0; - case PSW_ASC_SECONDARY >> 32: + case PSW_ASC_SECONDARY >> FLAG_MASK_PSW_SHIFT: return 1; - case PSW_ASC_HOME >> 32: + case PSW_ASC_HOME >> FLAG_MASK_PSW_SHIFT: return 2; default: tcg_abort(); @@ -387,7 +387,7 @@ static inline void gen_trap(DisasContext *s) #ifndef CONFIG_USER_ONLY static void check_privileged(DisasContext *s) { - if (s->tb->flags & (PSW_MASK_PSTATE >> 32)) { + if (s->tb->flags & FLAG_MASK_PSTATE) { gen_program_exception(s, PGM_PRIVILEGED); } } @@ -2985,20 +2985,20 @@ static ExitStatus op_mov2e(DisasContext *s, DisasOps *o) o->g_in2 = false; switch (s->tb->flags & FLAG_MASK_ASC) { - case PSW_ASC_PRIMARY >> 32: + case PSW_ASC_PRIMARY >> FLAG_MASK_PSW_SHIFT: tcg_gen_movi_i64(ar1, 0); break; - case PSW_ASC_ACCREG >> 32: + case PSW_ASC_ACCREG >> FLAG_MASK_PSW_SHIFT: tcg_gen_movi_i64(ar1, 1); break; - case PSW_ASC_SECONDARY >> 32: + case PSW_ASC_SECONDARY >> FLAG_MASK_PSW_SHIFT: if (b2) { tcg_gen_ld32u_i64(ar1, cpu_env, offsetof(CPUS390XState, aregs[b2])); } else { tcg_gen_movi_i64(ar1, 0); } break; - case PSW_ASC_HOME >> 32: + case PSW_ASC_HOME >> FLAG_MASK_PSW_SHIFT: tcg_gen_movi_i64(ar1, 2); break; }