From nobody Mon May 6 05:36:31 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 1624227318217661.7862911437992; Sun, 20 Jun 2021 15:15:18 -0700 (PDT) Received: from localhost ([::1]:35572 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lv5in-0000r0-7i for importer2@patchew.org; Sun, 20 Jun 2021 18:15:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46200) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lv5eW-0001WK-5s for qemu-devel@nongnu.org; Sun, 20 Jun 2021 18:10:52 -0400 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]:46638) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lv5eT-0007qt-EM for qemu-devel@nongnu.org; Sun, 20 Jun 2021 18:10:51 -0400 Received: by mail-pj1-x1030.google.com with SMTP id o10-20020a17090aac0ab029016e92770073so9075837pjq.5 for ; Sun, 20 Jun 2021 15:10:49 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id 135sm11122961pgf.20.2021.06.20.15.10.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 20 Jun 2021 15:10: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=pGPuQ96khA6BN7ttYpkCEpnz8SyOo+2mAqDfZ6XIx6k=; b=pcLYdX/eEh+q/wLgYfmqmbah0sM0kSiMTXDGMKjG6OOFylRxpmPPukMNs9A36LoLJ0 5U28Y1U6/UUhp7wn02dRTPTFILdW0g58MLsZwiucwk8yS7As75Wssw+Pwrtpu18k5G9F WxkuzPEeEQXf+eZSxZy1HuLBNcvu9TGNy1AcHE07RaWHRCeyb7PloSOsScZWS5lCiN6V nsSHA943bNdz4qW7ibZZIvXONYI6LjjCmTAxIftfIvMcKi9Hy7RBaShMZWGxyFCpCsCm MXvTz0gWrXcw3Pead5JQWR7w9e4bJIBBpWNmyUxZ1wS7iOagiamHF1m1tJbA1o5dGmWK r96A== 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=FLz1q3HsWQQEpGLy914C+S5u6xHWBGTf6ursOLlVKk5dzcf9o1GViwxWtExGAfT8M2 CdDlof4qaYZ7QcDVJA2gRduEPCDv6Nq0SiUB29ELb+NDLh8ZxbgHr0RZo23r7OvrTe/7 ZVuzXlw+lU0CweYS8UndF1K43FjC0e/Ar64d8bcibHaaPdwatElFw6i+bO4488iWTycJ QbAEflMxOx5ELIMe2/+SEmLnosyvSCZTEsNAqc6UE8NdE5bWT/P0lRe+0VkoOG953C0O 22ZCuEQE19NFE9WFAgDst2+u9s8R5EkO0f9LG0XblKPrMslBErCXn/VwlmyNqvG8DJer 1hOA== X-Gm-Message-State: AOAM533HUtFsgHcCq+Cx7cxJvhTaSGJDtdRTCY/cLQ0kgIuWofOkmcnv IIcxxMfZa7nI2UJ0NVl6B6ZQ5WvNRc2CQA== X-Google-Smtp-Source: ABdhPJxD0/55fcLm5Ox8WRlZoishPavODfRhzu/SU5JJrWoxDf8wqrL4637L++LcapbghPT7ENx5iw== X-Received: by 2002:a17:90b:3b92:: with SMTP id pc18mr23188832pjb.100.1624227048142; Sun, 20 Jun 2021 15:10:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 1/7] target/nios2: Replace DISAS_TB_JUMP with DISAS_NORETURN Date: Sun, 20 Jun 2021 15:10:40 -0700 Message-Id: <20210620221046.1526418-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210620221046.1526418-1-richard.henderson@linaro.org> References: <20210620221046.1526418-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::1030; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1030.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 Reviewed-by: Peter Maydell --- 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 Mon May 6 05:36:31 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 1624227405065861.265112434908; Sun, 20 Jun 2021 15:16:45 -0700 (PDT) Received: from localhost ([::1]:39050 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lv5kC-0003Ft-4L for importer2@patchew.org; Sun, 20 Jun 2021 18:16:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46248) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lv5eX-0001Z3-Nk for qemu-devel@nongnu.org; Sun, 20 Jun 2021 18:10:53 -0400 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]:40667) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lv5eT-0007qx-SL for qemu-devel@nongnu.org; Sun, 20 Jun 2021 18:10:53 -0400 Received: by mail-pl1-x635.google.com with SMTP id m17so4303711plx.7 for ; Sun, 20 Jun 2021 15:10:49 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id 135sm11122961pgf.20.2021.06.20.15.10.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 20 Jun 2021 15:10: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=vOSYcR5bhsrCjJ6PbKl43sOwPlBS+THlM2yD0LGuQ1A=; b=ksDyy6L1svmn0A53RK+Vj788pHYOCKIAP5A6a+J9eMrtH8wIy+5dDi0RNT1+J2JEbM ncpxXkoObVCw6TbiQsHrBuQvjdMuyETJpHliG8o11WAkzIRFBoH97iLgworclCvqVqBO nA+BdZsKYkEzg7GaWMSN++5uQw8wF4azuMj8OKbRiOFtrd5n5Deg5iMtKEOdNkOUHVJc bsOUX8FOxprCFi0leOT2itgURl1oDrRDSN9MVWJvnhUvMFLhQYjK7wLvg6CdxnodK3vT YEZlFHgGl5uyHA8skf6Ev/Z1+ztuIwPokTqHzYtmbG2BV+yT86Sc11yCqLB7YqaAAXcC 4vtw== 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=SSFs28pXAnN110Wn+X1yeG0nRbvIe1VP6GfribFy18RZoB9lyt6YCbjgl3FoC02NQo SyG/yZTonXmAf7Rw8DE1SM/1yu3Ck3UlAEcM9QsqoyYCjSCMKsbE5eF4rqrYbTBIS/h/ RKL/21tQ3LZb+iN5ddtACE+24WqOUVGDc+iMb5bQEebs8Ey2NgJcUdUzAe6ddp1tylJg CuQ8okvQehm+KBBzC0XJDehlh+ZGD9Vl348xwvvl/k6FaFISjhMYzfY8TwvVKXyRVbaI dRSkPvglhhhmXS2AVogbtq+/ipK8+CGgJsHddkLSmZwt4ufIqTdNo4Et7LxyIefZmzPK GuTA== X-Gm-Message-State: AOAM531XlmMDzoeUGXCAwpSiRqk3ALP+VkhiKUrdLmGVocuUIEs55hPZ 26Mkb1nG0ip/e0Bwge7vLVuIjXMbFvdOgw== X-Google-Smtp-Source: ABdhPJwpcwa5JgMbUGiNrrpDuAN543tN0eCcaIVFGkDqptm9lec3+2QTodWvjecEIGhKLuTS1YdOXQ== X-Received: by 2002:a17:90b:4b91:: with SMTP id lr17mr9570714pjb.69.1624227048632; Sun, 20 Jun 2021 15:10:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 2/7] target/nios2: Use global cpu_env Date: Sun, 20 Jun 2021 15:10:41 -0700 Message-Id: <20210620221046.1526418-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210620221046.1526418-1-richard.henderson@linaro.org> References: <20210620221046.1526418-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::635; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x635.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 Mon May 6 05:36:31 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 1624227220874894.3737244488688; Sun, 20 Jun 2021 15:13:40 -0700 (PDT) Received: from localhost ([::1]:56290 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lv5hD-0004H7-Od for importer2@patchew.org; Sun, 20 Jun 2021 18:13:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46216) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lv5eW-0001XR-RI for qemu-devel@nongnu.org; Sun, 20 Jun 2021 18:10:52 -0400 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]:33550) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lv5eU-0007rB-C2 for qemu-devel@nongnu.org; Sun, 20 Jun 2021 18:10:52 -0400 Received: by mail-pf1-x431.google.com with SMTP id p13so12221864pfw.0 for ; Sun, 20 Jun 2021 15:10:49 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id 135sm11122961pgf.20.2021.06.20.15.10.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 20 Jun 2021 15:10: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=iHT9l/kJSWfvrH1GZXwE0W4sJmdZTH+C0ob8jvO252s=; b=UI11c/jtdEDyWJTJdtnI6Nc/8gzT39IxJVCH/21MJrFepyzunkNdk15bOVbLjSGXg7 SFeTCQ4M+/HtU41aSjBgcEQqbw+gUhOAH3a7XgrZeo0F3ebvAry58N9KcXJNa0nDIirh yVnngOWIllK1eiEmUIlgefhHx5Ak536GYCA72eAyFBMGeQef6BmIKfLtU6OkZMHutGMF cXRkM4idBhnxKOn1MJDOb4UdfUy8CX39pYD9RTfLYcJ/BQoTWqxZfox/Y5QK/iOhD+rv x8/39YAeFrOwXkbQAIaxrOmMEDwuTxhwLADMutLSokdsJrGtsPMqT7CEU7phCYcYTDQ+ XKMA== 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=aFMY8a6L16MbOTLywgqHDdRSk7cLI9nq/FCA2cQnI57iXf0Ysn3E2TI5Ek+xl7zSD0 hpjZzGyYYIdZoBvkp3P5ymphLgVNB29ohKNge1ythhFJtFTpfkRlyN+EfjUAPdiditQ/ slV5FSTi/MCQvSF+WuxBUIQkwOeeWQcDba4N24ldoC6ruSldfpeuV7U1IaBjyWVIx0L8 ovd49IkbZa1hH4CP+efcd/MNr96rfQo+zyPqshfoSw49mqOwkpHi3811uouEnVeq1yxc KpXyhnDR1jo7Z/GrJdOr9HGkKADPuDwDoU2EoMKeedHFNDg4r/ZmGkVoYK9405YFEugy e2Tw== X-Gm-Message-State: AOAM53131em6tZ2B0UAQmUfgTC+QRjBRBlWJMwBkBgq8CMw4flfm8Lje uzl4wajiifRgJuWq1/W3Rxk6dHxGOuYlfg== X-Google-Smtp-Source: ABdhPJy4SfVaXcDXEiUyFFkofAkQ7e5iZcugzO29G4fEZrAFO1RAwEG7NOqW2NI1ZoZ3HPx1d40xQA== X-Received: by 2002:a05:6a00:84d:b029:2fb:3d61:51dd with SMTP id q13-20020a056a00084db02902fb3d6151ddmr16490120pfk.11.1624227049157; Sun, 20 Jun 2021 15:10:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 3/7] target/nios2: Use global cpu_R Date: Sun, 20 Jun 2021 15:10:42 -0700 Message-Id: <20210620221046.1526418-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210620221046.1526418-1-richard.henderson@linaro.org> References: <20210620221046.1526418-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::431; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x431.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 | 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 Mon May 6 05:36:31 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 1624227220184237.18145840968987; Sun, 20 Jun 2021 15:13:40 -0700 (PDT) Received: from localhost ([::1]:56410 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lv5hD-0004L4-7R for importer2@patchew.org; Sun, 20 Jun 2021 18:13:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46232) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lv5eX-0001Xm-3o for qemu-devel@nongnu.org; Sun, 20 Jun 2021 18:10:53 -0400 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]:37477) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lv5eV-0007sI-1N for qemu-devel@nongnu.org; Sun, 20 Jun 2021 18:10:52 -0400 Received: by mail-pf1-x435.google.com with SMTP id w71so2141937pfd.4 for ; Sun, 20 Jun 2021 15:10:50 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id 135sm11122961pgf.20.2021.06.20.15.10.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 20 Jun 2021 15:10:49 -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=dVIM3L+3b2DyaF/lFeomiWfeUpncB/BWMos9vvnHZe3OfgeYXjTx4nI6fRzPMvAOE+ zExLB6ne32oL9Ydid++ETEjVQi/mwqm3IP3SKqOuRRdZ+1xKcJF0ZmomInFaKm8bG8eS L9//Ma3vy2DwY9dttU2lSH1i+Ljq53nXnpNxGqmT+wmiyp2/FgTQoRQ+eXQS1wwwAXnK 2GGSwJTsvq2a4Y85rGlVdyoFN22Up5gkT6virlDIkAYpSWii6m+p0qy04uZ3WBtV4nfa pwjlCjynuWvU5pFpKYtu7N5t5hLaxO1ufbzCFt4FwIAAcJv50Z5WMgc6N2X9mCcguyou syrQ== 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=IKotEoYlVmF0xMcL4/xE0KnaTa8VIkk4yu8iTIpK32lCPD7d33vVu1Z+6UlznZLkX8 gC/scvoisFV1a2QOnUAEePG36ARHjaU6GxiEuHyX8Mv7X7d4CGOGGY2A4oPX5QwYUCVg OhSydon5yxN3poxmOSaeC1CpC9ZxmOiMALhTrkkW4UVyU7OdyGeAPjXYqw5fAMdGECeN upqwWosdnwrhbE6FcgIdoRcva1hOcokY5QQgX0xGiaFCPXOQFhLMqI2E3WsTDbqSUqBU A7v85qrGD14aNewFyx5NdD+09op97d85j/hQBvQ5wG/W6PyCBkb+/qVwN5g97TGqVEBG lfXA== X-Gm-Message-State: AOAM532WKftZc+kPHfyUlL8TzCKDlNaMNFJef+UW3J3vGWuE7937WAod jMjnTYgVGanga57FBE/6ZL+s/vYppDcCnQ== X-Google-Smtp-Source: ABdhPJzvuZROozDesnr2/j4zGZrc9rWMqKnQzBxR6HIz9BgOT2a+Hrg9pAQ25Z5nluINMyswk3Oekg== X-Received: by 2002:a05:6a00:1acd:b029:2fb:81a4:b06 with SMTP id f13-20020a056a001acdb02902fb81a40b06mr15899994pfv.36.1624227049804; Sun, 20 Jun 2021 15:10:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 4/7] target/nios2: Add DisasContextBase to DisasContext Date: Sun, 20 Jun 2021 15:10:43 -0700 Message-Id: <20210620221046.1526418-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210620221046.1526418-1-richard.henderson@linaro.org> References: <20210620221046.1526418-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::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: 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 Mon May 6 05:36:31 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 1624227497870926.1785156920781; Sun, 20 Jun 2021 15:18:17 -0700 (PDT) Received: from localhost ([::1]:41254 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lv5lg-0004kZ-Ub for importer2@patchew.org; Sun, 20 Jun 2021 18:18:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46260) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lv5eZ-0001gl-UN for qemu-devel@nongnu.org; Sun, 20 Jun 2021 18:10:56 -0400 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]:46964) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lv5eV-0007sa-OA for qemu-devel@nongnu.org; Sun, 20 Jun 2021 18:10:55 -0400 Received: by mail-pg1-x529.google.com with SMTP id n12so3824798pgs.13 for ; Sun, 20 Jun 2021 15:10:51 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id 135sm11122961pgf.20.2021.06.20.15.10.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 20 Jun 2021 15:10:50 -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=aWsoskdLoq0f3x6JrKNF8jFSujiQhbxxitbbJIW/v2k=; b=WtUoWDOJPY1qD2nbEF0HbAjiKsFszi/6vu81yszfAJ1M320eLeP2Ly2S6Z984n3Zpd YowhfcpFvEENpuR9toYYT07sjHXkOnpNnr7UzxCKrlfwlPn3YIq5CPXkoNBVNBP/Hiyb BQwxjvzYJgBuCRX/giVh6/I1IxhTfoWJl3SOa4h/E/kXsUKye00D+NDIcYi89eDWvnv7 oInDw0OEx19qOqfXRNrwY+aOYopyrTnWogy8YmzMKEpn+vtGFNCMc+d+2qv3rFVJQlo6 Gggvxa/8JUt/4iwX3qrT5a242vzf/af4QOjX9eqm/zugQoHiRpR5XBBDMf4eb+EieF9M WJvA== 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=aWsoskdLoq0f3x6JrKNF8jFSujiQhbxxitbbJIW/v2k=; b=J6uAhXvZxCUSusNNW65CPGAa7LdbtJqFdKpEVYMC83HEba9ReWkxnvquMEMp6oZ0Ib j5Ngc76tAjIX19afBO3JzaqYr8YLMBVD1zm7bmmvHIn2Dmv0QM7zAMuaYSGOu8eWQm6p eM77fmGdYYTD51J3tNYBfvfkyLZtZmb8Xdqvdp8NSY/6s2x7/hko1mLuha2emOmpmSWf 4AhQlYdhCflwZFzC3lAJRfj3nS/Ze1dx0GVC8GFL+yGCEQQFPO9KEPV2sceM7KZVHh13 m6lNScf4pkR6qFVfHeVL92hkKEjYmZ+il6+c3fZtFFavF/MZ1GQ6vPPwUQzu6MNEqHv5 9XJg== X-Gm-Message-State: AOAM5314TuGS4yLBvH9mnurpYuSVLtpQFxXgzcQk5xgn+S0e/3wPzher +W1mp/ENNCGLpeK84mHSZDBIh2IvyZY2Cw== X-Google-Smtp-Source: ABdhPJwiR1sKMw7FCjDf/EDLesqmdVJ87MNDj3X8tvMf2f1P7RHtnql2BynJM2iACwPQPwD10VZvRA== X-Received: by 2002:a05:6a00:82:b029:2e9:c6db:e16d with SMTP id c2-20020a056a000082b02902e9c6dbe16dmr16129301pfj.78.1624227050420; Sun, 20 Jun 2021 15:10:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 5/7] target/nios2: Convert to TranslatorOps Date: Sun, 20 Jun 2021 15:10:44 -0700 Message-Id: <20210620221046.1526418-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210620221046.1526418-1-richard.henderson@linaro.org> References: <20210620221046.1526418-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::529; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x529.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 | 130 ++++++++++++++++++++------------------- 1 file changed, 67 insertions(+), 63 deletions(-) diff --git a/target/nios2/translate.c b/target/nios2/translate.c index 31653b7912..06705c894d 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -803,75 +803,72 @@ 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; + int page_insns; =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; - } - } + /* Bound the number of insns to execute to those left on the page. */ + page_insns =3D -(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 +877,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 Mon May 6 05:36:31 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 1624227320392914.8317761777937; Sun, 20 Jun 2021 15:15:20 -0700 (PDT) Received: from localhost ([::1]:35764 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lv5ip-0000zH-Cx for importer2@patchew.org; Sun, 20 Jun 2021 18:15:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46258) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lv5eY-0001co-Uk for qemu-devel@nongnu.org; Sun, 20 Jun 2021 18:10:54 -0400 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]:40708) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lv5eW-0007sw-9E for qemu-devel@nongnu.org; Sun, 20 Jun 2021 18:10:54 -0400 Received: by mail-pg1-x52e.google.com with SMTP id m2so12557001pgk.7 for ; Sun, 20 Jun 2021 15:10:51 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id 135sm11122961pgf.20.2021.06.20.15.10.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 20 Jun 2021 15:10:50 -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=yw4nXpsUXP/IcY+QkLFOYlqRS4uebEjEIFpOqCI8OKc=; b=gkZzBwREd7t0VrFYbEpVxo0bfctP2rWz6YAzFS7EMwEQqrQvdGW81MXcqG9t9bV9Dg tnObhQWonDsKXk+ioNcaGDT8bJGQgneiXRJOkXynqix07ozOcM+CcEYEf3w4v00kyA/i dsNj2yZEqoLXPyVK4kUlygZd/p1xem+KS9es1ADJMfr8BYjIlH9vKWfKifvir3PTCnbs JZLTNawv2c23UCiX2uYv2a0TyDtsNmS7vemOP+IyMpXdUO/fEg9qShh0G5pwqKCERNib JmSa41CSpjRzI9m4cti3kalWYNCvuAngWGx/giH3/xtx6B261jTI7G7GeSfo/cERZ1Xq 1E5w== 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=yw4nXpsUXP/IcY+QkLFOYlqRS4uebEjEIFpOqCI8OKc=; b=qPH8+qlT+WXApE24E+zIhGEhirce2hh9jt22UVDAY5MFr/Jgy5DBUrvo3qMfMOMbjQ /JUEdQTDr+imzDhjxour1+kbxZaLrNectA0ZrP3l4g4FT0g9w4l8fKWFnW0c3Hx4W4gV CxpH1GetwN/jjiO89d+WmJU1vhv/2gR76BX9AQaVjCtaG2B0oXkkaTqoegZemUHZ1KIJ BzutbK4WIq0W2I5a1d0Xy8t3mXjEAWxMtQWeFMtxND531NPVfjzDFmAYNIcHjG4OT7Bt GY5/W6MmrDx4XHGbZqFJ195f0dP99IFiq987Gz8yXfUVAaFbif+H/M03n4s3Dc+GDDmk lcCw== X-Gm-Message-State: AOAM5313n6uWYK9MNy5U6gt4j3RNnCb4jIbUbnHSfs4QpZrKuzMcHiLa F91UtQsAgrudCMnqlUxNg/8VsLQpyTy3xw== X-Google-Smtp-Source: ABdhPJxdwHTvcNUaUVjuWH9S62lCQcxucwDvWHXjlkVSM3NaBFNkjue+PdUgAulqhzDwggMuqaL+Ig== X-Received: by 2002:a62:7848:0:b029:2f7:4ecc:f14 with SMTP id t69-20020a6278480000b02902f74ecc0f14mr16081777pfc.77.1624227050998; Sun, 20 Jun 2021 15:10:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 6/7] target/nios2: Remove assignment to env in handle_instruction Date: Sun, 20 Jun 2021 15:10:45 -0700 Message-Id: <20210620221046.1526418-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210620221046.1526418-1-richard.henderson@linaro.org> References: <20210620221046.1526418-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::52e; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52e.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 Reviewed-by: Peter Maydell --- 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 06705c894d..31f63d9faa 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 Mon May 6 05:36:31 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 1624227222678497.92933367496994; Sun, 20 Jun 2021 15:13:42 -0700 (PDT) Received: from localhost ([::1]:56724 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lv5hF-0004ZJ-ND for importer2@patchew.org; Sun, 20 Jun 2021 18:13:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46254) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lv5eY-0001aR-HK for qemu-devel@nongnu.org; Sun, 20 Jun 2021 18:10:54 -0400 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]:33553) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lv5eW-0007tK-TN for qemu-devel@nongnu.org; Sun, 20 Jun 2021 18:10:54 -0400 Received: by mail-pf1-x434.google.com with SMTP id p13so12221904pfw.0 for ; Sun, 20 Jun 2021 15:10:52 -0700 (PDT) Received: from localhost.localdomain ([71.212.149.176]) by smtp.gmail.com with ESMTPSA id 135sm11122961pgf.20.2021.06.20.15.10.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 20 Jun 2021 15:10:51 -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=FotWsbbqFz4VjRP/kt0GkMjsWufTyPRcDViebjol4/4=; b=laxXVToE5b9UknWrrXrBBckbw67MXuUnYI7XqDCGZyNO9FENqEhPI0k9XAc2uzDGOB AmcrE8yHRbZ6+7/4uUOjA8BA7UEiR9+1SxNkyvfTf8uL1KMo3uCtu0hTOZ8sI0BNu3MH nWh9+/x+3Djek6Igv++l6xAWBhYwiFvmL8StJ6U4SNAqjijY749mlxCRJHHYCXulYIGY uwMISvkjmTF+mQdF4jp1dbcUKTE4NuuCAhjWgD7zdyUvGJpvmsbKoA7SRNdBQQUDjcuk 1e/lM2sO9uFB+ZZlEHkgIQRLIGdisJB9ItHVQR7Kl+XT8Jctz/t4HkCrOAx1v3CKmOxs Py8Q== 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=FotWsbbqFz4VjRP/kt0GkMjsWufTyPRcDViebjol4/4=; b=ZVuRGfYFjR9Md4vsw/Lo0Qyxnwhcvda8Ax5o9DJw3mWv8XBNBWcuiG7rxJzfMpRnqP bSzsbVbQXU8DSrHulhhVPVy8+I+00JBfqWBnEFRn35EGjK/2OI5DQMIXRHQayitHc9rf v35npGLidrpbvCvcZpoPuGaLVZEeXb2U9QNjDKdogpdoeU96LrhlXmal1GdIBRrODLQG nuf8WbMyo4RGaNvNXkotreItkqJcFvIUYlEATxnvWYN9yVBGHwXal0mEBxzk3eou3nev fDVMeHbveKnYdd+5astF3aZ3wXfk8t7u9JoJVfgaxFqSiqYj8qR1C0653DZM0aYabhu7 nlJA== X-Gm-Message-State: AOAM5309GIAGpfBrVRxRUOsGfYeRx/ZSQwCxFaXIZRn7ZDSjaUwFMPDa tppcaINzCxrCIydO0ghhERDUiERM9rX8Yw== X-Google-Smtp-Source: ABdhPJxr8YflXHQvF81GIX8dLT7caJvy2EyfCpot4KU+DnUG9mj9Ya3sy+IHRqLhfJuLvtkdO2B5Qw== X-Received: by 2002:aa7:8e18:0:b029:2ec:a754:570e with SMTP id c24-20020aa78e180000b02902eca754570emr16092727pfr.38.1624227051635; Sun, 20 Jun 2021 15:10:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 7/7] target/nios2: Clean up goto in handle_instruction Date: Sun, 20 Jun 2021 15:10:46 -0700 Message-Id: <20210620221046.1526418-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210620221046.1526418-1-richard.henderson@linaro.org> References: <20210620221046.1526418-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::434; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x434.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 Reviewed-by: Peter Maydell --- 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 31f63d9faa..276643cee0 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