From nobody Mon Feb 9 17:59:54 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1487021572293978.6250213735432; Mon, 13 Feb 2017 13:32:52 -0800 (PST) Received: from localhost ([::1]:59629 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cdOEs-0002TN-Vb for importer@patchew.org; Mon, 13 Feb 2017 16:32:51 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45327) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cdO8d-0004oD-0B for qemu-devel@nongnu.org; Mon, 13 Feb 2017 16:26:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cdO8Z-0001Oe-V2 for qemu-devel@nongnu.org; Mon, 13 Feb 2017 16:26:23 -0500 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:35016) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cdO8Z-0001OO-R2 for qemu-devel@nongnu.org; Mon, 13 Feb 2017 16:26:19 -0500 Received: by mail-qt0-x241.google.com with SMTP id s58so15047360qtc.2 for ; Mon, 13 Feb 2017 13:26:19 -0800 (PST) Received: from bigtime.twiddle.net.com ([1.129.9.91]) by smtp.gmail.com with ESMTPSA id h40sm8311480qtb.6.2017.02.13.13.26.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 13 Feb 2017 13:26:18 -0800 (PST) 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=NAeV/9Hl3z0Laf8P0LzXu0AtY3X7ErTyEMIoGp94IvM=; b=iMzkJbFQ43pxNco0v34YmQ2AvDOKVwmlPhF6BywOwWRkqMbqQYh5KN0vFYNZB+O6D1 ZoM2Aq79euhUEV6ybdfsbaWUbVSRHQ2Snri2Ag7mOhsitoAFB0XY9J71iy2KrvCh0x9o ifoWjB6patxOLv8DiSK49s/UyR7U3mu3oWCrFGwjEuIBOGV2AgMMA76OJf5pCGPNYgla l+aFWJbhWeMP+u5BVyogeyxLWlvdEfi8GLy+g92lxYKigOLEAhs/zkc1q84LK0VDxXCy LtKi+ex+MiuqkV2/nSq8RjnNBJcEwDOb/zFe9COTwPOTL1bu2WgL2Lz90cvtAwTIBUjP 637g== 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=NAeV/9Hl3z0Laf8P0LzXu0AtY3X7ErTyEMIoGp94IvM=; b=GpZJCkUDVdwvXNqzcmReY4MFasU2tjvf8yqXqsgNeir9myOSW59RLoBjdtAZ9Tarbf OOAnNcffgT0mcfVlEy3ZC87m/WFwlG+vYFKJjzGm0Q2aL+yM7QSwyJKcJGWxYNj41jrg uV9JmRSO+ZbQ6bnKJfznJoj8tLWMz89bfHlBdHJdrnY62JjOl2mlbZI5SD3jp8+D9iJj h9yQ0Otgxd/lWoyJ2Lp2DbaDVZrq9wUbf+J8KQpgAFD6Viqp7Jli6nUS0oImDRP+x7wX 6b3wAtWZtafDAjTYJZf1o3K2srye8pnMkbxFEzbfsIlKxTPQ1idEZDQrqYNnmewCUDjo mQMQ== X-Gm-Message-State: AMke39nLHcwRck/34iEGTXMR7Ga/q5oHs4f6pWPliwgRUI8XpmDeN/tAG49cjpmnPQyISg== X-Received: by 10.200.44.243 with SMTP id 48mr22054069qtx.262.1487021179197; Mon, 13 Feb 2017 13:26:19 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 14 Feb 2017 08:25:22 +1100 Message-Id: <20170213212536.31871-11-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170213212536.31871-1-rth@twiddle.net> References: <20170213212536.31871-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c0d::241 Subject: [Qemu-devel] [PULL 10/24] target/openrisc: Put SR[OVE] in TB flags 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: peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Removes a call at execution time for overflow exceptions. Signed-off-by: Richard Henderson --- target/openrisc/cpu.h | 4 ++-- target/openrisc/exception_helper.c | 2 +- target/openrisc/translate.c | 24 +++++++++++++++--------- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/target/openrisc/cpu.h b/target/openrisc/cpu.h index 06d0e89..ef90e49 100644 --- a/target/openrisc/cpu.h +++ b/target/openrisc/cpu.h @@ -400,8 +400,8 @@ static inline void cpu_get_tb_cpu_state(CPUOpenRISCStat= e *env, { *pc =3D env->pc; *cs_base =3D 0; - /* D_FLAG -- branch instruction exception */ - *flags =3D (env->flags & D_FLAG); + /* D_FLAG -- branch instruction exception, OVE overflow trap enable. = */ + *flags =3D (env->flags & D_FLAG) | (env->sr & SR_OVE); } =20 static inline int cpu_mmu_index(CPUOpenRISCState *env, bool ifetch) diff --git a/target/openrisc/exception_helper.c b/target/openrisc/exception= _helper.c index 7e54c97..5147da6 100644 --- a/target/openrisc/exception_helper.c +++ b/target/openrisc/exception_helper.c @@ -32,7 +32,7 @@ void HELPER(exception)(CPUOpenRISCState *env, uint32_t ex= cp) =20 void HELPER(ove)(CPUOpenRISCState *env, target_ulong test) { - if (unlikely(test) && (env->sr & SR_OVE)) { + if (unlikely(test)) { OpenRISCCPU *cpu =3D openrisc_env_get_cpu(env); CPUState *cs =3D CPU(cpu); =20 diff --git a/target/openrisc/translate.c b/target/openrisc/translate.c index 7c6cd1c..b8116ba 100644 --- a/target/openrisc/translate.c +++ b/target/openrisc/translate.c @@ -132,8 +132,8 @@ static inline void wb_SR_F(void) static inline void gen_sync_flags(DisasContext *dc) { /* Sync the tb dependent flag between translate and runtime. */ - if (dc->tb_flags !=3D dc->synced_flags) { - tcg_gen_movi_tl(env_flags, dc->tb_flags); + if ((dc->tb_flags ^ dc->synced_flags) & D_FLAG) { + tcg_gen_movi_tl(env_flags, dc->tb_flags & D_FLAG); dc->synced_flags =3D dc->tb_flags; } } @@ -249,20 +249,26 @@ static void gen_jump(DisasContext *dc, int32_t n26, u= int32_t reg, uint32_t op0) =20 static void gen_ove_cy(DisasContext *dc, TCGv cy) { - gen_helper_ove(cpu_env, cy); + if (dc->tb_flags & SR_OVE) { + gen_helper_ove(cpu_env, cy); + } } =20 static void gen_ove_ov(DisasContext *dc, TCGv ov) { - gen_helper_ove(cpu_env, ov); + if (dc->tb_flags & SR_OVE) { + gen_helper_ove(cpu_env, ov); + } } =20 static void gen_ove_cyov(DisasContext *dc, TCGv cy, TCGv ov) { - TCGv t0 =3D tcg_temp_new(); - tcg_gen_or_tl(t0, cy, ov); - gen_helper_ove(cpu_env, t0); - tcg_temp_free(t0); + if (dc->tb_flags & SR_OVE) { + TCGv t0 =3D tcg_temp_new(); + tcg_gen_or_tl(t0, cy, ov); + gen_helper_ove(cpu_env, t0); + tcg_temp_free(t0); + } } =20 static void gen_add(DisasContext *dc, TCGv dest, TCGv srca, TCGv srcb) @@ -1606,7 +1612,7 @@ void gen_intermediate_code(CPUOpenRISCState *env, str= uct TranslationBlock *tb) dc->flags =3D cpu->env.cpucfgr; dc->mem_idx =3D cpu_mmu_index(&cpu->env, false); dc->synced_flags =3D dc->tb_flags =3D tb->flags; - dc->delayed_branch =3D !!(dc->tb_flags & D_FLAG); + dc->delayed_branch =3D (dc->tb_flags & D_FLAG) !=3D 0; dc->singlestep_enabled =3D cs->singlestep_enabled; =20 next_page_start =3D (pc_start & TARGET_PAGE_MASK) + TARGET_PAGE_SIZE; --=20 2.9.3