From patchwork Tue Jun 22 15:48:06 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1495760 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=usOz7f47; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4G8W6f0Kxwz9sRf for ; Wed, 23 Jun 2021 01:49:30 +1000 (AEST) Received: from localhost ([::1]:41244 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lvieV-000522-Ok for incoming@patchwork.ozlabs.org; Tue, 22 Jun 2021 11:49:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57082) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvidY-00051I-Ru for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:29 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]:40868) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lvidU-0005Hd-5Y for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:28 -0400 Received: by mail-pl1-x633.google.com with SMTP id m17so7464993plx.7 for ; Tue, 22 Jun 2021 08:48:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=IZqsDG39a6RHRH2b5Sr2GJhmurivUBKrieIfGWTmK84=; b=usOz7f47tiQnGkpa6gr190W+OZHpH31MdQnvMrMsxfsj5qql+ZRDEuhDi8mDLEFsRJ H6PUqif0i85/+r5PkszqSpWEqE5u/hN5tcKJyinFVsPQ6TLYIVZi7bS4kbvJteRei0Kw xxGxEkhmyEd0sykjOgDKBZNM3ZS8mEtv/yWz+6FhxPN+U6x//3yLvGgG5DupJ56N+Sub lUENflSDpRiwvT3siPSpjZSY6R49lSgIaEtUoo517qI9gtVjAqQuAzRE70+KvSjcryEj S5X/ZohV8qql7aRDHrJh6B98nqzGs3a6yV1yMvmkxxRrwiDuQ0e4NiR0L1YWjG2hMPOF ZFng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=IZqsDG39a6RHRH2b5Sr2GJhmurivUBKrieIfGWTmK84=; b=tu5Kp2xyXj6ZA6DjZiDUB050ZVNkVcqdGQ22TCk/ODE5DkjPlBay78tEnLUhANTGG9 kZllJGWRRbLHzqqYOCNjpWi62w922u93JT4CoNMVbHj3YUtmDxW3vArGvnf5SGhX5SH4 JPNlt4RtvD+ReB4UWYiZeTIkJntReW85E/xrMXIFtfrKIruny9xMeG/HAw4+yHqCPX6H XkYq7bi77L//PFYvHEpKp9jWIdVHIZkzOGVdFxyvJv+ezatANQDYm/Pg8AMLTO9r5JHK Z9skRKTZLCNHCuv3YaYHJd6UuxweysPLqePKo/GubKqBimLZlooXQ9+ORt7FnF5Q7/ed AL4A== X-Gm-Message-State: AOAM5321BA06Y61RT8e2S1TcY+U1Td3KEtDurc/mBtvHlRKRXi2F1yhM vT6WWpk4/ho3Udv8480g9ol1qCwbq6uEJQ== X-Google-Smtp-Source: ABdhPJxiwTwxiQ86lLs5FrAHWr2E4pXj3pwVUFRzT8FsS5J07IrGDq9wQJ29G6O9i618hSloOJePaA== X-Received: by 2002:a17:90b:810:: with SMTP id bk16mr3865833pjb.2.1624376902526; Tue, 22 Jun 2021 08:48:22 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id x13sm2898769pjh.30.2021.06.22.08.48.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Jun 2021 08:48:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 01/15] target/cris: Add DisasContextBase to DisasContext Date: Tue, 22 Jun 2021 08:48:06 -0700 Message-Id: <20210622154820.1978982-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210622154820.1978982-1-richard.henderson@linaro.org> References: <20210622154820.1978982-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: edgar.iglesias@gmail.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Migrate the is_jmp, tb and singlestep_enabled fields from DisasContext into the base. Signed-off-by: Richard Henderson --- target/cris/translate.c | 49 +++++++++++++++++---------------- target/cris/translate_v10.c.inc | 4 +-- 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/target/cris/translate.c b/target/cris/translate.c index 6dd5a267a6..bed7a7ed10 100644 --- a/target/cris/translate.c +++ b/target/cris/translate.c @@ -85,6 +85,8 @@ static TCGv env_pc; /* This is the state at translation time. */ typedef struct DisasContext { + DisasContextBase base; + CRISCPU *cpu; target_ulong pc, ppc; @@ -121,7 +123,6 @@ typedef struct DisasContext { int clear_locked_irq; /* Clear the irq lockout. */ int cpustate_changed; unsigned int tb_flags; /* tb dependent flags. */ - int is_jmp; #define JMP_NOJMP 0 #define JMP_DIRECT 1 @@ -131,9 +132,6 @@ typedef struct DisasContext { uint32_t jmp_pc; int delayed_branch; - - TranslationBlock *tb; - int singlestep_enabled; } DisasContext; static void gen_BUG(DisasContext *dc, const char *file, int line) @@ -531,7 +529,7 @@ static void t_gen_cc_jmp(TCGv pc_true, TCGv pc_false) static inline bool use_goto_tb(DisasContext *dc, target_ulong dest) { #ifndef CONFIG_USER_ONLY - return (dc->tb->pc & TARGET_PAGE_MASK) == (dest & TARGET_PAGE_MASK) || + return (dc->base.pc_first & TARGET_PAGE_MASK) == (dest & TARGET_PAGE_MASK) || (dc->ppc & TARGET_PAGE_MASK) == (dest & TARGET_PAGE_MASK); #else return true; @@ -543,7 +541,7 @@ static void gen_goto_tb(DisasContext *dc, int n, target_ulong dest) if (use_goto_tb(dc, dest)) { tcg_gen_goto_tb(n); tcg_gen_movi_tl(env_pc, dest); - tcg_gen_exit_tb(dc->tb, n); + tcg_gen_exit_tb(dc->base.tb, n); } else { tcg_gen_movi_tl(env_pc, dest); tcg_gen_exit_tb(NULL, 0); @@ -2037,14 +2035,14 @@ static int dec_setclrf(CPUCRISState *env, DisasContext *dc) /* Break the TB if any of the SPI flag changes. */ if (flags & (P_FLAG | S_FLAG)) { tcg_gen_movi_tl(env_pc, dc->pc + 2); - dc->is_jmp = DISAS_UPDATE; + dc->base.is_jmp = DISAS_UPDATE; dc->cpustate_changed = 1; } /* For the I flag, only act on posedge. */ if ((flags & I_FLAG)) { tcg_gen_movi_tl(env_pc, dc->pc + 2); - dc->is_jmp = DISAS_UPDATE; + dc->base.is_jmp = DISAS_UPDATE; dc->cpustate_changed = 1; } @@ -2886,14 +2884,14 @@ static int dec_rfe_etc(CPUCRISState *env, DisasContext *dc) LOG_DIS("rfe\n"); cris_evaluate_flags(dc); gen_helper_rfe(cpu_env); - dc->is_jmp = DISAS_UPDATE; + dc->base.is_jmp = DISAS_UPDATE; break; case 5: /* rfn. */ LOG_DIS("rfn\n"); cris_evaluate_flags(dc); gen_helper_rfn(cpu_env); - dc->is_jmp = DISAS_UPDATE; + dc->base.is_jmp = DISAS_UPDATE; break; case 6: LOG_DIS("break %d\n", dc->op1); @@ -2904,7 +2902,7 @@ static int dec_rfe_etc(CPUCRISState *env, DisasContext *dc) /* Breaks start at 16 in the exception vector. */ t_gen_movi_env_TN(trap_vector, dc->op1 + 16); t_gen_raise_exception(EXCP_BREAK); - dc->is_jmp = DISAS_UPDATE; + dc->base.is_jmp = DISAS_UPDATE; break; default: printf("op2=%x\n", dc->op2); @@ -3146,13 +3144,16 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int max_insns) * delayslot, like in real hw. */ pc_start = tb->pc & ~1; - dc->cpu = env_archcpu(env); - dc->tb = tb; - dc->is_jmp = DISAS_NEXT; + dc->base.tb = tb; + dc->base.pc_first = pc_start; + dc->base.pc_next = pc_start; + dc->base.is_jmp = DISAS_NEXT; + dc->base.singlestep_enabled = cs->singlestep_enabled; + + dc->cpu = env_archcpu(env); dc->ppc = pc_start; dc->pc = pc_start; - dc->singlestep_enabled = cs->singlestep_enabled; dc->flags_uptodate = 1; dc->flagx_known = 1; dc->flags_x = tb->flags & X_FLAG; @@ -3189,7 +3190,7 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int max_insns) cris_evaluate_flags(dc); tcg_gen_movi_tl(env_pc, dc->pc); t_gen_raise_exception(EXCP_DEBUG); - dc->is_jmp = DISAS_UPDATE; + dc->base.is_jmp = DISAS_UPDATE; /* The address covered by the breakpoint must be included in [tb->pc, tb->pc + tb->size) in order to for it to be properly cleared -- thus we increment the PC here so that @@ -3242,18 +3243,18 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int max_insns) gen_goto_tb(dc, 1, dc->jmp_pc); gen_set_label(l1); gen_goto_tb(dc, 0, dc->pc); - dc->is_jmp = DISAS_TB_JUMP; + dc->base.is_jmp = DISAS_TB_JUMP; dc->jmp = JMP_NOJMP; } else if (dc->jmp == JMP_DIRECT) { cris_evaluate_flags(dc); gen_goto_tb(dc, 0, dc->jmp_pc); - dc->is_jmp = DISAS_TB_JUMP; + dc->base.is_jmp = DISAS_TB_JUMP; dc->jmp = JMP_NOJMP; } else { TCGv c = tcg_const_tl(dc->pc); t_gen_cc_jmp(env_btarget, c); tcg_temp_free(c); - dc->is_jmp = DISAS_JUMP; + dc->base.is_jmp = DISAS_JUMP; } break; } @@ -3264,7 +3265,7 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int max_insns) if (!(tb->pc & 1) && cs->singlestep_enabled) { break; } - } while (!dc->is_jmp && !dc->cpustate_changed + } while (!dc->base.is_jmp && !dc->cpustate_changed && !tcg_op_buf_full() && !singlestep && (dc->pc - page_start < TARGET_PAGE_SIZE) @@ -3277,10 +3278,10 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int max_insns) npc = dc->pc; /* Force an update if the per-tb cpu state has changed. */ - if (dc->is_jmp == DISAS_NEXT + if (dc->base.is_jmp == DISAS_NEXT && (dc->cpustate_changed || !dc->flagx_known || (dc->flags_x != (tb->flags & X_FLAG)))) { - dc->is_jmp = DISAS_UPDATE; + dc->base.is_jmp = DISAS_UPDATE; tcg_gen_movi_tl(env_pc, npc); } /* Broken branch+delayslot sequence. */ @@ -3293,12 +3294,12 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int max_insns) cris_evaluate_flags(dc); if (unlikely(cs->singlestep_enabled)) { - if (dc->is_jmp == DISAS_NEXT) { + if (dc->base.is_jmp == DISAS_NEXT) { tcg_gen_movi_tl(env_pc, npc); } t_gen_raise_exception(EXCP_DEBUG); } else { - switch (dc->is_jmp) { + switch (dc->base.is_jmp) { case DISAS_NEXT: gen_goto_tb(dc, 1, npc); break; diff --git a/target/cris/translate_v10.c.inc b/target/cris/translate_v10.c.inc index f7cd67be37..dd44a7eb97 100644 --- a/target/cris/translate_v10.c.inc +++ b/target/cris/translate_v10.c.inc @@ -1169,7 +1169,7 @@ static unsigned int dec10_ind(CPUCRISState *env, DisasContext *dc) t_gen_mov_env_TN(trap_vector, c); tcg_temp_free(c); t_gen_raise_exception(EXCP_BREAK); - dc->is_jmp = DISAS_UPDATE; + dc->base.is_jmp = DISAS_UPDATE; return insn_len; } LOG_DIS("%d: jump.%d %d r%d r%d\n", __LINE__, size, @@ -1277,7 +1277,7 @@ static unsigned int crisv10_decoder(CPUCRISState *env, DisasContext *dc) if (dc->clear_prefix && dc->tb_flags & PFIX_FLAG) { dc->tb_flags &= ~PFIX_FLAG; tcg_gen_andi_tl(cpu_PR[PR_CCS], cpu_PR[PR_CCS], ~PFIX_FLAG); - if (dc->tb_flags != dc->tb->flags) { + if (dc->tb_flags != dc->base.tb->flags) { dc->cpustate_changed = 1; } } From patchwork Tue Jun 22 15:48:07 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1495762 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=MjfDn5b0; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4G8W6k2qt7z9sRf for ; Wed, 23 Jun 2021 01:49:34 +1000 (AEST) Received: from localhost ([::1]:41270 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lvieY-00052n-W4 for incoming@patchwork.ozlabs.org; Tue, 22 Jun 2021 11:49:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57128) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvida-00051t-Eh for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:30 -0400 Received: from mail-pg1-x532.google.com ([2607:f8b0:4864:20::532]:45851) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lvidU-0005Hy-CW for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:30 -0400 Received: by mail-pg1-x532.google.com with SMTP id y14so5985851pgs.12 for ; Tue, 22 Jun 2021 08:48:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=VyACFkGX+AoOo24zZ8c++sg0FmDfffCQNskIwq7OASc=; b=MjfDn5b0vjwmpoKtHkmAUmDVxZ9/siV5BWqBoJFT5UoArkHlgZWfOVzS7wS+AOFKfZ jE6srbbKAWanR+Shkr30AcnSg8FfkD0GcEBq7QQkz7leqgpmA2FcwT0NfxzBrwbdrPdq 981QwANs5P8fnJh9EfHHWnDDjU1Q0Ss0gJrm/VAfW2qIfTkrQiIrBvfLeO0sjE2NSG5+ pMr00RiwbFDQph4lNrcWC/S2L5tI5FMe+1mO2Zh/r2mJWZK09NK+FGGbJJuVpObK3cdT EMdh7f77yWfdHejC2FNB573tC+hf6sqxBha5HpjFdVj+RbqYcJ97MsZQPR7lIB5cxUIB Vj/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=VyACFkGX+AoOo24zZ8c++sg0FmDfffCQNskIwq7OASc=; b=bNFmpEL45DLUutfh+hVxTk7rwq+D3FlgF+ByOM1cpW5MGBH9FtiQy5Z4Gbs4pvxJfe xvPfduYTBx6Dfn6CLZHM4mfQE4FuWuQKSDbSkNUJLLL77xITC9BiKjmPAlzXEWAkeI2Y 84VAPTChYn+yHb1Va57feVcn28Pfm+q7+dc1cCHAvMtA1mdCRqsvOyzMIVRlXh2Tf2Qp JHTvoF3P394SsPNml26Thg7YWWtwB26dhd4DlsjtUxpELKBDD6Y2Kh2VrCFTFa7CP0dq 16pyf8Q6NveMtjvaib5pTZRZg8+TQBnaN4SP1M5ZviLpPW7s8oJmIeY0PbkyVRr42X99 0ecQ== X-Gm-Message-State: AOAM53141J9lOVqKiV3Cqe/vxYVbf+OOLjAit9OzdC6gXFyLvgdPStim q00AKXkrcocyZH7w05aLon+xue4oE/F0pA== X-Google-Smtp-Source: ABdhPJxI/XXFCmCJCCzuKoHEBWIyh26/V+Ih0zQ8SooKOTkWdszEmgNlkFIWL9nZ1fQUmkAZ1kmjTg== X-Received: by 2002:a65:5248:: with SMTP id q8mr4348564pgp.176.1624376903123; Tue, 22 Jun 2021 08:48:23 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id x13sm2898769pjh.30.2021.06.22.08.48.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Jun 2021 08:48:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 02/15] target/cris: Remove DISAS_SWI Date: Tue, 22 Jun 2021 08:48:07 -0700 Message-Id: <20210622154820.1978982-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210622154820.1978982-1-richard.henderson@linaro.org> References: <20210622154820.1978982-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::532; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x532.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: edgar.iglesias@gmail.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" This value is unused. Signed-off-by: Richard Henderson --- target/cris/translate.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/target/cris/translate.c b/target/cris/translate.c index bed7a7ed10..8c1bad9564 100644 --- a/target/cris/translate.c +++ b/target/cris/translate.c @@ -56,7 +56,6 @@ #define DISAS_JUMP DISAS_TARGET_0 /* only pc was modified dynamically */ #define DISAS_UPDATE DISAS_TARGET_1 /* cpu state was modified dynamically */ #define DISAS_TB_JUMP DISAS_TARGET_2 /* only pc was modified statically */ -#define DISAS_SWI DISAS_TARGET_3 /* Used by the decoder. */ #define EXTRACT_FIELD(src, start, end) \ @@ -3310,7 +3309,6 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int max_insns) to find the next TB */ tcg_gen_exit_tb(NULL, 0); break; - case DISAS_SWI: case DISAS_TB_JUMP: /* nothing more to generate */ break; From patchwork Tue Jun 22 15:48:08 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1495763 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=Zy+LECNr; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4G8W6m1dSTz9sRf for ; Wed, 23 Jun 2021 01:49:36 +1000 (AEST) Received: from localhost ([::1]:41356 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lvieb-00056F-2U for incoming@patchwork.ozlabs.org; Tue, 22 Jun 2021 11:49:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57118) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvida-00051V-3w for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:30 -0400 Received: from mail-pg1-x534.google.com ([2607:f8b0:4864:20::534]:34446) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lvidV-0005IM-93 for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:29 -0400 Received: by mail-pg1-x534.google.com with SMTP id p9so3076354pgb.1 for ; Tue, 22 Jun 2021 08:48:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=KDiLqe9dSt4bFFEx812mp6CpLrrp0+muqbfaUvci+sc=; b=Zy+LECNr7q7qANSSmJjSQ656quOM4XRilI1m51YfBi57GCT+9QX5+PO8nlCZUxW9qI kV1FgWgYusYERxJImw1pV3lxcPUEzX+K7/jBxK6HYJYSomVnBzVsq6vg6ykQyQyf2x8/ y0WhEZPF81IQ/qkRb1xHmHHyFjj2QlqeJBgeV+pfdk5RLne/FjwfnqSNimjzoRjM2XPz wRkHws+ZzpULxytrknuIdGWtL7NtscdjgWmvTSX1hGHvQu0B97F5AI2FHKaGLtVhUZT5 EI3pezyT00Q4N7iv2koxpeK8p14MFbUyiO0BwhRNXiy+45QVzh8ZCQDt31GY0t9NneNA pe8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=KDiLqe9dSt4bFFEx812mp6CpLrrp0+muqbfaUvci+sc=; b=Y9SiRfDvorDvL74KggfhoREajpj0UzBnxuMeCcM3aqTvhVSRzPLJsWJ/g127kcHVNH C6edWH9jvMkCPTWwyzSr5H1Tzvu8EwwqlvwAcardywFlAP4inKB7M1D3P5/1jbJ3Sfqe oZngs5oCmzDlK610ElZMQHsExagfks/GDMwEfaGe1aci9Uknq2n+W5p4vZJxbIMF/RDm kNP6dYCKUPaAqo0cactJ8F0Eg9P5Y6sv6cm37dWsHtwmazK151Ndsy96Z89xvVAVL+e0 gxAqv+XbCmKiI0ZjbEbbDI2hnisZG5VB8ShgtjffGfCs3NaMtskPSN25gEy5R4+11vO5 yzEg== X-Gm-Message-State: AOAM533Gveb9p5vFtu5jkCt1yuwWHrLmInUwzQJ961xY3WshHseXTovI k9LHpv3Zaw7jXv0bbfDKLQZ3nTTcXwqRVw== X-Google-Smtp-Source: ABdhPJzho50Zr5C4IhMFX1r3cFN0iUoVc0O29zRiqZZ8Ydtq7cJtRo0xRqKbAX8W2Qs1kDIDnlnb9w== X-Received: by 2002:a63:d710:: with SMTP id d16mr4299022pgg.214.1624376903766; Tue, 22 Jun 2021 08:48:23 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id x13sm2898769pjh.30.2021.06.22.08.48.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Jun 2021 08:48:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 03/15] target/cris: Replace DISAS_TB_JUMP with DISAS_NORETURN Date: Tue, 22 Jun 2021 08:48:08 -0700 Message-Id: <20210622154820.1978982-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210622154820.1978982-1-richard.henderson@linaro.org> References: <20210622154820.1978982-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::534; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x534.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: edgar.iglesias@gmail.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" The only semantic of DISAS_TB_JUMP is that we've done goto_tb, which is the same as DISAS_NORETURN -- we've exited the tb. Signed-off-by: Richard Henderson --- target/cris/translate.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/target/cris/translate.c b/target/cris/translate.c index 8c1bad9564..e086ff9131 100644 --- a/target/cris/translate.c +++ b/target/cris/translate.c @@ -55,7 +55,6 @@ /* is_jmp field values */ #define DISAS_JUMP DISAS_TARGET_0 /* only pc was modified dynamically */ #define DISAS_UPDATE DISAS_TARGET_1 /* cpu state was modified dynamically */ -#define DISAS_TB_JUMP DISAS_TARGET_2 /* only pc was modified statically */ /* Used by the decoder. */ #define EXTRACT_FIELD(src, start, end) \ @@ -3242,12 +3241,12 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int max_insns) gen_goto_tb(dc, 1, dc->jmp_pc); gen_set_label(l1); gen_goto_tb(dc, 0, dc->pc); - dc->base.is_jmp = DISAS_TB_JUMP; + dc->base.is_jmp = DISAS_NORETURN; dc->jmp = JMP_NOJMP; } else if (dc->jmp == JMP_DIRECT) { cris_evaluate_flags(dc); gen_goto_tb(dc, 0, dc->jmp_pc); - dc->base.is_jmp = DISAS_TB_JUMP; + dc->base.is_jmp = DISAS_NORETURN; dc->jmp = JMP_NOJMP; } else { TCGv c = tcg_const_tl(dc->pc); @@ -3309,7 +3308,7 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int max_insns) to find the next TB */ tcg_gen_exit_tb(NULL, 0); break; - case DISAS_TB_JUMP: + case DISAS_NORETURN: /* nothing more to generate */ break; } From patchwork Tue Jun 22 15:48:09 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1495765 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=LPARqh5Y; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4G8WB60Ddnz9sRf for ; Wed, 23 Jun 2021 01:52:30 +1000 (AEST) Received: from localhost ([::1]:49828 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lvihP-0002Us-Os for incoming@patchwork.ozlabs.org; Tue, 22 Jun 2021 11:52:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57152) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvidb-00052H-5R for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:31 -0400 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]:45962) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lvidV-0005Ik-Te for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:30 -0400 Received: by mail-pj1-x102b.google.com with SMTP id z3-20020a17090a3983b029016bc232e40bso2510277pjb.4 for ; Tue, 22 Jun 2021 08:48:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=QV3NWQWmRHF/ZFVxLVNCzHlStwF0CrHnXqXVYt2I9ho=; b=LPARqh5YzlXvypLlxirKZ6pk3suD14Omq8/AWoWJFqVarRk1RauzAVdfJ3g8JjWBjG 2Eui75ARk3fx6Ch0+xfjTEEFh4L74uCRZHCowC0xXUAxPp8nNWwgH699EyWIFtMbdC+K sAXX0cOFLPvNIXid7W26qDbWzWNEf2/uiem527ijtLhPsobzD+pU/rs45+5TWMcB3qB2 t8j6gFFjxont3Iov1pX2LRbe8okW5J9+17fwvTrvRD20XTlhk3tJfZ14jVqli/Brvxfu J5vIqqVb6G93B7UkjUtkDJqftTMgM5iCPBeWoq9/4pDPFtnnADI6NvF1EX6UzEtsI21y iN9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=QV3NWQWmRHF/ZFVxLVNCzHlStwF0CrHnXqXVYt2I9ho=; b=C8WGSv5m+AFRAdyMQx9n0jC+Lc9Di8QH9cdlt1hu2RKB1D5yDzzE4tKmhIxE35hSSK bRo/ScR/NS/mKeXSdkBx8BCREuviq2WBHmPIqQFWofI3ywo49ahUPF0SPQ8tsBvilNVW sK9E/HowSp/0SXjoDP44KRRe+9y/QfrQpGV8VRdeigCGA/BjFS9CUl3eDYWLAnRuUwkT 1hhRuMoA9uAgLNMwAJNd0T0EW06r7cMDS33VBwfdc7lf2gQvV7SCuRxNWrwuoy6mB1vG rf0/XM7SUCJJy4Va2pf3HbeyEH0YdgbyuQHm2ODdv+1MzhdSo3WH0KLUk9c32pfkZ5mq GR4Q== X-Gm-Message-State: AOAM531Q79zDzqlyC70UwQAOLGvVs4+Z8E0unMtZ+4BgYEaJr71Lf85p GoRh+POZgAOfZccY4xNRmIpPixbiGtlPDg== X-Google-Smtp-Source: ABdhPJySJNO5EzzgBebED55d8MNkZCd+5qc/m7i0YEUmuMeThvJInrBV3B4GKLZvCGuBt+yBgbXUBA== X-Received: by 2002:a17:902:222:b029:11b:9cea:eea9 with SMTP id 31-20020a1709020222b029011b9ceaeea9mr22953587plc.11.1624376904369; Tue, 22 Jun 2021 08:48:24 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id x13sm2898769pjh.30.2021.06.22.08.48.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Jun 2021 08:48:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 04/15] target/cris: Mark exceptions as DISAS_NORETURN Date: Tue, 22 Jun 2021 08:48:09 -0700 Message-Id: <20210622154820.1978982-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210622154820.1978982-1-richard.henderson@linaro.org> References: <20210622154820.1978982-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::102b; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: edgar.iglesias@gmail.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" After we've raised the exception, we have left the TB. Signed-off-by: Richard Henderson --- target/cris/translate.c | 5 +++-- target/cris/translate_v10.c.inc | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/target/cris/translate.c b/target/cris/translate.c index e086ff9131..24dbae6d58 100644 --- a/target/cris/translate.c +++ b/target/cris/translate.c @@ -2873,6 +2873,7 @@ static int dec_rfe_etc(CPUCRISState *env, DisasContext *dc) -offsetof(CRISCPU, env) + offsetof(CPUState, halted)); tcg_gen_movi_tl(env_pc, dc->pc + 2); t_gen_raise_exception(EXCP_HLT); + dc->base.is_jmp = DISAS_NORETURN; return 2; } @@ -2900,7 +2901,7 @@ static int dec_rfe_etc(CPUCRISState *env, DisasContext *dc) /* Breaks start at 16 in the exception vector. */ t_gen_movi_env_TN(trap_vector, dc->op1 + 16); t_gen_raise_exception(EXCP_BREAK); - dc->base.is_jmp = DISAS_UPDATE; + dc->base.is_jmp = DISAS_NORETURN; break; default: printf("op2=%x\n", dc->op2); @@ -3188,7 +3189,7 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int max_insns) cris_evaluate_flags(dc); tcg_gen_movi_tl(env_pc, dc->pc); t_gen_raise_exception(EXCP_DEBUG); - dc->base.is_jmp = DISAS_UPDATE; + dc->base.is_jmp = DISAS_NORETURN; /* The address covered by the breakpoint must be included in [tb->pc, tb->pc + tb->size) in order to for it to be properly cleared -- thus we increment the PC here so that diff --git a/target/cris/translate_v10.c.inc b/target/cris/translate_v10.c.inc index dd44a7eb97..0ba2aca96f 100644 --- a/target/cris/translate_v10.c.inc +++ b/target/cris/translate_v10.c.inc @@ -61,6 +61,7 @@ static inline void cris_illegal_insn(DisasContext *dc) { qemu_log_mask(LOG_GUEST_ERROR, "illegal insn at pc=%x\n", dc->pc); t_gen_raise_exception(EXCP_BREAK); + dc->base.is_jmp = DISAS_NORETURN; } static void gen_store_v10_conditional(DisasContext *dc, TCGv addr, TCGv val, @@ -1169,7 +1170,7 @@ static unsigned int dec10_ind(CPUCRISState *env, DisasContext *dc) t_gen_mov_env_TN(trap_vector, c); tcg_temp_free(c); t_gen_raise_exception(EXCP_BREAK); - dc->base.is_jmp = DISAS_UPDATE; + dc->base.is_jmp = DISAS_NORETURN; return insn_len; } LOG_DIS("%d: jump.%d %d r%d r%d\n", __LINE__, size, From patchwork Tue Jun 22 15:48:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1495771 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=jJdRi7vB; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4G8WFq3p8Yz9sRf for ; Wed, 23 Jun 2021 01:55:43 +1000 (AEST) Received: from localhost ([::1]:33426 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lvikX-00027d-6J for incoming@patchwork.ozlabs.org; Tue, 22 Jun 2021 11:55:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57222) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvidd-0005AL-La for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:33 -0400 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]:36712) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lvidW-0005Iv-SI for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:33 -0400 Received: by mail-pf1-x42c.google.com with SMTP id 21so1758240pfp.3 for ; Tue, 22 Jun 2021 08:48:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7dML7HVO3SIUvu7+ZiyMAW2r1aYzDyVht2iysbBCWL0=; b=jJdRi7vB+Rlaqngnxx63ms2B9DbygBFa0KcONauqK1OiSwsfGoD2sIPyWd+z6qxv4d s7jTn3vyOtkr50ko+31LTDv6GTC9lOZ9Peqor79HcETTwNtOFANF00iQgMqgsx+MU1g0 PvIrrSBij6JO6Y5VpEcIIjKJGgcl5i6vNWxPB2RHFGn2fYUA8T5hAyILvZ1vMPCQDUcp k+phY4PKxW9CyINwMz6/HiCpPCS6USB2ej2l/eNrVxhNV7vWZ+Er1PVFPHfonmh0biVV 7BQlqPjyZPKXV08bwwqJmvqJT8YJAo8TmHwDw0tbR0NkVf8aVKTJYM6KM0FsBCvudv4r lLKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=7dML7HVO3SIUvu7+ZiyMAW2r1aYzDyVht2iysbBCWL0=; b=Pi4sYkO4xz3irnPPH7sVgYRvPjpVveiVbS/bvh/zF4tvSecZeKyOOtmtQInsfXJniS C2ASf7Y3fdej1rxQF4OGUKZJSl9hGbyaL7tK5tu6JTdfYYMBt3ymqdA3HewkHhG32fYm 7QrGbCG7dUNxzxY6P/W1nK5/tg80ir6JMBLhfjlZlN+gs5SWmzntwvp3m+HKu71NtFfC 39M5WCI1SzQSYDjPUW4mgY+jxwQTvGTcOBOcRlffgeN2BhICCNnjpujeo+i+SBA8+zAT URYauMJD3W56n7UYEL6iZOmutJIGTJs33PoaVHe70FdT7zKwCZOisT1yjlQVP7+1oBDG 997Q== X-Gm-Message-State: AOAM530AsyGTYcDi8S+656R3A3dtuWjlWSBU64L6mxTlRvPYTCMZ61px 2p3GJ9k03RpArOX8yNmPce0PD8oSp1ELPw== X-Google-Smtp-Source: ABdhPJx/4GDiIpHcjo0GMCtSecYK7p7ISVlQtUIIdEKsK3ojjh+uvm83md12O/AwH1DPKmai00UxBA== X-Received: by 2002:a63:5442:: with SMTP id e2mr4383044pgm.365.1624376905174; Tue, 22 Jun 2021 08:48:25 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id x13sm2898769pjh.30.2021.06.22.08.48.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Jun 2021 08:48:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 05/15] target/cris: Fix use_goto_tb Date: Tue, 22 Jun 2021 08:48:10 -0700 Message-Id: <20210622154820.1978982-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210622154820.1978982-1-richard.henderson@linaro.org> References: <20210622154820.1978982-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::42c; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: edgar.iglesias@gmail.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Do not skip the page check for user-only -- mmap/mprotect can still change page mappings. Only check dc->base.pc_first, not dc->ppc -- the start page is the only one that's relevant. Signed-off-by: Richard Henderson --- target/cris/translate.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/target/cris/translate.c b/target/cris/translate.c index 24dbae6d58..9e1f2f9239 100644 --- a/target/cris/translate.c +++ b/target/cris/translate.c @@ -524,14 +524,9 @@ static void t_gen_cc_jmp(TCGv pc_true, TCGv pc_false) gen_set_label(l1); } -static inline bool use_goto_tb(DisasContext *dc, target_ulong dest) +static bool use_goto_tb(DisasContext *dc, target_ulong dest) { -#ifndef CONFIG_USER_ONLY - return (dc->base.pc_first & TARGET_PAGE_MASK) == (dest & TARGET_PAGE_MASK) || - (dc->ppc & TARGET_PAGE_MASK) == (dest & TARGET_PAGE_MASK); -#else - return true; -#endif + return ((dest ^ dc->base.pc_first) & TARGET_PAGE_MASK) == 0; } static void gen_goto_tb(DisasContext *dc, int n, target_ulong dest) From patchwork Tue Jun 22 15:48:11 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1495767 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=Kum6YLqw; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4G8WBF6SPQz9sRf for ; Wed, 23 Jun 2021 01:52:37 +1000 (AEST) Received: from localhost ([::1]:50042 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lvihX-0002d1-Im for incoming@patchwork.ozlabs.org; Tue, 22 Jun 2021 11:52:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57172) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvidb-00053Y-SV for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:31 -0400 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]:56189) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lvidX-0005Jn-Ry for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:31 -0400 Received: by mail-pj1-x102f.google.com with SMTP id l11so8000812pji.5 for ; Tue, 22 Jun 2021 08:48:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=QZ7VUDGCC58nSKYUoETMtboBIVP5/MX+XOvmfsupShs=; b=Kum6YLqwkq8allfFLLna5cdy0CnibPfsszQOHxcIEU8LUqojTgAX7SRReRzbnp491p +3xwZKVaQ8/gMaJQX4kcpZ1guQyWq0hnZAtY9BZ2FyrzX4KykjMxjOw5MF7qVNLRKsqR n4FIy1fqrm4Ue5voUSwGTqPCOm6Chod9uD6jXIHIfpzmdZAX5c13GLvxU2KA0mhv6vKQ i03LqvrDgt+npTsqOeNaRGb1hGrTrwuxOZZMI6AUS+xZijQ4uMmj684jgAfWh76k6OwU hB7uahUA9NYlBbnBT9N6sxuaKhjHRgzU8hWLa7j5gRCsawR1Bi/HkbNK7K/1XtCrr7RW zVcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=QZ7VUDGCC58nSKYUoETMtboBIVP5/MX+XOvmfsupShs=; b=Vuf9cNvXwDdcq91A7RjzF6BJkTmKuM98JEm8qkR/CjyKEVYBS8kZQpMSgluNLp3koi 0VTSmR1u/qciuR9EnIlN3uuYEHBqLZHUEZx4oUkbiJ/pM6ZnFJH0+6sF93AiAHFjQdKp xLOKzf6ZJJYW76xOldLaxTkx6ONtr1e47gVC7KP4LP/rHKwJ/0Qu6unaB7W3rWvbjWN8 tcHs7O0M0AQlteyIKp8AtYd48dSM/DRZurPX1LpfZyiXj/9SqTyjRvbUBGIv+QW5I7Pl h4X4xzGOjJRNecvVc7y7cCZXxmxZ9esWrpLL/OPNXvNzJgxTJmMKBIGgbz2K4XRNzyRw zNmQ== X-Gm-Message-State: AOAM532MDe0oV0/Rp2e4sRZIon5qNjtlxpOrs+8s+osiColD8yzsHrfn ZXlSWa2W307oK4BJMtqdV0mlAH9UuYi6Xg== X-Google-Smtp-Source: ABdhPJy7HFIAYLGx6cTSHMWfOQ9XO+zAfqi2KxS/MzH4iy4jYEBpDJA4W9XfoqTyGVSTNllNgQEhYg== X-Received: by 2002:a17:902:ba8b:b029:120:1d2b:f94b with SMTP id k11-20020a170902ba8bb02901201d2bf94bmr23189308pls.44.1624376905814; Tue, 22 Jun 2021 08:48:25 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id x13sm2898769pjh.30.2021.06.22.08.48.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Jun 2021 08:48:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 06/15] target/cris: Convert to TranslatorOps Date: Tue, 22 Jun 2021 08:48:11 -0700 Message-Id: <20210622154820.1978982-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210622154820.1978982-1-richard.henderson@linaro.org> References: <20210622154820.1978982-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: edgar.iglesias@gmail.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Richard Henderson --- target/cris/translate.c | 317 ++++++++++++++++++++++------------------ 1 file changed, 174 insertions(+), 143 deletions(-) diff --git a/target/cris/translate.c b/target/cris/translate.c index 9e1f2f9239..eabede5251 100644 --- a/target/cris/translate.c +++ b/target/cris/translate.c @@ -3114,17 +3114,12 @@ static unsigned int crisv32_decoder(CPUCRISState *env, DisasContext *dc) * */ -/* generate intermediate code for basic block 'tb'. */ -void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int max_insns) +static void cris_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs) { + DisasContext *dc = container_of(dcbase, DisasContext, base); CPUCRISState *env = cs->env_ptr; + uint32_t tb_flags = dc->base.tb->flags; uint32_t pc_start; - unsigned int insn_len; - struct DisasContext ctx; - struct DisasContext *dc = &ctx; - uint32_t page_start; - target_ulong npc; - int num_insns; if (env->pregs[PR_VR] == 32) { dc->decoder = crisv32_decoder; @@ -3134,150 +3129,174 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int max_insns) dc->clear_locked_irq = 1; } - /* Odd PC indicates that branch is rexecuting due to exception in the + /* + * Odd PC indicates that branch is rexecuting due to exception in the * delayslot, like in real hw. */ - pc_start = tb->pc & ~1; - - dc->base.tb = tb; + pc_start = dc->base.pc_first & ~1; dc->base.pc_first = pc_start; dc->base.pc_next = pc_start; - dc->base.is_jmp = DISAS_NEXT; - dc->base.singlestep_enabled = cs->singlestep_enabled; dc->cpu = env_archcpu(env); dc->ppc = pc_start; dc->pc = pc_start; dc->flags_uptodate = 1; dc->flagx_known = 1; - dc->flags_x = tb->flags & X_FLAG; + dc->flags_x = tb_flags & X_FLAG; dc->cc_x_uptodate = 0; dc->cc_mask = 0; dc->update_cc = 0; dc->clear_prefix = 0; + dc->cpustate_changed = 0; cris_update_cc_op(dc, CC_OP_FLAGS, 4); dc->cc_size_uptodate = -1; /* Decode TB flags. */ - dc->tb_flags = tb->flags & (S_FLAG | P_FLAG | U_FLAG \ - | X_FLAG | PFIX_FLAG); - dc->delayed_branch = !!(tb->flags & 7); + dc->tb_flags = tb_flags & (S_FLAG | P_FLAG | U_FLAG | X_FLAG | PFIX_FLAG); + dc->delayed_branch = !!(tb_flags & 7); if (dc->delayed_branch) { dc->jmp = JMP_INDIRECT; } else { dc->jmp = JMP_NOJMP; } +} - dc->cpustate_changed = 0; +static void cris_tr_tb_start(DisasContextBase *db, CPUState *cpu) +{ +} - page_start = pc_start & TARGET_PAGE_MASK; - num_insns = 0; +static void cris_tr_insn_start(DisasContextBase *dcbase, CPUState *cpu) +{ + DisasContext *dc = container_of(dcbase, DisasContext, base); - gen_tb_start(tb); - do { - tcg_gen_insn_start(dc->delayed_branch == 1 - ? dc->ppc | 1 : dc->pc); - num_insns++; + tcg_gen_insn_start(dc->delayed_branch == 1 ? dc->ppc | 1 : dc->pc); +} - if (unlikely(cpu_breakpoint_test(cs, dc->pc, BP_ANY))) { +static bool cris_tr_breakpoint_check(DisasContextBase *dcbase, CPUState *cpu, + const CPUBreakpoint *bp) +{ + DisasContext *dc = container_of(dcbase, DisasContext, base); + + cris_evaluate_flags(dc); + tcg_gen_movi_tl(env_pc, dc->pc); + t_gen_raise_exception(EXCP_DEBUG); + dc->base.is_jmp = DISAS_NORETURN; + /* + * The address covered by the breakpoint must be included in + * [tb->pc, tb->pc + tb->size) in order to for it to be + * properly cleared -- thus we increment the PC here so that + * the logic setting tb->size below does the right thing. + */ + dc->pc += 2; + return true; +} + +static void cris_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs) +{ + DisasContext *dc = container_of(dcbase, DisasContext, base); + CPUCRISState *env = cs->env_ptr; + unsigned int insn_len; + + /* Pretty disas. */ + LOG_DIS("%8.8x:\t", dc->pc); + + dc->clear_x = 1; + + insn_len = dc->decoder(env, dc); + dc->ppc = dc->pc; + dc->pc += insn_len; + dc->base.pc_next += insn_len; + + if (dc->base.is_jmp == DISAS_NORETURN) { + return; + } + + if (dc->clear_x) { + cris_clear_x_flag(dc); + } + + /* + * Check for delayed branches here. If we do it before + * actually generating any host code, the simulator will just + * loop doing nothing for on this program location. + */ + if (dc->delayed_branch && --dc->delayed_branch == 0) { + if (dc->base.tb->flags & 7) { + t_gen_movi_env_TN(dslot, 0); + } + + if (dc->cpustate_changed + || !dc->flagx_known + || (dc->flags_x != (dc->base.tb->flags & X_FLAG))) { + cris_store_direct_jmp(dc); + } + + if (dc->clear_locked_irq) { + dc->clear_locked_irq = 0; + t_gen_movi_env_TN(locked_irq, 0); + } + + if (dc->jmp == JMP_DIRECT_CC) { + TCGLabel *l1 = gen_new_label(); cris_evaluate_flags(dc); - tcg_gen_movi_tl(env_pc, dc->pc); - t_gen_raise_exception(EXCP_DEBUG); + + /* Conditional jmp. */ + tcg_gen_brcondi_tl(TCG_COND_EQ, env_btaken, 0, l1); + gen_goto_tb(dc, 1, dc->jmp_pc); + gen_set_label(l1); + gen_goto_tb(dc, 0, dc->pc); dc->base.is_jmp = DISAS_NORETURN; - /* The address covered by the breakpoint must be included in - [tb->pc, tb->pc + tb->size) in order to for it to be - properly cleared -- thus we increment the PC here so that - the logic setting tb->size below does the right thing. */ - dc->pc += 2; - break; + dc->jmp = JMP_NOJMP; + } else if (dc->jmp == JMP_DIRECT) { + cris_evaluate_flags(dc); + gen_goto_tb(dc, 0, dc->jmp_pc); + dc->base.is_jmp = DISAS_NORETURN; + dc->jmp = JMP_NOJMP; + } else { + TCGv c = tcg_const_tl(dc->pc); + t_gen_cc_jmp(env_btarget, c); + tcg_temp_free(c); + dc->base.is_jmp = DISAS_JUMP; } + } - /* Pretty disas. */ - LOG_DIS("%8.8x:\t", dc->pc); + /* Force an update if the per-tb cpu state has changed. */ + if (dc->base.is_jmp == DISAS_NEXT + && (dc->cpustate_changed + || !dc->flagx_known + || (dc->flags_x != (dc->base.tb->flags & X_FLAG)))) { + dc->base.is_jmp = DISAS_UPDATE; + tcg_gen_movi_tl(env_pc, dc->pc); + } - if (num_insns == max_insns && (tb_cflags(tb) & CF_LAST_IO)) { - gen_io_start(); - } - dc->clear_x = 1; + /* + * FIXME: Only the first insn in the TB should cross a page boundary. + * If we can detect the length of the next insn easily, we should. + * In the meantime, simply stop when we do cross. + */ + if (dc->base.is_jmp == DISAS_NEXT + && ((dc->pc ^ dc->base.pc_first) & TARGET_PAGE_MASK) != 0) { + dc->base.is_jmp = DISAS_TOO_MANY; + } +} - insn_len = dc->decoder(env, dc); - dc->ppc = dc->pc; - dc->pc += insn_len; - if (dc->clear_x) { - cris_clear_x_flag(dc); - } +static void cris_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu) +{ + DisasContext *dc = container_of(dcbase, DisasContext, base); + DisasJumpType is_jmp = dc->base.is_jmp; + target_ulong npc = dc->pc; - /* Check for delayed branches here. If we do it before - actually generating any host code, the simulator will just - loop doing nothing for on this program location. */ - if (dc->delayed_branch) { - dc->delayed_branch--; - if (dc->delayed_branch == 0) { - if (tb->flags & 7) { - t_gen_movi_env_TN(dslot, 0); - } - if (dc->cpustate_changed || !dc->flagx_known - || (dc->flags_x != (tb->flags & X_FLAG))) { - cris_store_direct_jmp(dc); - } - - if (dc->clear_locked_irq) { - dc->clear_locked_irq = 0; - t_gen_movi_env_TN(locked_irq, 0); - } - - if (dc->jmp == JMP_DIRECT_CC) { - TCGLabel *l1 = gen_new_label(); - cris_evaluate_flags(dc); - - /* Conditional jmp. */ - tcg_gen_brcondi_tl(TCG_COND_EQ, - env_btaken, 0, l1); - gen_goto_tb(dc, 1, dc->jmp_pc); - gen_set_label(l1); - gen_goto_tb(dc, 0, dc->pc); - dc->base.is_jmp = DISAS_NORETURN; - dc->jmp = JMP_NOJMP; - } else if (dc->jmp == JMP_DIRECT) { - cris_evaluate_flags(dc); - gen_goto_tb(dc, 0, dc->jmp_pc); - dc->base.is_jmp = DISAS_NORETURN; - dc->jmp = JMP_NOJMP; - } else { - TCGv c = tcg_const_tl(dc->pc); - t_gen_cc_jmp(env_btarget, c); - tcg_temp_free(c); - dc->base.is_jmp = DISAS_JUMP; - } - break; - } - } - - /* If we are rexecuting a branch due to exceptions on - delay slots don't break. */ - if (!(tb->pc & 1) && cs->singlestep_enabled) { - break; - } - } while (!dc->base.is_jmp && !dc->cpustate_changed - && !tcg_op_buf_full() - && !singlestep - && (dc->pc - page_start < TARGET_PAGE_SIZE) - && num_insns < max_insns); + if (is_jmp == DISAS_NORETURN) { + /* If we have a broken branch+delayslot sequence, it's too late. */ + assert(dc->delayed_branch != 1); + return; + } if (dc->clear_locked_irq) { t_gen_movi_env_TN(locked_irq, 0); } - npc = dc->pc; - - /* Force an update if the per-tb cpu state has changed. */ - if (dc->base.is_jmp == DISAS_NEXT - && (dc->cpustate_changed || !dc->flagx_known - || (dc->flags_x != (tb->flags & X_FLAG)))) { - dc->base.is_jmp = DISAS_UPDATE; - tcg_gen_movi_tl(env_pc, npc); - } /* Broken branch+delayslot sequence. */ if (dc->delayed_branch == 1) { /* Set env->dslot to the size of the branch insn. */ @@ -3287,45 +3306,57 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int max_insns) cris_evaluate_flags(dc); - if (unlikely(cs->singlestep_enabled)) { - if (dc->base.is_jmp == DISAS_NEXT) { + if (unlikely(dc->base.singlestep_enabled)) { + switch (is_jmp) { + case DISAS_TOO_MANY: tcg_gen_movi_tl(env_pc, npc); - } - t_gen_raise_exception(EXCP_DEBUG); - } else { - switch (dc->base.is_jmp) { - case DISAS_NEXT: - gen_goto_tb(dc, 1, npc); - break; - default: + /* fall through */ case DISAS_JUMP: case DISAS_UPDATE: - /* indicate that the hash table must be used - to find the next TB */ - tcg_gen_exit_tb(NULL, 0); - break; - case DISAS_NORETURN: - /* nothing more to generate */ + t_gen_raise_exception(EXCP_DEBUG); + return; + default: break; } + g_assert_not_reached(); } - gen_tb_end(tb, num_insns); - tb->size = dc->pc - pc_start; - tb->icount = num_insns; - -#ifdef DEBUG_DISAS -#if !DISAS_CRIS - if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM) - && qemu_log_in_addr_range(pc_start)) { - FILE *logfile = qemu_log_lock(); - qemu_log("--------------\n"); - qemu_log("IN: %s\n", lookup_symbol(pc_start)); - log_target_disas(cs, pc_start, dc->pc - pc_start); - qemu_log_unlock(logfile); + switch (is_jmp) { + case DISAS_TOO_MANY: + gen_goto_tb(dc, 0, npc); + break; + case DISAS_JUMP: + case DISAS_UPDATE: + /* Indicate that interupts must be re-evaluated before the next TB. */ + tcg_gen_exit_tb(NULL, 0); + break; + default: + g_assert_not_reached(); } -#endif -#endif +} + +static void cris_tr_disas_log(const DisasContextBase *dcbase, CPUState *cpu) +{ + if (!DISAS_CRIS) { + qemu_log("IN: %s\n", lookup_symbol(dcbase->pc_first)); + log_target_disas(cpu, dcbase->pc_first, dcbase->tb->size); + } +} + +static const TranslatorOps cris_tr_ops = { + .init_disas_context = cris_tr_init_disas_context, + .tb_start = cris_tr_tb_start, + .insn_start = cris_tr_insn_start, + .breakpoint_check = cris_tr_breakpoint_check, + .translate_insn = cris_tr_translate_insn, + .tb_stop = cris_tr_tb_stop, + .disas_log = cris_tr_disas_log, +}; + +void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int max_insns) +{ + DisasContext dc; + translator_loop(&cris_tr_ops, &dc.base, cs, tb, max_insns); } void cris_cpu_dump_state(CPUState *cs, FILE *f, int flags) From patchwork Tue Jun 22 15:48:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1495768 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=LWXY6JJg; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4G8WDW0vsqz9sRf for ; Wed, 23 Jun 2021 01:54:34 +1000 (AEST) Received: from localhost ([::1]:58100 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lvijP-00089e-HL for incoming@patchwork.ozlabs.org; Tue, 22 Jun 2021 11:54:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57156) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvidb-00052O-8L for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:31 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]:35792) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lvidX-0005K9-S3 for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:31 -0400 Received: by mail-pf1-x436.google.com with SMTP id t32so5383444pfg.2 for ; Tue, 22 Jun 2021 08:48:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=oqu6i/kvNHrYtHemRicmatPUkUSmc3yTCi7Ugc/TW74=; b=LWXY6JJg32ZFQ+dilKcSvw50uURtqpkCCXHyg7vL0EtxzMGh6DFMJworjN9T3Umlbf iAToMFrAfEgolkzkuT26JyoKFXbCeZDfCxhpdQnuNsXIIeNykSiY+xKaTVP+xqOL+H34 XQOSA8gsOb1YCXuwJtv7v1+g3SI9IAOLEpPywUAhIOLBDYcMLqcQgYODY8LDJvnktzkv JxfKgp2T7dGCkRbl4Clvmy/8W2THzfyF82RnJ8TZCAM7OT8nivsdRzx8BXJf3IFSYEme 1ixvb4lDoFTtWiNpo3+u2TZ1h5A3QAeE5nUMHWIAIDg8GEJ2ngqDHHllq7VzVbFBQcjs 0F3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=oqu6i/kvNHrYtHemRicmatPUkUSmc3yTCi7Ugc/TW74=; b=BFaVgRkmckTWDvJLHg3JtUgKsaJ418R49ny6ZNEvfBMsvQtzweWE7RwRvyYB8hOsk8 WJeYlcInYvCYrIZhscl5fwlOoxwwM1YRTpL8DfNtslGZCHZ/ybkS3zgZFp9yaoCRx4Xx Mn+nTP9dIjan4TMtRpDP77XeM+5jN8+6hOyXXR57z+oG95hceWLTQOZim13TwqHCPTaY SNrZrMt+xqIunYikSiM7ar3/fU1APS/+FfLjwPXowSrwDDvqnygoHR9ou8AD62uGJ0oc NG22Dwtfg+4mCc3knQ/XOsECMACwkJNSrrGCRHQiC/hsl3JyjADjbtRItxxjH/2vOAzj 7S3g== X-Gm-Message-State: AOAM533rzyIIaOmpfBX+EQQPefUIP5TLrSzGGkY0Dzzemx43hDE409i7 mn2YOGlgWEpxNynjP1lkgOIq5+Qq4I1DyQ== X-Google-Smtp-Source: ABdhPJxau3Yg7Eh1TjAI6Hky6Zxo2lfSUV2Ce67tRZXBwrcVFwuIHLy0Q1+RZel/1FeDQroL1L1aEQ== X-Received: by 2002:a65:57cc:: with SMTP id q12mr4340294pgr.155.1624376906404; Tue, 22 Jun 2021 08:48:26 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id x13sm2898769pjh.30.2021.06.22.08.48.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Jun 2021 08:48:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 07/15] target/cris: Mark helper_raise_exception noreturn Date: Tue, 22 Jun 2021 08:48:12 -0700 Message-Id: <20210622154820.1978982-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210622154820.1978982-1-richard.henderson@linaro.org> References: <20210622154820.1978982-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: edgar.iglesias@gmail.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Richard Henderson --- target/cris/helper.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/cris/helper.h b/target/cris/helper.h index 20d21c4358..3abf608682 100644 --- a/target/cris/helper.h +++ b/target/cris/helper.h @@ -1,4 +1,4 @@ -DEF_HELPER_2(raise_exception, void, env, i32) +DEF_HELPER_2(raise_exception, noreturn, env, i32) DEF_HELPER_2(tlb_flush_pid, void, env, i32) DEF_HELPER_2(spc_write, void, env, i32) DEF_HELPER_1(rfe, void, env) From patchwork Tue Jun 22 15:48:13 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1495773 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=U59w59lP; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4G8WH01d1Jz9sRf for ; Wed, 23 Jun 2021 01:56:44 +1000 (AEST) Received: from localhost ([::1]:38342 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lvilV-0005Uv-UI for incoming@patchwork.ozlabs.org; Tue, 22 Jun 2021 11:56:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57204) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvidd-00058B-8v for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:33 -0400 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]:40816) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lvidY-0005KE-KH for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:33 -0400 Received: by mail-pf1-x435.google.com with SMTP id q192so10162679pfc.7 for ; Tue, 22 Jun 2021 08:48:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=LskbPVAjrbITbR/BLSWbN40vYGjGl6tGTo3OTtiJcvA=; b=U59w59lPOQkKBAWXmKZ2aHRwbiwS2SU4Qxa+k87XC9IXL24FEo9Pi7Iy7e7BAergRj DnPp5i1ARkVc7I1lzE/HaD2I+1s2TDBEE+FbOVwVrMMc5qeX3rZ6gogzTlgiwjl2wmYB qy00lt0mIglfu03JEbOkU7JWqq/iVIp6113n8gTOnynQQY8sqOzcDUSQ2ofiw3rlP3nt wFERb4LUNjqzNk8IPpX6SbkbqA3mErQgldj10LdlVnf6KHTxMEl0VF1W8bqpvoT4oam0 ErjFay/L/AD2tVZRVi/rBH2vDXO2Fq93sUKMibvh+JLCs4VpZaubBnPwU6oRgQVk571k VCaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=LskbPVAjrbITbR/BLSWbN40vYGjGl6tGTo3OTtiJcvA=; b=TkVmeiIPNjJfIzf87D7qAnvv2tocJf+zRIkc3vLphjWqJykZpv4GJ+Q1alg0l5JKE5 jS2LmaMBeslQRANIWk8J8Mk7a6ON2IPBZ9/abNTYqWe6FIdTKoHBnY27j8PPf50LfSlC Ety1T76Z0+rr5wb7eSdjE0Q4YA8lvw5PXarrP6r46NB6ndVn9VXnViXZeSUojr0Sd/kf fXXm9+a++1oC0zl9J5kGmfBKJrH8X+8R3zBhDmHFQFP12fjK8STNSuENn2+KU1T/l2OZ J1BR/B1flyqrZ9e/UbjboowSdnWqojkuhNjC1Egg/fTxFbCaAXiiunyl+rEIlCex0H88 C5Xw== X-Gm-Message-State: AOAM5336Vgu3Zn+GS10Q2R9ESdHaVO24mQWnefRWopBMuMlRrYZSk6M7 Gv+D938Z8o8xGp33Crl/SAq6F+SCRuFnbA== X-Google-Smtp-Source: ABdhPJxvkSwukASnXA62gXgCI5xFOMAJYe0K8Haoeswfa5J52Kb7XhTgOe+OSPJxkVyYMWoWGllZXA== X-Received: by 2002:a63:2742:: with SMTP id n63mr2902541pgn.94.1624376907133; Tue, 22 Jun 2021 08:48:27 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id x13sm2898769pjh.30.2021.06.22.08.48.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Jun 2021 08:48:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 08/15] target/cris: Mark static arrays const Date: Tue, 22 Jun 2021 08:48:13 -0700 Message-Id: <20210622154820.1978982-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210622154820.1978982-1-richard.henderson@linaro.org> References: <20210622154820.1978982-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::435; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x435.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: edgar.iglesias@gmail.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Richard Henderson --- target/cris/translate.c | 19 ++++++++++--------- target/cris/translate_v10.c.inc | 6 +++--- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/target/cris/translate.c b/target/cris/translate.c index eabede5251..e14b7acb10 100644 --- a/target/cris/translate.c +++ b/target/cris/translate.c @@ -137,14 +137,15 @@ static void gen_BUG(DisasContext *dc, const char *file, int line) cpu_abort(CPU(dc->cpu), "%s:%d pc=%x\n", file, line, dc->pc); } -static const char *regnames_v32[] = +static const char * const regnames_v32[] = { "$r0", "$r1", "$r2", "$r3", "$r4", "$r5", "$r6", "$r7", "$r8", "$r9", "$r10", "$r11", "$r12", "$r13", "$sp", "$acr", }; -static const char *pregnames_v32[] = + +static const char * const pregnames_v32[] = { "$bz", "$vr", "$pid", "$srs", "$wz", "$exs", "$eda", "$mof", @@ -153,7 +154,7 @@ static const char *pregnames_v32[] = }; /* We need this table to handle preg-moves with implicit width. */ -static int preg_sizes[] = { +static const int preg_sizes[] = { 1, /* bz. */ 1, /* vr. */ 4, /* pid. */ @@ -475,9 +476,9 @@ static inline void t_gen_swapw(TCGv d, TCGv s) ((T0 >> 5) & 0x02020202) | ((T0 >> 7) & 0x01010101)); */ -static inline void t_gen_swapr(TCGv d, TCGv s) +static void t_gen_swapr(TCGv d, TCGv s) { - struct { + static const struct { int shift; /* LSL when positive, LSR when negative. */ uint32_t mask; } bitrev[] = { @@ -1279,7 +1280,7 @@ static int dec_prep_alu_m(CPUCRISState *env, DisasContext *dc, #if DISAS_CRIS static const char *cc_name(int cc) { - static const char *cc_names[16] = { + static const char * const cc_names[16] = { "cc", "cs", "ne", "eq", "vc", "vs", "pl", "mi", "ls", "hi", "ge", "lt", "gt", "le", "a", "p" }; @@ -2926,7 +2927,7 @@ static int dec_null(CPUCRISState *env, DisasContext *dc) return 2; } -static struct decoder_info { +static const struct decoder_info { struct { uint32_t bits; uint32_t mask; @@ -3363,8 +3364,8 @@ void cris_cpu_dump_state(CPUState *cs, FILE *f, int flags) { CRISCPU *cpu = CRIS_CPU(cs); CPUCRISState *env = &cpu->env; - const char **regnames; - const char **pregnames; + const char * const *regnames; + const char * const *pregnames; int i; if (!env) { diff --git a/target/cris/translate_v10.c.inc b/target/cris/translate_v10.c.inc index 0ba2aca96f..4ab43dc404 100644 --- a/target/cris/translate_v10.c.inc +++ b/target/cris/translate_v10.c.inc @@ -21,7 +21,7 @@ #include "qemu/osdep.h" #include "crisv10-decode.h" -static const char *regnames_v10[] = +static const char * const regnames_v10[] = { "$r0", "$r1", "$r2", "$r3", "$r4", "$r5", "$r6", "$r7", @@ -29,7 +29,7 @@ static const char *regnames_v10[] = "$r12", "$r13", "$sp", "$pc", }; -static const char *pregnames_v10[] = +static const char * const pregnames_v10[] = { "$bz", "$vr", "$p2", "$p3", "$wz", "$ccr", "$p6-prefix", "$mof", @@ -38,7 +38,7 @@ static const char *pregnames_v10[] = }; /* We need this table to handle preg-moves with implicit width. */ -static int preg_sizes_v10[] = { +static const int preg_sizes_v10[] = { 1, /* bz. */ 1, /* vr. */ 1, /* pid. */ From patchwork Tue Jun 22 15:48:14 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1495764 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=WklPy6C8; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4G8WB528z8z9sRf for ; Wed, 23 Jun 2021 01:52:29 +1000 (AEST) Received: from localhost ([::1]:49768 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lvihO-0002Sj-Uu for incoming@patchwork.ozlabs.org; Tue, 22 Jun 2021 11:52:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57190) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvidc-00055g-I4 for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:32 -0400 Received: from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d]:33712) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lvidZ-0005KL-IJ for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:32 -0400 Received: by mail-pg1-x52d.google.com with SMTP id e20so17454726pgg.0 for ; Tue, 22 Jun 2021 08:48:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=i0J3Zms5jSdf0V0LutlOl2h6nFGrq/8kkpLuwS5pRBU=; b=WklPy6C8Pr+Zx5Z0rTlK5diQl081jz7V3wua22knYG4bgM0gff59UK361iANGAC2Ym HPOS0qYkg/+d7CjA8Wj9w+k9zsT2F4JAYRqLlU1lD/8OsNW7/+OaiZmkek/5JESqk+d6 zlWvyOQTVsreKsnfNKb0ZpFXlaaYSENCcn54A6EOZhYhf9ayN6vr+wcwWilBdueUa9VE FG7uGw/1NgkkD3k3lWQedZNv0QEOc2m7HP5tx7vHCtBNA1qAJShEoaCmSlfnq1TjqnG2 a/4E8XOfBPz8qqT4pv6wDCXYPmlTL8etgeR8d2FLliZJYllAU1M1K6DMjq8fUsIr33sF cdXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=i0J3Zms5jSdf0V0LutlOl2h6nFGrq/8kkpLuwS5pRBU=; b=s8NrPSwwHBySZO+agX61wo3BcX7rtHrcr/0IqglVsXlkF02m1mmD5Lx/793BSXpExA MeW/BShwxi8Rf3Kv9u7H+L5N/aTsqyjANpE/EsBxSkFIFtE2mQ1IE8oMOnqebQ+9pl17 z/OM6TW3lejHJV674gcahDPv6DbzDhxuAcXXlsvb1xUxZWXW43k6lHx6V9ltM8DceBFA vjW2uJegPGftOcZgnS5m/wgHEnmE9XVC2h4zFBKQTCzItZHruQN6whlACAl19FdovPDK 01dDSsECU4TuX5cHpQLL4ISJueOE2p5esrYJzRgqm5eITDUb7/dDGQTlYnloe+Trcy6u f+NQ== X-Gm-Message-State: AOAM532sm+pTfFxmE0YYstrAMcvMfy1/2JqL6i31Sw8nmwEKMvj9TyNO 6qSKMJg+F588aHtpZlSuQMT1WFwE9SY1TQ== X-Google-Smtp-Source: ABdhPJyp3OLzpHfPf+mVaG11dzyzT8OxNOprQ/+a/9Y5E9CnSFlo9sfiQ2lWyrZys1camjvgPfauFQ== X-Received: by 2002:a63:b63:: with SMTP id a35mr4390811pgl.318.1624376907592; Tue, 22 Jun 2021 08:48:27 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id x13sm2898769pjh.30.2021.06.22.08.48.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Jun 2021 08:48:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 09/15] target/cris: Fold unhandled X_FLAG changes into cpustate_changed Date: Tue, 22 Jun 2021 08:48:14 -0700 Message-Id: <20210622154820.1978982-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210622154820.1978982-1-richard.henderson@linaro.org> References: <20210622154820.1978982-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::52d; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: edgar.iglesias@gmail.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" We really do this already, by including them into the same test. This just hoists the expression up a bit. Signed-off-by: Richard Henderson --- target/cris/translate.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/target/cris/translate.c b/target/cris/translate.c index e14b7acb10..80276ae84d 100644 --- a/target/cris/translate.c +++ b/target/cris/translate.c @@ -3217,6 +3217,10 @@ static void cris_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs) cris_clear_x_flag(dc); } + /* Fold unhandled changes to X_FLAG into cpustate_changed. */ + dc->cpustate_changed |= !dc->flagx_known; + dc->cpustate_changed |= dc->flags_x != (dc->base.tb->flags & X_FLAG); + /* * Check for delayed branches here. If we do it before * actually generating any host code, the simulator will just @@ -3227,9 +3231,7 @@ static void cris_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs) t_gen_movi_env_TN(dslot, 0); } - if (dc->cpustate_changed - || !dc->flagx_known - || (dc->flags_x != (dc->base.tb->flags & X_FLAG))) { + if (dc->cpustate_changed) { cris_store_direct_jmp(dc); } @@ -3263,10 +3265,7 @@ static void cris_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs) } /* Force an update if the per-tb cpu state has changed. */ - if (dc->base.is_jmp == DISAS_NEXT - && (dc->cpustate_changed - || !dc->flagx_known - || (dc->flags_x != (dc->base.tb->flags & X_FLAG)))) { + if (dc->base.is_jmp == DISAS_NEXT && dc->cpustate_changed) { dc->base.is_jmp = DISAS_UPDATE; tcg_gen_movi_tl(env_pc, dc->pc); } From patchwork Tue Jun 22 15:48:15 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1495769 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=l7n2jzDN; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4G8WDY4MPNz9sRf for ; Wed, 23 Jun 2021 01:54:37 +1000 (AEST) Received: from localhost ([::1]:58162 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lvijT-0008Cb-9S for incoming@patchwork.ozlabs.org; Tue, 22 Jun 2021 11:54:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57228) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvide-0005BY-0Z for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:34 -0400 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]:45968) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lvidZ-0005Ka-IY for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:33 -0400 Received: by mail-pj1-x1031.google.com with SMTP id z3-20020a17090a3983b029016bc232e40bso2510364pjb.4 for ; Tue, 22 Jun 2021 08:48:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=SpDU3fVzxTCg6gRwL/A7JZhAekSxML3t7A2jH96nB0U=; b=l7n2jzDNYJMxXM3cT9P8rrJZqHgPZZ4FLbfRkLPA7BhRmxq1usFLLJc3J1zsVWll9c Y/YlzePw7YxDB+5IKsiNVwNcIcptHE/+JsuZG/flRepnkEHfjehMDLOaM0GxXdBKCFKe lwda7q/MGhcABO334iqfpCHwPiHDprHetqNA0WaNCoQhya57sDRpltftGzny9YFgexnD 23HPDh7MbFPa1gn00pyBGHTjhOisYpam8QGs9GPlSeg19POouMCNbBO2hMBX5SPvU+7M +mjLtJslXqHM7gwIR7nVeq/ICIEBiezmqwNQXYiX/hZjg0fQlh4Qw8WPbvByLIJS7+Sd kcTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=SpDU3fVzxTCg6gRwL/A7JZhAekSxML3t7A2jH96nB0U=; b=N//ZtasQeRZqO4I68pfNstHQahscvTbpWHIy6RXPSTOOaOYb5/zZifvYrhxzVH0bQu 3sA7lTcXDLnFOqmiD9Qym7EvO2nJWYgZnB5mA8QpJoEpDYhVD3C+UM//5QlldChjtFks 2XqaVtb+z8i+ChorlFExwwHYZHmaDwYyHyHV69YiKDq7At2Kf3jMSu6/5p1+uROOMP4D 7jU1LsfaQ5Y7ioHh8HkIh83rWLhKa0wWa7dlOYz4WCAlJTF/Igpze/wZTny+YJw000Nk 1gR/6yacKbu2nGYdfXHKa9vlyOUARWnS8/Dpa4ulVj9pf0Hh5HKovWQ2ckGe2frRWzGQ /SUA== X-Gm-Message-State: AOAM533lXwg6mV/G4CbwJOnWQFw7RUVjIjiSNBAreqryqEEeMZsdZers mUGN9XtupZcC9/nciq6Rgxctb5ivOk5r+g== X-Google-Smtp-Source: ABdhPJxjAlSHbQ0+9a13FQIFP92i6x/vu2zCxpBRZz+QmTEzPdLWgdHR6J57b2nY/oQi1xepFyw/MA== X-Received: by 2002:a17:90a:7a84:: with SMTP id q4mr4562109pjf.21.1624376908230; Tue, 22 Jun 2021 08:48:28 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id x13sm2898769pjh.30.2021.06.22.08.48.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Jun 2021 08:48:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 10/15] target/cris: Add DISAS_UPDATE_NEXT Date: Tue, 22 Jun 2021 08:48:15 -0700 Message-Id: <20210622154820.1978982-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210622154820.1978982-1-richard.henderson@linaro.org> References: <20210622154820.1978982-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1031.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: edgar.iglesias@gmail.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Move this pc update into tb_stop. We will be able to re-use this code shortly. Signed-off-by: Richard Henderson --- target/cris/translate.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/target/cris/translate.c b/target/cris/translate.c index 80276ae84d..c9822eae4c 100644 --- a/target/cris/translate.c +++ b/target/cris/translate.c @@ -52,9 +52,15 @@ #define BUG() (gen_BUG(dc, __FILE__, __LINE__)) #define BUG_ON(x) ({if (x) BUG();}) -/* is_jmp field values */ -#define DISAS_JUMP DISAS_TARGET_0 /* only pc was modified dynamically */ -#define DISAS_UPDATE DISAS_TARGET_1 /* cpu state was modified dynamically */ +/* + * Target-specific is_jmp field values + */ +/* Only pc was modified dynamically */ +#define DISAS_JUMP DISAS_TARGET_0 +/* Cpu state was modified dynamically, including pc */ +#define DISAS_UPDATE DISAS_TARGET_1 +/* Cpu state was modified dynamically, excluding pc -- use npc */ +#define DISAS_UPDATE_NEXT DISAS_TARGET_2 /* Used by the decoder. */ #define EXTRACT_FIELD(src, start, end) \ @@ -3266,8 +3272,8 @@ static void cris_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs) /* Force an update if the per-tb cpu state has changed. */ if (dc->base.is_jmp == DISAS_NEXT && dc->cpustate_changed) { - dc->base.is_jmp = DISAS_UPDATE; - tcg_gen_movi_tl(env_pc, dc->pc); + dc->base.is_jmp = DISAS_UPDATE_NEXT; + return; } /* @@ -3309,6 +3315,7 @@ static void cris_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu) if (unlikely(dc->base.singlestep_enabled)) { switch (is_jmp) { case DISAS_TOO_MANY: + case DISAS_UPDATE_NEXT: tcg_gen_movi_tl(env_pc, npc); /* fall through */ case DISAS_JUMP: @@ -3325,6 +3332,9 @@ static void cris_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu) case DISAS_TOO_MANY: gen_goto_tb(dc, 0, npc); break; + case DISAS_UPDATE_NEXT: + tcg_gen_movi_tl(env_pc, npc); + /* fall through */ case DISAS_JUMP: case DISAS_UPDATE: /* Indicate that interupts must be re-evaluated before the next TB. */ From patchwork Tue Jun 22 15:48:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1495775 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=tFAFR/G/; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4G8WJT1Vxbz9sT6 for ; Wed, 23 Jun 2021 01:58:01 +1000 (AEST) Received: from localhost ([::1]:41668 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lvimk-0007hy-U9 for incoming@patchwork.ozlabs.org; Tue, 22 Jun 2021 11:57:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57232) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvide-0005CU-89 for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:34 -0400 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]:45904) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lvida-0005Km-6R for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:33 -0400 Received: by mail-pf1-x435.google.com with SMTP id k6so16701408pfk.12 for ; Tue, 22 Jun 2021 08:48:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=LTBLncsUbYrMsyIs2nbSrT7yfNY/jwcxLFcirc/DO5k=; b=tFAFR/G/2OlY18mRVExd/o4z5rjjjb6q1px3rbPxXxIRVodWFrKE84fL+MMOGGykPa xc6c62sN8DnmNtxrHfYZaBRvdD9TpcD4AUP42vPSOAnAsBue8zGj9RGn24fxct7OMEn+ 4tEGGVa0El3gz5YT3fTZm8cZqMAkglKrlEEvXVfoykdWgdrL9+GF1O9uBq0jJ3iaPrF7 o2QurVj04z4opfKin6naTIGT5Kzuw4lJhn+uJRzFCjI0FM13Qrnnnvn9cPi43NXZ94SU CoULC7OVPy7w1BdNtwqLbkVD0Urox0KoJljQR7lfoXg+LIjlt/KPV1i/poh6sAItZkaH VZeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=LTBLncsUbYrMsyIs2nbSrT7yfNY/jwcxLFcirc/DO5k=; b=flqrb/GZpGBM0PGPyIeBXL/W9/3bvBQN5qBklMOfCkBBXx7fl2S8Y+SLGU7RSlbuHv miIUtiVB3fd+v0BT8tdeTwQHlYDvHamoCMVoIBF21EnjEq2lbWuvMAy7bdvN0fKy0o5T npgbt13dQX5EHxzLtqoNrqljoEmwfcUYcs74Mu/hJ/ZOaCwI2xdZnlTUu7crE3tzQ67u aG+t8lzO2her7v7ifRnuzk24ssTI05h0hZ+w7e1zWwI4OAeT+KBECKMfl3iHM7QXmbgs voPROGK8ziMpk1naIQvI5dEgslo02/+K+7PMersa9RfQTdU2e8FJsUnaXIrwPHqCmZsc lgkg== X-Gm-Message-State: AOAM530tbzu8UiodDFJfE1o2JrK/ACW6Bqla0azNDJmJGIKARB0iGy/R VI6giWhLu/l0QsdMsAY+Q43qMnXJdDdR+Q== X-Google-Smtp-Source: ABdhPJzZzOy3YWmGfaopSyCtOFp25zhs8B1LzmpH9Vye8FNTrFKUEB9FDiBWxBXvrRpIP7N3QZesug== X-Received: by 2002:a62:1ccf:0:b029:304:3c28:b96c with SMTP id c198-20020a621ccf0000b02903043c28b96cmr4339217pfc.52.1624376908900; Tue, 22 Jun 2021 08:48:28 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id x13sm2898769pjh.30.2021.06.22.08.48.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Jun 2021 08:48:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 11/15] target/cris: Add DISAS_DBRANCH Date: Tue, 22 Jun 2021 08:48:16 -0700 Message-Id: <20210622154820.1978982-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210622154820.1978982-1-richard.henderson@linaro.org> References: <20210622154820.1978982-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::435; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x435.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: edgar.iglesias@gmail.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Move delayed branch handling to tb_stop, where we can re-use other end-of-tb code, e.g. the evaluation of flags. Honor single stepping. Validate that we aren't losing state by overwriting is_jmp. Signed-off-by: Richard Henderson Reviewed-by: Edgar E. Iglesias Tested-by: Edgar E. Iglesias --- target/cris/translate.c | 96 ++++++++++++++++++++++++----------------- 1 file changed, 56 insertions(+), 40 deletions(-) diff --git a/target/cris/translate.c b/target/cris/translate.c index c9822eae4c..f58f6f2e5e 100644 --- a/target/cris/translate.c +++ b/target/cris/translate.c @@ -61,6 +61,8 @@ #define DISAS_UPDATE DISAS_TARGET_1 /* Cpu state was modified dynamically, excluding pc -- use npc */ #define DISAS_UPDATE_NEXT DISAS_TARGET_2 +/* PC update for delayed branch, see cpustate_changed otherwise */ +#define DISAS_DBRANCH DISAS_TARGET_3 /* Used by the decoder. */ #define EXTRACT_FIELD(src, start, end) \ @@ -3228,50 +3230,22 @@ static void cris_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs) dc->cpustate_changed |= dc->flags_x != (dc->base.tb->flags & X_FLAG); /* - * Check for delayed branches here. If we do it before - * actually generating any host code, the simulator will just - * loop doing nothing for on this program location. + * All branches are delayed branches, handled immediately below. + * We don't expect to see odd combinations of exit conditions. */ + assert(dc->base.is_jmp == DISAS_NEXT || dc->cpustate_changed); + if (dc->delayed_branch && --dc->delayed_branch == 0) { - if (dc->base.tb->flags & 7) { - t_gen_movi_env_TN(dslot, 0); - } + dc->base.is_jmp = DISAS_DBRANCH; + return; + } - if (dc->cpustate_changed) { - cris_store_direct_jmp(dc); - } - - if (dc->clear_locked_irq) { - dc->clear_locked_irq = 0; - t_gen_movi_env_TN(locked_irq, 0); - } - - if (dc->jmp == JMP_DIRECT_CC) { - TCGLabel *l1 = gen_new_label(); - cris_evaluate_flags(dc); - - /* Conditional jmp. */ - tcg_gen_brcondi_tl(TCG_COND_EQ, env_btaken, 0, l1); - gen_goto_tb(dc, 1, dc->jmp_pc); - gen_set_label(l1); - gen_goto_tb(dc, 0, dc->pc); - dc->base.is_jmp = DISAS_NORETURN; - dc->jmp = JMP_NOJMP; - } else if (dc->jmp == JMP_DIRECT) { - cris_evaluate_flags(dc); - gen_goto_tb(dc, 0, dc->jmp_pc); - dc->base.is_jmp = DISAS_NORETURN; - dc->jmp = JMP_NOJMP; - } else { - TCGv c = tcg_const_tl(dc->pc); - t_gen_cc_jmp(env_btarget, c); - tcg_temp_free(c); - dc->base.is_jmp = DISAS_JUMP; - } + if (dc->base.is_jmp != DISAS_NEXT) { + return; } /* Force an update if the per-tb cpu state has changed. */ - if (dc->base.is_jmp == DISAS_NEXT && dc->cpustate_changed) { + if (dc->cpustate_changed) { dc->base.is_jmp = DISAS_UPDATE_NEXT; return; } @@ -3281,8 +3255,7 @@ static void cris_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs) * If we can detect the length of the next insn easily, we should. * In the meantime, simply stop when we do cross. */ - if (dc->base.is_jmp == DISAS_NEXT - && ((dc->pc ^ dc->base.pc_first) & TARGET_PAGE_MASK) != 0) { + if ((dc->pc ^ dc->base.pc_first) & TARGET_PAGE_MASK) { dc->base.is_jmp = DISAS_TOO_MANY; } } @@ -3312,6 +3285,49 @@ static void cris_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu) cris_evaluate_flags(dc); + /* Evaluate delayed branch destination and fold to another is_jmp case. */ + if (is_jmp == DISAS_DBRANCH) { + if (dc->base.tb->flags & 7) { + t_gen_movi_env_TN(dslot, 0); + } + + switch (dc->jmp) { + case JMP_DIRECT: + npc = dc->jmp_pc; + is_jmp = dc->cpustate_changed ? DISAS_UPDATE_NEXT : DISAS_TOO_MANY; + break; + + case JMP_DIRECT_CC: + /* + * Use a conditional branch if either taken or not-taken path + * can use goto_tb. If neither can, then treat it as indirect. + */ + if (likely(!dc->base.singlestep_enabled) + && likely(!dc->cpustate_changed) + && (use_goto_tb(dc, dc->jmp_pc) || use_goto_tb(dc, npc))) { + TCGLabel *not_taken = gen_new_label(); + + tcg_gen_brcondi_tl(TCG_COND_EQ, env_btaken, 0, not_taken); + gen_goto_tb(dc, 1, dc->jmp_pc); + gen_set_label(not_taken); + + /* not-taken case handled below. */ + is_jmp = DISAS_TOO_MANY; + break; + } + tcg_gen_movi_tl(env_btarget, dc->jmp_pc); + /* fall through */ + + case JMP_INDIRECT: + t_gen_cc_jmp(env_btarget, tcg_constant_tl(npc)); + is_jmp = dc->cpustate_changed ? DISAS_UPDATE : DISAS_JUMP; + break; + + default: + g_assert_not_reached(); + } + } + if (unlikely(dc->base.singlestep_enabled)) { switch (is_jmp) { case DISAS_TOO_MANY: From patchwork Tue Jun 22 15:48:17 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1495774 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=BiF+Wimt; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4G8WH10DWmz9sRf for ; Wed, 23 Jun 2021 01:56:45 +1000 (AEST) Received: from localhost ([::1]:38488 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lvilW-0005aC-OX for incoming@patchwork.ozlabs.org; Tue, 22 Jun 2021 11:56:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57280) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvidj-0005JO-Iv for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:39 -0400 Received: from mail-pj1-x1032.google.com ([2607:f8b0:4864:20::1032]:39440) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lvida-0005Kx-OI for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:39 -0400 Received: by mail-pj1-x1032.google.com with SMTP id c7-20020a17090ad907b029016faeeab0ccso1973542pjv.4 for ; Tue, 22 Jun 2021 08:48:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=pPAbZ+NnbuJu6Y7yeuOPLB6kF5Goh866R12FC5UPwXY=; b=BiF+WimtNMMr3Qk/G23pq2oza8a3MBPQlT7pRnY+8O8TPkDUN9zyeVY4ZccW1153lS 9kEVCzuLTD+MRAyda/BtPYb7eQPJMk21T9haF9K0MGpR/Wjjwaau7aoYKnJekdIxUuXU 8iZeYqX1MKYk5UJagESlOBIAODuBVJ/AOz/sXVQf7le0k+iYab0Dl7jKAhIIr8eNegZk fti8NjKP6EV6lMkOxBKltyvRajFIYptQOsoyE+yT4ui5JEmt2Z6hLvX/rPvuHYXUMusZ dIj46+dFwK8GxOJ0ou1XMhSHU7yow2Uo2aKebAfwIiSTofTbCJ7GtbewTsI+1rFU9P0V T6AQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=pPAbZ+NnbuJu6Y7yeuOPLB6kF5Goh866R12FC5UPwXY=; b=GV126NuuCJ0BxqWkPzxTVdHcWfwp4Tx85O0MVjMPE6NabgBgqdm1IXZnnnh/fnSO2E 1C0zj2lNKCBusLALxRkyxYDF+TxvHvFvWq2eCdI/tLBlt1A+vF2vxQM2Ky2tNaZ5KUJj +95ryTOEPNrsnet36HpTvP7O4rFeVgEHGLnyBSWRBXhN+wVVO1WdzBS2x8mLKktKd/At jwmoCuraiuUWhlb/zsdsmvfpP/b6pOVzIow0ASW+xYb8ztaHtA7ng054DS6pVVpgzTcq PSaPPOnmq0gj9GhGc5UDzhRP2kU7YxqKao32QbcWJieoUvORoyNEQh1NpmlZ9X4/HXQ6 nz/g== X-Gm-Message-State: AOAM533FA0CmKYLvH//U2Drztny773jZV04gMe3J0bMfHScKKcWn7GVU 1P2j3JhxJnth76zUBvEKib8jYybVXi+K8Q== X-Google-Smtp-Source: ABdhPJwrYnom5zwUXDCW5gZttoWeDI4BaUNwtWF8+ejYK73zvPlEiG+4t25xO5m1iUi8sb2EjuTRKw== X-Received: by 2002:a17:90a:e284:: with SMTP id d4mr4687211pjz.124.1624376909457; Tue, 22 Jun 2021 08:48:29 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id x13sm2898769pjh.30.2021.06.22.08.48.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Jun 2021 08:48:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 12/15] target/cris: Use tcg_gen_lookup_and_goto_ptr Date: Tue, 22 Jun 2021 08:48:17 -0700 Message-Id: <20210622154820.1978982-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210622154820.1978982-1-richard.henderson@linaro.org> References: <20210622154820.1978982-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::1032; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1032.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: edgar.iglesias@gmail.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" We can use this in gen_goto_tb and for DISAS_JUMP to indirectly chain to the next TB. Signed-off-by: Richard Henderson --- target/cris/translate.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/target/cris/translate.c b/target/cris/translate.c index f58f6f2e5e..ea6efe19d9 100644 --- a/target/cris/translate.c +++ b/target/cris/translate.c @@ -546,7 +546,7 @@ static void gen_goto_tb(DisasContext *dc, int n, target_ulong dest) tcg_gen_exit_tb(dc->base.tb, n); } else { tcg_gen_movi_tl(env_pc, dest); - tcg_gen_exit_tb(NULL, 0); + tcg_gen_lookup_and_goto_ptr(); } } @@ -3352,6 +3352,8 @@ static void cris_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu) tcg_gen_movi_tl(env_pc, npc); /* fall through */ case DISAS_JUMP: + tcg_gen_lookup_and_goto_ptr(); + break; case DISAS_UPDATE: /* Indicate that interupts must be re-evaluated before the next TB. */ tcg_gen_exit_tb(NULL, 0); From patchwork Tue Jun 22 15:48:18 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1495778 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=sfHOrJXg; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4G8WLD2GLgz9sT6 for ; Wed, 23 Jun 2021 01:59:32 +1000 (AEST) Received: from localhost ([::1]:48360 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lvioE-0003j4-1m for incoming@patchwork.ozlabs.org; Tue, 22 Jun 2021 11:59:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57260) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvidg-0005F9-R5 for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:36 -0400 Received: from mail-pg1-x533.google.com ([2607:f8b0:4864:20::533]:33718) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lvidb-0005Lr-8R for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:36 -0400 Received: by mail-pg1-x533.google.com with SMTP id e20so17454885pgg.0 for ; Tue, 22 Jun 2021 08:48:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=N/lN13zaTHZB/kVsExqcKdAsEK0/M5Qen0CO6QpX8H8=; b=sfHOrJXgZ7p/0GEO6UzlRgLke9CLZYOrprOMfiA4EzPg8G03hqfY5vMi8zWbjz5j2d mptRCjoIln4CTyoNXiAzg/2v/OcNPGBxbuv68FKYpGrC6wuG7TtZo16IsG4bFDCX7QiM e4eL6gT17SWsW3/dhTmpdXPMGfejZjkLyB0useaSwL3Uvx0FgRLo2qvU/kqm9O87dcg0 MBHPRxVrjuf1gPXGGlpPfwbmmNJACYyD8C1ycRWJZCn0904BOVPwgbvJ3V/K4QUpYa26 c8EI1NFuBiQsdACD/kqf56BGPYTAet7Xf7zZ3hOhgEnOO9j9F48KFYMw5x5azgFX2eHL Ztkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=N/lN13zaTHZB/kVsExqcKdAsEK0/M5Qen0CO6QpX8H8=; b=CrcRFiHsIJHiNGTzL/TgEGF8o0Ts/OzsifXUXT0VculCdPapN0vbspLGqWpJe71V3V BRZHyQKFxS2S9rc2AEraU/0+8EU3whKt+4rWvgj8TflT1amMsFinUlv21dwu8dwJq/XK MAyS3WERj44BBIbDbZP35mPNRCw0/5kgqNH1ebTrIe7f7yym79rDpbKIt2hL/kZyZdSo qJUrZK+u/7YXj8RB2rhuGWI0dmt3MNXrFMO9q7MF2kKm9bc+GYRkBSqm67drCy8y5tFa WaXn1kyGCF05wmOndBsRYvYlO3qduSEZHOZnUg9fL6Jw7nOql1vO3brtxwMBeX5Jh2x1 v2lQ== X-Gm-Message-State: AOAM533NBmRyf0HeqY53I19sFlyXGMtE88lARJDzEihY/6JucBDXWwiH /FhIuPaqeLjqy5d5UhNAdNKwrPO4rCyRlw== X-Google-Smtp-Source: ABdhPJzI7btic9gJ9tslkVGE9debAJXQcmd05Ncfg5xoAp1Smp+daU5Y2DLGw1JhtbjDzlz3cInlnA== X-Received: by 2002:aa7:8507:0:b029:2ea:559:da5 with SMTP id v7-20020aa785070000b02902ea05590da5mr4169508pfn.45.1624376910016; Tue, 22 Jun 2021 08:48:30 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id x13sm2898769pjh.30.2021.06.22.08.48.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Jun 2021 08:48:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 13/15] target/cris: Improve JMP_INDIRECT Date: Tue, 22 Jun 2021 08:48:18 -0700 Message-Id: <20210622154820.1978982-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210622154820.1978982-1-richard.henderson@linaro.org> References: <20210622154820.1978982-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::533; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x533.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: edgar.iglesias@gmail.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Use movcond instead of brcond to set env_pc. Discard the btarget and btaken variables to improve register allocation and avoid unnecessary writeback. Signed-off-by: Richard Henderson --- target/cris/translate.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/target/cris/translate.c b/target/cris/translate.c index ea6efe19d9..05be0a41bd 100644 --- a/target/cris/translate.c +++ b/target/cris/translate.c @@ -522,17 +522,6 @@ static void t_gen_swapr(TCGv d, TCGv s) tcg_temp_free(org_s); } -static void t_gen_cc_jmp(TCGv pc_true, TCGv pc_false) -{ - TCGLabel *l1 = gen_new_label(); - - /* Conditional jmp. */ - tcg_gen_mov_tl(env_pc, pc_false); - tcg_gen_brcondi_tl(TCG_COND_EQ, env_btaken, 0, l1); - tcg_gen_mov_tl(env_pc, pc_true); - gen_set_label(l1); -} - static bool use_goto_tb(DisasContext *dc, target_ulong dest) { return ((dest ^ dc->base.pc_first) & TARGET_PAGE_MASK) == 0; @@ -3319,8 +3308,17 @@ static void cris_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu) /* fall through */ case JMP_INDIRECT: - t_gen_cc_jmp(env_btarget, tcg_constant_tl(npc)); + tcg_gen_movcond_tl(TCG_COND_NE, env_pc, + env_btaken, tcg_constant_tl(0), + env_btarget, tcg_constant_tl(npc)); is_jmp = dc->cpustate_changed ? DISAS_UPDATE : DISAS_JUMP; + + /* + * We have now consumed btaken and btarget. Hint to the + * tcg compiler that the writeback to env may be dropped. + */ + tcg_gen_discard_tl(env_btaken); + tcg_gen_discard_tl(env_btarget); break; default: From patchwork Tue Jun 22 15:48:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1495766 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=JrKRtVYI; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4G8WBB4zDYz9sRf for ; Wed, 23 Jun 2021 01:52:34 +1000 (AEST) Received: from localhost ([::1]:49892 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lvihU-0002XG-CZ for incoming@patchwork.ozlabs.org; Tue, 22 Jun 2021 11:52:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57258) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvidg-0005Eo-FF for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:36 -0400 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]:35665) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lvidc-0005Ma-3s for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:36 -0400 Received: by mail-pj1-x1033.google.com with SMTP id pf4-20020a17090b1d84b029016f6699c3f2so2008642pjb.0 for ; Tue, 22 Jun 2021 08:48:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=jNYcTdY0tgpC6WMieF5n4+EqywMO5iR2r/bf+GYbaDw=; b=JrKRtVYIZG9TqyN4uQtORZFRThDGU+HgmBRn2GG763go/l2xlh5IVNj1dExRad3956 T5FNNGQ/MG3LX/2QYVFJMsiBpgXYBxRt4ZnipHCrTAqfuydIhY/UIAoWs4M/E0WZMdHd gQKcD7IwpBSSiEA1tXFkHtCis55JzNGTTvNBUuF7HD/npLpTwL/5bo4oPKFKiMxXvRSA Tnc+y5+LKTbfjskRjjWPnWSJODLdELjmpthcNvhOFQT/oBes/F2cdiNDE+crtXEH1DSK 5mdj9E1SZSiD/1vw+Umws68R6hER3GOvcttO/7bJY5I9oaXaf17pY4dpgC9IcjJYEBa5 Vqew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=jNYcTdY0tgpC6WMieF5n4+EqywMO5iR2r/bf+GYbaDw=; b=DtQd507jCqoBTkwS1fCA10sKTKCDmsobNZ9sxk6YS13V508pAkUS0hDmxe1iRFuTEx eofhClkJhdLZ2+7Ok4Pgu7n2A76Hr4bmUE+gh1IYiIkdSJZGH1PcPeCgEHih4qiD42A1 T9qrp/VlhsXhsSCFWOdJ6dDd/o8guROp3jZOoAHcbOFYYeaWOyF2bpTS71JVjQoH2gyw 66tmqTSYlOQyVvFDV8eA+BQXlElfA/VpXAnFD9Jfsmr5FvuccVDplnWGBpz18iHg12Bw zuBhtfb+fKQMm9EYfOBV5uvJnQXfVkJnrFpAhkQVdJ8k/IOuw5J0mXrPdbZGDHgeWow1 QJaQ== X-Gm-Message-State: AOAM533+jJdNQWYTX2TR3mZn2ip4dXVu1WOqZt8ctQDQ0Kzr8p4Dvlh8 QzGSxPkZiO83oWXzr6+8nBpM/V3L224Vhg== X-Google-Smtp-Source: ABdhPJyg11VRHAGOUc6us7prMgjWk+CfhD9uDgDJ+RFEhMtAXA0Myu4TB2im85DHdojkgFyyjC3oAA== X-Received: by 2002:a17:90a:7401:: with SMTP id a1mr4670611pjg.57.1624376910757; Tue, 22 Jun 2021 08:48:30 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id x13sm2898769pjh.30.2021.06.22.08.48.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Jun 2021 08:48:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 14/15] target/cris: Remove dc->flagx_known Date: Tue, 22 Jun 2021 08:48:19 -0700 Message-Id: <20210622154820.1978982-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210622154820.1978982-1-richard.henderson@linaro.org> References: <20210622154820.1978982-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1033.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: edgar.iglesias@gmail.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Ever since 2a44f7f17364, flagx_known is always true. Fold away all of the tests against the flag. Signed-off-by: Richard Henderson --- target/cris/translate.c | 99 ++++++++------------------------- target/cris/translate_v10.c.inc | 6 +- 2 files changed, 24 insertions(+), 81 deletions(-) diff --git a/target/cris/translate.c b/target/cris/translate.c index 05be0a41bd..45548ffb5e 100644 --- a/target/cris/translate.c +++ b/target/cris/translate.c @@ -120,8 +120,6 @@ typedef struct DisasContext { int cc_x_uptodate; /* 1 - ccs, 2 - known | X_FLAG. 0 not up-to-date. */ int flags_uptodate; /* Whether or not $ccs is up-to-date. */ - int flagx_known; /* Whether or not flags_x has the x flag known at - translation time. */ int flags_x; int clear_x; /* Clear x after this insn? */ @@ -377,66 +375,26 @@ static inline void t_gen_add_flag(TCGv d, int flag) static inline void t_gen_addx_carry(DisasContext *dc, TCGv d) { - if (dc->flagx_known) { - if (dc->flags_x) { - TCGv c; - - c = tcg_temp_new(); - t_gen_mov_TN_preg(c, PR_CCS); - /* C flag is already at bit 0. */ - tcg_gen_andi_tl(c, c, C_FLAG); - tcg_gen_add_tl(d, d, c); - tcg_temp_free(c); - } - } else { - TCGv x, c; + if (dc->flags_x) { + TCGv c = tcg_temp_new(); - x = tcg_temp_new(); - c = tcg_temp_new(); - t_gen_mov_TN_preg(x, PR_CCS); - tcg_gen_mov_tl(c, x); - - /* Propagate carry into d if X is set. Branch free. */ + t_gen_mov_TN_preg(c, PR_CCS); + /* C flag is already at bit 0. */ tcg_gen_andi_tl(c, c, C_FLAG); - tcg_gen_andi_tl(x, x, X_FLAG); - tcg_gen_shri_tl(x, x, 4); - - tcg_gen_and_tl(x, x, c); - tcg_gen_add_tl(d, d, x); - tcg_temp_free(x); + tcg_gen_add_tl(d, d, c); tcg_temp_free(c); } } static inline void t_gen_subx_carry(DisasContext *dc, TCGv d) { - if (dc->flagx_known) { - if (dc->flags_x) { - TCGv c; - - c = tcg_temp_new(); - t_gen_mov_TN_preg(c, PR_CCS); - /* C flag is already at bit 0. */ - tcg_gen_andi_tl(c, c, C_FLAG); - tcg_gen_sub_tl(d, d, c); - tcg_temp_free(c); - } - } else { - TCGv x, c; + if (dc->flags_x) { + TCGv c = tcg_temp_new(); - x = tcg_temp_new(); - c = tcg_temp_new(); - t_gen_mov_TN_preg(x, PR_CCS); - tcg_gen_mov_tl(c, x); - - /* Propagate carry into d if X is set. Branch free. */ + t_gen_mov_TN_preg(c, PR_CCS); + /* C flag is already at bit 0. */ tcg_gen_andi_tl(c, c, C_FLAG); - tcg_gen_andi_tl(x, x, X_FLAG); - tcg_gen_shri_tl(x, x, 4); - - tcg_gen_and_tl(x, x, c); - tcg_gen_sub_tl(d, d, x); - tcg_temp_free(x); + tcg_gen_sub_tl(d, d, c); tcg_temp_free(c); } } @@ -541,11 +499,9 @@ static void gen_goto_tb(DisasContext *dc, int n, target_ulong dest) static inline void cris_clear_x_flag(DisasContext *dc) { - if (dc->flagx_known && dc->flags_x) { + if (dc->flags_x) { dc->flags_uptodate = 0; } - - dc->flagx_known = 1; dc->flags_x = 0; } @@ -630,12 +586,10 @@ static void cris_evaluate_flags(DisasContext *dc) break; } - if (dc->flagx_known) { - if (dc->flags_x) { - tcg_gen_ori_tl(cpu_PR[PR_CCS], cpu_PR[PR_CCS], X_FLAG); - } else if (dc->cc_op == CC_OP_FLAGS) { - tcg_gen_andi_tl(cpu_PR[PR_CCS], cpu_PR[PR_CCS], ~X_FLAG); - } + if (dc->flags_x) { + tcg_gen_ori_tl(cpu_PR[PR_CCS], cpu_PR[PR_CCS], X_FLAG); + } else if (dc->cc_op == CC_OP_FLAGS) { + tcg_gen_andi_tl(cpu_PR[PR_CCS], cpu_PR[PR_CCS], ~X_FLAG); } dc->flags_uptodate = 1; } @@ -670,16 +624,11 @@ static void cris_update_cc_op(DisasContext *dc, int op, int size) static inline void cris_update_cc_x(DisasContext *dc) { /* Save the x flag state at the time of the cc snapshot. */ - if (dc->flagx_known) { - if (dc->cc_x_uptodate == (2 | dc->flags_x)) { - return; - } - tcg_gen_movi_tl(cc_x, dc->flags_x); - dc->cc_x_uptodate = 2 | dc->flags_x; - } else { - tcg_gen_andi_tl(cc_x, cpu_PR[PR_CCS], X_FLAG); - dc->cc_x_uptodate = 1; + if (dc->cc_x_uptodate == (2 | dc->flags_x)) { + return; } + tcg_gen_movi_tl(cc_x, dc->flags_x); + dc->cc_x_uptodate = 2 | dc->flags_x; } /* Update cc prior to executing ALU op. Needs source operands untouched. */ @@ -1131,7 +1080,7 @@ static void gen_store (DisasContext *dc, TCGv addr, TCGv val, /* Conditional writes. We only support the kind were X and P are known at translation time. */ - if (dc->flagx_known && dc->flags_x && (dc->tb_flags & P_FLAG)) { + if (dc->flags_x && (dc->tb_flags & P_FLAG)) { dc->postinc = 0; cris_evaluate_flags(dc); tcg_gen_ori_tl(cpu_PR[PR_CCS], cpu_PR[PR_CCS], C_FLAG); @@ -1140,7 +1089,7 @@ static void gen_store (DisasContext *dc, TCGv addr, TCGv val, tcg_gen_qemu_st_tl(val, addr, mem_index, MO_TE + ctz32(size)); - if (dc->flagx_known && dc->flags_x) { + if (dc->flags_x) { cris_evaluate_flags(dc); tcg_gen_andi_tl(cpu_PR[PR_CCS], cpu_PR[PR_CCS], ~C_FLAG); } @@ -1727,8 +1676,8 @@ static int dec_addc_r(CPUCRISState *env, DisasContext *dc) LOG_DIS("addc $r%u, $r%u\n", dc->op1, dc->op2); cris_evaluate_flags(dc); + /* Set for this insn. */ - dc->flagx_known = 1; dc->flags_x = X_FLAG; cris_cc_mask(dc, CC_MASK_NZVC); @@ -2015,7 +1964,6 @@ static int dec_setclrf(CPUCRISState *env, DisasContext *dc) } if (flags & X_FLAG) { - dc->flagx_known = 1; if (set) { dc->flags_x = X_FLAG; } else { @@ -2479,7 +2427,6 @@ static int dec_addc_mr(CPUCRISState *env, DisasContext *dc) cris_evaluate_flags(dc); /* Set for this insn. */ - dc->flagx_known = 1; dc->flags_x = X_FLAG; cris_alu_m_alloc_temps(t); @@ -3139,7 +3086,6 @@ static void cris_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs) dc->ppc = pc_start; dc->pc = pc_start; dc->flags_uptodate = 1; - dc->flagx_known = 1; dc->flags_x = tb_flags & X_FLAG; dc->cc_x_uptodate = 0; dc->cc_mask = 0; @@ -3215,7 +3161,6 @@ static void cris_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs) } /* Fold unhandled changes to X_FLAG into cpustate_changed. */ - dc->cpustate_changed |= !dc->flagx_known; dc->cpustate_changed |= dc->flags_x != (dc->base.tb->flags & X_FLAG); /* diff --git a/target/cris/translate_v10.c.inc b/target/cris/translate_v10.c.inc index 4ab43dc404..f500e93447 100644 --- a/target/cris/translate_v10.c.inc +++ b/target/cris/translate_v10.c.inc @@ -106,9 +106,8 @@ static void gen_store_v10(DisasContext *dc, TCGv addr, TCGv val, cris_store_direct_jmp(dc); } - /* Conditional writes. We only support the kind were X is known - at translation time. */ - if (dc->flagx_known && dc->flags_x) { + /* Conditional writes. */ + if (dc->flags_x) { gen_store_v10_conditional(dc, addr, val, size, mem_index); return; } @@ -376,7 +375,6 @@ static unsigned int dec10_setclrf(DisasContext *dc) if (flags & X_FLAG) { - dc->flagx_known = 1; if (set) dc->flags_x = X_FLAG; else From patchwork Tue Jun 22 15:48:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1495776 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=pxraErOE; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4G8WKL2QxPz9sRf for ; Wed, 23 Jun 2021 01:58:46 +1000 (AEST) Received: from localhost ([::1]:45648 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lvinU-0001xN-2E for incoming@patchwork.ozlabs.org; Tue, 22 Jun 2021 11:58:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57286) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvidk-0005LA-Je for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:40 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]:36781) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lvidc-0005Mn-IJ for qemu-devel@nongnu.org; Tue, 22 Jun 2021 11:48:40 -0400 Received: by mail-pl1-x632.google.com with SMTP id u2so1928714plf.3 for ; Tue, 22 Jun 2021 08:48:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=BEFrU6ndUASVjpTaaDjSOSL65OCRSsx6DfEnmxbUsrM=; b=pxraErOEmP8CVTnw5MtbgUg/3POk9RnJSyAcZJNn8J6aidMKEpjXnPXYpC4tRc3ADO BaOxFx5thnuZRMlUyDz0iEVwrpI0eRFYfvpfAQUo98sG+NnOhrY9ZMG/xqWXTM55vbhI ewvetw1Z1dXbw76tuWUbCGkjBkJp04I+lJMyGlLaknpcYRRrEd+UXkV/c+P8ND5NOEFe xcpne0QgoYxZTyTfAA6Rmz7ILo09ceZlxKDNtdz7BRAeVBiJxrnH+Na7w6TUEx9N2xel 6JNRuWLXfw9jmCOv1g4uqDJ8QVQzibAqWgYyp18PqfPmWcwzcPX9DA6VrxDJDjr4xwl1 m3rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BEFrU6ndUASVjpTaaDjSOSL65OCRSsx6DfEnmxbUsrM=; b=qhAEqk8qbkfrPSLsBMawBcRQnuito3DQ1ik4dsxqHuTj+oii1XR6h1G4brzpcdpe7Z 87F3s5648mjc7ytgpsLg2prHwj9dbdR6YITU7VitkQd6ZV2e6BZP0VCipkXUa0DqoX2e p+gXnKPniNbgvZ83z4zNHkBDi9YHWj0v2ZKcHri4AnCGjJcmpj+KNbGLg0aTNHYQgrga JotLB3uMt/Jwk3PheQ6KXFrav5Q8MzxmuUqW/0Ae6oYni8j1aB2rVjM1x13dhZ4PWAzf LIHzbHRXEUourNyPN1iyzgbQbPAgH4J2+XWqVrLdccPn6oBnheb1kRVjg67qFgp0eRTT VbpA== X-Gm-Message-State: AOAM5319YAGQoxoRnOsElBzkgfgLJ+KCclhEsABf2++/ftFsoA+N1hOZ ZkUoLGAHJFM1RWXDeWfZj0jti9dUBDvHSw== X-Google-Smtp-Source: ABdhPJzCMX+//+Ik6koHiCvQitRDQ6pJZp824Wj5+tlqgd+lBax9uILsJ6lpj3Zje0iaFkfSuFgJBg== X-Received: by 2002:a17:90a:4592:: with SMTP id v18mr4495634pjg.132.1624376911334; Tue, 22 Jun 2021 08:48:31 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id x13sm2898769pjh.30.2021.06.22.08.48.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Jun 2021 08:48:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 15/15] target/cris: Do not exit tb for X_FLAG changes Date: Tue, 22 Jun 2021 08:48:20 -0700 Message-Id: <20210622154820.1978982-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210622154820.1978982-1-richard.henderson@linaro.org> References: <20210622154820.1978982-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x632.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: edgar.iglesias@gmail.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" We always know the exact value of X, that's all that matters. This avoids splitting the TB e.g. between "ax" and "addq". Signed-off-by: Richard Henderson --- target/cris/translate.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/target/cris/translate.c b/target/cris/translate.c index 45548ffb5e..78cc70a320 100644 --- a/target/cris/translate.c +++ b/target/cris/translate.c @@ -3160,9 +3160,6 @@ static void cris_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs) cris_clear_x_flag(dc); } - /* Fold unhandled changes to X_FLAG into cpustate_changed. */ - dc->cpustate_changed |= dc->flags_x != (dc->base.tb->flags & X_FLAG); - /* * All branches are delayed branches, handled immediately below. * We don't expect to see odd combinations of exit conditions.