From nobody Sun May 5 06:06:47 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1624166831085281.4152791364212; Sat, 19 Jun 2021 22:27:11 -0700 (PDT) Received: from localhost ([::1]:43850 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lupzC-0000bJ-4K for importer2@patchew.org; Sun, 20 Jun 2021 01:27:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46566) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lupxt-0006zG-KN for qemu-devel@nongnu.org; Sun, 20 Jun 2021 01:25:49 -0400 Received: from mail-pg1-x534.google.com ([2607:f8b0:4864:20::534]:46734) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lupxr-00085e-0V for qemu-devel@nongnu.org; Sun, 20 Jun 2021 01:25:49 -0400 Received: by mail-pg1-x534.google.com with SMTP id n12so2599741pgs.13 for ; Sat, 19 Jun 2021 22:25:46 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id 21sm11409741pfh.103.2021.06.19.22.25.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 19 Jun 2021 22:25:45 -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=pGPuQ96khA6BN7ttYpkCEpnz8SyOo+2mAqDfZ6XIx6k=; b=tifq7i5T+DiJ5HC4Y/B8fUo0N8oNUvy6KY2Q5Sz5oU+fZYQRl2xITD0/O+EygaZhU1 dRL4zOtpXHUOeM9LYb5EOOIeSIzyxFnVDTYnB1xLq+un0b2MWTheOwRDXVwpFCbrwWek 9hJgCcaFQgXIsovQBfmHoYIPjue2hFLJLbyI/9nnmJxnyie8l1HFybZ8nuZbuaxWPFgH 2cZRrmfC1fR2i3W9q8udSSkqwLfs+0l5yZNkReOyJwpzgxbkrwvAgDNgoUCtCWDFAgXn Wr9KDyS/xK2m/lau7/0DeEsHa+5C0kTBBtuqCfgO1vPspdCDM393LcNKWHb+lZQwp924 Xfog== 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=pGPuQ96khA6BN7ttYpkCEpnz8SyOo+2mAqDfZ6XIx6k=; b=HQ94Fl4hJZEBQ1zcD2lvR2wnxHJ/fYg4GKyn6XmEMM8uHP+A+Fpj3KAJgZ0SQRaqx5 HtdtQKaX5WQv6AwVKNTLNrF2CMb5tpea8TTqWf836Kl2FxK9av6ipGoprSVdDlA8v2rE Y2k43scGwSkkH2QppMSJzC9cP9KcwhE44Ie3NAwDD/GTm9WtwLcq50tzf4x46SY49VSx 5pRtiAagDNJhPjtcGloXavYUDrkzMBKDOyjHK4UDv8idpQ1o7tKkKhCmWuWV5Q1guuEY P+wg/Zy99SG7HYCdFRsPGYk53rQBTZfcYDQlTcYU8AEhIJ/AooGb+EVBYXFSqZkW1/fe xR7Q== X-Gm-Message-State: AOAM532FWdugaz1Lp42vxO55ZPHHjoJuWbIn8W7OeDIfVxn3NSKMM5Ya qTFRtMrszd+JSAPQDcCYyiAZ3ASMdN9Fzw== X-Google-Smtp-Source: ABdhPJxgGHBC9EbQqEaampSYcQibNjvXyJdSUP6PNDD+/4mgjCMC6dF/1nbqrz+RMxB8+ixjdt4Sbw== X-Received: by 2002:aa7:9ed2:0:b029:2fc:b328:ad67 with SMTP id r18-20020aa79ed20000b02902fcb328ad67mr13518330pfq.63.1624166745409; Sat, 19 Jun 2021 22:25:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 1/7] target/nios2: Replace DISAS_TB_JUMP with DISAS_NORETURN Date: Sat, 19 Jun 2021 22:25:37 -0700 Message-Id: <20210620052543.1315091-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210620052543.1315091-1-richard.henderson@linaro.org> References: <20210620052543.1315091-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; 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: marex@denx.de, crwulff@gmail.com Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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/nios2/translate.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/target/nios2/translate.c b/target/nios2/translate.c index 399f22d938..388fae93a2 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -37,7 +37,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 */ =20 #define INSTRUCTION_FLG(func, flags) { (func), (flags) } #define INSTRUCTION(func) \ @@ -209,7 +208,7 @@ static void jmpi(DisasContext *dc, uint32_t code, uint3= 2_t flags) { J_TYPE(instr, code); gen_goto_tb(dc, 0, (dc->pc & 0xF0000000) | (instr.imm26 << 2)); - dc->is_jmp =3D DISAS_TB_JUMP; + dc->is_jmp =3D DISAS_NORETURN; } =20 static void call(DisasContext *dc, uint32_t code, uint32_t flags) @@ -269,7 +268,7 @@ static void br(DisasContext *dc, uint32_t code, uint32_= t flags) I_TYPE(instr, code); =20 gen_goto_tb(dc, 0, dc->pc + 4 + (instr.imm16.s & -4)); - dc->is_jmp =3D DISAS_TB_JUMP; + dc->is_jmp =3D DISAS_NORETURN; } =20 static void gen_bxx(DisasContext *dc, uint32_t code, uint32_t flags) @@ -281,7 +280,7 @@ static void gen_bxx(DisasContext *dc, uint32_t code, ui= nt32_t flags) gen_goto_tb(dc, 0, dc->pc + 4); gen_set_label(l1); gen_goto_tb(dc, 1, dc->pc + 4 + (instr.imm16.s & -4)); - dc->is_jmp =3D DISAS_TB_JUMP; + dc->is_jmp =3D DISAS_NORETURN; } =20 /* Comparison instructions */ @@ -883,7 +882,6 @@ void gen_intermediate_code(CPUState *cs, TranslationBlo= ck *tb, int max_insns) break; =20 case DISAS_NORETURN: - case DISAS_TB_JUMP: /* nothing more to generate */ break; } --=20 2.25.1 From nobody Sun May 5 06:06:47 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1624166933518310.0011214374116; Sat, 19 Jun 2021 22:28:53 -0700 (PDT) Received: from localhost ([::1]:49392 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1luq0q-0004Ei-IO for importer2@patchew.org; Sun, 20 Jun 2021 01:28:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46584) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lupxu-0006zO-3q for qemu-devel@nongnu.org; Sun, 20 Jun 2021 01:25:50 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]:42953) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lupxr-00085i-7v for qemu-devel@nongnu.org; Sun, 20 Jun 2021 01:25:49 -0400 Received: by mail-pl1-x62c.google.com with SMTP id v13so6749578ple.9 for ; Sat, 19 Jun 2021 22:25:46 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id 21sm11409741pfh.103.2021.06.19.22.25.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 19 Jun 2021 22:25:45 -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=vOSYcR5bhsrCjJ6PbKl43sOwPlBS+THlM2yD0LGuQ1A=; b=ybLIjJb1Dpqgv3q28ldpZA3BixuGtLgFsrhUFaN+3fj6fiiaD/QdLVma5sun4yYxFW 1sU1TsVfJS9HW2qQ6aC/uwZpB/rG6/oTtK8yYCsbWVHcYwCC1utXcANieK5TuWsgKkJN p+hZ65p5kUwuL69t+o131WXsfbq7+MlVd5oix210OBZsWUzU3bYKkW1saWHcEH7BPyhj QfeWXOs2NrTvVm/Z1NuEeZEw57kuaHtAjypSg9jBVpdfUTlZJ5wDf0f+0eOhrhb1HsrE tC6MCvpc1Gjzf+rwhGlvCTtePXqhtFYrD7xUHtBnz+ExL/HLbo3Ara9x0kTZYr2gQOFY B73Q== 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=vOSYcR5bhsrCjJ6PbKl43sOwPlBS+THlM2yD0LGuQ1A=; b=tAU1ebmp1sutAr1JF387hYILIw5Yuv2h+ciB30d35SD9sG1USsdaW1tWr3Mil/OWlu EdqNcD0/ZYa7vodsbPealsjrA+JsRZHHs7T2d9rMZJGVgaObedRwnTiRxxfWpWJluE5q BZkulRu87PZ8SDc4Xd+to2mGx+qHd2AIS9ELyIgzFkVhrUngo86ui/faTPg103FIGw3L jtgWaM2GHz0ew2yzjBTLDaLTdnF2AjFwYGGEiJMHx/wFU9DWGYcdCqNs9wa1WRbLhmSn Ut2eL0yAOXOIbb5TjtIejK2El2CpxlBqMDuGPGQSlMt1Vk5iLAFLsYOGmdzumBYYTNsm rcKA== X-Gm-Message-State: AOAM532R8lXACWIMytMsjulUDpVkzAGs4zeNt66q7IyMl8imWo6VGo7D JoU/HUHIvM05hLG9CxpFxDAe1YaLuN5VmQ== X-Google-Smtp-Source: ABdhPJzm4qZURbyTD6T42TIop5j80txW9v/Ovsax6mvWgQlwP2MriwFqP8BWQQK16DjgMxuwhetwcQ== X-Received: by 2002:a17:902:ab96:b029:117:1f9a:9ad4 with SMTP id f22-20020a170902ab96b02901171f9a9ad4mr12062621plr.21.1624166746058; Sat, 19 Jun 2021 22:25:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 2/7] target/nios2: Use global cpu_env Date: Sat, 19 Jun 2021 22:25:38 -0700 Message-Id: <20210620052543.1315091-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210620052543.1315091-1-richard.henderson@linaro.org> References: <20210620052543.1315091-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.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: marex@denx.de, crwulff@gmail.com Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" We do not need to copy this into DisasContext. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/nios2/translate.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/target/nios2/translate.c b/target/nios2/translate.c index 388fae93a2..39538e1870 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -97,7 +97,6 @@ } =20 typedef struct DisasContext { - TCGv_ptr cpu_env; TCGv *cpu_R; TCGv_i32 zero; int is_jmp; @@ -147,7 +146,7 @@ static void t_gen_helper_raise_exception(DisasContext *= dc, TCGv_i32 tmp =3D tcg_const_i32(index); =20 tcg_gen_movi_tl(dc->cpu_R[R_PC], dc->pc); - gen_helper_raise_exception(dc->cpu_env, tmp); + gen_helper_raise_exception(cpu_env, tmp); tcg_temp_free_i32(tmp); dc->is_jmp =3D DISAS_NORETURN; } @@ -474,7 +473,7 @@ static void rdctl(DisasContext *dc, uint32_t code, uint= 32_t flags) tcg_gen_mov_tl(dc->cpu_R[instr.c], dc->cpu_R[instr.imm5 + CR_B= ASE]); #ifdef DEBUG_MMU TCGv_i32 tmp =3D tcg_const_i32(instr.imm5 + CR_BASE); - gen_helper_mmu_read_debug(dc->cpu_R[instr.c], dc->cpu_env, tmp= ); + gen_helper_mmu_read_debug(dc->cpu_R[instr.c], cpu_env, tmp); tcg_temp_free_i32(tmp); #endif } @@ -504,7 +503,7 @@ static void wrctl(DisasContext *dc, uint32_t code, uint= 32_t flags) { #if !defined(CONFIG_USER_ONLY) TCGv_i32 tmp =3D tcg_const_i32(instr.imm5 + CR_BASE); - gen_helper_mmu_write(dc->cpu_env, tmp, load_gpr(dc, instr.a)); + gen_helper_mmu_write(cpu_env, tmp, load_gpr(dc, instr.a)); tcg_temp_free_i32(tmp); #endif break; @@ -521,7 +520,7 @@ static void wrctl(DisasContext *dc, uint32_t code, uint= 32_t flags) if (tb_cflags(dc->tb) & CF_USE_ICOUNT) { gen_io_start(); } - gen_helper_check_interrupts(dc->cpu_env); + gen_helper_check_interrupts(cpu_env); dc->is_jmp =3D DISAS_UPDATE; } #endif @@ -817,7 +816,6 @@ void gen_intermediate_code(CPUState *cs, TranslationBlo= ck *tb, int max_insns) int num_insns; =20 /* Initialize DC */ - dc->cpu_env =3D cpu_env; dc->cpu_R =3D cpu_R; dc->is_jmp =3D DISAS_NEXT; dc->pc =3D tb->pc; --=20 2.25.1 From nobody Sun May 5 06:06:47 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1624166836189706.8740352528785; Sat, 19 Jun 2021 22:27:16 -0700 (PDT) Received: from localhost ([::1]:44066 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lupzH-0000jw-4z for importer2@patchew.org; Sun, 20 Jun 2021 01:27:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46618) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lupxv-0006zr-Tb for qemu-devel@nongnu.org; Sun, 20 Jun 2021 01:25:52 -0400 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]:55847) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lupxs-00086P-1i for qemu-devel@nongnu.org; Sun, 20 Jun 2021 01:25:51 -0400 Received: by mail-pj1-x102d.google.com with SMTP id l11so3677350pji.5 for ; Sat, 19 Jun 2021 22:25:47 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id 21sm11409741pfh.103.2021.06.19.22.25.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 19 Jun 2021 22:25:46 -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=iHT9l/kJSWfvrH1GZXwE0W4sJmdZTH+C0ob8jvO252s=; b=LFkNFgWOBfI7vpE5SyaCT7lX3lhhWqg7IjqOJNEtweTgMDUDX8j1f98sPxHc+7mHyN EMZSnaHayxP+2FORegkO296CF2LXjc5ypr4M3rwbJ1Az6REpjQ5PWWa6we2tU5ndAUsq Ls7OMxbcul/qa/AiwFqk6BQiL7Slvijpw1KqrPcNaGRIU6i3X4w8h9K1nW0BlUzGCd1+ lMh3f9tlA2iLS6BVs2ZxxK0yHeYvsin03DPKip43s77RZe7CUtU0kF1H2pVAs/y1XpFH pRPX2gdZlnJQ1He7kI6doLBJHeA/toLCTf18jLCrhJIzd3f6JZ/G5D4N2VpZjmpNRPc9 Wwgw== 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=iHT9l/kJSWfvrH1GZXwE0W4sJmdZTH+C0ob8jvO252s=; b=byG2rFfTvXL/zQc6Jb94WJHOrpZ/XwbvQlgBgLPCt44aJHYwFC5i/MTlwAeEkeNL+S aQzrgh3rcVHjwhDGGUdWEq5Dxo0AyAy+u4VyBLZFhle0iHnrtWZFRXgP1l6cq1FC5GRO euwYwDJCfzFhotuAmRUep/iqSMHPiznDDtag/vQOy7TATegoXdOmscGGb2ywm6djQ3D5 zz3wj2Ga/fbMlk7w7l3d0cZ6FKDx/GR7AUSFaN2Y9C8Jivn6IzmuNTNvhAgWbmVo1VoC 3/RCjPvQmiIY9H6a7WrOhaCxnl65aenKdJ5myZYG7XHygGvitwstEdTzW+RQdZ9m/Iw0 rzTg== X-Gm-Message-State: AOAM532WSHVOd94aywW0WRq7zOHQ9OlUf1XQuh2N5nW5Lukv2QAO2ESS rQmQfsahj5cuq3Mk6S7yHcpme+YxxTtgsw== X-Google-Smtp-Source: ABdhPJy6jgfUSRT+ixv+w/rynbS4Rlpb9CirSOJjdXjAArcHSxcINU0ENTjIqO6pORt9DhqBANGVqw== X-Received: by 2002:a17:902:9004:b029:f0:b40d:38d with SMTP id a4-20020a1709029004b02900f0b40d038dmr12174997plp.85.1624166746687; Sat, 19 Jun 2021 22:25:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 3/7] target/nios2: Use global cpu_R Date: Sat, 19 Jun 2021 22:25:39 -0700 Message-Id: <20210620052543.1315091-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210620052543.1315091-1-richard.henderson@linaro.org> References: <20210620052543.1315091-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102d; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102d.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: marex@denx.de, crwulff@gmail.com Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" We do not need to copy this into DisasContext. Signed-off-by: Richard Henderson --- target/nios2/translate.c | 73 +++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 39 deletions(-) diff --git a/target/nios2/translate.c b/target/nios2/translate.c index 39538e1870..6bdd388bd8 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -97,7 +97,6 @@ } =20 typedef struct DisasContext { - TCGv *cpu_R; TCGv_i32 zero; int is_jmp; target_ulong pc; @@ -106,6 +105,8 @@ typedef struct DisasContext { bool singlestep_enabled; } DisasContext; =20 +static TCGv cpu_R[NUM_CORE_REGS]; + typedef struct Nios2Instruction { void (*handler)(DisasContext *dc, uint32_t code, uint32_t flags); uint32_t flags; @@ -134,7 +135,7 @@ static TCGv load_zero(DisasContext *dc) static TCGv load_gpr(DisasContext *dc, uint8_t reg) { if (likely(reg !=3D R_ZERO)) { - return dc->cpu_R[reg]; + return cpu_R[reg]; } else { return load_zero(dc); } @@ -145,7 +146,7 @@ static void t_gen_helper_raise_exception(DisasContext *= dc, { TCGv_i32 tmp =3D tcg_const_i32(index); =20 - tcg_gen_movi_tl(dc->cpu_R[R_PC], dc->pc); + tcg_gen_movi_tl(cpu_R[R_PC], dc->pc); gen_helper_raise_exception(cpu_env, tmp); tcg_temp_free_i32(tmp); dc->is_jmp =3D DISAS_NORETURN; @@ -170,10 +171,10 @@ static void gen_goto_tb(DisasContext *dc, int n, uint= 32_t dest) =20 if (use_goto_tb(dc, dest)) { tcg_gen_goto_tb(n); - tcg_gen_movi_tl(dc->cpu_R[R_PC], dest); + tcg_gen_movi_tl(cpu_R[R_PC], dest); tcg_gen_exit_tb(tb, n); } else { - tcg_gen_movi_tl(dc->cpu_R[R_PC], dest); + tcg_gen_movi_tl(cpu_R[R_PC], dest); tcg_gen_exit_tb(NULL, 0); } } @@ -212,7 +213,7 @@ static void jmpi(DisasContext *dc, uint32_t code, uint3= 2_t flags) =20 static void call(DisasContext *dc, uint32_t code, uint32_t flags) { - tcg_gen_movi_tl(dc->cpu_R[R_RA], dc->pc + 4); + tcg_gen_movi_tl(cpu_R[R_RA], dc->pc + 4); jmpi(dc, code, flags); } =20 @@ -234,7 +235,7 @@ static void gen_ldx(DisasContext *dc, uint32_t code, ui= nt32_t flags) * the Nios2 CPU. */ if (likely(instr.b !=3D R_ZERO)) { - data =3D dc->cpu_R[instr.b]; + data =3D cpu_R[instr.b]; } else { data =3D tcg_temp_new(); } @@ -275,7 +276,7 @@ static void gen_bxx(DisasContext *dc, uint32_t code, ui= nt32_t flags) I_TYPE(instr, code); =20 TCGLabel *l1 =3D gen_new_label(); - tcg_gen_brcond_tl(flags, dc->cpu_R[instr.a], dc->cpu_R[instr.b], l1); + tcg_gen_brcond_tl(flags, cpu_R[instr.a], cpu_R[instr.b], l1); gen_goto_tb(dc, 0, dc->pc + 4); gen_set_label(l1); gen_goto_tb(dc, 1, dc->pc + 4 + (instr.imm16.s & -4)); @@ -287,8 +288,7 @@ static void gen_bxx(DisasContext *dc, uint32_t code, ui= nt32_t flags) static void (fname)(DisasContext *dc, uint32_t code, uint32_t flags) = \ { = \ I_TYPE(instr, (code)); = \ - tcg_gen_setcondi_tl(flags, (dc)->cpu_R[instr.b], (dc)->cpu_R[instr.a],= \ - (op3)); = \ + tcg_gen_setcondi_tl(flags, cpu_R[instr.b], cpu_R[instr.a], (op3)); = \ } =20 gen_i_cmpxx(gen_cmpxxsi, instr.imm16.s) @@ -302,10 +302,9 @@ static void (fname)(DisasContext *dc, uint32_t code, u= int32_t flags) \ if (unlikely(instr.b =3D=3D R_ZERO)) { /* Store to R_ZERO is ignored *= / \ return; = \ } else if (instr.a =3D=3D R_ZERO) { /* MOVxI optimizations */ = \ - tcg_gen_movi_tl(dc->cpu_R[instr.b], (resimm) ? (op3) : 0); = \ + tcg_gen_movi_tl(cpu_R[instr.b], (resimm) ? (op3) : 0); = \ } else { = \ - tcg_gen_##insn##_tl((dc)->cpu_R[instr.b], (dc)->cpu_R[instr.a], = \ - (op3)); = \ + tcg_gen_##insn##_tl(cpu_R[instr.b], cpu_R[instr.a], (op3)); = \ } = \ } =20 @@ -400,8 +399,8 @@ static const Nios2Instruction i_type_instructions[] =3D= { */ static void eret(DisasContext *dc, uint32_t code, uint32_t flags) { - tcg_gen_mov_tl(dc->cpu_R[CR_STATUS], dc->cpu_R[CR_ESTATUS]); - tcg_gen_mov_tl(dc->cpu_R[R_PC], dc->cpu_R[R_EA]); + tcg_gen_mov_tl(cpu_R[CR_STATUS], cpu_R[CR_ESTATUS]); + tcg_gen_mov_tl(cpu_R[R_PC], cpu_R[R_EA]); =20 dc->is_jmp =3D DISAS_JUMP; } @@ -409,7 +408,7 @@ static void eret(DisasContext *dc, uint32_t code, uint3= 2_t flags) /* PC <- ra */ static void ret(DisasContext *dc, uint32_t code, uint32_t flags) { - tcg_gen_mov_tl(dc->cpu_R[R_PC], dc->cpu_R[R_RA]); + tcg_gen_mov_tl(cpu_R[R_PC], cpu_R[R_RA]); =20 dc->is_jmp =3D DISAS_JUMP; } @@ -417,7 +416,7 @@ static void ret(DisasContext *dc, uint32_t code, uint32= _t flags) /* PC <- ba */ static void bret(DisasContext *dc, uint32_t code, uint32_t flags) { - tcg_gen_mov_tl(dc->cpu_R[R_PC], dc->cpu_R[R_BA]); + tcg_gen_mov_tl(cpu_R[R_PC], cpu_R[R_BA]); =20 dc->is_jmp =3D DISAS_JUMP; } @@ -427,7 +426,7 @@ static void jmp(DisasContext *dc, uint32_t code, uint32= _t flags) { R_TYPE(instr, code); =20 - tcg_gen_mov_tl(dc->cpu_R[R_PC], load_gpr(dc, instr.a)); + tcg_gen_mov_tl(cpu_R[R_PC], load_gpr(dc, instr.a)); =20 dc->is_jmp =3D DISAS_JUMP; } @@ -438,7 +437,7 @@ static void nextpc(DisasContext *dc, uint32_t code, uin= t32_t flags) R_TYPE(instr, code); =20 if (likely(instr.c !=3D R_ZERO)) { - tcg_gen_movi_tl(dc->cpu_R[instr.c], dc->pc + 4); + tcg_gen_movi_tl(cpu_R[instr.c], dc->pc + 4); } } =20 @@ -450,8 +449,8 @@ static void callr(DisasContext *dc, uint32_t code, uint= 32_t flags) { R_TYPE(instr, code); =20 - tcg_gen_mov_tl(dc->cpu_R[R_PC], load_gpr(dc, instr.a)); - tcg_gen_movi_tl(dc->cpu_R[R_RA], dc->pc + 4); + tcg_gen_mov_tl(cpu_R[R_PC], load_gpr(dc, instr.a)); + tcg_gen_movi_tl(cpu_R[R_RA], dc->pc + 4); =20 dc->is_jmp =3D DISAS_JUMP; } @@ -470,10 +469,10 @@ static void rdctl(DisasContext *dc, uint32_t code, ui= nt32_t flags) { #if !defined(CONFIG_USER_ONLY) if (likely(instr.c !=3D R_ZERO)) { - tcg_gen_mov_tl(dc->cpu_R[instr.c], dc->cpu_R[instr.imm5 + CR_B= ASE]); + tcg_gen_mov_tl(cpu_R[instr.c], cpu_R[instr.imm5 + CR_BASE]); #ifdef DEBUG_MMU TCGv_i32 tmp =3D tcg_const_i32(instr.imm5 + CR_BASE); - gen_helper_mmu_read_debug(dc->cpu_R[instr.c], cpu_env, tmp); + gen_helper_mmu_read_debug(cpu_R[instr.c], cpu_env, tmp); tcg_temp_free_i32(tmp); #endif } @@ -483,7 +482,7 @@ static void rdctl(DisasContext *dc, uint32_t code, uint= 32_t flags) =20 default: if (likely(instr.c !=3D R_ZERO)) { - tcg_gen_mov_tl(dc->cpu_R[instr.c], dc->cpu_R[instr.imm5 + CR_B= ASE]); + tcg_gen_mov_tl(cpu_R[instr.c], cpu_R[instr.imm5 + CR_BASE]); } break; } @@ -510,7 +509,7 @@ static void wrctl(DisasContext *dc, uint32_t code, uint= 32_t flags) } =20 default: - tcg_gen_mov_tl(dc->cpu_R[instr.imm5 + CR_BASE], load_gpr(dc, instr= .a)); + tcg_gen_mov_tl(cpu_R[instr.imm5 + CR_BASE], load_gpr(dc, instr.a)); break; } =20 @@ -531,8 +530,8 @@ static void gen_cmpxx(DisasContext *dc, uint32_t code, = uint32_t flags) { R_TYPE(instr, code); if (likely(instr.c !=3D R_ZERO)) { - tcg_gen_setcond_tl(flags, dc->cpu_R[instr.c], dc->cpu_R[instr.a], - dc->cpu_R[instr.b]); + tcg_gen_setcond_tl(flags, cpu_R[instr.c], cpu_R[instr.a], + cpu_R[instr.b]); } } =20 @@ -542,8 +541,7 @@ static void (fname)(DisasContext *dc, uint32_t code, ui= nt32_t flags) \ { = \ R_TYPE(instr, (code)); = \ if (likely(instr.c !=3D R_ZERO)) { = \ - tcg_gen_##insn((dc)->cpu_R[instr.c], load_gpr((dc), instr.a), = \ - (op3)); = \ + tcg_gen_##insn(cpu_R[instr.c], load_gpr((dc), instr.a), (op3)); = \ } = \ } =20 @@ -567,8 +565,8 @@ static void (fname)(DisasContext *dc, uint32_t code, ui= nt32_t flags) \ R_TYPE(instr, (code)); \ if (likely(instr.c !=3D R_ZERO)) { \ TCGv t0 =3D tcg_temp_new(); \ - tcg_gen_##insn(t0, dc->cpu_R[instr.c], \ - load_gpr(dc, instr.a), load_gpr(dc, instr.b)); \ + tcg_gen_##insn(t0, cpu_R[instr.c], \ + load_gpr(dc, instr.a), load_gpr(dc, instr.b)); \ tcg_temp_free(t0); \ } \ } @@ -584,7 +582,7 @@ static void (fname)(DisasContext *dc, uint32_t code, ui= nt32_t flags) \ if (likely(instr.c !=3D R_ZERO)) { = \ TCGv t0 =3D tcg_temp_new(); = \ tcg_gen_andi_tl(t0, load_gpr((dc), instr.b), 31); = \ - tcg_gen_##insn((dc)->cpu_R[instr.c], load_gpr((dc), instr.a), t0);= \ + tcg_gen_##insn(cpu_R[instr.c], load_gpr((dc), instr.a), t0); = \ tcg_temp_free(t0); = \ } = \ } @@ -618,8 +616,8 @@ static void divs(DisasContext *dc, uint32_t code, uint3= 2_t flags) tcg_gen_or_tl(t2, t2, t3); tcg_gen_movi_tl(t3, 0); tcg_gen_movcond_tl(TCG_COND_NE, t1, t2, t3, t2, t1); - tcg_gen_div_tl(dc->cpu_R[instr.c], t0, t1); - tcg_gen_ext32s_tl(dc->cpu_R[instr.c], dc->cpu_R[instr.c]); + tcg_gen_div_tl(cpu_R[instr.c], t0, t1); + tcg_gen_ext32s_tl(cpu_R[instr.c], cpu_R[instr.c]); =20 tcg_temp_free(t3); tcg_temp_free(t2); @@ -644,8 +642,8 @@ static void divu(DisasContext *dc, uint32_t code, uint3= 2_t flags) tcg_gen_ext32u_tl(t0, load_gpr(dc, instr.a)); tcg_gen_ext32u_tl(t1, load_gpr(dc, instr.b)); tcg_gen_movcond_tl(TCG_COND_EQ, t1, t1, t2, t3, t1); - tcg_gen_divu_tl(dc->cpu_R[instr.c], t0, t1); - tcg_gen_ext32s_tl(dc->cpu_R[instr.c], dc->cpu_R[instr.c]); + tcg_gen_divu_tl(cpu_R[instr.c], t0, t1); + tcg_gen_ext32s_tl(cpu_R[instr.c], cpu_R[instr.c]); =20 tcg_temp_free(t3); tcg_temp_free(t2); @@ -794,8 +792,6 @@ static const char * const regnames[] =3D { "rpc" }; =20 -static TCGv cpu_R[NUM_CORE_REGS]; - #include "exec/gen-icount.h" =20 static void gen_exception(DisasContext *dc, uint32_t excp) @@ -816,7 +812,6 @@ void gen_intermediate_code(CPUState *cs, TranslationBlo= ck *tb, int max_insns) int num_insns; =20 /* Initialize DC */ - dc->cpu_R =3D cpu_R; dc->is_jmp =3D DISAS_NEXT; dc->pc =3D tb->pc; dc->tb =3D tb; --=20 2.25.1 From nobody Sun May 5 06:06:47 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 162416707420159.95882085646042; Sat, 19 Jun 2021 22:31:14 -0700 (PDT) Received: from localhost ([::1]:55068 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1luq37-000819-0y for importer2@patchew.org; Sun, 20 Jun 2021 01:31:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46622) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lupxx-00071N-Oq for qemu-devel@nongnu.org; Sun, 20 Jun 2021 01:25:53 -0400 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]:43599) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lupxs-00086T-Og for qemu-devel@nongnu.org; Sun, 20 Jun 2021 01:25:53 -0400 Received: by mail-pj1-x102b.google.com with SMTP id x21-20020a17090aa395b029016e25313bfcso8256603pjp.2 for ; Sat, 19 Jun 2021 22:25:48 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id 21sm11409741pfh.103.2021.06.19.22.25.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 19 Jun 2021 22:25:46 -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=97hEOAE2T1zJUCGrVXEvOQZzlJTC2bynntRqChN3bDw=; b=qGmKkoDdpZTu9LMsFXYQdbeu0V+75bx9qv/q8aNz9G0qyfsXzmzjpkQuVo7cHSOnvF aXRpPTJ1pqgAyx1RfwGGn1gYHRghOnrMmbmOZ7yRiA2PRFjsXIwCZKHBLD/iCgkN5c/f W8BzVJP8ZgyMGtuSAQJjyxNxnrea8H4tW1ViM0r2XgkLII3xiK6p7//fQe5eUCaMN2VE SAMqzXFw2/1x43FHOS1LiTJHWCNdVRgHKiO9Jsrmq5EB4fKSxRW2V6yvsHQzWwwDiLZ+ 7PI7I6fjfLN2hrSugV79JzB3pHKJxltywKqzGrJ3ADf2oDHo7Lzn1UeK8u/HoiDu+LMY pyZA== 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=97hEOAE2T1zJUCGrVXEvOQZzlJTC2bynntRqChN3bDw=; b=ty0CZ/qF12LWVw7BggRcV7/ydYxSo/UMGRA8de/Gx5kiAVG3KTv0I6QdS3rZTWgPaA VfZ/V7+NRfKmP1Fui39zDaLTVYrS53VRg4MLyTkXbA65E5pN3pqDp/ZknfiVqCcnabpH 89260W4f0zlQNuuRqCKIOIWMo4MOTzmGewy3rUEsy1eSWSllcJrylhmPl06R4pK+cX4X ZV/Mqt8cDKf8R89PzP6BuRBpDWBj5ri0E62joHeT5D/XbwYONuWroiVh8F7afHQg6+HS lsmRQaR4L9VCvPnTJjQygW89Y7C6wVBCvr+W7MJ6am6tD6N1RY+ordAn/UT5HGaGrV9x uVIw== X-Gm-Message-State: AOAM531JzQaocszY+plBV8h1qzAnBkno0jPhkrMUu5n4fTbh8aT7VCYY v17czQLAl8124nVUjzaI+kXDvptd8vUVPw== X-Google-Smtp-Source: ABdhPJz57o4PxpZXAFKkoeFgVwIHJNdTVhHzSBd77zBr96yLnhyuDMAQk7U0TBaZ2fBWD2rd/slo1w== X-Received: by 2002:a17:903:230c:b029:121:aa77:36d4 with SMTP id d12-20020a170903230cb0290121aa7736d4mr9555997plh.20.1624166747143; Sat, 19 Jun 2021 22:25:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 4/7] target/nios2: Add DisasContextBase to DisasContext Date: Sat, 19 Jun 2021 22:25:40 -0700 Message-Id: <20210620052543.1315091-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210620052543.1315091-1-richard.henderson@linaro.org> References: <20210620052543.1315091-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; 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: marex@denx.de, crwulff@gmail.com Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Migrate the is_jmp, tb and singlestep_enabled fields from DisasContext into the base. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/nios2/translate.c | 51 +++++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/target/nios2/translate.c b/target/nios2/translate.c index 6bdd388bd8..31653b7912 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -97,12 +97,10 @@ } =20 typedef struct DisasContext { + DisasContextBase base; TCGv_i32 zero; - int is_jmp; target_ulong pc; - TranslationBlock *tb; int mem_idx; - bool singlestep_enabled; } DisasContext; =20 static TCGv cpu_R[NUM_CORE_REGS]; @@ -149,17 +147,17 @@ static void t_gen_helper_raise_exception(DisasContext= *dc, tcg_gen_movi_tl(cpu_R[R_PC], dc->pc); gen_helper_raise_exception(cpu_env, tmp); tcg_temp_free_i32(tmp); - dc->is_jmp =3D DISAS_NORETURN; + dc->base.is_jmp =3D DISAS_NORETURN; } =20 static bool use_goto_tb(DisasContext *dc, uint32_t dest) { - if (unlikely(dc->singlestep_enabled)) { + if (unlikely(dc->base.singlestep_enabled)) { return false; } =20 #ifndef CONFIG_USER_ONLY - return (dc->tb->pc & TARGET_PAGE_MASK) =3D=3D (dest & TARGET_PAGE_MASK= ); + return (dc->base.pc_first & TARGET_PAGE_MASK) =3D=3D (dest & TARGET_PA= GE_MASK); #else return true; #endif @@ -167,7 +165,7 @@ static bool use_goto_tb(DisasContext *dc, uint32_t dest) =20 static void gen_goto_tb(DisasContext *dc, int n, uint32_t dest) { - TranslationBlock *tb =3D dc->tb; + const TranslationBlock *tb =3D dc->base.tb; =20 if (use_goto_tb(dc, dest)) { tcg_gen_goto_tb(n); @@ -186,7 +184,7 @@ static void gen_excp(DisasContext *dc, uint32_t code, u= int32_t flags) =20 static void gen_check_supervisor(DisasContext *dc) { - if (dc->tb->flags & CR_STATUS_U) { + if (dc->base.tb->flags & CR_STATUS_U) { /* CPU in user mode, privileged instruction called, stop. */ t_gen_helper_raise_exception(dc, EXCP_SUPERI); } @@ -208,7 +206,7 @@ static void jmpi(DisasContext *dc, uint32_t code, uint3= 2_t flags) { J_TYPE(instr, code); gen_goto_tb(dc, 0, (dc->pc & 0xF0000000) | (instr.imm26 << 2)); - dc->is_jmp =3D DISAS_NORETURN; + dc->base.is_jmp =3D DISAS_NORETURN; } =20 static void call(DisasContext *dc, uint32_t code, uint32_t flags) @@ -268,7 +266,7 @@ static void br(DisasContext *dc, uint32_t code, uint32_= t flags) I_TYPE(instr, code); =20 gen_goto_tb(dc, 0, dc->pc + 4 + (instr.imm16.s & -4)); - dc->is_jmp =3D DISAS_NORETURN; + dc->base.is_jmp =3D DISAS_NORETURN; } =20 static void gen_bxx(DisasContext *dc, uint32_t code, uint32_t flags) @@ -280,7 +278,7 @@ static void gen_bxx(DisasContext *dc, uint32_t code, ui= nt32_t flags) gen_goto_tb(dc, 0, dc->pc + 4); gen_set_label(l1); gen_goto_tb(dc, 1, dc->pc + 4 + (instr.imm16.s & -4)); - dc->is_jmp =3D DISAS_NORETURN; + dc->base.is_jmp =3D DISAS_NORETURN; } =20 /* Comparison instructions */ @@ -402,7 +400,7 @@ static void eret(DisasContext *dc, uint32_t code, uint3= 2_t flags) tcg_gen_mov_tl(cpu_R[CR_STATUS], cpu_R[CR_ESTATUS]); tcg_gen_mov_tl(cpu_R[R_PC], cpu_R[R_EA]); =20 - dc->is_jmp =3D DISAS_JUMP; + dc->base.is_jmp =3D DISAS_JUMP; } =20 /* PC <- ra */ @@ -410,7 +408,7 @@ static void ret(DisasContext *dc, uint32_t code, uint32= _t flags) { tcg_gen_mov_tl(cpu_R[R_PC], cpu_R[R_RA]); =20 - dc->is_jmp =3D DISAS_JUMP; + dc->base.is_jmp =3D DISAS_JUMP; } =20 /* PC <- ba */ @@ -418,7 +416,7 @@ static void bret(DisasContext *dc, uint32_t code, uint3= 2_t flags) { tcg_gen_mov_tl(cpu_R[R_PC], cpu_R[R_BA]); =20 - dc->is_jmp =3D DISAS_JUMP; + dc->base.is_jmp =3D DISAS_JUMP; } =20 /* PC <- rA */ @@ -428,7 +426,7 @@ static void jmp(DisasContext *dc, uint32_t code, uint32= _t flags) =20 tcg_gen_mov_tl(cpu_R[R_PC], load_gpr(dc, instr.a)); =20 - dc->is_jmp =3D DISAS_JUMP; + dc->base.is_jmp =3D DISAS_JUMP; } =20 /* rC <- PC + 4 */ @@ -452,7 +450,7 @@ static void callr(DisasContext *dc, uint32_t code, uint= 32_t flags) tcg_gen_mov_tl(cpu_R[R_PC], load_gpr(dc, instr.a)); tcg_gen_movi_tl(cpu_R[R_RA], dc->pc + 4); =20 - dc->is_jmp =3D DISAS_JUMP; + dc->base.is_jmp =3D DISAS_JUMP; } =20 /* rC <- ctlN */ @@ -516,11 +514,11 @@ static void wrctl(DisasContext *dc, uint32_t code, ui= nt32_t flags) /* If interrupts were enabled using WRCTL, trigger them. */ #if !defined(CONFIG_USER_ONLY) if ((instr.imm5 + CR_BASE) =3D=3D CR_STATUS) { - if (tb_cflags(dc->tb) & CF_USE_ICOUNT) { + if (tb_cflags(dc->base.tb) & CF_USE_ICOUNT) { gen_io_start(); } gen_helper_check_interrupts(cpu_env); - dc->is_jmp =3D DISAS_UPDATE; + dc->base.is_jmp =3D DISAS_UPDATE; } #endif } @@ -801,7 +799,7 @@ static void gen_exception(DisasContext *dc, uint32_t ex= cp) tcg_gen_movi_tl(cpu_R[R_PC], dc->pc); gen_helper_raise_exception(cpu_env, tmp); tcg_temp_free_i32(tmp); - dc->is_jmp =3D DISAS_NORETURN; + dc->base.is_jmp =3D DISAS_NORETURN; } =20 /* generate intermediate code for basic block 'tb'. */ @@ -812,11 +810,16 @@ void gen_intermediate_code(CPUState *cs, TranslationB= lock *tb, int max_insns) int num_insns; =20 /* Initialize DC */ - dc->is_jmp =3D DISAS_NEXT; + + dc->base.tb =3D tb; + dc->base.singlestep_enabled =3D cs->singlestep_enabled; + dc->base.is_jmp =3D DISAS_NEXT; + dc->base.pc_first =3D tb->pc; + dc->base.pc_next =3D tb->pc; + + dc->zero =3D NULL; dc->pc =3D tb->pc; - dc->tb =3D tb; dc->mem_idx =3D cpu_mmu_index(env, false); - dc->singlestep_enabled =3D cs->singlestep_enabled; =20 /* Set up instruction counts */ num_insns =3D 0; @@ -855,12 +858,12 @@ void gen_intermediate_code(CPUState *cs, TranslationB= lock *tb, int max_insns) * Otherwise the subsequent code could get translated several time= s. * Also stop translation when a page boundary is reached. This * ensures prefetch aborts occur at the right place. */ - } while (!dc->is_jmp && + } while (!dc->base.is_jmp && !tcg_op_buf_full() && num_insns < max_insns); =20 /* Indicate where the next block should start */ - switch (dc->is_jmp) { + switch (dc->base.is_jmp) { case DISAS_NEXT: case DISAS_UPDATE: /* Save the current PC back into the CPU register */ --=20 2.25.1 From nobody Sun May 5 06:06:47 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 162416699456753.76224724303063; Sat, 19 Jun 2021 22:29:54 -0700 (PDT) Received: from localhost ([::1]:52814 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1luq1p-0006VZ-J3 for importer2@patchew.org; Sun, 20 Jun 2021 01:29:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46614) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lupxv-0006zq-AV for qemu-devel@nongnu.org; Sun, 20 Jun 2021 01:25:52 -0400 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]:55848) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lupxt-00087g-1o for qemu-devel@nongnu.org; Sun, 20 Jun 2021 01:25:51 -0400 Received: by mail-pj1-x102e.google.com with SMTP id l11so3677364pji.5 for ; Sat, 19 Jun 2021 22:25:48 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id 21sm11409741pfh.103.2021.06.19.22.25.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 19 Jun 2021 22:25:47 -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=PZMDiz1uJRUfkvRYthCZ9wMCmBUdbqiifzXnkr5GMDc=; b=FDgFhguq6DQpgquIE9tA+cTz3fKjG3DVx0ZHKhXZmpW/FxCrnBKmcFhCD0obDDJ9pG RbH5lBdf/kyj9bvWIqCPgU1b8X0KEoUkocq0o+9/ZTpPCplJy7v3tUv3pMYYI7h55mIR b2gwC4uuILHz+LMQ6KBHwf/mt3xkOtG/DDruLQ5Km7oyH9Z/0ESxmRmDVAEe+QZsjH9T vDR+Z3KsC3qVVK3e41xax4LbpQdJPc9MPFhPbHoZ8vhxAagLMTx7Q8HNleRT87KYLgKR bDIdM13YV8mbon5nv313gJ2UAzrVikzidWNpig1OeDqDg3KKfYnknb+jVrzjObuMyLcx Dm5Q== 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=PZMDiz1uJRUfkvRYthCZ9wMCmBUdbqiifzXnkr5GMDc=; b=FTeNIhH5EiugIjYITyZFuktEWrf0x7lEUoqA1oC5L9L7AfU/Bmq2bY54SfDzF3zrpJ 0uNophZ3Si1I+1HN5jG3lxqb4Htb5QdR/fG3H9DEBtqoykYpbxJyXgzK1FEh1cZNvM5z 5n9410oivQIioPe/T9gfiSrrKgufDtfJlHvTQ/USguuGYiUWiMfkD3yp0T4EoQF6zJvJ MoeA2OrfmcaHv9jf2moOpjb7tp4BufnbXgRwYzoRkCxGmkY5MZ+I1RoRxmcLP9G3tsxf fb00PtD5ordBgtkodSdWLEDhuxFAidg6T5ztg+9ojRCh2dsN9QD/8Sl2rLaw5flcTjqg jmKg== X-Gm-Message-State: AOAM5309X9vuwdzD3CDu/IsooVn9DytGlaxEfXdU/04kXXCuY4eB1EZt 0aGsm6T1bq2JXeAI9xJa5FDR8E5TF0Fx7A== X-Google-Smtp-Source: ABdhPJxn6ir/t43NF/HODdgo/mfITd/8VhB/MK6MVVBXPmKQRSYF4vrKhy+Le1ZZsZVTEIMR6TAGew== X-Received: by 2002:a17:902:9a4c:b029:119:d507:dccd with SMTP id x12-20020a1709029a4cb0290119d507dccdmr11961667plv.55.1624166747694; Sat, 19 Jun 2021 22:25:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 5/7] target/nios2: Convert to TranslatorOps Date: Sat, 19 Jun 2021 22:25:41 -0700 Message-Id: <20210620052543.1315091-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210620052543.1315091-1-richard.henderson@linaro.org> References: <20210620052543.1315091-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102e; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102e.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: marex@denx.de, crwulff@gmail.com Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/nios2/translate.c | 129 +++++++++++++++++++++------------------ 1 file changed, 68 insertions(+), 61 deletions(-) diff --git a/target/nios2/translate.c b/target/nios2/translate.c index 31653b7912..e2c8151193 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -803,75 +803,75 @@ static void gen_exception(DisasContext *dc, uint32_t = excp) } =20 /* generate intermediate code for basic block 'tb'. */ -void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int max_ins= ns) +static void nios2_tr_init_disas_context(DisasContextBase *dcbase, CPUState= *cs) { + DisasContext *dc =3D container_of(dcbase, DisasContext, base); CPUNios2State *env =3D cs->env_ptr; - DisasContext dc1, *dc =3D &dc1; - int num_insns; - - /* Initialize DC */ - - dc->base.tb =3D tb; - dc->base.singlestep_enabled =3D cs->singlestep_enabled; - dc->base.is_jmp =3D DISAS_NEXT; - dc->base.pc_first =3D tb->pc; - dc->base.pc_next =3D tb->pc; + target_ulong pc =3D dc->base.pc_first; =20 dc->zero =3D NULL; - dc->pc =3D tb->pc; + dc->pc =3D pc; dc->mem_idx =3D cpu_mmu_index(env, false); =20 /* Set up instruction counts */ - num_insns =3D 0; - if (max_insns > 1) { - int page_insns =3D (TARGET_PAGE_SIZE - (tb->pc & ~TARGET_PAGE_MASK= )) / 4; - if (max_insns > page_insns) { - max_insns =3D page_insns; - } + if (singlestep || dc->base.singlestep_enabled) { + dc->base.max_insns =3D 1; + } else { + int page_insns =3D (TARGET_PAGE_SIZE - (pc & ~TARGET_PAGE_MASK)) /= 4; + dc->base.max_insns =3D MIN(page_insns, dc->base.max_insns); } +} =20 - gen_tb_start(tb); - do { - tcg_gen_insn_start(dc->pc); - num_insns++; +static void nios2_tr_tb_start(DisasContextBase *db, CPUState *cs) +{ +} =20 - if (unlikely(cpu_breakpoint_test(cs, dc->pc, BP_ANY))) { - gen_exception(dc, EXCP_DEBUG); - /* 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 +=3D 4; - break; - } +static void nios2_tr_insn_start(DisasContextBase *dcbase, CPUState *cs) +{ + tcg_gen_insn_start(dcbase->pc_next); +} =20 - if (num_insns =3D=3D max_insns && (tb_cflags(tb) & CF_LAST_IO)) { - gen_io_start(); - } +static bool nios2_tr_breakpoint_check(DisasContextBase *dcbase, CPUState *= cs, + const CPUBreakpoint *bp) +{ + DisasContext *dc =3D container_of(dcbase, DisasContext, base); =20 - /* Decode an instruction */ - handle_instruction(dc, env); + gen_exception(dc, EXCP_DEBUG); + /* + * 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 +=3D 4; + return true; +} =20 - dc->pc +=3D 4; +static void nios2_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs) +{ + DisasContext *dc =3D container_of(dcbase, DisasContext, base); + CPUNios2State *env =3D cs->env_ptr; =20 - /* Translation stops when a conditional branch is encountered. - * Otherwise the subsequent code could get translated several time= s. - * Also stop translation when a page boundary is reached. This - * ensures prefetch aborts occur at the right place. */ - } while (!dc->base.is_jmp && - !tcg_op_buf_full() && - num_insns < max_insns); + /* Decode an instruction */ + handle_instruction(dc, env); + + dc->base.pc_next +=3D 4; + dc->pc +=3D 4; +} + +static void nios2_tr_tb_stop(DisasContextBase *dcbase, CPUState *cs) +{ + DisasContext *dc =3D container_of(dcbase, DisasContext, base); =20 /* Indicate where the next block should start */ switch (dc->base.is_jmp) { - case DISAS_NEXT: + case DISAS_TOO_MANY: case DISAS_UPDATE: /* Save the current PC back into the CPU register */ tcg_gen_movi_tl(cpu_R[R_PC], dc->pc); tcg_gen_exit_tb(NULL, 0); break; =20 - default: case DISAS_JUMP: /* The jump will already have updated the PC register */ tcg_gen_exit_tb(NULL, 0); @@ -880,25 +880,32 @@ void gen_intermediate_code(CPUState *cs, TranslationB= lock *tb, int max_insns) case DISAS_NORETURN: /* nothing more to generate */ break; + + default: + g_assert_not_reached(); } +} =20 - /* End off the block */ - gen_tb_end(tb, num_insns); +static void nios2_tr_disas_log(const DisasContextBase *dcbase, CPUState *c= pu) +{ + qemu_log("IN: %s\n", lookup_symbol(dcbase->pc_first)); + log_target_disas(cpu, dcbase->pc_first, dcbase->tb->size); +} =20 - /* Mark instruction starts for the final generated instruction */ - tb->size =3D dc->pc - tb->pc; - tb->icount =3D num_insns; +static const TranslatorOps nios2_tr_ops =3D { + .init_disas_context =3D nios2_tr_init_disas_context, + .tb_start =3D nios2_tr_tb_start, + .insn_start =3D nios2_tr_insn_start, + .breakpoint_check =3D nios2_tr_breakpoint_check, + .translate_insn =3D nios2_tr_translate_insn, + .tb_stop =3D nios2_tr_tb_stop, + .disas_log =3D nios2_tr_disas_log, +}; =20 -#ifdef DEBUG_DISAS - if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM) - && qemu_log_in_addr_range(tb->pc)) { - FILE *logfile =3D qemu_log_lock(); - qemu_log("IN: %s\n", lookup_symbol(tb->pc)); - log_target_disas(cs, tb->pc, dc->pc - tb->pc); - qemu_log("\n"); - qemu_log_unlock(logfile); - } -#endif +void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int max_ins= ns) +{ + DisasContext dc; + translator_loop(&nios2_tr_ops, &dc.base, cs, tb, max_insns); } =20 void nios2_cpu_dump_state(CPUState *cs, FILE *f, int flags) --=20 2.25.1 From nobody Sun May 5 06:06:47 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1624167138698856.0013013319692; Sat, 19 Jun 2021 22:32:18 -0700 (PDT) Received: from localhost ([::1]:57332 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1luq49-00019s-DA for importer2@patchew.org; Sun, 20 Jun 2021 01:32:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46624) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lupxy-00072r-H0 for qemu-devel@nongnu.org; Sun, 20 Jun 2021 01:25:54 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]:39542) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lupxt-00088T-KY for qemu-devel@nongnu.org; Sun, 20 Jun 2021 01:25:54 -0400 Received: by mail-pf1-x433.google.com with SMTP id g192so3389263pfb.6 for ; Sat, 19 Jun 2021 22:25:49 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id 21sm11409741pfh.103.2021.06.19.22.25.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 19 Jun 2021 22:25:48 -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=tK/+Hz+jguD/DmBbj1fKqabLd+FiOnfaK8a7Km7K6/I=; b=FZNFSP+dfei2aV+JvPV9d9rsjDtFKRYPrV/umuTNc4DnbMPnC0iY+9NS1yHNKhOA99 uUmIY0gEbe9DIL9+gbdVHVHPyV0wlw7+oGpos9HLX4ZR8T7qmjz787JYTR62RaQhvsxs KttEvYAzD8RxSZ7leI/m3wjuBu5mu3nESCUyMTJgyJVYikWe6Fedoz9ymcLqyIXcvYMq wGuY0c5RnL9Zf3JzHCSs7I3284ol2HkPfrqx359CmZZsb6YMxOGi+9sGYqdJ8GZOh97g nITmGGTRSS8vBfa83cJi9yxk5RYVCGO1XB0wXwTK70zdp0azjtgVxqM8osl6e0A+0Lh3 hG7w== 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=tK/+Hz+jguD/DmBbj1fKqabLd+FiOnfaK8a7Km7K6/I=; b=GnVGE0Q74JNY8jV7HGU3/4qfhJySwReE4htA9OW6iDhHZXU0hZp987hARvZ0mgSucV JVEq1/Uhax5wLsZB0X/ZcnxuIOs9lrYEcXduwnRM89YP8le87yNnUyBMVXyeYNJdbSeJ 6dw7WqiTghZ3asgD6xXBEllLcqFjuXXssehePMLIZP/cQ4GolaRvFastWL6lsup2R77S AjHjfrRkPKgemRu/q+ohVYXgIke/QzKaCUmFCwc2kOdtkaFTR4t6t1XBJdzn4XLeDVgc JoVNBHMkaXSAcOSjXxnog7HrLwdbSfVG+wKQr6TqJVsM4r59XAF3mAgVOha09V9xDt9P B6nw== X-Gm-Message-State: AOAM53134mst+aX1KH6pTq1nEzK/DIcs06tXFE9PJIv6UVPqqZX/3Dak sCKzQB4I09wsxrElHCcrSGgB0XYf2cp1jA== X-Google-Smtp-Source: ABdhPJynoNiuovWj8ZJkBFcZcZG00Qro4EQDTOq5d7+UV9quPYdvBqGFWBXGG/OJebk1ZyZoIskJPA== X-Received: by 2002:a05:6a00:26c6:b029:2f5:358c:6761 with SMTP id p6-20020a056a0026c6b02902f5358c6761mr13330929pfw.50.1624166748397; Sat, 19 Jun 2021 22:25:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 6/7] target/nios2: Remove assignment to env in handle_instruction Date: Sat, 19 Jun 2021 22:25:42 -0700 Message-Id: <20210620052543.1315091-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210620052543.1315091-1-richard.henderson@linaro.org> References: <20210620052543.1315091-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.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: marex@denx.de, crwulff@gmail.com Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Direct assignments to env during translation do not work. As it happens, the only way we can get here is if env->pc is already set to dc->pc. We will trap on the first insn we execute anywhere on the page. Signed-off-by: Richard Henderson --- target/nios2/translate.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/target/nios2/translate.c b/target/nios2/translate.c index e2c8151193..ce4a4c40aa 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -740,14 +740,15 @@ static void handle_instruction(DisasContext *dc, CPUN= ios2State *env) uint32_t code; uint8_t op; const Nios2Instruction *instr; + #if defined(CONFIG_USER_ONLY) /* FIXME: Is this needed ? */ if (dc->pc >=3D 0x1000 && dc->pc < 0x2000) { - env->regs[R_PC] =3D dc->pc; t_gen_helper_raise_exception(dc, 0xaa); return; } #endif + code =3D cpu_ldl_code(env, dc->pc); op =3D get_opcode(code); =20 --=20 2.25.1 From nobody Sun May 5 06:06:47 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1624166936082712.3338791450906; Sat, 19 Jun 2021 22:28:56 -0700 (PDT) Received: from localhost ([::1]:49478 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1luq0s-0004IA-3y for importer2@patchew.org; Sun, 20 Jun 2021 01:28:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46620) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lupxw-00070L-K6 for qemu-devel@nongnu.org; Sun, 20 Jun 2021 01:25:52 -0400 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]:34663) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lupxu-00088a-E7 for qemu-devel@nongnu.org; Sun, 20 Jun 2021 01:25:52 -0400 Received: by mail-pf1-x42a.google.com with SMTP id g6so11097145pfq.1 for ; Sat, 19 Jun 2021 22:25:49 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id 21sm11409741pfh.103.2021.06.19.22.25.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 19 Jun 2021 22:25:48 -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=n4qSVnysY1E8uYLiCdr9A04N8MDgbO/MjR9FZSilMZo=; b=pQj3twemU34HIwHWMb2w70sjRmKKgtMPfrtushO47oEh2JINoY3aLDmrdL7VDcHrKJ kmQSJtPgOg3MQ0/YHgeD06433e+DBg7RlSnzQT1zvGFhVt2lxgeS76nLZnZz2q3jPGwA t01fmTYjbVngMO0WzFl1xn1mHtDryE5d4uxhAI2VOyqbG/AUX0MOEJVpFa4Kng35DVYz 2QqmstD+Tj1DvBqzKqo/Kklb0oeJkQaRmwFIxMcf2OsJO17WdRW3ihXu8XYrYgbjr/Fn JUdCFYviBrvaEykw9vC53S09ND7HZSOBQ73EbHd0513eJUpuzODQbaL///0Fgrz51EfN yVDw== 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=n4qSVnysY1E8uYLiCdr9A04N8MDgbO/MjR9FZSilMZo=; b=qibV0fnFysciXdeio3c8TQw7l/hci7GgA82x+WMpVmby4Gcn2yg3GHJzPSrbr/xVSu FP08wMoYOWYWEGrBT0Zz5RXD6sm7VsXJrbkxJqzkJ6gh+0yoc0M7Zz2L77IKlUA4gQXX qh1xvTgaGfa9A7udIUkZHohsgVBSJUKCpNQNaXUkCIjbhDx4fBITFWziEk8hLa++Pbf8 GrZb2NUjC4Tr32tCD0s2vLyEBKO4VXlWBTQkjDHYDhkZNhB/cN7Pd64gxJfMNEQ79fbl EdBfbCwpZrNHe10JnUl5tvs8rCF9GfvH17jnLnyL/YhgdgqeqVYUshGEXCjMHaVDNfqp qJqg== X-Gm-Message-State: AOAM533ojI5oHkbeAprzrKe5FFt9AH15KHDrZj3M/EfLiDm/7eZfvdpB T6SaFmN8w0TB1k7NEy9Hlsl7302S+YTttQ== X-Google-Smtp-Source: ABdhPJzEISkOq7l+zgSiMtlLLXoeeAc3p4gOMmCf2bXYY2RYbrXsMTEEbjiBhly8EtjWBqn/b8CCSg== X-Received: by 2002:a62:a217:0:b029:2ee:48e1:fd92 with SMTP id m23-20020a62a2170000b02902ee48e1fd92mr12993092pff.55.1624166748931; Sat, 19 Jun 2021 22:25:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 7/7] target/nios2: Clean up goto in handle_instruction Date: Sat, 19 Jun 2021 22:25:43 -0700 Message-Id: <20210620052543.1315091-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210620052543.1315091-1-richard.henderson@linaro.org> References: <20210620052543.1315091-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42a; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42a.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: marex@denx.de, crwulff@gmail.com Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/nios2/translate.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/target/nios2/translate.c b/target/nios2/translate.c index ce4a4c40aa..3f4027ff1b 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -753,7 +753,8 @@ static void handle_instruction(DisasContext *dc, CPUNio= s2State *env) op =3D get_opcode(code); =20 if (unlikely(op >=3D ARRAY_SIZE(i_type_instructions))) { - goto illegal_op; + t_gen_helper_raise_exception(dc, EXCP_ILLEGAL); + return; } =20 dc->zero =3D NULL; @@ -764,11 +765,6 @@ static void handle_instruction(DisasContext *dc, CPUNi= os2State *env) if (dc->zero) { tcg_temp_free(dc->zero); } - - return; - -illegal_op: - t_gen_helper_raise_exception(dc, EXCP_ILLEGAL); } =20 static const char * const regnames[] =3D { --=20 2.25.1