From nobody Wed May 15 20:47:16 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646340500; cv=none; d=zohomail.com; s=zohoarc; b=WCXt/mrwel8/3rnawCvfyLnOxYw7rzCyV7RBS0GALmTzFREbFrX6b32LFG1sE4PnQ+SqZqXU4HU7UwzHPhIOrWM+JVqtI7MNDoQ9B8CqqWJJwvZbAIkkLBzRmuIRDUHhluUiQyA3lZR5URwq7Ddiw25iwXkA66JKw1VG4E3kN2Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646340500; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=sr43F1qKCGNfyfFMtktSEPXi0bm2RtNt/DXzayyQjPs=; b=NGJUcQXLKLlV/LTq4njMp+26XuxqFXYjlet04mj+Zmfmses+fI09JYv68kcfXeWd2rDsYzDu9IGJmxaTwNZ3jIVdU7GdI57iPNZrr+03Ob1RGBpW+5mDOhQvAKH+hEB6HfKZNiHYJUZvemt1b+uEPxyvB2VWCU3N8J+JoU2JVto= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646340500450153.20613207592692; Thu, 3 Mar 2022 12:48:20 -0800 (PST) Received: from localhost ([::1]:57546 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsN1-0004DA-3h for importer@patchew.org; Thu, 03 Mar 2022 15:48:19 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54944) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsLZ-0001WB-CS for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:46:49 -0500 Received: from [2607:f8b0:4864:20::533] (port=34667 helo=mail-pg1-x533.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsLX-0000wP-SE for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:46:49 -0500 Received: by mail-pg1-x533.google.com with SMTP id t187so1444715pgb.1 for ; Thu, 03 Mar 2022 12:46:29 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id d16-20020a17090ad99000b001bcbc4247a0sm2901211pjv.57.2022.03.03.12.46.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 12:46:28 -0800 (PST) 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=sr43F1qKCGNfyfFMtktSEPXi0bm2RtNt/DXzayyQjPs=; b=ngfp9dNNdzQXnNCNQ0vi7BgVDjoAeFXy6yBiwoV+K1FM+7aCdqS4ODJK5z7oqQPRC0 DOLnwjUZDnvT3KVVjskkupizmvgClkeKrE1uOX8f/lPS2YcyKIP6CMUj7o0VfDnUiB7p 7ymS56ou5w+YCyjutood+1UgXOddjniBEt7ej6DnUyZf47ALwkqfgE4k1DWojhJqgTHr jDqr8UNIiuxbOyl1o8gyXNFq+hS7Lsz3Py8HeSbGHznsdkYdy33oWjDharGfCwHJ0xfW XeXqZxICuahMBH/iOTremQSeFhHos18dTfRs56H1DSWeydc1gAzft5h3CwfqttCJIyxJ jGgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=sr43F1qKCGNfyfFMtktSEPXi0bm2RtNt/DXzayyQjPs=; b=WLhG1J3eRzZmr2Y2NZy7C9RjDPc5U13GTAo1mILXhqKlR1EpKwk5Y5U1V/0OLs/EtU rvlfFEeIQhFREqmrZcfEf8pTkPs4SERkmmrT7Siq9gHIQW0smSLtkffGR/ekJyyBODhX VKMgOdEi/njT2V1oZNayFwoW4LjYestIVwyY4Ipyo6H17+Ezx3an5AkW2avRaphCrnUD IE0vVwrgC9CuAK3/wdD+2thGsF6bh4b0D+gaPJMWhnJvMkgyF1D4KnszlUkx6fWBJIZS 3xSlpcg5USXmN2IzjDjhuPThOMm97wlkSRyUCSK8UkNJzIewtP7kC1jS7aqgEYCemDt6 Dc1A== X-Gm-Message-State: AOAM530PTiUdft+I97LZ+YKGeRoSnSiilbRGDuJIP+f76bvw3mt9zNPW DhOgLKW+1T9+jXMeXulb9sWH2xUsp3uRIw== X-Google-Smtp-Source: ABdhPJywYA+pifPFPYIzkyxA44RHA7IJSeF6nZh01n+3Rrra0Hwr47wq+KPfjpoPLXza2qNnhy8O8Q== X-Received: by 2002:a63:2a43:0:b0:37c:52d6:60de with SMTP id q64-20020a632a43000000b0037c52d660demr4660292pgq.488.1646340388700; Thu, 03 Mar 2022 12:46:28 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 1/7] target/nios2: Remove mmu_read_debug Date: Thu, 3 Mar 2022 10:46:18 -1000 Message-Id: <20220303204624.468786-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303204624.468786-1-richard.henderson@linaro.org> References: <20220303204624.468786-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::533 (failed) 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::533; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x533.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646341404779100001 Content-Type: text/plain; charset="utf-8" This functionality can be had via plugins, if desired. In the meantime, it is unused code. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/helper.h | 1 - target/nios2/mmu.h | 1 - target/nios2/mmu.c | 20 -------------------- target/nios2/op_helper.c | 5 ----- target/nios2/translate.c | 17 ----------------- 5 files changed, 44 deletions(-) diff --git a/target/nios2/helper.h b/target/nios2/helper.h index 6c8f0b5b35..6d8eec1814 100644 --- a/target/nios2/helper.h +++ b/target/nios2/helper.h @@ -21,7 +21,6 @@ DEF_HELPER_FLAGS_2(raise_exception, TCG_CALL_NO_WG, noreturn, env, i32) =20 #if !defined(CONFIG_USER_ONLY) -DEF_HELPER_2(mmu_read_debug, void, env, i32) DEF_HELPER_3(mmu_write, void, env, i32, i32) DEF_HELPER_1(check_interrupts, void, env) #endif diff --git a/target/nios2/mmu.h b/target/nios2/mmu.h index 4f46fbb82e..b7785b46c0 100644 --- a/target/nios2/mmu.h +++ b/target/nios2/mmu.h @@ -44,7 +44,6 @@ void mmu_flip_um(CPUNios2State *env, unsigned int um); unsigned int mmu_translate(CPUNios2State *env, Nios2MMULookup *lu, target_ulong vaddr, int rw, int mmu_idx); -void mmu_read_debug(CPUNios2State *env, uint32_t rn); void mmu_write(CPUNios2State *env, uint32_t rn, uint32_t v); void mmu_init(CPUNios2State *env); =20 diff --git a/target/nios2/mmu.c b/target/nios2/mmu.c index 2545c06761..5616c39d54 100644 --- a/target/nios2/mmu.c +++ b/target/nios2/mmu.c @@ -35,26 +35,6 @@ #define MMU_LOG(x) #endif =20 -void mmu_read_debug(CPUNios2State *env, uint32_t rn) -{ - switch (rn) { - case CR_TLBACC: - MMU_LOG(qemu_log("TLBACC READ %08X\n", env->regs[rn])); - break; - - case CR_TLBMISC: - MMU_LOG(qemu_log("TLBMISC READ %08X\n", env->regs[rn])); - break; - - case CR_PTEADDR: - MMU_LOG(qemu_log("PTEADDR READ %08X\n", env->regs[rn])); - break; - - default: - break; - } -} - /* rw - 0 =3D read, 1 =3D write, 2 =3D fetch. */ unsigned int mmu_translate(CPUNios2State *env, Nios2MMULookup *lu, diff --git a/target/nios2/op_helper.c b/target/nios2/op_helper.c index a59003855a..61fc4dc903 100644 --- a/target/nios2/op_helper.c +++ b/target/nios2/op_helper.c @@ -26,11 +26,6 @@ #include "qemu/main-loop.h" =20 #if !defined(CONFIG_USER_ONLY) -void helper_mmu_read_debug(CPUNios2State *env, uint32_t rn) -{ - mmu_read_debug(env, rn); -} - void helper_mmu_write(CPUNios2State *env, uint32_t rn, uint32_t v) { mmu_write(env, rn, v); diff --git a/target/nios2/translate.c b/target/nios2/translate.c index f9abc2fdd2..194c8ebafd 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -448,23 +448,6 @@ static void rdctl(DisasContext *dc, uint32_t code, uin= t32_t flags) gen_check_supervisor(dc); =20 switch (instr.imm5 + CR_BASE) { - case CR_PTEADDR: - case CR_TLBACC: - case CR_TLBMISC: - { -#if !defined(CONFIG_USER_ONLY) - if (likely(instr.c !=3D R_ZERO)) { - 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(cpu_R[instr.c], cpu_env, tmp); - tcg_temp_free_i32(tmp); -#endif - } -#endif - break; - } - default: if (likely(instr.c !=3D R_ZERO)) { tcg_gen_mov_tl(cpu_R[instr.c], cpu_R[instr.imm5 + CR_BASE]); --=20 2.25.1 From nobody Wed May 15 20:47:16 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646340613; cv=none; d=zohomail.com; s=zohoarc; b=NDTHRQF65ZTb4Eo0ypMQIdLQM+NSthPsl9wozuuld7pAmeavB7om/4gGamGI8SIVY1KG8PboH0exYIfJp5y7XjKDzhlx6H8c3F2zetltt69a6bW0bQlLCTmlCKH79LNw/qe06WSycyAEd7EtDRWeYrz49R4UMtgyr0934n+bmTk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646340613; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=C/Ro2VorV8KM/dwx29I+F+iPCNjQCry/jWK7O96h7Ew=; b=IRto5SczQGdhgqG5wmeJ2DtXgoCcfie8YMtaDcX9nbiW02t0+qgKKmOKq+1TyWXO1zHXSmytjzEWEGEpEtrtmD7Dfn5hH8VKJPjFgnJ0/AtXtPQcXyTaHOtt2kEGoAt0J09genhLXQDoZ3rQ9Mg7ZMIy0ECvpFEupq30nExh5T8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 164634061326050.86058151021052; Thu, 3 Mar 2022 12:50:13 -0800 (PST) Received: from localhost ([::1]:36016 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsOq-0000Jm-8C for importer@patchew.org; Thu, 03 Mar 2022 15:50:12 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54990) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsLb-0001bA-6C for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:46:51 -0500 Received: from [2607:f8b0:4864:20::52d] (port=35808 helo=mail-pg1-x52d.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsLX-0000wW-TJ for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:46:50 -0500 Received: by mail-pg1-x52d.google.com with SMTP id e6so5724642pgn.2 for ; Thu, 03 Mar 2022 12:46:31 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id d16-20020a17090ad99000b001bcbc4247a0sm2901211pjv.57.2022.03.03.12.46.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 12:46:29 -0800 (PST) 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=C/Ro2VorV8KM/dwx29I+F+iPCNjQCry/jWK7O96h7Ew=; b=OsMmywAH4+gCIAjLrGI4SrOiOX5VOiEocantlhYYUEGaMXS72M6Vi8moZvS4k6geCf TRAXLv0TftJ+ayDt60k/ymy6XeRMfv2vN+6+5cCSBTOcL5t1s0Szb96dALL1qAs6/Had ndiAMapKFSMMcJ/2YDeUtkIfY9uHi5TplwiJ6yVEzyCR0ZNdU0YsWUWXhw7IZ+SPO6om DGBA4dJEzEFcTgW3W1nhkll2rxj4Cbrj2E7x/Y1NE8P0Fxv4/GJLFy/VOp/Q2FiiqmQb au5eFc8mB8fD3wSlV+BEMSmh4GDe3n+PnwfviLJRzwkaECc8PryBv/6ZdqGBziInOQqW GBoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=C/Ro2VorV8KM/dwx29I+F+iPCNjQCry/jWK7O96h7Ew=; b=2HkaZQ07cQZQvUWGbXnLKKzLxaUcDpYevXXi8MRAbn4IGZUl22IQkq/olYq66UMU3h K4RTl07Z3KuYMLHLhgDWlMofAp9EUw4BRVw8zarQkpXmBh7CDwiHANKttH/NlzKeoYos i91uBaMuU025kSrlsu25hkLGvmrOlryrSA92vOvaw38V/Tt/xzsjJzpAgZpaCm+gyvHh XWrRf2nfFrQ0pB1unk5MfIKvjiw2t5L/y0YfZy08SiXh5efhiBy+2eqram9el+lAc9Y2 1bQ/FyNWYAMYqqh/XrmjyaGV7YsZHXtrX7s8cFnQshHobGGgphsL+9rph8loVGdDX9G3 dztQ== X-Gm-Message-State: AOAM532ZFegPfjROLuXarGx3JYX9qZ9ZtHV0uSeT2OUzRqJZrWMc5E7q csajOLzXiGSG7wGwE6igtkv5v0UFfvC1QQ== X-Google-Smtp-Source: ABdhPJxte3DL7SqyCWEFRjcgF9ZZFsH6+OfFTj/hLp4YolIU5LQM/v/Rm1s5xyTETLnOvagTWrA9Fg== X-Received: by 2002:a05:6a00:2405:b0:4e1:5008:adcc with SMTP id z5-20020a056a00240500b004e15008adccmr40252735pfh.35.1646340390111; Thu, 03 Mar 2022 12:46:30 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 2/7] target/nios2: Replace MMU_LOG with tracepoints Date: Thu, 3 Mar 2022 10:46:19 -1000 Message-Id: <20220303204624.468786-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303204624.468786-1-richard.henderson@linaro.org> References: <20220303204624.468786-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::52d (failed) 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52d; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52d.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646340615663100001 Reviewed-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- meson.build | 1 + target/nios2/mmu.c | 96 ++++++++++++--------------------------- target/nios2/trace-events | 10 ++++ 3 files changed, 39 insertions(+), 68 deletions(-) create mode 100644 target/nios2/trace-events diff --git a/meson.build b/meson.build index a5b63e62cd..038502714a 100644 --- a/meson.build +++ b/meson.build @@ -2705,6 +2705,7 @@ if have_system or have_user 'target/i386', 'target/i386/kvm', 'target/mips/tcg', + 'target/nios2', 'target/ppc', 'target/riscv', 'target/s390x', diff --git a/target/nios2/mmu.c b/target/nios2/mmu.c index 5616c39d54..306370f675 100644 --- a/target/nios2/mmu.c +++ b/target/nios2/mmu.c @@ -23,18 +23,10 @@ #include "cpu.h" #include "exec/exec-all.h" #include "mmu.h" +#include "trace/trace-target_nios2.h" =20 #if !defined(CONFIG_USER_ONLY) =20 -/* Define this to enable MMU debug messages */ -/* #define DEBUG_MMU */ - -#ifdef DEBUG_MMU -#define MMU_LOG(x) x -#else -#define MMU_LOG(x) -#endif - /* rw - 0 =3D read, 1 =3D write, 2 =3D fetch. */ unsigned int mmu_translate(CPUNios2State *env, Nios2MMULookup *lu, @@ -43,37 +35,26 @@ unsigned int mmu_translate(CPUNios2State *env, Nios2CPU *cpu =3D env_archcpu(env); int pid =3D (env->mmu.tlbmisc_wr & CR_TLBMISC_PID_MASK) >> 4; int vpn =3D vaddr >> 12; + int way, n_ways =3D cpu->tlb_num_ways; =20 - MMU_LOG(qemu_log("mmu_translate vaddr %08X, pid %08X, vpn %08X\n", - vaddr, pid, vpn)); - - int way; - for (way =3D 0; way < cpu->tlb_num_ways; way++) { - - Nios2TLBEntry *entry =3D - &env->mmu.tlb[(way * cpu->tlb_num_ways) + - (vpn & env->mmu.tlb_entry_mask)]; - - MMU_LOG(qemu_log("TLB[%d] TAG %08X, VPN %08X\n", - (way * cpu->tlb_num_ways) + - (vpn & env->mmu.tlb_entry_mask), - entry->tag, (entry->tag >> 12))); + for (way =3D 0; way < n_ways; way++) { + uint32_t index =3D (way * n_ways) + (vpn & env->mmu.tlb_entry_mask= ); + Nios2TLBEntry *entry =3D &env->mmu.tlb[index]; =20 if (((entry->tag >> 12) !=3D vpn) || (((entry->tag & (1 << 11)) =3D=3D 0) && ((entry->tag & ((1 << cpu->pid_num_bits) - 1)) !=3D pid))) { + trace_nios2_mmu_translate_miss(vaddr, pid, index, entry->tag); continue; } + lu->vaddr =3D vaddr & TARGET_PAGE_MASK; lu->paddr =3D (entry->data & CR_TLBACC_PFN_MASK) << TARGET_PAGE_BI= TS; lu->prot =3D ((entry->data & CR_TLBACC_R) ? PAGE_READ : 0) | ((entry->data & CR_TLBACC_W) ? PAGE_WRITE : 0) | ((entry->data & CR_TLBACC_X) ? PAGE_EXEC : 0); =20 - MMU_LOG(qemu_log("HIT TLB[%d] %08X %08X %08X\n", - (way * cpu->tlb_num_ways) + - (vpn & env->mmu.tlb_entry_mask), - lu->vaddr, lu->paddr, lu->prot)); + trace_nios2_mmu_translate_hit(vaddr, pid, index, lu->paddr, lu->pr= ot); return 1; } return 0; @@ -84,21 +65,18 @@ static void mmu_flush_pid(CPUNios2State *env, uint32_t = pid) CPUState *cs =3D env_cpu(env); Nios2CPU *cpu =3D env_archcpu(env); int idx; - MMU_LOG(qemu_log("TLB Flush PID %d\n", pid)); =20 for (idx =3D 0; idx < cpu->tlb_num_entries; idx++) { Nios2TLBEntry *entry =3D &env->mmu.tlb[idx]; =20 - MMU_LOG(qemu_log("TLB[%d] =3D> %08X %08X\n", - idx, entry->tag, entry->data)); - if ((entry->tag & (1 << 10)) && (!(entry->tag & (1 << 11))) && ((entry->tag & ((1 << cpu->pid_num_bits) - 1)) =3D=3D pid)) { uint32_t vaddr =3D entry->tag & TARGET_PAGE_MASK; =20 - MMU_LOG(qemu_log("TLB Flush Page %08X\n", vaddr)); - + trace_nios2_mmu_flush_pid_hit(pid, idx, vaddr); tlb_flush_page(cs, vaddr); + } else { + trace_nios2_mmu_flush_pid_miss(pid, idx, entry->tag); } } } @@ -108,18 +86,15 @@ void mmu_write(CPUNios2State *env, uint32_t rn, uint32= _t v) CPUState *cs =3D env_cpu(env); Nios2CPU *cpu =3D env_archcpu(env); =20 - MMU_LOG(qemu_log("mmu_write %08X =3D %08X\n", rn, v)); - switch (rn) { case CR_TLBACC: - MMU_LOG(qemu_log("TLBACC: IG %02X, FLAGS %c%c%c%c%c, PFN %05X\n", - v >> CR_TLBACC_IGN_SHIFT, - (v & CR_TLBACC_C) ? 'C' : '.', - (v & CR_TLBACC_R) ? 'R' : '.', - (v & CR_TLBACC_W) ? 'W' : '.', - (v & CR_TLBACC_X) ? 'X' : '.', - (v & CR_TLBACC_G) ? 'G' : '.', - v & CR_TLBACC_PFN_MASK)); + trace_nios2_mmu_write_tlbacc(v >> CR_TLBACC_IGN_SHIFT, + (v & CR_TLBACC_C) ? 'C' : '.', + (v & CR_TLBACC_R) ? 'R' : '.', + (v & CR_TLBACC_W) ? 'W' : '.', + (v & CR_TLBACC_X) ? 'X' : '.', + (v & CR_TLBACC_G) ? 'G' : '.', + v & CR_TLBACC_PFN_MASK); =20 /* if tlbmisc.WE =3D=3D 1 then trigger a TLB write on writes to TL= BACC */ if (env->regs[CR_TLBMISC] & CR_TLBMISC_WR) { @@ -138,16 +113,10 @@ void mmu_write(CPUNios2State *env, uint32_t rn, uint3= 2_t v) if ((entry->tag !=3D newTag) || (entry->data !=3D newData)) { if (entry->tag & (1 << 10)) { /* Flush existing entry */ - MMU_LOG(qemu_log("TLB Flush Page (OLD) %08X\n", - entry->tag & TARGET_PAGE_MASK)); tlb_flush_page(cs, entry->tag & TARGET_PAGE_MASK); } entry->tag =3D newTag; entry->data =3D newData; - MMU_LOG(qemu_log("TLB[%d] =3D %08X %08X\n", - (way * cpu->tlb_num_ways) + - (vpn & env->mmu.tlb_entry_mask), - entry->tag, entry->data)); } /* Auto-increment tlbmisc.WAY */ env->regs[CR_TLBMISC] =3D @@ -161,15 +130,14 @@ void mmu_write(CPUNios2State *env, uint32_t rn, uint3= 2_t v) break; =20 case CR_TLBMISC: - MMU_LOG(qemu_log("TLBMISC: WAY %X, FLAGS %c%c%c%c%c%c, PID %04X\n", - v >> CR_TLBMISC_WAY_SHIFT, - (v & CR_TLBMISC_RD) ? 'R' : '.', - (v & CR_TLBMISC_WR) ? 'W' : '.', - (v & CR_TLBMISC_DBL) ? '2' : '.', - (v & CR_TLBMISC_BAD) ? 'B' : '.', - (v & CR_TLBMISC_PERM) ? 'P' : '.', - (v & CR_TLBMISC_D) ? 'D' : '.', - (v & CR_TLBMISC_PID_MASK) >> 4)); + trace_nios2_mmu_write_tlbmisc(v >> CR_TLBMISC_WAY_SHIFT, + (v & CR_TLBMISC_RD) ? 'R' : '.', + (v & CR_TLBMISC_WR) ? 'W' : '.', + (v & CR_TLBMISC_DBL) ? '2' : '.', + (v & CR_TLBMISC_BAD) ? 'B' : '.', + (v & CR_TLBMISC_PERM) ? 'P' : '.', + (v & CR_TLBMISC_D) ? 'D' : '.', + (v & CR_TLBMISC_PID_MASK) >> 4); =20 if ((v & CR_TLBMISC_PID_MASK) !=3D (env->mmu.tlbmisc_wr & CR_TLBMISC_PID_MASK)) { @@ -193,11 +161,6 @@ void mmu_write(CPUNios2State *env, uint32_t rn, uint32= _t v) CR_TLBMISC_PID_SHIFT); env->regs[CR_PTEADDR] &=3D ~CR_PTEADDR_VPN_MASK; env->regs[CR_PTEADDR] |=3D (entry->tag >> 12) << CR_PTEADDR_VP= N_SHIFT; - MMU_LOG(qemu_log("TLB READ way %d, vpn %05X, tag %08X, data %0= 8X, " - "tlbacc %08X, tlbmisc %08X, pteaddr %08X\n", - way, vpn, entry->tag, entry->data, - env->regs[CR_TLBACC], env->regs[CR_TLBMISC], - env->regs[CR_PTEADDR])); } else { env->regs[CR_TLBMISC] =3D v; } @@ -206,9 +169,8 @@ void mmu_write(CPUNios2State *env, uint32_t rn, uint32_= t v) break; =20 case CR_PTEADDR: - MMU_LOG(qemu_log("PTEADDR: PTBASE %03X, VPN %05X\n", - v >> CR_PTEADDR_PTBASE_SHIFT, - (v & CR_PTEADDR_VPN_MASK) >> CR_PTEADDR_VPN_SHIFT= )); + trace_nios2_mmu_write_pteaddr(v >> CR_PTEADDR_PTBASE_SHIFT, + (v & CR_PTEADDR_VPN_MASK) >> CR_PTEA= DDR_VPN_SHIFT); =20 /* Writes to PTEADDR don't change the read-back VPN value */ env->regs[CR_PTEADDR] =3D (v & ~CR_PTEADDR_VPN_MASK) | @@ -226,8 +188,6 @@ void mmu_init(CPUNios2State *env) Nios2CPU *cpu =3D env_archcpu(env); Nios2MMU *mmu =3D &env->mmu; =20 - MMU_LOG(qemu_log("mmu_init\n")); - mmu->tlb_entry_mask =3D (cpu->tlb_num_entries / cpu->tlb_num_ways) - 1; mmu->tlb =3D g_new0(Nios2TLBEntry, cpu->tlb_num_entries); } diff --git a/target/nios2/trace-events b/target/nios2/trace-events new file mode 100644 index 0000000000..07f1f0a5e7 --- /dev/null +++ b/target/nios2/trace-events @@ -0,0 +1,10 @@ +# mmu.c +nios2_mmu_translate_miss(uint32_t vaddr, uint32_t pid, uint32_t index, uin= t32_t tag) "mmu_translate: MISS vaddr=3D0x%08x pid=3D%u TLB[%u] tag=3D0x%08= x" +nios2_mmu_translate_hit(uint32_t vaddr, uint32_t pid, uint32_t index, uint= 32_t paddr, uint32_t prot) "mmu_translate: HIT vaddr=3D0x%08x pid=3D%u TLB[= %u] paddr=3D0x%08x prot=3D0x%x" + +nios2_mmu_flush_pid_miss(uint32_t pid, uint32_t index, uint32_t vaddr) "mm= u_flush: MISS pid=3D%u TLB[%u] tag=3D0x%08x" +nios2_mmu_flush_pid_hit(uint32_t pid, uint32_t index, uint32_t vaddr) "mmu= _flush: HIT pid=3D%u TLB[%u] vaddr=3D0x%08x" + +nios2_mmu_write_tlbacc(uint32_t ig, char c, char r, char w, char x, char g= , uint32_t pfn) "mmu_write_tlbacc: ig=3D0x%02x flags=3D%c%c%c%c%c pfn=3D0x%= 08x" +nios2_mmu_write_tlbmisc(uint32_t way, char r, char w, char t, char b, char= p, char d, uint32_t pid) "mmu_write_tlbmisc: way=3D0x%x flags=3D%c%c%c%c%c= %c pid=3D%u" +nios2_mmu_write_pteaddr(uint32_t ptb, uint32_t vpn) "mmu_write_pteaddr: pt= base=3D0x%03x vpn=3D0x%05x" --=20 2.25.1 From nobody Wed May 15 20:47:16 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646340735; cv=none; d=zohomail.com; s=zohoarc; b=Xf5+lF9sgRqmDekhnBePNgCYTHGQWNMxWC2RXbffNJ2T29etuf+nBR9mVpJa/sRNJdDHuvPlSq0EfsfvfdDPXOZiMh+zGUZoVKthw707qnERCaVLMXGUXsxLtsykYVZ4p3uABdD8pLA4igp9Y2oZVLam0SVvR3vyjEW9A/BjcJw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646340735; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=DgijVqHZRbMJcToV5HUeYKBRNb+4RK7lyL5hmphZYzc=; b=JufHTD+LBeBj3+XyhJ/ehC5yYv0DRSeyluwpA+MgKD8V094OslAeBr1kuioyzfo477f/4vDHxmNQ6UvGWM5lpLLRrnx+LdOkHoGSKp5V2ldt9FtWfJUqS103r2xd6loGULVXZN9JXsfTm4AHSeHzhn4DFXvb7S2IIoV81ITLNAY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646340735025145.93600338738588; Thu, 3 Mar 2022 12:52:15 -0800 (PST) Received: from localhost ([::1]:40516 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsQn-0003a9-PR for importer@patchew.org; Thu, 03 Mar 2022 15:52:13 -0500 Received: from eggs.gnu.org ([209.51.188.92]:55024) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsLc-0001em-43 for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:46:52 -0500 Received: from [2607:f8b0:4864:20::102b] (port=41775 helo=mail-pj1-x102b.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsLY-0000xg-0R for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:46:51 -0500 Received: by mail-pj1-x102b.google.com with SMTP id ev16-20020a17090aead000b001bc3835fea8so6186030pjb.0 for ; Thu, 03 Mar 2022 12:46:32 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id d16-20020a17090ad99000b001bcbc4247a0sm2901211pjv.57.2022.03.03.12.46.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 12:46:31 -0800 (PST) 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=DgijVqHZRbMJcToV5HUeYKBRNb+4RK7lyL5hmphZYzc=; b=JoFEt+d6pD0PEVsJ98GD1Wkg9yjs6dkfN4pVsHO+aHPI7C+VkyggTlCzUhrLaoB6K1 ccg5L60/4zgDFmh+pxcwYcaNi8BorW4Irl2MDAKwfg25cJ6/aU3Ny3tqqvPfldw1z6fe g1NhgLGQ97vS9kC8P1AGqNgOdtiT3oQ6q8fx/E0s5mgtT1eKTi1jae+TN1bbNeC7Qky9 Q5AsmRMzcNVH6MG5sgvHUuPOwbbfDjYT1e5+uUYdLvtaXkoeKCMOmVKjERNEupGpbo2J Jkf8vYxyIBAF5gfNjqRCTTsyehp9hHC36K/GuN4m85O2DNyMy6gRh0qS8jsCm49OwzN4 H4tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=DgijVqHZRbMJcToV5HUeYKBRNb+4RK7lyL5hmphZYzc=; b=iDf9Kf3+MCqOV1OtHrJCh5rFMpCNIZNyTlDMIfcJFehnLapdsu/QYWCfDUUtl9IxM2 lbDjr5+e+Eq17wlqirOMdP3GstsfkqTMvzYKXBNDbDqpIaUi6bRTjdGXc7+o48Jr2EH+ Horb5dLc27cQyeXlfOVAUrBaxIkCuo7SYAaxVo6RW+B+Y4cIi5K8WfpYz3jzuZ4OTzeZ QWjyIWs5B77AZ7etYgJLW61ktLxfbKkuEtloAV0yuJxrGYkRf6jw5g1B4Db05aEJ8YLp nzlY/EoGyNDGCwShndWHViCty/aefyP0Jq4CN77ePWeFqv85SMlK+UVflEbbxcoOUzlR JdpQ== X-Gm-Message-State: AOAM531cfTTwWMHJ0+NjiXUGHHS4DbDZWhpRyeeXJhjHXVmxosNKaUuI lWZRuNts5DOqFsUPrr9A4J4LjJ5+ISLD1Q== X-Google-Smtp-Source: ABdhPJxu+4Bko1dr+kIBanctwVaEXpcIWIE6e+qinDrRUA76sUcIapq0MI9yhqsBT1sHY74r7PYkrQ== X-Received: by 2002:a17:902:b488:b0:14e:fcef:7f0b with SMTP id y8-20020a170902b48800b0014efcef7f0bmr39154247plr.28.1646340391709; Thu, 03 Mar 2022 12:46:31 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 3/7] target/nios2: Only build mmu.c for system mode Date: Thu, 3 Mar 2022 10:46:20 -1000 Message-Id: <20220303204624.468786-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303204624.468786-1-richard.henderson@linaro.org> References: <20220303204624.468786-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::102b (failed) 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+importer=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: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646340737584100001 We can thus remove an ifdef covering the entire file. Reviewed-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- target/nios2/mmu.c | 3 --- target/nios2/meson.build | 3 +-- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/target/nios2/mmu.c b/target/nios2/mmu.c index 306370f675..437fad09b7 100644 --- a/target/nios2/mmu.c +++ b/target/nios2/mmu.c @@ -25,7 +25,6 @@ #include "mmu.h" #include "trace/trace-target_nios2.h" =20 -#if !defined(CONFIG_USER_ONLY) =20 /* rw - 0 =3D read, 1 =3D write, 2 =3D fetch. */ unsigned int mmu_translate(CPUNios2State *env, @@ -217,5 +216,3 @@ void dump_mmu(CPUNios2State *env) (entry->data & CR_TLBACC_X) ? 'X' : '-'); } } - -#endif /* !CONFIG_USER_ONLY */ diff --git a/target/nios2/meson.build b/target/nios2/meson.build index e643917db1..62b384702d 100644 --- a/target/nios2/meson.build +++ b/target/nios2/meson.build @@ -2,14 +2,13 @@ nios2_ss =3D ss.source_set() nios2_ss.add(files( 'cpu.c', 'helper.c', - 'mmu.c', 'nios2-semi.c', 'op_helper.c', 'translate.c', )) =20 nios2_softmmu_ss =3D ss.source_set() -nios2_softmmu_ss.add(files('monitor.c')) +nios2_softmmu_ss.add(files('monitor.c', 'mmu.c')) =20 target_arch +=3D {'nios2': nios2_ss} target_softmmu_arch +=3D {'nios2': nios2_softmmu_ss} --=20 2.25.1 From nobody Wed May 15 20:47:16 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646340500; cv=none; d=zohomail.com; s=zohoarc; b=OgllI5saSKai7X0aY1PJtuMzyZw9n0axqyumYRoLblCABxPtg6/xeZtVrx1EtSg2DbzQXsvv0pPNFa0SVPAZj8rIGPzPO6oq9R4QDGhvlHtIMor94s2NNo/1sLXvSnNj4JpZTAq8+467yFKTyfIdTbiRezkww6w5cCEueMjnYBA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646340500; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=her8508EwA+z2+eb8zvRxH56IuxcXKjAk0c8gMcBkP8=; b=W2n5qGotf3L0IL5ufmHMN2JF0ITPG6J+Y59/iGgIkEpmGaUX+a0VfGAruXG6RTuQPbodgppljC5qXmMcFLmadINTs8YdxSZi0lG57gibqhUhDxbiWEOvz7B7SXReZi2cf1gort5YWlZqVY1ZwV+32itq0BG49rdZ3UF+TN3pVMQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646340500680699.2486228697992; Thu, 3 Mar 2022 12:48:20 -0800 (PST) Received: from localhost ([::1]:57626 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsN1-0004GH-5K for importer@patchew.org; Thu, 03 Mar 2022 15:48:19 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54946) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsLZ-0001WC-Cf for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:46:49 -0500 Received: from [2607:f8b0:4864:20::431] (port=34750 helo=mail-pf1-x431.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsLX-0000yO-TH for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:46:49 -0500 Received: by mail-pf1-x431.google.com with SMTP id g1so5790598pfv.1 for ; Thu, 03 Mar 2022 12:46:34 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id d16-20020a17090ad99000b001bcbc4247a0sm2901211pjv.57.2022.03.03.12.46.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 12:46:32 -0800 (PST) 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=her8508EwA+z2+eb8zvRxH56IuxcXKjAk0c8gMcBkP8=; b=ZX0CxXI56UK45w+rwZSgLUptr9LEEQjM2Rq9JmhmeTxO48dRUWFnXWO7vbRyYqJK7g pmIsJ0hye8nHicrZrMSmV70fI3fNgS6+yBlGxMU1q6cAaVGh/YdvX9230hGej+XS204i JQ6WfUqZzlqUJDYm9rsZnOdkplfbdjJ3rWNiW7uxOAlHb7PtEQIkl/S5bDX3u7nymGHr Y4/70ltXSBIcJnEbFtEKHtCd1Nc9J4PpLIjtARr3H4PG/gpZW9pf12GduP7r/Lk2wmPB pi6u/2cgsJqHOiGDtKcAY7+6f16uE07WfCx7C+mfZgln7YrOlvBxskExCr0MOqVd9l0t aBSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=her8508EwA+z2+eb8zvRxH56IuxcXKjAk0c8gMcBkP8=; b=vVGzaVYI3M9H7L7VbuStdJIdjFgPuiYUrZ+I6C5IQ2ahfcvngEU9601MvYHUprOGBb iw8ZnMbC8LUeUKTmqWGhdC688VpNJl8CGV7ZJvwJc9J8b05Y7FqyJMmCHxirORKJEPnJ u1Tj+XCz4k2HTdGsIBFBiunEXRtW2Hu71BTzlrdhvuMGMwIEmUf14/GpkfikR1x289x/ X/5+CB1WoX6tkgZGYHHiHbBJWzsjEFE9FKKHnStjB+XFrLTRdkeqimUu9kXLv8I5ERFU 2JoCwg9r/Xomwn4Ton2d2GpTsahx5I4wXCo6FwSlZIeMIZZdm8xjyfA3HbL7xQCONrYs lTeA== X-Gm-Message-State: AOAM531j9nirxxXM9fYgyRmC27v7EfREraWF7Mf/peOG2RwguD4+juPt z1hTXsBzu8iKMXfp1L5vafB4LII4eM/2tQ== X-Google-Smtp-Source: ABdhPJy4s/IJEylL1fH4r6xm0TeQswFtzNoC4o65dkvS1XelzDtKB3/JUGPaIdQKFlnMWr2MGCystw== X-Received: by 2002:a05:6a00:26c1:b0:4e1:3135:97a9 with SMTP id p1-20020a056a0026c100b004e1313597a9mr40122556pfw.13.1646340393246; Thu, 03 Mar 2022 12:46:33 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 4/7] target/nios2: Hoist R_ZERO check in rdctl Date: Thu, 3 Mar 2022 10:46:21 -1000 Message-Id: <20220303204624.468786-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303204624.468786-1-richard.henderson@linaro.org> References: <20220303204624.468786-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::431 (failed) 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+importer=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: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646340502915100002 This will avoid having to replicate the check to additional cases. Reviewed-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- target/nios2/translate.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/target/nios2/translate.c b/target/nios2/translate.c index 194c8ebafd..fa355308a9 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -447,11 +447,13 @@ static void rdctl(DisasContext *dc, uint32_t code, ui= nt32_t flags) =20 gen_check_supervisor(dc); =20 + if (unlikely(instr.c =3D=3D R_ZERO)) { + return; + } + switch (instr.imm5 + CR_BASE) { default: - if (likely(instr.c !=3D R_ZERO)) { - tcg_gen_mov_tl(cpu_R[instr.c], cpu_R[instr.imm5 + CR_BASE]); - } + tcg_gen_mov_tl(cpu_R[instr.c], cpu_R[instr.imm5 + CR_BASE]); break; } } --=20 2.25.1 From nobody Wed May 15 20:47:16 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646340737; cv=none; d=zohomail.com; s=zohoarc; b=g+7LvlCjKlcznaBdwePLtBt6CiCmax0vdTOkDvG+rsL30Nl7kp9EvcXxoVLUiN5NavhayjObUFNd+egb2t2dk+tH1pYO1VCjOoRkeyj0Rvtd64k4THCBAAcby/HLVvjvL2010dvXHMwIlFX3QqDPDzp9hT+KwwCYur0pgBfuRNA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646340737; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=VYs8n9ySlRa4OB2uec0koEx8EcehzROHnTlgvRTS7Ns=; b=Hs+5zFUyasSvjqlve5SPYx3DDPOIsIjzv21ZiSitrnlNV6lsRE3I2rlx+On9+6VzZPgC2f72osC2nminyZH8ODgS92N74n6FWFWKShnfJD9a8i+9u1evE+YirVgZyqubgKsyiux9uBXsASIa87aXvTztNTYJk+J/ozab7RtmFPA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646340737408247.09377040266384; Thu, 3 Mar 2022 12:52:17 -0800 (PST) Received: from localhost ([::1]:40592 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsQq-0003dR-Ak for importer@patchew.org; Thu, 03 Mar 2022 15:52:16 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54996) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsLb-0001bY-5F for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:46:51 -0500 Received: from [2607:f8b0:4864:20::630] (port=37501 helo=mail-pl1-x630.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsLX-0000zM-VM for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:46:50 -0500 Received: by mail-pl1-x630.google.com with SMTP id n15so5844764plf.4 for ; Thu, 03 Mar 2022 12:46:35 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id d16-20020a17090ad99000b001bcbc4247a0sm2901211pjv.57.2022.03.03.12.46.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 12:46:34 -0800 (PST) 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=VYs8n9ySlRa4OB2uec0koEx8EcehzROHnTlgvRTS7Ns=; b=uKGGJeYAK/7++g9fXja1hI5KGhD4EGUhQjphOvwcb45BQFz5IwCu3ScOifFHNZUjGD dlHSktefqjO+jQaB+hI5eBdYRcARF6CeDZ8J87YXOMETj/sgLfLwUBuKbipx6xhuAaSf UkM2dAZIKaMhYJkZOr0JmMgDEGd+DId7g2ltrcF+/LGWq9BnNMswnOz4eMUJy0ZTWXaI BGfn0MjhApj7gGPIbTWh4XjhpRFVig2jq0mbd469PtIlu8+zf1I5sPzquMuZBgPa8et6 6fC44roCI9ard0xG6onkk5awA2cbC1+UGZjEk2/AJDvx5e/RxYY9Q0e4rWcR1gXOZ73A a8tA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=VYs8n9ySlRa4OB2uec0koEx8EcehzROHnTlgvRTS7Ns=; b=yAmzNgyj5WJ3xE0xRTY1AyI5vC34D/mZu6+kjEXuUG4haOi1rYiQpdgffgMBhC/ffJ HgZiWc1NxvgEfMHdZGCc8CkEfZ4JWIFmUwuf0ytTrZ0NRG7wLCcX7QQQcOZVer+PVxVx Epoch7GDjwGWo39d8oWRzU5v5ime0jzOjZm1fYyfjefxuQdM03AtrAB9/9QQLiQeufQT uiJEFeh84trp3+VtB8lsY28qVpAf9s9EqeW2oZy+glw1mYxh53386U02P7ms4BGJgMvG 7x+pKNQGKnFAtZniV7Cn67ZDQUwz9j7dbXFVRNoVYr1cACqdymdo5p6IEj3TybxrFoLX 3usQ== X-Gm-Message-State: AOAM533eS+v78R/HrKK1sl+J7sxeYH2YsPyWSQKXH7Tce/dQ22FYyTVG mhY3+mg6/de7iixwEjzlrw2v/bYDXwvdDA== X-Google-Smtp-Source: ABdhPJx2vP+wsxjevUJCZ4mFcm2QdtRkKgBcFx3RUPxNHfzouzAG7G8eL4tMS74X76ZRnHIcvSRIuQ== X-Received: by 2002:a17:90b:3887:b0:1bf:2409:c834 with SMTP id mu7-20020a17090b388700b001bf2409c834mr922845pjb.49.1646340394601; Thu, 03 Mar 2022 12:46:34 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 5/7] target/nios2: Split mmu_write Date: Thu, 3 Mar 2022 10:46:22 -1000 Message-Id: <20220303204624.468786-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303204624.468786-1-richard.henderson@linaro.org> References: <20220303204624.468786-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::630 (failed) 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646340739492100003 Content-Type: text/plain; charset="utf-8" Create three separate functions for the three separate registers. Avoid extra dispatch through op_helper.c. Dispatch to the correct function in translation. Clean up the ifdefs in wrctl. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/helper.h | 4 +- target/nios2/mmu.c | 180 +++++++++++++++++++-------------------- target/nios2/op_helper.c | 5 -- target/nios2/translate.c | 26 +++--- 4 files changed, 104 insertions(+), 111 deletions(-) diff --git a/target/nios2/helper.h b/target/nios2/helper.h index 6d8eec1814..21ef7f0791 100644 --- a/target/nios2/helper.h +++ b/target/nios2/helper.h @@ -21,6 +21,8 @@ DEF_HELPER_FLAGS_2(raise_exception, TCG_CALL_NO_WG, noreturn, env, i32) =20 #if !defined(CONFIG_USER_ONLY) -DEF_HELPER_3(mmu_write, void, env, i32, i32) +DEF_HELPER_2(mmu_write_tlbacc, void, env, i32) +DEF_HELPER_2(mmu_write_tlbmisc, void, env, i32) +DEF_HELPER_2(mmu_write_pteaddr, void, env, i32) DEF_HELPER_1(check_interrupts, void, env) #endif diff --git a/target/nios2/mmu.c b/target/nios2/mmu.c index 437fad09b7..4daab2a7ab 100644 --- a/target/nios2/mmu.c +++ b/target/nios2/mmu.c @@ -23,6 +23,7 @@ #include "cpu.h" #include "exec/exec-all.h" #include "mmu.h" +#include "exec/helper-proto.h" #include "trace/trace-target_nios2.h" =20 =20 @@ -80,106 +81,103 @@ static void mmu_flush_pid(CPUNios2State *env, uint32_= t pid) } } =20 -void mmu_write(CPUNios2State *env, uint32_t rn, uint32_t v) +void helper_mmu_write_tlbacc(CPUNios2State *env, uint32_t v) { CPUState *cs =3D env_cpu(env); Nios2CPU *cpu =3D env_archcpu(env); =20 - switch (rn) { - case CR_TLBACC: - trace_nios2_mmu_write_tlbacc(v >> CR_TLBACC_IGN_SHIFT, - (v & CR_TLBACC_C) ? 'C' : '.', - (v & CR_TLBACC_R) ? 'R' : '.', - (v & CR_TLBACC_W) ? 'W' : '.', - (v & CR_TLBACC_X) ? 'X' : '.', - (v & CR_TLBACC_G) ? 'G' : '.', - v & CR_TLBACC_PFN_MASK); + trace_nios2_mmu_write_tlbacc(v >> CR_TLBACC_IGN_SHIFT, + (v & CR_TLBACC_C) ? 'C' : '.', + (v & CR_TLBACC_R) ? 'R' : '.', + (v & CR_TLBACC_W) ? 'W' : '.', + (v & CR_TLBACC_X) ? 'X' : '.', + (v & CR_TLBACC_G) ? 'G' : '.', + v & CR_TLBACC_PFN_MASK); =20 - /* if tlbmisc.WE =3D=3D 1 then trigger a TLB write on writes to TL= BACC */ - if (env->regs[CR_TLBMISC] & CR_TLBMISC_WR) { - int way =3D (env->regs[CR_TLBMISC] >> CR_TLBMISC_WAY_SHIFT); - int vpn =3D (env->mmu.pteaddr_wr & CR_PTEADDR_VPN_MASK) >> 2; - int pid =3D (env->mmu.tlbmisc_wr & CR_TLBMISC_PID_MASK) >> 4; - int g =3D (v & CR_TLBACC_G) ? 1 : 0; - int valid =3D ((vpn & CR_TLBACC_PFN_MASK) < 0xC0000) ? 1 : 0; - Nios2TLBEntry *entry =3D - &env->mmu.tlb[(way * cpu->tlb_num_ways) + - (vpn & env->mmu.tlb_entry_mask)]; - uint32_t newTag =3D (vpn << 12) | (g << 11) | (valid << 10) | = pid; - uint32_t newData =3D v & (CR_TLBACC_C | CR_TLBACC_R | CR_TLBAC= C_W | - CR_TLBACC_X | CR_TLBACC_PFN_MASK); + /* if tlbmisc.WE =3D=3D 1 then trigger a TLB write on writes to TLBACC= */ + if (env->regs[CR_TLBMISC] & CR_TLBMISC_WR) { + int way =3D (env->regs[CR_TLBMISC] >> CR_TLBMISC_WAY_SHIFT); + int vpn =3D (env->mmu.pteaddr_wr & CR_PTEADDR_VPN_MASK) >> 2; + int pid =3D (env->mmu.tlbmisc_wr & CR_TLBMISC_PID_MASK) >> 4; + int g =3D (v & CR_TLBACC_G) ? 1 : 0; + int valid =3D ((vpn & CR_TLBACC_PFN_MASK) < 0xC0000) ? 1 : 0; + Nios2TLBEntry *entry =3D + &env->mmu.tlb[(way * cpu->tlb_num_ways) + + (vpn & env->mmu.tlb_entry_mask)]; + uint32_t newTag =3D (vpn << 12) | (g << 11) | (valid << 10) | pid; + uint32_t newData =3D v & (CR_TLBACC_C | CR_TLBACC_R | CR_TLBACC_W | + CR_TLBACC_X | CR_TLBACC_PFN_MASK); =20 - if ((entry->tag !=3D newTag) || (entry->data !=3D newData)) { - if (entry->tag & (1 << 10)) { - /* Flush existing entry */ - tlb_flush_page(cs, entry->tag & TARGET_PAGE_MASK); - } - entry->tag =3D newTag; - entry->data =3D newData; + if ((entry->tag !=3D newTag) || (entry->data !=3D newData)) { + if (entry->tag & (1 << 10)) { + /* Flush existing entry */ + tlb_flush_page(cs, entry->tag & TARGET_PAGE_MASK); } - /* Auto-increment tlbmisc.WAY */ - env->regs[CR_TLBMISC] =3D - (env->regs[CR_TLBMISC] & ~CR_TLBMISC_WAY_MASK) | - (((way + 1) & (cpu->tlb_num_ways - 1)) << - CR_TLBMISC_WAY_SHIFT); + entry->tag =3D newTag; + entry->data =3D newData; } - - /* Writes to TLBACC don't change the read-back value */ - env->mmu.tlbacc_wr =3D v; - break; - - case CR_TLBMISC: - trace_nios2_mmu_write_tlbmisc(v >> CR_TLBMISC_WAY_SHIFT, - (v & CR_TLBMISC_RD) ? 'R' : '.', - (v & CR_TLBMISC_WR) ? 'W' : '.', - (v & CR_TLBMISC_DBL) ? '2' : '.', - (v & CR_TLBMISC_BAD) ? 'B' : '.', - (v & CR_TLBMISC_PERM) ? 'P' : '.', - (v & CR_TLBMISC_D) ? 'D' : '.', - (v & CR_TLBMISC_PID_MASK) >> 4); - - if ((v & CR_TLBMISC_PID_MASK) !=3D - (env->mmu.tlbmisc_wr & CR_TLBMISC_PID_MASK)) { - mmu_flush_pid(env, (env->mmu.tlbmisc_wr & CR_TLBMISC_PID_MASK)= >> - CR_TLBMISC_PID_SHIFT); - } - /* if tlbmisc.RD =3D=3D 1 then trigger a TLB read on writes to TLB= MISC */ - if (v & CR_TLBMISC_RD) { - int way =3D (v >> CR_TLBMISC_WAY_SHIFT); - int vpn =3D (env->mmu.pteaddr_wr & CR_PTEADDR_VPN_MASK) >> 2; - Nios2TLBEntry *entry =3D - &env->mmu.tlb[(way * cpu->tlb_num_ways) + - (vpn & env->mmu.tlb_entry_mask)]; - - env->regs[CR_TLBACC] &=3D CR_TLBACC_IGN_MASK; - env->regs[CR_TLBACC] |=3D entry->data; - env->regs[CR_TLBACC] |=3D (entry->tag & (1 << 11)) ? CR_TLBACC= _G : 0; - env->regs[CR_TLBMISC] =3D - (v & ~CR_TLBMISC_PID_MASK) | - ((entry->tag & ((1 << cpu->pid_num_bits) - 1)) << - CR_TLBMISC_PID_SHIFT); - env->regs[CR_PTEADDR] &=3D ~CR_PTEADDR_VPN_MASK; - env->regs[CR_PTEADDR] |=3D (entry->tag >> 12) << CR_PTEADDR_VP= N_SHIFT; - } else { - env->regs[CR_TLBMISC] =3D v; - } - - env->mmu.tlbmisc_wr =3D v; - break; - - case CR_PTEADDR: - trace_nios2_mmu_write_pteaddr(v >> CR_PTEADDR_PTBASE_SHIFT, - (v & CR_PTEADDR_VPN_MASK) >> CR_PTEA= DDR_VPN_SHIFT); - - /* Writes to PTEADDR don't change the read-back VPN value */ - env->regs[CR_PTEADDR] =3D (v & ~CR_PTEADDR_VPN_MASK) | - (env->regs[CR_PTEADDR] & CR_PTEADDR_VPN_MA= SK); - env->mmu.pteaddr_wr =3D v; - break; - - default: - break; + /* Auto-increment tlbmisc.WAY */ + env->regs[CR_TLBMISC] =3D + (env->regs[CR_TLBMISC] & ~CR_TLBMISC_WAY_MASK) | + (((way + 1) & (cpu->tlb_num_ways - 1)) << + CR_TLBMISC_WAY_SHIFT); } + + /* Writes to TLBACC don't change the read-back value */ + env->mmu.tlbacc_wr =3D v; +} + +void helper_mmu_write_tlbmisc(CPUNios2State *env, uint32_t v) +{ + Nios2CPU *cpu =3D env_archcpu(env); + + trace_nios2_mmu_write_tlbmisc(v >> CR_TLBMISC_WAY_SHIFT, + (v & CR_TLBMISC_RD) ? 'R' : '.', + (v & CR_TLBMISC_WR) ? 'W' : '.', + (v & CR_TLBMISC_DBL) ? '2' : '.', + (v & CR_TLBMISC_BAD) ? 'B' : '.', + (v & CR_TLBMISC_PERM) ? 'P' : '.', + (v & CR_TLBMISC_D) ? 'D' : '.', + (v & CR_TLBMISC_PID_MASK) >> 4); + + if ((v & CR_TLBMISC_PID_MASK) !=3D + (env->mmu.tlbmisc_wr & CR_TLBMISC_PID_MASK)) { + mmu_flush_pid(env, (env->mmu.tlbmisc_wr & CR_TLBMISC_PID_MASK) >> + CR_TLBMISC_PID_SHIFT); + } + /* if tlbmisc.RD =3D=3D 1 then trigger a TLB read on writes to TLBMISC= */ + if (v & CR_TLBMISC_RD) { + int way =3D (v >> CR_TLBMISC_WAY_SHIFT); + int vpn =3D (env->mmu.pteaddr_wr & CR_PTEADDR_VPN_MASK) >> 2; + Nios2TLBEntry *entry =3D + &env->mmu.tlb[(way * cpu->tlb_num_ways) + + (vpn & env->mmu.tlb_entry_mask)]; + + env->regs[CR_TLBACC] &=3D CR_TLBACC_IGN_MASK; + env->regs[CR_TLBACC] |=3D entry->data; + env->regs[CR_TLBACC] |=3D (entry->tag & (1 << 11)) ? CR_TLBACC_G := 0; + env->regs[CR_TLBMISC] =3D + (v & ~CR_TLBMISC_PID_MASK) | + ((entry->tag & ((1 << cpu->pid_num_bits) - 1)) << + CR_TLBMISC_PID_SHIFT); + env->regs[CR_PTEADDR] &=3D ~CR_PTEADDR_VPN_MASK; + env->regs[CR_PTEADDR] |=3D (entry->tag >> 12) << CR_PTEADDR_VPN_SH= IFT; + } else { + env->regs[CR_TLBMISC] =3D v; + } + + env->mmu.tlbmisc_wr =3D v; +} + +void helper_mmu_write_pteaddr(CPUNios2State *env, uint32_t v) +{ + trace_nios2_mmu_write_pteaddr(v >> CR_PTEADDR_PTBASE_SHIFT, + (v & CR_PTEADDR_VPN_MASK) >> CR_PTEADDR_= VPN_SHIFT); + + /* Writes to PTEADDR don't change the read-back VPN value */ + env->regs[CR_PTEADDR] =3D (v & ~CR_PTEADDR_VPN_MASK) | + (env->regs[CR_PTEADDR] & CR_PTEADDR_VPN_MASK); + env->mmu.pteaddr_wr =3D v; } =20 void mmu_init(CPUNios2State *env) diff --git a/target/nios2/op_helper.c b/target/nios2/op_helper.c index 61fc4dc903..d729379e4d 100644 --- a/target/nios2/op_helper.c +++ b/target/nios2/op_helper.c @@ -26,11 +26,6 @@ #include "qemu/main-loop.h" =20 #if !defined(CONFIG_USER_ONLY) -void helper_mmu_write(CPUNios2State *env, uint32_t rn, uint32_t v) -{ - mmu_write(env, rn, v); -} - static void nios2_check_interrupts(CPUNios2State *env) { if (env->irq_pending && diff --git a/target/nios2/translate.c b/target/nios2/translate.c index fa355308a9..52965ba17e 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -461,30 +461,28 @@ static void rdctl(DisasContext *dc, uint32_t code, ui= nt32_t flags) /* ctlN <- rA */ static void wrctl(DisasContext *dc, uint32_t code, uint32_t flags) { - R_TYPE(instr, code); - gen_check_supervisor(dc); =20 +#ifndef CONFIG_USER_ONLY + R_TYPE(instr, code); + TCGv v =3D load_gpr(dc, instr.a); + switch (instr.imm5 + CR_BASE) { case CR_PTEADDR: - case CR_TLBACC: - case CR_TLBMISC: - { -#if !defined(CONFIG_USER_ONLY) - TCGv_i32 tmp =3D tcg_const_i32(instr.imm5 + CR_BASE); - gen_helper_mmu_write(cpu_env, tmp, load_gpr(dc, instr.a)); - tcg_temp_free_i32(tmp); -#endif + gen_helper_mmu_write_pteaddr(cpu_env, v); + break; + case CR_TLBACC: + gen_helper_mmu_write_tlbacc(cpu_env, v); + break; + case CR_TLBMISC: + gen_helper_mmu_write_tlbmisc(cpu_env, v); break; - } - default: - tcg_gen_mov_tl(cpu_R[instr.imm5 + CR_BASE], load_gpr(dc, instr.a)); + tcg_gen_mov_tl(cpu_R[instr.imm5 + CR_BASE], v); break; } =20 /* 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->base.tb) & CF_USE_ICOUNT) { gen_io_start(); --=20 2.25.1 From nobody Wed May 15 20:47:16 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646340615; cv=none; d=zohomail.com; s=zohoarc; b=HqHMxQLd5L3FOH+8p8zxf88M3TWFHHPfBsvu8rynEmmQ5TnCbmIB0LBFRlIXqyX1AAFhq6n0d+nWbqSD0qMoVNNTVPftJXRblKUe0vdzxHHXZC+TsVsbu1t8Gq+rxYJ4i8yrcNcmUcxjSHXPgeeqVOralV66Gg2A8QOOmoIQyNw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646340615; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ngdOSpEXdyoj/2hX4DgLlWUWJ0os8VUKvzBanI2gIUE=; b=XVQrkUgw6weqCb2wMJITW/jirOYoRa03gM7RUaENZIGiPWvaipSfPJ9JLxcLMGV3xnn/SXyOxoAFtO/0nqjQRVb29f6B9+Ml6U5LSnEM/gfvU2jBnnNhIOC1ekjLeTLrG5LOrnWCslYwEHNKK7HXlZKVUa36FTYx014selFSSCo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1646340615472546.914173869168; Thu, 3 Mar 2022 12:50:15 -0800 (PST) Received: from localhost ([::1]:36140 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsOs-0000OZ-H0 for importer@patchew.org; Thu, 03 Mar 2022 15:50:14 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54984) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsLa-0001a9-Mv for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:46:50 -0500 Received: from [2607:f8b0:4864:20::1033] (port=42972 helo=mail-pj1-x1033.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsLX-00010G-UY for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:46:50 -0500 Received: by mail-pj1-x1033.google.com with SMTP id c16-20020a17090aa61000b001befad2bfaaso5671704pjq.1 for ; Thu, 03 Mar 2022 12:46:36 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id d16-20020a17090ad99000b001bcbc4247a0sm2901211pjv.57.2022.03.03.12.46.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 12:46:35 -0800 (PST) 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=ngdOSpEXdyoj/2hX4DgLlWUWJ0os8VUKvzBanI2gIUE=; b=RvUciXShU+n6we9vfK68q8jwYeM5FPj8cKsXEPCAak2pkY/q7XSdHgZfBYla+L8ngI SihCSpGK5WPORFhBk6GCxInvi9Sd1CT/PYqwcl+3c3E6WX8DuxWAKt2FRzddWh57djwd WJIEA7DLX3Xe0wUr5XdXRRry9hMJkQNU3NQGJNSozCjns/ipXrXMxveqkkU8hghuVYr3 yb6J+Hd9YBsjKdzWOzcdX7ZXvLmFU8jYAHddsKiwl6dC62Ddkb4SskNVg80AZwc6JuBk fVUrC51NIVREzSh5+7eVEMbsjEyYBgPoiUpLNuliZOVWHOduDHPhSIIMJl4DD0brhgoj 0GYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ngdOSpEXdyoj/2hX4DgLlWUWJ0os8VUKvzBanI2gIUE=; b=xffkdUmEVPnNuErKqfaaw2QSq7MutlpqMzps+RuDCBLHBluM3szobdz/A3rGmgkU1y QW3mkXaXqyQDrRuQAWn34QZv32/qTvlJhf2D/2JNt0G29Zi8WdjDIPWd8YpHNiZQJH21 wFeSXf8UDBC9hJPh0zmEylS/EtJ7t4qpqGdhWMOKiHxr0eKm/B1IQl07mtmdZtT5D25+ 2GdQz5njwVRxfiRm3JdCTky3JInCZp12lK/rWrPJaoFy/Uss7KQ8x1gGJ0JSKnuZ3YUX jmvPJdQJomL4S4ZuQVo4xiaAxtIexzzZdBbK2qJGWq13mgsGMNql3lTmJcYvWc6WuIj0 /3Gg== X-Gm-Message-State: AOAM5310T8duKQdRYyRWJNJ+n4JHHPU9whC2yXR31akQYXJD7rejusr4 LyhBq3O6iA54kV+GgnTcHuvdYsj/IB8vHg== X-Google-Smtp-Source: ABdhPJyCC5azTvi8VhTLNedlB0uhHNvfOt95D5vQIpipSH3X8rAaE5WyUO+hyR0SiKoAl5DXbLh/xA== X-Received: by 2002:a17:90a:d145:b0:1bd:5400:cba9 with SMTP id t5-20020a17090ad14500b001bd5400cba9mr7288220pjw.232.1646340396112; Thu, 03 Mar 2022 12:46:36 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 6/7] target/nios2: Special case ipending in rdctl and wrctl Date: Thu, 3 Mar 2022 10:46:23 -1000 Message-Id: <20220303204624.468786-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303204624.468786-1-richard.henderson@linaro.org> References: <20220303204624.468786-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::1033 (failed) 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1033.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646340617636100003 It was never correct to be able to write to ipending. Until the rest of the irq code is tidied, the read of ipending will generate an "unnecessary" mask. Reviewed-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- target/nios2/translate.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/target/nios2/translate.c b/target/nios2/translate.c index 52965ba17e..a5f8d20729 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -452,6 +452,17 @@ static void rdctl(DisasContext *dc, uint32_t code, uin= t32_t flags) } =20 switch (instr.imm5 + CR_BASE) { + case CR_IPENDING: + /* + * The value of the ipending register is synthetic. + * In hw, this is the AND of a set of hardware irq lines + * with the ienable register. In qemu, we re-use the space + * of CR_IPENDING to store the set of irq lines, and so we + * must perform the AND here, and anywhere else we need the + * guest value of ipending. + */ + tcg_gen_and_tl(cpu_R[instr.c], cpu_R[CR_IPENDING], cpu_R[CR_IENABL= E]); + break; default: tcg_gen_mov_tl(cpu_R[instr.c], cpu_R[instr.imm5 + CR_BASE]); break; @@ -477,6 +488,9 @@ static void wrctl(DisasContext *dc, uint32_t code, uint= 32_t flags) case CR_TLBMISC: gen_helper_mmu_write_tlbmisc(cpu_env, v); break; + case CR_IPENDING: + /* ipending is read only, writes ignored. */ + break; default: tcg_gen_mov_tl(cpu_R[instr.imm5 + CR_BASE], v); break; --=20 2.25.1 From nobody Wed May 15 20:47:16 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1646340525; cv=none; d=zohomail.com; s=zohoarc; b=S4OG2mEXvIYLyWyx9t5CH73vJsZsdjOOQ2Eh437aNZ2R7sENdvt5dVZ5Ian/dI4bHMYWZZ7j1CQ4+QQwNqyAMpmH8vnPwUQy9T8LB7vB2kRer+QYTGseRTkqStXQJ0roI0E5nc4aoY/uSqn5PVxCiJWznlXTkN/nNB57LAc+2vI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646340525; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=NZsEcN4dnDK5OBQ0/25VfSwi8UBjAELqG0R7yGR1FOg=; b=F7LoaCsJXdMzsarLYia/o/bv5+z8wHgD7n4cIGBRbf2dYWyiO6y8Hjkgukjg41tvv98vEnZ4sqaqmsz5YCj6DgSTGyHAmZ1bMI6ZEE4nsx012N2kxZS3q4YAlbPB02RAEiHrZqH3Rpyz9fzY2P0KHkeE5ckZmzfGR7nNgdGBelA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 164634052563540.28443296687817; Thu, 3 Mar 2022 12:48:45 -0800 (PST) Received: from localhost ([::1]:57906 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPsNQ-0004S5-KU for importer@patchew.org; Thu, 03 Mar 2022 15:48:44 -0500 Received: from eggs.gnu.org ([209.51.188.92]:55030) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPsLc-0001fB-88 for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:46:52 -0500 Received: from [2607:f8b0:4864:20::102e] (port=51144 helo=mail-pj1-x102e.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPsLY-000110-0P for qemu-devel@nongnu.org; Thu, 03 Mar 2022 15:46:51 -0500 Received: by mail-pj1-x102e.google.com with SMTP id m22so5721209pja.0 for ; Thu, 03 Mar 2022 12:46:38 -0800 (PST) Received: from localhost.localdomain (2603-800c-1201-c600-119c-490c-a4ee-08e8.res6.spectrum.com. [2603:800c:1201:c600:119c:490c:a4ee:8e8]) by smtp.gmail.com with ESMTPSA id d16-20020a17090ad99000b001bcbc4247a0sm2901211pjv.57.2022.03.03.12.46.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Mar 2022 12:46:37 -0800 (PST) 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=NZsEcN4dnDK5OBQ0/25VfSwi8UBjAELqG0R7yGR1FOg=; b=Py/0eh9/ooy6fZPq9q4eK2TvXcAwsK+CbuIZIfxM/PZ1mboleBzMTFAp5cmZP/s2O9 RQvmf1mmXrLKNAuQ7QvxPfhZ9SkRRS/KZxfMuijDV7Wzm0og/QBN2//a7I5qWJZH9Nwc kQiS0rUhv1f2847vFmonfamq3dqfATCAQBKmNBOjXDfPnrk+Q8gnIrjiKRpUOl9FEEIZ gWvY+6snxpYuCVzNYfo44NkzB5DRp+QT2ep4rLvVvCC6qA7rvQI1ygNXJWM8LSE1n8Je BoNQwAB23bA1aY5ZX/OO/k057984getXKKm3J7O72gKBIADbEKlcgTOZSfVKgoTZ9KvG Ct3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=NZsEcN4dnDK5OBQ0/25VfSwi8UBjAELqG0R7yGR1FOg=; b=7aAXMMLKZPSOFKG8gZJkaLTy2mGI7xEpF7NoLHO9/TISiB8Hy57go4zGQUa62BpNSw XbGhdsCOj0WdE+tq20g9i/FHIwZCqXW8VFJUaBbThkaoNdylbiYvBL/BeYCvuKE6zw0l bO0AzFiiR0UVIxUS24smEDJyYeIKVsHT12sj6a29hVm+anE8Q2P3eMuCY0U4kcPzKVcd Uj8K1WznfaILV2FvWgbUHWWJkoblXjnKQGuWgya5Uoqq7T48YhNOFUD3s/rVbGmgNtTi Bl4XPekJdXN7IyEgAmkjH6+93ew2dXoCJZXJXJFqN0TRg/mMxQxp2ta8QOkTs0fGyVdz 9hOQ== X-Gm-Message-State: AOAM531dK87vDytcSDphxuG3YhTbz0c2Uc2rDiymF/mgif1NweSYYFLu Cm0ifMSXoylxgRm2giaWd6aOkf/R7ESWZg== X-Google-Smtp-Source: ABdhPJzW0nsIm6AFf21emHUq/9uq0Ca8dmPIH7re4Rfs4DA6mlyG/pE7mCzxa3sjSEZfxMgvzq7v4g== X-Received: by 2002:a17:90a:2e0e:b0:1bc:dbe:2d04 with SMTP id q14-20020a17090a2e0e00b001bc0dbe2d04mr7269109pjd.74.1646340397563; Thu, 03 Mar 2022 12:46:37 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 7/7] target/nios2: Rewrite interrupt handling Date: Thu, 3 Mar 2022 10:46:24 -1000 Message-Id: <20220303204624.468786-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220303204624.468786-1-richard.henderson@linaro.org> References: <20220303204624.468786-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::102e (failed) 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+importer=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: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646340526905100001 Previously, we would avoid setting CPU_INTERRUPT_HARD when interrupts are disabled at a particular point in time, instead queuing the value into cpu->irq_pending. This is more complicated than required. Instead, set CPU_INTERRUPT_HARD any time there is a pending interrupt, and exclusively check for interrupts disabled in nios2_cpu_exec_interrupt. Reviewed-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- target/nios2/cpu.h | 1 - target/nios2/helper.h | 1 - target/nios2/cpu.c | 10 ++++------ target/nios2/op_helper.c | 19 ------------------- target/nios2/translate.c | 14 +++++--------- 5 files changed, 9 insertions(+), 36 deletions(-) diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index d2ba0c5bbd..a00e4229ce 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -160,7 +160,6 @@ struct CPUNios2State { =20 #if !defined(CONFIG_USER_ONLY) Nios2MMU mmu; - uint32_t irq_pending; #endif int error_code; }; diff --git a/target/nios2/helper.h b/target/nios2/helper.h index 21ef7f0791..a44ecfdf7a 100644 --- a/target/nios2/helper.h +++ b/target/nios2/helper.h @@ -24,5 +24,4 @@ DEF_HELPER_FLAGS_2(raise_exception, TCG_CALL_NO_WG, noret= urn, env, i32) DEF_HELPER_2(mmu_write_tlbacc, void, env, i32) DEF_HELPER_2(mmu_write_tlbmisc, void, env, i32) DEF_HELPER_2(mmu_write_pteaddr, void, env, i32) -DEF_HELPER_1(check_interrupts, void, env) #endif diff --git a/target/nios2/cpu.c b/target/nios2/cpu.c index 4cade61e93..6975ae4bdb 100644 --- a/target/nios2/cpu.c +++ b/target/nios2/cpu.c @@ -73,12 +73,9 @@ static void nios2_cpu_set_irq(void *opaque, int irq, int= level) =20 env->regs[CR_IPENDING] =3D deposit32(env->regs[CR_IPENDING], irq, 1, != !level); =20 - env->irq_pending =3D env->regs[CR_IPENDING] & env->regs[CR_IENABLE]; - - if (env->irq_pending && (env->regs[CR_STATUS] & CR_STATUS_PIE)) { - env->irq_pending =3D 0; + if (env->regs[CR_IPENDING]) { cpu_interrupt(cs, CPU_INTERRUPT_HARD); - } else if (!env->irq_pending) { + } else { cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD); } } @@ -134,7 +131,8 @@ static bool nios2_cpu_exec_interrupt(CPUState *cs, int = interrupt_request) CPUNios2State *env =3D &cpu->env; =20 if ((interrupt_request & CPU_INTERRUPT_HARD) && - (env->regs[CR_STATUS] & CR_STATUS_PIE)) { + (env->regs[CR_STATUS] & CR_STATUS_PIE) && + (env->regs[CR_IPENDING] & env->regs[CR_IENABLE])) { cs->exception_index =3D EXCP_IRQ; nios2_cpu_do_interrupt(cs); return true; diff --git a/target/nios2/op_helper.c b/target/nios2/op_helper.c index d729379e4d..caa885f7b4 100644 --- a/target/nios2/op_helper.c +++ b/target/nios2/op_helper.c @@ -21,28 +21,9 @@ #include "qemu/osdep.h" #include "cpu.h" #include "exec/helper-proto.h" -#include "exec/cpu_ldst.h" #include "exec/exec-all.h" #include "qemu/main-loop.h" =20 -#if !defined(CONFIG_USER_ONLY) -static void nios2_check_interrupts(CPUNios2State *env) -{ - if (env->irq_pending && - (env->regs[CR_STATUS] & CR_STATUS_PIE)) { - env->irq_pending =3D 0; - cpu_interrupt(env_cpu(env), CPU_INTERRUPT_HARD); - } -} - -void helper_check_interrupts(CPUNios2State *env) -{ - qemu_mutex_lock_iothread(); - nios2_check_interrupts(env); - qemu_mutex_unlock_iothread(); -} -#endif /* !CONFIG_USER_ONLY */ - void helper_raise_exception(CPUNios2State *env, uint32_t index) { CPUState *cs =3D env_cpu(env); diff --git a/target/nios2/translate.c b/target/nios2/translate.c index a5f8d20729..f89271dbed 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -491,19 +491,15 @@ static void wrctl(DisasContext *dc, uint32_t code, ui= nt32_t flags) case CR_IPENDING: /* ipending is read only, writes ignored. */ break; + case CR_STATUS: + case CR_IENABLE: + /* If interrupts were enabled using WRCTL, trigger them. */ + dc->base.is_jmp =3D DISAS_UPDATE; + /* fall through */ default: tcg_gen_mov_tl(cpu_R[instr.imm5 + CR_BASE], v); break; } - - /* If interrupts were enabled using WRCTL, trigger them. */ - if ((instr.imm5 + CR_BASE) =3D=3D CR_STATUS) { - if (tb_cflags(dc->base.tb) & CF_USE_ICOUNT) { - gen_io_start(); - } - gen_helper_check_interrupts(cpu_env); - dc->base.is_jmp =3D DISAS_UPDATE; - } #endif } =20 --=20 2.25.1