From nobody Tue May 21 06:14:29 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=1650554955; cv=none; d=zohomail.com; s=zohoarc; b=gFwy4WZIPNEjuKkNCdlDEjBQ/TIR/Rr0EdTGv6KaJpLmeZuwT2Vzosmslsne8FJzp0RZXfF7hQypMmNHsfjyynBsAVHshVfDDkET/ycXYlApD+UNME5y9XADvMQdxaAUX803S4VA4EfaxWt+AQ37SX2/Vy37JNkYKGIKqNeU0Og= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650554955; 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=tcIID1Tauhkhysj1gC2xGpQ5XH6/Yfy4VHCAd2/0IIg=; b=ROGty2Kcr+19nysfa/qqoqJBf5FX7VA6JRgWOTlIrDiIgHDBqomtUgzEsfaXzvtSrHrenxClmrhLJK4MJzX6ThJIciket+4j1Y4CxVhj4KtmY2EVCXBmCebGZLKJK6KegqBJnke+4u0dVSSUBpFFMo57p72AC9PnUn+abToH0Hg= 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 1650554955077169.04149416390965; Thu, 21 Apr 2022 08:29:15 -0700 (PDT) Received: from localhost ([::1]:44292 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhYk5-0002vM-JF for importer@patchew.org; Thu, 21 Apr 2022 11:29:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42506) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYYx-0006cc-Vu for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:17:44 -0400 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]:54008) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYYw-0006C7-68 for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:17:43 -0400 Received: by mail-pj1-x1031.google.com with SMTP id bx5so5228895pjb.3 for ; Thu, 21 Apr 2022 08:17:41 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.17.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:17:40 -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=tcIID1Tauhkhysj1gC2xGpQ5XH6/Yfy4VHCAd2/0IIg=; b=b5Raj597Subkv0gQafl1D/UBkwAjtXzJQnETL91WVeUVHdUoNfeQhpA0DBb7LcCQiD WmwVyLLPrVI5SQ9DUhBbiLXKIJ/8HmuonXa2FxLCZrmiXSF/wGuwJv0rXaS4e+joV1zW PS5XqYAIOWtx+w8Y6CTb1dsSXdYzopZwE+wxdQ/Jq+Hb2cOakATtc4siX7Q4P4+fsQVV dCViJ1PKny9GkrBuPQxQ+aa8dnOtTqPWtxJrIKovjMaS5QKFZEaC3w353XycSPAlNQFh A/asdEvJs51sVxnc83btmWeQV8pH+SVZTCZZRejIavnwsVdSLFJRvvw85ewF+f+gUgkx NJcw== 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=tcIID1Tauhkhysj1gC2xGpQ5XH6/Yfy4VHCAd2/0IIg=; b=4Ks6uu4f0fRTn1h07u9yExE0Sbj+ADZhAVm5WLZLXQbB26JnWoYybYwlreV9zBdLx3 Ak/TvuOE4wgol6n0TskjFcdTYznjdq3vVGt08iwonXId3ZDQWHmADVphYYagzTmcvWC2 mYtj8U5K40qfM5B52w3gldyJiKb9wOSj0rfNTtNoJEST2sLSYOv30gsqDhq58YdBZUKk QBSnFOha5nTqVEvY70Z4eUGNwmqAet8EgutQaO9TWnY/ftnZAKYDdlqH+mPjNX97IUp8 Zp41Xl1FDsHTzwh7d1ZPDI8oeoS+F+RvWEo7WQOQRrcVK68ARmR6+ksvBXblQ33RRntL r23A== X-Gm-Message-State: AOAM533eoa5ItrRG2pNO5aKmlPuPNznAAT0cd1xhnNjhCjRgcbHsChso Ue8eUjoP0X6aF1q8JYA905N35E793mjnAA== X-Google-Smtp-Source: ABdhPJz9U5fWxxun/g6XKqy+k4ntPnTCCNIG7Js6y2eY6VAMfLuNgWap/J978DbkSlguHwhdXw5EVQ== X-Received: by 2002:a17:90b:100d:b0:1d2:d49a:c341 with SMTP id gm13-20020a17090b100d00b001d2d49ac341mr173632pjb.130.1650554260783; Thu, 21 Apr 2022 08:17:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 01/64] linux-user/nios2: Hoist pc advance to the top of EXCP_TRAP Date: Thu, 21 Apr 2022 08:16:32 -0700 Message-Id: <20220421151735.31996-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1031.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650554955923100001 Content-Type: text/plain; charset="utf-8" Note that this advance *should* be done by the translator, as that's the pc value that's supposed to be generated by hardware. However, that's a much larger change across sysemu as well. In the meantime, produce the correct PC for any signals raised by the trap instruction. Note the special case of TRAP_BRKPT, which itself is special cased within the kernel. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/nios2/cpu_loop.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/linux-user/nios2/cpu_loop.c b/linux-user/nios2/cpu_loop.c index 1e93ef34e6..2e9296750d 100644 --- a/linux-user/nios2/cpu_loop.c +++ b/linux-user/nios2/cpu_loop.c @@ -40,6 +40,12 @@ void cpu_loop(CPUNios2State *env) break; =20 case EXCP_TRAP: + /* + * TODO: This advance should be done in the translator, as + * hardware produces an advanced pc as part of all exceptions. + */ + env->regs[R_PC] +=3D 4; + switch (env->error_code) { case 0: qemu_log_mask(CPU_LOG_INT, "\nSyscall\n"); @@ -56,7 +62,6 @@ void cpu_loop(CPUNios2State *env) env->regs[2] =3D abs(ret); /* Return value is 0..4096 */ env->regs[7] =3D ret > 0xfffff000u; - env->regs[R_PC] +=3D 4; break; =20 case 1: @@ -69,6 +74,8 @@ void cpu_loop(CPUNios2State *env) break; case 31: qemu_log_mask(CPU_LOG_INT, "\nTrap 31\n"); + /* Match kernel's breakpoint_c(). */ + env->regs[R_PC] -=3D 4; force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->re= gs[R_PC]); break; default: @@ -99,7 +106,6 @@ void cpu_loop(CPUNios2State *env) o =3D env->regs[5]; n =3D env->regs[6]; env->regs[2] =3D qatomic_cmpxchg(h, o, n) - o; - env->regs[R_PC] +=3D 4; } break; } --=20 2.34.1 From nobody Tue May 21 06:14:29 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=1650555850; cv=none; d=zohomail.com; s=zohoarc; b=axNEfPxsnEfwfQUHASYWzSQ1k5SfXRLCnwY9+2eZNuG8hPGVbYvfTTa7yyJZ/RIlnD4Ne2QrTSDnPswkjPcoxDBlM+UVn04BifUeNY4Ziftmryxlch/QKSatYY8wrCsa4NzPipGj3Pe8CctTTpIQh73n2cQuARqSopVhdv1Z1TU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650555850; 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=SzaErCxPynOXfprynx7L2dok5JtwK8hmgMvAuV9lE9s=; b=BYiSrUSP+/sjGowTheMhEq8W0mwpBR9QDyiOs1bwrl4k/iXtzdn+9xnbaJU3oTfSk3x4X+7V+0mDpFsz4vzZnHIMIrqXX/bB3qL3vZKtHtruSlDgidNYsupPgH9mKSPvmN/W/qzbtCCnDWkKTaCM2P2yaDhff5rfBzA19z0gMdQ= 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 1650555850166413.84060427733493; Thu, 21 Apr 2022 08:44:10 -0700 (PDT) Received: from localhost ([::1]:54856 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhYyW-0007a6-D8 for importer@patchew.org; Thu, 21 Apr 2022 11:44:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42536) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZ0-0006hR-8N for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:17:46 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]:52931) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYYx-0006CF-Ih for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:17:45 -0400 Received: by mail-pj1-x1034.google.com with SMTP id 2so5248041pjw.2 for ; Thu, 21 Apr 2022 08:17:43 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.17.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:17:41 -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=SzaErCxPynOXfprynx7L2dok5JtwK8hmgMvAuV9lE9s=; b=uRYD+7Lf40jI2JFQsvztWVHdBLVLkSVSJXAnjgo1gZRMxuIY3ltCnfzkz1eLb26lFS d/SusM9pXP+F92f/iEFr0dZztSWFDeZJSCIyQJAZ0ScBMC2oANjFymk0EoJntkoQQkct k9gh+lVTSBdS0jb5sM3JxGQaiOSbr9ulAckf3MA45RpfmfMVixeUwO279AwYwM9laon3 UM0tTcVvtoZFxWm2ZWc3ikYEqzMw6jiDCwZbC3dQOgCbcsvcP9/MxNHSC78pDGtO9Mem GH+sgVDJhmxrMa3XXMYHJsO4prO3a/HZG70hka3iXrs+OO/qrp1gPkC2m50aUjtzGzVO bBDw== 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=SzaErCxPynOXfprynx7L2dok5JtwK8hmgMvAuV9lE9s=; b=qT4ZJ/91IE6ucpczXZdK5tta1xe1ZreuMflBtLtRDwdKULFjSubyFpeNXD/7F2mud4 ZN8MGSNvGtMBwoR76nTXxfKibD+hHBPtwXx/gCAIH6BcpNNQtCBMPVnPEh+r4AwLUTZe 4vQhM1kcXOgOuWfMq58WVLQKkrvvtJkxOUoWgGwiSJFsFEiiVZHnhn4gnrRxofQxNcJZ CFu1c9o2mm6Tbu9w8IEvG5UGVh+jAEByLs1DYwwGV+oTVhrGj5ZaY9YB9JC9AJnXFxXQ xxhKlAcF5qnVtjIvr7BA82FolMVqTnchTeFzrqtKvat1ioGHXrW/IOdDHHq2ia/0V8wy HGsQ== X-Gm-Message-State: AOAM533BNZSOQ09jY008AJuPQxu96OfJQtkux4KBw5WX7FXDiQh6IS62 Cn7hAFGX1MV49FXJO6vjXTdExhZ5Ko7iCw== X-Google-Smtp-Source: ABdhPJwPGBU14b8shYDfa0VZOrno3hGsLD8n2ZzDMwmjNOGhXJo+4f3iUJMxpOSvDEueZdk+tv1tUw== X-Received: by 2002:a17:902:da84:b0:15a:1214:2eab with SMTP id j4-20020a170902da8400b0015a12142eabmr13493976plx.114.1650554262148; Thu, 21 Apr 2022 08:17:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 02/64] linux-user/nios2: Fix clone child return Date: Thu, 21 Apr 2022 08:16:33 -0700 Message-Id: <20220421151735.31996-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1034.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650555852131100001 Content-Type: text/plain; charset="utf-8" The child side of clone needs to set the secondary syscall return value, r7, to indicate syscall success. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/nios2/target_cpu.h | 1 + 1 file changed, 1 insertion(+) diff --git a/linux-user/nios2/target_cpu.h b/linux-user/nios2/target_cpu.h index 2d2008f002..830b4c0741 100644 --- a/linux-user/nios2/target_cpu.h +++ b/linux-user/nios2/target_cpu.h @@ -27,6 +27,7 @@ static inline void cpu_clone_regs_child(CPUNios2State *en= v, target_ulong newsp, env->regs[R_SP] =3D newsp; } env->regs[R_RET0] =3D 0; + env->regs[7] =3D 0; } =20 static inline void cpu_clone_regs_parent(CPUNios2State *env, unsigned flag= s) --=20 2.34.1 From nobody Tue May 21 06:14:29 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=1650556032; cv=none; d=zohomail.com; s=zohoarc; b=CoucBupNPnEv91l7pkX9SCias3AKkJjVJ3wySssBg/0dnZWyDbJw2Gm1tjviv+2Vxpdx0ECTZtMprO248oagjlxBY/RQ9eBycuWOMT3EUOyGSIrM7AUxZPG8hpp+0RdCb3d4tNztkbrCL9QC0tRlPbIbXn4aSCC5KcExHIZXoA8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650556032; 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=kc+BmznUXwmW1pjlagM/yVLTM7/omr591S4lVhXMT6I=; b=PLB3mFYgMfuGKGFpQj0IsN/fhxtsCr6pWeGXFu3ilS2X+f9nc50ScC8V/n1tv1UYlc/k1u1hpZhOZz0Ly6hI1+HX1pC9MvhdFDMml6Lsi+u4U+xjzCUBczkSRAMEnJ7eSTI0zIFna2TJM+yQ7vhCb5Ux9oCtOpMs/5zGL1aBPy4= 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 1650556032079903.7969656120817; Thu, 21 Apr 2022 08:47:12 -0700 (PDT) Received: from localhost ([::1]:35152 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZ1T-0004x3-2E for importer@patchew.org; Thu, 21 Apr 2022 11:47:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42538) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZ0-0006he-Ao for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:17:46 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]:46818) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYYy-0006Cl-NU for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:17:46 -0400 Received: by mail-pl1-x634.google.com with SMTP id q1so3995346plx.13 for ; Thu, 21 Apr 2022 08:17:44 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.17.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:17:43 -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=kc+BmznUXwmW1pjlagM/yVLTM7/omr591S4lVhXMT6I=; b=aKtmofCBk4N0o1Hd7n0zDfJUllnQVItPRjRhTc9MPD5CdZQPkWA2XtVyWTDnO1jura mpus5QethwAOxQoAWngIxkaPNQJ3qjnQaG1NsiGyonxetmirOXR6tgwIRw3Y6PYsdwoX 0U8K2C4acKTodN3huaEkXKQ4iOhq7JHuYr4hoQtVH0lCjk779u2DmtcGrD8tbCjdO0/w WX5H0d9CQHzz/s5qqkUI2GP/DEOeMQqJQ5UlU4DA2Y+3Djs+a0+SDhYqVaHUUljm6IHP LkKWeEjmZtI1ntXlHH4pg9jd0+ga9XFB6BGgnjCUz0gEiHuAhkBkEXEPllfd4yui7hHI y1QQ== 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=kc+BmznUXwmW1pjlagM/yVLTM7/omr591S4lVhXMT6I=; b=2sT16GxlXZQQXBA/294nz91BrNY+rtFE6mwvprZXH4kqe1Np8gkM9H2ftlbWeK9Tl6 bbPUAIqwrD963n/PF0ULw0JZLdqWInj+YWN6gU6zCZrqTat5DECkHB7t2u+4e1QyaypG 3cG0XyGqR7kaXm/ZSLIlTYW2ofjcF72A86V0QvX64bArh7oycX6YRoijHRTRuXVneGcn 7A4PzSAMSWCiZk5Ft5nkWKUcmcxrClYPDExUJpaGKuNRLLoIa3ZN1eARGAg1CY1FAIt2 jGqk06g9/PsRj9SYPGXjuSrkLweg1vC/C0VxOWA+uGZ9rmCInJ07b/FTN348uJMBP+YD ZUTA== X-Gm-Message-State: AOAM531mc5clpNoW70n3mXn7E5Smzp1Ct6QZV+FPvVOmjyjuBvvctrK7 LnurN5I7LZoUlr//Bl85GNqb2KASef9WJA== X-Google-Smtp-Source: ABdhPJzZk5yGpHlahsw9etbxusB8PQTZM92aQTWOars4EjH0r/HXpLt0BcBtuLJaS73HF5U8CgR3NA== X-Received: by 2002:a17:90a:8405:b0:1bc:d521:b2c9 with SMTP id j5-20020a17090a840500b001bcd521b2c9mr10952630pjn.119.1650554263412; Thu, 21 Apr 2022 08:17:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 03/64] linux-user/nios2: Drop syscall 0 "workaround" Date: Thu, 21 Apr 2022 08:16:34 -0700 Message-Id: <20220421151735.31996-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x634.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650556033070100001 Content-Type: text/plain; charset="utf-8" Syscall 0 is __NR_io_setup for this target; there is nothing to work around. Reviewed-by: Peter Maydell Fixes: a0a839b65b6 ("nios2: Add usermode binaries emulation") Signed-off-by: Richard Henderson --- linux-user/nios2/cpu_loop.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/linux-user/nios2/cpu_loop.c b/linux-user/nios2/cpu_loop.c index 2e9296750d..91737c568f 100644 --- a/linux-user/nios2/cpu_loop.c +++ b/linux-user/nios2/cpu_loop.c @@ -55,10 +55,6 @@ void cpu_loop(CPUNios2State *env) env->regs[7], env->regs[8], env->regs[9], 0, 0); =20 - if (env->regs[2] =3D=3D 0) { /* FIXME: syscall 0 workar= ound */ - ret =3D 0; - } - env->regs[2] =3D abs(ret); /* Return value is 0..4096 */ env->regs[7] =3D ret > 0xfffff000u; --=20 2.34.1 From nobody Tue May 21 06:14:29 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=1650555200; cv=none; d=zohomail.com; s=zohoarc; b=haU4iQC1rPHOlmtX5eW2xmeH+9CBvtTN025Q8ontu41eMEWvq9G1X8qdCOKMCgXvfhbUKx5ckrtxJg10fYdVmioaqvzA30vp0sZkelSmOZuj1TdFv0Ea9iEcEKONUxtqFqRD/ghKvM407gytnhOJBfb/geSmAIoTzJNVoCeXzRs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650555200; 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=PaaXZ26vJ/J580k0oNw8HgY94fKNXkF1jnEzhxfmRJs=; b=aowh/s94w8M85GLVmUfHhIeX59nNngmq7bBLz3Oao7QYzZiwdmUEVStS6MKnqtnPE5Y0lsLCyCtAToJUQ3u44dTXnCwkYMQrRP6MgcAZqES6ANzHuUsiKKi4vv3OnphY0hedguWsbav2EjvvcASrkDvUCu8G8wL9YWX7HvtnqQc= 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 1650555200288781.9634534726872; Thu, 21 Apr 2022 08:33:20 -0700 (PDT) Received: from localhost ([::1]:52846 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhYo2-0001Cl-O7 for importer@patchew.org; Thu, 21 Apr 2022 11:33:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42570) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZ1-0006mk-Uq for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:17:47 -0400 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]:46943) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZ0-0006Cu-Ap for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:17:47 -0400 Received: by mail-pf1-x42c.google.com with SMTP id j6so2968235pfe.13 for ; Thu, 21 Apr 2022 08:17:45 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.17.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:17:44 -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=PaaXZ26vJ/J580k0oNw8HgY94fKNXkF1jnEzhxfmRJs=; b=gHjUymsJQsjbYqIpp9EstcEJ2EYosUpEiV8t+OmJb+wQG8Y3WD582UVpMExpql6Yzz Q2x2oJemhuQzLeUsvcePFLUbbSA//Cja60cBSxfcR8Ai/dHH3l3JJ7BPWGnACCnBdMFM jgiBcgru1NiMq4xu5oQPluYk3fpRJ9DJ30trRsW1UnA2hjUcdsI+Y6SDmteyAY6gzyPt NMOUJLGZb7CLdT0/2PtjJC7j8Pl09XXheHqMFwzSvzo0PZl+Zuk0jeIH53Qj40npgc5l 9YUQa4BtABbhBa/UTeTnJ427U9T1ZBGJKIkgvSLtu429ZlFwKOwOpqyu4bktg2d+pj34 Kufw== 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=PaaXZ26vJ/J580k0oNw8HgY94fKNXkF1jnEzhxfmRJs=; b=cOJxnAQX16X2u4pa2nHd79epZT3NYRwow1+/ZzFg2tXE0kGYCbUu2UXJ770u7rUiE7 7Mj3nZ2sWjYLMMtrKb7usFftCYRNVRX611yr5jIKwToI5w9YMrFQV/G6XWR4NOdu7e32 BUJkBeuZ4FLiDxBCsnU3fc7mr7bpsnJNhBXPZzL9jOYjP8euFFKO5cvSTrRUdSIg5gVC uU92NXMbEqh60B6jWQ+W0qqlgP0nS4CzAsXkpf1g1KFnFLJG4P2UEDcySikKkmT+oKEK Y54JjTIzuWkWGH3bpnsSP39iz/Y88R5aMr4RPZlpbbapd+vlGjQmbal1o1pukCtNGVGw E/Gw== X-Gm-Message-State: AOAM530htFZTC0TUws/WbWo51SgyEiscS24FWDaXRfwxp9cL9OQGDzY5 wugpiJJckF2QlX4ic9nOeixTRrVDly35TA== X-Google-Smtp-Source: ABdhPJyVdiD5pz7w0hgSbo7b6RXhGuiLpzoPtK3Y9NgZ3muYNJMeEspnsN8LHEy8wt3MkVBfv15KjQ== X-Received: by 2002:a05:6a00:1a4a:b0:4f7:be32:3184 with SMTP id h10-20020a056a001a4a00b004f7be323184mr110717pfv.65.1650554264875; Thu, 21 Apr 2022 08:17:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 04/64] linux-user/nios2: Adjust error return Date: Thu, 21 Apr 2022 08:16:35 -0700 Message-Id: <20220421151735.31996-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42c; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650555201050100002 Content-Type: text/plain; charset="utf-8" Follow the kernel assembly, which considers all negative return values to be errors. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/nios2/cpu_loop.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/linux-user/nios2/cpu_loop.c b/linux-user/nios2/cpu_loop.c index 91737c568f..63afba5862 100644 --- a/linux-user/nios2/cpu_loop.c +++ b/linux-user/nios2/cpu_loop.c @@ -55,9 +55,14 @@ void cpu_loop(CPUNios2State *env) env->regs[7], env->regs[8], env->regs[9], 0, 0); =20 + /* + * See the code after translate_rc_and_ret: all negative + * values are errors (aided by userspace restricted to 2G), + * errno is returned positive in r2, and error indication + * is a boolean in r7. + */ env->regs[2] =3D abs(ret); - /* Return value is 0..4096 */ - env->regs[7] =3D ret > 0xfffff000u; + env->regs[7] =3D ret < 0; break; =20 case 1: --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650555650; cv=none; d=zohomail.com; s=zohoarc; b=YP0KrGPlghPuDxB42wA8Y7d2u7tSiDwKqQsq0AciEqodged21pmbFe3B8lYzpjd23sL/ZFp4x6bDz6ZEsuOQxIehCteG7D+NM2ruZAF8ucJsii3XHW/kEauOcxelnGdOQJUdQmgviQR5S2X/Yj/ooUrfz4tbasmxZ0jEqpAFLxM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650555650; 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=7B5zMUtr7IZWIC/qs3oi7ayjqdV/BPYXqzDj5dQNLBE=; b=mvPa8JMH+sv+QMMOosKnFfrxT9nnaPLcyQqqFzM4o2IxR48jit3ulSeyWqklgbEstX8sYjrqTp7T8KAYIqNnvHaERNiUbDZMv0XcXhyRyqwndT3WMNrkfsAED9pEtZI4o8ee1U5Wzv0gVmTYU/eyVZgHqSYGEHwQClQgDc6QEhM= 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 1650555650368216.9313896965731; Thu, 21 Apr 2022 08:40:50 -0700 (PDT) Received: from localhost ([::1]:43512 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhYvI-0007lV-Q9 for importer@patchew.org; Thu, 21 Apr 2022 11:40:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42592) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZ3-0006qE-8A for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:17:49 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]:46809) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZ1-0006DF-NB for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:17:48 -0400 Received: by mail-pl1-x62a.google.com with SMTP id q1so3995508plx.13 for ; Thu, 21 Apr 2022 08:17:47 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.17.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:17:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7B5zMUtr7IZWIC/qs3oi7ayjqdV/BPYXqzDj5dQNLBE=; b=RxrVme+mMTnhXY4/id4KYjTus+lvkUjo/dK9vEO1n7PmOpowvkMjpDvTLYb9n6n1Rd Q7fyyoclWXI+Qcr3aKi+r1jUYYOnz8lvqI9BUBCuJ28fx9JlHd8HLaVom2Qc93dXmgiK rRZNWbiOJ3gzqzArssClWL/x+Mtik377TNed399J8VIbJ2YCvTGH84ZFTYYoHqgggs1N rvvWkAa5c1b1+w2t7hfPRmTzDhBpRo31ncRbsfjRS30XsbRJCf82iO9qsP188bLyEQH5 FuC6lur4N5o6zHqMc0SnTDqBb1LYgxN5VdPhDJ84GduW8nVdUUSatpWuQZT1hEo3Sc2y cB1A== 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=7B5zMUtr7IZWIC/qs3oi7ayjqdV/BPYXqzDj5dQNLBE=; b=hPKdqXObuAdinwTkQorlWx8ucOfbWJ+FQlJRbFaHh9hMHE4OW0SnFH11oStoq8Ehae a5BIaGVhpygETzhcOfkCfAVMQfyNTQkfa0zD3VXc/BJlX0n97VQBTI151E4N1C4JInMM 1LB5N9xRDQxR1eb7xwZFtZVClQ6oMtQrFf5sefPEi87gtCiT/iy203KvqbifjJOk4bd6 YrEDg6T3p8EKjgi1x4AN9PtNdmJ8LZB+T7WQtoGRdY00Sq4C1QHLMvYPNjaUGAINpZrG 6pVZZADyvtxZ9stnCH9g6gzw2dC2xBM4fQaLXxhUM4PO2ASjiobh2QW4HH+88Jrxzgwa KgiQ== X-Gm-Message-State: AOAM532eRCt/jITkRU1VQ8RggksUIymH4W5TPYgdJL54eDmypYsGV3V8 786Zr4aiABM1vqj3ifHXwliSfQ2FYYco+A== X-Google-Smtp-Source: ABdhPJyDspwv0nwBlV8aZ9yRbI/U63UiihPGXDtVrZXGfmH4fzD+sE4TyAkJ+YpWEkFymxu2G3RtkA== X-Received: by 2002:a17:90a:d709:b0:1d2:87a9:47d9 with SMTP id y9-20020a17090ad70900b001d287a947d9mr10956607pju.47.1650554266443; Thu, 21 Apr 2022 08:17:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 05/64] linux-user/nios2: Handle special qemu syscall return values Date: Thu, 21 Apr 2022 08:16:36 -0700 Message-Id: <20220421151735.31996-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650555651075100003 Content-Type: text/plain; charset="utf-8" Honor QEMU_ESIGRETURN and QEMU_ERESTARTSYS. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/nios2/cpu_loop.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/linux-user/nios2/cpu_loop.c b/linux-user/nios2/cpu_loop.c index 63afba5862..2963fc62b4 100644 --- a/linux-user/nios2/cpu_loop.c +++ b/linux-user/nios2/cpu_loop.c @@ -55,6 +55,14 @@ void cpu_loop(CPUNios2State *env) env->regs[7], env->regs[8], env->regs[9], 0, 0); =20 + if (ret =3D=3D -QEMU_ESIGRETURN) { + /* rt_sigreturn has set all state. */ + break; + } + if (ret =3D=3D -QEMU_ERESTARTSYS) { + env->regs[R_PC] -=3D 4; + break; + } /* * See the code after translate_rc_and_ret: all negative * values are errors (aided by userspace restricted to 2G), --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650555377; cv=none; d=zohomail.com; s=zohoarc; b=S8uIHtkHzU6ivznTrAEw0s8XdW9fKl3NMqtkelwlQbXBoVnmJZ5u8zlGE241NWtVCTgyrl3n288450yhsx4Ht5mc/1b5YGWFe+zxjM3Izy8UQQKwS7TDs6C4LhYw/mnozuY+HjKuoVqX1T4mGqhn8DuUnc9q3x85f5/n2wG0S0Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650555377; 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=NKOlYlcxrl/nPWmFD1pBufh0V0TUi2r8yo6MvhqaIYI=; b=PeaOwnCEbXeOxaDKpFOrTr+cPBuuAHjGv5MPAI5uNUyMfeUUs9NtjhT4rADPdPBTZyETlAWvWEpGjJjLiwQbv0mMKW6uxvRUBhA4jA7+4GmRBFhqvg5W4n+opzNUKHHOu3i6qNlm5nnws/ZVSrChdBzHeg0KPjsLU3nQ3h1Ld3w= 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 1650555377948753.4375915720972; Thu, 21 Apr 2022 08:36:17 -0700 (PDT) Received: from localhost ([::1]:33084 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhYqu-0007iZ-P3 for importer@patchew.org; Thu, 21 Apr 2022 11:36:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42610) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZ4-0006tz-Jq for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:17:50 -0400 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]:35516) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZ3-0006DZ-1q for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:17:50 -0400 Received: by mail-pl1-x629.google.com with SMTP id b7so5180491plh.2 for ; Thu, 21 Apr 2022 08:17:48 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.17.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:17: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=NKOlYlcxrl/nPWmFD1pBufh0V0TUi2r8yo6MvhqaIYI=; b=PMzeICDraAOOLw67iHi8Z+X6k8ub+PkGZXep5DY/U08BuvxXBWjokz69meb9Y3Cjvc mjmHsjhtCaC9mwpgVoP9Iyl1Qz7nOEPCS087rsuvC7A94YNUvNLouSxSl/W2A+GsYYEF JbVI3QkmeVt+1lT/6Vg3MNAuRq7TuhbGPAWZvmJ366Z4BqV16hplf6pX/2wBpWguOaKE B+4kcdw6sw8pDCPiY8bZ6ylUEu5KcoJHRDEBK/h8gpmSeZC7ftvnQiRnBCvMtb9zMWq2 f6TUxUfrZGhQ0xuBDAS84zX8yDsx5gGULgfU4sbtunnPXWo6Vo+Ac2v0IkGKD+O5KB/Y jjPw== 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=NKOlYlcxrl/nPWmFD1pBufh0V0TUi2r8yo6MvhqaIYI=; b=FQZ+bQcVWHMCXZlaLGpSwBa2XL6hENpWeOeB+10VMdhlV46z3FVKl8YDUQyxuCzGBt MA0oh1exAC+Bd74WGXLs0xxTLXB3+OCMTM4dW2L1n3/vddsfsCxDdZgXMlYHjoo+lb+U MyyJgpRjsLGMVPhfpnHk0fcPnskS7oG6qDsfw/ZeCfxsEouWEXS9apjBpKEXT3KHYZ/1 AeWsQby4Y1kMM46DqM71ddGqRYMYRBqvd3pDH5c/NF1jWFL/Wu66P6FNA18bKrzByO5K bx1LMYgBjxKd159tIQXz47M9xa42JC01gaxi1Yij2Hd0NVkFye8hjKO88ryetUnzUKax +4lA== X-Gm-Message-State: AOAM533xNS3A5mcSrZoJnCv1wL9ooSvi4t39odjRmuQoZX7hEXeAntKD cUeG5tMh0snzJwkqRHXe9RaJKEh0BJlF+Q== X-Google-Smtp-Source: ABdhPJwnVOLxcrKc8sEPcsQFUyXnJ0lxvudAAjm2Q7sT9feNBwhsgjJV1f8/x611uynedoMDCBIytw== X-Received: by 2002:a17:90a:4417:b0:1ca:a861:3fbf with SMTP id s23-20020a17090a441700b001caa8613fbfmr11089787pjg.80.1650554267740; Thu, 21 Apr 2022 08:17:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 06/64] linux-user/nios2: Remove do_sigreturn Date: Thu, 21 Apr 2022 08:16:37 -0700 Message-Id: <20220421151735.31996-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::629; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x629.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650555379976100001 Content-Type: text/plain; charset="utf-8" There is no sigreturn syscall, only rt_sigreturn. This function is unused. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/nios2/signal.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/linux-user/nios2/signal.c b/linux-user/nios2/signal.c index 517cd39270..133bc05673 100644 --- a/linux-user/nios2/signal.c +++ b/linux-user/nios2/signal.c @@ -185,13 +185,6 @@ void setup_rt_frame(int sig, struct target_sigaction *= ka, unlock_user_struct(frame, frame_addr, 1); } =20 -long do_sigreturn(CPUNios2State *env) -{ - trace_user_do_sigreturn(env, 0); - qemu_log_mask(LOG_UNIMP, "do_sigreturn: not implemented\n"); - return -TARGET_ENOSYS; -} - long do_rt_sigreturn(CPUNios2State *env) { /* Verify, can we follow the stack back */ --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650556168; cv=none; d=zohomail.com; s=zohoarc; b=Z8uimkAEYUrUnaOpQrhn7mWEt+HLESIKiS4J0N9yv7NxcioicMLSCsdUEBZ7DWFTXfHLyvsXHzEpeOvdPiXgluA++yk57JgNNDhnyMoT+7jBqYysutO/dIha7ModsKGt63BIDoMm/zg7mSaInGdsfy0R3QyfLhIcMy442qNhhXE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650556168; 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=z4bEG59HGJHZfbQ5kmr+PsOLA5+vre80D0XgeZQKHRQ=; b=Crd9zEaDaVjz1KCio0HHPfOMp6UDlEdy3U/wIH0OYd6oBhYCe0OFD1b42Tny7K4lHfyqdi0kSBAK7dYigsfzbnB9oQa3gTBkgVcnPYj9ugEvikBTDWWhsAzvY3d51d+1z8MEbrMC51NOXVbGBxFA4CqaEotnTu38EUoM7vfmd5o= 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 1650556168273416.893680395675; Thu, 21 Apr 2022 08:49:28 -0700 (PDT) Received: from localhost ([::1]:43594 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZ3f-00027S-9S for importer@patchew.org; Thu, 21 Apr 2022 11:49:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42644) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZ6-0006zI-Gi for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:17:52 -0400 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]:37807) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZ4-0006Dq-QM for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:17:52 -0400 Received: by mail-pj1-x102d.google.com with SMTP id mm4-20020a17090b358400b001cb93d8b137so8022422pjb.2 for ; Thu, 21 Apr 2022 08:17:50 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.17.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:17: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=z4bEG59HGJHZfbQ5kmr+PsOLA5+vre80D0XgeZQKHRQ=; b=O3gcU9zJ3xa439ghSOfeSOcLB6F+MRh3TaBdH0F54X8Pg41wz40kMnfHbS099Iqysu cOdLtALo7O9XpeTOTyR60ZTg+a9Nf47pqL7yLn6+oWqKnXCeLrJGcHDL0MTNN/phy3eO 4aIWPolZ882/0jHXSBAtJ+GbqT8Of5wXMGADRxBtkHU2XbZf9fKhRBBM6iRmIH53HYyJ 1JYkAn1BeR5Ku5drgBhm5crHswxDsWic4T4BqphLrAccXu6w6QDUgpxx4LE3psy7A80w HVSwN3NqDA+7b16EtHY2pYckBPqDpRC/n9slOlcCoZ7rgChAxvgpba0yhPmNYgWiBCxb /dGA== 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=z4bEG59HGJHZfbQ5kmr+PsOLA5+vre80D0XgeZQKHRQ=; b=yCDHfUHQ4BVqxcmsCp6cv06Z6JHRTvyhrzE1kEokKUxkoFHSJLMLILgRE066H+m05v lczBHDNJorKT9qJLWS4e0AljmfZ95wfHLcdt9kyHLY/fn8N+IAYB9N+QuudkfIMns+Ka DqsIFrf96bbUlK9BasfDtsFKM7YioFnSReCxuFzZG5k+H3IvQJ6Yrr6nBIq7I7TYO7Ev Z6yvomyIvhykgleUGXHdFapKomeXyfSc+9MGi+vRTRHdd+KflJN98Cibe16FjuLrqoin echGLylRInJNJ+K4zdHjidpjWsrGgeSxj9JCd6S5yk3CQRa8TgcGlvefg1wm6JYI9+8p maqw== X-Gm-Message-State: AOAM532Zqmox2fh2/srubvpuaqyC/1c6+xHPoNbvK4H3UZfMxDai4qFj YmfBKeuRdYsMFUxEyxJJyzhfjb9nTbeXpw== X-Google-Smtp-Source: ABdhPJw9M9WqQJFcwKGFb8UKPXaCDgiRTu+eZdA/MzZy23SEvKBatHr6v9x5zEM3HHvu8piD57jNGg== X-Received: by 2002:a17:90b:4d81:b0:1d2:8525:5f1c with SMTP id oj1-20020a17090b4d8100b001d285255f1cmr147064pjb.27.1650554269367; Thu, 21 Apr 2022 08:17:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 07/64] linux-user/nios2: Use QEMU_ESIGRETURN from do_rt_sigreturn Date: Thu, 21 Apr 2022 08:16:38 -0700 Message-Id: <20220421151735.31996-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102d; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650556169919100001 Content-Type: text/plain; charset="utf-8" Drop the kernel-specific "pr2" code structure and use the qemu-specific error return value. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/nios2/signal.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/linux-user/nios2/signal.c b/linux-user/nios2/signal.c index 133bc05673..9aa525e723 100644 --- a/linux-user/nios2/signal.c +++ b/linux-user/nios2/signal.c @@ -77,8 +77,7 @@ static void rt_setup_ucontext(struct target_ucontext *uc,= CPUNios2State *env) __put_user(env->regs[R_SP], &gregs[28]); } =20 -static int rt_restore_ucontext(CPUNios2State *env, struct target_ucontext = *uc, - int *pr2) +static int rt_restore_ucontext(CPUNios2State *env, struct target_ucontext = *uc) { int temp; unsigned long *gregs =3D uc->tuc_mcontext.gregs; @@ -128,8 +127,6 @@ static int rt_restore_ucontext(CPUNios2State *env, stru= ct target_ucontext *uc, __get_user(env->regs[R_SP], &gregs[28]); =20 target_restore_altstack(&uc->tuc_stack, env); - - *pr2 =3D env->regs[2]; return 0; } =20 @@ -191,7 +188,6 @@ long do_rt_sigreturn(CPUNios2State *env) abi_ulong frame_addr =3D env->regs[R_SP]; struct target_rt_sigframe *frame; sigset_t set; - int rval; =20 if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1)) { goto badframe; @@ -200,15 +196,15 @@ long do_rt_sigreturn(CPUNios2State *env) target_to_host_sigset(&set, &frame->uc.tuc_sigmask); set_sigmask(&set); =20 - if (rt_restore_ucontext(env, &frame->uc, &rval)) { + if (rt_restore_ucontext(env, &frame->uc)) { goto badframe; } =20 unlock_user_struct(frame, frame_addr, 0); - return rval; + return -QEMU_ESIGRETURN; =20 badframe: unlock_user_struct(frame, frame_addr, 0); force_sig(TARGET_SIGSEGV); - return 0; + return -QEMU_ESIGRETURN; } --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650555615; cv=none; d=zohomail.com; s=zohoarc; b=Au/+5ToF1RuHoIKUCeQ6DpiIFjMXZwqkffe6kI1TNEJR6V2JQkRKGk/duq5USflGE29dyMQJ+2OY7qPblsBL7k6hvbjQjE6VSp/JpyH/U3IYfHyFwFuCOq1dW9rrAMMbeaJj2Yo4bAUwAuI30/FNiZcoJRRUuPcpxQ1Nj/HKnNo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650555615; 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=cIUkNPf5cnbBkJ8nSnvsEvFiRfBcdC/3/0gMnHNwY2s=; b=ShP5FZ+GXsVenSLw/iH6vvwk3Q2Wq0NqceC0F8A4RsDRCEBoj+60DkhmF4J4erUzJ5X2jrnlljfvrVXEWa+b4ZTnW4GyT484sj5gu9hZWc+tC03am6n5saivMdLWCAh0P5MB7zVAvoZP7J/89HEbnyCzU2iEYw2nGAI9UCtyQWo= 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 1650555615156635.607939500185; Thu, 21 Apr 2022 08:40:15 -0700 (PDT) Received: from localhost ([::1]:41838 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhYuj-00069g-Oz for importer@patchew.org; Thu, 21 Apr 2022 11:40:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42668) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZ7-00070Z-R8 for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:17:54 -0400 Received: from mail-pg1-x532.google.com ([2607:f8b0:4864:20::532]:43780) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZ6-0006EE-37 for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:17:53 -0400 Received: by mail-pg1-x532.google.com with SMTP id g9so4887866pgc.10 for ; Thu, 21 Apr 2022 08:17:51 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.17.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:17: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=cIUkNPf5cnbBkJ8nSnvsEvFiRfBcdC/3/0gMnHNwY2s=; b=GupLg6O7dwwVZNl77Q0+aeQ9OiXNeZf9Vjxp1o8S4DxuuzRKX7zdhP8+ibhmLkKsGu +dTgfy62xWMpT1YqPQKKImob8HFDHq3skRpuCHFrZUTOMxvslWjZHD32eWAls7w/3guE lWfbKg63U5y0A+Gqp47ls2yaYjdcZMcx440qVSf4hyXxYAmDzdCThDsdRPncEmbORaLA /aqWt3pvjplEYDZYgsCiQW5jx9EDSJXvRFQ2wqgcjZdBPUt+k4W6RDl5Yh6wG80ytsFp LzxJVNY1t47v/s52l7+idT+HQIwBTZLOsUR7CwnKdprLP/NiT5+/++uY02wSVF5jPxMJ qi5g== 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=cIUkNPf5cnbBkJ8nSnvsEvFiRfBcdC/3/0gMnHNwY2s=; b=ISB/5ubHn5kuLpB7ygfuOsrkFT36Ra13eCYP7y95eTXjtKln7MrVg/WXaOcAIIKBUN 7WNxW5TNkeQ/jVuG3d6Is14X75DmzW3I2cLSvvfUG38DR5dVLCWHmE1U68tITWm6d6Y6 mN3GW3+ldnyATSrijbRMzxzeUY8nonVhPJPns/CHi7RY+o72UvGieqCssF1iheFgH0c8 gEX+o6f1pTIr08XK0Fz7EnMd7tPB+gfsHoe+8037KU57y3oE8fGZ4jc4R6yCFOSi1y85 PtB2wo1DhgizTNF4j/GqXuC++Eu4DIVfnvKMJ1I2cS9Y2TO3jS4sFkjMt0LdkaR6a856 FBcQ== X-Gm-Message-State: AOAM532zWfeMGF87pvRiGjztNcwmPKu5bVCKSwGEbyRP8wq9Xas6dL9g lLzCJeelThdQW1SQwFsoCT++0njJcHzjhA== X-Google-Smtp-Source: ABdhPJzLQf44JR3bfo1qrxCEEJk9t3dcgQOVRyx3/KBAwmBKKlEXlJ1oFEWnTbqzOLLXExQjJLbvww== X-Received: by 2002:a63:e245:0:b0:3a7:dce1:64b1 with SMTP id y5-20020a63e245000000b003a7dce164b1mr22448265pgj.67.1650554270808; Thu, 21 Apr 2022 08:17:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 08/64] tests/tcg/nios2: Re-enable linux-user tests Date: Thu, 21 Apr 2022 08:16:39 -0700 Message-Id: <20220421151735.31996-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::532; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x532.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650555617409100001 Content-Type: text/plain; charset="utf-8" Now that threads and signals have been fixed, re-enable tests. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- tests/tcg/nios2/Makefile.target | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 tests/tcg/nios2/Makefile.target diff --git a/tests/tcg/nios2/Makefile.target b/tests/tcg/nios2/Makefile.tar= get deleted file mode 100644 index b38e2352b7..0000000000 --- a/tests/tcg/nios2/Makefile.target +++ /dev/null @@ -1,11 +0,0 @@ -# nios2 specific test tweaks - -# Currently nios2 signal handling is broken -run-signals: signals - $(call skip-test, $<, "BROKEN") -run-plugin-signals-with-%: - $(call skip-test, $<, "BROKEN") -run-linux-test: linux-test - $(call skip-test, $<, "BROKEN") -run-plugin-linux-test-with-%: - $(call skip-test, $<, "BROKEN") --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650556330; cv=none; d=zohomail.com; s=zohoarc; b=KTGIy21wyQhvsulxDLQvVOFyykwgb2WEr0AWsx4EuRrZF7VhxRLxu2CSz/GY1svlwU6b4FLBE4NgewN4Ky+IhH7NFfTaqMshaIfHY3I6nM7qPbC34RvmSpLWAV56SK4+GykJ+WskmGw5JfdL9hIQbl71/1ruExT4ygWw4GJ+JWU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650556330; h=Content-Transfer-Encoding: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=S7sC/4UmY0KkIUVa0dACgOcIdGoqizVt2fv89FCsswE=; b=HXP7IknWeW3wbJJs1mNv1cibYWjYNvTgE0uHqKHe3o0NW96GECG1ltdazc3f9DMN8SGWrAHqYxoTAYWUflTdOICl0EjbnYCdfoQJ5oJzHS+DaUsjv0ilNVDXjElcA6oraikeEPyj81LI+WAqDcoMmuT+oco7j+es8YtxxWhsRt0= 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 1650556330801686.1795916739298; Thu, 21 Apr 2022 08:52:10 -0700 (PDT) Received: from localhost ([::1]:55046 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZ6G-0001U1-7Y for importer@patchew.org; Thu, 21 Apr 2022 11:52:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42684) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZ8-000726-Sr for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:17:54 -0400 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]:40534) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZ7-0006ER-CA for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:17:54 -0400 Received: by mail-pf1-x429.google.com with SMTP id i24so5287521pfa.7 for ; Thu, 21 Apr 2022 08:17:52 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.17.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:17:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=S7sC/4UmY0KkIUVa0dACgOcIdGoqizVt2fv89FCsswE=; b=SJ3r5cC9pUnPIf2w6QxTRAB4MJkBXBUl5UgaLtapgha7WFxkwHjKdj6YTzAme4ErwC UPrrKl0FCZu9CTmqaAnuhdrucL5Mta4KguDItDSO2jTz3zQSQ0JO5eZtGRmmVTG0xoai lUsKGxGiUFh3zVmdE9webXJoqmaHPl6CydYzM31nsKtzAXBC7eqjvMJcIdWe+Mik+g+h zsibtL1lqHpsvdpURdt3iwpDf/Kbcv4XdKPSny95UPVBSzyAOl+iNMyFeH70ih6W/3LN E9TFGgRDcqTxFq63aBNFlXGcHbCIFcZ/GdQmevNDnOYlh22SxtHptWdB4Ar9V92mbI0W P8rQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=S7sC/4UmY0KkIUVa0dACgOcIdGoqizVt2fv89FCsswE=; b=prX84jjWcpaOVIbvreRJ6iXt16ZTkU3hdr04v4y64uTtXhWO/1kj3JQDKiOFDe7A99 upY7srcPUWmz82Aq3x572sS1dYICSo9gtgWz7lgDx5KkIoqXaVDLcs10h/mO0wthysm4 zJlYQYxMNLJJTlC6JkyIxkNDEy+HgmwM9Sk9cNq2ZM1lvmXv2WeV3v8ldWoZl5AZwt3A TwPECChXHLqaNrUBnHtAYfx03bPKErpPLpB65ihMwhj5FaNEhmsku2WUdY1CBTToiyyr 5GM+UXRzS7ATKgF3IA9dUyz3iylQx27tSKzYcPY4Q/Ekig1yzK3WmppMPOpwa8juXbNj 70EQ== X-Gm-Message-State: AOAM532pXc3fmyDuzqEHSrx7qRXtgkhki/gjKhJZeJuSYckXMrUYH28+ cm3Nc9mouKYkq8z2QpaiZbJNkSV+VNKb3Q== X-Google-Smtp-Source: ABdhPJxzllWjzXtEtyRzPmjdxTJ/IW8bIn9ZECh5B/T8+O6W3Lb8cnIPLp6MHCa7ZpiZc3zbRcjXxg== X-Received: by 2002:a63:4b1e:0:b0:3a3:9226:594c with SMTP id y30-20020a634b1e000000b003a39226594cmr24208430pga.5.1650554272100; Thu, 21 Apr 2022 08:17:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 09/64] target/nios2: Remove user-only nios2_cpu_do_interrupt Date: Thu, 21 Apr 2022 08:16:40 -0700 Message-Id: <20220421151735.31996-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650556331225100001 Content-Type: text/plain; charset="utf-8" Since 78271684719, this function is unused for user-only, when the TCGCPUOps.do_interrupt hook itself became system-only. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/nios2/helper.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/target/nios2/helper.c b/target/nios2/helper.c index e5c98650e1..678fd96c4e 100644 --- a/target/nios2/helper.c +++ b/target/nios2/helper.c @@ -30,14 +30,6 @@ =20 #if defined(CONFIG_USER_ONLY) =20 -void nios2_cpu_do_interrupt(CPUState *cs) -{ - Nios2CPU *cpu =3D NIOS2_CPU(cs); - CPUNios2State *env =3D &cpu->env; - cs->exception_index =3D -1; - env->regs[R_EA] =3D env->regs[R_PC] + 4; -} - void nios2_cpu_record_sigsegv(CPUState *cs, vaddr addr, MMUAccessType access_type, bool maperr, uintptr_t retaddr) --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650556573; cv=none; d=zohomail.com; s=zohoarc; b=JpDxSqyM8h0Zw7fBOYitxJv5wRLSVWG7UaO8FNV/5vex7DjMINIbZbqtT8JXqo4TMStWRxi5ScTlL6MI6Q2PkLxRNFKlSkeuTzJODhqjamIF8yz5oUfeIDaNPEdcsX0Y6z83ocGNAP1YV+yK1DNp2tF/yP5EUpcIKd5Gr3RaGr4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650556573; h=Content-Transfer-Encoding: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=mRXh6kle+5JC3fg5GhdP1NKq046Rc6qP/+3/3QkWOfw=; b=ch5+mqO5tBTFWXh4nJ5Ce2jWy2jRHElvlI9F6kVWiHicZhJ9Smye6EkZmsXwuGifJfHgXmC1vF3dAO1RDbcz7pY3iLX5tBQKDbBv8ujJf8POmKrLaFHS+MzvzmcKycUy2MjdkP3ZQD7VhRIuO8kdOO2U5dfguycj21IPApOUrr0= 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 1650556573076471.71004102377697; Thu, 21 Apr 2022 08:56:13 -0700 (PDT) Received: from localhost ([::1]:35198 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZAC-0000id-2g for importer@patchew.org; Thu, 21 Apr 2022 11:56:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42702) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZA-00074e-Fa for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:17:56 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]:43919) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZ8-0006Eq-Pu for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:17:56 -0400 Received: by mail-pf1-x432.google.com with SMTP id y14so4517670pfe.10 for ; Thu, 21 Apr 2022 08:17:54 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.17.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:17:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=mRXh6kle+5JC3fg5GhdP1NKq046Rc6qP/+3/3QkWOfw=; b=tdnXFdByOKfeykxmj7FK+DSQqtgi1bzP8sk3P7sc8TsV/ldx340CZVAs0R7WuVnucG Z7ENJ2YP3qtnIp7wULTfYsJ0IeLufWLWtapBImYmzSubMhPso9uAcJPS1U3bZVsiiLfW wIOltH07Ew3ASsaPSs/x9c/UWGBJKAIlaN7/Dr6hYi2IqXwd+DAnjXUgz6XIsb5MNw5L AW3w1rHJVR3NErxgI0SGNEFB91mAcqstE7clSGi/109ruCl9WiH3Dyr+zwAoKc2dwsUH 3k2iPmtyJWF4Jx+Spxoa5HXCQjwH+oz88AtbvOuAJt0dxAEtR3kLzqtlruALOhmSQzYU 9EFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=mRXh6kle+5JC3fg5GhdP1NKq046Rc6qP/+3/3QkWOfw=; b=1dIkvqmm3focVetiKQ2e5SC+QEfQOhD4YGoibRbqoLKRMTPqBBqZH6yzJcl6hZ2zzT EXgrvMWPTmjXK7PjsoOzLP9uAsViSGOxA/DIU83I7jqpT6QUPQ/DHcTzYNz07mNqrzeM 23E9kauibb2aF7eX5ijR5xirmYx7SkGrjVPynBg1lKfYoRCpY9l1/j0/BX6t1m9+p0js 6H2Ki/A15LeK4GXnHL1LcFYy8oxCnWufHw5qHV9T9Rgopd5u/Tx1k2n22K1lD+MK8cf1 CIse1sDyZNJ99ymCusboaoyfyeOcJmIBWDD8KJYqFFRN4CjSy85s+B+1mfQAXT6jUspL faGg== X-Gm-Message-State: AOAM533fwqWrYk+KN79AIzcQL2GL8i5T5jbMA8JDjH76+id7ipWSRJd9 7tridQBC7OP012q85fmF0aFzMgBzvoSiNw== X-Google-Smtp-Source: ABdhPJxQehvd9tiBF9HNhs0WZ+nt/Vjs6+K64U4Ga4BP+OHdzCpwRD2gbTACqo7b3+XbyGM2xqYiHg== X-Received: by 2002:a65:52cc:0:b0:3a9:fd44:1d7 with SMTP id z12-20020a6552cc000000b003a9fd4401d7mr18211024pgp.211.1650554273514; Thu, 21 Apr 2022 08:17:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 10/64] target/nios2: Remove nios2_cpu_record_sigsegv Date: Thu, 21 Apr 2022 08:16:41 -0700 Message-Id: <20220421151735.31996-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650556573410100001 Content-Type: text/plain; charset="utf-8" Since f5ef0e518d0, we have a real page mapped for kuser, which means the special casing for SIGSEGV can go away. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/nios2/cpu.h | 6 +----- linux-user/nios2/cpu_loop.c | 10 ---------- target/nios2/cpu.c | 4 +--- target/nios2/helper.c | 14 +------------- 4 files changed, 3 insertions(+), 31 deletions(-) diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index ca0f3420cd..7b75641788 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -216,11 +216,7 @@ static inline int cpu_mmu_index(CPUNios2State *env, bo= ol ifetch) MMU_SUPERVISOR_IDX; } =20 -#ifdef CONFIG_USER_ONLY -void nios2_cpu_record_sigsegv(CPUState *cpu, vaddr addr, - MMUAccessType access_type, - bool maperr, uintptr_t ra); -#else +#ifndef CONFIG_USER_ONLY bool nios2_cpu_tlb_fill(CPUState *cs, vaddr address, int size, MMUAccessType access_type, int mmu_idx, bool probe, uintptr_t retaddr); diff --git a/linux-user/nios2/cpu_loop.c b/linux-user/nios2/cpu_loop.c index 2963fc62b4..f37850fe81 100644 --- a/linux-user/nios2/cpu_loop.c +++ b/linux-user/nios2/cpu_loop.c @@ -126,16 +126,6 @@ void cpu_loop(CPUNios2State *env) info.si_code =3D TARGET_TRAP_BRKPT; queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); break; - case 0xaa: - { - info.si_signo =3D TARGET_SIGSEGV; - info.si_errno =3D 0; - /* TODO: check env->error_code */ - info.si_code =3D TARGET_SEGV_MAPERR; - info._sifields._sigfault._addr =3D env->regs[R_PC]; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); - } - break; default: EXCP_DUMP(env, "\nqemu: unhandled CPU exception %#x - aborting= \n", trapnr); diff --git a/target/nios2/cpu.c b/target/nios2/cpu.c index b0877cb39e..9774a3b8a4 100644 --- a/target/nios2/cpu.c +++ b/target/nios2/cpu.c @@ -210,9 +210,7 @@ static const struct SysemuCPUOps nios2_sysemu_ops =3D { static const struct TCGCPUOps nios2_tcg_ops =3D { .initialize =3D nios2_tcg_init, =20 -#ifdef CONFIG_USER_ONLY - .record_sigsegv =3D nios2_cpu_record_sigsegv, -#else +#ifndef CONFIG_USER_ONLY .tlb_fill =3D nios2_cpu_tlb_fill, .cpu_exec_interrupt =3D nios2_cpu_exec_interrupt, .do_interrupt =3D nios2_cpu_do_interrupt, diff --git a/target/nios2/helper.c b/target/nios2/helper.c index 678fd96c4e..55b8fb0bcb 100644 --- a/target/nios2/helper.c +++ b/target/nios2/helper.c @@ -28,19 +28,7 @@ #include "exec/helper-proto.h" #include "semihosting/semihost.h" =20 -#if defined(CONFIG_USER_ONLY) - -void nios2_cpu_record_sigsegv(CPUState *cs, vaddr addr, - MMUAccessType access_type, - bool maperr, uintptr_t retaddr) -{ - /* FIXME: Disentangle kuser page from linux-user sigsegv handling. */ - cs->exception_index =3D 0xaa; - cpu_loop_exit_restore(cs, retaddr); -} - -#else /* !CONFIG_USER_ONLY */ - +#if !defined(CONFIG_USER_ONLY) void nios2_cpu_do_interrupt(CPUState *cs) { Nios2CPU *cpu =3D NIOS2_CPU(cs); --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650555795; cv=none; d=zohomail.com; s=zohoarc; b=QpbybeQahPJqRtkSapaHmT/hKbBZUmC4qUvWkRyBLgwMCEVmQmd35jjm4LhYZCJ3F87cv9LRJCnVboX5YluS3lOlSCcw5hSG6KrSkD1WHYmNGWCuYel49bB+1oXG4x2vt5EhkN331bhFiOUuJEtkMaRvxBM0JO1Asa83ZGQRZyo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650555795; h=Content-Transfer-Encoding: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=OYBMuRkIUE7W+zN2kmbgmQVz6iC93i9iGuaGDgWuMWE=; b=hNcDp7iJwZVNUqL16YK+fQpY6V564UKlQDY4XZVrrGlaF8OaawwQaxE9MRL/2CiAIcY8OYl23e9PteApfmB5F3vsMrRh7EZjeySRvxpz7Dy+CLDry20qqT1wKb4k8Yg6MX6209AowgNqsEFbn+ZaCQl+C0pgu+huSstuJ4fF5YY= 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 1650555795886234.47373039748152; Thu, 21 Apr 2022 08:43:15 -0700 (PDT) Received: from localhost ([::1]:52038 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhYxe-0005bP-Eq for importer@patchew.org; Thu, 21 Apr 2022 11:43:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42726) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZC-000798-Ij for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:17:58 -0400 Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]:37412) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZB-0006F9-19 for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:17:58 -0400 Received: by mail-pg1-x535.google.com with SMTP id x191so4908997pgd.4 for ; Thu, 21 Apr 2022 08:17:56 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.17.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:17:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=OYBMuRkIUE7W+zN2kmbgmQVz6iC93i9iGuaGDgWuMWE=; b=nkZ1QB8abgilY+DqoJmHo6lCH/HjvLuvLxjEiQWm+zy2StKRGsOC28OYyTyGjUDdni wNnPedlKtl1O2LJOwKhKr99VqtTvvaZE1QOu6Vjg019neBeCNO6WQJ0zN+BHhDAZOBZT 5n2M3G/JnTqHbFVwsqpf9iqq6l6sF5FP2FnEqlC7pGFQ5O4ndjIGlpBlbj2iZrl8t88y svHX6rgkt3XmBatw6M1tYb+BZUTznzheymtfZRKozZJ6V6OgdcbrpSbd6eBYwRXJNKAs Xl9URw7zRc4DwC3fR0yqb/lHcpGr7g92jtEYEpOPE1nPRON57Lo4hkQLMQOD6PC6NGe/ pxqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=OYBMuRkIUE7W+zN2kmbgmQVz6iC93i9iGuaGDgWuMWE=; b=4X+Y36o+i5UeJHFw56myJ8xqCj2FloyOg3zGBkLSfrO+uiZt9qiV7V1k6x06kgMhP2 T9gTSdas+oGJKQ787TFFabcbDDfF1oEpiK0PERhbRL48P8PE/4Oeg4zJCh7a0y+5dh45 buHXmWO3Zsqmj4b4bcMuSXlNxlUMVnUBVO4h3EuXfj36kEr15Mi2vTazRRlh+l9S1JjX FfWVkyarFlGogP1HKpCPJbJHK+vpn357hJbgHBdmWlLyjYIOPfPouFYlFC6Dc0u3a44s oGXInUtNzG/2IlqvH3jcheCQQ0ICNSoNS72nxr35+qMDEF4y9uHJ2zQ2ftbXJQua9eaB dl+g== X-Gm-Message-State: AOAM533hNlUKGIoLKOlkmVpXKdSOgDcJTKoQ++YjB5XoAWnfHEZA/pCP Go61PnWaEnMV0owh6jAHjyRfgzZ2bCgqxA== X-Google-Smtp-Source: ABdhPJxoHqfwinRWhVgZ3qEXEEyd8JN1ABdvwHglX8j/gh2lMyKh6O9ZGhxL8GvgEsi549JlX8wrWA== X-Received: by 2002:a05:6a00:b87:b0:50a:5ff2:bb2d with SMTP id g7-20020a056a000b8700b0050a5ff2bb2dmr155863pfj.68.1650554275627; Thu, 21 Apr 2022 08:17:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 11/64] target/nios2: Build helper.c for system only Date: Thu, 21 Apr 2022 08:16:42 -0700 Message-Id: <20220421151735.31996-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::535; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x535.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650555797852100005 Content-Type: text/plain; charset="utf-8" Remove the #ifdef !defined(CONFIG_USER_ONLY) that surrounds the whole file, and move helper.c to nios2_softmmu_ss. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/nios2/helper.c | 3 +-- target/nios2/meson.build | 7 +++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/target/nios2/helper.c b/target/nios2/helper.c index 55b8fb0bcb..04a8831443 100644 --- a/target/nios2/helper.c +++ b/target/nios2/helper.c @@ -28,7 +28,7 @@ #include "exec/helper-proto.h" #include "semihosting/semihost.h" =20 -#if !defined(CONFIG_USER_ONLY) + void nios2_cpu_do_interrupt(CPUState *cs) { Nios2CPU *cpu =3D NIOS2_CPU(cs); @@ -292,4 +292,3 @@ bool nios2_cpu_tlb_fill(CPUState *cs, vaddr address, in= t size, env->regs[CR_BADADDR] =3D address; cpu_loop_exit_restore(cs, retaddr); } -#endif /* !CONFIG_USER_ONLY */ diff --git a/target/nios2/meson.build b/target/nios2/meson.build index 62b384702d..2bd60ba306 100644 --- a/target/nios2/meson.build +++ b/target/nios2/meson.build @@ -1,14 +1,17 @@ nios2_ss =3D ss.source_set() nios2_ss.add(files( 'cpu.c', - 'helper.c', 'nios2-semi.c', 'op_helper.c', 'translate.c', )) =20 nios2_softmmu_ss =3D ss.source_set() -nios2_softmmu_ss.add(files('monitor.c', 'mmu.c')) +nios2_softmmu_ss.add(files( + 'helper.c', + 'monitor.c', + 'mmu.c' +)) =20 target_arch +=3D {'nios2': nios2_ss} target_softmmu_arch +=3D {'nios2': nios2_softmmu_ss} --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650554968; cv=none; d=zohomail.com; s=zohoarc; b=IfM1L6ITDbSVzeVf2nZQA+cO9EdG5ooEeCPT3ur0NjuqgbTjFOhQQ4DTYSUrG2KsR979DfLe3aqUpoCyLe4682EusVarfjr5+GOvzAVmDIrlnjVuytEoATxUEdi8yURk+imn91GGIqxA7O/OniOwO5Gh+gETbNnX27o0rPrcqCk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650554968; h=Content-Transfer-Encoding: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=r/x/miQLf6ebWpV7bnXYZjExmKCWn1NklUL03LEs0Hs=; b=PeYUBJePW2zNBgngu5UePkWJen7HIp6sKN6mfKPvN8Za25pMlmmY8agNCjj86JxnyaGT5U/XBXL6KQUxxyvWMyEVqYBxKt1/QjPieCW/AI9cla/WuUW3KrKDLW+vjnI1WXXG0Rz7k2GCnrMf80Ebd6dxRcZxywXi+0hu1yElmW0= 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 1650554968120622.9359833872904; Thu, 21 Apr 2022 08:29:28 -0700 (PDT) Received: from localhost ([::1]:44408 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhYkI-000305-Kj for importer@patchew.org; Thu, 21 Apr 2022 11:29:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42736) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZD-0007BJ-MD for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:17:59 -0400 Received: from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d]:40514) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZC-0006FY-5e for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:17:59 -0400 Received: by mail-pg1-x52d.google.com with SMTP id h5so4900255pgc.7 for ; Thu, 21 Apr 2022 08:17:57 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.17.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:17:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=r/x/miQLf6ebWpV7bnXYZjExmKCWn1NklUL03LEs0Hs=; b=a972qkJgvJZwLAoP+bpRHSBrXuUyaZ0SI5E6J8dHpxlNSO4dOVvLPMK2vGGIxCTTa+ yaP3y4RdR4ZngL8ac5H6mOW5euQ/jNVFXg64t2YJHY39DOmN8jTtjOSHoyddl7K9nd7v oK/7XzvgqfGWRVPJ45jolOETY/oxcITwwcFNC7eLejsxyHGE2tMFVKuq8m+23GpKr4wa iIZPTgeGMVPvGOhnmijfXmBTITPrlCMm/htTfFUXuNMCkOGm2bCiJLMmKZimPu5FSfj6 drSxMY0G/pfKyNF8EFRc9dWnBFWODzl1uiYf3f4yjffC/9vKTay8EPUunSKFIFNCzYPg hDBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=r/x/miQLf6ebWpV7bnXYZjExmKCWn1NklUL03LEs0Hs=; b=kI+vEZU0i2jGNzWGErd5CfuEKnlfenRDx0vMnWkkMtVK/GFG+ed/C5EeHXQycb8wOa xi8o2PCjfmmCuv19v2KjSxY116cJsXfmrxh3FD4/EJpjAnFIs0yQDw3Ph4Bk+6I59IGg GoDFYHndGsoEpo4+mDB149zZa88aucH2oE8JTv86APvg+4LjctSTY4pCq52DsqtqdrNm KS0AVSp6PuUOtdhz65ZtHZutyWbqXVtDFegUnIqPia7BCm7c10CR8c6Lh9FbBjZ9s4x6 7OkECIlCSCC1rAaKuY9BTtXg/zJ03x0cg6mtV9p7NXwbJiC+/OmjzCg2UioG2HKY2BbE GLQQ== X-Gm-Message-State: AOAM532sWCsg6WUx8a4ZHtLJEbKhjl4MU8u3+CdpRykjF3GXa7qu7m+n 9VduTGMSCwMPoiUgE0dDyaJb+YP5XcmWCw== X-Google-Smtp-Source: ABdhPJxkGN0Q8CebfRePJW3UDqnIn+G43pc6EyML0ncJioniRaDw+8cku2q1rBGqza4OUqkIBKfI5w== X-Received: by 2002:a05:6a00:3494:b0:50a:6317:80a1 with SMTP id cp20-20020a056a00349400b0050a631780a1mr160056pfb.24.1650554276915; Thu, 21 Apr 2022 08:17:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 12/64] linux-user/nios2: Use force_sig_fault for EXCP_DEBUG Date: Thu, 21 Apr 2022 08:16:43 -0700 Message-Id: <20220421151735.31996-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+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: -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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650554969556100001 Content-Type: text/plain; charset="utf-8" Use the simpler signal interface, which forces us to supply the missing PC value to si_addr. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- linux-user/nios2/cpu_loop.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/linux-user/nios2/cpu_loop.c b/linux-user/nios2/cpu_loop.c index f37850fe81..e725036628 100644 --- a/linux-user/nios2/cpu_loop.c +++ b/linux-user/nios2/cpu_loop.c @@ -26,7 +26,6 @@ void cpu_loop(CPUNios2State *env) { CPUState *cs =3D env_cpu(env); - target_siginfo_t info; int trapnr, ret; =20 for (;;) { @@ -121,10 +120,7 @@ void cpu_loop(CPUNios2State *env) break; =20 case EXCP_DEBUG: - info.si_signo =3D TARGET_SIGTRAP; - info.si_errno =3D 0; - info.si_code =3D TARGET_TRAP_BRKPT; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->regs[R= _PC]); break; default: EXCP_DUMP(env, "\nqemu: unhandled CPU exception %#x - aborting= \n", --=20 2.34.1 From nobody Tue May 21 06:14:30 2024 Delivered-To: importer@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+importer=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 1650555774326210.08772230005695; Thu, 21 Apr 2022 08:42:54 -0700 (PDT) Received: from localhost ([::1]:50452 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhYxJ-0004YO-78 for importer@patchew.org; Thu, 21 Apr 2022 11:42:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42752) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZF-0007EP-7b for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:01 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]:40543) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZD-0006Fj-Ma for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:00 -0400 Received: by mail-pf1-x432.google.com with SMTP id i24so5287756pfa.7 for ; Thu, 21 Apr 2022 08:17:59 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.17.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:17:57 -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=2ztYJkBMJIODpfPhZffINJhEEGUVQal4Iwfoe3eQ1+c=; b=if2kJ4tL3hbleVJoyMPVj9GfYn9YL8ID9uKIsrMkPd/9bjsnusm/4mqxuFI7HrcSHT qoR5Gnk8M3V4POaB5vISqoo5nJeT5rBEQRxEziWaywWEQbTiyUua8KvuSJSTwYXfvYq4 4nQUrokkM6dMRNi3ce3bKzss2b+5GHnKft1YY8rE4ilOckaijiLb7VqTMhmDC1x7u6cS Fad1xaLmDHn6LLvQvNXbgqITpxDZO0acc/pDzA3p62cgvfDN2saCmDxhRMIJ6Ccp8NfV IQwskfDCcU7g5AV0BH16V1aScqsZbGjySHU29+VG3DTtbCtAY6NZj4vBKyCzT+WD+aAj Vh0A== 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=2ztYJkBMJIODpfPhZffINJhEEGUVQal4Iwfoe3eQ1+c=; b=sbYHvflf4b8ZuxdPIjOJdSBOHe18PkfO35NrvuKgooFW1fT/xJunl0AJVtOYE7qnI/ YdCN64kuc6hBtTDzACfF0aCQMAnW2wcmdZJaUk3BQbNGaZ6L1gi8FXAP7v/uhxN2vGvA WFiP2rKfdH2/bR7vw2o42TjETgyl5bFsFdwz7D8sPmuzO2h5cYVgAyXf1MY+yfLryq1x tMaAKGwhpNFDPoOGcUinyQa3IGpCM6FQ4aILs4Bo4cMV/WT0fNSLErw1J4jZ0jl1fR/o yGKmYpfWpla3sI8sQ0mVYZpGL2+5lUopCp+jT+f6RYatJGxf5CikzDr6Lr0ncJ0WYy0x Wwmw== X-Gm-Message-State: AOAM532Y3e9vzU78Ep4J8uNbxJOZqwwKxqJY4K/mdKNfeA1Dyw+AICan ME8ELvGC4l80ui8MNcMUNnA94Ofm88pdXg== X-Google-Smtp-Source: ABdhPJxgNlz8colWarzCh9gScmhGHdMagdXZ4EEhui6G5/TkkMnH0E+opVPuWAV1u5JYYQHnOUDQ/g== X-Received: by 2002:a65:4789:0:b0:3a2:4866:dc48 with SMTP id e9-20020a654789000000b003a24866dc48mr24572506pgs.87.1650554278448; Thu, 21 Apr 2022 08:17:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 13/64] target/nios2: Check supervisor on eret Date: Thu, 21 Apr 2022 08:16:44 -0700 Message-Id: <20220421151735.31996-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 , Amir Gonnen Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1650555775860100001 Content-Type: text/plain; charset="utf-8" From: Amir Gonnen eret instruction is only allowed in supervisor mode. Reviewed-by: Peter Maydell Reviewed-by: Richard Henderson Signed-off-by: Amir Gonnen Message-Id: <20220303153906.2024748-2-amir.gonnen@neuroblade.ai> Signed-off-by: Richard Henderson --- target/nios2/translate.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/nios2/translate.c b/target/nios2/translate.c index 89b97ef520..eb97e13feb 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -384,6 +384,8 @@ static const Nios2Instruction i_type_instructions[] =3D= { */ static void eret(DisasContext *dc, uint32_t code, uint32_t flags) { + gen_check_supervisor(dc); + 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 --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650555978; cv=none; d=zohomail.com; s=zohoarc; b=Um1HJzXS0Nmv7mf40ZqYT32CdvmyEaKVmRZuJFZLe+Ds2k7BP/DJBud2XhZ1lkMKPmyVAgtcMhfQOEU5DBOX9slPZ2fMrwbTm5zh3noHDbdlSV7OFJZA5cHYf5XaRjm39nh0ytH/AI0oH+oaevQyaSrtLy8PEDBtS3rgD03oi5Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650555978; 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=pJcfgBv/PjlYWoRNQ2pxyLVSHhOLb8Gq0Wnr1KLfa4I=; b=f+YdTlCHIsRgXNc2hQUnJd9TvupIX6clAgBsnGGCY7OgATlKvAp7DnEDLVThdvq+IbkPbr5bOkMjj/bYdzxXvELl2J9kWuVNeE4qEeZNdNwL64Ofzb+4n+AxKuufBgeG452on55uTeyjaQYm8swnZFe/qSQDOWVQaHPI8oXeZJ0= 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 1650555978836998.9629767948131; Thu, 21 Apr 2022 08:46:18 -0700 (PDT) Received: from localhost ([::1]:60434 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZ0b-0002ud-RS for importer@patchew.org; Thu, 21 Apr 2022 11:46:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42774) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZH-0007Fo-4c for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:03 -0400 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]:40546) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZF-0006Fv-8i for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:02 -0400 Received: by mail-pf1-x435.google.com with SMTP id i24so5287820pfa.7 for ; Thu, 21 Apr 2022 08:18:00 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.17.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:17:59 -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=pJcfgBv/PjlYWoRNQ2pxyLVSHhOLb8Gq0Wnr1KLfa4I=; b=QCDofGzd9oJTpdsx/7yuoXMGHjI61CcHmh9Nl8ayldtNyobVeFVOUhN5tbeXxzrDn6 cxejSdVF79EWDc83GtMlS2LXe579stevfjDgg9m1TeqoF+mQuTj1Q0SizaFtlpQAkVOP ygPzng24/pjdRCvW6Fuar6Ub2zELHt9y5AdV83uMAMLS7TXSzbkt9WpL1sd6LSzgkcwU OnrxJqJmB26hUS4PQt0V11L2vnCXuriDdb/AaCper5EhK7aNE/v2Gxwn4iZ5tYvxd0q/ iT1x74b73jrGaMs4w2y8RIwiMzz63KzbIYlPuy5HULu4RcNODt7E/GQB4IENSchd5bex LrAA== 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=pJcfgBv/PjlYWoRNQ2pxyLVSHhOLb8Gq0Wnr1KLfa4I=; b=63EqRDf5pD4xlrVbRylphyfDfhC3wGdNPlrxNLU5iU3dRcHEEulCRGLfGeqTxrfUDo u9auaCWpfpXein4iPnDvtwhgvlPGlSWzXg+DvGvUggBvKV6lq7w9qnslt0aEBpRUYAvh 7CVYhkSxI3VuDxpFhnvZQFydq/LaEaJ5WbBmRsGF+h+ZhA7r+7oIUi4GWE1jP0mG6oV4 mgqXaJJEP6gjWmZsrb2mpFauGZc+vb+uVGj6N6/XwyHrorf4jdpkxTaUrpJ+aw8cJyxp ezeEDQxDQLfxHoVNwcoO00u1JjLRciXk9M/+qLL39XnrBDriQFTjPO3SI+BgJwlLQuHK ZMvg== X-Gm-Message-State: AOAM532LJwuwwFlEhtUfUYJKbRal+6NTf+IFKs/h66ycL3X4gWExWDbU nsM7ycRYKmUjpR716MZQfDYk5CpuRATUXw== X-Google-Smtp-Source: ABdhPJx6sGkUQ7bq7QP741LiP1m2QR1EdUTpvJZ5w8x+BIyDif3LH9MoK/ATMmb4qdTlCD/bd0ighQ== X-Received: by 2002:a63:d758:0:b0:380:fba9:f6e5 with SMTP id w24-20020a63d758000000b00380fba9f6e5mr24288359pgi.330.1650554279945; Thu, 21 Apr 2022 08:17:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 14/64] target/nios2: Stop generating code if gen_check_supervisor fails Date: Thu, 21 Apr 2022 08:16:45 -0700 Message-Id: <20220421151735.31996-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650555980703100003 Content-Type: text/plain; charset="utf-8" Whether the cpu is in user-mode or not is something that we know at translation-time. We do not need to generate code after having raised an exception. Suggested-by: Peter Maydell Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/translate.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/target/nios2/translate.c b/target/nios2/translate.c index eb97e13feb..d61e349207 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -169,12 +169,14 @@ static void gen_excp(DisasContext *dc, uint32_t code,= uint32_t flags) t_gen_helper_raise_exception(dc, flags); } =20 -static void gen_check_supervisor(DisasContext *dc) +static bool gen_check_supervisor(DisasContext *dc) { if (dc->base.tb->flags & CR_STATUS_U) { /* CPU in user mode, privileged instruction called, stop. */ t_gen_helper_raise_exception(dc, EXCP_SUPERI); + return false; } + return true; } =20 /* @@ -384,7 +386,9 @@ static const Nios2Instruction i_type_instructions[] =3D= { */ static void eret(DisasContext *dc, uint32_t code, uint32_t flags) { - gen_check_supervisor(dc); + if (!gen_check_supervisor(dc)) { + return; + } =20 tcg_gen_mov_tl(cpu_R[CR_STATUS], cpu_R[CR_ESTATUS]); tcg_gen_mov_tl(cpu_R[R_PC], cpu_R[R_EA]); @@ -447,7 +451,9 @@ static void rdctl(DisasContext *dc, uint32_t code, uint= 32_t flags) { R_TYPE(instr, code); =20 - gen_check_supervisor(dc); + if (!gen_check_supervisor(dc)) { + return; + } =20 if (unlikely(instr.c =3D=3D R_ZERO)) { return; @@ -474,9 +480,13 @@ static void rdctl(DisasContext *dc, uint32_t code, uin= t32_t flags) /* ctlN <- rA */ static void wrctl(DisasContext *dc, uint32_t code, uint32_t flags) { - gen_check_supervisor(dc); + if (!gen_check_supervisor(dc)) { + return; + } =20 -#ifndef CONFIG_USER_ONLY +#ifdef CONFIG_USER_ONLY + g_assert_not_reached(); +#else R_TYPE(instr, code); TCGv v =3D load_gpr(dc, instr.a); =20 --=20 2.34.1 From nobody Tue May 21 06:14:30 2024 Delivered-To: importer@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+importer=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 1650556119009854.9898506278292; Thu, 21 Apr 2022 08:48:39 -0700 (PDT) Received: from localhost ([::1]:40678 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZ2s-00009X-24 for importer@patchew.org; Thu, 21 Apr 2022 11:48:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42788) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZI-0007IJ-GQ for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:04 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]:45678) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZH-0006G6-07 for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:04 -0400 Received: by mail-pf1-x430.google.com with SMTP id h1so5274431pfv.12 for ; Thu, 21 Apr 2022 08:18:02 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.18.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:18:01 -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=tM+7YRwBeenVeoiKM+GORXbpSLGzmjeiKfSfrw1H9UU=; b=XW5BoFWj7PG67HcnP6Ft0fDMlt6yCYztY0vXxugaYlmzG1xwAh20xLbliV4/PQZWH8 u+wyRTDyYL8Tgqk6oRUrnCWFWGJh5pEc7UkTWwxyr+s1AEVlH0xKu2iCWiXuMjX6/0vk Kq/mOkUr5IS4Btep0ASa26f4ovdcZmZ2l/oNizQusbGiWTSfaQogFCJF0utb9Hh3VyAW e8iqptoyZF11xsgyzPLN+EfW0AC45r0ccC8mGgKhudVHVmbXDRNT2SCP1wzUIMhnHmeO QE95C7FesAZaZ8pvAbOzpDkzH1ZWgCqww8cCGQZbIocJEPXD3S8KgpgVgJHWhtP9vEph tPRg== 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=tM+7YRwBeenVeoiKM+GORXbpSLGzmjeiKfSfrw1H9UU=; b=olEITab6ECLHsKPh1byE9A2w81UTkyAZYyMcR6IPnPMq1a9K1EtVcIkgXhWDeZVvz1 wUGzrGAgjCZZaZuSOl8E5vN0FkNvd56RS9jMdaFtItfTTzMi58C1OsdvcXMmcuDn7llb lxkizs5RkUBb2MmD3U7+9I0wBnrPtfmnCCpIQ37imsSdiYofY5mTZJBJKxKKPx7ZddyX CRUkO8EK4/kD+eSGLZXGhuOjpx4xjkkZ5S3JwQhSdTKOIa8w3I+KZvlr1prE4skBzARw 2OHH31bDSX13vmkslOkqOgpqaDXThc1Cgp48LfcThOi+nVpBhVDuxprp0vk96ksQawhm HaeA== X-Gm-Message-State: AOAM531ADRImsZlYUyoQf2ytYv2/R+4RZik9p9S9L0lRZR+Ksi9PKbH3 63gu1dv1UHmTrY1TsZcvSID818vlQWxpYg== X-Google-Smtp-Source: ABdhPJx7u1SSA5gM5R+MG1tjKJKvnRXgclMe/wA6qkeYhnLXlINtSb/IcJjBbfxOoG9z3LTLfcbgdg== X-Received: by 2002:a63:e20:0:b0:385:fe08:52f9 with SMTP id d32-20020a630e20000000b00385fe0852f9mr24492254pgl.99.1650554281579; Thu, 21 Apr 2022 08:18:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 15/64] target/nios2: Add NUM_GP_REGS and NUM_CP_REGS Date: Thu, 21 Apr 2022 08:16:46 -0700 Message-Id: <20220421151735.31996-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x430.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 , Amir Gonnen Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1650556119706100001 Content-Type: text/plain; charset="utf-8" From: Amir Gonnen Split NUM_CORE_REGS into components that can be used elsewhere. Reviewed-by: Peter Maydell Signed-off-by: Amir Gonnen Message-Id: <20220303153906.2024748-3-amir.gonnen@neuroblade.ai> [rth: Split out of a larger patch for shadow register sets.] Signed-off-by: Richard Henderson --- target/nios2/cpu.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index 7b75641788..2a53b1fcf2 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -56,9 +56,11 @@ struct Nios2CPUClass { #define EXCEPTION_ADDRESS 0x00000004 #define FAST_TLB_MISS_ADDRESS 0x00000008 =20 +#define NUM_GP_REGS 32 +#define NUM_CR_REGS 32 =20 /* GP regs + CR regs + PC */ -#define NUM_CORE_REGS (32 + 32 + 1) +#define NUM_CORE_REGS (NUM_GP_REGS + NUM_CR_REGS + 1) =20 /* General purpose register aliases */ #define R_ZERO 0 @@ -79,7 +81,7 @@ struct Nios2CPUClass { #define R_RA 31 =20 /* Control register aliases */ -#define CR_BASE 32 +#define CR_BASE NUM_GP_REGS #define CR_STATUS (CR_BASE + 0) #define CR_STATUS_PIE (1 << 0) #define CR_STATUS_U (1 << 1) --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650555212; cv=none; d=zohomail.com; s=zohoarc; b=HP2RZz4ti9sdRG8GHBpRqftWlH+AT0xgp890UfQx6VGJXc/m0UeK2FvZ6ulrA4GqsxNYgOwXscDl/X+ukBhsa4teXJz1+pEkR/EUcKrz2+kjRxFz1DreuYHz9WPebJcw5v9yBl4y8CrWOAISGWDiyYEr+5WnCzbgDx+iAZbDvPY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650555212; 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=hdb1FH5XxsYBCzk5vfCvqt7URXO9YALHYve0W1AU8CU=; b=PDxuUswbrAr273DCGIw0wycVcfnKbkbvlBWNnM7m4naaJI9enUdiQluAcaJubli5G4rPH5q0acwT8MMMKhTUVE7mEhHCHmpfwZi95pNxhbLjfggJ91i+NC2dL52fxvVbsqA4St4dLy/N1lANPya9bUk2aBWo+hGh60KtWnUyDIg= 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 1650555212558555.6105167578752; Thu, 21 Apr 2022 08:33:32 -0700 (PDT) Received: from localhost ([::1]:53296 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhYoF-0001ax-3Z for importer@patchew.org; Thu, 21 Apr 2022 11:33:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42822) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZL-0007KH-4y for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:07 -0400 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]:40538) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZI-0006HT-M2 for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:06 -0400 Received: by mail-pf1-x42c.google.com with SMTP id i24so5287975pfa.7 for ; Thu, 21 Apr 2022 08:18:04 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.18.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:18:02 -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=hdb1FH5XxsYBCzk5vfCvqt7URXO9YALHYve0W1AU8CU=; b=ivwJ6VWrxqgsZp/HK73y2PGnMUKphbbCr62Zm+NOidBNwZVWk7XsYNw9QOcbzzrDki HQe4GVO5OyC6cgx5yN41ZAeuIiONjgvudSkWWuyzZICp9GQfX3ZC+0nhmRk65TMFoBLX o9hhE2KVRUyP0MomSGmbjfYz1/rw1irnXL9tb8RUSbKcDBS5V4U1isHC4oAn6m/AUvZ/ Kv6OiEL3ePos6BEp0AoA58UCJW4/JJ93riMx4vKkdYU/i07plKiEo8eH2yoGRBZoKWPm M1m2ziq/qiw5I+UTCm6yh05gdS243QYMW/ZXNxsTGVzk0U5DO8PJCSE1EX6JPdGhd+Tx EHxA== 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=hdb1FH5XxsYBCzk5vfCvqt7URXO9YALHYve0W1AU8CU=; b=2JZxBHFVY3ea+8rVr169pcjmHovKrO00SDcpppTM3CU7pECR8Q7ZFFcrgB4ncgS8co 1uO0NoS7TjDe8kyARc4BxJqPiy8HZHcuUMeWSBwyqPmrMWumqgXkzKkmQkxuB/P8eptr 7/P2n6vBiaSJTpt+pN2mIamgeLsNhlvX+PcgJ4he/Y+pbdvAlbadbd0vmeAo4eOD5HMe wFAgPuF9X8rT8a3N/uSFnseYWUcGl/nglakrLhzA97plpsQbD85uawsotnSt5TF/jO0+ YAfpmImsxWfnWYwMSbvmWM7BcgxP4UZZ7qVLuf4IrX402yjYryEVnXwL3WgG28Bipvlb LJIA== X-Gm-Message-State: AOAM530Ff/kHrnw73sysUxAZRIHplmy6qCTEr7ooBN44QFy2WfSXmVEn 1QNUqiayyT8J2c7j6usXtazCpgiTavOjXg== X-Google-Smtp-Source: ABdhPJy7rtD9gLv1Bnk28JXKPXHl+wDv6XpRtzMLN/C618A3MEqH4en5QhUB4oHtXXQs62zuzcBsxQ== X-Received: by 2002:a63:78c3:0:b0:398:2d6d:c275 with SMTP id t186-20020a6378c3000000b003982d6dc275mr24356688pgc.565.1650554283117; Thu, 21 Apr 2022 08:18:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 16/64] target/nios2: Split PC out of env->regs[] Date: Thu, 21 Apr 2022 08:16:47 -0700 Message-Id: <20220421151735.31996-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42c; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650555213094100001 Content-Type: text/plain; charset="utf-8" It is cleaner to have a separate name for this variable. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/cpu.h | 10 +++----- linux-user/elfload.c | 2 +- linux-user/nios2/cpu_loop.c | 19 +++++++------- linux-user/nios2/signal.c | 6 ++--- target/nios2/cpu.c | 8 +++--- target/nios2/helper.c | 49 +++++++++++++++++-------------------- target/nios2/translate.c | 29 +++++++++++----------- 7 files changed, 58 insertions(+), 65 deletions(-) diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index 2a53b1fcf2..dbd9d1b587 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -59,8 +59,8 @@ struct Nios2CPUClass { #define NUM_GP_REGS 32 #define NUM_CR_REGS 32 =20 -/* GP regs + CR regs + PC */ -#define NUM_CORE_REGS (NUM_GP_REGS + NUM_CR_REGS + 1) +/* GP regs + CR regs */ +#define NUM_CORE_REGS (NUM_GP_REGS + NUM_CR_REGS) =20 /* General purpose register aliases */ #define R_ZERO 0 @@ -130,9 +130,6 @@ struct Nios2CPUClass { #define CR_MPUBASE (CR_BASE + 14) #define CR_MPUACC (CR_BASE + 15) =20 -/* Other registers */ -#define R_PC 64 - /* Exceptions */ #define EXCP_BREAK 0x1000 #define EXCP_RESET 0 @@ -158,6 +155,7 @@ struct Nios2CPUClass { =20 struct CPUArchState { uint32_t regs[NUM_CORE_REGS]; + uint32_t pc; =20 #if !defined(CONFIG_USER_ONLY) Nios2MMU mmu; @@ -237,7 +235,7 @@ typedef Nios2CPU ArchCPU; static inline void cpu_get_tb_cpu_state(CPUNios2State *env, target_ulong *= pc, target_ulong *cs_base, uint32_t *f= lags) { - *pc =3D env->regs[R_PC]; + *pc =3D env->pc; *cs_base =3D 0; *flags =3D (env->regs[CR_STATUS] & (CR_STATUS_EH | CR_STATUS_U)); } diff --git a/linux-user/elfload.c b/linux-user/elfload.c index d6bb1fc7ca..397dec5eb8 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -1170,7 +1170,7 @@ static void elf_core_copy_regs(target_elf_gregset_t *= regs, (*regs)[30] =3D -1; /* R_SSTATUS */ (*regs)[31] =3D tswapreg(env->regs[R_RA]); =20 - (*regs)[32] =3D tswapreg(env->regs[R_PC]); + (*regs)[32] =3D tswapreg(env->pc); =20 (*regs)[33] =3D -1; /* R_STATUS */ (*regs)[34] =3D tswapreg(env->regs[CR_ESTATUS]); diff --git a/linux-user/nios2/cpu_loop.c b/linux-user/nios2/cpu_loop.c index e725036628..a941f9032e 100644 --- a/linux-user/nios2/cpu_loop.c +++ b/linux-user/nios2/cpu_loop.c @@ -43,7 +43,7 @@ void cpu_loop(CPUNios2State *env) * TODO: This advance should be done in the translator, as * hardware produces an advanced pc as part of all exceptions. */ - env->regs[R_PC] +=3D 4; + env->pc +=3D 4; =20 switch (env->error_code) { case 0: @@ -59,7 +59,7 @@ void cpu_loop(CPUNios2State *env) break; } if (ret =3D=3D -QEMU_ERESTARTSYS) { - env->regs[R_PC] -=3D 4; + env->pc -=3D 4; break; } /* @@ -74,22 +74,21 @@ void cpu_loop(CPUNios2State *env) =20 case 1: qemu_log_mask(CPU_LOG_INT, "\nTrap 1\n"); - force_sig_fault(TARGET_SIGUSR1, 0, env->regs[R_PC]); + force_sig_fault(TARGET_SIGUSR1, 0, env->pc); break; case 2: qemu_log_mask(CPU_LOG_INT, "\nTrap 2\n"); - force_sig_fault(TARGET_SIGUSR2, 0, env->regs[R_PC]); + force_sig_fault(TARGET_SIGUSR2, 0, env->pc); break; case 31: qemu_log_mask(CPU_LOG_INT, "\nTrap 31\n"); /* Match kernel's breakpoint_c(). */ - env->regs[R_PC] -=3D 4; - force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->re= gs[R_PC]); + env->pc -=3D 4; + force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->pc= ); break; default: qemu_log_mask(CPU_LOG_INT, "\nTrap %d\n", env->error_code); - force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLTRP, - env->regs[R_PC]); + force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLTRP, env->pc); break; =20 case 16: /* QEMU specific, for __kuser_cmpxchg */ @@ -120,7 +119,7 @@ void cpu_loop(CPUNios2State *env) break; =20 case EXCP_DEBUG: - force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->regs[R= _PC]); + force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->pc); break; default: EXCP_DUMP(env, "\nqemu: unhandled CPU exception %#x - aborting= \n", @@ -156,6 +155,6 @@ void target_cpu_copy_regs(CPUArchState *env, struct tar= get_pt_regs *regs) env->regs[R_SP] =3D regs->sp; env->regs[R_GP] =3D regs->gp; env->regs[CR_ESTATUS] =3D regs->estatus; - env->regs[R_PC] =3D regs->ea; + env->pc =3D regs->ea; /* TODO: unsigned long orig_r7; */ } diff --git a/linux-user/nios2/signal.c b/linux-user/nios2/signal.c index 9aa525e723..32b3dc99c6 100644 --- a/linux-user/nios2/signal.c +++ b/linux-user/nios2/signal.c @@ -73,7 +73,7 @@ static void rt_setup_ucontext(struct target_ucontext *uc,= CPUNios2State *env) __put_user(env->regs[R_RA], &gregs[23]); __put_user(env->regs[R_FP], &gregs[24]); __put_user(env->regs[R_GP], &gregs[25]); - __put_user(env->regs[R_PC], &gregs[27]); + __put_user(env->pc, &gregs[27]); __put_user(env->regs[R_SP], &gregs[28]); } =20 @@ -121,7 +121,7 @@ static int rt_restore_ucontext(CPUNios2State *env, stru= ct target_ucontext *uc) __get_user(env->regs[R_GP], &gregs[25]); /* Not really necessary no user settable bits */ __get_user(temp, &gregs[26]); - __get_user(env->regs[R_PC], &gregs[27]); + __get_user(env->pc, &gregs[27]); =20 __get_user(env->regs[R_RA], &gregs[23]); __get_user(env->regs[R_SP], &gregs[28]); @@ -177,7 +177,7 @@ void setup_rt_frame(int sig, struct target_sigaction *k= a, env->regs[4] =3D sig; env->regs[5] =3D frame_addr + offsetof(struct target_rt_sigframe, info= ); env->regs[6] =3D frame_addr + offsetof(struct target_rt_sigframe, uc); - env->regs[R_PC] =3D ka->_sa_handler; + env->pc =3D ka->_sa_handler; =20 unlock_user_struct(frame, frame_addr, 1); } diff --git a/target/nios2/cpu.c b/target/nios2/cpu.c index 9774a3b8a4..dc1551241e 100644 --- a/target/nios2/cpu.c +++ b/target/nios2/cpu.c @@ -31,7 +31,7 @@ static void nios2_cpu_set_pc(CPUState *cs, vaddr value) Nios2CPU *cpu =3D NIOS2_CPU(cs); CPUNios2State *env =3D &cpu->env; =20 - env->regs[R_PC] =3D value; + env->pc =3D value; } =20 static bool nios2_cpu_has_work(CPUState *cs) @@ -49,7 +49,7 @@ static void nios2_cpu_reset(DeviceState *dev) ncc->parent_reset(dev); =20 memset(env->regs, 0, sizeof(uint32_t) * NUM_CORE_REGS); - env->regs[R_PC] =3D cpu->reset_addr; + env->pc =3D cpu->reset_addr; =20 #if defined(CONFIG_USER_ONLY) /* Start in user mode with interrupts enabled. */ @@ -156,7 +156,7 @@ static int nios2_cpu_gdb_read_register(CPUState *cs, GB= yteArray *mem_buf, int n) if (n < 32) { /* GP regs */ return gdb_get_reg32(mem_buf, env->regs[n]); } else if (n =3D=3D 32) { /* PC */ - return gdb_get_reg32(mem_buf, env->regs[R_PC]); + return gdb_get_reg32(mem_buf, env->pc); } else if (n < 49) { /* Status regs */ return gdb_get_reg32(mem_buf, env->regs[n - 1]); } @@ -178,7 +178,7 @@ static int nios2_cpu_gdb_write_register(CPUState *cs, u= int8_t *mem_buf, int n) if (n < 32) { /* GP regs */ env->regs[n] =3D ldl_p(mem_buf); } else if (n =3D=3D 32) { /* PC */ - env->regs[R_PC] =3D ldl_p(mem_buf); + env->pc =3D ldl_p(mem_buf); } else if (n < 49) { /* Status regs */ env->regs[n - 1] =3D ldl_p(mem_buf); } diff --git a/target/nios2/helper.c b/target/nios2/helper.c index 04a8831443..34b3e18e37 100644 --- a/target/nios2/helper.c +++ b/target/nios2/helper.c @@ -38,7 +38,7 @@ void nios2_cpu_do_interrupt(CPUState *cs) case EXCP_IRQ: assert(env->regs[CR_STATUS] & CR_STATUS_PIE); =20 - qemu_log_mask(CPU_LOG_INT, "interrupt at pc=3D%x\n", env->regs[R_P= C]); + qemu_log_mask(CPU_LOG_INT, "interrupt at pc=3D%x\n", env->pc); =20 env->regs[CR_ESTATUS] =3D env->regs[CR_STATUS]; env->regs[CR_STATUS] |=3D CR_STATUS_IH; @@ -47,14 +47,13 @@ void nios2_cpu_do_interrupt(CPUState *cs) env->regs[CR_EXCEPTION] &=3D ~(0x1F << 2); env->regs[CR_EXCEPTION] |=3D (cs->exception_index & 0x1F) << 2; =20 - env->regs[R_EA] =3D env->regs[R_PC] + 4; - env->regs[R_PC] =3D cpu->exception_addr; + env->regs[R_EA] =3D env->pc + 4; + env->pc =3D cpu->exception_addr; break; =20 case EXCP_TLBD: if ((env->regs[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { - qemu_log_mask(CPU_LOG_INT, "TLB MISS (fast) at pc=3D%x\n", - env->regs[R_PC]); + qemu_log_mask(CPU_LOG_INT, "TLB MISS (fast) at pc=3D%x\n", env= ->pc); =20 /* Fast TLB miss */ /* Variation from the spec. Table 3-35 of the cpu reference sh= ows @@ -70,11 +69,10 @@ void nios2_cpu_do_interrupt(CPUState *cs) env->regs[CR_TLBMISC] &=3D ~CR_TLBMISC_DBL; env->regs[CR_TLBMISC] |=3D CR_TLBMISC_WR; =20 - env->regs[R_EA] =3D env->regs[R_PC] + 4; - env->regs[R_PC] =3D cpu->fast_tlb_miss_addr; + env->regs[R_EA] =3D env->pc + 4; + env->pc =3D cpu->fast_tlb_miss_addr; } else { - qemu_log_mask(CPU_LOG_INT, "TLB MISS (double) at pc=3D%x\n", - env->regs[R_PC]); + qemu_log_mask(CPU_LOG_INT, "TLB MISS (double) at pc=3D%x\n", e= nv->pc); =20 /* Double TLB miss */ env->regs[CR_STATUS] |=3D CR_STATUS_EH; @@ -85,14 +83,14 @@ void nios2_cpu_do_interrupt(CPUState *cs) =20 env->regs[CR_TLBMISC] |=3D CR_TLBMISC_DBL; =20 - env->regs[R_PC] =3D cpu->exception_addr; + env->pc =3D cpu->exception_addr; } break; =20 case EXCP_TLBR: case EXCP_TLBW: case EXCP_TLBX: - qemu_log_mask(CPU_LOG_INT, "TLB PERM at pc=3D%x\n", env->regs[R_PC= ]); + qemu_log_mask(CPU_LOG_INT, "TLB PERM at pc=3D%x\n", env->pc); =20 env->regs[CR_ESTATUS] =3D env->regs[CR_STATUS]; env->regs[CR_STATUS] |=3D CR_STATUS_EH; @@ -105,19 +103,18 @@ void nios2_cpu_do_interrupt(CPUState *cs) env->regs[CR_TLBMISC] |=3D CR_TLBMISC_WR; } =20 - env->regs[R_EA] =3D env->regs[R_PC] + 4; - env->regs[R_PC] =3D cpu->exception_addr; + env->regs[R_EA] =3D env->pc + 4; + env->pc =3D cpu->exception_addr; break; =20 case EXCP_SUPERA: case EXCP_SUPERI: case EXCP_SUPERD: - qemu_log_mask(CPU_LOG_INT, "SUPERVISOR exception at pc=3D%x\n", - env->regs[R_PC]); + qemu_log_mask(CPU_LOG_INT, "SUPERVISOR exception at pc=3D%x\n", en= v->pc); =20 if ((env->regs[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { env->regs[CR_ESTATUS] =3D env->regs[CR_STATUS]; - env->regs[R_EA] =3D env->regs[R_PC] + 4; + env->regs[R_EA] =3D env->pc + 4; } =20 env->regs[CR_STATUS] |=3D CR_STATUS_EH; @@ -126,17 +123,16 @@ void nios2_cpu_do_interrupt(CPUState *cs) env->regs[CR_EXCEPTION] &=3D ~(0x1F << 2); env->regs[CR_EXCEPTION] |=3D (cs->exception_index & 0x1F) << 2; =20 - env->regs[R_PC] =3D cpu->exception_addr; + env->pc =3D cpu->exception_addr; break; =20 case EXCP_ILLEGAL: case EXCP_TRAP: - qemu_log_mask(CPU_LOG_INT, "TRAP exception at pc=3D%x\n", - env->regs[R_PC]); + qemu_log_mask(CPU_LOG_INT, "TRAP exception at pc=3D%x\n", env->pc); =20 if ((env->regs[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { env->regs[CR_ESTATUS] =3D env->regs[CR_STATUS]; - env->regs[R_EA] =3D env->regs[R_PC] + 4; + env->regs[R_EA] =3D env->pc + 4; } =20 env->regs[CR_STATUS] |=3D CR_STATUS_EH; @@ -145,24 +141,23 @@ void nios2_cpu_do_interrupt(CPUState *cs) env->regs[CR_EXCEPTION] &=3D ~(0x1F << 2); env->regs[CR_EXCEPTION] |=3D (cs->exception_index & 0x1F) << 2; =20 - env->regs[R_PC] =3D cpu->exception_addr; + env->pc =3D cpu->exception_addr; break; =20 case EXCP_BREAK: - qemu_log_mask(CPU_LOG_INT, "BREAK exception at pc=3D%x\n", - env->regs[R_PC]); + qemu_log_mask(CPU_LOG_INT, "BREAK exception at pc=3D%x\n", env->pc= ); /* The semihosting instruction is "break 1". */ if (semihosting_enabled() && - cpu_ldl_code(env, env->regs[R_PC]) =3D=3D 0x003da07a) { + cpu_ldl_code(env, env->pc) =3D=3D 0x003da07a) { qemu_log_mask(CPU_LOG_INT, "Entering semihosting\n"); - env->regs[R_PC] +=3D 4; + env->pc +=3D 4; do_nios2_semihosting(env); break; } =20 if ((env->regs[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { env->regs[CR_BSTATUS] =3D env->regs[CR_STATUS]; - env->regs[R_BA] =3D env->regs[R_PC] + 4; + env->regs[R_BA] =3D env->pc + 4; } =20 env->regs[CR_STATUS] |=3D CR_STATUS_EH; @@ -171,7 +166,7 @@ void nios2_cpu_do_interrupt(CPUState *cs) env->regs[CR_EXCEPTION] &=3D ~(0x1F << 2); env->regs[CR_EXCEPTION] |=3D (cs->exception_index & 0x1F) << 2; =20 - env->regs[R_PC] =3D cpu->exception_addr; + env->pc =3D cpu->exception_addr; break; =20 default: diff --git a/target/nios2/translate.c b/target/nios2/translate.c index d61e349207..226bd9e30b 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -104,6 +104,7 @@ typedef struct DisasContext { } DisasContext; =20 static TCGv cpu_R[NUM_CORE_REGS]; +static TCGv cpu_pc; =20 typedef struct Nios2Instruction { void (*handler)(DisasContext *dc, uint32_t code, uint32_t flags); @@ -144,7 +145,7 @@ static void t_gen_helper_raise_exception(DisasContext *= dc, { TCGv_i32 tmp =3D tcg_const_i32(index); =20 - tcg_gen_movi_tl(cpu_R[R_PC], dc->pc); + tcg_gen_movi_tl(cpu_pc, dc->pc); gen_helper_raise_exception(cpu_env, tmp); tcg_temp_free_i32(tmp); dc->base.is_jmp =3D DISAS_NORETURN; @@ -156,10 +157,10 @@ static void gen_goto_tb(DisasContext *dc, int n, uint= 32_t dest) =20 if (translator_use_goto_tb(&dc->base, dest)) { tcg_gen_goto_tb(n); - tcg_gen_movi_tl(cpu_R[R_PC], dest); + tcg_gen_movi_tl(cpu_pc, dest); tcg_gen_exit_tb(tb, n); } else { - tcg_gen_movi_tl(cpu_R[R_PC], dest); + tcg_gen_movi_tl(cpu_pc, dest); tcg_gen_exit_tb(NULL, 0); } } @@ -391,7 +392,7 @@ static void eret(DisasContext *dc, uint32_t code, uint3= 2_t flags) } =20 tcg_gen_mov_tl(cpu_R[CR_STATUS], cpu_R[CR_ESTATUS]); - tcg_gen_mov_tl(cpu_R[R_PC], cpu_R[R_EA]); + tcg_gen_mov_tl(cpu_pc, cpu_R[R_EA]); =20 dc->base.is_jmp =3D DISAS_JUMP; } @@ -399,7 +400,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(cpu_R[R_PC], cpu_R[R_RA]); + tcg_gen_mov_tl(cpu_pc, cpu_R[R_RA]); =20 dc->base.is_jmp =3D DISAS_JUMP; } @@ -407,7 +408,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(cpu_R[R_PC], cpu_R[R_BA]); + tcg_gen_mov_tl(cpu_pc, cpu_R[R_BA]); =20 dc->base.is_jmp =3D DISAS_JUMP; } @@ -417,7 +418,7 @@ static void jmp(DisasContext *dc, uint32_t code, uint32= _t flags) { R_TYPE(instr, code); =20 - tcg_gen_mov_tl(cpu_R[R_PC], load_gpr(dc, instr.a)); + tcg_gen_mov_tl(cpu_pc, load_gpr(dc, instr.a)); =20 dc->base.is_jmp =3D DISAS_JUMP; } @@ -440,7 +441,7 @@ static void callr(DisasContext *dc, uint32_t code, uint= 32_t flags) { R_TYPE(instr, code); =20 - tcg_gen_mov_tl(cpu_R[R_PC], load_gpr(dc, instr.a)); + tcg_gen_mov_tl(cpu_pc, load_gpr(dc, instr.a)); tcg_gen_movi_tl(cpu_R[R_RA], dc->base.pc_next); =20 dc->base.is_jmp =3D DISAS_JUMP; @@ -742,7 +743,7 @@ illegal_op: t_gen_helper_raise_exception(dc, EXCP_ILLEGAL); } =20 -static const char * const regnames[] =3D { +static const char * const regnames[NUM_CORE_REGS] =3D { "zero", "at", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", @@ -759,7 +760,6 @@ static const char * const regnames[] =3D { "reserved6", "reserved7", "reserved8", "reserved9", "reserved10", "reserved11", "reserved12", "reserved13", "reserved14", "reserved15", "reserved16", "reserved17", - "rpc" }; =20 #include "exec/gen-icount.h" @@ -827,7 +827,7 @@ static void nios2_tr_tb_stop(DisasContextBase *dcbase, = CPUState *cs) 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->base.pc_next); + tcg_gen_movi_tl(cpu_pc, dc->base.pc_next); tcg_gen_exit_tb(NULL, 0); break; =20 @@ -877,8 +877,7 @@ void nios2_cpu_dump_state(CPUState *cs, FILE *f, int fl= ags) return; } =20 - qemu_fprintf(f, "IN: PC=3D%x %s\n", - env->regs[R_PC], lookup_symbol(env->regs[R_PC])); + qemu_fprintf(f, "IN: PC=3D%x %s\n", env->pc, lookup_symbol(env->pc)); =20 for (i =3D 0; i < NUM_CORE_REGS; i++) { qemu_fprintf(f, "%9s=3D%8.8x ", regnames[i], env->regs[i]); @@ -904,10 +903,12 @@ void nios2_tcg_init(void) offsetof(CPUNios2State, regs[i]), regnames[i]); } + cpu_pc =3D tcg_global_mem_new(cpu_env, + offsetof(CPUNios2State, pc), "pc"); } =20 void restore_state_to_opc(CPUNios2State *env, TranslationBlock *tb, target_ulong *data) { - env->regs[R_PC] =3D data[0]; + env->pc =3D data[0]; } --=20 2.34.1 From nobody Tue May 21 06:14:30 2024 Delivered-To: importer@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+importer=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 1650555927483736.3080879759711; Thu, 21 Apr 2022 08:45:27 -0700 (PDT) Received: from localhost ([::1]:58794 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhYzm-0001mt-8F for importer@patchew.org; Thu, 21 Apr 2022 11:45:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42852) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZM-0007LJ-CK for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:08 -0400 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]:54003) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZJ-0006Hi-U9 for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:08 -0400 Received: by mail-pj1-x1029.google.com with SMTP id bx5so5229930pjb.3 for ; Thu, 21 Apr 2022 08:18:05 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.18.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:18:04 -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=stZs9CHJn94yh2l+cnWESSw+xIK34yKkeqdg+D+eDiQ=; b=zC+EODet26SXMUe6YWR8YKjkf8O7WDzDsKfccg/42M+4mrQgnVd277H8si3h48i0IT pjaX/AbVqZuPORw1r6WdrdGFpBMoN0dcmTuDYC+sFwsi4AVu4XPMzVp+2ljH3TSPvJLz G97x9bEfUnh0Wgk+86I1MHENy2/B1NkTz/hIECqy6DutOqUkGbA/flnKsZ0INFgO8JZz rSVuHM033wr/jE67NZE6hTRPQOO/UdV+fJvtDOrxT1WnHttHP6Tzum6tNTftFS99uMRF nPIqt0EfYPNrkFkwFVLJo1FmFeqAUw/sApPUfWf3ozN/ZV7ntoqX76/LmSY9jusFi9+Q k8Bg== 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=stZs9CHJn94yh2l+cnWESSw+xIK34yKkeqdg+D+eDiQ=; b=gw5gMIdP7NuAXTPk8yyYsRirBlegljLF5DsCxLirE2wS5u414OP703JcwADo8NWdWz 3gBQyD/ZvM2PCZLn2ehUmFx8wjNX/ds+8TdK9rmjVl4um2uBR3+TjCJWDIBxl6iOeK6N Gzx4gf199tnic2a52XrLlIJnVEXvb3zl74YLHobljYx5dTx6e1fVXpi18+9wf4emo8Xq ejuWEEvSToMYHvYz/KZNNI0g/EIuaB9IQGlzKfh9Zt0YVgYLAQbvEBRMu63DU/CSB7WH sh0jr0A7oU1PBFnQXB6erZUNcgRTdNUmixfwnj8Cq2C/6TFZM0NG/AIVZ8QzwQhwvAW5 hXRA== X-Gm-Message-State: AOAM530VVAbTDzNAOX4B+NfvQ0Ne4cnb3JUruICesaT4iEGfxS5DBg1v QKop14rzfN1pKsso0xSbgnbXf+MGvpF88Q== X-Google-Smtp-Source: ABdhPJzdZm+kTGVtr7PQQg6+RySc07F1uvWpFsT2NQvNkqJWMfGVFw41pp89adVdIcaPaG7eLuPIUQ== X-Received: by 2002:a17:902:bb8d:b0:156:51a1:3f5a with SMTP id m13-20020a170902bb8d00b0015651a13f5amr26001932pls.65.1650554284631; Thu, 21 Apr 2022 08:18:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 17/64] target/nios2: Split out helper for eret instruction Date: Thu, 21 Apr 2022 08:16:48 -0700 Message-Id: <20220421151735.31996-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1029.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 , Amir Gonnen Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1650555928887100001 Content-Type: text/plain; charset="utf-8" From: Amir Gonnen The implementation of eret will become much more complex with the introduction of shadow registers. Reviewed-by: Peter Maydell Signed-off-by: Amir Gonnen Message-Id: <20220303153906.2024748-3-amir.gonnen@neuroblade.ai> [rth: Split out of a larger patch for shadow register sets. Directly exit to the cpu loop from the helper.] Signed-off-by: Richard Henderson --- target/nios2/helper.h | 1 + target/nios2/op_helper.c | 9 +++++++++ target/nios2/translate.c | 10 ++++++---- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/target/nios2/helper.h b/target/nios2/helper.h index a44ecfdf7a..525b6b685b 100644 --- a/target/nios2/helper.h +++ b/target/nios2/helper.h @@ -21,6 +21,7 @@ DEF_HELPER_FLAGS_2(raise_exception, TCG_CALL_NO_WG, noreturn, env, i32) =20 #if !defined(CONFIG_USER_ONLY) +DEF_HELPER_3(eret, noreturn, 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) diff --git a/target/nios2/op_helper.c b/target/nios2/op_helper.c index caa885f7b4..ee5ad8b23f 100644 --- a/target/nios2/op_helper.c +++ b/target/nios2/op_helper.c @@ -30,3 +30,12 @@ void helper_raise_exception(CPUNios2State *env, uint32_t= index) cs->exception_index =3D index; cpu_loop_exit(cs); } + +#ifndef CONFIG_USER_ONLY +void helper_eret(CPUNios2State *env, uint32_t new_status, uint32_t new_pc) +{ + env->regs[CR_STATUS] =3D new_status; + env->pc =3D new_pc; + cpu_loop_exit(env_cpu(env)); +} +#endif /* !CONFIG_USER_ONLY */ diff --git a/target/nios2/translate.c b/target/nios2/translate.c index 226bd9e30b..53699ee088 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -391,10 +391,12 @@ static void eret(DisasContext *dc, uint32_t code, uin= t32_t flags) return; } =20 - tcg_gen_mov_tl(cpu_R[CR_STATUS], cpu_R[CR_ESTATUS]); - tcg_gen_mov_tl(cpu_pc, cpu_R[R_EA]); - - dc->base.is_jmp =3D DISAS_JUMP; +#ifdef CONFIG_USER_ONLY + g_assert_not_reached(); +#else + gen_helper_eret(cpu_env, cpu_R[CR_ESTATUS], cpu_R[R_EA]); + dc->base.is_jmp =3D DISAS_NORETURN; +#endif } =20 /* PC <- ra */ --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650556747; cv=none; d=zohomail.com; s=zohoarc; b=O6Ay+aAJ6oIVwn9sFKnfNxctYKw4baivG008UOzqgNY6NAECWEJoYx5zskXPiUFnizRI1ZNonyh05FsH4x9MTK5MGkoG6FfEn2BnamtU1UT5+DYokHkA878HPc44jAMXCfQOZudPYZHVzb7f7+5vgGajgSrqvmoY2SV34cZnpuQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650556747; 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=fNAOMB88DY+Kw1JJ7inCrhRV3itMDCTZQXxLxXQ6rBA=; b=LlUh5wdnAj8MI+38b6qW2VZpqBKas6Xn4TDLV+mqHr3SRLPZmMI2k78sBbhv8SWy2+axvxIt8LgQS2elJeqEja++L8u1J2ADYnRcnE3kc3SuIylrBkxIjUbrv03sCZd1PockO/JTi9tarD+/UIhVfaFAjEURaLffylKTL2/Js9c= 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 1650556747829724.7652345896784; Thu, 21 Apr 2022 08:59:07 -0700 (PDT) Received: from localhost ([::1]:43568 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZD0-0001A9-Ru for importer@patchew.org; Thu, 21 Apr 2022 11:59:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42866) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZN-0007M7-95 for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:11 -0400 Received: from mail-pg1-x52b.google.com ([2607:f8b0:4864:20::52b]:34337) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZL-0006Hq-F8 for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:08 -0400 Received: by mail-pg1-x52b.google.com with SMTP id t4so4920371pgc.1 for ; Thu, 21 Apr 2022 08:18:06 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.18.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:18:05 -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=fNAOMB88DY+Kw1JJ7inCrhRV3itMDCTZQXxLxXQ6rBA=; b=N2w9LXf4nU7Dku1VQuHKEnfY1roIbQltFUGQplbLRlrXXM42+LmzbGc+Q3faUM0eJw LYHOgSRFMrmRZEgo5fdZMWZwxyPEbqG/0CjzPkepDacDvbvRAahjO0trAEVASfzKNkTF ycSj5iZl/HxxxboS50DzHcIgTSbYFNCqdqFZLq1J/wlQoxWQ1k1zUsICQMIW+HlootNx xmhosXHQQzmSI4zCiRw/Y/EAvzlLMICBlVDkk9BX5QzYJJE4Ibl7jSZmJiHk5VPLcqYv sn3mkyO284y0HHmZV6QGuqYuc7jL0Psli3HOgMMpdVcut8nnYwwYu+U1NlmMQtfbpnHI yNDg== 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=fNAOMB88DY+Kw1JJ7inCrhRV3itMDCTZQXxLxXQ6rBA=; b=IuaMNGj5V34e/HjMaczQQHfNYw9VcQRZq3amEAp4NjAu0AhyjLaj4oFMp0f8z2CGLH h4TMElrTnoYeC66MwQ0a1jUE8qS/PWz9vpgpicH+tHy4h7aoXZcPQR3bozA4GkfTsLDU elRoWujsH3wwk31ZYyRIZ6U9U22FSmdplo8NjnIr2o6f3w90OzhdR+ZAvqCeTsHW93yt 86bYbYRqJL1S1pq7QxxiY34YAxmASudExbJWBhvqsq7KbkQ++xiM2h/gZYbmaLoDT7lD MhepeGpfElMZArLFui8xLJsCcuYWpqY+4L24IsMmb2UhfYwTUEhd6Etvyh6Af+xeeChJ JK0w== X-Gm-Message-State: AOAM531a4+1IZjvMWraViY64Bz3HUVrIxeSPlfrnl9nqABPi0cu6wP+O 3ge10HiLDg5gMrkC48c7jqWHBCMiqUCmVA== X-Google-Smtp-Source: ABdhPJyWtzoTLBaYsksCXF/8Kq1FCB4n9GUpNpBVo2fRxXW/cKfW1XnHy2W6P+vq/dRLFFQ6ewUbKw== X-Received: by 2002:a05:6a00:c8f:b0:50a:77a3:e7b with SMTP id a15-20020a056a000c8f00b0050a77a30e7bmr130242pfv.41.1650554286065; Thu, 21 Apr 2022 08:18:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 18/64] target/nios2: Fix BRET instruction Date: Thu, 21 Apr 2022 08:16:49 -0700 Message-Id: <20220421151735.31996-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52b; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52b.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650556748484100001 Content-Type: text/plain; charset="utf-8" We had failed to copy BSTATUS back to STATUS, and diagnose supervisor-only. The spec is light on the specifics of the implementation of bret, but it is an easy assumption that the restore into STATUS should work the same as eret. Therefore, reuse the existing helper_eret. Reviewed-by: Peter Maydell Reported-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/translate.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/target/nios2/translate.c b/target/nios2/translate.c index 53699ee088..3694f2503b 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -407,12 +407,22 @@ static void ret(DisasContext *dc, uint32_t code, uint= 32_t flags) dc->base.is_jmp =3D DISAS_JUMP; } =20 -/* PC <- ba */ +/* + * status <- bstatus + * PC <- ba + */ static void bret(DisasContext *dc, uint32_t code, uint32_t flags) { - tcg_gen_mov_tl(cpu_pc, cpu_R[R_BA]); + if (!gen_check_supervisor(dc)) { + return; + } =20 - dc->base.is_jmp =3D DISAS_JUMP; +#ifdef CONFIG_USER_ONLY + g_assert_not_reached(); +#else + gen_helper_eret(cpu_env, cpu_R[CR_BSTATUS], cpu_R[R_BA]); + dc->base.is_jmp =3D DISAS_NORETURN; +#endif } =20 /* PC <- rA */ --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650557144; cv=none; d=zohomail.com; s=zohoarc; b=cunpz+bUXMiaGKwXU3eqg6E3jMNvNSJzIUBoPOdmhJ03EiW7au40qgmaWpEXmNdsqAXwvUoiiIkVUW54RDP62Y3zBeURg+AeW13zEPYcN7VXGh/LwRX0WdJEJSHRAmq5lp9/5BIVzg9ezXwIDlWR94edK08j+2+cQHkVBdG+o7w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650557144; 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=TWYIA+ZPja/ASXfObfSVoW3kDH0rTYrrqx2UWkBH5EA=; b=UaoJghVYb6raFOIqW/SCVT9y7rGHo0qckv2yZ5xrFmVIQYKga16ceNSf7KtwGYgXQiZo6A3gc1tlC4t9Htzvjb6F9r+XBuQ8OhKPeM0yOF6N2LMtWXE8keweFKAdhu8VbHuVHE1KWnXq8AyoA22JU6tWUVy2jjVrI26vuNIYPxY= 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 1650557144450401.3944631625527; Thu, 21 Apr 2022 09:05:44 -0700 (PDT) Received: from localhost ([::1]:52034 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZJM-0007ld-Tg for importer@patchew.org; Thu, 21 Apr 2022 12:05:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42884) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZQ-0007MG-6C for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:12 -0400 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]:54006) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZM-0006I8-Nz for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:10 -0400 Received: by mail-pj1-x102c.google.com with SMTP id bx5so5230025pjb.3 for ; Thu, 21 Apr 2022 08:18:08 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.18.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:18:07 -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=TWYIA+ZPja/ASXfObfSVoW3kDH0rTYrrqx2UWkBH5EA=; b=QutF7KyZLwox158/IHVvTdcjQHvHOv78xJzevawmgCYd/EuKFL8vb27L5pndsO6kAX hP3g9XE++b1VQTcYDBzJj0TP+PHlstVqdJipOnV3/PDUWmd6QZf1B1WaDjVmkBJ4nYtT 6UWCm+/zECQFZMAaWBuCptpmyT5mq1Ikak/IeKQC6IFP5n/P7CQB1byOsHaAEqLE8nJW RM+XhGtxdhe+E4uJaTNH+ONAWtoB4JV+HgcLtLDVkB7yWUOz0dLMmqmWx76n2csN/uJo g/5XekUOyZU7vIxofAFXpozycZvP5E8E3FvCSBVekW1n2smTVEoGcQwwrbi8tFUBSeeb mDsw== 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=TWYIA+ZPja/ASXfObfSVoW3kDH0rTYrrqx2UWkBH5EA=; b=qoDqpyIW9WZ7xZTfiwLbSgVA+NHqdMY6T9FbRrFKeir7bdoGSTPIAPWEpLb/fNcun3 2QfQU8EXeoZkip0D73TNBoCHZ9THduKDAkDabHTbToV/gARgKsGMakFLbefJzwKcIU0q 4xmyhkqgHyZpH9781lo5cyBXnks+P8aHt1DLjdNMbGzzFvoLMRWVAAIg6Zxw5RsYOHUe FoBluVbZcxzfmqf7hN3dygvstRzq9TmsX5WhkrCy9qrm7PipITNuLJR3No5IPkN3wvXD GvGkp+Qx2nIkqFUp+L0Ts6dBHNfNkNyVB6zFQP8wea2xyOHbOGu+OdbOl0kghCpYXBYl SUsQ== X-Gm-Message-State: AOAM533Sti/EO6eIh5tIi1o9PpXmJ2qzOv/OG4RIjJls+u+JrqV7rznO wTFxBGgNPtSyNx5nwY6uPp9rK9JTHRZTzw== X-Google-Smtp-Source: ABdhPJzA0Od41ykrSkfpSOlnA9c3wM6PcJg+TyR7rj4fEyIykv/Spa2BuALvnD6k7pSxUwTmnrEqEw== X-Received: by 2002:a17:902:d2c5:b0:158:f839:4d8a with SMTP id n5-20020a170902d2c500b00158f8394d8amr40761plc.108.1650554287444; Thu, 21 Apr 2022 08:18:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 19/64] target/nios2: Do not create TCGv for control registers Date: Thu, 21 Apr 2022 08:16:50 -0700 Message-Id: <20220421151735.31996-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102c; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102c.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650557145138100001 Content-Type: text/plain; charset="utf-8" We don't need to reference them often, and when we do it is just as easy to load/store from cpu_env directly. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/translate.c | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/target/nios2/translate.c b/target/nios2/translate.c index 3694f2503b..6c739bfa5e 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -103,7 +103,7 @@ typedef struct DisasContext { int mem_idx; } DisasContext; =20 -static TCGv cpu_R[NUM_CORE_REGS]; +static TCGv cpu_R[NUM_GP_REGS]; static TCGv cpu_pc; =20 typedef struct Nios2Instruction { @@ -394,7 +394,11 @@ static void eret(DisasContext *dc, uint32_t code, uint= 32_t flags) #ifdef CONFIG_USER_ONLY g_assert_not_reached(); #else - gen_helper_eret(cpu_env, cpu_R[CR_ESTATUS], cpu_R[R_EA]); + TCGv tmp =3D tcg_temp_new(); + tcg_gen_ld_tl(tmp, cpu_env, offsetof(CPUNios2State, regs[CR_ESTATUS])); + gen_helper_eret(cpu_env, tmp, cpu_R[R_EA]); + tcg_temp_free(tmp); + dc->base.is_jmp =3D DISAS_NORETURN; #endif } @@ -420,7 +424,11 @@ static void bret(DisasContext *dc, uint32_t code, uint= 32_t flags) #ifdef CONFIG_USER_ONLY g_assert_not_reached(); #else - gen_helper_eret(cpu_env, cpu_R[CR_BSTATUS], cpu_R[R_BA]); + TCGv tmp =3D tcg_temp_new(); + tcg_gen_ld_tl(tmp, cpu_env, offsetof(CPUNios2State, regs[CR_BSTATUS])); + gen_helper_eret(cpu_env, tmp, cpu_R[R_BA]); + tcg_temp_free(tmp); + dc->base.is_jmp =3D DISAS_NORETURN; #endif } @@ -463,6 +471,7 @@ static void callr(DisasContext *dc, uint32_t code, uint= 32_t flags) static void rdctl(DisasContext *dc, uint32_t code, uint32_t flags) { R_TYPE(instr, code); + TCGv t1, t2; =20 if (!gen_check_supervisor(dc)) { return; @@ -482,10 +491,19 @@ static void rdctl(DisasContext *dc, uint32_t code, ui= nt32_t flags) * 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]); + t1 =3D tcg_temp_new(); + t2 =3D tcg_temp_new(); + tcg_gen_ld_tl(t1, cpu_env, + offsetof(CPUNios2State, regs[CR_IPENDING])); + tcg_gen_ld_tl(t2, cpu_env, + offsetof(CPUNios2State, regs[CR_IENABLE])); + tcg_gen_and_tl(cpu_R[instr.c], t1, t2); + tcg_temp_free(t1); + tcg_temp_free(t2); break; default: - tcg_gen_mov_tl(cpu_R[instr.c], cpu_R[instr.imm5 + CR_BASE]); + tcg_gen_ld_tl(cpu_R[instr.c], cpu_env, + offsetof(CPUNios2State, regs[instr.imm5 + CR_BASE])); break; } } @@ -522,7 +540,8 @@ static void wrctl(DisasContext *dc, uint32_t code, uint= 32_t flags) dc->base.is_jmp =3D DISAS_UPDATE; /* fall through */ default: - tcg_gen_mov_tl(cpu_R[instr.imm5 + CR_BASE], v); + tcg_gen_st_tl(v, cpu_env, + offsetof(CPUNios2State, regs[instr.imm5 + CR_BASE])); break; } #endif @@ -910,7 +929,7 @@ void nios2_tcg_init(void) { int i; =20 - for (i =3D 0; i < NUM_CORE_REGS; i++) { + for (i =3D 0; i < NUM_GP_REGS; i++) { cpu_R[i] =3D tcg_global_mem_new(cpu_env, offsetof(CPUNios2State, regs[i]), regnames[i]); --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650555399; cv=none; d=zohomail.com; s=zohoarc; b=ljHW1NQRuflTSJST3DuDd6ILkPvr+3aXN6aqsDaaFmfDC+f47sM/Haz/aKWhMSb5SQotWnzFNSqrfRHIVSg4yDW4feVgiN5r5L55qlwNWRhReIMIeh8/T5L/TEc4rRfoVqyx3h1iBJbe1Ng2LsztfW83OEYxGXAXAU5YrVAqW8M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650555399; 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=HXZTY79ogdU3cuAmQiOEqFI8HiKCYgS/bxD1qQ4VBwM=; b=GiMyuvX/CTZSixvViyZyN815mmpaydORhsgOTsOYC+0mQALSN+mLYB5BEouOB9KjFWKCJXt5xUmD0N9Lejm1mtjYWtburk36mhUxZg//8fegOA9J5f7tiUHFRRUI3yPUy01dKm4kOqWp8lDnDN77Le4bdh1PgWsN7plzfUVe9ew= 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 1650555398978310.9480547585207; Thu, 21 Apr 2022 08:36:38 -0700 (PDT) Received: from localhost ([::1]:33752 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhYrF-0008Gw-Vd for importer@patchew.org; Thu, 21 Apr 2022 11:36:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42926) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZT-0007S5-Qa for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:15 -0400 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]:37813) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZO-0006Ib-Uo for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:15 -0400 Received: by mail-pj1-x1031.google.com with SMTP id mm4-20020a17090b358400b001cb93d8b137so8023279pjb.2 for ; Thu, 21 Apr 2022 08:18:09 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.18.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:18:08 -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=HXZTY79ogdU3cuAmQiOEqFI8HiKCYgS/bxD1qQ4VBwM=; b=JjMjdW/UXeVYH7d8YJ3VSVXohTIXUzi6KLoJIQHcpGEwfvZYkAT60P1gyN+kPeBzaI aBTtw4g5OmEx6kQ+U03dEjNdbepTb+94iVVjNiz4FzRE1GiUCWEZJVrQj3fzBhFD3RMo zYbbonELEYS6Wc2L0S92c15cHqZ+LBDV2mek8L6PmEu7JRAW9sG5s/LRLodbpEUgLb0X okyqK7bpj12Rpm64gmz/CtAiv05TbOFKK8dzT81/JQJNYcVIZGZKfH2iUnNuAEtPAURF 4P6uxaF54/BVLCuWqoeOqgRZPOqA4cdC5qmZrigUxQ9scs0wjjaDMzXx+FDPrDiVHKJc so3A== 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=HXZTY79ogdU3cuAmQiOEqFI8HiKCYgS/bxD1qQ4VBwM=; b=m9ZCFbRS2mTTDeTAwKMJH1FbgAUjSgD45BqBe5MWRRE38dsO2jYzqjEIsHKymcEV2C XAVWNMVneoxoWNtRUhfrpR85sSLxk8is2IKTnrc04h89x2+OaFv8wqCgkasGKtaJoErG s0dobAJrNS768f7UJr1lmLMEM6l2AGy/MB1SwriKXRPyJMo96dMmQMdmlTr/VFU902du nj4RqZLiI74GzsHdI4yNyeS2BBcgWlCxCX3NtXzQPP+oDd8kkhzC7wA6qe/0aFspcmiy /ClceY1ejhKP+DuagPj1NlifKythaBqfl+D2jBVDGCNifgTr+fkDhyjEYw2fbSZr1u/m TV6g== X-Gm-Message-State: AOAM533mshn0uUqQWAtqWp8RcSJ9ynvyQdyjvt3gIkSXki7RzVJgh4Yf 6f2LOLg3VD8lSKSyoBN4l9/w0+t7L9z5rw== X-Google-Smtp-Source: ABdhPJyt4D88Sh2e6SFIFJUcoQYcO5sgE7jIjObbPBMqd4AVMS3llwqeYljOibO8bZxH22fBfxr+ug== X-Received: by 2002:a17:902:b906:b0:14f:76a0:ad48 with SMTP id bf6-20020a170902b90600b0014f76a0ad48mr26683471plb.79.1650554288825; Thu, 21 Apr 2022 08:18:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 20/64] linux-user/nios2: Only initialize SP and PC in target_cpu_copy_regs Date: Thu, 21 Apr 2022 08:16:51 -0700 Message-Id: <20220421151735.31996-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1031.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, T_SPF_HELO_TEMPERROR=0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650555400047100001 Content-Type: text/plain; charset="utf-8" Drop the set of estatus in init_thread; it was clearly intended to be setting the value of CR_STATUS for the application, but we never actually performed that copy. However, the proper value is set in nios2_cpu_reset so we don't need to do anything here. We only initialize SP and EA in init_thread, there's no value in copying other uninitialized data into ENV. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/elfload.c | 1 - linux-user/nios2/cpu_loop.c | 22 ---------------------- 2 files changed, 23 deletions(-) diff --git a/linux-user/elfload.c b/linux-user/elfload.c index 397dec5eb8..61063fd974 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -1096,7 +1096,6 @@ static void init_thread(struct target_pt_regs *regs, = struct image_info *infop) { regs->ea =3D infop->entry; regs->sp =3D infop->start_stack; - regs->estatus =3D 0x3; } =20 #define LO_COMMPAGE TARGET_PAGE_SIZE diff --git a/linux-user/nios2/cpu_loop.c b/linux-user/nios2/cpu_loop.c index a941f9032e..c5e68ac048 100644 --- a/linux-user/nios2/cpu_loop.c +++ b/linux-user/nios2/cpu_loop.c @@ -133,28 +133,6 @@ void cpu_loop(CPUNios2State *env) =20 void target_cpu_copy_regs(CPUArchState *env, struct target_pt_regs *regs) { - env->regs[0] =3D 0; - env->regs[1] =3D regs->r1; - env->regs[2] =3D regs->r2; - env->regs[3] =3D regs->r3; - env->regs[4] =3D regs->r4; - env->regs[5] =3D regs->r5; - env->regs[6] =3D regs->r6; - env->regs[7] =3D regs->r7; - env->regs[8] =3D regs->r8; - env->regs[9] =3D regs->r9; - env->regs[10] =3D regs->r10; - env->regs[11] =3D regs->r11; - env->regs[12] =3D regs->r12; - env->regs[13] =3D regs->r13; - env->regs[14] =3D regs->r14; - env->regs[15] =3D regs->r15; - /* TODO: unsigned long orig_r2; */ - env->regs[R_RA] =3D regs->ra; - env->regs[R_FP] =3D regs->fp; env->regs[R_SP] =3D regs->sp; - env->regs[R_GP] =3D regs->gp; - env->regs[CR_ESTATUS] =3D regs->estatus; env->pc =3D regs->ea; - /* TODO: unsigned long orig_r7; */ } --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650557410; cv=none; d=zohomail.com; s=zohoarc; b=fJ8J8/lMVygVJPiV79J8eOP66p2jf1a9yKIg9UEynHgd+8ziO69mQgU4E/pW9NCIX/gPigUqOWZvwAMD5po4FM7Yeq48hgzPaCx0nZA+KauB0nJowbS0WzxQrTBRt3k507GdCs9ViqSctv3Xt1TshzprNJsnGjat5bmqt1eJYPk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650557410; 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=SgYdfKBOpD63fxeycIxvZRPC0aBEIFbrxFD/qGb/1iw=; b=NVFkeeiF6dMr0qBGDVxTOIyNq3vldo/sIwFEws2nrAVneEjWuXMbfe6X0J3NsaC9Aeeo+gTzbUYmhqXJS4btnLU/lA2/kxm1uWdmyhR2KayDOEQDtapnwhR9lBIQjr4v5LRgGv5j6Sn7ZAAyxKUbod+S2QbHdam4A7b36QLwD7w= 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 165055741007618.635550612615134; Thu, 21 Apr 2022 09:10:10 -0700 (PDT) Received: from localhost ([::1]:60542 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZNh-0005I0-2s for importer@patchew.org; Thu, 21 Apr 2022 12:10:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42960) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZV-0007UO-7V for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:17 -0400 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]:46940) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZQ-0006Ik-IT for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:16 -0400 Received: by mail-pg1-x530.google.com with SMTP id q12so4878555pgj.13 for ; Thu, 21 Apr 2022 08:18:11 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.18.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:18:09 -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=SgYdfKBOpD63fxeycIxvZRPC0aBEIFbrxFD/qGb/1iw=; b=FfCOva5lc9oge9ozkWLb84iGWfz8GYjcId9UX3dAkaKTI2HbivnjgQodWafaRKXTlH d+KJH/LDv4NJhmRLQAbKScpE69IfA16byKIFx8zBzcWiiSjeLVYxBT2bVUMdH5wjHMXE eSazFGMCC583v8cGABT5pnktlf1GR7fzT/lWeQVvOX3PYMfXT19htsoheIBfRB+Q6vZg XOQCxIWVex+U2SrCh+9f4a+KjIGH408zT+baBn1V+e9ykitfY8EfQgmbWUdFxLf4isxV NQZ6+AtKU87wZ1xFKIw0DTcbP3TalAqPL5FJZLfaA5h928tL+o4RIKve1xG7eXB/IzVq kN6Q== 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=SgYdfKBOpD63fxeycIxvZRPC0aBEIFbrxFD/qGb/1iw=; b=NGufuYAawYX0jbrT7obIU5+HaWa7fMxXExfDSjtbVNDEgqGyiVCyoZ+/UUZk75LeGP pSGIs/KJzS9utOg4F/o3VooHRsrAC9YP+eUhfplLKis+xdmG7dXuw7BiJCpmhdccizAr rdyjP89TFLiHeq+BOvrZywqEGMJsXIsws92alpru/d6XyHQX0BDRPTLaZogL7JkMOosF b7KaQBup7CKINRPuE4NgLm6VRQuEpl8MRcnVcgn8+4XSBpRUymMoUwksgUvfBQ3xG9p5 xnfVKenu71xl+OBRP+rB3LhPTQw7HNuv6nz30N8LBMF42nBGOl/iavimd0Wqy2IDSmOz HOWQ== X-Gm-Message-State: AOAM533dKLz2trvFeutQfEEXqyd3EepmeU7OfUSByqZ/7MQl7gtNJBYY YHOblIPLq9Eh0Mxn9RoqQZTt2/YgJP6FOA== X-Google-Smtp-Source: ABdhPJyZOAPItrMKicRw1oPCAtA9n2QYBDNOCUgs0cPxSV6FHvLVPJvgR3kMVmJVse1c0T9uYW+ldQ== X-Received: by 2002:a05:6a00:1a11:b0:50a:6c17:11d2 with SMTP id g17-20020a056a001a1100b0050a6c1711d2mr121834pfv.69.1650554290251; Thu, 21 Apr 2022 08:18:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 21/64] target/nios2: Remove cpu_interrupts_enabled Date: Thu, 21 Apr 2022 08:16:52 -0700 Message-Id: <20220421151735.31996-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::530; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x530.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650557410636100001 Content-Type: text/plain; charset="utf-8" This function is unused. The real computation of this value is located in nios2_cpu_exec_interrupt. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/cpu.h | 5 ----- 1 file changed, 5 deletions(-) diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index dbd9d1b587..413e195187 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -222,11 +222,6 @@ bool nios2_cpu_tlb_fill(CPUState *cs, vaddr address, i= nt size, bool probe, uintptr_t retaddr); #endif =20 -static inline int cpu_interrupts_enabled(CPUNios2State *env) -{ - return env->regs[CR_STATUS] & CR_STATUS_PIE; -} - typedef CPUNios2State CPUArchState; typedef Nios2CPU ArchCPU; =20 --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650557827; cv=none; d=zohomail.com; s=zohoarc; b=BtebZtW+V4e0hPTQi87oa/LwTSjfJXY1GTYe2F6T5PADQjTuDMEXUpzSfG0ea4E5I9PJDXtvjGPDZ2P0bxiZehUmZWPFW17R//+9D5rlTQI68R4iLjQF/erE9PLa7ckTn3isaOCRsDJg5GG/UlA8PIGEi9vG6fl6EmqdyD61RRM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650557827; 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=EjEHYTVdW2KI25IaHEiyZ2gKGu3IvFc+ShydQ9IySkk=; b=ZAoOC/8obo7DMaD0AnoWgCexTbcauCPqntEwxKQuHllns/d96DJZVIxmvwUlPp1RlYPbX0k7nIaPSKH7JcjVHtZw+ZNu6+fprabXEdON5u+u8EImm9yAtHKxo60vsq9mQw6NOu9oevZvliLhnlElTdxv7gQ/kGUUHOcxXobE0fk= 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 1650557827328920.5552739363939; Thu, 21 Apr 2022 09:17:07 -0700 (PDT) Received: from localhost ([::1]:49574 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZUQ-0000BY-8t for importer@patchew.org; Thu, 21 Apr 2022 12:17:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42992) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZW-0007Xu-Ha for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:18 -0400 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]:34811) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZR-0006J0-Qc for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:18 -0400 Received: by mail-pj1-x1035.google.com with SMTP id d23-20020a17090a115700b001d2bde6c234so5665691pje.1 for ; Thu, 21 Apr 2022 08:18:13 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.18.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:18:11 -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=EjEHYTVdW2KI25IaHEiyZ2gKGu3IvFc+ShydQ9IySkk=; b=nuKj/Ne7ef8R56tPhIlUTIASk9JrRwt569n7HZMlYcYGNUGzPFtbCDvNOVY3gC1z3q zNKqjAJk2olH9pW0w4T9CB20S8aUDalZL4dOl7QJgs4WNLkr+fdUX2Mhl0LF3abcBR+W UeD2nwxhAm49P7WRuSugCUt1eSZB8gzP+1VstAEfpBVhMwNAezr2djbxk4iF19eZaHT0 H+oeCXVqZEZETBueAGraQD0BAJRdpET9RnCkKiWeFzGT6kjlmmp9ieD2zZjoJqtmKehe fxnE2VAkHUWj91+Uy+tIJ+Pg9YZHVjdqw5eWC+0HZEZLpyFuSSssNwapR52lZTBI7Boe 5QSg== 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=EjEHYTVdW2KI25IaHEiyZ2gKGu3IvFc+ShydQ9IySkk=; b=S4YssipiYajYiuZ+KLAjBYKl883+wlF4tgW9izgO79D9D6ya5YFtGiKHTIn9WMhkzj DS8RPuP9xd06Kon98KOh1Z8rto/Igx5oFzfPstGWulB1SwBGVbiTmH21MtjfzC/bZ43m tb1gEmbuWnhHTFZvNKD0QZ2dEuF/Geb+fqaRZLz5/MYHwE78xNiKTO/Q/Zs7UV6nZObF vOG0mOacoiPclwkVsoQ/2cQoRJ89E+WZzHWeuNPjDtYWpO0IwUA3YvQ+Np8MSkbeTt0n H9AG0kqljba1GVmscilcjw1BfLA+VlS8QJISqRtNfIHbrLskp7p3h9Mfw9vT5y+OYket ZdOw== X-Gm-Message-State: AOAM532p5R9cYmxHWznQgmo74CT5fKb8fWFQ+q+mURVdpBbD92m9e9hh +H/GWfKTPezhYk3Ik/tXisKiIie6pyp21g== X-Google-Smtp-Source: ABdhPJw4Yk6EfB/BSxUgfxC1nWzbfIlIlLI3rbIrjUcyLOmOWFFBTz5Z//sUDfh8pnXc2mV6zbH6WA== X-Received: by 2002:a17:90b:4b84:b0:1d2:ae96:6c27 with SMTP id lr4-20020a17090b4b8400b001d2ae966c27mr11119907pjb.70.1650554292066; Thu, 21 Apr 2022 08:18:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 22/64] target/nios2: Split control registers away from general registers Date: Thu, 21 Apr 2022 08:16:53 -0700 Message-Id: <20220421151735.31996-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1035.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650557829419100001 Content-Type: text/plain; charset="utf-8" Place the control registers into their own array, env->ctrl[]. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/cpu.h | 43 ++++++++-------- target/nios2/cpu.c | 19 +++---- target/nios2/helper.c | 106 +++++++++++++++++++-------------------- target/nios2/mmu.c | 26 +++++----- target/nios2/op_helper.c | 2 +- target/nios2/translate.c | 35 +++++++------ 6 files changed, 118 insertions(+), 113 deletions(-) diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index 413e195187..872bc2a46f 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -59,9 +59,6 @@ struct Nios2CPUClass { #define NUM_GP_REGS 32 #define NUM_CR_REGS 32 =20 -/* GP regs + CR regs */ -#define NUM_CORE_REGS (NUM_GP_REGS + NUM_CR_REGS) - /* General purpose register aliases */ #define R_ZERO 0 #define R_AT 1 @@ -81,8 +78,7 @@ struct Nios2CPUClass { #define R_RA 31 =20 /* Control register aliases */ -#define CR_BASE NUM_GP_REGS -#define CR_STATUS (CR_BASE + 0) +#define CR_STATUS 0 #define CR_STATUS_PIE (1 << 0) #define CR_STATUS_U (1 << 1) #define CR_STATUS_EH (1 << 2) @@ -92,19 +88,19 @@ struct Nios2CPUClass { #define CR_STATUS_PRS (63 << 16) #define CR_STATUS_NMI (1 << 22) #define CR_STATUS_RSIE (1 << 23) -#define CR_ESTATUS (CR_BASE + 1) -#define CR_BSTATUS (CR_BASE + 2) -#define CR_IENABLE (CR_BASE + 3) -#define CR_IPENDING (CR_BASE + 4) -#define CR_CPUID (CR_BASE + 5) -#define CR_CTL6 (CR_BASE + 6) -#define CR_EXCEPTION (CR_BASE + 7) -#define CR_PTEADDR (CR_BASE + 8) +#define CR_ESTATUS 1 +#define CR_BSTATUS 2 +#define CR_IENABLE 3 +#define CR_IPENDING 4 +#define CR_CPUID 5 +#define CR_CTL6 6 +#define CR_EXCEPTION 7 +#define CR_PTEADDR 8 #define CR_PTEADDR_PTBASE_SHIFT 22 #define CR_PTEADDR_PTBASE_MASK (0x3FF << CR_PTEADDR_PTBASE_SHIFT) #define CR_PTEADDR_VPN_SHIFT 2 #define CR_PTEADDR_VPN_MASK (0xFFFFF << CR_PTEADDR_VPN_SHIFT) -#define CR_TLBACC (CR_BASE + 9) +#define CR_TLBACC 9 #define CR_TLBACC_IGN_SHIFT 25 #define CR_TLBACC_IGN_MASK (0x7F << CR_TLBACC_IGN_SHIFT) #define CR_TLBACC_C (1 << 24) @@ -113,7 +109,7 @@ struct Nios2CPUClass { #define CR_TLBACC_X (1 << 21) #define CR_TLBACC_G (1 << 20) #define CR_TLBACC_PFN_MASK 0x000FFFFF -#define CR_TLBMISC (CR_BASE + 10) +#define CR_TLBMISC 10 #define CR_TLBMISC_WAY_SHIFT 20 #define CR_TLBMISC_WAY_MASK (0xF << CR_TLBMISC_WAY_SHIFT) #define CR_TLBMISC_RD (1 << 19) @@ -124,11 +120,11 @@ struct Nios2CPUClass { #define CR_TLBMISC_BAD (1 << 2) #define CR_TLBMISC_PERM (1 << 1) #define CR_TLBMISC_D (1 << 0) -#define CR_ENCINJ (CR_BASE + 11) -#define CR_BADADDR (CR_BASE + 12) -#define CR_CONFIG (CR_BASE + 13) -#define CR_MPUBASE (CR_BASE + 14) -#define CR_MPUACC (CR_BASE + 15) +#define CR_ENCINJ 11 +#define CR_BADADDR 12 +#define CR_CONFIG 13 +#define CR_MPUBASE 14 +#define CR_MPUACC 15 =20 /* Exceptions */ #define EXCP_BREAK 0x1000 @@ -154,7 +150,8 @@ struct Nios2CPUClass { #define CPU_INTERRUPT_NMI CPU_INTERRUPT_TGT_EXT_3 =20 struct CPUArchState { - uint32_t regs[NUM_CORE_REGS]; + uint32_t regs[NUM_GP_REGS]; + uint32_t ctrl[NUM_CR_REGS]; uint32_t pc; =20 #if !defined(CONFIG_USER_ONLY) @@ -212,7 +209,7 @@ void do_nios2_semihosting(CPUNios2State *env); =20 static inline int cpu_mmu_index(CPUNios2State *env, bool ifetch) { - return (env->regs[CR_STATUS] & CR_STATUS_U) ? MMU_USER_IDX : + return (env->ctrl[CR_STATUS] & CR_STATUS_U) ? MMU_USER_IDX : MMU_SUPERVISOR_IDX; } =20 @@ -232,7 +229,7 @@ static inline void cpu_get_tb_cpu_state(CPUNios2State *= env, target_ulong *pc, { *pc =3D env->pc; *cs_base =3D 0; - *flags =3D (env->regs[CR_STATUS] & (CR_STATUS_EH | CR_STATUS_U)); + *flags =3D env->ctrl[CR_STATUS] & (CR_STATUS_EH | CR_STATUS_U); } =20 #endif /* NIOS2_CPU_H */ diff --git a/target/nios2/cpu.c b/target/nios2/cpu.c index dc1551241e..fce16a2e77 100644 --- a/target/nios2/cpu.c +++ b/target/nios2/cpu.c @@ -48,14 +48,15 @@ static void nios2_cpu_reset(DeviceState *dev) =20 ncc->parent_reset(dev); =20 - memset(env->regs, 0, sizeof(uint32_t) * NUM_CORE_REGS); + memset(env->regs, 0, sizeof(env->regs)); + memset(env->ctrl, 0, sizeof(env->ctrl)); env->pc =3D cpu->reset_addr; =20 #if defined(CONFIG_USER_ONLY) /* Start in user mode with interrupts enabled. */ - env->regs[CR_STATUS] =3D CR_STATUS_U | CR_STATUS_PIE; + env->ctrl[CR_STATUS] =3D CR_STATUS_U | CR_STATUS_PIE; #else - env->regs[CR_STATUS] =3D 0; + env->ctrl[CR_STATUS] =3D 0; #endif } =20 @@ -66,9 +67,9 @@ static void nios2_cpu_set_irq(void *opaque, int irq, int = level) CPUNios2State *env =3D &cpu->env; CPUState *cs =3D CPU(cpu); =20 - env->regs[CR_IPENDING] =3D deposit32(env->regs[CR_IPENDING], irq, 1, != !level); + env->ctrl[CR_IPENDING] =3D deposit32(env->ctrl[CR_IPENDING], irq, 1, != !level); =20 - if (env->regs[CR_IPENDING]) { + if (env->ctrl[CR_IPENDING]) { cpu_interrupt(cs, CPU_INTERRUPT_HARD); } else { cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD); @@ -126,8 +127,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_IPENDING] & env->regs[CR_IENABLE])) { + (env->ctrl[CR_STATUS] & CR_STATUS_PIE) && + (env->ctrl[CR_IPENDING] & env->ctrl[CR_IENABLE])) { cs->exception_index =3D EXCP_IRQ; nios2_cpu_do_interrupt(cs); return true; @@ -158,7 +159,7 @@ static int nios2_cpu_gdb_read_register(CPUState *cs, GB= yteArray *mem_buf, int n) } else if (n =3D=3D 32) { /* PC */ return gdb_get_reg32(mem_buf, env->pc); } else if (n < 49) { /* Status regs */ - return gdb_get_reg32(mem_buf, env->regs[n - 1]); + return gdb_get_reg32(mem_buf, env->ctrl[n - 33]); } =20 /* Invalid regs */ @@ -180,7 +181,7 @@ static int nios2_cpu_gdb_write_register(CPUState *cs, u= int8_t *mem_buf, int n) } else if (n =3D=3D 32) { /* PC */ env->pc =3D ldl_p(mem_buf); } else if (n < 49) { /* Status regs */ - env->regs[n - 1] =3D ldl_p(mem_buf); + env->ctrl[n - 33] =3D ldl_p(mem_buf); } =20 return 4; diff --git a/target/nios2/helper.c b/target/nios2/helper.c index 34b3e18e37..2e5f5b8b54 100644 --- a/target/nios2/helper.c +++ b/target/nios2/helper.c @@ -36,38 +36,38 @@ void nios2_cpu_do_interrupt(CPUState *cs) =20 switch (cs->exception_index) { case EXCP_IRQ: - assert(env->regs[CR_STATUS] & CR_STATUS_PIE); + assert(env->ctrl[CR_STATUS] & CR_STATUS_PIE); =20 qemu_log_mask(CPU_LOG_INT, "interrupt at pc=3D%x\n", env->pc); =20 - env->regs[CR_ESTATUS] =3D env->regs[CR_STATUS]; - env->regs[CR_STATUS] |=3D CR_STATUS_IH; - env->regs[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); + env->ctrl[CR_ESTATUS] =3D env->ctrl[CR_STATUS]; + env->ctrl[CR_STATUS] |=3D CR_STATUS_IH; + env->ctrl[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); =20 - env->regs[CR_EXCEPTION] &=3D ~(0x1F << 2); - env->regs[CR_EXCEPTION] |=3D (cs->exception_index & 0x1F) << 2; + env->ctrl[CR_EXCEPTION] &=3D ~(0x1F << 2); + env->ctrl[CR_EXCEPTION] |=3D (cs->exception_index & 0x1F) << 2; =20 env->regs[R_EA] =3D env->pc + 4; env->pc =3D cpu->exception_addr; break; =20 case EXCP_TLBD: - if ((env->regs[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { + if ((env->ctrl[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { qemu_log_mask(CPU_LOG_INT, "TLB MISS (fast) at pc=3D%x\n", env= ->pc); =20 /* Fast TLB miss */ /* Variation from the spec. Table 3-35 of the cpu reference sh= ows * estatus not being changed for TLB miss but this appears to * be incorrect. */ - env->regs[CR_ESTATUS] =3D env->regs[CR_STATUS]; - env->regs[CR_STATUS] |=3D CR_STATUS_EH; - env->regs[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); + env->ctrl[CR_ESTATUS] =3D env->ctrl[CR_STATUS]; + env->ctrl[CR_STATUS] |=3D CR_STATUS_EH; + env->ctrl[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); =20 - env->regs[CR_EXCEPTION] &=3D ~(0x1F << 2); - env->regs[CR_EXCEPTION] |=3D (cs->exception_index & 0x1F) << 2; + env->ctrl[CR_EXCEPTION] &=3D ~(0x1F << 2); + env->ctrl[CR_EXCEPTION] |=3D (cs->exception_index & 0x1F) << 2; =20 - env->regs[CR_TLBMISC] &=3D ~CR_TLBMISC_DBL; - env->regs[CR_TLBMISC] |=3D CR_TLBMISC_WR; + env->ctrl[CR_TLBMISC] &=3D ~CR_TLBMISC_DBL; + env->ctrl[CR_TLBMISC] |=3D CR_TLBMISC_WR; =20 env->regs[R_EA] =3D env->pc + 4; env->pc =3D cpu->fast_tlb_miss_addr; @@ -75,13 +75,13 @@ void nios2_cpu_do_interrupt(CPUState *cs) qemu_log_mask(CPU_LOG_INT, "TLB MISS (double) at pc=3D%x\n", e= nv->pc); =20 /* Double TLB miss */ - env->regs[CR_STATUS] |=3D CR_STATUS_EH; - env->regs[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); + env->ctrl[CR_STATUS] |=3D CR_STATUS_EH; + env->ctrl[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); =20 - env->regs[CR_EXCEPTION] &=3D ~(0x1F << 2); - env->regs[CR_EXCEPTION] |=3D (cs->exception_index & 0x1F) << 2; + env->ctrl[CR_EXCEPTION] &=3D ~(0x1F << 2); + env->ctrl[CR_EXCEPTION] |=3D (cs->exception_index & 0x1F) << 2; =20 - env->regs[CR_TLBMISC] |=3D CR_TLBMISC_DBL; + env->ctrl[CR_TLBMISC] |=3D CR_TLBMISC_DBL; =20 env->pc =3D cpu->exception_addr; } @@ -92,15 +92,15 @@ void nios2_cpu_do_interrupt(CPUState *cs) case EXCP_TLBX: qemu_log_mask(CPU_LOG_INT, "TLB PERM at pc=3D%x\n", env->pc); =20 - env->regs[CR_ESTATUS] =3D env->regs[CR_STATUS]; - env->regs[CR_STATUS] |=3D CR_STATUS_EH; - env->regs[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); + env->ctrl[CR_ESTATUS] =3D env->ctrl[CR_STATUS]; + env->ctrl[CR_STATUS] |=3D CR_STATUS_EH; + env->ctrl[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); =20 - env->regs[CR_EXCEPTION] &=3D ~(0x1F << 2); - env->regs[CR_EXCEPTION] |=3D (cs->exception_index & 0x1F) << 2; + env->ctrl[CR_EXCEPTION] &=3D ~(0x1F << 2); + env->ctrl[CR_EXCEPTION] |=3D (cs->exception_index & 0x1F) << 2; =20 - if ((env->regs[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { - env->regs[CR_TLBMISC] |=3D CR_TLBMISC_WR; + if ((env->ctrl[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { + env->ctrl[CR_TLBMISC] |=3D CR_TLBMISC_WR; } =20 env->regs[R_EA] =3D env->pc + 4; @@ -112,16 +112,16 @@ void nios2_cpu_do_interrupt(CPUState *cs) case EXCP_SUPERD: qemu_log_mask(CPU_LOG_INT, "SUPERVISOR exception at pc=3D%x\n", en= v->pc); =20 - if ((env->regs[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { - env->regs[CR_ESTATUS] =3D env->regs[CR_STATUS]; + if ((env->ctrl[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { + env->ctrl[CR_ESTATUS] =3D env->ctrl[CR_STATUS]; env->regs[R_EA] =3D env->pc + 4; } =20 - env->regs[CR_STATUS] |=3D CR_STATUS_EH; - env->regs[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); + env->ctrl[CR_STATUS] |=3D CR_STATUS_EH; + env->ctrl[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); =20 - env->regs[CR_EXCEPTION] &=3D ~(0x1F << 2); - env->regs[CR_EXCEPTION] |=3D (cs->exception_index & 0x1F) << 2; + env->ctrl[CR_EXCEPTION] &=3D ~(0x1F << 2); + env->ctrl[CR_EXCEPTION] |=3D (cs->exception_index & 0x1F) << 2; =20 env->pc =3D cpu->exception_addr; break; @@ -130,16 +130,16 @@ void nios2_cpu_do_interrupt(CPUState *cs) case EXCP_TRAP: qemu_log_mask(CPU_LOG_INT, "TRAP exception at pc=3D%x\n", env->pc); =20 - if ((env->regs[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { - env->regs[CR_ESTATUS] =3D env->regs[CR_STATUS]; + if ((env->ctrl[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { + env->ctrl[CR_ESTATUS] =3D env->ctrl[CR_STATUS]; env->regs[R_EA] =3D env->pc + 4; } =20 - env->regs[CR_STATUS] |=3D CR_STATUS_EH; - env->regs[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); + env->ctrl[CR_STATUS] |=3D CR_STATUS_EH; + env->ctrl[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); =20 - env->regs[CR_EXCEPTION] &=3D ~(0x1F << 2); - env->regs[CR_EXCEPTION] |=3D (cs->exception_index & 0x1F) << 2; + env->ctrl[CR_EXCEPTION] &=3D ~(0x1F << 2); + env->ctrl[CR_EXCEPTION] |=3D (cs->exception_index & 0x1F) << 2; =20 env->pc =3D cpu->exception_addr; break; @@ -155,16 +155,16 @@ void nios2_cpu_do_interrupt(CPUState *cs) break; } =20 - if ((env->regs[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { - env->regs[CR_BSTATUS] =3D env->regs[CR_STATUS]; + if ((env->ctrl[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { + env->ctrl[CR_BSTATUS] =3D env->ctrl[CR_STATUS]; env->regs[R_BA] =3D env->pc + 4; } =20 - env->regs[CR_STATUS] |=3D CR_STATUS_EH; - env->regs[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); + env->ctrl[CR_STATUS] |=3D CR_STATUS_EH; + env->ctrl[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); =20 - env->regs[CR_EXCEPTION] &=3D ~(0x1F << 2); - env->regs[CR_EXCEPTION] |=3D (cs->exception_index & 0x1F) << 2; + env->ctrl[CR_EXCEPTION] &=3D ~(0x1F << 2); + env->ctrl[CR_EXCEPTION] |=3D (cs->exception_index & 0x1F) << 2; =20 env->pc =3D cpu->exception_addr; break; @@ -207,8 +207,8 @@ void nios2_cpu_do_unaligned_access(CPUState *cs, vaddr = addr, Nios2CPU *cpu =3D NIOS2_CPU(cs); CPUNios2State *env =3D &cpu->env; =20 - env->regs[CR_BADADDR] =3D addr; - env->regs[CR_EXCEPTION] =3D EXCP_UNALIGN << 2; + env->ctrl[CR_BADADDR] =3D addr; + env->ctrl[CR_EXCEPTION] =3D EXCP_UNALIGN << 2; helper_raise_exception(env, EXCP_UNALIGN); } =20 @@ -246,7 +246,7 @@ bool nios2_cpu_tlb_fill(CPUState *cs, vaddr address, in= t size, return false; } cs->exception_index =3D EXCP_SUPERA; - env->regs[CR_BADADDR] =3D address; + env->ctrl[CR_BADADDR] =3D address; cpu_loop_exit_restore(cs, retaddr); } } @@ -275,15 +275,15 @@ bool nios2_cpu_tlb_fill(CPUState *cs, vaddr address, = int size, } =20 if (access_type =3D=3D MMU_INST_FETCH) { - env->regs[CR_TLBMISC] &=3D ~CR_TLBMISC_D; + env->ctrl[CR_TLBMISC] &=3D ~CR_TLBMISC_D; } else { - env->regs[CR_TLBMISC] |=3D CR_TLBMISC_D; + env->ctrl[CR_TLBMISC] |=3D CR_TLBMISC_D; } - env->regs[CR_PTEADDR] &=3D CR_PTEADDR_PTBASE_MASK; - env->regs[CR_PTEADDR] |=3D (address >> 10) & CR_PTEADDR_VPN_MASK; - env->mmu.pteaddr_wr =3D env->regs[CR_PTEADDR]; + env->ctrl[CR_PTEADDR] &=3D CR_PTEADDR_PTBASE_MASK; + env->ctrl[CR_PTEADDR] |=3D (address >> 10) & CR_PTEADDR_VPN_MASK; + env->mmu.pteaddr_wr =3D env->ctrl[CR_PTEADDR]; =20 cs->exception_index =3D excp; - env->regs[CR_BADADDR] =3D address; + env->ctrl[CR_BADADDR] =3D address; cpu_loop_exit_restore(cs, retaddr); } diff --git a/target/nios2/mmu.c b/target/nios2/mmu.c index 4daab2a7ab..95900724e8 100644 --- a/target/nios2/mmu.c +++ b/target/nios2/mmu.c @@ -95,8 +95,8 @@ void helper_mmu_write_tlbacc(CPUNios2State *env, uint32_t= v) v & CR_TLBACC_PFN_MASK); =20 /* 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); + if (env->ctrl[CR_TLBMISC] & CR_TLBMISC_WR) { + int way =3D (env->ctrl[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; @@ -117,8 +117,8 @@ void helper_mmu_write_tlbacc(CPUNios2State *env, uint32= _t v) entry->data =3D newData; } /* Auto-increment tlbmisc.WAY */ - env->regs[CR_TLBMISC] =3D - (env->regs[CR_TLBMISC] & ~CR_TLBMISC_WAY_MASK) | + env->ctrl[CR_TLBMISC] =3D + (env->ctrl[CR_TLBMISC] & ~CR_TLBMISC_WAY_MASK) | (((way + 1) & (cpu->tlb_num_ways - 1)) << CR_TLBMISC_WAY_SHIFT); } @@ -153,17 +153,17 @@ void helper_mmu_write_tlbmisc(CPUNios2State *env, uin= t32_t v) &env->mmu.tlb[(way * cpu->tlb_num_ways) + (vpn & env->mmu.tlb_entry_mask)]; =20 - 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 + env->ctrl[CR_TLBACC] &=3D CR_TLBACC_IGN_MASK; + env->ctrl[CR_TLBACC] |=3D entry->data; + env->ctrl[CR_TLBACC] |=3D (entry->tag & (1 << 11)) ? CR_TLBACC_G := 0; + env->ctrl[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; + env->ctrl[CR_PTEADDR] &=3D ~CR_PTEADDR_VPN_MASK; + env->ctrl[CR_PTEADDR] |=3D (entry->tag >> 12) << CR_PTEADDR_VPN_SH= IFT; } else { - env->regs[CR_TLBMISC] =3D v; + env->ctrl[CR_TLBMISC] =3D v; } =20 env->mmu.tlbmisc_wr =3D v; @@ -175,8 +175,8 @@ void helper_mmu_write_pteaddr(CPUNios2State *env, uint3= 2_t v) (v & CR_PTEADDR_VPN_MASK) >> CR_PTEADDR_= VPN_SHIFT); =20 /* 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->ctrl[CR_PTEADDR] =3D ((v & ~CR_PTEADDR_VPN_MASK) | + (env->ctrl[CR_PTEADDR] & CR_PTEADDR_VPN_MASK)= ); env->mmu.pteaddr_wr =3D v; } =20 diff --git a/target/nios2/op_helper.c b/target/nios2/op_helper.c index ee5ad8b23f..08ed3b4598 100644 --- a/target/nios2/op_helper.c +++ b/target/nios2/op_helper.c @@ -34,7 +34,7 @@ void helper_raise_exception(CPUNios2State *env, uint32_t = index) #ifndef CONFIG_USER_ONLY void helper_eret(CPUNios2State *env, uint32_t new_status, uint32_t new_pc) { - env->regs[CR_STATUS] =3D new_status; + env->ctrl[CR_STATUS] =3D new_status; env->pc =3D new_pc; cpu_loop_exit(env_cpu(env)); } diff --git a/target/nios2/translate.c b/target/nios2/translate.c index 6c739bfa5e..308da8057c 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -395,7 +395,7 @@ static void eret(DisasContext *dc, uint32_t code, uint3= 2_t flags) g_assert_not_reached(); #else TCGv tmp =3D tcg_temp_new(); - tcg_gen_ld_tl(tmp, cpu_env, offsetof(CPUNios2State, regs[CR_ESTATUS])); + tcg_gen_ld_tl(tmp, cpu_env, offsetof(CPUNios2State, ctrl[CR_ESTATUS])); gen_helper_eret(cpu_env, tmp, cpu_R[R_EA]); tcg_temp_free(tmp); =20 @@ -425,7 +425,7 @@ static void bret(DisasContext *dc, uint32_t code, uint3= 2_t flags) g_assert_not_reached(); #else TCGv tmp =3D tcg_temp_new(); - tcg_gen_ld_tl(tmp, cpu_env, offsetof(CPUNios2State, regs[CR_BSTATUS])); + tcg_gen_ld_tl(tmp, cpu_env, offsetof(CPUNios2State, ctrl[CR_BSTATUS])); gen_helper_eret(cpu_env, tmp, cpu_R[R_BA]); tcg_temp_free(tmp); =20 @@ -481,7 +481,7 @@ static void rdctl(DisasContext *dc, uint32_t code, uint= 32_t flags) return; } =20 - switch (instr.imm5 + CR_BASE) { + switch (instr.imm5) { case CR_IPENDING: /* * The value of the ipending register is synthetic. @@ -493,17 +493,15 @@ static void rdctl(DisasContext *dc, uint32_t code, ui= nt32_t flags) */ t1 =3D tcg_temp_new(); t2 =3D tcg_temp_new(); - tcg_gen_ld_tl(t1, cpu_env, - offsetof(CPUNios2State, regs[CR_IPENDING])); - tcg_gen_ld_tl(t2, cpu_env, - offsetof(CPUNios2State, regs[CR_IENABLE])); + tcg_gen_ld_tl(t1, cpu_env, offsetof(CPUNios2State, ctrl[CR_IPENDIN= G])); + tcg_gen_ld_tl(t2, cpu_env, offsetof(CPUNios2State, ctrl[CR_IENABLE= ])); tcg_gen_and_tl(cpu_R[instr.c], t1, t2); tcg_temp_free(t1); tcg_temp_free(t2); break; default: tcg_gen_ld_tl(cpu_R[instr.c], cpu_env, - offsetof(CPUNios2State, regs[instr.imm5 + CR_BASE])); + offsetof(CPUNios2State, ctrl[instr.imm5])); break; } } @@ -521,7 +519,7 @@ static void wrctl(DisasContext *dc, uint32_t code, uint= 32_t flags) R_TYPE(instr, code); TCGv v =3D load_gpr(dc, instr.a); =20 - switch (instr.imm5 + CR_BASE) { + switch (instr.imm5) { case CR_PTEADDR: gen_helper_mmu_write_pteaddr(cpu_env, v); break; @@ -541,7 +539,7 @@ static void wrctl(DisasContext *dc, uint32_t code, uint= 32_t flags) /* fall through */ default: tcg_gen_st_tl(v, cpu_env, - offsetof(CPUNios2State, regs[instr.imm5 + CR_BASE])); + offsetof(CPUNios2State, ctrl[instr.imm5])); break; } #endif @@ -774,7 +772,7 @@ illegal_op: t_gen_helper_raise_exception(dc, EXCP_ILLEGAL); } =20 -static const char * const regnames[NUM_CORE_REGS] =3D { +static const char * const gr_regnames[NUM_GP_REGS] =3D { "zero", "at", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", @@ -783,6 +781,9 @@ static const char * const regnames[NUM_CORE_REGS] =3D { "r20", "r21", "r22", "r23", "et", "bt", "gp", "sp", "fp", "ea", "ba", "ra", +}; + +static const char * const cr_regnames[NUM_CR_REGS] =3D { "status", "estatus", "bstatus", "ienable", "ipending", "cpuid", "reserved0", "exception", "pteaddr", "tlbacc", "tlbmisc", "reserved1", @@ -910,8 +911,14 @@ void nios2_cpu_dump_state(CPUState *cs, FILE *f, int f= lags) =20 qemu_fprintf(f, "IN: PC=3D%x %s\n", env->pc, lookup_symbol(env->pc)); =20 - for (i =3D 0; i < NUM_CORE_REGS; i++) { - qemu_fprintf(f, "%9s=3D%8.8x ", regnames[i], env->regs[i]); + for (i =3D 0; i < NUM_GP_REGS; i++) { + qemu_fprintf(f, "%9s=3D%8.8x ", gr_regnames[i], env->regs[i]); + if ((i + 1) % 4 =3D=3D 0) { + qemu_fprintf(f, "\n"); + } + } + for (i =3D 0; i < NUM_CR_REGS; i++) { + qemu_fprintf(f, "%9s=3D%8.8x ", cr_regnames[i], env->ctrl[i]); if ((i + 1) % 4 =3D=3D 0) { qemu_fprintf(f, "\n"); } @@ -932,7 +939,7 @@ void nios2_tcg_init(void) for (i =3D 0; i < NUM_GP_REGS; i++) { cpu_R[i] =3D tcg_global_mem_new(cpu_env, offsetof(CPUNios2State, regs[i]), - regnames[i]); + gr_regnames[i]); } cpu_pc =3D tcg_global_mem_new(cpu_env, offsetof(CPUNios2State, pc), "pc"); --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650557658; cv=none; d=zohomail.com; s=zohoarc; b=KPu+218WCYdU441Vnqnj9xC3QFs2Rs4RJIocQqeiYWLpxoZ433FUOI3Nh+zI9p7l4902KE43Bbp8e9ReQoneqVRcpBRFVva+T+yqlHTARGYg0+NxkMFKnkndPkeM9iqiOHZv9SEHI/IlVIaMviTS4ZKwtqSeACCnEHh3IBk2BLQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650557658; 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=8C0hG9nUeAmbkxuWD9ITgea/jSx6I8RasjfIBbL2Yes=; b=WMsDoX3Da+iquwvyjzVGa+Lqjir7bK5J2bOb5lIBUbb9VuYUJy7fsLY7IiCsJLLyvenjbxpXUdnjeoYgo+v9aXdhDxzCcCoR376Hl5sOozDBgfthx8fYAVcEiXOwhNGqd5eXWZDSpNRA9FkYru8ZxWXNp/9GqInzEu13iH9ApsY= 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 1650557658933675.2709574901332; Thu, 21 Apr 2022 09:14:18 -0700 (PDT) Received: from localhost ([::1]:40876 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZRh-0002iq-Ny for importer@patchew.org; Thu, 21 Apr 2022 12:14:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42962) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZV-0007UZ-9O for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:17 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]:46077) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZS-0006J4-VV for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:17 -0400 Received: by mail-pl1-x633.google.com with SMTP id h12so1497777plf.12 for ; Thu, 21 Apr 2022 08:18:14 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.18.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:18:12 -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=8C0hG9nUeAmbkxuWD9ITgea/jSx6I8RasjfIBbL2Yes=; b=hAiakueJWylUL3SSX7ab7pPx6i86iZaIHfr5zKSqD9O0rh/czhRMmkNmivtZsUaUoQ FViRg312I5R2wP3MexqY7xFH1jngOPs6izIIL/D6i7QcXFphhV26+gd0PQRBAyqnPo8B xbqn8S4gkKOVN33c9iP9fkndFIvr5RGVbqP99v/Y8puqVmrIAh0+Ex4phdVyW44M2i+2 AEY7+XQ5nD23j34yjs5AIade/714S3mms4JCYwdSYkltHkLe0ZfJneQR+Gqh9RptIM7T xcppY8xfTKJyQw+ExNCg+IqBBAWhH+f5Kvh20M89sEWnO/VFED0IbHhDLG3z8gVrU2Q6 VnBw== 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=8C0hG9nUeAmbkxuWD9ITgea/jSx6I8RasjfIBbL2Yes=; b=nkNiEYl6XsWrmk/Qicxy9phMPs4U1vVw4mRvytrNr8FOHt08leHVSPXGFLZRigwTR/ iT/1jEIJ0tccPKaZrKxWILrbgWcqnNzWq5Pw8cqNSu6j1YRLjN+8OIcD/LM9/cK62Cz7 dMtj//C5KRbmfoENe08TlAtuVum+WUKFMeEIVlZsUOBj5Mu5GkZOZSOLUznNmqRxAITn OXGTI0kfaTQ25R0pw+xFv+TnqP7eR2nHkTmsfpH5MMLCPyaYYbLiAMU7LfhN9LtHQiht EgxsWWxePg5ZzZTaLNY/z/oxDI9iAQt2hDQJ04y+iztRhT3LRhrqkZjmfPiVnWKBTu40 B4Yg== X-Gm-Message-State: AOAM532BmKgb4DKTWHeZFsTCIsz01348x4blZr1Nz0AjG30L4cc/qpSJ qQWKygC3wMu//IXalsL73UcnE8DnJr5s4w== X-Google-Smtp-Source: ABdhPJzgPilNIhBvQ9wbwAjPgTDBleAaKKgwHofcruHTHxhZ7Uu3xjXXbDU97XeCTSrua38z5W7iSw== X-Received: by 2002:a17:90b:33cc:b0:1ce:a3fe:af41 with SMTP id lk12-20020a17090b33cc00b001cea3feaf41mr120723pjb.229.1650554293612; Thu, 21 Apr 2022 08:18:13 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 23/64] target/nios2: Clean up nios2_cpu_dump_state Date: Thu, 21 Apr 2022 08:16:54 -0700 Message-Id: <20220421151735.31996-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650557660384100001 Content-Type: text/plain; charset="utf-8" Do not print control registers for user-only mode. Rename reserved control registers to "resN", where N is the control register index. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/translate.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/target/nios2/translate.c b/target/nios2/translate.c index 308da8057c..fc49a7101f 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -783,16 +783,18 @@ static const char * const gr_regnames[NUM_GP_REGS] = =3D { "fp", "ea", "ba", "ra", }; =20 +#ifndef CONFIG_USER_ONLY static const char * const cr_regnames[NUM_CR_REGS] =3D { "status", "estatus", "bstatus", "ienable", - "ipending", "cpuid", "reserved0", "exception", + "ipending", "cpuid", "res6", "exception", "pteaddr", "tlbacc", "tlbmisc", "reserved1", "badaddr", "config", "mpubase", "mpuacc", - "reserved2", "reserved3", "reserved4", "reserved5", - "reserved6", "reserved7", "reserved8", "reserved9", - "reserved10", "reserved11", "reserved12", "reserved13", - "reserved14", "reserved15", "reserved16", "reserved17", + "res16", "res17", "res18", "res19", + "res20", "res21", "res22", "res23", + "res24", "res25", "res26", "res27", + "res28", "res29", "res30", "res31", }; +#endif =20 #include "exec/gen-icount.h" =20 @@ -905,10 +907,6 @@ void nios2_cpu_dump_state(CPUState *cs, FILE *f, int f= lags) CPUNios2State *env =3D &cpu->env; int i; =20 - if (!env) { - return; - } - qemu_fprintf(f, "IN: PC=3D%x %s\n", env->pc, lookup_symbol(env->pc)); =20 for (i =3D 0; i < NUM_GP_REGS; i++) { @@ -917,13 +915,14 @@ void nios2_cpu_dump_state(CPUState *cs, FILE *f, int = flags) qemu_fprintf(f, "\n"); } } + +#if !defined(CONFIG_USER_ONLY) for (i =3D 0; i < NUM_CR_REGS; i++) { qemu_fprintf(f, "%9s=3D%8.8x ", cr_regnames[i], env->ctrl[i]); if ((i + 1) % 4 =3D=3D 0) { qemu_fprintf(f, "\n"); } } -#if !defined(CONFIG_USER_ONLY) qemu_fprintf(f, " mmu write: VPN=3D%05X PID %02X TLBACC %08X\n", env->mmu.pteaddr_wr & CR_PTEADDR_VPN_MASK, (env->mmu.tlbmisc_wr & CR_TLBMISC_PID_MASK) >> 4, --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650555635; cv=none; d=zohomail.com; s=zohoarc; b=FH9itMrRcZfaMP5F/9wCIx0U5botq9PH7E7CXx5qm0DT7Ka/1ORevjYMujmv6mhCfWzhr1OJcEsmqS1tb8THm5y59wkHdHtFlsjOUkv6yaxrS8zF32gu8DDU+1pjnV+YhpCu/qo/q526C3Tkl/GSEx8HRRlM7u3AvCfHYQ1mvPY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650555635; 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=+mtXVKAjUVRS64m73YmB+z7ejlvTN+BDSTEhooEYEys=; b=GUuvZ+BOfDdK/QbKVdEr2dVsdugSPQLwE9W+5Gl/22FPyqnV4uEsfky2AzEspVZ/4wjDopHh3PAEL5ogTstLLSz20gytx1OJd1FgACImOcFz5KXUvnv+x5natHRR1tTPVSy/eni77cusWZAzlua+xuh+2C9P8EYP/AwFp1GASRY= 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 1650555635138677.0459130249134; Thu, 21 Apr 2022 08:40:35 -0700 (PDT) Received: from localhost ([::1]:42402 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhYv3-0006cR-R5 for importer@patchew.org; Thu, 21 Apr 2022 11:40:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42996) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZW-0007YD-KE for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:18 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]:43758) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZU-0006J9-Fj for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:18 -0400 Received: by mail-pl1-x630.google.com with SMTP id d15so5156711pll.10 for ; Thu, 21 Apr 2022 08:18:16 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.18.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:18:14 -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=+mtXVKAjUVRS64m73YmB+z7ejlvTN+BDSTEhooEYEys=; b=dB03xJOetW7gTapLPP0j6HdcdtCdxbbAt+h+wm4mqZ4Z4aNjr3CbCJt0zoc0bxzvPe +xr/aMue4nuyUISm/t0yYqdpDFfch5Nv9uv+uVB1yvkVdof1FFFzgXQ15/8Ba2A2xtYk WOR6RWjRspCgv+XOnkzUvis4QSlDXvVVBi2nzYymEW9K4QrkXcQ7WKlRV5FLlhMmt60Q /0TnrPIeHtOQDAPterPQ+lNd6CHvssAloT4B/IEIq1a5MT+FSmbcm4slJ4jRzVYPLP+W SVf1w+MGGhBBKyaJ52y9Vc6SZYCSKT2kVELzpK38rCib+ey6VMQsPwG2HEZBOtWbdZbR 9rog== 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=+mtXVKAjUVRS64m73YmB+z7ejlvTN+BDSTEhooEYEys=; b=IlhPap6Y81aMItbEDRdv0TgJt/k2QnYHx0BMk8gfnD+U0a0/7KbnHO65K5ySoPFwys D6CA/c5ld1wg5jjnZFikf/8hQwsohHYVrznmm3fT0tDcbBu2I8ROzHcxHbG6X/Qc5Ifc biMH2ZawIeVIvLa9IzJB7WtP1H2MneO2fEFignp3n+ZcyOxoyV5RMYgmxlz2NAa8Z7YP cQIy5tQIC6jegmfJGlcHlWxyMOlt8Z/0BF3COcQ/z156yyttcn4B4a3fcS4uXohzuPC/ 5lrMlWETFb6i/1VuCZcfluLjT2hqoTi72XFN8d4iaGDDBriYFT6prhTQ82Nx/khaafL3 Lmtg== X-Gm-Message-State: AOAM5319m7ieI0IjsT2fyql8D2KQ/rvn/meRN/pZu9FGriVnDD0lAbDA 3SUhjQrQMvOevk+74fNQ92DMByRnQ9cHVA== X-Google-Smtp-Source: ABdhPJxglMs2QfswzmUYWVWWENlP/jptEGY/jcANyrTCsTdjifWx834jqktQIbp+SHSsrdRIUCZNhg== X-Received: by 2002:a17:902:ea4f:b0:158:5013:1403 with SMTP id r15-20020a170902ea4f00b0015850131403mr26076510plg.75.1650554295167; Thu, 21 Apr 2022 08:18:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 24/64] target/nios2: Use hw/registerfields.h for CR_STATUS fields Date: Thu, 21 Apr 2022 08:16:55 -0700 Message-Id: <20220421151735.31996-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+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: -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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650555637256100001 Content-Type: text/plain; charset="utf-8" Add all fields; retain the helper macros for single bit fields. So far there are no uses of the multi-bit status fields. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/cpu.h | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index 872bc2a46f..44fc681c58 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -23,6 +23,7 @@ =20 #include "exec/cpu-defs.h" #include "hw/core/cpu.h" +#include "hw/registerfields.h" #include "qom/object.h" =20 typedef struct CPUArchState CPUNios2State; @@ -79,15 +80,24 @@ struct Nios2CPUClass { =20 /* Control register aliases */ #define CR_STATUS 0 -#define CR_STATUS_PIE (1 << 0) -#define CR_STATUS_U (1 << 1) -#define CR_STATUS_EH (1 << 2) -#define CR_STATUS_IH (1 << 3) -#define CR_STATUS_IL (63 << 4) -#define CR_STATUS_CRS (63 << 10) -#define CR_STATUS_PRS (63 << 16) -#define CR_STATUS_NMI (1 << 22) -#define CR_STATUS_RSIE (1 << 23) + +FIELD(CR_STATUS, PIE, 0, 1) +FIELD(CR_STATUS, U, 1, 1) +FIELD(CR_STATUS, EH, 2, 1) +FIELD(CR_STATUS, IH, 3, 1) +FIELD(CR_STATUS, IL, 4, 6) +FIELD(CR_STATUS, CRS, 10, 6) +FIELD(CR_STATUS, PRS, 16, 6) +FIELD(CR_STATUS, NMI, 22, 1) +FIELD(CR_STATUS, RSIE, 23, 1) + +#define CR_STATUS_PIE R_CR_STATUS_PIE_MASK +#define CR_STATUS_U R_CR_STATUS_U_MASK +#define CR_STATUS_EH R_CR_STATUS_EH_MASK +#define CR_STATUS_IH R_CR_STATUS_IH_MASK +#define CR_STATUS_NMI R_CR_STATUS_NMI_MASK +#define CR_STATUS_RSIE R_CR_STATUS_RSIE_MASK + #define CR_ESTATUS 1 #define CR_BSTATUS 2 #define CR_IENABLE 3 --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650555782; cv=none; d=zohomail.com; s=zohoarc; b=dYNg8i4jpZ33sJv8Em9p70M+0BOp3qvifJWeqv0ejO8+s+LAL2HfvWSDy8ix4dWsqlDUwIMUpZcc+8fO1pDCqb+mYTodobKxo7Bf88amF/45OGIz1o0IBD4Vk2fe+KIoRqKXnh8v/oayClBgJfJ00+x1dd8gzJBarLd6gg3tofM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650555782; 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=3bhC4Xmof1vsFelhZ+DCnUiXEWmyCQUvp+ucYa47m4g=; b=en3LmA+6Ogwu4W1IxpHJ2UFMTXngDr9fTmsrGhAdk3bOTO8bx0xDw3niqZ2X4XN47wDjId2TK26k9bPQYTK5VFvDy0I6vmBEB4JFHLXdcv3Zsc99p9Oj9c/piIyBte/O5IDVCd5prBCmvapMqgUupreFawTMk7tQ9poeNN/r330= 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 1650555782003416.46196801235374; Thu, 21 Apr 2022 08:43:02 -0700 (PDT) Received: from localhost ([::1]:50948 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhYxR-0004s6-1Q for importer@patchew.org; Thu, 21 Apr 2022 11:43:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43020) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZX-0007ce-Vn for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:20 -0400 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]:41480) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZW-0006Jf-6y for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:19 -0400 Received: by mail-pg1-x52e.google.com with SMTP id t13so4900275pgn.8 for ; Thu, 21 Apr 2022 08:18:17 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.18.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:18:16 -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=3bhC4Xmof1vsFelhZ+DCnUiXEWmyCQUvp+ucYa47m4g=; b=eFpYsMnskBwdT84fYFbqsSbmaEqUAALriruWCzThVyPqBxRnxwDFEsKzJo2HG1Q3K2 v0uHu7Q7XAeXDxMFK2bUuTig+bEbb/hmGAo7rLh6NUCHqwoxZEXD1eQrclhAwQlcoj+Q /f4i4GXppuiUKV1M5RBXiutn7ouK5lHMppP+cyCkdlTVqy9xjuJOguYv1FmXilnUsdYj QpFn6/oSOIUAt7rrkbEU7Ex1usTfpBOZlv88kDIhKL9K7fKK7mLas9WzoDnLuPfliVLZ C2hgNjzptifhOclBAdB0n0Ri1Vcu/hybr+/55VBJokv/Rdjyl6MDaQn6qDSEe0MDGHNi twyQ== 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=3bhC4Xmof1vsFelhZ+DCnUiXEWmyCQUvp+ucYa47m4g=; b=OnNfSMHYSsfYwZkQEKRgPCOLWhXG6IsOO+sONbDie19STrluW3TCLch48ZsUzgdL9q x4T+luP9D0u/Bo7CrHNo6mAI0YbPjlPTzWKmavYnrxGKxtpah17SGBD/7L8KQK9Dgv5s HqzP/nCVGxogAv7AgzruPEoI8zNrPwueh6Z7ZGzCX48Le1q8wojeqBMNPg2EVAHRSCKL T8+No1+D7R+fG7JxW49s4ikCqnY4f0yNF8/5E3KHq28a23jUmGWAtejJvxaJ9sOljKuk Noh7mFqVcvx2xaF3kbSUVwEzRnsFQSrphxPipyUdOE6y2BAskPqluZbvRYWo7tz4O47m FFpQ== X-Gm-Message-State: AOAM530WoZaLW6ibd2sGlq9ZU8EzWOkDv52uCsoPXakWxtHZC4qY3yu2 tao+DAlzHg6pA3g0r/+4S3lwY9GtQE1tKQ== X-Google-Smtp-Source: ABdhPJwVVToAji+lYMV+x9/I68gtleUk4YSJvmJAW9kJv6wgEagNuI5xPpBsTG75azeI6JTSSyfu/w== X-Received: by 2002:a63:ef06:0:b0:39d:7613:7d38 with SMTP id u6-20020a63ef06000000b0039d76137d38mr24116352pgh.284.1650554296906; Thu, 21 Apr 2022 08:18:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 25/64] target/nios2: Use hw/registerfields.h for CR_EXCEPTION fields Date: Thu, 21 Apr 2022 08:16:56 -0700 Message-Id: <20220421151735.31996-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650555783880100001 Content-Type: text/plain; charset="utf-8" Use FIELD_DP32 instead of manual shifting and masking. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/cpu.h | 4 ++++ target/nios2/helper.c | 37 ++++++++++++++++++++++--------------- 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index 44fc681c58..114b494294 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -105,6 +105,10 @@ FIELD(CR_STATUS, RSIE, 23, 1) #define CR_CPUID 5 #define CR_CTL6 6 #define CR_EXCEPTION 7 + +FIELD(CR_EXCEPTION, CAUSE, 2, 5) +FIELD(CR_EXCEPTION, ECCFTL, 31, 1) + #define CR_PTEADDR 8 #define CR_PTEADDR_PTBASE_SHIFT 22 #define CR_PTEADDR_PTBASE_MASK (0x3FF << CR_PTEADDR_PTBASE_SHIFT) diff --git a/target/nios2/helper.c b/target/nios2/helper.c index 2e5f5b8b54..b30740824c 100644 --- a/target/nios2/helper.c +++ b/target/nios2/helper.c @@ -44,8 +44,9 @@ void nios2_cpu_do_interrupt(CPUState *cs) env->ctrl[CR_STATUS] |=3D CR_STATUS_IH; env->ctrl[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); =20 - env->ctrl[CR_EXCEPTION] &=3D ~(0x1F << 2); - env->ctrl[CR_EXCEPTION] |=3D (cs->exception_index & 0x1F) << 2; + env->ctrl[CR_EXCEPTION] =3D FIELD_DP32(env->ctrl[CR_EXCEPTION], + CR_EXCEPTION, CAUSE, + cs->exception_index); =20 env->regs[R_EA] =3D env->pc + 4; env->pc =3D cpu->exception_addr; @@ -63,8 +64,9 @@ void nios2_cpu_do_interrupt(CPUState *cs) env->ctrl[CR_STATUS] |=3D CR_STATUS_EH; env->ctrl[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); =20 - env->ctrl[CR_EXCEPTION] &=3D ~(0x1F << 2); - env->ctrl[CR_EXCEPTION] |=3D (cs->exception_index & 0x1F) << 2; + env->ctrl[CR_EXCEPTION] =3D FIELD_DP32(env->ctrl[CR_EXCEPTION], + CR_EXCEPTION, CAUSE, + cs->exception_index); =20 env->ctrl[CR_TLBMISC] &=3D ~CR_TLBMISC_DBL; env->ctrl[CR_TLBMISC] |=3D CR_TLBMISC_WR; @@ -78,8 +80,9 @@ void nios2_cpu_do_interrupt(CPUState *cs) env->ctrl[CR_STATUS] |=3D CR_STATUS_EH; env->ctrl[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); =20 - env->ctrl[CR_EXCEPTION] &=3D ~(0x1F << 2); - env->ctrl[CR_EXCEPTION] |=3D (cs->exception_index & 0x1F) << 2; + env->ctrl[CR_EXCEPTION] =3D FIELD_DP32(env->ctrl[CR_EXCEPTION], + CR_EXCEPTION, CAUSE, + cs->exception_index); =20 env->ctrl[CR_TLBMISC] |=3D CR_TLBMISC_DBL; =20 @@ -96,8 +99,9 @@ void nios2_cpu_do_interrupt(CPUState *cs) env->ctrl[CR_STATUS] |=3D CR_STATUS_EH; env->ctrl[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); =20 - env->ctrl[CR_EXCEPTION] &=3D ~(0x1F << 2); - env->ctrl[CR_EXCEPTION] |=3D (cs->exception_index & 0x1F) << 2; + env->ctrl[CR_EXCEPTION] =3D FIELD_DP32(env->ctrl[CR_EXCEPTION], + CR_EXCEPTION, CAUSE, + cs->exception_index); =20 if ((env->ctrl[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { env->ctrl[CR_TLBMISC] |=3D CR_TLBMISC_WR; @@ -120,8 +124,9 @@ void nios2_cpu_do_interrupt(CPUState *cs) env->ctrl[CR_STATUS] |=3D CR_STATUS_EH; env->ctrl[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); =20 - env->ctrl[CR_EXCEPTION] &=3D ~(0x1F << 2); - env->ctrl[CR_EXCEPTION] |=3D (cs->exception_index & 0x1F) << 2; + env->ctrl[CR_EXCEPTION] =3D FIELD_DP32(env->ctrl[CR_EXCEPTION], + CR_EXCEPTION, CAUSE, + cs->exception_index); =20 env->pc =3D cpu->exception_addr; break; @@ -138,8 +143,9 @@ void nios2_cpu_do_interrupt(CPUState *cs) env->ctrl[CR_STATUS] |=3D CR_STATUS_EH; env->ctrl[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); =20 - env->ctrl[CR_EXCEPTION] &=3D ~(0x1F << 2); - env->ctrl[CR_EXCEPTION] |=3D (cs->exception_index & 0x1F) << 2; + env->ctrl[CR_EXCEPTION] =3D FIELD_DP32(env->ctrl[CR_EXCEPTION], + CR_EXCEPTION, CAUSE, + cs->exception_index); =20 env->pc =3D cpu->exception_addr; break; @@ -163,8 +169,9 @@ void nios2_cpu_do_interrupt(CPUState *cs) env->ctrl[CR_STATUS] |=3D CR_STATUS_EH; env->ctrl[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); =20 - env->ctrl[CR_EXCEPTION] &=3D ~(0x1F << 2); - env->ctrl[CR_EXCEPTION] |=3D (cs->exception_index & 0x1F) << 2; + env->ctrl[CR_EXCEPTION] =3D FIELD_DP32(env->ctrl[CR_EXCEPTION], + CR_EXCEPTION, CAUSE, + cs->exception_index); =20 env->pc =3D cpu->exception_addr; break; @@ -208,7 +215,7 @@ void nios2_cpu_do_unaligned_access(CPUState *cs, vaddr = addr, CPUNios2State *env =3D &cpu->env; =20 env->ctrl[CR_BADADDR] =3D addr; - env->ctrl[CR_EXCEPTION] =3D EXCP_UNALIGN << 2; + env->ctrl[CR_EXCEPTION] =3D FIELD_DP32(0, CR_EXCEPTION, CAUSE, EXCP_UN= ALIGN); helper_raise_exception(env, EXCP_UNALIGN); } =20 --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650556088; cv=none; d=zohomail.com; s=zohoarc; b=NedIsNwMxSOk6N3lsQeXSbjdFgocVWiGJy+u1tiamNPc10ROdwPtJBl0rgZE4VIol1qT4wwosSthlPNQip1SgOUJbA6Yxu3TF7y27vWUvyM9RSL5wzrk9SbekexwRmdoMO+owHNgmVNaioknAFIM104VOxQyrDRENaJAh9+Xtzc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650556088; 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=HPehtKqkb+apNQRFxOruqnxoC30m1j8VxgKC8dRxI2M=; b=PqI++FQj8b1T7vUEJqFXnq7VJ7irw0FjsHkbM0Ut5WdkAx0JViBLWialr4SQ4b9M1007Yw4Y0SeMcHBavVmC9l2mZl9hoCzsoeL2Kexim4m1pFwTSZVdiTpg/OqtM4WzzmoJGJaofHXLv34RanUDbTTTUv3KQJHYdyvf+kCM5L0= 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 1650556088741273.1908311376409; Thu, 21 Apr 2022 08:48:08 -0700 (PDT) Received: from localhost ([::1]:39252 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZ2M-0007ex-J5 for importer@patchew.org; Thu, 21 Apr 2022 11:48:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43038) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZZ-0007jD-Gr for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:21 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]:40761) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZX-0006K5-Oi for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:21 -0400 Received: by mail-pl1-x62d.google.com with SMTP id t12so5163411pll.7 for ; Thu, 21 Apr 2022 08:18:19 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.18.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:18:17 -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=HPehtKqkb+apNQRFxOruqnxoC30m1j8VxgKC8dRxI2M=; b=KpVzn7s2YYAOtSJyBekFoxuj3QZsb2+5sPsHQXlKt+iSXiZUd7rDCF2hXhMNLiY0lV OY9P3xhbEUoNLcOo/MTfwjfaOXsYl1uxMB6wKB246dZdo5FnK9gs7ZTN0sAX7Lils9CA vaKOTNBMIodKMccFvrHCrYXVdSNv/B+kw1EZtHcOS1Z+QsOHCxTiYJf7r5FmvFFIDYK8 2eu5g/dTwUtUyPGdThHAaeyBUHCxYU2TcexPFyprVDkxgTMnJ3BvOAJjbaZzi3Ao/585 bhgD7JW8WwBxRoWr9lx2Y3HwYSVCZP2kNxQWv09sUMmOrwBUNObNxWRaCtyzieMDGBPo l3ig== 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=HPehtKqkb+apNQRFxOruqnxoC30m1j8VxgKC8dRxI2M=; b=ON+DBQ71mKiw3qQfT8MADSLAcA+BceGGJjfPGKmOG3Zoqrqi5jZCCfhZV5knJrXcxY JfmQuwLEINcv7LofUhpCt77YKSRkwH4+Gwro4YLeUThnYbf8/cGIkze0KQffVIMlP0wD Wx+ZdPvAzI5mUy4EVuWPNiA2Yfn/Iby2Km+wI+Srznqk5SnR+HrMLiQqV/9k4iJSDX66 plmlI1mZKOOai28H5zR2jzkEmWeSVHinYtODOHXhPJv4nnhCvpk+Db0MAW/ahh/zuqVj Q0TRuOIlmXwmyLx/5cGOqGav5u3dHdryqsi+hWK12Potf0kRakE8Ronh8owDrKkGtPsb nw1w== X-Gm-Message-State: AOAM530fh96xL7YwFqN8Nl8HwVmtdZ+ccUxbHD157R6ixacXswOJk6KN w2FlVCMOABORELtX+bqQ+Ae7VAfmL0I6dQ== X-Google-Smtp-Source: ABdhPJyH0M1EW5xTEyW4/q/FcR0aFqTHjrmX9kjEIODiDxf4x/n0EBRSWI55ehBFXN1NZl8/sL6V0Q== X-Received: by 2002:a17:90b:3c51:b0:1d6:aabd:6a3b with SMTP id pm17-20020a17090b3c5100b001d6aabd6a3bmr120055pjb.241.1650554298463; Thu, 21 Apr 2022 08:18:18 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 26/64] target/nios2: Use hw/registerfields.h for CR_TLBADDR fields Date: Thu, 21 Apr 2022 08:16:57 -0700 Message-Id: <20220421151735.31996-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62d.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650556089521100001 Content-Type: text/plain; charset="utf-8" Use FIELD_EX32 and FIELD_DP32 instead of manual manipulation of the fields. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/cpu.h | 8 ++++---- target/nios2/helper.c | 4 ++-- target/nios2/mmu.c | 17 +++++++++-------- target/nios2/translate.c | 2 +- 4 files changed, 16 insertions(+), 15 deletions(-) diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index 114b494294..67ca62fc1f 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -110,10 +110,10 @@ FIELD(CR_EXCEPTION, CAUSE, 2, 5) FIELD(CR_EXCEPTION, ECCFTL, 31, 1) =20 #define CR_PTEADDR 8 -#define CR_PTEADDR_PTBASE_SHIFT 22 -#define CR_PTEADDR_PTBASE_MASK (0x3FF << CR_PTEADDR_PTBASE_SHIFT) -#define CR_PTEADDR_VPN_SHIFT 2 -#define CR_PTEADDR_VPN_MASK (0xFFFFF << CR_PTEADDR_VPN_SHIFT) + +FIELD(CR_PTEADDR, VPN, 2, 20) +FIELD(CR_PTEADDR, PTBASE, 22, 10) + #define CR_TLBACC 9 #define CR_TLBACC_IGN_SHIFT 25 #define CR_TLBACC_IGN_MASK (0x7F << CR_TLBACC_IGN_SHIFT) diff --git a/target/nios2/helper.c b/target/nios2/helper.c index b30740824c..c2d0afe1b6 100644 --- a/target/nios2/helper.c +++ b/target/nios2/helper.c @@ -286,8 +286,8 @@ bool nios2_cpu_tlb_fill(CPUState *cs, vaddr address, in= t size, } else { env->ctrl[CR_TLBMISC] |=3D CR_TLBMISC_D; } - env->ctrl[CR_PTEADDR] &=3D CR_PTEADDR_PTBASE_MASK; - env->ctrl[CR_PTEADDR] |=3D (address >> 10) & CR_PTEADDR_VPN_MASK; + env->ctrl[CR_PTEADDR] =3D FIELD_DP32(env->ctrl[CR_PTEADDR], CR_PTEADDR= , VPN, + address >> TARGET_PAGE_BITS); env->mmu.pteaddr_wr =3D env->ctrl[CR_PTEADDR]; =20 cs->exception_index =3D excp; diff --git a/target/nios2/mmu.c b/target/nios2/mmu.c index 95900724e8..75afc56daf 100644 --- a/target/nios2/mmu.c +++ b/target/nios2/mmu.c @@ -97,7 +97,7 @@ void helper_mmu_write_tlbacc(CPUNios2State *env, uint32_t= v) /* if tlbmisc.WE =3D=3D 1 then trigger a TLB write on writes to TLBACC= */ if (env->ctrl[CR_TLBMISC] & CR_TLBMISC_WR) { int way =3D (env->ctrl[CR_TLBMISC] >> CR_TLBMISC_WAY_SHIFT); - int vpn =3D (env->mmu.pteaddr_wr & CR_PTEADDR_VPN_MASK) >> 2; + int vpn =3D FIELD_EX32(env->mmu.pteaddr_wr, CR_PTEADDR, VPN); 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; @@ -148,7 +148,7 @@ void helper_mmu_write_tlbmisc(CPUNios2State *env, uint3= 2_t v) /* 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; + int vpn =3D FIELD_EX32(env->mmu.pteaddr_wr, CR_PTEADDR, VPN); Nios2TLBEntry *entry =3D &env->mmu.tlb[(way * cpu->tlb_num_ways) + (vpn & env->mmu.tlb_entry_mask)]; @@ -160,8 +160,9 @@ void helper_mmu_write_tlbmisc(CPUNios2State *env, uint3= 2_t v) (v & ~CR_TLBMISC_PID_MASK) | ((entry->tag & ((1 << cpu->pid_num_bits) - 1)) << CR_TLBMISC_PID_SHIFT); - env->ctrl[CR_PTEADDR] &=3D ~CR_PTEADDR_VPN_MASK; - env->ctrl[CR_PTEADDR] |=3D (entry->tag >> 12) << CR_PTEADDR_VPN_SH= IFT; + env->ctrl[CR_PTEADDR] =3D FIELD_DP32(env->ctrl[CR_PTEADDR], + CR_PTEADDR, VPN, + entry->tag >> TARGET_PAGE_BITS); } else { env->ctrl[CR_TLBMISC] =3D v; } @@ -171,12 +172,12 @@ void helper_mmu_write_tlbmisc(CPUNios2State *env, uin= t32_t v) =20 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); + trace_nios2_mmu_write_pteaddr(FIELD_EX32(v, CR_PTEADDR, PTBASE), + FIELD_EX32(v, CR_PTEADDR, VPN)); =20 /* Writes to PTEADDR don't change the read-back VPN value */ - env->ctrl[CR_PTEADDR] =3D ((v & ~CR_PTEADDR_VPN_MASK) | - (env->ctrl[CR_PTEADDR] & CR_PTEADDR_VPN_MASK)= ); + env->ctrl[CR_PTEADDR] =3D ((v & ~R_CR_PTEADDR_VPN_MASK) | + (env->ctrl[CR_PTEADDR] & R_CR_PTEADDR_VPN_MAS= K)); env->mmu.pteaddr_wr =3D v; } =20 diff --git a/target/nios2/translate.c b/target/nios2/translate.c index fc49a7101f..baa22c5101 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -924,7 +924,7 @@ void nios2_cpu_dump_state(CPUState *cs, FILE *f, int fl= ags) } } qemu_fprintf(f, " mmu write: VPN=3D%05X PID %02X TLBACC %08X\n", - env->mmu.pteaddr_wr & CR_PTEADDR_VPN_MASK, + env->mmu.pteaddr_wr & R_CR_PTEADDR_VPN_MASK, (env->mmu.tlbmisc_wr & CR_TLBMISC_PID_MASK) >> 4, env->mmu.tlbacc_wr); #endif --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650557973; cv=none; d=zohomail.com; s=zohoarc; b=EJrmWs9yIAuNVQyBwYq4t+3Lqt1K0VhrJvs0BwKzBIAz5p201iiUvvxt24ZD85sOKwjhZ8E4t0/6yD02Stoo54fFLStGlhFQxjn1RyLFz2UWYjb42CaS4uRv3oyfa6UqRlEb2eX7CLEsglaK4bJKSKcF7kXakxgNTQdY03FHn0Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650557973; 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=SnGYAMRPd2AIip4h6gfK80xy39D4M1+5zitHQBfnkAY=; b=SzjSkY8Db5sVMUSpS2rWM/77WCYrID6oVTEe3E3bM5WLEwa6j8281GOONQnzua5bEePuNbRWXUCZrD1S2G2jZqdxxq1lVriUuGng5ZRupRSGVlr4S+DVHPkVE1e6+C6zdmM+902hpj7Ezwtw08zIO8fPnqw6ngbYH+4dKvBRmgE= 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 1650557973242815.8386742104657; Thu, 21 Apr 2022 09:19:33 -0700 (PDT) Received: from localhost ([::1]:58112 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZWl-00061j-Ty for importer@patchew.org; Thu, 21 Apr 2022 12:19:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43048) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZa-0007mW-UW for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:22 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]:37521) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZZ-0006KS-4p for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:22 -0400 Received: by mail-pl1-x62b.google.com with SMTP id u15so1780057ple.4 for ; Thu, 21 Apr 2022 08:18:20 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.18.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:18:19 -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=SnGYAMRPd2AIip4h6gfK80xy39D4M1+5zitHQBfnkAY=; b=M7FOXBOVT1TJ7SoK4u0CebdLbsZGcs0gJ6t4WAcBbE7HCsl45UYBcnrSwOK96Z8AqS KLYcpkHNo7c8dKbSe35cM8AcxNQYnrZlcXuq7VCBJ5d7bnq+lklNCfZCUa5PNjKWUtRs K+aTlMp8TfIMQs0WvSIZc+rk3ucgtz3wZBaj2jSvaMWqk6tKttmvH+Q7tNbPGUUasZmX 1b1FgnfdLwwltGQYryLoppShTlqmIv443tsIVJOUoaG6PqtyreptQclyi0XB4h0kDzVk xO0DFt5J+a9vKLPbNsppkCf1uA9gIrKvEb58zhdgVChjeuI1WMLmQTtr4iO0uj2y86sI 9jnQ== 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=SnGYAMRPd2AIip4h6gfK80xy39D4M1+5zitHQBfnkAY=; b=FvXlIV0rSyLSPtQTTMR5g9hmMhuynjCElNBUGWq50tibBVW0fWKXAm6iLtvdd79G5L aqvz7zHqBqmwiMbS8tQL9tdBRUg6DbMGmyQycDh5ew1lFCbHCSvciKHxy+loiD0MBx3i J8REh4vs6DBELG27+chnWdywz/PD8g8BiVPqppDpCqkXHeIQSg+qM91a8uunyHBAdou4 +WOcOyHnvN877Ioqb7hV0fIQ7iMSvVcunCQIiiitRjOYG99NmHH9GPfDYV7VXcW5s6Za /svRFe01k6p4BUXWHvRj5oedF8rba8pVHVo5lIhcJMyMhzbFjqsXdRkG5DZCAsVuJMTg 1aSA== X-Gm-Message-State: AOAM533UQ7AG/kznwKrSy5k/g96KQx0tb5tIqKnGT7VdoFkuh2lP8mDn /s8LpdcMq9LIwQWRiK4CeLZGEJ4WKlityQ== X-Google-Smtp-Source: ABdhPJziX7UPro0p35BT2iro48El5alAzkomRN/8zhR0x0yJxM7bWt82zhacxpWR+K126vJdWH6Oxw== X-Received: by 2002:a17:90a:be16:b0:1cd:5aef:69e8 with SMTP id a22-20020a17090abe1600b001cd5aef69e8mr120478pjs.233.1650554299812; Thu, 21 Apr 2022 08:18:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 27/64] target/nios2: Use hw/registerfields.h for CR_TLBACC fields Date: Thu, 21 Apr 2022 08:16:58 -0700 Message-Id: <20220421151735.31996-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62b; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62b.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650557974299100003 Content-Type: text/plain; charset="utf-8" Retain the helper macros for single bit fields as aliases to the longer R_*_MASK names. Use FIELD_EX32 and FIELD_DP32 instead of manually manipulating the fields. Since we're rewriting the references to CR_TLBACC_IGN_* anyway, we correct the name of this field to IG, which is its name in the official CPU documentation. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/cpu.h | 23 +++++++++++++++-------- target/nios2/mmu.c | 16 ++++++++-------- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index 67ca62fc1f..11e9ed0063 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -115,14 +115,21 @@ FIELD(CR_PTEADDR, VPN, 2, 20) FIELD(CR_PTEADDR, PTBASE, 22, 10) =20 #define CR_TLBACC 9 -#define CR_TLBACC_IGN_SHIFT 25 -#define CR_TLBACC_IGN_MASK (0x7F << CR_TLBACC_IGN_SHIFT) -#define CR_TLBACC_C (1 << 24) -#define CR_TLBACC_R (1 << 23) -#define CR_TLBACC_W (1 << 22) -#define CR_TLBACC_X (1 << 21) -#define CR_TLBACC_G (1 << 20) -#define CR_TLBACC_PFN_MASK 0x000FFFFF + +FIELD(CR_TLBACC, PFN, 0, 20) +FIELD(CR_TLBACC, G, 20, 1) +FIELD(CR_TLBACC, X, 21, 1) +FIELD(CR_TLBACC, W, 22, 1) +FIELD(CR_TLBACC, R, 23, 1) +FIELD(CR_TLBACC, C, 24, 1) +FIELD(CR_TLBACC, IG, 25, 7) + +#define CR_TLBACC_C R_CR_TLBACC_C_MASK +#define CR_TLBACC_R R_CR_TLBACC_R_MASK +#define CR_TLBACC_W R_CR_TLBACC_W_MASK +#define CR_TLBACC_X R_CR_TLBACC_X_MASK +#define CR_TLBACC_G R_CR_TLBACC_G_MASK + #define CR_TLBMISC 10 #define CR_TLBMISC_WAY_SHIFT 20 #define CR_TLBMISC_WAY_MASK (0xF << CR_TLBMISC_WAY_SHIFT) diff --git a/target/nios2/mmu.c b/target/nios2/mmu.c index 75afc56daf..826cd2afb4 100644 --- a/target/nios2/mmu.c +++ b/target/nios2/mmu.c @@ -49,7 +49,7 @@ unsigned int mmu_translate(CPUNios2State *env, } =20 lu->vaddr =3D vaddr & TARGET_PAGE_MASK; - lu->paddr =3D (entry->data & CR_TLBACC_PFN_MASK) << TARGET_PAGE_BI= TS; + lu->paddr =3D FIELD_EX32(entry->data, CR_TLBACC, PFN) << TARGET_PA= GE_BITS; 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); @@ -86,27 +86,27 @@ void helper_mmu_write_tlbacc(CPUNios2State *env, uint32= _t v) CPUState *cs =3D env_cpu(env); Nios2CPU *cpu =3D env_archcpu(env); =20 - trace_nios2_mmu_write_tlbacc(v >> CR_TLBACC_IGN_SHIFT, + trace_nios2_mmu_write_tlbacc(FIELD_EX32(v, CR_TLBACC, IG), (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); + FIELD_EX32(v, CR_TLBACC, PFN)); =20 /* if tlbmisc.WE =3D=3D 1 then trigger a TLB write on writes to TLBACC= */ if (env->ctrl[CR_TLBMISC] & CR_TLBMISC_WR) { int way =3D (env->ctrl[CR_TLBMISC] >> CR_TLBMISC_WAY_SHIFT); int vpn =3D FIELD_EX32(env->mmu.pteaddr_wr, CR_PTEADDR, VPN); 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; + int g =3D FIELD_EX32(v, CR_TLBACC, G); + int valid =3D FIELD_EX32(vpn, CR_TLBACC, PFN) < 0xC0000; 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); + CR_TLBACC_X | R_CR_TLBACC_PFN_MASK); =20 if ((entry->tag !=3D newTag) || (entry->data !=3D newData)) { if (entry->tag & (1 << 10)) { @@ -153,7 +153,7 @@ void helper_mmu_write_tlbmisc(CPUNios2State *env, uint3= 2_t v) &env->mmu.tlb[(way * cpu->tlb_num_ways) + (vpn & env->mmu.tlb_entry_mask)]; =20 - env->ctrl[CR_TLBACC] &=3D CR_TLBACC_IGN_MASK; + env->ctrl[CR_TLBACC] &=3D R_CR_TLBACC_IG_MASK; env->ctrl[CR_TLBACC] |=3D entry->data; env->ctrl[CR_TLBACC] |=3D (entry->tag & (1 << 11)) ? CR_TLBACC_G := 0; env->ctrl[CR_TLBMISC] =3D @@ -208,7 +208,7 @@ void dump_mmu(CPUNios2State *env) entry->tag >> 12, entry->tag & ((1 << cpu->pid_num_bits) - 1), (entry->tag & (1 << 11)) ? 'G' : '-', - entry->data & CR_TLBACC_PFN_MASK, + FIELD_EX32(entry->data, CR_TLBACC, PFN), (entry->data & CR_TLBACC_C) ? 'C' : '-', (entry->data & CR_TLBACC_R) ? 'R' : '-', (entry->data & CR_TLBACC_W) ? 'W' : '-', --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650556283; cv=none; d=zohomail.com; s=zohoarc; b=WNDT6Nop/iX2EE4XCI3X5vTB6zMuOFK7ZVMe/5eK2WJKbLaDk17v8g9dSMXFnmvVFIB+pVfItoSJNINXidXhTk0bfFNLxnCMUjXhv2voO6tqhKh8M0OWqHINu3JrlaryBQ6zs7BK/BskYQLdOc09ZncfMplM0KBVV3YyiPnqHuQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650556283; 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=68QqpgbiFenP+bCAvimHsM0XhqPvZSmZ1iVcz6k5Kxg=; b=nsnEfwe3MzHfdgZZrio1/7msWi+pmFDkkIIHVf/fOhWHGXMQkGVm2m+meXP/9m8rIgScKLWBqpO74ulq3cDh5xtKUOGbAHk+E0XOP1BoXThbfpxCSmdtk3/3Yz38bvL6na4uLjmOkA8z5xhLEX2s/BePJLqmCXsIDOdHgHm1eCI= 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 1650556283203279.266181232671; Thu, 21 Apr 2022 08:51:23 -0700 (PDT) Received: from localhost ([::1]:51924 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZ5W-0007fv-2j for importer@patchew.org; Thu, 21 Apr 2022 11:51:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43082) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZd-0007uG-2H for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:25 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]:36658) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZb-0006Kk-Co for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:24 -0400 Received: by mail-pl1-x631.google.com with SMTP id q3so5180610plg.3 for ; Thu, 21 Apr 2022 08:18:22 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.18.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:18:21 -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=68QqpgbiFenP+bCAvimHsM0XhqPvZSmZ1iVcz6k5Kxg=; b=T1EmAdPR2gQScWXq9frBCwn6rhPgVxo3sUIT3OEjsQskWL8NKizEetCJhJ38EOvKeY pJVT5evIV87anRuaB/BPeJfqjExMGhEmhHeCgU23POFZCJ08+yjOy7qnq9Dl9/GxXt5Z cP3d3a48FYrdSFiMhHQyPQKvwM24j3MjRxzWKkNnHAUDbqT0rlonJkJPAiUW8k7SxAva jpzA0bLwGtvDIq9m9lq3tw52Ra0y9GW5Rp3BcnW2AVIvSJ6z8VJIBhJ7VhSk6lZfDbne Cav7ucApOJn89+wnMtmAzgq4cgTDE2Oxmvrg9906Ikl4G0MtHBSZmeSwvaSVu+imv/NI unpg== 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=68QqpgbiFenP+bCAvimHsM0XhqPvZSmZ1iVcz6k5Kxg=; b=n/IgG+fpMA+WQHVAcyCporON1j+db8FuOJohG0FCymWC1wGlN1s/U/HlCxixbeZO0J dIRGnX2rjGCQuZX9je3gVG6Ebp84wMtAxphZieZ9lWbtR+9qwwBy6tfAeIqUWT08wvi2 /WelTersaImYCZFZKyv9TTw0XCGFKN7wZYF5eFbrJBOgiVpPfqaaDCsahgd6L3EHu5rz 3dLN/JfqoxkNHhPCUsgHVwamy7wQcz3nes+ls8bGV+C93iS0/ILoiCTNE//wxo4FWhEe faAYlDaASczldQzObmY1vTOI6n/rOKxw+Lm8yxtVaP+YDzsa/6TilDL8+19LHM77FQ27 YZFA== X-Gm-Message-State: AOAM530bR4eH3KwyBfVDZSnM4wF2UI+QuZTlWUUkp2cEMSmiH30SXtvB lahUErAIDZM8dpeQ8PIhxcxY5fT1dTXAqw== X-Google-Smtp-Source: ABdhPJw9nm3e2tvBPqZjt6svHUW5YM2LrNaJVn5xdYA1OUMrFBB8ZI9amtT7SBtXgOJQLRaeXb3rww== X-Received: by 2002:a17:902:6ac9:b0:156:a6ae:8806 with SMTP id i9-20020a1709026ac900b00156a6ae8806mr26075992plt.148.1650554301664; Thu, 21 Apr 2022 08:18:21 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 28/64] target/nios2: Rename CR_TLBMISC_WR to CR_TLBMISC_WE Date: Thu, 21 Apr 2022 08:16:59 -0700 Message-Id: <20220421151735.31996-29-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x631.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650556284557100001 Content-Type: text/plain; charset="utf-8" WE is the architectural name of the field, not WR. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/cpu.h | 2 +- target/nios2/helper.c | 4 ++-- target/nios2/mmu.c | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index 11e9ed0063..54b592c422 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -134,7 +134,7 @@ FIELD(CR_TLBACC, IG, 25, 7) #define CR_TLBMISC_WAY_SHIFT 20 #define CR_TLBMISC_WAY_MASK (0xF << CR_TLBMISC_WAY_SHIFT) #define CR_TLBMISC_RD (1 << 19) -#define CR_TLBMISC_WR (1 << 18) +#define CR_TLBMISC_WE (1 << 18) #define CR_TLBMISC_PID_SHIFT 4 #define CR_TLBMISC_PID_MASK (0x3FFF << CR_TLBMISC_PID_SHIFT) #define CR_TLBMISC_DBL (1 << 3) diff --git a/target/nios2/helper.c b/target/nios2/helper.c index c2d0afe1b6..31d83e0291 100644 --- a/target/nios2/helper.c +++ b/target/nios2/helper.c @@ -69,7 +69,7 @@ void nios2_cpu_do_interrupt(CPUState *cs) cs->exception_index); =20 env->ctrl[CR_TLBMISC] &=3D ~CR_TLBMISC_DBL; - env->ctrl[CR_TLBMISC] |=3D CR_TLBMISC_WR; + env->ctrl[CR_TLBMISC] |=3D CR_TLBMISC_WE; =20 env->regs[R_EA] =3D env->pc + 4; env->pc =3D cpu->fast_tlb_miss_addr; @@ -104,7 +104,7 @@ void nios2_cpu_do_interrupt(CPUState *cs) cs->exception_index); =20 if ((env->ctrl[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { - env->ctrl[CR_TLBMISC] |=3D CR_TLBMISC_WR; + env->ctrl[CR_TLBMISC] |=3D CR_TLBMISC_WE; } =20 env->regs[R_EA] =3D env->pc + 4; diff --git a/target/nios2/mmu.c b/target/nios2/mmu.c index 826cd2afb4..0f33ea5e04 100644 --- a/target/nios2/mmu.c +++ b/target/nios2/mmu.c @@ -95,7 +95,7 @@ void helper_mmu_write_tlbacc(CPUNios2State *env, uint32_t= v) FIELD_EX32(v, CR_TLBACC, PFN)); =20 /* if tlbmisc.WE =3D=3D 1 then trigger a TLB write on writes to TLBACC= */ - if (env->ctrl[CR_TLBMISC] & CR_TLBMISC_WR) { + if (env->ctrl[CR_TLBMISC] & CR_TLBMISC_WE) { int way =3D (env->ctrl[CR_TLBMISC] >> CR_TLBMISC_WAY_SHIFT); int vpn =3D FIELD_EX32(env->mmu.pteaddr_wr, CR_PTEADDR, VPN); int pid =3D (env->mmu.tlbmisc_wr & CR_TLBMISC_PID_MASK) >> 4; @@ -133,7 +133,7 @@ void helper_mmu_write_tlbmisc(CPUNios2State *env, uint3= 2_t v) =20 trace_nios2_mmu_write_tlbmisc(v >> CR_TLBMISC_WAY_SHIFT, (v & CR_TLBMISC_RD) ? 'R' : '.', - (v & CR_TLBMISC_WR) ? 'W' : '.', + (v & CR_TLBMISC_WE) ? 'W' : '.', (v & CR_TLBMISC_DBL) ? '2' : '.', (v & CR_TLBMISC_BAD) ? 'B' : '.', (v & CR_TLBMISC_PERM) ? 'P' : '.', --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650558137; cv=none; d=zohomail.com; s=zohoarc; b=kZp8n7SiaZGvgjbNwCy/US90Bt5TJBHKQSfq+H6TdV4jFv0FHaLb7tIeZH6KyKQy+zelDG6ha8KslxcYKEoLw5wVxlNCy7gwdLtQgaLu9osP58v7NytDQvhY0ZsQZjDS+iVIo9hh6Dd9wN+r+ZR+DqmP2bN+rfSniQUGJU82jNo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650558137; 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=r91YNURcl3OsfIz0k5J10dSPdewEyH2V8uCqRyhHlGU=; b=glSh/Havv4ptYCXHeWDN9mSP6ELpk71rz2/XXSL2oc2FHwbzcAgjIu7VTFFyepg3tXf+iOBBrcctlszssjaZraKjMzXgWEjZgjVk102UhvFYA0rVOkc80zmsVv8kECNazVHKT+L8qIAXtooCHrElbbGLMDa4NZFAAhYTo//ol2Y= 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 1650558137941276.26892820889384; Thu, 21 Apr 2022 09:22:17 -0700 (PDT) Received: from localhost ([::1]:38062 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZZP-0003Ob-Sk for importer@patchew.org; Thu, 21 Apr 2022 12:22:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43108) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZe-0007zw-Nx for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:26 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]:40768) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZc-0006L6-N2 for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:26 -0400 Received: by mail-pl1-x634.google.com with SMTP id t12so5163689pll.7 for ; Thu, 21 Apr 2022 08:18:24 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.18.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:18:22 -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=r91YNURcl3OsfIz0k5J10dSPdewEyH2V8uCqRyhHlGU=; b=BUi0cdHDnRq0rFpBKFQ9NjTgRcahaeE7EqOBvWIpBUTeH6jb3PYcj+ZEZsTODkk0k6 1Et2qdm4Up+3eGeNdFxg1IOlbHeaqLrgK15pNacyVzBoDbs1fFf5iIe2pqj4H8T3BFGQ e60iMqU830PcWCK6TVaPGn6lT9pfiOLOUBZarR2c/5RbxVYS0ufAoKAtPnnqwQfjdKGW nAHGU7rAx51KHqn2AcXJA5sxtyQ62BLgwAgbHz9uU+yrc9fRkL8AAaJ1w5yp4Tj/8ba8 fZXx2/DgZlA4SbbTTNHD/e9KPR+YYkJaKSZ0zJ+rZy1RpcOuCE5i3LlTetlV5k4Pf3kA dZ3A== 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=r91YNURcl3OsfIz0k5J10dSPdewEyH2V8uCqRyhHlGU=; b=teyzbhVn09TesXSbSIV0tsMybXUU/I1c/B9bSwnlrTzgDWrTsR1oAUktDG5T5yhvpg 5UseMJ8guvMDm2/i5/fGSY5QtLIXznTnL12O3+a3yu8IskSTHPm22XFiINZhyjl2zr26 JZN9qVpv2ixUhK+lQhC2IDnoYnGJLm1wWhiRBHZTw44fmnvK4bvyaN45MP8RHuHr7Vbc uocg6vUH6AaTJRygjwNoWYn2JZ5BGoKKSM2lNBC+ZmOoSSXPXG1xoMOs5QX9Li9v+gD1 /wARt7xurL5oHBmAgPMPcxXOXjg2JiSFxdyqGRnpwRWYp5y5uAw6oK0IolTvb/zX180P tMdQ== X-Gm-Message-State: AOAM530doFM7etvrXi7tJFVYq1yZ1pALyWznQDXQ0cM4ROqB/mUYwaZt M35fQ/Sha8wnDN7NcyuGYsWFFEqF8TZP1g== X-Google-Smtp-Source: ABdhPJxM0+ZOAdo+RFInoUYoZrvo2QEFP1uAGxR3o5E5p0rLdQq6KOx6lmbZrwPNZ94j5JhvA6vZAA== X-Received: by 2002:a17:902:7789:b0:156:8b5c:606f with SMTP id o9-20020a170902778900b001568b5c606fmr46920pll.100.1650554303416; Thu, 21 Apr 2022 08:18:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 29/64] target/nios2: Use hw/registerfields.h for CR_TLBMISC fields Date: Thu, 21 Apr 2022 08:17:00 -0700 Message-Id: <20220421151735.31996-30-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x634.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650558139241100001 Content-Type: text/plain; charset="utf-8" Use FIELD_EX32 and FIELD_DP32 instead of managing the masking by hand. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/cpu.h | 29 +++++++++++++++++++---------- target/nios2/helper.c | 7 ++----- target/nios2/mmu.c | 35 +++++++++++++++++------------------ target/nios2/translate.c | 2 +- 4 files changed, 39 insertions(+), 34 deletions(-) diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index 54b592c422..ec34cebf72 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -131,16 +131,25 @@ FIELD(CR_TLBACC, IG, 25, 7) #define CR_TLBACC_G R_CR_TLBACC_G_MASK =20 #define CR_TLBMISC 10 -#define CR_TLBMISC_WAY_SHIFT 20 -#define CR_TLBMISC_WAY_MASK (0xF << CR_TLBMISC_WAY_SHIFT) -#define CR_TLBMISC_RD (1 << 19) -#define CR_TLBMISC_WE (1 << 18) -#define CR_TLBMISC_PID_SHIFT 4 -#define CR_TLBMISC_PID_MASK (0x3FFF << CR_TLBMISC_PID_SHIFT) -#define CR_TLBMISC_DBL (1 << 3) -#define CR_TLBMISC_BAD (1 << 2) -#define CR_TLBMISC_PERM (1 << 1) -#define CR_TLBMISC_D (1 << 0) + +FIELD(CR_TLBMISC, D, 0, 1) +FIELD(CR_TLBMISC, PERM, 1, 1) +FIELD(CR_TLBMISC, BAD, 2, 1) +FIELD(CR_TLBMISC, DBL, 3, 1) +FIELD(CR_TLBMISC, PID, 4, 14) +FIELD(CR_TLBMISC, WE, 18, 1) +FIELD(CR_TLBMISC, RD, 19, 1) +FIELD(CR_TLBMISC, WAY, 20, 4) +FIELD(CR_TLBMISC, EE, 24, 1) + +#define CR_TLBMISC_EE R_CR_TLBMISC_EE_MASK +#define CR_TLBMISC_RD R_CR_TLBMISC_RD_MASK +#define CR_TLBMISC_WE R_CR_TLBMISC_WE_MASK +#define CR_TLBMISC_DBL R_CR_TLBMISC_DBL_MASK +#define CR_TLBMISC_BAD R_CR_TLBMISC_BAD_MASK +#define CR_TLBMISC_PERM R_CR_TLBMISC_PERM_MASK +#define CR_TLBMISC_D R_CR_TLBMISC_D_MASK + #define CR_ENCINJ 11 #define CR_BADADDR 12 #define CR_CONFIG 13 diff --git a/target/nios2/helper.c b/target/nios2/helper.c index 31d83e0291..a56aaaea18 100644 --- a/target/nios2/helper.c +++ b/target/nios2/helper.c @@ -281,11 +281,8 @@ bool nios2_cpu_tlb_fill(CPUState *cs, vaddr address, i= nt size, return false; } =20 - if (access_type =3D=3D MMU_INST_FETCH) { - env->ctrl[CR_TLBMISC] &=3D ~CR_TLBMISC_D; - } else { - env->ctrl[CR_TLBMISC] |=3D CR_TLBMISC_D; - } + env->ctrl[CR_TLBMISC] =3D FIELD_DP32(env->ctrl[CR_TLBMISC], CR_TLBMISC= , D, + access_type !=3D MMU_INST_FETCH); env->ctrl[CR_PTEADDR] =3D FIELD_DP32(env->ctrl[CR_PTEADDR], CR_PTEADDR= , VPN, address >> TARGET_PAGE_BITS); env->mmu.pteaddr_wr =3D env->ctrl[CR_PTEADDR]; diff --git a/target/nios2/mmu.c b/target/nios2/mmu.c index 0f33ea5e04..d9b690b78e 100644 --- a/target/nios2/mmu.c +++ b/target/nios2/mmu.c @@ -33,7 +33,7 @@ unsigned int mmu_translate(CPUNios2State *env, target_ulong vaddr, int rw, int mmu_idx) { Nios2CPU *cpu =3D env_archcpu(env); - int pid =3D (env->mmu.tlbmisc_wr & CR_TLBMISC_PID_MASK) >> 4; + int pid =3D FIELD_EX32(env->mmu.tlbmisc_wr, CR_TLBMISC, PID); int vpn =3D vaddr >> 12; int way, n_ways =3D cpu->tlb_num_ways; =20 @@ -96,9 +96,9 @@ void helper_mmu_write_tlbacc(CPUNios2State *env, uint32_t= v) =20 /* if tlbmisc.WE =3D=3D 1 then trigger a TLB write on writes to TLBACC= */ if (env->ctrl[CR_TLBMISC] & CR_TLBMISC_WE) { - int way =3D (env->ctrl[CR_TLBMISC] >> CR_TLBMISC_WAY_SHIFT); + int way =3D FIELD_EX32(env->ctrl[CR_TLBMISC], CR_TLBMISC, WAY); int vpn =3D FIELD_EX32(env->mmu.pteaddr_wr, CR_PTEADDR, VPN); - int pid =3D (env->mmu.tlbmisc_wr & CR_TLBMISC_PID_MASK) >> 4; + int pid =3D FIELD_EX32(env->mmu.tlbmisc_wr, CR_TLBMISC, PID); int g =3D FIELD_EX32(v, CR_TLBACC, G); int valid =3D FIELD_EX32(vpn, CR_TLBACC, PFN) < 0xC0000; Nios2TLBEntry *entry =3D @@ -117,10 +117,9 @@ void helper_mmu_write_tlbacc(CPUNios2State *env, uint3= 2_t v) entry->data =3D newData; } /* Auto-increment tlbmisc.WAY */ - env->ctrl[CR_TLBMISC] =3D - (env->ctrl[CR_TLBMISC] & ~CR_TLBMISC_WAY_MASK) | - (((way + 1) & (cpu->tlb_num_ways - 1)) << - CR_TLBMISC_WAY_SHIFT); + env->ctrl[CR_TLBMISC] =3D FIELD_DP32(env->ctrl[CR_TLBMISC], + CR_TLBMISC, WAY, + (way + 1) & (cpu->tlb_num_ways = - 1)); } =20 /* Writes to TLBACC don't change the read-back value */ @@ -130,24 +129,25 @@ void helper_mmu_write_tlbacc(CPUNios2State *env, uint= 32_t v) void helper_mmu_write_tlbmisc(CPUNios2State *env, uint32_t v) { Nios2CPU *cpu =3D env_archcpu(env); + uint32_t new_pid =3D FIELD_EX32(v, CR_TLBMISC, PID); + uint32_t old_pid =3D FIELD_EX32(env->mmu.tlbmisc_wr, CR_TLBMISC, PID); + uint32_t way =3D FIELD_EX32(v, CR_TLBMISC, WAY); =20 - trace_nios2_mmu_write_tlbmisc(v >> CR_TLBMISC_WAY_SHIFT, + trace_nios2_mmu_write_tlbmisc(way, (v & CR_TLBMISC_RD) ? 'R' : '.', (v & CR_TLBMISC_WE) ? '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); + new_pid); =20 - 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 (new_pid !=3D old_pid) { + mmu_flush_pid(env, old_pid); } + /* 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 FIELD_EX32(env->mmu.pteaddr_wr, CR_PTEADDR, VPN); Nios2TLBEntry *entry =3D &env->mmu.tlb[(way * cpu->tlb_num_ways) + @@ -156,10 +156,9 @@ void helper_mmu_write_tlbmisc(CPUNios2State *env, uint= 32_t v) env->ctrl[CR_TLBACC] &=3D R_CR_TLBACC_IG_MASK; env->ctrl[CR_TLBACC] |=3D entry->data; env->ctrl[CR_TLBACC] |=3D (entry->tag & (1 << 11)) ? CR_TLBACC_G := 0; - env->ctrl[CR_TLBMISC] =3D - (v & ~CR_TLBMISC_PID_MASK) | - ((entry->tag & ((1 << cpu->pid_num_bits) - 1)) << - CR_TLBMISC_PID_SHIFT); + env->ctrl[CR_TLBMISC] =3D FIELD_DP32(v, CR_TLBMISC, PID, + entry->tag & + ((1 << cpu->pid_num_bits) - 1)); env->ctrl[CR_PTEADDR] =3D FIELD_DP32(env->ctrl[CR_PTEADDR], CR_PTEADDR, VPN, entry->tag >> TARGET_PAGE_BITS); diff --git a/target/nios2/translate.c b/target/nios2/translate.c index baa22c5101..4191db1342 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -925,7 +925,7 @@ void nios2_cpu_dump_state(CPUState *cs, FILE *f, int fl= ags) } qemu_fprintf(f, " mmu write: VPN=3D%05X PID %02X TLBACC %08X\n", env->mmu.pteaddr_wr & R_CR_PTEADDR_VPN_MASK, - (env->mmu.tlbmisc_wr & CR_TLBMISC_PID_MASK) >> 4, + FIELD_EX32(env->mmu.tlbmisc_wr, CR_TLBMISC, PID), env->mmu.tlbacc_wr); #endif qemu_fprintf(f, "\n\n"); --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650555942; cv=none; d=zohomail.com; s=zohoarc; b=LFIPTbF6Y+Tf9c+6B/H8Tlv1/tsR5Y18d2mLqHxBDNxf2ufc3NSh8cQSPbnlAupbRxSfIrlm0qeIPBnCFOZ7qAmRO3DiS+rB2jBpd984WeC+RBOfF3m8H/AmsZ2awWl7Ry+KGg8Ki+dpopB3Drcemk/sTn3pKOXLvAWJF1DgX/E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650555942; 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=cQhtYMOQ4P6+FRrXAyEfBDvvJctbpvHCjlgSizfQcf0=; b=Detibg3bFFWsffWH/ngAiA6d6+pvS7f2dCxIDb+7s9tXU8yyXTbCIi9uvGyDOQ5UZeP8ljzS7YIsseu9cCtIK/pGgo9LuJDWS+jDXjNf5w7yhplCgHzjOUiRt9se6NgthyrQITH4u6onFU+OUUyQWWudujUiiESeTfhUKnwle6A= 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 1650555942452249.22820512966837; Thu, 21 Apr 2022 08:45:42 -0700 (PDT) Received: from localhost ([::1]:59532 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZ00-0002HR-Uv for importer@patchew.org; Thu, 21 Apr 2022 11:45:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43136) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZg-00083W-U0 for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:28 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]:34661) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZe-0006LM-8e for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:28 -0400 Received: by mail-pl1-x630.google.com with SMTP id n8so5190051plh.1 for ; Thu, 21 Apr 2022 08:18:25 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.18.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:18:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=cQhtYMOQ4P6+FRrXAyEfBDvvJctbpvHCjlgSizfQcf0=; b=OQghtm0QZj3+HHxppmQLe/atZnV8fSiPT3ObAQzCpWF878cPhaBVE1IODr/7NfOVJ3 evOcmh9mv0OK35PyH+j8r2GdlgD6E59FyCfcjj7SG6ZR6Rx9fRwjhBUtJrbZ2F1tG7TZ 8wdhrL0xqRPUmI7tW/aBYOyXwYfMUgZ+yNajooy/IBooLDXL1HQT1U8lx3X5xeWQNUSA dGUq+fo61HvFEVkX9JjqChldODyceDzGB9zptEsvUQD/WT7ET0rSQk3uQUxg19L/NOWf bE7yinRuSTBZPlNFnTUTUdwgd0bg03HXdv/9THbXDmlENEALTIqZn2nkEpO76UginCn5 W7eQ== 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=cQhtYMOQ4P6+FRrXAyEfBDvvJctbpvHCjlgSizfQcf0=; b=LZdAl1vMTbtcGRaSyoSCxMTtC3zRRj5zciTbu59JZtvDeYkmpk1vOp6+hmBjtiHTym MYpeD5kHTfyVprCDUI0FdEZQ2c4hr4/zZtK1G9sJP+JDFoXDjq2mJThB8nyA7ksYmQf+ 1WVDwo/LaEvCWGAmYckx2yVAK+6yba+LsmXJ4C9YRdiowMhpY/nYxQum8TC1A2UcXsXd NG/Ank0/hkMjxrCLSHIJscF5+n6bZSriOxhPBLt45i2fGQrLClRjFK1tGlNDDZ02XTpB tYuhFkUOhdRxzmm7QzhFBEiFk5nkJj8CQeWfSG23B3gpdbI2mgtJTUHRKaeHTkKvKoQX U8Vw== X-Gm-Message-State: AOAM532Yg5qrCnCcodnu/UtEPj9bnGkh5AoI9f91x4alMqVgRoJqHICY g1iwpmHO8b1DZdcBUFa6LuWcgt2D+SKq7A== X-Google-Smtp-Source: ABdhPJx/JM4wG9GhtQXy24SIC67hKQBTKpvgJIxhQ/d6s/pkY5Kjd2ejGvtE/e3gnmYGfMxPA92keA== X-Received: by 2002:a17:90a:9416:b0:1ca:9cff:7877 with SMTP id r22-20020a17090a941600b001ca9cff7877mr10908058pjo.141.1650554304964; Thu, 21 Apr 2022 08:18:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 30/64] target/nios2: Move R_FOO and CR_BAR into enumerations Date: Thu, 21 Apr 2022 08:17:01 -0700 Message-Id: <20220421151735.31996-31-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+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: -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, T_SCC_BODY_TEXT_LINE=-0.01, UPPERCASE_50_75=0.008 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650555944546100001 Content-Type: text/plain; charset="utf-8" These symbols become available to the debugger. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/cpu.h | 72 ++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 37 deletions(-) diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index ec34cebf72..1998a16940 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -61,25 +61,43 @@ struct Nios2CPUClass { #define NUM_CR_REGS 32 =20 /* General purpose register aliases */ -#define R_ZERO 0 -#define R_AT 1 -#define R_RET0 2 -#define R_RET1 3 -#define R_ARG0 4 -#define R_ARG1 5 -#define R_ARG2 6 -#define R_ARG3 7 -#define R_ET 24 -#define R_BT 25 -#define R_GP 26 -#define R_SP 27 -#define R_FP 28 -#define R_EA 29 -#define R_BA 30 -#define R_RA 31 +enum { + R_ZERO =3D 0, + R_AT =3D 1, + R_RET0 =3D 2, + R_RET1 =3D 3, + R_ARG0 =3D 4, + R_ARG1 =3D 5, + R_ARG2 =3D 6, + R_ARG3 =3D 7, + R_ET =3D 24, + R_BT =3D 25, + R_GP =3D 26, + R_SP =3D 27, + R_FP =3D 28, + R_EA =3D 29, + R_BA =3D 30, + R_RA =3D 31, +}; =20 /* Control register aliases */ -#define CR_STATUS 0 +enum { + CR_STATUS =3D 0, + CR_ESTATUS =3D 1, + CR_BSTATUS =3D 2, + CR_IENABLE =3D 3, + CR_IPENDING =3D 4, + CR_CPUID =3D 5, + CR_EXCEPTION =3D 7, + CR_PTEADDR =3D 8, + CR_TLBACC =3D 9, + CR_TLBMISC =3D 10, + CR_ENCINJ =3D 11, + CR_BADADDR =3D 12, + CR_CONFIG =3D 13, + CR_MPUBASE =3D 14, + CR_MPUACC =3D 15, +}; =20 FIELD(CR_STATUS, PIE, 0, 1) FIELD(CR_STATUS, U, 1, 1) @@ -98,24 +116,12 @@ FIELD(CR_STATUS, RSIE, 23, 1) #define CR_STATUS_NMI R_CR_STATUS_NMI_MASK #define CR_STATUS_RSIE R_CR_STATUS_RSIE_MASK =20 -#define CR_ESTATUS 1 -#define CR_BSTATUS 2 -#define CR_IENABLE 3 -#define CR_IPENDING 4 -#define CR_CPUID 5 -#define CR_CTL6 6 -#define CR_EXCEPTION 7 - FIELD(CR_EXCEPTION, CAUSE, 2, 5) FIELD(CR_EXCEPTION, ECCFTL, 31, 1) =20 -#define CR_PTEADDR 8 - FIELD(CR_PTEADDR, VPN, 2, 20) FIELD(CR_PTEADDR, PTBASE, 22, 10) =20 -#define CR_TLBACC 9 - FIELD(CR_TLBACC, PFN, 0, 20) FIELD(CR_TLBACC, G, 20, 1) FIELD(CR_TLBACC, X, 21, 1) @@ -130,8 +136,6 @@ FIELD(CR_TLBACC, IG, 25, 7) #define CR_TLBACC_X R_CR_TLBACC_X_MASK #define CR_TLBACC_G R_CR_TLBACC_G_MASK =20 -#define CR_TLBMISC 10 - FIELD(CR_TLBMISC, D, 0, 1) FIELD(CR_TLBMISC, PERM, 1, 1) FIELD(CR_TLBMISC, BAD, 2, 1) @@ -150,12 +154,6 @@ FIELD(CR_TLBMISC, EE, 24, 1) #define CR_TLBMISC_PERM R_CR_TLBMISC_PERM_MASK #define CR_TLBMISC_D R_CR_TLBMISC_D_MASK =20 -#define CR_ENCINJ 11 -#define CR_BADADDR 12 -#define CR_CONFIG 13 -#define CR_MPUBASE 14 -#define CR_MPUACC 15 - /* Exceptions */ #define EXCP_BREAK 0x1000 #define EXCP_RESET 0 --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650556500; cv=none; d=zohomail.com; s=zohoarc; b=VRuG7iJe52kS/Lpsc12Rc12ln9fNvn2n+qm1yEziIGfgc7zjaioQjM7rsyI/M//oK9gabK4S7bX6qNOSLjI87QIBTZltYFThXOgud0Byynycy0n8xAFtjuHnphUGO1idenFYBxgoxxinwXysmllHccKJTE2we/h5pk06+3DqjsM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650556500; 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=MKlth30hb0JDpCAkuU+AtSK9JdNhBrNjhcXkx0wo6j8=; b=ROB33HrWrX6lYoX5Yav9ofYXwuOI8i+9CGBmZDN6fR38NDvoHzLRZBy9TeoEylFgUWBEItYCOUl9aUVHuc7ddOT2u+pxAU1KPtYZ33Z82iUJtXALnzAbmejQBwPkb0E9R6MHY8gqaSEKD6XRqn9n750bBPNXwnQ8jh/ctJ/8U3c= 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 1650556500161993.5600505781507; Thu, 21 Apr 2022 08:55:00 -0700 (PDT) Received: from localhost ([::1]:60528 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZ91-0006M4-3w for importer@patchew.org; Thu, 21 Apr 2022 11:54:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43172) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZi-00087I-Nk for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:30 -0400 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]:42762) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZh-0006Lr-4c for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:30 -0400 Received: by mail-pf1-x435.google.com with SMTP id j17so5287412pfi.9 for ; Thu, 21 Apr 2022 08:18:28 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.18.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:18:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=MKlth30hb0JDpCAkuU+AtSK9JdNhBrNjhcXkx0wo6j8=; b=kIBmr4o6br2U5i37kFg951yAk6ajch/nfb8+p7e5r+0e1jbFDgD6N1lVpF5D3mY2Xv MOppHgb0P4c4zPamoPp2fYLI0uHq0NQtGtb/oE+U46kl2mjtcyzoo3E1RlouE2XeMoaJ JfRzzt2aei+zeHSGySdL8pNiZmkFd1XswlflJKpuPYHp8Gym0UDOYpmEow0UdpVoBWrx 6UtmAYU0vQuZnNnHqc4ICrsSerp9cWPvyobO5IR0bgp1stmwl+2WfZtz2KnIuTXGitjb 42PY4XIzAJatNFuuUoGyzJN5L8ZfJzR8Qo3o+gd9g0CeLzzUZfGBG4X2A9lft/tDGW1+ Ls7Q== 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=MKlth30hb0JDpCAkuU+AtSK9JdNhBrNjhcXkx0wo6j8=; b=wNtN09TF06BmVORVKCl61rmw2qB1WSiRxSY8ywQDZZ34YixyR9loeDWvtdx1GsMqVk Wf4Og2KN3GzUGxrRg4LoxPQOtYMM9q9om7UQG5L4zXDekeFUow3QAhxLn2o6eZTnS23H 7eMvkdjMS0zT0vXKwxxFg90wGy2YDZlNg98Jn/lXQmUKIKMg5Y7e/0Ysnstuo1+dji6O o7ob9avFWcRPrCVe4cBkjvQSaxF/I4agcDo8fFmUb+FpDLArwKaRw3yWLxDyIUrThU7O mLW9jkRVxZmipeUgR/01+xlUuEdI/Oz7i1KGDYOxdujpajEw4xcWVp+o2pdV0fShmil/ QLrA== X-Gm-Message-State: AOAM533Q73aJrzkGkRn7AOwGB0P5jcJJnwfVry7SoxTsjSBFI2Lxk8qc YeGRl7t14rl5Eua7p5RH2RYRC2PsnrHNMA== X-Google-Smtp-Source: ABdhPJxEkxvLHh0HV4A1G9fGlTAyyggHJ+eOoWBRVPpFtGU3cuoaTcsi8lwEe5G/SNoDbFfz1dpmGg== X-Received: by 2002:a63:d10d:0:b0:39c:d17a:7b08 with SMTP id k13-20020a63d10d000000b0039cd17a7b08mr24014360pgg.180.1650554306338; Thu, 21 Apr 2022 08:18:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 31/64] target/nios2: Create EXCP_SEMIHOST for semi-hosting Date: Thu, 21 Apr 2022 08:17:02 -0700 Message-Id: <20220421151735.31996-32-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650556501930100001 Content-Type: text/plain; charset="utf-8" Decode 'break 1' during translation, rather than doing it again during exception processing. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/cpu.h | 1 + target/nios2/helper.c | 14 ++++++-------- target/nios2/translate.c | 17 ++++++++++++++++- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index 1998a16940..9e82100a1f 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -156,6 +156,7 @@ FIELD(CR_TLBMISC, EE, 24, 1) =20 /* Exceptions */ #define EXCP_BREAK 0x1000 +#define EXCP_SEMIHOST 0x1001 #define EXCP_RESET 0 #define EXCP_PRESET 1 #define EXCP_IRQ 2 diff --git a/target/nios2/helper.c b/target/nios2/helper.c index a56aaaea18..1d17c0379f 100644 --- a/target/nios2/helper.c +++ b/target/nios2/helper.c @@ -152,14 +152,6 @@ void nios2_cpu_do_interrupt(CPUState *cs) =20 case EXCP_BREAK: qemu_log_mask(CPU_LOG_INT, "BREAK exception at pc=3D%x\n", env->pc= ); - /* The semihosting instruction is "break 1". */ - if (semihosting_enabled() && - cpu_ldl_code(env, env->pc) =3D=3D 0x003da07a) { - qemu_log_mask(CPU_LOG_INT, "Entering semihosting\n"); - env->pc +=3D 4; - do_nios2_semihosting(env); - break; - } =20 if ((env->ctrl[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { env->ctrl[CR_BSTATUS] =3D env->ctrl[CR_STATUS]; @@ -176,6 +168,12 @@ void nios2_cpu_do_interrupt(CPUState *cs) env->pc =3D cpu->exception_addr; break; =20 + case EXCP_SEMIHOST: + qemu_log_mask(CPU_LOG_INT, "BREAK semihosting at pc=3D%x\n", env->= pc); + env->pc +=3D 4; + do_nios2_semihosting(env); + break; + default: cpu_abort(cs, "unhandled exception type=3D%d\n", cs->exception_index); diff --git a/target/nios2/translate.c b/target/nios2/translate.c index 4191db1342..97e531529f 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -33,6 +33,7 @@ #include "exec/translator.h" #include "qemu/qemu-print.h" #include "exec/gen-icount.h" +#include "semihosting/semihost.h" =20 /* is_jmp field values */ #define DISAS_JUMP DISAS_TARGET_0 /* only pc was modified dynamically */ @@ -686,6 +687,20 @@ static void trap(DisasContext *dc, uint32_t code, uint= 32_t flags) t_gen_helper_raise_exception(dc, EXCP_TRAP); } =20 +static void gen_break(DisasContext *dc, uint32_t code, uint32_t flags) +{ +#ifndef CONFIG_USER_ONLY + /* The semihosting instruction is "break 1". */ + R_TYPE(instr, code); + if (semihosting_enabled() && instr.imm5 =3D=3D 1) { + t_gen_helper_raise_exception(dc, EXCP_SEMIHOST); + return; + } +#endif + + t_gen_helper_raise_exception(dc, EXCP_BREAK); +} + static const Nios2Instruction r_type_instructions[] =3D { INSTRUCTION_ILLEGAL(), INSTRUCTION(eret), /* eret */ @@ -739,7 +754,7 @@ static const Nios2Instruction r_type_instructions[] =3D= { INSTRUCTION(add), /* add */ INSTRUCTION_ILLEGAL(), INSTRUCTION_ILLEGAL(), - INSTRUCTION_FLG(gen_excp, EXCP_BREAK), /* break */ + INSTRUCTION(gen_break), /* break */ INSTRUCTION_ILLEGAL(), INSTRUCTION(nop), /* nop */ INSTRUCTION_ILLEGAL(), --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650556100; cv=none; d=zohomail.com; s=zohoarc; b=QJDdw6/+ql2nPtPNyop5Zs7o4HEXeOdQJdeD/lcQeaI2lblt4PXlCPe7v1yrfnfKkIUKjdCErXBDMqGqziJbK3meOJ+L1z/WdIq6gwTB2sF+F6BlHD8GZqLiqPzmcXmqaYzI+qBai+zmGlqcAGsjCwSMAac5+OVcuuJi2NG46YY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650556100; 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=vfXgGbBCnYVuJKxj9y8eePX0UESEv1erFL74mXl10ts=; b=dR4oilL2SvEG8975xdy3CeLvh6zdyaJkJ+Kwf1X95eppFSjwo/dC+uu+G2EBJmzy9J5PslAJrzrfBlWdYB8XENuk1MygVV+5dBV1/8EbKyEh10QUnpVjrD3Vp9PAYW/BMN1JAdi3CXHtFkWFAvvkCNtTrXWBPud95tLKeyZR7bY= 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 1650556100533213.01709895391411; Thu, 21 Apr 2022 08:48:20 -0700 (PDT) Received: from localhost ([::1]:39878 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZ2Z-00084Y-GA for importer@patchew.org; Thu, 21 Apr 2022 11:48:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43208) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZk-00089e-MO for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:32 -0400 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]:39506) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZh-0006Lz-FO for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:32 -0400 Received: by mail-pf1-x42b.google.com with SMTP id l127so5299964pfl.6 for ; Thu, 21 Apr 2022 08:18:29 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.18.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:18:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=vfXgGbBCnYVuJKxj9y8eePX0UESEv1erFL74mXl10ts=; b=XU0HJ876nlYLaJTsP1U9LKhBLyzR7Ph3lYlPw5inGOfgp9VCA8s2i2sA3jYaZnrkCp go15QK3diuy91QNuAdF/53+Oc+bXmGX9fGTlEkPINCnkHpYCyWSp5QweSCyAmqnfuflm Pc9Vj6JSlyqWS0GrW6GcaOTSeG7q5tnYCyrx6bsUdyEv6O0OVbtTFCzVr5ufksWEScGK KpbMbHwouKWDhkiIgMvUPILqEJJOc6M5uu7l//ml7km6M5sdCyEUneTKmfHMDJynyt1y vxJxOY/qY71RutaIRclnfkuvVg+14QA1BJ0Y5eTpA2ImQUaJxEqph8ukHpMOTJbPBYSZ 3wJA== 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=vfXgGbBCnYVuJKxj9y8eePX0UESEv1erFL74mXl10ts=; b=da1S888IRN7lRGZToaGmWm3hFnrXX0+z8EvwFor1jF0G3lhRbjJGTFGhcp8uVixOIV Ck3AdDqWhIta+n9A1fK+uY0K9x65ywDLGlSJgxd//acksb3v4YOi4Qe+fbDfDD0wuJbN t+CFFWQq+ipGiLtxNnloWE3M0wuglonz+gtecuBWO6yRIyefi2alg4016C9vGGJOiy1L LXm4inwKw0YrNk2iUKxklLFBgjHQd3O/3iir+2R+dBZxE2/0PunigntKhBfeVe+FdfBR 7vngXgzQMiB0hg1X44q4QlphUZ9IOPPCspe+DvB2W18m0bxqe6mEYhXX3SuQTwbYbcgB jlqA== X-Gm-Message-State: AOAM533hVaN1RzPkVWxIhPCCyApdPFAhi6xgAyW2ND2+g/s3Po8QEj6o 1ZLwYOK9xIcCcW0wmgdQaIYAr1iUo/oeiw== X-Google-Smtp-Source: ABdhPJyWc7+uvH50hNkl+Su+LbxKDhhC4IWn+oMk3Hbx/A1Wl0VSZhG9aJHFbA1Dazi/kDM2lCOc/A== X-Received: by 2002:a05:6a00:228d:b0:50a:934f:e302 with SMTP id f13-20020a056a00228d00b0050a934fe302mr260274pfe.20.1650554308068; Thu, 21 Apr 2022 08:18:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 32/64] target/nios2: Clean up nios2_cpu_do_interrupt Date: Thu, 21 Apr 2022 08:17:03 -0700 Message-Id: <20220421151735.31996-33-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42b.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650556101641100001 Content-Type: text/plain; charset="utf-8" Split out do_exception and do_iic_irq to handle bulk of the interrupt and exception processing. Parameterize the changes required to cpu state. The status.EH bit, which protects some data against double-faults, is only present with the MMU. Several exception cases did not check for status.EH being set, as required. The status.IH bit, which had been set by EXCP_IRQ, is exclusive to the external interrupt controller, which we do not yet implement. The internal interrupt controller, when the MMU is also present, sets the status.EH bit. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/helper.c | 141 +++++++++++++----------------------------- 1 file changed, 44 insertions(+), 97 deletions(-) diff --git a/target/nios2/helper.c b/target/nios2/helper.c index 1d17c0379f..63971a8b3c 100644 --- a/target/nios2/helper.c +++ b/target/nios2/helper.c @@ -29,6 +29,42 @@ #include "semihosting/semihost.h" =20 =20 +static void do_exception(Nios2CPU *cpu, uint32_t exception_addr, bool is_b= reak) +{ + CPUNios2State *env =3D &cpu->env; + CPUState *cs =3D CPU(cpu); + uint32_t old_status =3D env->ctrl[CR_STATUS]; + uint32_t new_status =3D old_status; + + if ((old_status & CR_STATUS_EH) =3D=3D 0) { + int r_ea =3D R_EA, cr_es =3D CR_ESTATUS; + + if (is_break) { + r_ea =3D R_BA; + cr_es =3D CR_BSTATUS; + } + env->ctrl[cr_es] =3D old_status; + env->regs[r_ea] =3D env->pc + 4; + + if (cpu->mmu_present) { + new_status |=3D CR_STATUS_EH; + } + } + + new_status &=3D ~(CR_STATUS_PIE | CR_STATUS_U); + + env->ctrl[CR_STATUS] =3D new_status; + env->ctrl[CR_EXCEPTION] =3D FIELD_DP32(env->ctrl[CR_EXCEPTION], + CR_EXCEPTION, CAUSE, + cs->exception_index); + env->pc =3D exception_addr; +} + +static void do_iic_irq(Nios2CPU *cpu) +{ + do_exception(cpu, cpu->exception_addr, false); +} + void nios2_cpu_do_interrupt(CPUState *cs) { Nios2CPU *cpu =3D NIOS2_CPU(cs); @@ -36,57 +72,20 @@ void nios2_cpu_do_interrupt(CPUState *cs) =20 switch (cs->exception_index) { case EXCP_IRQ: - assert(env->ctrl[CR_STATUS] & CR_STATUS_PIE); - qemu_log_mask(CPU_LOG_INT, "interrupt at pc=3D%x\n", env->pc); - - env->ctrl[CR_ESTATUS] =3D env->ctrl[CR_STATUS]; - env->ctrl[CR_STATUS] |=3D CR_STATUS_IH; - env->ctrl[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); - - env->ctrl[CR_EXCEPTION] =3D FIELD_DP32(env->ctrl[CR_EXCEPTION], - CR_EXCEPTION, CAUSE, - cs->exception_index); - - env->regs[R_EA] =3D env->pc + 4; - env->pc =3D cpu->exception_addr; + do_iic_irq(cpu); break; =20 case EXCP_TLBD: if ((env->ctrl[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { qemu_log_mask(CPU_LOG_INT, "TLB MISS (fast) at pc=3D%x\n", env= ->pc); - - /* Fast TLB miss */ - /* Variation from the spec. Table 3-35 of the cpu reference sh= ows - * estatus not being changed for TLB miss but this appears to - * be incorrect. */ - env->ctrl[CR_ESTATUS] =3D env->ctrl[CR_STATUS]; - env->ctrl[CR_STATUS] |=3D CR_STATUS_EH; - env->ctrl[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); - - env->ctrl[CR_EXCEPTION] =3D FIELD_DP32(env->ctrl[CR_EXCEPTION], - CR_EXCEPTION, CAUSE, - cs->exception_index); - env->ctrl[CR_TLBMISC] &=3D ~CR_TLBMISC_DBL; env->ctrl[CR_TLBMISC] |=3D CR_TLBMISC_WE; - - env->regs[R_EA] =3D env->pc + 4; - env->pc =3D cpu->fast_tlb_miss_addr; + do_exception(cpu, cpu->fast_tlb_miss_addr, false); } else { qemu_log_mask(CPU_LOG_INT, "TLB MISS (double) at pc=3D%x\n", e= nv->pc); - - /* Double TLB miss */ - env->ctrl[CR_STATUS] |=3D CR_STATUS_EH; - env->ctrl[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); - - env->ctrl[CR_EXCEPTION] =3D FIELD_DP32(env->ctrl[CR_EXCEPTION], - CR_EXCEPTION, CAUSE, - cs->exception_index); - env->ctrl[CR_TLBMISC] |=3D CR_TLBMISC_DBL; - - env->pc =3D cpu->exception_addr; + do_exception(cpu, cpu->exception_addr, false); } break; =20 @@ -94,78 +93,28 @@ void nios2_cpu_do_interrupt(CPUState *cs) case EXCP_TLBW: case EXCP_TLBX: qemu_log_mask(CPU_LOG_INT, "TLB PERM at pc=3D%x\n", env->pc); - - env->ctrl[CR_ESTATUS] =3D env->ctrl[CR_STATUS]; - env->ctrl[CR_STATUS] |=3D CR_STATUS_EH; - env->ctrl[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); - - env->ctrl[CR_EXCEPTION] =3D FIELD_DP32(env->ctrl[CR_EXCEPTION], - CR_EXCEPTION, CAUSE, - cs->exception_index); - if ((env->ctrl[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { env->ctrl[CR_TLBMISC] |=3D CR_TLBMISC_WE; } - - env->regs[R_EA] =3D env->pc + 4; - env->pc =3D cpu->exception_addr; + do_exception(cpu, cpu->exception_addr, false); break; =20 case EXCP_SUPERA: case EXCP_SUPERI: case EXCP_SUPERD: qemu_log_mask(CPU_LOG_INT, "SUPERVISOR exception at pc=3D%x\n", en= v->pc); - - if ((env->ctrl[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { - env->ctrl[CR_ESTATUS] =3D env->ctrl[CR_STATUS]; - env->regs[R_EA] =3D env->pc + 4; - } - - env->ctrl[CR_STATUS] |=3D CR_STATUS_EH; - env->ctrl[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); - - env->ctrl[CR_EXCEPTION] =3D FIELD_DP32(env->ctrl[CR_EXCEPTION], - CR_EXCEPTION, CAUSE, - cs->exception_index); - - env->pc =3D cpu->exception_addr; + do_exception(cpu, cpu->exception_addr, false); break; =20 case EXCP_ILLEGAL: case EXCP_TRAP: qemu_log_mask(CPU_LOG_INT, "TRAP exception at pc=3D%x\n", env->pc); - - if ((env->ctrl[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { - env->ctrl[CR_ESTATUS] =3D env->ctrl[CR_STATUS]; - env->regs[R_EA] =3D env->pc + 4; - } - - env->ctrl[CR_STATUS] |=3D CR_STATUS_EH; - env->ctrl[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); - - env->ctrl[CR_EXCEPTION] =3D FIELD_DP32(env->ctrl[CR_EXCEPTION], - CR_EXCEPTION, CAUSE, - cs->exception_index); - - env->pc =3D cpu->exception_addr; + do_exception(cpu, cpu->exception_addr, false); break; =20 case EXCP_BREAK: qemu_log_mask(CPU_LOG_INT, "BREAK exception at pc=3D%x\n", env->pc= ); - - if ((env->ctrl[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { - env->ctrl[CR_BSTATUS] =3D env->ctrl[CR_STATUS]; - env->regs[R_BA] =3D env->pc + 4; - } - - env->ctrl[CR_STATUS] |=3D CR_STATUS_EH; - env->ctrl[CR_STATUS] &=3D ~(CR_STATUS_PIE | CR_STATUS_U); - - env->ctrl[CR_EXCEPTION] =3D FIELD_DP32(env->ctrl[CR_EXCEPTION], - CR_EXCEPTION, CAUSE, - cs->exception_index); - - env->pc =3D cpu->exception_addr; + do_exception(cpu, cpu->exception_addr, true); break; =20 case EXCP_SEMIHOST: @@ -175,9 +124,7 @@ void nios2_cpu_do_interrupt(CPUState *cs) break; =20 default: - cpu_abort(cs, "unhandled exception type=3D%d\n", - cs->exception_index); - break; + cpu_abort(cs, "unhandled exception type=3D%d\n", cs->exception_ind= ex); } } =20 --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650556712; cv=none; d=zohomail.com; s=zohoarc; b=kXnp9UD/nGym8FrZyLqxv9xqs5FPNYk/Ipyuzy7eQhX2MGV9M95vFZ9cwOp0cNd6lewgJSfAQ6pmQwTmjppPfTjGM/PQM9knrAkLNyNfEzGUhKHd8buvC2UbR1mI86EYa8XMIKns+HPEzMJs6L3/Ekb/OGroTxOj3PVSRODo448= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650556712; 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=B6BF8VIlp/A1BCVtuMAbl4vrBEgrJ81cLXGHvqVKfUw=; b=OeK2J1ufHVDfSTilITIeeNOoaAf0aYNiInU//9F3hAv9eKO26DhcGVomuwASJY9a1uxzxwBjwC9nlFuS97r+YrvKweurY6BROW7RyfkL9bs5t/Snl2OvKXdj8GX29/kpmeknrD7ir4qIIlelkjYOBb6dF+ZxAJ4a7rPRIIktDQE= 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 1650556712397165.73861092225752; Thu, 21 Apr 2022 08:58:32 -0700 (PDT) Received: from localhost ([::1]:40708 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZCR-0007Hm-1s for importer@patchew.org; Thu, 21 Apr 2022 11:58:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43228) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZl-0008ER-Eb for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:34 -0400 Received: from mail-pg1-x532.google.com ([2607:f8b0:4864:20::532]:46944) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZj-0006MO-O5 for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:33 -0400 Received: by mail-pg1-x532.google.com with SMTP id q12so4879270pgj.13 for ; Thu, 21 Apr 2022 08:18:30 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.18.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:18:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=B6BF8VIlp/A1BCVtuMAbl4vrBEgrJ81cLXGHvqVKfUw=; b=R4797mz6GUvA6Y/MFW1Yl9vUXJ5CJ8p1LO3lM4Use0IVmBrw0TkE7RUyKHLMsj9eeD OexvI3xrCwNdvEWX/TDrhBTEumQNx8qB17rafrt+2G/47mhQyn9Cd89YhOzV3jy7l8u9 oxX7aMXupXT9T/WZrhVCWapey9l4nzELf9Wip174IESYezjC/fWUcNlg6DeT01XoldJD Z2p8ovWq92YdpnBcowqda28FzOMBFXj3gAiDQCPwWJPIH/QYR3ZOmpgaPgny1V66uNR4 Zvg7X3+0um9sK3pI/kFOjtOF35qhcFdrAoyFK4DBqOukXyn6LoyYekOyhrpxDIV/k64M zTXQ== 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=B6BF8VIlp/A1BCVtuMAbl4vrBEgrJ81cLXGHvqVKfUw=; b=pVK+KM7kP61YSty2AHYCGW9CwmCfvuz8DjnZe4X63D+bxSxkArfVDjP+uK8E2EecZA B0F8/WS2UFscHIZVsU1WTLQIxflPt3OClpepAlwZi09tc6DaXcZbW3bgDiyYg8R+sRRy qUHentj8HEjoZCA0EcZWy7QDCBgwC9cvLlD2LYNJKn82IvjAM0CE4ZxR5A8fMOGOYNZq Wu1toNcWKh8loyA654ZnJmkdUOUUSMjjSvDlXIq5KaEnS4FfXdjCzqh0jREWA+WQdf6i SZeX1BPGhv7ollVGBPNDmLq1YJmGMUB7CrifDcfgl9nuM2qEjA0RShS2nzH8a01rbYgH m87w== X-Gm-Message-State: AOAM530WN9wKgrFr1xXhbELum0wvUzab0UfRjM0KobyqY8bCPup9EQaY zp7iU5uDfZ31OGuVylKQWJSRGMgKLZf5fw== X-Google-Smtp-Source: ABdhPJwI/JYWxHtCPkC36hB8nMfulwLBfhrmfjfj3HPh7XCCoUvrJBjGNgXag41Q/KkiZLVYlqMsHg== X-Received: by 2002:a63:db4c:0:b0:39d:18bf:7857 with SMTP id x12-20020a63db4c000000b0039d18bf7857mr24495120pgi.413.1650554309455; Thu, 21 Apr 2022 08:18:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 33/64] target/nios2: Hoist CPU_LOG_INT logging Date: Thu, 21 Apr 2022 08:17:04 -0700 Message-Id: <20220421151735.31996-34-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::532; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x532.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650556714239100001 Content-Type: text/plain; charset="utf-8" Performing this early means that we can merge more cases within the non-logging switch statement. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/helper.c | 58 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 11 deletions(-) diff --git a/target/nios2/helper.c b/target/nios2/helper.c index 63971a8b3c..c57ffd64e0 100644 --- a/target/nios2/helper.c +++ b/target/nios2/helper.c @@ -70,20 +70,64 @@ void nios2_cpu_do_interrupt(CPUState *cs) Nios2CPU *cpu =3D NIOS2_CPU(cs); CPUNios2State *env =3D &cpu->env; =20 + if (qemu_loglevel_mask(CPU_LOG_INT)) { + const char *name =3D NULL; + + switch (cs->exception_index) { + case EXCP_IRQ: + name =3D "interrupt"; + break; + case EXCP_TLBD: + if (env->ctrl[CR_STATUS] & CR_STATUS_EH) { + name =3D "TLB MISS (double)"; + } else { + name =3D "TLB MISS (fast)"; + } + break; + case EXCP_TLBR: + case EXCP_TLBW: + case EXCP_TLBX: + name =3D "TLB PERM"; + break; + case EXCP_SUPERA: + case EXCP_SUPERD: + name =3D "SUPERVISOR (address)"; + break; + case EXCP_SUPERI: + name =3D "SUPERVISOR (insn)"; + break; + case EXCP_ILLEGAL: + name =3D "ILLEGAL insn"; + break; + case EXCP_TRAP: + name =3D "TRAP insn"; + break; + case EXCP_BREAK: + name =3D "BREAK insn"; + break; + case EXCP_SEMIHOST: + name =3D "SEMIHOST insn"; + break; + } + if (name) { + qemu_log("%s at pc=3D0x%08x\n", name, env->pc); + } else { + qemu_log("Unknown exception %d at pc=3D0x%08x\n", + cs->exception_index, env->pc); + } + } + switch (cs->exception_index) { case EXCP_IRQ: - qemu_log_mask(CPU_LOG_INT, "interrupt at pc=3D%x\n", env->pc); do_iic_irq(cpu); break; =20 case EXCP_TLBD: if ((env->ctrl[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { - qemu_log_mask(CPU_LOG_INT, "TLB MISS (fast) at pc=3D%x\n", env= ->pc); env->ctrl[CR_TLBMISC] &=3D ~CR_TLBMISC_DBL; env->ctrl[CR_TLBMISC] |=3D CR_TLBMISC_WE; do_exception(cpu, cpu->fast_tlb_miss_addr, false); } else { - qemu_log_mask(CPU_LOG_INT, "TLB MISS (double) at pc=3D%x\n", e= nv->pc); env->ctrl[CR_TLBMISC] |=3D CR_TLBMISC_DBL; do_exception(cpu, cpu->exception_addr, false); } @@ -92,7 +136,6 @@ void nios2_cpu_do_interrupt(CPUState *cs) case EXCP_TLBR: case EXCP_TLBW: case EXCP_TLBX: - qemu_log_mask(CPU_LOG_INT, "TLB PERM at pc=3D%x\n", env->pc); if ((env->ctrl[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { env->ctrl[CR_TLBMISC] |=3D CR_TLBMISC_WE; } @@ -102,23 +145,16 @@ void nios2_cpu_do_interrupt(CPUState *cs) case EXCP_SUPERA: case EXCP_SUPERI: case EXCP_SUPERD: - qemu_log_mask(CPU_LOG_INT, "SUPERVISOR exception at pc=3D%x\n", en= v->pc); - do_exception(cpu, cpu->exception_addr, false); - break; - case EXCP_ILLEGAL: case EXCP_TRAP: - qemu_log_mask(CPU_LOG_INT, "TRAP exception at pc=3D%x\n", env->pc); do_exception(cpu, cpu->exception_addr, false); break; =20 case EXCP_BREAK: - qemu_log_mask(CPU_LOG_INT, "BREAK exception at pc=3D%x\n", env->pc= ); do_exception(cpu, cpu->exception_addr, true); break; =20 case EXCP_SEMIHOST: - qemu_log_mask(CPU_LOG_INT, "BREAK semihosting at pc=3D%x\n", env->= pc); env->pc +=3D 4; do_nios2_semihosting(env); break; --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650557334; cv=none; d=zohomail.com; s=zohoarc; b=BjHREouyoumrQ0RhjLsW3+Wh7P1KvD2aiIoDxZJ036DeYF7ppyqbtqnp7ZqyD6mdakGpa/+7C54El8AG3FNFWVSAvCardiZWQOrGIobwmeE9YFPJp9wot2PaitSvcMlcVG/DiQqZYP7VFRJDp/pFqxD10jvsON2z4/Ex7A39e/4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650557334; h=Content-Transfer-Encoding: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=0EK3Litbg/R+iOy2ToK0s2extd0TPN3Lzla7IqyLnHw=; b=A3wv3ba4K10a+wlioJrwGv7hVAhHbJexHPqrr+rvnrbem8tbabOVPmvz8SynMRmMrJmPHk0PUIsEGszjfL7/yTfoT8G1geAPfWYHS3NWdjhdFPG9ypswDfNVusMyD5uPH0ujcDQDiI9HN3RQbperf4PhBO4rJeEtDMHoIG7Xovk= 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 1650557334707915.5410130140422; Thu, 21 Apr 2022 09:08:54 -0700 (PDT) Received: from localhost ([::1]:57688 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZMT-0003Nq-LY for importer@patchew.org; Thu, 21 Apr 2022 12:08:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43262) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZo-0008Mu-OT for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:36 -0400 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]:56291) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZk-0006Mk-DX for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:36 -0400 Received: by mail-pj1-x102e.google.com with SMTP id u5so2135104pjr.5 for ; Thu, 21 Apr 2022 08:18:31 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.18.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:18:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=0EK3Litbg/R+iOy2ToK0s2extd0TPN3Lzla7IqyLnHw=; b=Ugf1TBiMd/z3DJy8wKTkEYQivWD79jLPPhZb38Ir/jzkn5EiyH1GU03n1c2t/Ue0yS t3NP+vI9l16cOYLtqrUxCm0eSO3SmJHzYCfdMBOXNv0wwwDZyAbE1EWhuWh9pXIQf2Te By/8nPm4WMMJYv04wUshvO8bAAU130ZfWgQE1V2Mug5oweojTDd0gMqyt7nGEWVcFHlo gZYRQdF+w57aPw4fObXNJWhuVe9h4KOgDP2fVQ0eOj1ahMO0cqxUDV6uLGnuq+hYrLJi c2kC8T+cKqHV+LWDoJ/PRV/P8HsZQA1HzoRhjSMt5/ABv8IdnowaGfjuO6UONS+0TSo1 3a2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=0EK3Litbg/R+iOy2ToK0s2extd0TPN3Lzla7IqyLnHw=; b=NqfMC2Xfg0fmLhG30CP5JYFJ5JRyANteglLj9pLbliCMSg0CShmET9Wrvg5qHaKmZl xahilexs/ecbjiHk/QicxE4IuRrtk2P9NU6YvcnPcZ/EOAoI1P5O+FVnGNSAPDI6ElOn H+ZXbsqJXfMD3Vk+SyXNKX4UlPKTaXHNY7r0eI5FDdjCNcRGSxYYwAWMHFNVR76gP9NB QtPe4Ra2vtA/n8oBx38nmHHBCEobFBR0QYMlwHdL5nUlagzzDLY2PGhXxf9M8Z/r3obG kjGz2yvfZk3cSUMruSWO5IEnrUmHb/tRXATYksCQ4+aLYppQfZTqBoVDdOGLT2ntheH2 LU6Q== X-Gm-Message-State: AOAM533D0fFyUun6JU+BzYhSLkNspzgex6RIALzAkSySxsmvotUqhmC9 13t4KGibhC7z9SSrp10uw0if49njaydwCw== X-Google-Smtp-Source: ABdhPJwU5x/SNU67CeoTYX+eIv9SsykP4DHFB8/EDPBL9KwznHybqw5cDJ4HJa8aEQ4/jYZpTa3ULg== X-Received: by 2002:a17:902:c944:b0:158:de4a:6975 with SMTP id i4-20020a170902c94400b00158de4a6975mr25704716pla.131.1650554310842; Thu, 21 Apr 2022 08:18:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 34/64] target/nios2: Handle EXCP_UNALIGN and EXCP_UALIGND Date: Thu, 21 Apr 2022 08:17:05 -0700 Message-Id: <20220421151735.31996-35-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+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: -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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650557336191100001 Content-Type: text/plain; charset="utf-8" While some of the plumbing for misaligned data is present, in the form of nios2_cpu_do_unaligned_access, the hook will not be called because TARGET_ALIGNED_ONLY is not set in configs/targets/nios2-softmmu.mak. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/nios2/helper.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/target/nios2/helper.c b/target/nios2/helper.c index c57ffd64e0..25a89724d0 100644 --- a/target/nios2/helper.c +++ b/target/nios2/helper.c @@ -99,6 +99,12 @@ void nios2_cpu_do_interrupt(CPUState *cs) case EXCP_ILLEGAL: name =3D "ILLEGAL insn"; break; + case EXCP_UNALIGN: + name =3D "Misaligned (data)"; + break; + case EXCP_UNALIGND: + name =3D "Misaligned (destination)"; + break; case EXCP_TRAP: name =3D "TRAP insn"; break; @@ -147,6 +153,8 @@ void nios2_cpu_do_interrupt(CPUState *cs) case EXCP_SUPERD: case EXCP_ILLEGAL: case EXCP_TRAP: + case EXCP_UNALIGN: + case EXCP_UNALIGND: do_exception(cpu, cpu->exception_addr, false); break; =20 --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650556913; cv=none; d=zohomail.com; s=zohoarc; b=V0RUdjF16R9o5mL8XMiTo5RG/YNbfwYcrcTQGYSPgyEeJpxensjf9zzSJIAuaIWyZKy/EmXLQcfbXp9uCzWUHbfPnoY2ojZkqjVU4Aq6VtzUQMi5kpeFUbaFUo3CLZMww27EIt4fgr/2VmsJ4yUJNwkG+nmXNBcQtTyExElJk1Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650556913; 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=dld49d9db7Y5yyVgQQiQvPetwjIIOD6aVGgarCZ6u4M=; b=jrzrxYPyGkVp6N8dCTNl89N1JfRvA00gYFu8mbIi9rNHcwhD5lTN9lBsu+AX/UL4+hv/ngnEXuLZ36rm7pJGTClMe/tEON0WvLL8RuwW1iF/56ponGwzsC9bmHNSb7sW8to1iJPTZFXMRgkk7DCXFlKHyFZKf9+7aYyWVAX9+0I= 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 165055691323148.50632143922894; Thu, 21 Apr 2022 09:01:53 -0700 (PDT) Received: from localhost ([::1]:49176 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZFf-0005hG-Me for importer@patchew.org; Thu, 21 Apr 2022 12:01:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43252) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZn-0008Ig-0n for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:35 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]:54015) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZl-0006N4-Hh for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:34 -0400 Received: by mail-pj1-x1034.google.com with SMTP id bx5so5231232pjb.3 for ; Thu, 21 Apr 2022 08:18:33 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.18.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:18:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=dld49d9db7Y5yyVgQQiQvPetwjIIOD6aVGgarCZ6u4M=; b=sotuOlqBtsVxaz0N4W3FSlGKpX6T7WwCXovACDR3PctZep/jBgBl1BprHTvm1M5YXc Xaize9SqdgYBXeJkcJ6gk3sB/2NzI0Wkad8kx7JJgCh0T6vu3glwhBB0qwFuY2OLwoGi XJueczY8bOA5tKi2Wtnim726PyyyZll0DIMfpcpgtDHIPdAVAQi1D0spzNWj2mN2AP63 OF5+1iJb/OYuZgqjfpc2ub1xue58rTqb8T48Ow9Gxgk/c/g8yS3Fa8oVxq0UaregAnPp w1Zyr+jY2ZohGTGpLNaNqbIueigjqlrk0gebIJaS8/cQrolkBwMpadRXKlwpW+/PrKtP IUIg== 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=dld49d9db7Y5yyVgQQiQvPetwjIIOD6aVGgarCZ6u4M=; b=F3Pdbolb+YWzi8dgBFqBCimfOJIm+WVEXyELzjF+drYvgR1ZebtMH1GI1zXSHcOFBV v1ZmWI2KTPThrVl6Zx0WT2lhiqiHtS4bYrSODSVqVQW+2nFAF8thqfXN8aZOhTYmoxdD 9WO6ANgkv/ErlQR4L6PLFae0/0yiydmhi2yLiP+N2sC/IyCfBmx7O60T9WpzIBYvq/6P yaG/PZVBrcIb3srt4aI/S9su21PE7Y1rdZZETsn2qUMhZYSoHOvrMdzNhVGdwAeg6VPw X9EtadzjNrottWERedJI4EYNY75fhgrys1ZCHquuWZ7R3CbU7aLndzJBLB6GJJeScwqj Gzwg== X-Gm-Message-State: AOAM531V1jXujY8ZsDtTjrTOjRR6INwvc5RWX6Ciy7xF7FsnGIX4H4ov ajdEY5ur3zivJ+T5tIiumI2FHd+6g4sqvg== X-Google-Smtp-Source: ABdhPJx6huIDsYjpBYVdmTib8WrBRjOVqMICsRbCL0L74peMrUW3Sm2dKjR/xgiejhfVJRAm7CfgUQ== X-Received: by 2002:a17:903:189:b0:15a:fe6d:34aa with SMTP id z9-20020a170903018900b0015afe6d34aamr7184plg.141.1650554312353; Thu, 21 Apr 2022 08:18:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 35/64] target/nios2: Cleanup set of CR_EXCEPTION for do_interrupt Date: Thu, 21 Apr 2022 08:17:06 -0700 Message-Id: <20220421151735.31996-36-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1034.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650556915371100001 Content-Type: text/plain; charset="utf-8" The register is entirely read-only for software, and we do not implement ECC, so we need not deposit the cause into an existing value; just create a new value from scratch. Furthermore, exception.CAUSE is not written for break exceptions. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/helper.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/target/nios2/helper.c b/target/nios2/helper.c index 25a89724d0..3d9869453b 100644 --- a/target/nios2/helper.c +++ b/target/nios2/helper.c @@ -54,9 +54,10 @@ static void do_exception(Nios2CPU *cpu, uint32_t excepti= on_addr, bool is_break) new_status &=3D ~(CR_STATUS_PIE | CR_STATUS_U); =20 env->ctrl[CR_STATUS] =3D new_status; - env->ctrl[CR_EXCEPTION] =3D FIELD_DP32(env->ctrl[CR_EXCEPTION], - CR_EXCEPTION, CAUSE, - cs->exception_index); + if (!is_break) { + env->ctrl[CR_EXCEPTION] =3D FIELD_DP32(0, CR_EXCEPTION, CAUSE, + cs->exception_index); + } env->pc =3D exception_addr; } =20 --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650558366; cv=none; d=zohomail.com; s=zohoarc; b=VA1SrH0Cetpb0ziCOEqvhC+jvwXHnaapJjDHKH8tRmdaPf8+NCzwzbaGsVwocQeJq0fjfTA+sKq18gyH7Mw788PGXVAR1svSG0yjtABVsgmdR3FELB1YqsZZZiszSfp/xArRXbzd6yyPk8dTw3KOeX6rwSFwqxBMMAEiRAyx1YU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650558366; 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=S1AFcJlIUz3dV3PPNVPDmWmaZjsjbpbvIVwTRgZm7jI=; b=EqaST5jNwsbuurnWkaLuSwLyUYAqYY2snHmhxgTt4+9iwy6XG0/EGvia1V4IlB6KvFJ8JiAUOmz0ZrHFpsBwtRgt4pDMhzZWoz1L6Bch+pTx54N05PdPLVVJCEbf3w9qPOCzrDcNxlx0LGXAcBGzzQa67Zfb0Lw2rWWTaRpteCw= 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 1650558366204332.01026159867456; Thu, 21 Apr 2022 09:26:06 -0700 (PDT) Received: from localhost ([::1]:46368 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZd7-0000iu-34 for importer@patchew.org; Thu, 21 Apr 2022 12:26:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43302) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZr-0008Ve-2n for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:39 -0400 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]:39793) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZn-0006NL-1q for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:38 -0400 Received: by mail-pj1-x102e.google.com with SMTP id mp16-20020a17090b191000b001cb5efbcab6so8006346pjb.4 for ; Thu, 21 Apr 2022 08:18:34 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.18.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:18:33 -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=S1AFcJlIUz3dV3PPNVPDmWmaZjsjbpbvIVwTRgZm7jI=; b=oFH4rSy1Nb1H8xIj08Fy48VrocEp7rjbJBq+6zD+XqVWEO9N9sjS/GdNXyW0Rk+5m6 6KDlsex1vunTBRDtnvGBT0kKEaaP5/wREBcNV6Reu1UQhLDs0IW89FvKzRujphEyx4gm hu7r/0ivihZxVDX9tcZ1ClSLMwRyPCSuNZ9gw2hYYZ56yUwl6Ft6Jav0dWZpqrr5r+PS eoj2J4PwluHn/Bx5cl+AC5FrASkujWjWqBTcv3SpmiocnvnIihhleKFrrG6zUe0/uydQ FZLd5B+UDBJadx61tKw5cZOsiHF7GVXPZIB8fQBhG3X2psNiDu8WsoXYwNlx6r7FVOap QF0Q== 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=S1AFcJlIUz3dV3PPNVPDmWmaZjsjbpbvIVwTRgZm7jI=; b=iFp94cvyybXKhx7IZLsTZZa8VDzrSAKToD7kxBNCxtthSJHAjvI0IJp1rJLjuO2oy2 fFTdd9kjZYSEnWmGcHcf2DhjGdrWkCOvu31t0uDccNJJ3Y3y2CyGR2bVIfeDXamcwwED YBkd5/ongrlErhRzvpTm0nXIjJdJgHft9tiQzicPCYTK8xPbURImmW5aMKe7wEbKCJpq KMrzufEZgxL6vAnesXYrjipH4CbdSoereiasEl9uOiZ0hEJ7mTc1gpbsErbfCBFT7Gh5 6rrNhcn0BCaUmGQU+swfIIIn4ZfrWspEeVEt4iTQk3wUf99h3cR28hpN50KqORd1ADqE gHVA== X-Gm-Message-State: AOAM532W8UqULqwwl5MCYy785JeVquXT3kK4eDXIX6kBCcMGLpzYCI3M iDSuPMvDnuWh++olhQ2MRSF2uxOlN7Qmgg== X-Google-Smtp-Source: ABdhPJwAHrDCJ4ZRomOfvpt3YULIrymUPB3/WI8PuFRLpdUmeBst5rEN3QH9w2B8nmIYPB2RaCmO0w== X-Received: by 2002:a17:90b:4f82:b0:1d1:b8fd:7e36 with SMTP id qe2-20020a17090b4f8200b001d1b8fd7e36mr11024827pjb.194.1650554313788; Thu, 21 Apr 2022 08:18:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 36/64] target/nios2: Clean up handling of tlbmisc in do_exception Date: Thu, 21 Apr 2022 08:17:07 -0700 Message-Id: <20220421151735.31996-37-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+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: -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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650558366851100001 Content-Type: text/plain; charset="utf-8" The 4 lower bits, D, PERM, BAD, DBL, are unconditionally set on any exception with EH=3D0, or so says Table 42 (Processor Status After Taking Exception). We currently do not set PERM or BAD at all, and only set/clear DBL for tlb miss, and do not clear DBL for any other exception. It is a bit confusing to set D in tlb_fill and the rest during do_interrupt, so move the setting of D to do_interrupt as well. To do this, split EXP_TLBD into two cases, EXCP_TLB_X and EXCP_TLB_D, which allows us to distinguish them during do_interrupt. Choose a value for EXCP_TLB_D such that when truncated it produces the correct value for exception.CAUSE. Rename EXCP_TLB[RWX] to EXCP_PERM_[RWX], to emphasize that the exception is permissions related. Rename EXCP_SUPER[AD] to EXCP_SUPERA_[DX] to emphasize that they are both "supervisor address" exceptions, data and execute. Retain the setting of tlbmisc.WE for the fast-tlb-miss path, as it is being relied upon, but remove it from the permission path. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/cpu.h | 13 +++--- target/nios2/helper.c | 97 +++++++++++++++++++++++++++++-------------- 2 files changed, 73 insertions(+), 37 deletions(-) diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index 9e82100a1f..7189f9a45f 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -166,13 +166,14 @@ FIELD(CR_TLBMISC, EE, 24, 1) #define EXCP_UNALIGN 6 #define EXCP_UNALIGND 7 #define EXCP_DIV 8 -#define EXCP_SUPERA 9 +#define EXCP_SUPERA_X 9 #define EXCP_SUPERI 10 -#define EXCP_SUPERD 11 -#define EXCP_TLBD 12 -#define EXCP_TLBX 13 -#define EXCP_TLBR 14 -#define EXCP_TLBW 15 +#define EXCP_SUPERA_D 11 +#define EXCP_TLB_X 12 +#define EXCP_TLB_D (0x1000 | EXCP_TLB_X) +#define EXCP_PERM_X 13 +#define EXCP_PERM_R 14 +#define EXCP_PERM_W 15 #define EXCP_MPUI 16 #define EXCP_MPUD 17 =20 diff --git a/target/nios2/helper.c b/target/nios2/helper.c index 3d9869453b..4d9085f22f 100644 --- a/target/nios2/helper.c +++ b/target/nios2/helper.c @@ -29,7 +29,8 @@ #include "semihosting/semihost.h" =20 =20 -static void do_exception(Nios2CPU *cpu, uint32_t exception_addr, bool is_b= reak) +static void do_exception(Nios2CPU *cpu, uint32_t exception_addr, + uint32_t tlbmisc_set, bool is_break) { CPUNios2State *env =3D &cpu->env; CPUState *cs =3D CPU(cpu); @@ -48,6 +49,16 @@ static void do_exception(Nios2CPU *cpu, uint32_t excepti= on_addr, bool is_break) =20 if (cpu->mmu_present) { new_status |=3D CR_STATUS_EH; + + /* + * There are 4 bits that are always written. + * Explicitly clear them, to be set via the argument. + */ + env->ctrl[CR_TLBMISC] &=3D ~(CR_TLBMISC_D | + CR_TLBMISC_PERM | + CR_TLBMISC_BAD | + CR_TLBMISC_DBL); + env->ctrl[CR_TLBMISC] |=3D tlbmisc_set; } } =20 @@ -63,13 +74,14 @@ static void do_exception(Nios2CPU *cpu, uint32_t except= ion_addr, bool is_break) =20 static void do_iic_irq(Nios2CPU *cpu) { - do_exception(cpu, cpu->exception_addr, false); + do_exception(cpu, cpu->exception_addr, 0, false); } =20 void nios2_cpu_do_interrupt(CPUState *cs) { Nios2CPU *cpu =3D NIOS2_CPU(cs); CPUNios2State *env =3D &cpu->env; + uint32_t tlbmisc_set =3D 0; =20 if (qemu_loglevel_mask(CPU_LOG_INT)) { const char *name =3D NULL; @@ -78,20 +90,21 @@ void nios2_cpu_do_interrupt(CPUState *cs) case EXCP_IRQ: name =3D "interrupt"; break; - case EXCP_TLBD: + case EXCP_TLB_X: + case EXCP_TLB_D: if (env->ctrl[CR_STATUS] & CR_STATUS_EH) { name =3D "TLB MISS (double)"; } else { name =3D "TLB MISS (fast)"; } break; - case EXCP_TLBR: - case EXCP_TLBW: - case EXCP_TLBX: + case EXCP_PERM_R: + case EXCP_PERM_W: + case EXCP_PERM_X: name =3D "TLB PERM"; break; - case EXCP_SUPERA: - case EXCP_SUPERD: + case EXCP_SUPERA_X: + case EXCP_SUPERA_D: name =3D "SUPERVISOR (address)"; break; case EXCP_SUPERI: @@ -129,38 +142,57 @@ void nios2_cpu_do_interrupt(CPUState *cs) do_iic_irq(cpu); break; =20 - case EXCP_TLBD: - if ((env->ctrl[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { - env->ctrl[CR_TLBMISC] &=3D ~CR_TLBMISC_DBL; - env->ctrl[CR_TLBMISC] |=3D CR_TLBMISC_WE; - do_exception(cpu, cpu->fast_tlb_miss_addr, false); + case EXCP_TLB_D: + tlbmisc_set =3D CR_TLBMISC_D; + /* fall through */ + case EXCP_TLB_X: + if (env->ctrl[CR_STATUS] & CR_STATUS_EH) { + tlbmisc_set |=3D CR_TLBMISC_DBL; + /* + * Normally, we don't write to tlbmisc unless !EH, + * so do it manually for the double-tlb miss exception. + */ + env->ctrl[CR_TLBMISC] &=3D ~(CR_TLBMISC_D | + CR_TLBMISC_PERM | + CR_TLBMISC_BAD); + env->ctrl[CR_TLBMISC] |=3D tlbmisc_set; + do_exception(cpu, cpu->exception_addr, 0, false); } else { - env->ctrl[CR_TLBMISC] |=3D CR_TLBMISC_DBL; - do_exception(cpu, cpu->exception_addr, false); + tlbmisc_set |=3D CR_TLBMISC_WE; + do_exception(cpu, cpu->fast_tlb_miss_addr, tlbmisc_set, false); } break; =20 - case EXCP_TLBR: - case EXCP_TLBW: - case EXCP_TLBX: - if ((env->ctrl[CR_STATUS] & CR_STATUS_EH) =3D=3D 0) { - env->ctrl[CR_TLBMISC] |=3D CR_TLBMISC_WE; + case EXCP_PERM_R: + case EXCP_PERM_W: + tlbmisc_set =3D CR_TLBMISC_D; + /* fall through */ + case EXCP_PERM_X: + tlbmisc_set |=3D CR_TLBMISC_PERM; + if (!(env->ctrl[CR_STATUS] & CR_STATUS_EH)) { + tlbmisc_set |=3D CR_TLBMISC_WE; } - do_exception(cpu, cpu->exception_addr, false); + do_exception(cpu, cpu->exception_addr, tlbmisc_set, false); + break; + + case EXCP_SUPERA_D: + case EXCP_UNALIGN: + tlbmisc_set =3D CR_TLBMISC_D; + /* fall through */ + case EXCP_SUPERA_X: + case EXCP_UNALIGND: + tlbmisc_set |=3D CR_TLBMISC_BAD; + do_exception(cpu, cpu->exception_addr, tlbmisc_set, false); break; =20 - case EXCP_SUPERA: case EXCP_SUPERI: - case EXCP_SUPERD: case EXCP_ILLEGAL: case EXCP_TRAP: - case EXCP_UNALIGN: - case EXCP_UNALIGND: - do_exception(cpu, cpu->exception_addr, false); + do_exception(cpu, cpu->exception_addr, 0, false); break; =20 case EXCP_BREAK: - do_exception(cpu, cpu->exception_addr, true); + do_exception(cpu, cpu->exception_addr, 0, true); break; =20 case EXCP_SEMIHOST: @@ -215,7 +247,7 @@ bool nios2_cpu_tlb_fill(CPUState *cs, vaddr address, in= t size, { Nios2CPU *cpu =3D NIOS2_CPU(cs); CPUNios2State *env =3D &cpu->env; - unsigned int excp =3D EXCP_TLBD; + unsigned int excp; target_ulong vaddr, paddr; Nios2MMULookup lu; unsigned int hit; @@ -242,7 +274,8 @@ bool nios2_cpu_tlb_fill(CPUState *cs, vaddr address, in= t size, if (probe) { return false; } - cs->exception_index =3D EXCP_SUPERA; + cs->exception_index =3D (access_type =3D=3D MMU_INST_FETCH + ? EXCP_SUPERA_X : EXCP_SUPERA_D); env->ctrl[CR_BADADDR] =3D address; cpu_loop_exit_restore(cs, retaddr); } @@ -263,8 +296,10 @@ bool nios2_cpu_tlb_fill(CPUState *cs, vaddr address, i= nt size, } =20 /* Permission violation */ - excp =3D (access_type =3D=3D MMU_DATA_LOAD ? EXCP_TLBR : - access_type =3D=3D MMU_DATA_STORE ? EXCP_TLBW : EXCP_TLBX); + excp =3D (access_type =3D=3D MMU_DATA_LOAD ? EXCP_PERM_R : + access_type =3D=3D MMU_DATA_STORE ? EXCP_PERM_W : EXCP_PER= M_X); + } else { + excp =3D (access_type =3D=3D MMU_INST_FETCH ? EXCP_TLB_X: EXCP_TLB= _D); } =20 if (probe) { --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650556227; cv=none; d=zohomail.com; s=zohoarc; b=e9ETljdSuN3bwKzgSR4vtg4jl3pZz00Fpg4zlN1rawas1O9Dfn8SFnCRFDzuYj9OyHjIOMrM2gpubbSRd73S231inI4qRNRkK6HCJBBwvAm5gHZSbcZeFOw9vtEEmAAGWy2eNxQQPC+k3k0GZXxCGbP6ZK/mkIVUVKVJ3yhY/cA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650556227; h=Content-Transfer-Encoding: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=Yd0irHT+JM82G1zADs5FXAR4v7VrqIr0k9G1Q4ZBll8=; b=E+Ow2K0cuVbON5HoO5dOojE8PPHOmCXymOVbCpsTeJtkudBZVJeWiFryfwAqBWbU/rTkETPc97WdaXB7jwvgZNwXSUlOWgk2+OTJnxneL+Mk938C6EaBz84WT9Wrp1XgmDUC6nO+v998D4QvfrufuLyR+cbsE0pw06sr09Obz+s= 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 1650556227767267.3173253737955; Thu, 21 Apr 2022 08:50:27 -0700 (PDT) Received: from localhost ([::1]:47908 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZ4c-0004zr-8o for importer@patchew.org; Thu, 21 Apr 2022 11:50:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43300) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZq-0008VM-WF for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:39 -0400 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]:40514) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZo-0006O6-Sd for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:38 -0400 Received: by mail-pj1-x1029.google.com with SMTP id md20-20020a17090b23d400b001cb70ef790dso8004635pjb.5 for ; Thu, 21 Apr 2022 08:18:36 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.18.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:18:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=Yd0irHT+JM82G1zADs5FXAR4v7VrqIr0k9G1Q4ZBll8=; b=WIOdYvK4mncHUsb25ldvaIJLBSQm224PNoXwdkHycVIQRTYf4nbUZktdUZRclvm9LA PV6MJii9RR53mnU76h6FuEPhCM/ZvoFRS1H0dxd6zX77S7acz3tXetkEtyVx8uBszocK XQzqzfgIg0hW8SPcNVpPxG/KiTQgxxFfF7cGjXUPDPMHZfvceFDFA/RO1IM/CLGH+eSe 2KYGwCIZcbAdiKpJOjzga5xWgreL/TUycOkWzouabZqhAeZ3WIEyXCiSPMnziHpFmxqf LQPVAjzTWsTIyCWpaSXGnZ+SG/I8lNO0O65s64VNZU7FMGZMFEu+a3lXChHQn2QcFVPG G9hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Yd0irHT+JM82G1zADs5FXAR4v7VrqIr0k9G1Q4ZBll8=; b=DCU4CKtsZwpa2K/PFe6s8v/9NMS8De7QCm4P4bXYJWzGBxCb33gGjSw6o8TjMtFm0L PTruo+ODrQ8eVrwNV6VcGyNksP/dMChiIAsbfopPaOYmtxOA9pxmZ10d+Uu7ogAhW4Mb +hLd10918bqhffr5MAn8g6gn+zYj3fJmYGIylShpcCz91YZQBvru8bexQ7KDAuJoOIs8 cPCBYFsi8cMcoOeoGYtB7wV/QkF80oSvw+lzGA8DXRQSkEEcYj1+7LC2jE4/zIpFEuhe R239fhaJ9air7UfoiHclZXhEiQ71sCME4PE3vvnp6846abE7JSE+uNco4z+PX0w2kmsH G2dA== X-Gm-Message-State: AOAM532BWJ1tfYgNPn6kxG70N4fW8HbTpo8MQReT96sdRjzcZmbKRgSc w/aWCdng2nHWSj68rISYyTsAi03NgLPnmg== X-Google-Smtp-Source: ABdhPJwKr4EFJtVqXkyy7D3ltO4dTtF9CqCdmBDUJ7esewDRsyELk4akO46Y5zgtP9KjWLQqnzavJw== X-Received: by 2002:a17:90a:eb0e:b0:1cb:7d07:52f6 with SMTP id j14-20020a17090aeb0e00b001cb7d0752f6mr11072778pjz.66.1650554315455; Thu, 21 Apr 2022 08:18:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 37/64] target/nios2: Prevent writes to read-only or reserved control fields Date: Thu, 21 Apr 2022 08:17:08 -0700 Message-Id: <20220421151735.31996-38-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1029.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650556228464100001 Content-Type: text/plain; charset="utf-8" Create an array of masks which detail the writable and readonly bits for each control register. Apply them when writing to control registers, including the write to status during eret. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/nios2/cpu.h | 13 +++++ target/nios2/cpu.c | 100 +++++++++++++++++++++++++++++++++------ target/nios2/op_helper.c | 9 ++++ target/nios2/translate.c | 80 ++++++++++++++++++++++++------- 4 files changed, 171 insertions(+), 31 deletions(-) diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index 7189f9a45f..5f6b9242a2 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -190,6 +190,11 @@ struct CPUArchState { int error_code; }; =20 +typedef struct { + uint32_t writable; + uint32_t readonly; +} ControlRegState; + /** * Nios2CPU: * @env: #CPUNios2State @@ -213,9 +218,17 @@ struct ArchCPU { uint32_t reset_addr; uint32_t exception_addr; uint32_t fast_tlb_miss_addr; + + /* Bits within each control register which are reserved or readonly. */ + ControlRegState cr_state[NUM_CR_REGS]; }; =20 =20 +static inline bool nios2_cr_reserved(const ControlRegState *s) +{ + return (s->writable | s->readonly) =3D=3D 0; +} + void nios2_tcg_init(void); void nios2_cpu_do_interrupt(CPUState *cs); void dump_mmu(CPUNios2State *env); diff --git a/target/nios2/cpu.c b/target/nios2/cpu.c index fce16a2e77..b3c5ae681c 100644 --- a/target/nios2/cpu.c +++ b/target/nios2/cpu.c @@ -102,6 +102,64 @@ static ObjectClass *nios2_cpu_class_by_name(const char= *cpu_model) return object_class_by_name(TYPE_NIOS2_CPU); } =20 +static void realize_cr_status(CPUState *cs) +{ + Nios2CPU *cpu =3D NIOS2_CPU(cs); + + /* Begin with all fields of all registers are reserved. */ + memset(cpu->cr_state, 0, sizeof(cpu->cr_state)); + + /* + * The combination of writable and readonly is the set of all + * non-reserved fields. We apply writable as a mask to bits, + * and merge in existing readonly bits, before storing. + */ +#define WR_REG(C) cpu->cr_state[C].writable =3D -1 +#define RO_REG(C) cpu->cr_state[C].readonly =3D -1 +#define WR_FIELD(C, F) cpu->cr_state[C].writable |=3D R_##C##_##F##_MASK +#define RO_FIELD(C, F) cpu->cr_state[C].readonly |=3D R_##C##_##F##_MASK + + WR_FIELD(CR_STATUS, PIE); + WR_REG(CR_ESTATUS); + WR_REG(CR_BSTATUS); + RO_REG(CR_CPUID); + RO_REG(CR_EXCEPTION); + WR_REG(CR_BADADDR); + + /* TODO: These control registers are not present with the EIC. */ + WR_REG(CR_IENABLE); + RO_REG(CR_IPENDING); + + if (cpu->mmu_present) { + WR_FIELD(CR_STATUS, U); + WR_FIELD(CR_STATUS, EH); + + WR_FIELD(CR_PTEADDR, VPN); + WR_FIELD(CR_PTEADDR, PTBASE); + + RO_FIELD(CR_TLBMISC, D); + RO_FIELD(CR_TLBMISC, PERM); + RO_FIELD(CR_TLBMISC, BAD); + RO_FIELD(CR_TLBMISC, DBL); + WR_FIELD(CR_TLBMISC, PID); + WR_FIELD(CR_TLBMISC, WE); + WR_FIELD(CR_TLBMISC, RD); + WR_FIELD(CR_TLBMISC, WAY); + + WR_REG(CR_TLBACC); + } + + /* + * TODO: ECC (config, eccinj) and MPU (config, mpubase, mpuacc) are + * unimplemented, so their corresponding control regs remain reserved. + */ + +#undef WR_REG +#undef RO_REG +#undef WR_FIELD +#undef RO_FIELD +} + static void nios2_cpu_realizefn(DeviceState *dev, Error **errp) { CPUState *cs =3D CPU(dev); @@ -114,6 +172,7 @@ static void nios2_cpu_realizefn(DeviceState *dev, Error= **errp) return; } =20 + realize_cr_status(cs); qemu_init_vcpu(cs); cpu_reset(cs); =20 @@ -147,23 +206,26 @@ static void nios2_cpu_disas_set_info(CPUState *cpu, d= isassemble_info *info) static int nios2_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, = int n) { Nios2CPU *cpu =3D NIOS2_CPU(cs); - CPUClass *cc =3D CPU_GET_CLASS(cs); CPUNios2State *env =3D &cpu->env; + uint32_t val; =20 - if (n > cc->gdb_num_core_regs) { + if (n < 32) { /* GP regs */ + val =3D env->regs[n]; + } else if (n =3D=3D 32) { /* PC */ + val =3D env->pc; + } else if (n < 49) { /* Status regs */ + unsigned cr =3D n - 33; + if (nios2_cr_reserved(&cpu->cr_state[cr])) { + val =3D 0; + } else { + val =3D env->ctrl[n - 33]; + } + } else { + /* Invalid regs */ return 0; } =20 - if (n < 32) { /* GP regs */ - return gdb_get_reg32(mem_buf, env->regs[n]); - } else if (n =3D=3D 32) { /* PC */ - return gdb_get_reg32(mem_buf, env->pc); - } else if (n < 49) { /* Status regs */ - return gdb_get_reg32(mem_buf, env->ctrl[n - 33]); - } - - /* Invalid regs */ - return 0; + return gdb_get_reg32(mem_buf, val); } =20 static int nios2_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, in= t n) @@ -171,17 +233,25 @@ static int nios2_cpu_gdb_write_register(CPUState *cs,= uint8_t *mem_buf, int n) Nios2CPU *cpu =3D NIOS2_CPU(cs); CPUClass *cc =3D CPU_GET_CLASS(cs); CPUNios2State *env =3D &cpu->env; + uint32_t val; =20 if (n > cc->gdb_num_core_regs) { return 0; } + val =3D ldl_p(mem_buf); =20 if (n < 32) { /* GP regs */ - env->regs[n] =3D ldl_p(mem_buf); + env->regs[n] =3D val; } else if (n =3D=3D 32) { /* PC */ - env->pc =3D ldl_p(mem_buf); + env->pc =3D val; } else if (n < 49) { /* Status regs */ - env->ctrl[n - 33] =3D ldl_p(mem_buf); + unsigned cr =3D n - 33; + /* ??? Maybe allow the debugger to write to readonly fields. */ + val &=3D cpu->cr_state[cr].writable; + val |=3D cpu->cr_state[cr].readonly & env->ctrl[cr]; + env->ctrl[cr] =3D val; + } else { + g_assert_not_reached(); } =20 return 4; diff --git a/target/nios2/op_helper.c b/target/nios2/op_helper.c index 08ed3b4598..49fccf2c2c 100644 --- a/target/nios2/op_helper.c +++ b/target/nios2/op_helper.c @@ -34,6 +34,15 @@ void helper_raise_exception(CPUNios2State *env, uint32_t= index) #ifndef CONFIG_USER_ONLY void helper_eret(CPUNios2State *env, uint32_t new_status, uint32_t new_pc) { + Nios2CPU *cpu =3D env_archcpu(env); + + /* + * Both estatus and bstatus have no constraints on write; + * do not allow reserved fields in status to be set. + * TODO: more than this is required for shadow registers. + */ + new_status &=3D cpu->cr_state[CR_STATUS].writable; + env->ctrl[CR_STATUS] =3D new_status; env->pc =3D new_pc; cpu_loop_exit(env_cpu(env)); diff --git a/target/nios2/translate.c b/target/nios2/translate.c index 97e531529f..b8d75207a4 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -102,6 +102,7 @@ typedef struct DisasContext { TCGv_i32 zero; target_ulong pc; int mem_idx; + const ControlRegState *cr_state; } DisasContext; =20 static TCGv cpu_R[NUM_GP_REGS]; @@ -471,17 +472,26 @@ static void callr(DisasContext *dc, uint32_t code, ui= nt32_t flags) /* rC <- ctlN */ static void rdctl(DisasContext *dc, uint32_t code, uint32_t flags) { - R_TYPE(instr, code); - TCGv t1, t2; - if (!gen_check_supervisor(dc)) { return; } =20 +#ifdef CONFIG_USER_ONLY + g_assert_not_reached(); +#else + R_TYPE(instr, code); + TCGv t1, t2; + if (unlikely(instr.c =3D=3D R_ZERO)) { return; } =20 + /* Reserved registers read as zero. */ + if (nios2_cr_reserved(&dc->cr_state[instr.imm5])) { + tcg_gen_movi_tl(cpu_R[instr.c], 0); + return; + } + switch (instr.imm5) { case CR_IPENDING: /* @@ -505,6 +515,7 @@ static void rdctl(DisasContext *dc, uint32_t code, uint= 32_t flags) offsetof(CPUNios2State, ctrl[instr.imm5])); break; } +#endif } =20 /* ctlN <- rA */ @@ -519,6 +530,14 @@ static void wrctl(DisasContext *dc, uint32_t code, uin= t32_t flags) #else R_TYPE(instr, code); TCGv v =3D load_gpr(dc, instr.a); + uint32_t ofs =3D offsetof(CPUNios2State, ctrl[instr.imm5]); + uint32_t wr =3D dc->cr_state[instr.imm5].writable; + uint32_t ro =3D dc->cr_state[instr.imm5].readonly; + + /* Skip reserved or readonly registers. */ + if (wr =3D=3D 0) { + return; + } =20 switch (instr.imm5) { case CR_PTEADDR: @@ -530,17 +549,35 @@ static void wrctl(DisasContext *dc, uint32_t code, ui= nt32_t flags) case CR_TLBMISC: gen_helper_mmu_write_tlbmisc(cpu_env, v); break; - 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_st_tl(v, cpu_env, - offsetof(CPUNios2State, ctrl[instr.imm5])); + if (wr =3D=3D -1) { + /* The register is entirely writable. */ + tcg_gen_st_tl(v, cpu_env, ofs); + } else { + /* + * The register is partially read-only or reserved: + * merge the value. + */ + TCGv n =3D tcg_temp_new(); + + tcg_gen_andi_tl(n, v, wr); + + if (ro !=3D 0) { + TCGv o =3D tcg_temp_new(); + tcg_gen_ld_tl(o, cpu_env, ofs); + tcg_gen_andi_tl(o, o, ro); + tcg_gen_or_tl(n, n, o); + tcg_temp_free(o); + } + + tcg_gen_st_tl(n, cpu_env, ofs); + tcg_temp_free(n); + } break; } #endif @@ -818,9 +855,11 @@ static void nios2_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cs) { DisasContext *dc =3D container_of(dcbase, DisasContext, base); CPUNios2State *env =3D cs->env_ptr; + Nios2CPU *cpu =3D env_archcpu(env); int page_insns; =20 dc->mem_idx =3D cpu_mmu_index(env, false); + dc->cr_state =3D cpu->cr_state; =20 /* Bound the number of insns to execute to those left on the page. */ page_insns =3D -(dc->base.pc_first | TARGET_PAGE_MASK) / 4; @@ -932,16 +971,25 @@ void nios2_cpu_dump_state(CPUState *cs, FILE *f, int = flags) } =20 #if !defined(CONFIG_USER_ONLY) - for (i =3D 0; i < NUM_CR_REGS; i++) { - qemu_fprintf(f, "%9s=3D%8.8x ", cr_regnames[i], env->ctrl[i]); - if ((i + 1) % 4 =3D=3D 0) { - qemu_fprintf(f, "\n"); + int j; + + for (i =3D j =3D 0; i < NUM_CR_REGS; i++) { + if (!nios2_cr_reserved(&cpu->cr_state[i])) { + qemu_fprintf(f, "%9s=3D%8.8x ", cr_regnames[i], env->ctrl[i]); + if (++j % 4 =3D=3D 0) { + qemu_fprintf(f, "\n"); + } } } - qemu_fprintf(f, " mmu write: VPN=3D%05X PID %02X TLBACC %08X\n", - env->mmu.pteaddr_wr & R_CR_PTEADDR_VPN_MASK, - FIELD_EX32(env->mmu.tlbmisc_wr, CR_TLBMISC, PID), - env->mmu.tlbacc_wr); + if (j % 4 !=3D 0) { + qemu_fprintf(f, "\n"); + } + if (cpu->mmu_present) { + qemu_fprintf(f, " mmu write: VPN=3D%05X PID %02X TLBACC %08X\n", + env->mmu.pteaddr_wr & R_CR_PTEADDR_VPN_MASK, + FIELD_EX32(env->mmu.tlbmisc_wr, CR_TLBMISC, PID), + env->mmu.tlbacc_wr); + } #endif qemu_fprintf(f, "\n\n"); } --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650556391; cv=none; d=zohomail.com; s=zohoarc; b=lLs7B+w+cKUub/t+tm4OtN9JyEpy2hRfm1jc7yQvg10Kv3WHs7wg8wA3Ahum927W5YucLDeaHMsST4rbwMeiJzRRd3I0J+fYaO8+Qcokp/nWHdQ6ZCNGtz52Nym62wFI2TlEYMZVCHrvpYgspZec2zjVB3z9cgYcI3m9yp1zVVM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650556391; 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=/itFkW+4Funmul04niTFa6ZdVhMkyVOGIfuc98g3ypk=; b=OY2Zy14W+o+M7NZx3o+Abe+cqKzvwJHRfSlFAN5GwTl4mwZzLLZu6mi/kPvIyuO+WCGg4T0dk9VG7QFYqPbRMz2VX/tsr4YU1fZxS3dZlxwk2kzRFwxTVVHjFvK9UnatihiJVjAj/2+jA8niSoRlDy1TUH9AfQIbZoKFaZgCnhE= 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 1650556391543481.76702720777655; Thu, 21 Apr 2022 08:53:11 -0700 (PDT) Received: from localhost ([::1]:56430 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZ7G-0002XU-4J for importer@patchew.org; Thu, 21 Apr 2022 11:53:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43312) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYZr-00007a-O5 for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:39 -0400 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]:35526) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZq-0006OZ-5O for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:39 -0400 Received: by mail-pl1-x62f.google.com with SMTP id b7so5182750plh.2 for ; Thu, 21 Apr 2022 08:18:37 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.18.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:18:36 -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=/itFkW+4Funmul04niTFa6ZdVhMkyVOGIfuc98g3ypk=; b=G4ykTV+bZjw7GOvdpWA/xB8N2oBMWCqpl6o/3J+AhxBwHv6EecL1OvTK4CJrcV4yDC 4lGBwIzrs6nJDVGy9NBTjG7wTqBBlP8qQzE8qk1P84YQJdgpl8F5IwdPbe4lyAzB1LuP cElI9x6y/yZ+lb33WwxHyJQT6KDEi1zS4xwCM0YyoV2DeroHjAP6squFaF6HTK0Ab+tt kUXxQxyGezQvwFSzjF07edvoEXMeo4DB7jhOWzHMIbLMBVPVefb4GGjXOcLbaWXpk4Xu dE8WBgzMj4NmNdEExoa4z7LC9nfdRECBOVyDBbVislA40dy6+xOlhwa5KqLp9y3fDdyo xJWg== 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=/itFkW+4Funmul04niTFa6ZdVhMkyVOGIfuc98g3ypk=; b=vptS5TIoxgBfrKuh3lm6deXxQQfL/EhUw0rpilACn0KYTn3qnQDAEU2JQMtqNp5g9F 8WjpdDlziQ+ObwwyD+BaxfR+bEeuYwOZNZNbgwSSo7WHGrsXlqgLStBhvi1umoacK656 rwYCQ2Cpj/NmiwGFvPVMpMqplR2aGZuCzAIF6umSnOEplKs2EmYaI6rCtgPs+bbCsm14 oc9YVDFZ2P91F5ehjEw+fVhWmxR4a8/bHQ3cmgM0rPWUHWqtBWRuWtSuEhPK3FCfa+zm e1T8fzVukUJ6Ka0dqWmSHdThtaT+j1TymiSKkNv3VLenkZrZRLtWCqouAKYeXGXjSMBs ToRA== X-Gm-Message-State: AOAM532qALiUjZO3riRghexZs6El8nitypcoRVdDFjzRT969FaJK+mYo AVXPttHieOgkoOLSkftV2pPQWAKeDTbBLQ== X-Google-Smtp-Source: ABdhPJya1Ey1QC/4CcatqjdU/jkX8s8eNMhe/j2QFk0sQ8OINr/LfHmPKam/cjAWgMcrRXy1ouDt/w== X-Received: by 2002:a17:90a:3ee4:b0:1cb:c1a6:e5c3 with SMTP id k91-20020a17090a3ee400b001cbc1a6e5c3mr122093pjc.215.1650554316871; Thu, 21 Apr 2022 08:18:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 38/64] target/nios2: Implement cpuid Date: Thu, 21 Apr 2022 08:17:09 -0700 Message-Id: <20220421151735.31996-39-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62f; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62f.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650556393404100001 Content-Type: text/plain; charset="utf-8" Copy the existing cpu_index into the space reserved for CR_CPUID. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/cpu.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/target/nios2/cpu.c b/target/nios2/cpu.c index b3c5ae681c..a0c3e97d72 100644 --- a/target/nios2/cpu.c +++ b/target/nios2/cpu.c @@ -163,6 +163,7 @@ static void realize_cr_status(CPUState *cs) static void nios2_cpu_realizefn(DeviceState *dev, Error **errp) { CPUState *cs =3D CPU(dev); + Nios2CPU *cpu =3D NIOS2_CPU(cs); Nios2CPUClass *ncc =3D NIOS2_CPU_GET_CLASS(dev); Error *local_err =3D NULL; =20 @@ -176,6 +177,9 @@ static void nios2_cpu_realizefn(DeviceState *dev, Error= **errp) qemu_init_vcpu(cs); cpu_reset(cs); =20 + /* We have reserved storage for cpuid; might as well use it. */ + cpu->env.ctrl[CR_CPUID] =3D cs->cpu_index; + ncc->parent_realize(dev, errp); } =20 --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650556594; cv=none; d=zohomail.com; s=zohoarc; b=apJCWDUdF3+EkMKgerTSDr2nY1+r0gNYE0dXlAGhwrMnXDr1erKfAX5SXvELz6CSWVFb5osY4AgGyiRbaijDG3tvaOyMxFCcwjNTO9hc13QaD1S8Y65wG5JfXkXtg7ltpMTQYaL76H9WsMF2CGIJDBvEpCxP3jIEqhWKfdCGOUo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650556594; 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=zc1mqybjsWcyFEwC/S0EjY6YuNy3rNeZ6fKgxDEj7XU=; b=mtpWgY13Bg4ek52YcSA1bIxAmVPPrL73Cx7Jk6sL8pF6UsJSFDUycTnHbkpAdRWC0JQ4T8RV09H0hTe+/rJuRubfsQZ5qtuhDTxBo0QEGgSdHjxUhGf6u3r95A4RxXxbzDbdiR5iAnXzVsjrhiTLmJRFNFnW2rf/gSbOfKH5fEE= 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 1650556594372574.5921199203895; Thu, 21 Apr 2022 08:56:34 -0700 (PDT) Received: from localhost ([::1]:36612 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZAW-00027X-C1 for importer@patchew.org; Thu, 21 Apr 2022 11:56:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43328) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYa2-0000HX-AD for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:51 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]:46079) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYZr-0006PE-Jd for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:18:40 -0400 Received: by mail-pl1-x632.google.com with SMTP id h12so1498865plf.12 for ; Thu, 21 Apr 2022 08:18:39 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id z16-20020a056a00241000b004f3a647ae89sm24616248pfh.174.2022.04.21.08.18.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:18:37 -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=zc1mqybjsWcyFEwC/S0EjY6YuNy3rNeZ6fKgxDEj7XU=; b=DY4WslswatTehUfzCFU4/Xo4POtZ8FzrfjA0axhpS1cJCyTVy/fhxBz3xtvlRIFUvn umY3qjAt4hyEsUlprKA8Q/14ZRQo3AmSQCXsyqtJoZ+BiAcIsGlzBxlgAKEmqtmwScUT ky22D+z6IVGOJJTrsywdCjIk822GSJPe+c6uD3HdYNRYInTGyfWmm9oogJR+68e4cJQm FedS0Qfa66lp1ghN+O0IXT1wEJ0/A97f8TqzGESZ/XUeXFKO//RdT4xziOijOcmhfVxF QNr/j4oQXSW2ZfjRS2RqR1K07x6KusH4zymIUfuu6KZmsrX6E7E0wNYC+ZzQqkvc9Gah YOng== 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=zc1mqybjsWcyFEwC/S0EjY6YuNy3rNeZ6fKgxDEj7XU=; b=2obfa9V8jV3oubPhwxaKSWAGRddQQ9GLvsqfWc8HQt5dhRezrvruOy9mATcU9uh1/D XJQYZEuPnktsSV68+H9mKYHR0zCyc5oaCPliMe79n7G6onH8m+6Q2RRmWYQniAEX2nQr Zlh4tcs2iUu093Hsv5RAkrzIg4JtsT1koZMKWLyZcq37hJxx6xQkkHQ3mSSA7n09y0Ct 8cQqWQjML4EvTyk/fZr8BEBkL2pOwAWOJacMaJzkR1XmYgj1FFxmCQfUmPh3XVJeWwor zzFqSi5lf59s2hL62YNNt4qbTMs6rJsCk9bW4qihnUfPR/o2P/AfRxfqtBlvqI8ZjmZc LI+A== X-Gm-Message-State: AOAM531L2tlipL8wui2I//BYg2OP+EKQvv6mBDucAEILm6ccDCg9RldA RMwx3WhX5U1u9tkuNuGb+2BwfV0C0BkGMQ== X-Google-Smtp-Source: ABdhPJzO4j0J0pRwW4tPgNAJqLHrMpf5UkZAc2rsECYBCdXROaKKOazkzbo1tSShaFUYSem0UyK09A== X-Received: by 2002:a17:90b:3ecc:b0:1d2:c238:d92e with SMTP id rm12-20020a17090b3ecc00b001d2c238d92emr146334pjb.79.1650554318323; Thu, 21 Apr 2022 08:18:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 39/64] target/nios2: Implement CR_STATUS.RSIE Date: Thu, 21 Apr 2022 08:17:10 -0700 Message-Id: <20220421151735.31996-40-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x632.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650556595624100001 Content-Type: text/plain; charset="utf-8" Without EIC, this bit is RES1. So set the bit at reset, and add it to the readonly fields of CR_STATUS. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/cpu.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/target/nios2/cpu.c b/target/nios2/cpu.c index a0c3e97d72..7d734280d1 100644 --- a/target/nios2/cpu.c +++ b/target/nios2/cpu.c @@ -54,9 +54,9 @@ static void nios2_cpu_reset(DeviceState *dev) =20 #if defined(CONFIG_USER_ONLY) /* Start in user mode with interrupts enabled. */ - env->ctrl[CR_STATUS] =3D CR_STATUS_U | CR_STATUS_PIE; + env->ctrl[CR_STATUS] =3D CR_STATUS_RSIE | CR_STATUS_U | CR_STATUS_PIE; #else - env->ctrl[CR_STATUS] =3D 0; + env->ctrl[CR_STATUS] =3D CR_STATUS_RSIE; #endif } =20 @@ -127,6 +127,7 @@ static void realize_cr_status(CPUState *cs) WR_REG(CR_BADADDR); =20 /* TODO: These control registers are not present with the EIC. */ + RO_FIELD(CR_STATUS, RSIE); WR_REG(CR_IENABLE); RO_REG(CR_IPENDING); =20 --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650557755; cv=none; d=zohomail.com; s=zohoarc; b=jeGLjANuDbSGRQ4vj/iLfYfTj5MDbJQlcSJSXqLtcTk5ettmwLRpT6U5B8HE2UOYEBW1gBP00mIi76ikaKZFLVH0gAoGGZTE8R7+sSalYiqbJ7RfOSQUv9ASmYrCq31d8hrgb4cC8rxi+wGCo+M5+lUA5/ku6dfL3540ckK5iw0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650557755; 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=AAOBAdpFirowQkrpBHBZFvb0hegnnbNMVmy07bqALLY=; b=bMtaxa24pfjPRa8qhhTG3E9Qvnkp2TwoBXoCh3uByMC2jlnJs4EIMqOIa/lWGBQgzS1ZFzXtS7kBoEoAVUfaxu2t5jDxSi5pFUxloeVL8Z0Rr0ac/U6obLG77cugpj/oXWdYCYGuQ4oI9lpo+rgONcA/9LkBi9jBjWlQa5eQ/yY= 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 1650557755736236.68060156867398; Thu, 21 Apr 2022 09:15:55 -0700 (PDT) Received: from localhost ([::1]:46586 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZTG-0006X8-N4 for importer@patchew.org; Thu, 21 Apr 2022 12:15:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44830) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYcx-0005Qv-4K for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:58 -0400 Received: from mail-il1-x131.google.com ([2607:f8b0:4864:20::131]:36635) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYcq-00074l-KE for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:50 -0400 Received: by mail-il1-x131.google.com with SMTP id k12so3257733ilv.3 for ; Thu, 21 Apr 2022 08:21:43 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id j1-20020a926e01000000b002cc52449a19sm3985402ilc.35.2022.04.21.08.21.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:21:40 -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=AAOBAdpFirowQkrpBHBZFvb0hegnnbNMVmy07bqALLY=; b=Kqwr4mAJ74f1H4L1GpISBM0R6FH/kR0JtD2twdp28reN76GoLV5Ogt0aOM/rUHDtAP ivhFaBdZgVxWdwaE+qKiL5PeRoT/IJkhUF1o9PWz4XS2owcVHzh35nXE733V6Lc/3FZ3 nb4iSJBeeEWUe+i418ExHRY/LyJaKa0iBKEPwM9lTjBumqXdP29iF/+315hCNlJyD/UR ZSFz/1M9Sq10wvHSoPTFrpW1DiRJ2wzSTnQx26zhZuMQOXFbUxyIqgZbRCsbCmTvKgfF KnAkQedSt19BbLmUjscj9KsnYOiOMeRHEx74yrjwStVvvxX6VeBzVdvXN6YUGKuKQrcj MAig== 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=AAOBAdpFirowQkrpBHBZFvb0hegnnbNMVmy07bqALLY=; b=QXHB+XPUNvpTXA3d9MB7Gf8DBGXPbe4BkycrFfzfNi0lhTV458yRzO7LfUmHBn6n75 tiad4dOqQw3ZlAKRMiqJsqvxJ9COvuRE5dGwby2oGeAiv2puFFI2/+sTmCC8QGX8+Zp/ Dzqxu4d1EEtv+rAaUoBFOTybeTDVcNsyUymcD+gBtC7xCpnIndZXVmgMP6R/I3kxvs1J w917C2mLPLfDZS27SLnU4kKaa7Rw6hAcuKHH5Pet6CFf/nLEPGbjmMmWBDHCkGqRXLWF VI9hp+H78oEGaZyQqhLLQA//z/17XlBEogQrVWImbeJCumhCYM1JIOBqKcNLgy9aPwiY /ing== X-Gm-Message-State: AOAM533hnSNaqtswIjGCv2VcLmLEqEyM/3cvZAIjf1TJ8mhkHgBreP6A zEWvgtuDO6xom8edn41bltGxJ08mrwetdQ== X-Google-Smtp-Source: ABdhPJzN2+l7gbuppidfQ0p0iavn4wxUQxEO0GaZhA+1rpxxcimo0gfMDh6hrBz8MXP97gg/bJ4nZQ== X-Received: by 2002:a92:ca06:0:b0:2cc:3a47:e5d with SMTP id j6-20020a92ca06000000b002cc3a470e5dmr79595ils.115.1650554501504; Thu, 21 Apr 2022 08:21:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 40/64] target/nios2: Remove CPU_INTERRUPT_NMI Date: Thu, 21 Apr 2022 08:17:11 -0700 Message-Id: <20220421151735.31996-41-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::131; envelope-from=richard.henderson@linaro.org; helo=mail-il1-x131.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650557757066100001 Content-Type: text/plain; charset="utf-8" This interrupt bit is never set, so testing it in nios2_cpu_has_work is pointless. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/cpu.h | 2 -- target/nios2/cpu.c | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index 5f6b9242a2..5403eeae54 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -177,8 +177,6 @@ FIELD(CR_TLBMISC, EE, 24, 1) #define EXCP_MPUI 16 #define EXCP_MPUD 17 =20 -#define CPU_INTERRUPT_NMI CPU_INTERRUPT_TGT_EXT_3 - struct CPUArchState { uint32_t regs[NUM_GP_REGS]; uint32_t ctrl[NUM_CR_REGS]; diff --git a/target/nios2/cpu.c b/target/nios2/cpu.c index 7d734280d1..58e6ad0462 100644 --- a/target/nios2/cpu.c +++ b/target/nios2/cpu.c @@ -36,7 +36,7 @@ static void nios2_cpu_set_pc(CPUState *cs, vaddr value) =20 static bool nios2_cpu_has_work(CPUState *cs) { - return cs->interrupt_request & (CPU_INTERRUPT_HARD | CPU_INTERRUPT_NMI= ); + return cs->interrupt_request & CPU_INTERRUPT_HARD; } =20 static void nios2_cpu_reset(DeviceState *dev) --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650556273; cv=none; d=zohomail.com; s=zohoarc; b=bMvxVafvN+pZ4kXw91I1twPdthEMc06rH+veuJ8LlPzZhaTUrJztuM/Z1QL6U2b234tQQ5kReR+KFWmeK353TfXmXAXwWIrJehnOSKhNwTqah342smeGlP9MT/Zd1CkvLAL4DTw9NKGI+C7W3mr64x++84cKAcIZQ/GhLMlKU0Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650556273; 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=ta5mfA/TjGo/90uCFwSolM5LXBOeyq3GapdsZNXkkd8=; b=hIe7DTmQhEelHCyU6QCamOoaNDDaATX8vlA2iePB6uvt09yJ8R4pr9ohcN9QnZZO22qs1yd0yfsQ9Ol0CkEDaAgEDodc+L112ZUIiUEyLVfP3/UYZ+P28OvLkyzdHfMklsQYlg0B4N5Y0JAZWvvU4oEku3QJP1kTCNas0Yg1Zkg= 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 1650556273471963.1754585621235; Thu, 21 Apr 2022 08:51:13 -0700 (PDT) Received: from localhost ([::1]:51398 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZ5M-0007Kx-83 for importer@patchew.org; Thu, 21 Apr 2022 11:51:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44762) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYcu-0005GS-7N for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:48 -0400 Received: from mail-io1-xd30.google.com ([2607:f8b0:4864:20::d30]:43546) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYcq-00074v-KK for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:47 -0400 Received: by mail-io1-xd30.google.com with SMTP id 125so5620590iov.10 for ; Thu, 21 Apr 2022 08:21:43 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id j1-20020a926e01000000b002cc52449a19sm3985402ilc.35.2022.04.21.08.21.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:21:42 -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=ta5mfA/TjGo/90uCFwSolM5LXBOeyq3GapdsZNXkkd8=; b=ZiT9XIj3ABtAbyeTdgtXK5q94kxQ4WXcG5WWAzrHVShq3l9JvZVQWfJjHHFf28mTO2 dBcCKvu/iORnc71b1KpXaFKz5BCpQRjpclXpcJzhNBkvLpyvHsaihyi2OI1fDoinUUKe 7hdtU26ZYewU4KTyiSn4/6BKd4SXbklWgkQlR0Tyg6MT6wvDzDeASifL6aNvpD1YsbfP A+mN4wx+hAuRzAsguNMyP+K5hTXeCqiyyRFY2ekk7hbWw0UWj/pGRYiq2229aQTYfNg6 lIby39Eo0t9Wva061dKdYFweczNpKoK+vt8Cahr9fQlLZI9o+kxL5mrfbadJcCDOAV+E 9ccQ== 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=ta5mfA/TjGo/90uCFwSolM5LXBOeyq3GapdsZNXkkd8=; b=MkiTZf7wxZLKkcRo5F1xb2nu1LuZfYh99NFuhYN0IgxDHZRFxVmIaCPcTnRhZ0E29w JoOkiuUu8HjS6bhhS1JXU1YzGN8STBGKUBelFtc6c7oqNBe0Nv5KwYYOEMOzgCwR7ZWG ng1j+sOsrBfKBdCnI4W2drWDhU0ewK1sXODUso+UtdcqFuU2DeuhoY6S70q71R0QdWhN ls9TjTerRqn8xyyLNhw2OnHvaWYjENdAvSAA0RhVlA7NT7yzyyTttjc1ifJHwMuKseoX xm3t8BF+vzMp3xbNz4KUyORYhJBDUakNyoDgoREfcs25AFnrJxWj4rsT3KmNcUj7k43s b9wQ== X-Gm-Message-State: AOAM531vucxmX7IUbi99EX1ew0rEoJHa9ZQL2MGiIYt8aDt3H3OC2hKg yfYNxWJh+McFiUo5oVTIeM0oeA3y4exbOw== X-Google-Smtp-Source: ABdhPJwDIp4xRPVa36LqZTHgSUXHT9zqsr6jgoixxWDdwukxunfQFzWD55T4D7PBU/Gy5JVN0afh7Q== X-Received: by 2002:a05:6638:4128:b0:323:62b4:30c3 with SMTP id ay40-20020a056638412800b0032362b430c3mr55525jab.318.1650554502855; Thu, 21 Apr 2022 08:21:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 41/64] target/nios2: Support division error exception Date: Thu, 21 Apr 2022 08:17:12 -0700 Message-Id: <20220421151735.31996-42-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::d30; envelope-from=richard.henderson@linaro.org; helo=mail-io1-xd30.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650556274911100001 Content-Type: text/plain; charset="utf-8" Division may (optionally) raise a division exception. Since the linux kernel has been prepared for this for some time, enable it by default. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/cpu.h | 2 ++ target/nios2/helper.h | 2 ++ linux-user/nios2/cpu_loop.c | 4 +++ target/nios2/cpu.c | 1 + target/nios2/helper.c | 4 +++ target/nios2/op_helper.c | 29 ++++++++++++++++++ target/nios2/translate.c | 60 +++++++++++++------------------------ 7 files changed, 62 insertions(+), 40 deletions(-) diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index 5403eeae54..2ce76af457 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -207,7 +207,9 @@ struct ArchCPU { CPUNegativeOffsetState neg; CPUNios2State env; =20 + bool diverr_present; bool mmu_present; + uint32_t pid_num_bits; uint32_t tlb_num_ways; uint32_t tlb_num_entries; diff --git a/target/nios2/helper.h b/target/nios2/helper.h index 525b6b685b..6f5ec60b0d 100644 --- a/target/nios2/helper.h +++ b/target/nios2/helper.h @@ -19,6 +19,8 @@ */ =20 DEF_HELPER_FLAGS_2(raise_exception, TCG_CALL_NO_WG, noreturn, env, i32) +DEF_HELPER_FLAGS_3(divs, TCG_CALL_NO_WG, s32, env, s32, s32) +DEF_HELPER_FLAGS_3(divu, TCG_CALL_NO_WG, i32, env, i32, i32) =20 #if !defined(CONFIG_USER_ONLY) DEF_HELPER_3(eret, noreturn, env, i32, i32) diff --git a/linux-user/nios2/cpu_loop.c b/linux-user/nios2/cpu_loop.c index c5e68ac048..11ecb71843 100644 --- a/linux-user/nios2/cpu_loop.c +++ b/linux-user/nios2/cpu_loop.c @@ -38,6 +38,10 @@ void cpu_loop(CPUNios2State *env) /* just indicate that signals should be handled asap */ break; =20 + case EXCP_DIV: + force_sig_fault(TARGET_SIGFPE, TARGET_FPE_INTDIV, env->pc); + break; + case EXCP_TRAP: /* * TODO: This advance should be done in the translator, as diff --git a/target/nios2/cpu.c b/target/nios2/cpu.c index 58e6ad0462..54e7071907 100644 --- a/target/nios2/cpu.c +++ b/target/nios2/cpu.c @@ -263,6 +263,7 @@ static int nios2_cpu_gdb_write_register(CPUState *cs, u= int8_t *mem_buf, int n) } =20 static Property nios2_properties[] =3D { + DEFINE_PROP_BOOL("diverr_present", Nios2CPU, diverr_present, true), DEFINE_PROP_BOOL("mmu_present", Nios2CPU, mmu_present, true), /* ALTR,pid-num-bits */ DEFINE_PROP_UINT32("mmu_pid_num_bits", Nios2CPU, pid_num_bits, 8), diff --git a/target/nios2/helper.c b/target/nios2/helper.c index 4d9085f22f..c5a2dd65b1 100644 --- a/target/nios2/helper.c +++ b/target/nios2/helper.c @@ -119,6 +119,9 @@ void nios2_cpu_do_interrupt(CPUState *cs) case EXCP_UNALIGND: name =3D "Misaligned (destination)"; break; + case EXCP_DIV: + name =3D "DIV error"; + break; case EXCP_TRAP: name =3D "TRAP insn"; break; @@ -187,6 +190,7 @@ void nios2_cpu_do_interrupt(CPUState *cs) =20 case EXCP_SUPERI: case EXCP_ILLEGAL: + case EXCP_DIV: case EXCP_TRAP: do_exception(cpu, cpu->exception_addr, 0, false); break; diff --git a/target/nios2/op_helper.c b/target/nios2/op_helper.c index 49fccf2c2c..a19b504b0e 100644 --- a/target/nios2/op_helper.c +++ b/target/nios2/op_helper.c @@ -31,6 +31,35 @@ void helper_raise_exception(CPUNios2State *env, uint32_t= index) cpu_loop_exit(cs); } =20 +static void maybe_raise_div(CPUNios2State *env, uintptr_t ra) +{ + Nios2CPU *cpu =3D env_archcpu(env); + CPUState *cs =3D env_cpu(env); + + if (cpu->diverr_present) { + cs->exception_index =3D EXCP_DIV; + cpu_loop_exit_restore(cs, ra); + } +} + +int32_t helper_divs(CPUNios2State *env, int32_t num, int32_t den) +{ + if (unlikely(den =3D=3D 0) || unlikely(den =3D=3D -1 && num =3D=3D INT= 32_MIN)) { + maybe_raise_div(env, GETPC()); + return num; /* undefined */ + } + return num / den; +} + +uint32_t helper_divu(CPUNios2State *env, uint32_t num, uint32_t den) +{ + if (unlikely(den =3D=3D 0)) { + maybe_raise_div(env, GETPC()); + return num; /* undefined */ + } + return num / den; +} + #ifndef CONFIG_USER_ONLY void helper_eret(CPUNios2State *env, uint32_t new_status, uint32_t new_pc) { diff --git a/target/nios2/translate.c b/target/nios2/translate.c index b8d75207a4..b27269bf08 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -654,59 +654,39 @@ gen_r_shift_s(ror, rotr_tl) static void divs(DisasContext *dc, uint32_t code, uint32_t flags) { R_TYPE(instr, (code)); + TCGv dest; =20 - /* Stores into R_ZERO are ignored */ - if (unlikely(instr.c =3D=3D R_ZERO)) { - return; + if (instr.c =3D=3D R_ZERO) { + dest =3D tcg_temp_new(); + } else { + dest =3D cpu_R[instr.c]; } =20 - TCGv t0 =3D tcg_temp_new(); - TCGv t1 =3D tcg_temp_new(); - TCGv t2 =3D tcg_temp_new(); - TCGv t3 =3D tcg_temp_new(); + gen_helper_divs(dest, cpu_env, + load_gpr(dc, instr.a), load_gpr(dc, instr.b)); =20 - tcg_gen_ext32s_tl(t0, load_gpr(dc, instr.a)); - tcg_gen_ext32s_tl(t1, load_gpr(dc, instr.b)); - tcg_gen_setcondi_tl(TCG_COND_EQ, t2, t0, INT_MIN); - tcg_gen_setcondi_tl(TCG_COND_EQ, t3, t1, -1); - tcg_gen_and_tl(t2, t2, t3); - tcg_gen_setcondi_tl(TCG_COND_EQ, t3, t1, 0); - 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(cpu_R[instr.c], t0, t1); - tcg_gen_ext32s_tl(cpu_R[instr.c], cpu_R[instr.c]); - - tcg_temp_free(t3); - tcg_temp_free(t2); - tcg_temp_free(t1); - tcg_temp_free(t0); + if (instr.c =3D=3D R_ZERO) { + tcg_temp_free(dest); + } } =20 static void divu(DisasContext *dc, uint32_t code, uint32_t flags) { R_TYPE(instr, (code)); + TCGv dest; =20 - /* Stores into R_ZERO are ignored */ - if (unlikely(instr.c =3D=3D R_ZERO)) { - return; + if (instr.c =3D=3D R_ZERO) { + dest =3D tcg_temp_new(); + } else { + dest =3D cpu_R[instr.c]; } =20 - TCGv t0 =3D tcg_temp_new(); - TCGv t1 =3D tcg_temp_new(); - TCGv t2 =3D tcg_const_tl(0); - TCGv t3 =3D tcg_const_tl(1); + gen_helper_divu(dest, cpu_env, + load_gpr(dc, instr.a), load_gpr(dc, instr.b)); =20 - 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(cpu_R[instr.c], t0, t1); - tcg_gen_ext32s_tl(cpu_R[instr.c], cpu_R[instr.c]); - - tcg_temp_free(t3); - tcg_temp_free(t2); - tcg_temp_free(t1); - tcg_temp_free(t0); + if (instr.c =3D=3D R_ZERO) { + tcg_temp_free(dest); + } } =20 static void trap(DisasContext *dc, uint32_t code, uint32_t flags) --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650558601; cv=none; d=zohomail.com; s=zohoarc; b=b4qEolVd9obM/BdiusuOu5FN1UKmWy6pfQ5XQlgdCQQcL6gaon0tpWsEPOuhlWJ9x6Vdctwcpp+tQtuaYFXbf2OyycrChO/menALnHdvA5qwAJYPS2+yU0Pv8nwcA98Y1kmULE/i4ofpKFFSRbTPTEfrZXYkizAJmSGS3mnoD4A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650558601; 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=9FhYqgUBmxsHbCT6l/0igDDpPwMQ5ePyATfk3NegcvI=; b=jUvh0OswbcSUagwL2pMtpFLHdx8BMMj/+9sbnwMuDADkc6BERkWcys74lvb4FGn8ZTUNlbmAhSoAGbNtYPV1mRkA6e2LuxmhYUM/Bdhmw46GAtMj5uePW4gN2/vIetJc4wvlt/PG4qkjxYx290No6MOggBJElOeKhyff7kco3yk= 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 1650558601143434.47323537887394; Thu, 21 Apr 2022 09:30:01 -0700 (PDT) Received: from localhost ([::1]:56638 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZgt-0008WM-KQ for importer@patchew.org; Thu, 21 Apr 2022 12:29:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44764) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYcu-0005Ge-8P for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:48 -0400 Received: from mail-io1-xd2a.google.com ([2607:f8b0:4864:20::d2a]:46880) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYcr-00075C-2U for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:47 -0400 Received: by mail-io1-xd2a.google.com with SMTP id g21so5609535iom.13 for ; Thu, 21 Apr 2022 08:21:44 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id j1-20020a926e01000000b002cc52449a19sm3985402ilc.35.2022.04.21.08.21.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:21:43 -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=9FhYqgUBmxsHbCT6l/0igDDpPwMQ5ePyATfk3NegcvI=; b=JU8umLF8coRVc6poxFZswPbXj4dHMO87pIBOmoncfjeisvOSu7p/aPgDY5QhXHzYHn jqk3YI+rLB77Y1Co5m4FZIYHWjSxQZo7XyG3r+Xf5VafrabaZBDzlsMe9NUWIs2FYdyI OXaBuW08Ay3/wVmBEKcOU9N489vYP0IqNi6o7qhH6c2wpnFugDWMdNO83tJANvBYA+8h t8/ywI/5z3gsEbIcnXkDsH16uugYUIuzkwVe5R05OT+YKujc66Qiq1kvUi/p21C8ALTE TBpz3GRC/bTzxF3HnRTe3+BSNi0iolHl1re72LvjHh2IPIGuAv747U6aXabny9KV+SAw 099Q== 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=9FhYqgUBmxsHbCT6l/0igDDpPwMQ5ePyATfk3NegcvI=; b=vaWN7OKhBUT1E+xKM0FOkFbGqz4A1uIhYI/cSbK4lzs2NAX6yJdsRj8wUYGFHWvQxW w47lJF8WcwGrzzLw1K/h8BTi9BXw8/Og48vRqet8XWw5ao5OncSfkf7XdaIT6wPMoHcn qNYr0Lte4BENM5QQrSHcfAnCCcXjWyTj1PCXj1bOH1YTHsaPMVfTQOfD9zXInqdJC+za LBcVpKM3DN60yxvBtKdKvkrrF5e1+I5+L0OVYRXwdQM/D65ZFjgCowKYhLewrqyLF11I +dRZSfYYm+3SpQ4wNIK6eXQNy8YC2HBhY22/d6YnmuW/P8xb3JAQZBzRZo5oRcGUdmYG BQqw== X-Gm-Message-State: AOAM533l5YPf/I4ORlfRQlkrJm7DG7o9buMwMBYU/YSwc4FzKA+N6S4O PANrV0kd5JPipKFV7fHwAcx2c+iKmcXP7A== X-Google-Smtp-Source: ABdhPJw7Bk4Rp7FNugdNAnfwov6/810SEusVmAjAgAkXQyoiwN36nCNZkxhD9guN3Mlgfq2xkXXO5w== X-Received: by 2002:a05:6638:b3b:b0:328:738a:3996 with SMTP id c27-20020a0566380b3b00b00328738a3996mr73549jab.86.1650554504085; Thu, 21 Apr 2022 08:21:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 42/64] target/nios2: Use tcg_constant_tl Date: Thu, 21 Apr 2022 08:17:13 -0700 Message-Id: <20220421151735.31996-43-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::d2a; envelope-from=richard.henderson@linaro.org; helo=mail-io1-xd2a.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650558601442100001 Content-Type: text/plain; charset="utf-8" Replace current uses of tcg_const_tl, and remove the frees. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/translate.c | 30 ++++++------------------------ 1 file changed, 6 insertions(+), 24 deletions(-) diff --git a/target/nios2/translate.c b/target/nios2/translate.c index b27269bf08..f33015f942 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -99,7 +99,6 @@ =20 typedef struct DisasContext { DisasContextBase base; - TCGv_i32 zero; target_ulong pc; int mem_idx; const ControlRegState *cr_state; @@ -125,31 +124,20 @@ static uint8_t get_opxcode(uint32_t code) return instr.opx; } =20 -static TCGv load_zero(DisasContext *dc) +static TCGv load_gpr(DisasContext *dc, unsigned reg) { - if (!dc->zero) { - dc->zero =3D tcg_const_i32(0); - } - return dc->zero; -} - -static TCGv load_gpr(DisasContext *dc, uint8_t reg) -{ - if (likely(reg !=3D R_ZERO)) { - return cpu_R[reg]; - } else { - return load_zero(dc); + assert(reg < NUM_GP_REGS); + if (unlikely(reg =3D=3D R_ZERO)) { + return tcg_constant_tl(0); } + return cpu_R[reg]; } =20 static void t_gen_helper_raise_exception(DisasContext *dc, uint32_t index) { - TCGv_i32 tmp =3D tcg_const_i32(index); - tcg_gen_movi_tl(cpu_pc, dc->pc); - gen_helper_raise_exception(cpu_env, tmp); - tcg_temp_free_i32(tmp); + gen_helper_raise_exception(cpu_env, tcg_constant_i32(index)); dc->base.is_jmp =3D DISAS_NORETURN; } =20 @@ -876,14 +864,8 @@ static void nios2_tr_translate_insn(DisasContextBase *= dcbase, CPUState *cs) return; } =20 - dc->zero =3D NULL; - instr =3D &i_type_instructions[op]; instr->handler(dc, code, instr->flags); - - if (dc->zero) { - tcg_temp_free(dc->zero); - } } =20 static void nios2_tr_tb_stop(DisasContextBase *dcbase, CPUState *cs) --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650556777; cv=none; d=zohomail.com; s=zohoarc; b=f3T04JIBAfKnOhMptJNLul3a3+gd+RXHiDw7rxhTZFf7wicU8doDHvK2Z6gED9e69ILZ+ZYSnSPzgQ/t+O5LI7gr7+ItuGX0D0yY3M5wY5ryqJpfGVYZ3Vf+UCdwWJViPigpsDitA5B21UTZPQhK1eaPx/9/lYzrTbKH2NpHP+I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650556777; h=Content-Transfer-Encoding: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=53MZZNDB0rhSLJpIhEdQDdsMsfXozPnpLTtHb5F2LMY=; b=bEaQNxd4ToENMYMXJGO6tm9sv34ra65x3bXvWkqcuJDvO9YlUuLm/jWuo3o20vThwY59xCo3SuNk111VIXcDJdvq2vAPrMpvj6d87LLVySdBYtH1zCgXNiFvZG4ffonsGH90EHHEtOX80YMpuQtmKxxOr4vXQ6J8FXVM//g2V2Y= 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 1650556777627836.331675957948; Thu, 21 Apr 2022 08:59:37 -0700 (PDT) Received: from localhost ([::1]:45112 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZDU-0002ah-8N for importer@patchew.org; Thu, 21 Apr 2022 11:59:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44802) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYcv-0005LS-GP for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:49 -0400 Received: from mail-il1-x12f.google.com ([2607:f8b0:4864:20::12f]:40504) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYcs-00075e-AR for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:49 -0400 Received: by mail-il1-x12f.google.com with SMTP id y16so3246274ilc.7 for ; Thu, 21 Apr 2022 08:21:45 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id j1-20020a926e01000000b002cc52449a19sm3985402ilc.35.2022.04.21.08.21.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:21:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=53MZZNDB0rhSLJpIhEdQDdsMsfXozPnpLTtHb5F2LMY=; b=Mog8qViM69Oo9Ol8+uPv9Ady9VlEjh8mTqWt0wI1ngSr+oMxuyHeOpTs/5PCCbYBaW Kv2pukagCZ39cX7NWrrw310cBHYrXED2SD+GkpgU6k+5GPBjLHe038JSxFOYUz5TNjlg zNKvA2TF52lQovVd587pGfOGp0nECjMyLVo6SIRoLseokkF75Ls+F5smWeuIyoFueXb0 rsLdLAg1+kyzIRAhnJbQ29LbD+mKYtFjpOJn1OdzKc44C704fsvt6X5ICpqsPcDHBMhL yNavWkVuzZQA9WFJkeai19Q9/mq0ozt+zy9uKsCtWngNJ4ODcwbpz0etk14z1T6fVb++ Ywbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=53MZZNDB0rhSLJpIhEdQDdsMsfXozPnpLTtHb5F2LMY=; b=DpMw8b1okRCVKuk3AUOWfV59nJdESDNeynBWeW2MYfYJYlJrrym9NP5DjMdFE+dfrY nF+xnpNZrFiODAxwRQ0fG5u06L5nOwr3bBUu78NcJkpgIvBtUJ4tXaHaBz3wh/b3H9FJ IUIr2H5HnoKsoIFj4pL9QGgHohHG6gGVtsy/OoDoG2IswCGOPu8Rp41wgIBTsSLyUdPc T7Sl9LrBu5pres5BRyKPxzvabKavvOI+eW3ZuyRpUHcXSc1AV8vvcF/NryB91gJP+v7p HgbJtXbKiXIVORLx0XKfxCON3uYUXNzZDio5keJX8G6N5ImjFbAlEt9jLg6Svrm640C5 Fhjg== X-Gm-Message-State: AOAM5328F/i5LleCuEXOgVDP+91qYInZeEjRDH7FWkDYnLofrSsWD0ME 107wHGC1hM2cAtWZx/8RDSCsFsCbY2iscQ== X-Google-Smtp-Source: ABdhPJwu86edo05NQ259BwXJ/SQ3+DqnxsdBsUWBM+JumfyJ0YFCI5C5sihZdMcMTL3A6X3ldlo2Mg== X-Received: by 2002:a92:d212:0:b0:2cb:7635:9940 with SMTP id y18-20020a92d212000000b002cb76359940mr86318ily.132.1650554505232; Thu, 21 Apr 2022 08:21:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 43/64] target/nios2: Split out named structs for [IRJ]_TYPE Date: Thu, 21 Apr 2022 08:17:14 -0700 Message-Id: <20220421151735.31996-44-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::12f; envelope-from=richard.henderson@linaro.org; helo=mail-il1-x12f.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650556778663100001 Content-Type: text/plain; charset="utf-8" Currently the structures are anonymous within the macro. Pull them out to standalone types. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/nios2/translate.c | 48 ++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/target/nios2/translate.c b/target/nios2/translate.c index f33015f942..a3c63dbbbd 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -53,16 +53,18 @@ #define INSN_R_TYPE 0x3A =20 /* I-Type instruction parsing */ +typedef struct { + uint8_t op; + union { + uint16_t u; + int16_t s; + } imm16; + uint8_t b; + uint8_t a; +} InstrIType; + #define I_TYPE(instr, code) \ - struct { \ - uint8_t op; \ - union { \ - uint16_t u; \ - int16_t s; \ - } imm16; \ - uint8_t b; \ - uint8_t a; \ - } (instr) =3D { \ + InstrIType (instr) =3D { \ .op =3D extract32((code), 0, 6), \ .imm16.u =3D extract32((code), 6, 16), \ .b =3D extract32((code), 22, 5), \ @@ -70,15 +72,17 @@ } =20 /* R-Type instruction parsing */ +typedef struct { + uint8_t op; + uint8_t imm5; + uint8_t opx; + uint8_t c; + uint8_t b; + uint8_t a; +} InstrRType; + #define R_TYPE(instr, code) \ - struct { \ - uint8_t op; \ - uint8_t imm5; \ - uint8_t opx; \ - uint8_t c; \ - uint8_t b; \ - uint8_t a; \ - } (instr) =3D { \ + InstrRType (instr) =3D { \ .op =3D extract32((code), 0, 6), \ .imm5 =3D extract32((code), 6, 5), \ .opx =3D extract32((code), 11, 6), \ @@ -88,11 +92,13 @@ } =20 /* J-Type instruction parsing */ +typedef struct { + uint8_t op; + uint32_t imm26; +} InstrJType; + #define J_TYPE(instr, code) \ - struct { \ - uint8_t op; \ - uint32_t imm26; \ - } (instr) =3D { \ + InstrJType (instr) =3D { \ .op =3D extract32((code), 0, 6), \ .imm26 =3D extract32((code), 6, 26), \ } --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650556492; cv=none; d=zohomail.com; s=zohoarc; b=LOi8pt7N/UGJkvmE7wMGR0rvWuaMpiaQLy6LXkzmQZrgg9HyvmdUrVexqxnwtaRa7+SxmeLF0J90UNX/qGSoa3V68SzjnieApOW2gC/iCn57SDhcFzArpy0wXP/9UkveZuLPQi5gl3EEafwHw1Jp8N3fWVwk1H/k+xzz0ee/Cno= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650556492; h=Content-Transfer-Encoding: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=LYXN2H7RAxWIk+WrXFWxWMCl36JU50/w2TVFTCJsPfI=; b=lPBUg8gTEuH91pUALHBHth7uLlUuAdc9nQSP1TB/eDQJmO7/MIjVLOQxX7f4z2sc4S4xO3yfAvYp7HqSrc1n4hWvQg2NagI6YsYi6bEW9nz/OjrRtYddBEPlxEtPTiWF2J+5nDACOIUGWKS0VOeyxnMVL7mdBEELj3nFAlA++lY= 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 1650556492439135.0449956434776; Thu, 21 Apr 2022 08:54:52 -0700 (PDT) Received: from localhost ([::1]:60244 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZ8s-0006B0-VA for importer@patchew.org; Thu, 21 Apr 2022 11:54:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44804) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYcw-0005NJ-03 for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:50 -0400 Received: from mail-io1-xd31.google.com ([2607:f8b0:4864:20::d31]:45040) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYct-00076E-Bb for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:49 -0400 Received: by mail-io1-xd31.google.com with SMTP id e194so5607658iof.11 for ; Thu, 21 Apr 2022 08:21:46 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id j1-20020a926e01000000b002cc52449a19sm3985402ilc.35.2022.04.21.08.21.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:21:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=LYXN2H7RAxWIk+WrXFWxWMCl36JU50/w2TVFTCJsPfI=; b=ZIbKqlmmjphxwc6slT6ZrTB5iSOzO097fpDBy646dG9MAq7YdL4gwswvXXXqgMg0ee PDHHd1fumVvHhh61CU2MmIjVGEoVslqPffTHCo+cEAsF+OouNJaR6SxxFba2h0db2Ufv 5YlaOL9lQ2H351atzYG4yLKAVaWu34zFJGYG+77c8PxAi5qTUv/DaHqQQ2OPrsXfh8sS 1cjjcJFK7Lskwolk9PZQzddzqC+wqdxVIIPaIZudmRHsumYlOTiPCURyKwB7XHukP4oi OG0QVZPPC5DlsGDnXeYMOT1mlcw5k3+psD03HyEcTfhssxMSBOj+7uZHRGcP1Xtn8uHm OZiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=LYXN2H7RAxWIk+WrXFWxWMCl36JU50/w2TVFTCJsPfI=; b=f1H1b4KwJ09LZIAIo/t4r8hstTkHUBDdZRxNnLbQAnHR0fV1veA2VwHFuLva5c1X5h +fBr1LVnqyvY+p9UdGQ6HkCr8oKpIskmKVYvEAykozS6s1oQQ0Tdf8+yR+tYn5U/BH2E EbM7TRneEby0MB79ol8ls5uOG+pZ6qMT+MUVW3ONFVAf2gzMsBeUGHaHN419zAHvo5VE Kw+HNBVHEembjvxTNLj85Ixc+JyKinMMuZY7ZHiDxo9YTAumt6rjaDtHSrVSOrUDgB/3 Fh0h84KfEYbHQLLVeQUW+Re0fkBCVsPYzJCGGaXsy2DpZZM2hTpRrJRSx7Ql8/e9WiiM GyHw== X-Gm-Message-State: AOAM53093ioOwlXl2FvW3LYcyHRyGJZiggd9XIEAWoSXHHx6KV7NAzz/ vzBFU/tAaa9bq71T0rt1JRGDUhvVHmUxXw== X-Google-Smtp-Source: ABdhPJyk6TJO07kD3dikl6G05/ZHILQ+/eU6zzj3ivNrMffUHir0gEfTUDUtQ8zh7RAJnIjbMqCarQ== X-Received: by 2002:a05:6638:40a5:b0:326:3bad:fe1 with SMTP id m37-20020a05663840a500b003263bad0fe1mr41049jam.127.1650554506331; Thu, 21 Apr 2022 08:21:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 44/64] target/nios2: Split out helpers for gen_* translate macros Date: Thu, 21 Apr 2022 08:17:15 -0700 Message-Id: <20220421151735.31996-45-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::d31; envelope-from=richard.henderson@linaro.org; helo=mail-io1-xd31.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650556493897100001 Content-Type: text/plain; charset="utf-8" Do as little work as possible within the macros. Split out helper functions and pass in arguments instead. Signed-off-by: Richard Henderson --- target/nios2/translate.c | 215 +++++++++++++++++++++++++-------------- 1 file changed, 141 insertions(+), 74 deletions(-) diff --git a/target/nios2/translate.c b/target/nios2/translate.c index a3c63dbbbd..74672101ca 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -71,6 +71,21 @@ typedef struct { .a =3D extract32((code), 27, 5), \ } =20 +static target_ulong imm_unsigned(const InstrIType *i) +{ + return i->imm16.u; +} + +static target_ulong imm_signed(const InstrIType *i) +{ + return i->imm16.s; +} + +static target_ulong imm_shifted(const InstrIType *i) +{ + return i->imm16.u << 16; +} + /* R-Type instruction parsing */ typedef struct { uint8_t op; @@ -268,40 +283,62 @@ static void gen_bxx(DisasContext *dc, uint32_t code, = uint32_t flags) } =20 /* Comparison instructions */ -#define gen_i_cmpxx(fname, op3) = \ -static void (fname)(DisasContext *dc, uint32_t code, uint32_t flags) = \ -{ = \ - I_TYPE(instr, (code)); = \ - tcg_gen_setcondi_tl(flags, cpu_R[instr.b], cpu_R[instr.a], (op3)); = \ +static void do_i_cmpxx(DisasContext *dc, uint32_t insn, TCGCond cond, + target_ulong (*imm)(const InstrIType *)) +{ + I_TYPE(instr, insn); + + if (likely(instr.b !=3D R_ZERO)) { + tcg_gen_setcondi_tl(cond, cpu_R[instr.b], + load_gpr(dc, instr.a), imm(&instr)); + } } =20 -gen_i_cmpxx(gen_cmpxxsi, instr.imm16.s) -gen_i_cmpxx(gen_cmpxxui, instr.imm16.u) +#define gen_i_cmpxx(fname, imm) = \ + static void (fname)(DisasContext *dc, uint32_t code, uint32_t flags) = \ + { do_i_cmpxx(dc, code, flags, imm); } + +gen_i_cmpxx(gen_cmpxxsi, imm_signed) +gen_i_cmpxx(gen_cmpxxui, imm_unsigned) =20 /* Math/logic instructions */ -#define gen_i_math_logic(fname, insn, resimm, op3) = \ -static void (fname)(DisasContext *dc, uint32_t code, uint32_t flags) = \ -{ = \ - I_TYPE(instr, (code)); = \ - 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(cpu_R[instr.b], (resimm) ? (op3) : 0); = \ - } else { = \ - tcg_gen_##insn##_tl(cpu_R[instr.b], cpu_R[instr.a], (op3)); = \ - } = \ +static void do_i_math_logic(DisasContext *dc, uint32_t insn, + void (*fn)(TCGv, TCGv, target_long), + target_ulong (*imm)(const InstrIType *), + bool x_op_0_eq_x) +{ + I_TYPE(instr, insn); + target_ulong val; + + if (unlikely(instr.b =3D=3D R_ZERO)) { + /* Store to R_ZERO is ignored -- this catches the canonical NOP. */ + return; + } + + val =3D imm(&instr); + + if (instr.a =3D=3D R_ZERO) { + /* This catches the canonical expansions of movi and movhi. */ + tcg_gen_movi_tl(cpu_R[instr.b], x_op_0_eq_x ? val : 0); + } else { + fn(cpu_R[instr.b], cpu_R[instr.a], val); + } } =20 -gen_i_math_logic(addi, addi, 1, instr.imm16.s) -gen_i_math_logic(muli, muli, 0, instr.imm16.s) +#define gen_i_math_logic(fname, insn, x_op_0, imm) = \ + static void (fname)(DisasContext *dc, uint32_t code, uint32_t flags) = \ + { do_i_math_logic(dc, code, tcg_gen_##insn##_tl, imm, x_op_0); } =20 -gen_i_math_logic(andi, andi, 0, instr.imm16.u) -gen_i_math_logic(ori, ori, 1, instr.imm16.u) -gen_i_math_logic(xori, xori, 1, instr.imm16.u) +gen_i_math_logic(addi, addi, 1, imm_signed) +gen_i_math_logic(muli, muli, 0, imm_signed) =20 -gen_i_math_logic(andhi, andi, 0, instr.imm16.u << 16) -gen_i_math_logic(orhi , ori, 1, instr.imm16.u << 16) -gen_i_math_logic(xorhi, xori, 1, instr.imm16.u << 16) +gen_i_math_logic(andi, andi, 0, imm_unsigned) +gen_i_math_logic(ori, ori, 1, imm_unsigned) +gen_i_math_logic(xori, xori, 1, imm_unsigned) + +gen_i_math_logic(andhi, andi, 0, imm_shifted) +gen_i_math_logic(orhi , ori, 1, imm_shifted) +gen_i_math_logic(xorhi, xori, 1, imm_shifted) =20 /* Prototype only, defined below */ static void handle_r_type_instr(DisasContext *dc, uint32_t code, @@ -588,62 +625,92 @@ static void gen_cmpxx(DisasContext *dc, uint32_t code= , uint32_t flags) } =20 /* Math/logic instructions */ -#define gen_r_math_logic(fname, insn, op3) = \ -static void (fname)(DisasContext *dc, uint32_t code, uint32_t flags) = \ -{ = \ - R_TYPE(instr, (code)); = \ - if (likely(instr.c !=3D R_ZERO)) { = \ - tcg_gen_##insn(cpu_R[instr.c], load_gpr((dc), instr.a), (op3)); = \ - } = \ +static void do_ri_math_logic(DisasContext *dc, uint32_t insn, + void (*fn)(TCGv, TCGv, int32_t)) +{ + R_TYPE(instr, insn); + + if (likely(instr.c !=3D R_ZERO)) { + fn(cpu_R[instr.c], load_gpr(dc, instr.a), instr.imm5); + } } =20 -gen_r_math_logic(add, add_tl, load_gpr(dc, instr.b)) -gen_r_math_logic(sub, sub_tl, load_gpr(dc, instr.b)) -gen_r_math_logic(mul, mul_tl, load_gpr(dc, instr.b)) +static void do_rr_math_logic(DisasContext *dc, uint32_t insn, + void (*fn)(TCGv, TCGv, TCGv)) +{ + R_TYPE(instr, insn); =20 -gen_r_math_logic(and, and_tl, load_gpr(dc, instr.b)) -gen_r_math_logic(or, or_tl, load_gpr(dc, instr.b)) -gen_r_math_logic(xor, xor_tl, load_gpr(dc, instr.b)) -gen_r_math_logic(nor, nor_tl, load_gpr(dc, instr.b)) - -gen_r_math_logic(srai, sari_tl, instr.imm5) -gen_r_math_logic(srli, shri_tl, instr.imm5) -gen_r_math_logic(slli, shli_tl, instr.imm5) -gen_r_math_logic(roli, rotli_tl, instr.imm5) - -#define gen_r_mul(fname, insn) \ -static void (fname)(DisasContext *dc, uint32_t code, uint32_t flags) \ -{ \ - R_TYPE(instr, (code)); \ - if (likely(instr.c !=3D R_ZERO)) { \ - TCGv t0 =3D tcg_temp_new(); \ - tcg_gen_##insn(t0, cpu_R[instr.c], \ - load_gpr(dc, instr.a), load_gpr(dc, instr.b)); \ - tcg_temp_free(t0); \ - } \ + if (likely(instr.c !=3D R_ZERO)) { + fn(cpu_R[instr.c], load_gpr(dc, instr.a), load_gpr(dc, instr.b)); + } } =20 -gen_r_mul(mulxss, muls2_tl) -gen_r_mul(mulxuu, mulu2_tl) -gen_r_mul(mulxsu, mulsu2_tl) +#define gen_ri_math_logic(fname, insn) = \ + static void (fname)(DisasContext *dc, uint32_t code, uint32_t flags) = \ + { do_ri_math_logic(dc, code, tcg_gen_##insn##_tl); } =20 -#define gen_r_shift_s(fname, insn) = \ -static void (fname)(DisasContext *dc, uint32_t code, uint32_t flags) = \ -{ = \ - R_TYPE(instr, (code)); = \ - 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(cpu_R[instr.c], load_gpr((dc), instr.a), t0); = \ - tcg_temp_free(t0); = \ - } = \ +#define gen_rr_math_logic(fname, insn) = \ + static void (fname)(DisasContext *dc, uint32_t code, uint32_t flags) = \ + { do_rr_math_logic(dc, code, tcg_gen_##insn##_tl); } + +gen_rr_math_logic(add, add) +gen_rr_math_logic(sub, sub) +gen_rr_math_logic(mul, mul) + +gen_rr_math_logic(and, and) +gen_rr_math_logic(or, or) +gen_rr_math_logic(xor, xor) +gen_rr_math_logic(nor, nor) + +gen_ri_math_logic(srai, sari) +gen_ri_math_logic(srli, shri) +gen_ri_math_logic(slli, shli) +gen_ri_math_logic(roli, rotli) + +static void do_rr_mul_high(DisasContext *dc, uint32_t insn, + void (*fn)(TCGv, TCGv, TCGv, TCGv)) +{ + R_TYPE(instr, insn); + + if (likely(instr.c !=3D R_ZERO)) { + TCGv discard =3D tcg_temp_new(); + fn(discard, cpu_R[instr.c], load_gpr(dc, instr.a), + load_gpr(dc, instr.b)); + tcg_temp_free(discard); + } } =20 -gen_r_shift_s(sra, sar_tl) -gen_r_shift_s(srl, shr_tl) -gen_r_shift_s(sll, shl_tl) -gen_r_shift_s(rol, rotl_tl) -gen_r_shift_s(ror, rotr_tl) +#define gen_rr_mul_high(fname, insn) = \ + static void (fname)(DisasContext *dc, uint32_t code, uint32_t flags) = \ + { do_rr_mul_high(dc, code, tcg_gen_##insn##_tl); } + +gen_rr_mul_high(mulxss, muls2) +gen_rr_mul_high(mulxuu, mulu2) +gen_rr_mul_high(mulxsu, mulsu2) + +static void do_rr_shift(DisasContext *dc, uint32_t insn, + void (*fn)(TCGv, TCGv, TCGv)) +{ + R_TYPE(instr, insn); + + if (likely(instr.c !=3D R_ZERO)) { + TCGv sh =3D tcg_temp_new(); + + tcg_gen_andi_tl(sh, load_gpr(dc, instr.b), 31); + fn(cpu_R[instr.c], load_gpr(dc, instr.a), sh); + tcg_temp_free(sh); + } +} + +#define gen_rr_shift(fname, insn) = \ + static void (fname)(DisasContext *dc, uint32_t code, uint32_t flags) = \ + { do_rr_shift(dc, code, tcg_gen_##insn##_tl); } + +gen_rr_shift(sra, sar) +gen_rr_shift(srl, shr) +gen_rr_shift(sll, shl) +gen_rr_shift(rol, rotl) +gen_rr_shift(ror, rotr) =20 static void divs(DisasContext *dc, uint32_t code, uint32_t flags) { --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650557908; cv=none; d=zohomail.com; s=zohoarc; b=Im1ekHDosRWF3waI/hjdT+rdRkKZIIlUD5TD4jr+5hv1IwqEoX1czGJxRAEeMT1UU+9gZXE0KgrbTWzEsq/uDpAayAHGhzKTRtaxv4F8VvZjYjCMYR3f6tVO2niaCNa4lyGB4w5utMUuZT44TzzWCKcKNtF7R9POEnxFpBooYCU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650557908; 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=0uNoT3+OUhyAosm9NWtB5ENBcnPjQYLk4htQJxIl/PY=; b=hA0CMLY1nkU1yM80qYWVe818yR2zzbP7dDzxVoJ0FWRRZvzctrRn9xR5M8bjum6KW6SG190LXrOXI6wY2dDcNOYxNbsZikE7kiytnOV1W3m8vsmLSQE3O2BjiNuWdiHJuBH/Dob7zeCj/Bhe4G9+3YaQCaESNakPnEDn2JrlIwM= 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 1650557908060375.1504851681908; Thu, 21 Apr 2022 09:18:28 -0700 (PDT) Received: from localhost ([::1]:55110 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZVi-0003vw-RX for importer@patchew.org; Thu, 21 Apr 2022 12:18:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44832) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYcx-0005Qx-9n for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:58 -0400 Received: from mail-il1-x12d.google.com ([2607:f8b0:4864:20::12d]:42850) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYcu-00076d-Pe for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:50 -0400 Received: by mail-il1-x12d.google.com with SMTP id r17so3247746iln.9 for ; Thu, 21 Apr 2022 08:21:48 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id j1-20020a926e01000000b002cc52449a19sm3985402ilc.35.2022.04.21.08.21.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:21: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=0uNoT3+OUhyAosm9NWtB5ENBcnPjQYLk4htQJxIl/PY=; b=sKZWgrPtslQe8KLu99FH4pyMmMNRpYO5HFNS7DxywaEe7dLCa28B4avTDuDWkcbgOS 0gd24aYtjfhwPxYcpTlGKOE4zUJEd/B3y5ALFXVNYiqYLXWk1GfPEUxZlw4+A7qj0bao p273URqcHm44LCbL5Nf4QPL4+ipoqJBcE6bWbWg6CHHAlXilYmytFnDNUr/PP7+HCdDy qn6Lv+ATywrcFtelG/j5LNmGLaw7qrZjqmf0fiKJvVX3mDinbjG7Fnuy1smJrL5JLTV2 XPadMsAkgRDFg/kHSLkwAFtRrH/jAcF1wxwzofjCpSJmgLYzH3aRoH2S5Rq4oFTmCsry t+1Q== 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=0uNoT3+OUhyAosm9NWtB5ENBcnPjQYLk4htQJxIl/PY=; b=LexSXFEG3B+E/f4f/mRgPlQXYr92fX9HZ0NuAnqVtAU7xqEY8HofIP08dtplxHI76q DuW9ALYdG25RAtTrYDMkO/SCl4SsH3NmndDhMSp3yEHUjOuvzY54eQcZGDjo3PykWAfo wrHkw0VqDqROQuLrHCPvGyCtdslS6YgFRWEHHZCFM6+zxPDPputrswVSu5CMMzQGCU0Q bVaJna43DUOdMHKeXyVVSV8DEAu0mURfPzt92lb7zweXtG5tqbHmQjazthy2Cy2g/RQQ 47dopJ2QzbFpduSMVco16kniq2ZGa/4Vl/AsqywPiz0LTeJeG8jUTQtSMudr2lzAjKUP bHzg== X-Gm-Message-State: AOAM530rBhhr2RK8LIa664TUl+uRpmPsSrdAdmmSbSQtPVW+2kmXKv1G YT5vEYR4M+vFJ7wpwU591ZV52AXbih3XLg== X-Google-Smtp-Source: ABdhPJyChuzqRksvFYJ3jFMpneB+INdxfWelN44h9wHxeGbJXEv0imqFRmwyTBk4ctKb3RLbryEZgw== X-Received: by 2002:a05:6e02:1a8d:b0:2cd:5b32:972d with SMTP id k13-20020a056e021a8d00b002cd5b32972dmr70827ilv.229.1650554507733; Thu, 21 Apr 2022 08:21:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 45/64] target/nios2: Introduce dest_gpr Date: Thu, 21 Apr 2022 08:17:16 -0700 Message-Id: <20220421151735.31996-46-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::12d; envelope-from=richard.henderson@linaro.org; helo=mail-il1-x12d.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650557909972100001 Content-Type: text/plain; charset="utf-8" Constrain all references to cpu_R[] to load_gpr and dest_gpr. This will be required for supporting shadow register sets. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/translate.c | 144 +++++++++++++-------------------------- 1 file changed, 49 insertions(+), 95 deletions(-) diff --git a/target/nios2/translate.c b/target/nios2/translate.c index 74672101ca..98efb4e10a 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -122,6 +122,7 @@ typedef struct DisasContext { DisasContextBase base; target_ulong pc; int mem_idx; + TCGv sink; const ControlRegState *cr_state; } DisasContext; =20 @@ -154,6 +155,18 @@ static TCGv load_gpr(DisasContext *dc, unsigned reg) return cpu_R[reg]; } =20 +static TCGv dest_gpr(DisasContext *dc, unsigned reg) +{ + assert(reg < NUM_GP_REGS); + if (unlikely(reg =3D=3D R_ZERO)) { + if (dc->sink =3D=3D NULL) { + dc->sink =3D tcg_temp_new(); + } + return dc->sink; + } + return cpu_R[reg]; +} + static void t_gen_helper_raise_exception(DisasContext *dc, uint32_t index) { @@ -212,7 +225,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(cpu_R[R_RA], dc->base.pc_next); + tcg_gen_movi_tl(dest_gpr(dc, R_RA), dc->base.pc_next); jmpi(dc, code, flags); } =20 @@ -225,27 +238,10 @@ static void gen_ldx(DisasContext *dc, uint32_t code, = uint32_t flags) I_TYPE(instr, code); =20 TCGv addr =3D tcg_temp_new(); - TCGv data; - - /* - * WARNING: Loads into R_ZERO are ignored, but we must generate the - * memory access itself to emulate the CPU precisely. Load - * from a protected page to R_ZERO will cause SIGSEGV on - * the Nios2 CPU. - */ - if (likely(instr.b !=3D R_ZERO)) { - data =3D cpu_R[instr.b]; - } else { - data =3D tcg_temp_new(); - } + TCGv data =3D dest_gpr(dc, instr.b); =20 tcg_gen_addi_tl(addr, load_gpr(dc, instr.a), instr.imm16.s); tcg_gen_qemu_ld_tl(data, addr, dc->mem_idx, flags); - - if (unlikely(instr.b =3D=3D R_ZERO)) { - tcg_temp_free(data); - } - tcg_temp_free(addr); } =20 @@ -275,7 +271,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, cpu_R[instr.a], cpu_R[instr.b], l1); + tcg_gen_brcond_tl(flags, load_gpr(dc, instr.a), load_gpr(dc, instr.b),= l1); gen_goto_tb(dc, 0, dc->base.pc_next); gen_set_label(l1); gen_goto_tb(dc, 1, dc->base.pc_next + (instr.imm16.s & -4)); @@ -287,11 +283,8 @@ static void do_i_cmpxx(DisasContext *dc, uint32_t insn= , TCGCond cond, target_ulong (*imm)(const InstrIType *)) { I_TYPE(instr, insn); - - if (likely(instr.b !=3D R_ZERO)) { - tcg_gen_setcondi_tl(cond, cpu_R[instr.b], - load_gpr(dc, instr.a), imm(&instr)); - } + tcg_gen_setcondi_tl(cond, dest_gpr(dc, instr.b), + load_gpr(dc, instr.a), imm(&instr)); } =20 #define gen_i_cmpxx(fname, imm) = \ @@ -319,9 +312,9 @@ static void do_i_math_logic(DisasContext *dc, uint32_t = insn, =20 if (instr.a =3D=3D R_ZERO) { /* This catches the canonical expansions of movi and movhi. */ - tcg_gen_movi_tl(cpu_R[instr.b], x_op_0_eq_x ? val : 0); + tcg_gen_movi_tl(dest_gpr(dc, instr.b), x_op_0_eq_x ? val : 0); } else { - fn(cpu_R[instr.b], cpu_R[instr.a], val); + fn(dest_gpr(dc, instr.b), load_gpr(dc, instr.a), val); } } =20 @@ -429,7 +422,7 @@ static void eret(DisasContext *dc, uint32_t code, uint3= 2_t flags) #else TCGv tmp =3D tcg_temp_new(); tcg_gen_ld_tl(tmp, cpu_env, offsetof(CPUNios2State, ctrl[CR_ESTATUS])); - gen_helper_eret(cpu_env, tmp, cpu_R[R_EA]); + gen_helper_eret(cpu_env, tmp, load_gpr(dc, R_EA)); tcg_temp_free(tmp); =20 dc->base.is_jmp =3D DISAS_NORETURN; @@ -439,8 +432,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(cpu_pc, cpu_R[R_RA]); - + tcg_gen_mov_tl(cpu_pc, load_gpr(dc, R_RA)); dc->base.is_jmp =3D DISAS_JUMP; } =20 @@ -459,7 +451,7 @@ static void bret(DisasContext *dc, uint32_t code, uint3= 2_t flags) #else TCGv tmp =3D tcg_temp_new(); tcg_gen_ld_tl(tmp, cpu_env, offsetof(CPUNios2State, ctrl[CR_BSTATUS])); - gen_helper_eret(cpu_env, tmp, cpu_R[R_BA]); + gen_helper_eret(cpu_env, tmp, load_gpr(dc, R_BA)); tcg_temp_free(tmp); =20 dc->base.is_jmp =3D DISAS_NORETURN; @@ -472,7 +464,6 @@ static void jmp(DisasContext *dc, uint32_t code, uint32= _t flags) R_TYPE(instr, code); =20 tcg_gen_mov_tl(cpu_pc, load_gpr(dc, instr.a)); - dc->base.is_jmp =3D DISAS_JUMP; } =20 @@ -481,9 +472,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(cpu_R[instr.c], dc->base.pc_next); - } + tcg_gen_movi_tl(dest_gpr(dc, instr.c), dc->base.pc_next); } =20 /* @@ -495,7 +484,7 @@ static void callr(DisasContext *dc, uint32_t code, uint= 32_t flags) R_TYPE(instr, code); =20 tcg_gen_mov_tl(cpu_pc, load_gpr(dc, instr.a)); - tcg_gen_movi_tl(cpu_R[R_RA], dc->base.pc_next); + tcg_gen_movi_tl(dest_gpr(dc, R_RA), dc->base.pc_next); =20 dc->base.is_jmp =3D DISAS_JUMP; } @@ -511,15 +500,11 @@ static void rdctl(DisasContext *dc, uint32_t code, ui= nt32_t flags) g_assert_not_reached(); #else R_TYPE(instr, code); - TCGv t1, t2; - - if (unlikely(instr.c =3D=3D R_ZERO)) { - return; - } + TCGv t1, t2, dest =3D dest_gpr(dc, instr.c); =20 /* Reserved registers read as zero. */ if (nios2_cr_reserved(&dc->cr_state[instr.imm5])) { - tcg_gen_movi_tl(cpu_R[instr.c], 0); + tcg_gen_movi_tl(dest, 0); return; } =20 @@ -537,12 +522,12 @@ static void rdctl(DisasContext *dc, uint32_t code, ui= nt32_t flags) t2 =3D tcg_temp_new(); tcg_gen_ld_tl(t1, cpu_env, offsetof(CPUNios2State, ctrl[CR_IPENDIN= G])); tcg_gen_ld_tl(t2, cpu_env, offsetof(CPUNios2State, ctrl[CR_IENABLE= ])); - tcg_gen_and_tl(cpu_R[instr.c], t1, t2); + tcg_gen_and_tl(dest, t1, t2); tcg_temp_free(t1); tcg_temp_free(t2); break; default: - tcg_gen_ld_tl(cpu_R[instr.c], cpu_env, + tcg_gen_ld_tl(dest, cpu_env, offsetof(CPUNios2State, ctrl[instr.imm5])); break; } @@ -618,10 +603,8 @@ static void wrctl(DisasContext *dc, uint32_t code, uin= t32_t flags) 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, cpu_R[instr.c], cpu_R[instr.a], - cpu_R[instr.b]); - } + tcg_gen_setcond_tl(flags, dest_gpr(dc, instr.c), + load_gpr(dc, instr.a), load_gpr(dc, instr.b)); } =20 /* Math/logic instructions */ @@ -629,20 +612,14 @@ static void do_ri_math_logic(DisasContext *dc, uint32= _t insn, void (*fn)(TCGv, TCGv, int32_t)) { R_TYPE(instr, insn); - - if (likely(instr.c !=3D R_ZERO)) { - fn(cpu_R[instr.c], load_gpr(dc, instr.a), instr.imm5); - } + fn(dest_gpr(dc, instr.c), load_gpr(dc, instr.a), instr.imm5); } =20 static void do_rr_math_logic(DisasContext *dc, uint32_t insn, void (*fn)(TCGv, TCGv, TCGv)) { R_TYPE(instr, insn); - - if (likely(instr.c !=3D R_ZERO)) { - fn(cpu_R[instr.c], load_gpr(dc, instr.a), load_gpr(dc, instr.b)); - } + fn(dest_gpr(dc, instr.c), load_gpr(dc, instr.a), load_gpr(dc, instr.b)= ); } =20 #define gen_ri_math_logic(fname, insn) = \ @@ -671,13 +648,11 @@ static void do_rr_mul_high(DisasContext *dc, uint32_t= insn, void (*fn)(TCGv, TCGv, TCGv, TCGv)) { R_TYPE(instr, insn); + TCGv discard =3D tcg_temp_new(); =20 - if (likely(instr.c !=3D R_ZERO)) { - TCGv discard =3D tcg_temp_new(); - fn(discard, cpu_R[instr.c], load_gpr(dc, instr.a), - load_gpr(dc, instr.b)); - tcg_temp_free(discard); - } + fn(discard, dest_gpr(dc, instr.c), + load_gpr(dc, instr.a), load_gpr(dc, instr.b)); + tcg_temp_free(discard); } =20 #define gen_rr_mul_high(fname, insn) = \ @@ -692,14 +667,11 @@ static void do_rr_shift(DisasContext *dc, uint32_t in= sn, void (*fn)(TCGv, TCGv, TCGv)) { R_TYPE(instr, insn); + TCGv sh =3D tcg_temp_new(); =20 - if (likely(instr.c !=3D R_ZERO)) { - TCGv sh =3D tcg_temp_new(); - - tcg_gen_andi_tl(sh, load_gpr(dc, instr.b), 31); - fn(cpu_R[instr.c], load_gpr(dc, instr.a), sh); - tcg_temp_free(sh); - } + tcg_gen_andi_tl(sh, load_gpr(dc, instr.b), 31); + fn(dest_gpr(dc, instr.c), load_gpr(dc, instr.a), sh); + tcg_temp_free(sh); } =20 #define gen_rr_shift(fname, insn) = \ @@ -715,39 +687,15 @@ gen_rr_shift(ror, rotr) static void divs(DisasContext *dc, uint32_t code, uint32_t flags) { R_TYPE(instr, (code)); - TCGv dest; - - if (instr.c =3D=3D R_ZERO) { - dest =3D tcg_temp_new(); - } else { - dest =3D cpu_R[instr.c]; - } - - gen_helper_divs(dest, cpu_env, + gen_helper_divs(dest_gpr(dc, instr.c), cpu_env, load_gpr(dc, instr.a), load_gpr(dc, instr.b)); - - if (instr.c =3D=3D R_ZERO) { - tcg_temp_free(dest); - } } =20 static void divu(DisasContext *dc, uint32_t code, uint32_t flags) { R_TYPE(instr, (code)); - TCGv dest; - - if (instr.c =3D=3D R_ZERO) { - dest =3D tcg_temp_new(); - } else { - dest =3D cpu_R[instr.c]; - } - - gen_helper_divu(dest, cpu_env, + gen_helper_divu(dest_gpr(dc, instr.c), cpu_env, load_gpr(dc, instr.a), load_gpr(dc, instr.b)); - - if (instr.c =3D=3D R_ZERO) { - tcg_temp_free(dest); - } } =20 static void trap(DisasContext *dc, uint32_t code, uint32_t flags) @@ -937,8 +885,14 @@ static void nios2_tr_translate_insn(DisasContextBase *= dcbase, CPUState *cs) return; } =20 + dc->sink =3D NULL; + instr =3D &i_type_instructions[op]; instr->handler(dc, code, instr->flags); + + if (dc->sink) { + tcg_temp_free(dc->sink); + } } =20 static void nios2_tr_tb_stop(DisasContextBase *dcbase, CPUState *cs) --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650558774; cv=none; d=zohomail.com; s=zohoarc; b=oD4nfLdwi+WDQC4Lnd0rMJ+TDr5vDhnZqS4gT61Ze39HwuVm6jVWWRMlR6m121asq5ZXDq/SwQXmEGjgV+f4T7m8Wy+zQCiVVPBtaBtUUVpjScPnGpoc+c6TTeJrJUJalEQsNOQqHuZjS6n14V9wFtt/PNScRaD06VrjYMwoVLk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650558774; 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=9YY5PG1tu/+nZOuQaOTMq7AvychoPpeLt3DavtA6KJ8=; b=WXHTHirLeqyUPPAiJVR6KSkx87LkwUm5bYAxFjpfbnmmYk56YLqa5g8WAnPwzdO+bfM53fxR4w9+YsUt9V4j4H5u4G1a3+pwpWHYCov20205QI9r7y8EEclzGE46fow/TiIjVoxrxBYry77YgIjWUTUxPb4/lu/rxvjCOUZ1CIg= 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 1650558774639859.1275064356786; Thu, 21 Apr 2022 09:32:54 -0700 (PDT) Received: from localhost ([::1]:36902 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZjh-0006Uq-Hi for importer@patchew.org; Thu, 21 Apr 2022 12:32:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44842) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYcx-0005R1-FJ for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:58 -0400 Received: from mail-il1-x136.google.com ([2607:f8b0:4864:20::136]:38507) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYcv-000771-VD for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:51 -0400 Received: by mail-il1-x136.google.com with SMTP id i8so3251459ila.5 for ; Thu, 21 Apr 2022 08:21:49 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id j1-20020a926e01000000b002cc52449a19sm3985402ilc.35.2022.04.21.08.21.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:21: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=9YY5PG1tu/+nZOuQaOTMq7AvychoPpeLt3DavtA6KJ8=; b=ibyCRXQRAjC8rbOjom3Mh/UDrS9kXcjjoT6Du04aW/QVRwI6vc1b3WeGr8aX8B/RKI b9w596mIG1KekQba6E6BphHjbS/Q7kaug8/n8njefrnwsYh0DOFv0sVTeFtYviyqFzoo AXth5vaWEJLdq+k4Ar5KzadFBBzIJohc9zD+ZXf6UgTkUK1gvrsGcMTQTCVWRvMlzVJx 76nqFP5/E/3VKjk5jI+ev94ZnyReQaT4cXs2mzPK9fFagHRhR2JD/ru1uUBy1I2tzmUR gThCsYs9V5oA8lBb2RXUIl4djU0tfmPnAOiNlK2YF1T42RNo/5vkG96FPAUjLc3mNmDa R5mg== 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=9YY5PG1tu/+nZOuQaOTMq7AvychoPpeLt3DavtA6KJ8=; b=0KPKwjVALTaRUf5dJngEqMJou1Joe7HzKu7DEzENE8Bi6GK6B7/B0PuzEQpPKqUvSE FE3FCyK1KHSaIvkfSgkv1Inucpssa98JR8oEUs/Ik+SDGOV162/tKMjP7hHweEiT95h1 fgNLUkBMrx4QGu6rp3n6IeSLGaucYgC6dYHkygPlNJVTXhnjtEvkyseAoGzHF4Kc+7CC 7tBkIdN5tacOc5dHNLdmX92dJi4dlwTaVDnaT9kNMZHP7UFbvBjGnySc3rm0NaO4KpkF J/E6vLP7fC5o0uZLNN6Px0mVm1sC3r9L5OFSI6sMQooCl7zFyRYBT0LzaQ5fqn9vOwft 0fIw== X-Gm-Message-State: AOAM53108bUsNAyD52CPKD/ugk0YPmjuLuuxtoWe1mVGucGkWAcGIFGZ 3kecEQIhJ9mY5JdCnQlVUCzbbRlQBk3a4Q== X-Google-Smtp-Source: ABdhPJyDjFEFGT7NXTRm8IiTDUO0awVQL4GDkL4hho7AtEjC634Bj72wTfC+4ZYmryL/Xo3lvJ/EyA== X-Received: by 2002:a92:8e06:0:b0:2c7:a8f8:3c5d with SMTP id c6-20020a928e06000000b002c7a8f83c5dmr77715ild.107.1650554508957; Thu, 21 Apr 2022 08:21:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 46/64] target/nios2: Drop CR_STATUS_EH from tb->flags Date: Thu, 21 Apr 2022 08:17:17 -0700 Message-Id: <20220421151735.31996-47-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::136; envelope-from=richard.henderson@linaro.org; helo=mail-il1-x136.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650558776728100001 Content-Type: text/plain; charset="utf-8" There's nothing about EH that affects translation, so there's no need to include it in tb->flags. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/cpu.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index 2ce76af457..6417e9bbfc 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -272,7 +272,7 @@ static inline void cpu_get_tb_cpu_state(CPUNios2State *= env, target_ulong *pc, { *pc =3D env->pc; *cs_base =3D 0; - *flags =3D env->ctrl[CR_STATUS] & (CR_STATUS_EH | CR_STATUS_U); + *flags =3D env->ctrl[CR_STATUS] & CR_STATUS_U; } =20 #endif /* NIOS2_CPU_H */ --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650556704; cv=none; d=zohomail.com; s=zohoarc; b=jgWwJP5AbNCII0eZXZHNqD5oHBA+iS4kX1zEkC3hSEFqnpIS2snjyxcpHgFsgmmF7cyUjNh9L8By4hV+YkZ0IN8o6uAxSZrHkI73JU1cXSzT5KhBLA1GePvmxXs+E2pYc+S9Qfd60XG6cz+gZKfdwkQYx1uyzgjSG1ULRrqEY34= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650556704; 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=7BYWPqh7sPffzPeApLBqryy8kqd21hiyG0fC6JPYfUo=; b=hXZx5kZB1MXnLJwviKgMKPTdm6OxD2I0fMCBkGXFjkOu+xYerer0ufZeQJRNPeiTVlXzv2TWrkVtUXPkt0X50JeUkoWsW6wILBp5V3tgAfKxVU9q/WWwTQpnzWRmWz8xIZazO25an54F3qieDreMFEZUqw9LtYPNWbXxPZdH4T0= 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 1650556704156579.7207435456864; Thu, 21 Apr 2022 08:58:24 -0700 (PDT) Received: from localhost ([::1]:40362 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZCJ-0006vw-5n for importer@patchew.org; Thu, 21 Apr 2022 11:58:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44872) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYd1-0005R4-30 for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:58 -0400 Received: from mail-il1-x133.google.com ([2607:f8b0:4864:20::133]:34706) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYcx-00077Q-AK for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:52 -0400 Received: by mail-il1-x133.google.com with SMTP id r11so3269099ila.1 for ; Thu, 21 Apr 2022 08:21:50 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id j1-20020a926e01000000b002cc52449a19sm3985402ilc.35.2022.04.21.08.21.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:21: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=7BYWPqh7sPffzPeApLBqryy8kqd21hiyG0fC6JPYfUo=; b=umyF8GDEB2+BwFRj7VtwDRWyXt4XCh3ieUfk3MNqTUomPfuasi+oSuLOv5LJWDTHjq ZJfQxzq52tHYhbDxLFRcFkV6GY4HgeiqBsvUSSj22SQ/6XwdslsAL216LPkJixFrBucp dIUDhvFMblGN8PtAzfY3TkJ+xxBqEyKm/XeRI7iq7LX6ttwHgPm1PkhYrY9FyZUDJJjm yGzL5Wlj0doCJQ3UHmO9/B6gdhIWiaG/0TgWP9+rbbs4hI1N4GEpN52DZBZTH25vPBnh 1P5QI0IJhUJ1/INR9VtPcyrdkD7jdKaRbpntdbZmTXTfdzCV3JtFUAP9j9TB9WbpGmJz kBgw== 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=7BYWPqh7sPffzPeApLBqryy8kqd21hiyG0fC6JPYfUo=; b=1QjfzdkgCMkZWfSbfOusgNyZMRdyZScZg92Yjl6AXKFPgo68PfdJfViRXEscvMYSSK /WuuPyFbwDyOan6lbSvEiPRKkpn/1RdMUmyDM5TZA9xL/ow0LCkwP/G9pakZqEm9LjxV q6scNVy6wRrrgsCK3B6AnqsF2umu+9/l5XCRQt4gC25pziLp525nMFWYMA2eXfXBuXzn ynhUL5N4SZy4XoCRyYYLTZXTAzN+uaoXLiEPd2NKthUdFxkNWk0HhjtD/6J8WQ8gQozw 3mvYyox9DvRLhxAlhvvi6R3Y7VXGkmTO05sGqRWzJgdRUWBgrlrQ/cJkL2OLYlsicso0 sI8g== X-Gm-Message-State: AOAM531j934VE/oigogRH+33IW8Rw13kNbHjswSY4dGpFqcvscnwDUKL B24K3iGfO6wgb0mb2jhrw8X1mQFDOV8JVQ== X-Google-Smtp-Source: ABdhPJy9YvWaQ6nviq2496RXbOwjRw4Ps+MlwbJ7SpiNOiBOhfbmRmqYyirulbfx1CWINir3Q8pIeg== X-Received: by 2002:a92:ce05:0:b0:2cd:6e4b:e456 with SMTP id b5-20020a92ce05000000b002cd6e4be456mr17329ilo.7.1650554510225; Thu, 21 Apr 2022 08:21:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 47/64] target/nios2: Enable unaligned traps for system mode Date: Thu, 21 Apr 2022 08:17:18 -0700 Message-Id: <20220421151735.31996-48-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::133; envelope-from=richard.henderson@linaro.org; helo=mail-il1-x133.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650556706194100001 Content-Type: text/plain; charset="utf-8" Unaligned traps are optional, but required with an mmu. Turn them on always, because the fallback behaviour undefined. Enable alignment checks in the config file. Unwind the guest pc properly from do_unaligned_access. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- configs/targets/nios2-softmmu.mak | 1 + target/nios2/helper.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/configs/targets/nios2-softmmu.mak b/configs/targets/nios2-soft= mmu.mak index 9a372f0717..1e93b54cd1 100644 --- a/configs/targets/nios2-softmmu.mak +++ b/configs/targets/nios2-softmmu.mak @@ -1 +1,2 @@ TARGET_ARCH=3Dnios2 +TARGET_ALIGNED_ONLY=3Dy diff --git a/target/nios2/helper.c b/target/nios2/helper.c index c5a2dd65b1..2e9fea4a01 100644 --- a/target/nios2/helper.c +++ b/target/nios2/helper.c @@ -241,8 +241,8 @@ void nios2_cpu_do_unaligned_access(CPUState *cs, vaddr = addr, CPUNios2State *env =3D &cpu->env; =20 env->ctrl[CR_BADADDR] =3D addr; - env->ctrl[CR_EXCEPTION] =3D FIELD_DP32(0, CR_EXCEPTION, CAUSE, EXCP_UN= ALIGN); - helper_raise_exception(env, EXCP_UNALIGN); + cs->exception_index =3D EXCP_UNALIGN; + cpu_loop_exit_restore(cs, retaddr); } =20 bool nios2_cpu_tlb_fill(CPUState *cs, vaddr address, int size, --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650558955; cv=none; d=zohomail.com; s=zohoarc; b=Z1grnC1UTq2UuTBabAqG/BiKEjTYCvc0mGjFTeK/qdZW6ht1y+UfqON37guQ1OuEeoodJHQ6Wnn81cIxSpUHabSwZqTPIzBf/21Jv8/Z0o31kI5P+8D0ScoK3ti8y1mOykhR6fdS+2+/zKiGefaTiNwotM94Su7VRd2ly6W1unQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650558955; 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=MGQntkmBNb70hQZGHLgUoeJ3BSXEiaygJllOksu/0OM=; b=KeY2mEwj4VyTU70XHJ3hIpZI4vLovmDFc2K/mY2WPRA2UUqwGvHUSOalchFXIB84ohmCcWuVvJz2UP/QHNoqA0gnS60+fkUZk+4wM/Ewx0nyIMxoKdO+S5S/Jz3cdDDEELZpHumJGxI8hORng0wpWNJLLVkq3K5bZ5rnHSNjkRU= 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 1650558955591116.60085291278256; Thu, 21 Apr 2022 09:35:55 -0700 (PDT) Received: from localhost ([::1]:45134 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZmc-0004Gr-7z for importer@patchew.org; Thu, 21 Apr 2022 12:35:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44912) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYd2-0005R6-Cd for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:58 -0400 Received: from mail-io1-xd2d.google.com ([2607:f8b0:4864:20::d2d]:33490) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYd0-00077k-PR for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:56 -0400 Received: by mail-io1-xd2d.google.com with SMTP id p62so5685078iod.0 for ; Thu, 21 Apr 2022 08:21:52 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id j1-20020a926e01000000b002cc52449a19sm3985402ilc.35.2022.04.21.08.21.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:21: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=MGQntkmBNb70hQZGHLgUoeJ3BSXEiaygJllOksu/0OM=; b=wbl65uu7KXiff+qAyQwWq+rbhrmxYXpsfGNzylYqEh8ZJ+uMp2Hql7rYms6NQQPZuW DdLOSk+VefmMCmLTObSkWkjmHtQlYhS8MIyVccIMQ6ITXH6AZx5hRNqSPzmpKdycdR8T AJOBWtaIYc/EavnDV0l09/LllzO0XEG4k2sfbTcdGPfoGvaODcpPVTzv7HNVUkd0n2sy 4+H1bwexjmn0SK1SByU4eO6wXV7G+aMpKusPM2j0cRaBX6rhIgFs9w3C1Rg4s972EjN7 7H198wuFdNWJzzMQTvilZRJIrYhTlgiA11nbX3A78LtICi7EZyfVq8GQPz8S4FkoGWN0 xsLg== 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=MGQntkmBNb70hQZGHLgUoeJ3BSXEiaygJllOksu/0OM=; b=J874wG0i/0kf/Gaow1Tm1R8g5jqltQSzojwsoUytd70ff61Jrr/c7o9AyNySKdqppo NmQMCv0fh0WDeJQgKM4ZY0HSfmPMDh6i/Oa19Uxt0BWmnCg8Q0lbNa4fGDpEmcM04881 ymYbxegA4k0O06JIqjfI7f0xL6Qnz77l4nYKApqZxNb2DjzUcmybBAt57Z4sH2leWQMo Vd3hxZ/1iH3FHE8Vmv4Vq0syJpcBa85vjVOfqbp76gsZXjxD9MFwYZUm0Zno5kF1/jp6 h2gotXOWd7hTRlVGfuUwILLUdrk8N0qvocERV64xNRIaZNDdDEXD5BXmtXbaaDA9NiKj BIFQ== X-Gm-Message-State: AOAM531hx81jb69Kamfb/WwVOREvVRg6gpEKoYFuJdX9eCRLxtLorySi nQJvDhUkJyxGJtAMzyLZLgrPSWZZyig5yA== X-Google-Smtp-Source: ABdhPJz7th2ystjkVwzm61UEPe+iByKlYm0iXvXqRIimm36QNw2gFzyiwJ0zI3AByJLfKI+4T831Lg== X-Received: by 2002:a05:6638:2491:b0:323:d48f:8417 with SMTP id x17-20020a056638249100b00323d48f8417mr23205jat.315.1650554511577; Thu, 21 Apr 2022 08:21:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 48/64] target/nios2: Create gen_jumpr Date: Thu, 21 Apr 2022 08:17:19 -0700 Message-Id: <20220421151735.31996-49-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::d2d; envelope-from=richard.henderson@linaro.org; helo=mail-io1-xd2d.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650558957465100001 Content-Type: text/plain; charset="utf-8" Split out a function to perform an indirect branch. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/translate.c | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/target/nios2/translate.c b/target/nios2/translate.c index 98efb4e10a..e39e349389 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -36,7 +36,6 @@ #include "semihosting/semihost.h" =20 /* 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= */ =20 #define INSTRUCTION_FLG(func, flags) { (func), (flags) } @@ -189,6 +188,16 @@ static void gen_goto_tb(DisasContext *dc, int n, uint3= 2_t dest) } } =20 +static void gen_jumpr(DisasContext *dc, int regno, bool is_call) +{ + tcg_gen_mov_tl(cpu_pc, load_gpr(dc, regno)); + if (is_call) { + tcg_gen_movi_tl(dest_gpr(dc, R_RA), dc->base.pc_next); + } + tcg_gen_exit_tb(NULL, 0); + dc->base.is_jmp =3D DISAS_NORETURN; +} + static void gen_excp(DisasContext *dc, uint32_t code, uint32_t flags) { t_gen_helper_raise_exception(dc, flags); @@ -432,8 +441,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(cpu_pc, load_gpr(dc, R_RA)); - dc->base.is_jmp =3D DISAS_JUMP; + gen_jumpr(dc, R_RA, false); } =20 /* @@ -463,8 +471,7 @@ static void jmp(DisasContext *dc, uint32_t code, uint32= _t flags) { R_TYPE(instr, code); =20 - tcg_gen_mov_tl(cpu_pc, load_gpr(dc, instr.a)); - dc->base.is_jmp =3D DISAS_JUMP; + gen_jumpr(dc, instr.a, false); } =20 /* rC <- PC + 4 */ @@ -483,10 +490,7 @@ static void callr(DisasContext *dc, uint32_t code, uin= t32_t flags) { R_TYPE(instr, code); =20 - tcg_gen_mov_tl(cpu_pc, load_gpr(dc, instr.a)); - tcg_gen_movi_tl(dest_gpr(dc, R_RA), dc->base.pc_next); - - dc->base.is_jmp =3D DISAS_JUMP; + gen_jumpr(dc, instr.a, true); } =20 /* rC <- ctlN */ @@ -908,11 +912,6 @@ static void nios2_tr_tb_stop(DisasContextBase *dcbase,= CPUState *cs) tcg_gen_exit_tb(NULL, 0); break; =20 - case DISAS_JUMP: - /* The jump will already have updated the PC register */ - tcg_gen_exit_tb(NULL, 0); - break; - case DISAS_NORETURN: /* nothing more to generate */ break; --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650558094; cv=none; d=zohomail.com; s=zohoarc; b=lkkc5r3a0ppiXK2ABypG5Gx2yhkntVDsyvjeEbIOVsNff7Z+XxnSwtkd9psvh6QUOPt4F+TezyoEUchdHEBUl61KmyGtXg+bTBWMqiiSqAkZhLro+7lG1kwZ2PQgLwDoyE3NSQ0x5a1JdH+RhY5wlbq+147pokOPgwq06xa+V/Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650558094; 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=80O9UC62w69RZGUELf5QYLlmzTQ8DTEKKG5MfMCcdh0=; b=HTiWertNspjjE0gtl5IFw6vxk1Kkkup6gg01yHdwIddM9MmRO+THqWWeTgPspNxaPM2D6LqqCzEtZ4ozSo08gnTDRCj1f6P8GbypwIPD02zOvQnZXp31zLEj0r0Bh4papNhHWoxmlFzsOyG19S7NXvETJ0wcl4B6TUfA7rVvl4s= 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 1650558094383858.720382559716; Thu, 21 Apr 2022 09:21:34 -0700 (PDT) Received: from localhost ([::1]:35146 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZYj-0001JF-DJ for importer@patchew.org; Thu, 21 Apr 2022 12:21:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44910) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYd2-0005R5-BU for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:58 -0400 Received: from mail-io1-xd36.google.com ([2607:f8b0:4864:20::d36]:37428) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYd0-00077s-Qv for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:56 -0400 Received: by mail-io1-xd36.google.com with SMTP id p21so5635731ioj.4 for ; Thu, 21 Apr 2022 08:21:53 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id j1-20020a926e01000000b002cc52449a19sm3985402ilc.35.2022.04.21.08.21.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:21:52 -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=80O9UC62w69RZGUELf5QYLlmzTQ8DTEKKG5MfMCcdh0=; b=pvlcq4zRxtxzF34TIHzUMgPtG2tGY51+nSZkRmIuS1DzhppNyREr1/qaSBl+t765rM rrxQaEOcGeOtTf0O4CBk5f3ulC3Kfka1FkmCEwVB+R32/exooIBlC+Kr0eh/eTg4toxA PJFRRgI8ajRr3qKyrQjcYKauWk9zKkHDIT9MZMAvkH8OH9ZNl+vffKWktTx7kct3Scie GXOXR8gxtb+7WwZbLS7n8ZHtA64rNyKByW+0pZ4q+VYHH1m56CK1OTJTrKBBSUOf6QUJ cfUQ1n7sRA2E5vFvrG1cOSFm2LUJxqr4sL7TqQA/zTD6INZnbPIYDju6qBNUNsxNkxOB g2Cg== 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=80O9UC62w69RZGUELf5QYLlmzTQ8DTEKKG5MfMCcdh0=; b=CGj2GA/enJG/yGJPhr3S7LAMMwqNZXSbBbQLjbAgk4qTFgGbdOgKH0tzkzm+eHDVSj 1yo1Aw9j4jcQ0VZ6oe96iQibacTQ6AqAp5kcXzydLoBQ7r4+bMTtfjXXnyGEqmehWbml yxpZj7VgWmu2TrJ0UKqQPvC0F1/zf1RT3TBxgFWPfs2/Xuo6p0hS4Ev+jUiju/6hdY+f 9C8Ov577wdaTkj9NBbGQbBmYPW67oJN8zMsUnDJYHWjW7yHO33iOx9+IVOiVJOBnLpvW no2AUi6KB1C2IxEtU9kfzI49GsCjDiGTcM8IoDsfyIh+GcB5DpSJYULQwzb6r/iCJbcd pg0g== X-Gm-Message-State: AOAM532AQ/2Vj2Ng8Jnj/89S0zz3gxweeC/Nq+MisoMEREbYhKWkt3h3 Wtyq/3AtBjIbG4oguJS5FGkg48lKBb7gmw== X-Google-Smtp-Source: ABdhPJxwn8X4PJ8diEbU0AmlpZG4F4egbgksmUcWaT+dDyniMsK39UJrS04bnoxHvhiKXjBgQWj2wg== X-Received: by 2002:a02:bb01:0:b0:31a:a11:1c39 with SMTP id y1-20020a02bb01000000b0031a0a111c39mr31751jan.233.1650554512795; Thu, 21 Apr 2022 08:21:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 49/64] target/nios2: Hoist set of is_jmp into gen_goto_tb Date: Thu, 21 Apr 2022 08:17:20 -0700 Message-Id: <20220421151735.31996-50-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::d36; envelope-from=richard.henderson@linaro.org; helo=mail-io1-xd36.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650558094954100001 Content-Type: text/plain; charset="utf-8" Rather than force all callers to set this, do it within the subroutine. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/translate.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/target/nios2/translate.c b/target/nios2/translate.c index e39e349389..1686d2b82f 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -186,6 +186,7 @@ static void gen_goto_tb(DisasContext *dc, int n, uint32= _t dest) tcg_gen_movi_tl(cpu_pc, dest); tcg_gen_exit_tb(NULL, 0); } + dc->base.is_jmp =3D DISAS_NORETURN; } =20 static void gen_jumpr(DisasContext *dc, int regno, bool is_call) @@ -229,7 +230,6 @@ 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->base.is_jmp =3D DISAS_NORETURN; } =20 static void call(DisasContext *dc, uint32_t code, uint32_t flags) @@ -272,7 +272,6 @@ static void br(DisasContext *dc, uint32_t code, uint32_= t flags) I_TYPE(instr, code); =20 gen_goto_tb(dc, 0, dc->base.pc_next + (instr.imm16.s & -4)); - dc->base.is_jmp =3D DISAS_NORETURN; } =20 static void gen_bxx(DisasContext *dc, uint32_t code, uint32_t flags) @@ -284,7 +283,6 @@ static void gen_bxx(DisasContext *dc, uint32_t code, ui= nt32_t flags) gen_goto_tb(dc, 0, dc->base.pc_next); gen_set_label(l1); gen_goto_tb(dc, 1, dc->base.pc_next + (instr.imm16.s & -4)); - dc->base.is_jmp =3D DISAS_NORETURN; } =20 /* Comparison instructions */ --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650559096; cv=none; d=zohomail.com; s=zohoarc; b=GRIIw6gcIucpmRxRgnLnVMlzKPQOrZc4eErkbSHVzUJIFRyEirF2/Dgj9pV8qoP9IvcE3vViwTuQQeamwpJhFzGzi5I9pNvnClTQhUmgkD18e4Cy0rGV0Mx2RnPWQ5iw460gvIZU8Xjc6cH6+tBOyMJMH7gnq2Iu/h7k6DAjIOU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650559096; 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=yM5/IXlcmLh5dqa/bpkHel5N4l6bVVM680j+tLWxiUU=; b=AO7M/RPhavVmbHl3RZ1FsXKhC4BZ422R1dyBPeDXhSaMzrM2tm/xG/40/tFZl5KZfQEE8ncUEWa3a3onBXe88CVtihU0TzaZcsOkNBHOt4MvlghsOee7yVnASPDgIZLOLbAFWdo4e7yAXO8DHPSsNMMkmcdoRPFSxCw39ZjvdTQ= 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 1650559096060755.5541030285705; Thu, 21 Apr 2022 09:38:16 -0700 (PDT) Received: from localhost ([::1]:54114 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZos-0001zt-Qj for importer@patchew.org; Thu, 21 Apr 2022 12:38:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44948) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYd4-0005SR-AA for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:58 -0400 Received: from mail-io1-xd36.google.com ([2607:f8b0:4864:20::d36]:45732) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYd0-000780-Vl for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:57 -0400 Received: by mail-io1-xd36.google.com with SMTP id z19so1030103iof.12 for ; Thu, 21 Apr 2022 08:21:54 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id j1-20020a926e01000000b002cc52449a19sm3985402ilc.35.2022.04.21.08.21.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:21:53 -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=yM5/IXlcmLh5dqa/bpkHel5N4l6bVVM680j+tLWxiUU=; b=ypM2Zrg2wnBTjODswPX3aoBkhXutqhjJ2EUGx/xCKUBA1kb1d+WhdBjGuAJGXrbbZ1 JkE3YKU7TUDlz3df878Ji3Cg8SH/GW+9qPy1neJUespCuNElOMFYad00EBtxPUYY5JI6 ltvZQrNklHR1u/0KCIh2PjzniCZAjyElepEbgrf2ddPcw4niNw0za+0J26TYPqCK+U6C ZhT5RAA9hZEfWk5GMfStM2YoM+Rc48ptR4iOOC/z/lw1R3bCf9Fvcr1gIGUOHsy69r6B YSEThtSJwwAyFDn7cUMVWZqVSnA6KH3ETrdzn4Z9+UbdNp3l98ez30GW3uyHab20/W0V 2MkA== 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=yM5/IXlcmLh5dqa/bpkHel5N4l6bVVM680j+tLWxiUU=; b=dt/RmeWk2LbGof19av8WZsX/MCIdM8PHKICv6K/x52ZN1xY2HUfK62W9bcOnoQkVUj SZW8iFLSopEWTa879bwRmpBcMYsCml3oomhZP+GjUCGRSeQTSsSUYkoUxpU/wyCyHjkv B+MgQ3xE5RDGxD1xVbs0TlWQ+NTzfiUhtBJhktAItFowUM9+sqaWo7mUBI2F205DjV7I uek5tg/2q5mwkE7izn/a/PzZ9CFXI/vUXATwArYvWvsogjyb/035RjqA32K1aPh2/p7f TN6yqvYs/agHfa+tW00Ao+BScZ5T2zO0/KUnHlSmQ44VGNCGDe0QSptE7xn2JLnDiXpt 5sbA== X-Gm-Message-State: AOAM530naG0lHID4lXSrDLB3X6b9pH0vGfHQuqJvg3EKAEqr0/B5XGvm D4c42hGyW0T/U/6UZiKrYUwvLV5U4mYIwg== X-Google-Smtp-Source: ABdhPJyf+fz5J6QtdGiWgl1PTy538JjaBHkovOsyiF9kIqiIBEXROMaYbDlpLaRnYy0Le+m2jgl46g== X-Received: by 2002:a05:6638:144b:b0:321:589b:a8ea with SMTP id l11-20020a056638144b00b00321589ba8eamr53623jad.296.1650554514053; Thu, 21 Apr 2022 08:21:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 50/64] target/nios2: Use gen_goto_tb for DISAS_TOO_MANY Date: Thu, 21 Apr 2022 08:17:21 -0700 Message-Id: <20220421151735.31996-51-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::d36; envelope-from=richard.henderson@linaro.org; helo=mail-io1-xd36.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650559097364100001 Content-Type: text/plain; charset="utf-8" Depending on the reason for ending the TB, we can chain to the next TB because the PC is constant. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/translate.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/target/nios2/translate.c b/target/nios2/translate.c index 1686d2b82f..c9b5de2981 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -904,8 +904,11 @@ static void nios2_tr_tb_stop(DisasContextBase *dcbase,= CPUState *cs) /* Indicate where the next block should start */ switch (dc->base.is_jmp) { case DISAS_TOO_MANY: + gen_goto_tb(dc, 0, dc->base.pc_next); + break; + case DISAS_UPDATE: - /* Save the current PC back into the CPU register */ + /* Save the current PC, and return to the main loop. */ tcg_gen_movi_tl(cpu_pc, dc->base.pc_next); tcg_gen_exit_tb(NULL, 0); break; --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650558238; cv=none; d=zohomail.com; s=zohoarc; b=mkIjoBgMXxmi3sRZXwwRa0ZGJqWTVrztQYQgienN+6oiQQMS8moLrRU6jAatnZMQovMeHAWOyRNRwKMjALEG+xDux7osyiobwcMWX9v39DGVqcqNY2r4TOxo3VJJx5xDwIVBYBwpjN+lb1RumJLSK4YhHXOxIrAY5NPg7GEbHh4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650558238; 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=t9IEVbh+LG4UtEoPelCGUQEeBJbf2ROrFJjpftW24vw=; b=j4Q5hbW4bemqgS7UOYk8QE5Tz3lcyNPpHXiSsieZrEnepjGlq4rM4kiqb9T0O0VZ4dPO7XdMJZgsSELdycvPUehX0xW+YkKgo8LX+CFmYrSTNke9zALoiKCnSoB/4iwziSMauQZlBcM52FVsh0iHkJGEqRCvEvoEkdTRQpc+Y8M= 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 1650558238515517.642526313733; Thu, 21 Apr 2022 09:23:58 -0700 (PDT) Received: from localhost ([::1]:43484 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZb3-00079h-Hp for importer@patchew.org; Thu, 21 Apr 2022 12:23:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44950) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYd4-0005SZ-9y for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:58 -0400 Received: from mail-io1-xd36.google.com ([2607:f8b0:4864:20::d36]:35749) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYd2-00078O-5v for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:57 -0400 Received: by mail-io1-xd36.google.com with SMTP id q22so5653903iod.2 for ; Thu, 21 Apr 2022 08:21:55 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id j1-20020a926e01000000b002cc52449a19sm3985402ilc.35.2022.04.21.08.21.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:21:54 -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=t9IEVbh+LG4UtEoPelCGUQEeBJbf2ROrFJjpftW24vw=; b=HlyCI1Kr51cpi9jChzCUJ2eGltWoHFUzfeGCrdqzjR2ycu5NTFgrNowfHvAY5vOXW3 GDImtUbvZNNo+/nLsPhwmVWPSoT89lGaMx59+4Au/dP7NLpyBJqYAujIvkYa1GljYXYD SYnpY0ih7cgeUE/rPXylHtZ8V1obTGB4PvWA1n7nEmCWknfrcPDRXkLEBlYQy/yGp3gR Yia6mi82z6+u0XQ5oApR5tajSVHNX4dgwNQRlFj9tzp2Oqss4R0E86ji6OoPuUhYlS10 AcjMk8SeTns1ArYYcthFtemkPdeb1DB+gN1kJ/oT5KjRp/TbAY4tzXatII/SKUfg6Ofk 4FQA== 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=t9IEVbh+LG4UtEoPelCGUQEeBJbf2ROrFJjpftW24vw=; b=16wN6yYMciqa6PoCe1R03qb5Vdjm6mUEvfcqBOQuF6LcY0H5uHC2TreSi15s0wZK8p JvmOGhURzT4/e5yGfRtPrWgmlYqPnNUiANwVrZq8Wthvzr7nXcHFGzu2vz2RHDZarO++ lBz5/G1s4jmlMXocFxEhERxa0+9KOyG+DnwnBA2T1oRk9PTNr8LwaHJHgmFbYv5mPUfK /qGhqz2F62raLlbQiOJFUpdqY+Gub1L+FkUrmXf9iaLSEFCaDUUVawUDVITxPwhDPciz rUXINvzUzoFCY2lCwHT+05MeZQx1PPccdGicKrpJ1DMxuGo1R/muuOfcFknFkaoAs7zL zKYA== X-Gm-Message-State: AOAM5327w0Rq5xFXQ93UHWwfqEWRI0Tj6FhFeFkRlEBnQvxbPvI08qER qvNYTZwpeGKncQhfzN5E/UchSZFYNko9ow== X-Google-Smtp-Source: ABdhPJz2IJq8Tg9/hVMi/wLqRyEy9E64PhSKLATXSOTGiYmP2neGQCoZfWSGmHo0FTzgC3waCGFyhg== X-Received: by 2002:a05:6638:22d2:b0:32a:934e:8a62 with SMTP id j18-20020a05663822d200b0032a934e8a62mr68485jat.138.1650554515179; Thu, 21 Apr 2022 08:21:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 51/64] target/nios2: Use tcg_gen_lookup_and_goto_ptr Date: Thu, 21 Apr 2022 08:17:22 -0700 Message-Id: <20220421151735.31996-52-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::d36; envelope-from=richard.henderson@linaro.org; helo=mail-io1-xd36.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650558240204100001 Content-Type: text/plain; charset="utf-8" Use lookup_and_goto_ptr for indirect chaining between TBs. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/translate.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/nios2/translate.c b/target/nios2/translate.c index c9b5de2981..f0f5c6843a 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -184,7 +184,7 @@ static void gen_goto_tb(DisasContext *dc, int n, uint32= _t dest) tcg_gen_exit_tb(tb, n); } else { tcg_gen_movi_tl(cpu_pc, dest); - tcg_gen_exit_tb(NULL, 0); + tcg_gen_lookup_and_goto_ptr(); } dc->base.is_jmp =3D DISAS_NORETURN; } @@ -195,7 +195,7 @@ static void gen_jumpr(DisasContext *dc, int regno, bool= is_call) if (is_call) { tcg_gen_movi_tl(dest_gpr(dc, R_RA), dc->base.pc_next); } - tcg_gen_exit_tb(NULL, 0); + tcg_gen_lookup_and_goto_ptr(); dc->base.is_jmp =3D DISAS_NORETURN; } =20 --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650558476; cv=none; d=zohomail.com; s=zohoarc; b=c7d/LnclDaKscs2NYoZxK1baMy2VZVQWD8bLIygUgjeQ/FvVvLTjbZsjS805Xwqk1HguSz7RFcy56eZzv5u1XSq4fkDZ2Z8a9x8IWTG+0CGF+xwE6mA3ASimSxlHBhsOaTwHHx0YuzFUf7oiG3LXC0iigS6kN1z6TqYuuYItxNo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650558476; 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=hSpQoqfOsfIL8GnTDIMnUWFXCpFtmFqOPwLqzke7L4Y=; b=kCBRF9Aw/DIWWF8GzmW814DOrz2jJXuSge1MCA2uJcMfXoIVpuSK8RS/6gwCi9I1vE8+OrSZtXdecXtBUlM5BI97GmaSZmnASVCmXYIpJUiGEFSz64ci0JU/bYwELQFeT0ov7+U+5jzIhSacy2sl8ucZ3FqXeQ+M6hKxCFuh4uA= 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 165055847676328.55208545600499; Thu, 21 Apr 2022 09:27:56 -0700 (PDT) Received: from localhost ([::1]:51904 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZet-0004wc-Q5 for importer@patchew.org; Thu, 21 Apr 2022 12:27:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44974) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYd5-0005Yt-Sa for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:59 -0400 Received: from mail-il1-x131.google.com ([2607:f8b0:4864:20::131]:43641) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYd3-00078l-W2 for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:21:59 -0400 Received: by mail-il1-x131.google.com with SMTP id d3so3238245ilr.10 for ; Thu, 21 Apr 2022 08:21:57 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id j1-20020a926e01000000b002cc52449a19sm3985402ilc.35.2022.04.21.08.21.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:21:55 -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=hSpQoqfOsfIL8GnTDIMnUWFXCpFtmFqOPwLqzke7L4Y=; b=wGCUMdS5dZwITWSpdBiP5W2R6Obi1SjXLazcXORtL2ZQ/nMbxMg6YNIjjPkMlIPCdr oyMhpOgbPxp9uWJNcAyTRe9VnoM3NQSnzvMAvjrGv1Y4Vi2IF9gQUHPCB4EmG/PgB2qo oFjWv5jt2Cfhf+ItvMIFqr19301sOK3GBIngxkJWpYH5zL1trxolu4MpX8kJ2Tcm84Nd 3AZv6ArwjA+Br/uEEkzgFO5WG7X67ttlYsqdOVRIp7xnotureZvoJ+F4CMObXougV9sh Tzft5i+siVpBzv9Y0cHHo7/hUfMXJHU/yIUq/avj/hDydA6FTagjDu1bVTw2uiGXQ+ZY aNxA== 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=hSpQoqfOsfIL8GnTDIMnUWFXCpFtmFqOPwLqzke7L4Y=; b=7/I63XXCNePbPpz0ZtsqK07fcq6OJZH2gbYxay4N5O807ub9Rf77Dk2uyCkvXvJ1J5 2lLaqCaGkGJ3cHAV5oFV9YlWejMQBvhosloNuyeAyzplr1d9wz5RwhKhGi1sL4Co1uxT wfI0Ioq/eMI8GMBlRK2nB7+hKDOjufFrVif9XKfJqMHoaYtaVTFeps+r+lhjS1+CgBdR /iVWFu4w7co4yjspnxRScwkYlYX8HxnsMnahiSkTMmqK+9+RIMZohJ0rV6ZbmadDxyJU 2O8npVuJv1YV+1Uuzuc4Qi3Bb8rmx+5xI/d7rpPpb2MQXiGykpqFxuBEwxb0XdruWUha Yi2A== X-Gm-Message-State: AOAM533X7vRICA6g6rORm416/n8OpqzCrGW2y1opCXukxW1eY0p9faGF JzfH7rotpKj3UUPFxUaEGmV/tM+QESW8Pw== X-Google-Smtp-Source: ABdhPJxNVzp7N60YACG81u5IAOGX69FtWLYJE4gBe7Tq6epZb5Dta2PQRWklqLrDmNL3KF/YYV7W/g== X-Received: by 2002:a05:6e02:1708:b0:2cb:fec7:93d3 with SMTP id u8-20020a056e02170800b002cbfec793d3mr75596ill.99.1650554516390; Thu, 21 Apr 2022 08:21:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 52/64] target/nios2: Implement Misaligned destination exception Date: Thu, 21 Apr 2022 08:17:23 -0700 Message-Id: <20220421151735.31996-53-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::131; envelope-from=richard.henderson@linaro.org; helo=mail-il1-x131.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650558478738100001 Content-Type: text/plain; charset="utf-8" Indirect branches, plus eret and bret optionally raise an exception when branching to a misaligned address. The exception is required when an mmu is enabled, but enable it always because the fallback behaviour is not documented (though presumably it discards low bits). For the purposes of the linux-user cpu loop, if EXCP_UNALIGN (misaligned data) were to arrive, it would be treated the same as EXCP_UNALIGND (misaligned destination). See the !defined(CONFIG_NIOS2_ALIGNMENT_TRAP) block in kernel/traps.c. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/nios2/cpu_loop.c | 6 ++++++ target/nios2/op_helper.c | 9 ++++++++- target/nios2/translate.c | 15 ++++++++++++++- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/linux-user/nios2/cpu_loop.c b/linux-user/nios2/cpu_loop.c index 11ecb71843..30a27f252b 100644 --- a/linux-user/nios2/cpu_loop.c +++ b/linux-user/nios2/cpu_loop.c @@ -42,6 +42,12 @@ void cpu_loop(CPUNios2State *env) force_sig_fault(TARGET_SIGFPE, TARGET_FPE_INTDIV, env->pc); break; =20 + case EXCP_UNALIGN: + case EXCP_UNALIGND: + force_sig_fault(TARGET_SIGBUS, TARGET_BUS_ADRALN, + env->ctrl[CR_BADADDR]); + break; + case EXCP_TRAP: /* * TODO: This advance should be done in the translator, as diff --git a/target/nios2/op_helper.c b/target/nios2/op_helper.c index a19b504b0e..38a71a1f2d 100644 --- a/target/nios2/op_helper.c +++ b/target/nios2/op_helper.c @@ -64,6 +64,13 @@ uint32_t helper_divu(CPUNios2State *env, uint32_t num, u= int32_t den) void helper_eret(CPUNios2State *env, uint32_t new_status, uint32_t new_pc) { Nios2CPU *cpu =3D env_archcpu(env); + CPUState *cs =3D env_cpu(env); + + if (unlikely(new_pc & 3)) { + env->ctrl[CR_BADADDR] =3D new_pc; + cs->exception_index =3D EXCP_UNALIGND; + cpu_loop_exit_restore(cs, GETPC()); + } =20 /* * Both estatus and bstatus have no constraints on write; @@ -74,6 +81,6 @@ void helper_eret(CPUNios2State *env, uint32_t new_status,= uint32_t new_pc) =20 env->ctrl[CR_STATUS] =3D new_status; env->pc =3D new_pc; - cpu_loop_exit(env_cpu(env)); + cpu_loop_exit(cs); } #endif /* !CONFIG_USER_ONLY */ diff --git a/target/nios2/translate.c b/target/nios2/translate.c index f0f5c6843a..827d957719 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -191,11 +191,24 @@ static void gen_goto_tb(DisasContext *dc, int n, uint= 32_t dest) =20 static void gen_jumpr(DisasContext *dc, int regno, bool is_call) { - tcg_gen_mov_tl(cpu_pc, load_gpr(dc, regno)); + TCGLabel *l =3D gen_new_label(); + TCGv test =3D tcg_temp_new(); + TCGv dest =3D load_gpr(dc, regno); + + tcg_gen_andi_tl(test, dest, 3); + tcg_gen_brcondi_tl(TCG_COND_NE, test, 0, l); + tcg_temp_free(test); + + tcg_gen_mov_tl(cpu_pc, dest); if (is_call) { tcg_gen_movi_tl(dest_gpr(dc, R_RA), dc->base.pc_next); } tcg_gen_lookup_and_goto_ptr(); + + gen_set_label(l); + tcg_gen_st_tl(dest, cpu_env, offsetof(CPUNios2State, ctrl[CR_BADADDR])= ); + t_gen_helper_raise_exception(dc, EXCP_UNALIGND); + dc->base.is_jmp =3D DISAS_NORETURN; } =20 --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650559327; cv=none; d=zohomail.com; s=zohoarc; b=dPRZr0YGnBsaZ9ApJFTC/eIqu1AOBsuhcalsc7E4NaQhoEXno9p/373Pec+VBZuBTlXw0hGv0YkbOwq6Um+1R85Uv6WcqWrg/smjg0GF08Y0CXoRPJhLUKnN1VOG0RWxYTCe7hHOl8UTLB634106xsThhmdehIdQIDK8EK5y5xc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650559327; h=Content-Transfer-Encoding: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=9K3mlYGGwaqfcU8Jeepe3E24P/PuHUJATMBSJPBwlMM=; b=b6OfE+L7dggbTdYIz/crpM7TQzhmjrUBxMWXfIuKAnxOZ9f9P+J+/MMWyE5tDRxP6hDAC2V1wA61pQ+bPDs6a4WLSBbHzqyFeoTG5LoVH1QOmUFpwoA1P5Y6o5zh9zcHnt/WkAlmD4y5NAZYvruNdSH958eZg6lnM758Ny69vHQ= 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 16505593270021022.5240785935424; Thu, 21 Apr 2022 09:42:07 -0700 (PDT) Received: from localhost ([::1]:34526 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZsb-00086k-GJ for importer@patchew.org; Thu, 21 Apr 2022 12:42:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45014) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYd7-0005f3-Mz for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:22:01 -0400 Received: from mail-il1-x132.google.com ([2607:f8b0:4864:20::132]:46978) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYd4-00078s-PE for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:22:01 -0400 Received: by mail-il1-x132.google.com with SMTP id f5so3245125ilj.13 for ; Thu, 21 Apr 2022 08:21:58 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id j1-20020a926e01000000b002cc52449a19sm3985402ilc.35.2022.04.21.08.21.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:21:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=9K3mlYGGwaqfcU8Jeepe3E24P/PuHUJATMBSJPBwlMM=; b=I55h4Mzhv1g+QTk+5cEVelctMms0baNOPcI5VT+phVBqMBSWP+seeQUznnf+SjzZZZ heciht+d/6/dBY4MjFd8iq0oTlsQrAUYQTS1bA20yyb1AXJWdObBtUi9XFTrJAxr9pqr WNphdv/QCsFIzEF5i4n4Zs3FhkzGPLBI5NWkXdJieuqPBpg9/hqTzC4OojY3HSCscXig P1KkEMgW4mnhzqdM47mXHCpSZM1uNxh4krsH14C9h5fVYT066/HS/P6V9n61LrG93HIX jpcyjF3d4iLvl2RTbY0bhqk89eXv+Gh3/hFJKXsS2Tt/odblIDrU4Uy56kGbKZupMqqj msWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=9K3mlYGGwaqfcU8Jeepe3E24P/PuHUJATMBSJPBwlMM=; b=A84n480MW4S1zqY/Oz2jHaBH9koFKyKeFa5FBO7hS+fpswtIsfjpqxwYVlRGDhGH2g zPP8ZnEJyMrAuYkR/mcx94F01aRGivTeWJmtsCDhKFZNfU4orO4jJRiSCchJrFonS1sh b7uHXvVqaq2Ex4DtMWAZh6MgTjFUqe3NRTOtdFRg8aYBH+5xmGyyJMcFjdEohfRFkVGH cetMuPn22wK9y1cKttAM3+rLW+HASOYR2YGOSIBVOfogGjQ+Bc5eLt4gPxpWFte9Q4yx S2xRoU6aoZOz4x/UPDpkawzegBtRScmZDjKHTT98mewrUWx0DNq5/svJSYE4UmlF7ysQ pTdA== X-Gm-Message-State: AOAM533XIVFE9JjCgLz82d9soivhjOSGOKsgRXpWXMlq0Hp44fwS18yE rlKaktIbpSfqzE0zMjnsclVOZN1mUH8Tug== X-Google-Smtp-Source: ABdhPJxw9Ygk80drXtEqqi1qv+jkJQ+QsRYVjRNz/wWkFmX1T1MR7bgdqiFkO+IZSyPk517NO+wMYA== X-Received: by 2002:a92:6e0f:0:b0:2c6:4ed8:7bab with SMTP id j15-20020a926e0f000000b002c64ed87babmr73528ilc.41.1650554517571; Thu, 21 Apr 2022 08:21:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 53/64] target/nios2: Introduce shadow register sets Date: Thu, 21 Apr 2022 08:17:24 -0700 Message-Id: <20220421151735.31996-54-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::132; envelope-from=richard.henderson@linaro.org; helo=mail-il1-x132.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650559328936100001 Content-Type: text/plain; charset="utf-8" Do not actually enable them so far, in terms of being able to change the current register set, but add all of the plumbing to address them. Do not enable them for user-only. Add an env->regs pointer that handles the indirection to the current register set. The naming of the pointer hides the difference between old and new, user-only and sysemu. From the notes on wrprs, which states that r0 must be initialized before use in shadow register sets, infer that R_ZERO is *not* hardwired to zero in shadow register sets, but that it is still read-only. Introduce tbflags bit R0_0 to track that it has been properly set to zero. Adjust load_gpr to reflect this. At the same time we might as well special case crs =3D=3D 0 to avoid the indirection through env->regs during translation as well; this is intended to be the most common case for non-interrupt handlers. Init env->regs at reset. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/nios2/cpu.h | 29 ++++++++++++++++++- target/nios2/cpu.c | 4 ++- target/nios2/translate.c | 61 ++++++++++++++++++++++++++++++++++------ 3 files changed, 83 insertions(+), 11 deletions(-) diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index 6417e9bbfc..08f0688628 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -60,6 +60,11 @@ struct Nios2CPUClass { #define NUM_GP_REGS 32 #define NUM_CR_REGS 32 =20 +#ifndef CONFIG_USER_ONLY +/* 63 shadow register sets; index 0 is the primary register set. */ +#define NUM_REG_SETS 64 +#endif + /* General purpose register aliases */ enum { R_ZERO =3D 0, @@ -178,7 +183,13 @@ FIELD(CR_TLBMISC, EE, 24, 1) #define EXCP_MPUD 17 =20 struct CPUArchState { +#ifdef CONFIG_USER_ONLY uint32_t regs[NUM_GP_REGS]; +#else + uint32_t shadow_regs[NUM_REG_SETS][NUM_GP_REGS]; + /* Pointer into shadow_regs for the current register set. */ + uint32_t *regs; +#endif uint32_t ctrl[NUM_CR_REGS]; uint32_t pc; =20 @@ -229,6 +240,14 @@ static inline bool nios2_cr_reserved(const ControlRegS= tate *s) return (s->writable | s->readonly) =3D=3D 0; } =20 +static inline void nios2_update_crs(CPUNios2State *env) +{ +#ifndef CONFIG_USER_ONLY + unsigned crs =3D FIELD_EX32(env->ctrl[CR_STATUS], CR_STATUS, CRS); + env->regs =3D env->shadow_regs[crs]; +#endif +} + void nios2_tcg_init(void); void nios2_cpu_do_interrupt(CPUState *cs); void dump_mmu(CPUNios2State *env); @@ -267,12 +286,20 @@ typedef Nios2CPU ArchCPU; =20 #include "exec/cpu-all.h" =20 +FIELD(TBFLAGS, CRS0, 0, 1) /* Set if CRS =3D=3D 0. */ +FIELD(TBFLAGS, U, 1, 1) /* Overlaps CR_STATUS_U */ +FIELD(TBFLAGS, R0_0, 2, 1) /* Set if R0 =3D=3D 0. */ + static inline void cpu_get_tb_cpu_state(CPUNios2State *env, target_ulong *= pc, target_ulong *cs_base, uint32_t *f= lags) { + unsigned crs =3D FIELD_EX32(env->ctrl[CR_STATUS], CR_STATUS, CRS); + *pc =3D env->pc; *cs_base =3D 0; - *flags =3D env->ctrl[CR_STATUS] & CR_STATUS_U; + *flags =3D (env->ctrl[CR_STATUS] & CR_STATUS_U) + | (crs ? 0 : R_TBFLAGS_CRS0_MASK) + | (env->regs[0] ? 0 : R_TBFLAGS_R0_0_MASK); } =20 #endif /* NIOS2_CPU_H */ diff --git a/target/nios2/cpu.c b/target/nios2/cpu.c index 54e7071907..d043c02fcd 100644 --- a/target/nios2/cpu.c +++ b/target/nios2/cpu.c @@ -48,15 +48,17 @@ static void nios2_cpu_reset(DeviceState *dev) =20 ncc->parent_reset(dev); =20 - memset(env->regs, 0, sizeof(env->regs)); memset(env->ctrl, 0, sizeof(env->ctrl)); env->pc =3D cpu->reset_addr; =20 #if defined(CONFIG_USER_ONLY) /* Start in user mode with interrupts enabled. */ env->ctrl[CR_STATUS] =3D CR_STATUS_RSIE | CR_STATUS_U | CR_STATUS_PIE; + memset(env->regs, 0, sizeof(env->regs)); #else env->ctrl[CR_STATUS] =3D CR_STATUS_RSIE; + nios2_update_crs(env); + memset(env->shadow_regs, 0, sizeof(env->shadow_regs)); #endif } =20 diff --git a/target/nios2/translate.c b/target/nios2/translate.c index 827d957719..a6f5d39f4a 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -121,12 +121,16 @@ typedef struct DisasContext { DisasContextBase base; target_ulong pc; int mem_idx; + uint32_t tb_flags; TCGv sink; const ControlRegState *cr_state; } DisasContext; =20 static TCGv cpu_R[NUM_GP_REGS]; static TCGv cpu_pc; +#ifndef CONFIG_USER_ONLY +static TCGv cpu_crs_R[NUM_GP_REGS]; +#endif =20 typedef struct Nios2Instruction { void (*handler)(DisasContext *dc, uint32_t code, uint32_t flags); @@ -148,22 +152,47 @@ static uint8_t get_opxcode(uint32_t code) static TCGv load_gpr(DisasContext *dc, unsigned reg) { assert(reg < NUM_GP_REGS); - if (unlikely(reg =3D=3D R_ZERO)) { + + /* + * With shadow register sets, register r0 does not necessarily contain= 0, + * but it is overwhelmingly likely that it does -- software is supposed + * to have set r0 to 0 in every shadow register set before use. + */ + if (unlikely(reg =3D=3D R_ZERO) && FIELD_EX32(dc->tb_flags, TBFLAGS, R= 0_0)) { return tcg_constant_tl(0); } - return cpu_R[reg]; + if (FIELD_EX32(dc->tb_flags, TBFLAGS, CRS0)) { + return cpu_R[reg]; + } +#ifdef CONFIG_USER_ONLY + g_assert_not_reached(); +#else + return cpu_crs_R[reg]; +#endif } =20 static TCGv dest_gpr(DisasContext *dc, unsigned reg) { assert(reg < NUM_GP_REGS); + + /* + * The spec for shadow register sets isn't clear, but we assume that + * writes to r0 are discarded regardless of CRS. + */ if (unlikely(reg =3D=3D R_ZERO)) { if (dc->sink =3D=3D NULL) { dc->sink =3D tcg_temp_new(); } return dc->sink; } - return cpu_R[reg]; + if (FIELD_EX32(dc->tb_flags, TBFLAGS, CRS0)) { + return cpu_R[reg]; + } +#ifdef CONFIG_USER_ONLY + g_assert_not_reached(); +#else + return cpu_crs_R[reg]; +#endif } =20 static void t_gen_helper_raise_exception(DisasContext *dc, @@ -219,7 +248,7 @@ static void gen_excp(DisasContext *dc, uint32_t code, u= int32_t flags) =20 static bool gen_check_supervisor(DisasContext *dc) { - if (dc->base.tb->flags & CR_STATUS_U) { + if (FIELD_EX32(dc->tb_flags, TBFLAGS, U)) { /* CPU in user mode, privileged instruction called, stop. */ t_gen_helper_raise_exception(dc, EXCP_SUPERI); return false; @@ -330,7 +359,7 @@ static void do_i_math_logic(DisasContext *dc, uint32_t = insn, =20 val =3D imm(&instr); =20 - if (instr.a =3D=3D R_ZERO) { + if (instr.a =3D=3D R_ZERO && FIELD_EX32(dc->tb_flags, TBFLAGS, R0_0)) { /* This catches the canonical expansions of movi and movhi. */ tcg_gen_movi_tl(dest_gpr(dc, instr.b), x_op_0_eq_x ? val : 0); } else { @@ -864,6 +893,7 @@ static void nios2_tr_init_disas_context(DisasContextBas= e *dcbase, CPUState *cs) =20 dc->mem_idx =3D cpu_mmu_index(env, false); dc->cr_state =3D cpu->cr_state; + dc->tb_flags =3D dc->base.tb->flags; =20 /* Bound the number of insns to execute to those left on the page. */ page_insns =3D -(dc->base.pc_first | TARGET_PAGE_MASK) / 4; @@ -998,13 +1028,26 @@ void nios2_cpu_dump_state(CPUState *cs, FILE *f, int= flags) =20 void nios2_tcg_init(void) { - int i; +#ifndef CONFIG_USER_ONLY + TCGv_ptr crs =3D tcg_global_mem_new_ptr(cpu_env, + offsetof(CPUNios2State, regs), "= crs"); =20 - for (i =3D 0; i < NUM_GP_REGS; i++) { - cpu_R[i] =3D tcg_global_mem_new(cpu_env, - offsetof(CPUNios2State, regs[i]), + for (int i =3D 0; i < NUM_GP_REGS; i++) { + cpu_crs_R[i] =3D tcg_global_mem_new(crs, 4 * i, gr_regnames[i]); + } + +#define offsetof_regs0(N) offsetof(CPUNios2State, shadow_regs[0][N]) +#else +#define offsetof_regs0(N) offsetof(CPUNios2State, regs[N]) +#endif + + for (int i =3D 0; i < NUM_GP_REGS; i++) { + cpu_R[i] =3D tcg_global_mem_new(cpu_env, offsetof_regs0(i), gr_regnames[i]); } + +#undef offsetof_regs0 + cpu_pc =3D tcg_global_mem_new(cpu_env, offsetof(CPUNios2State, pc), "pc"); } --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650558691; cv=none; d=zohomail.com; s=zohoarc; b=R1jUzaeJ0G10ZTr43jsR71W5bqRCP2Yoy3yT3A6e6Bt/Mt2va62ocrFky9cxMh1sA3/f6stndKSk6sa+H5bIMOcAsh4Pv85XODwHur1QIj/z3Xuyx5PYCFBz4OOGrWaZuHW59SP9GgFgQ4GBTp75rORa4HfuOFcS3IlUM1oPYXI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650558691; 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=toxYxP2aXcQvkdxbDLhU41/426zsTDP12ynqYoToWEc=; b=j86M3VLAMnPjvnDYAk7M4Gn+SCuOS8PVvEo95YAWVZKBdduUCNtjXu3NLN2ZJ0PhqCcHj68YZ1LJwTO2PiIeirYWMg8gosOORgz5Wsn6XQH3GZz0V6rU9+680QD4fy5Pp7EFcw7b9C2Ma+RryqDkbiDksWFmLbn0ajpisgBH9/A= 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 1650558691120474.3740886659489; Thu, 21 Apr 2022 09:31:31 -0700 (PDT) Received: from localhost ([::1]:60668 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZiM-00038B-3F for importer@patchew.org; Thu, 21 Apr 2022 12:31:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45022) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYd8-0005gB-1l for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:22:02 -0400 Received: from mail-io1-xd30.google.com ([2607:f8b0:4864:20::d30]:40717) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYd5-00079K-VW for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:22:01 -0400 Received: by mail-io1-xd30.google.com with SMTP id 79so5627344iou.7 for ; Thu, 21 Apr 2022 08:21:59 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id j1-20020a926e01000000b002cc52449a19sm3985402ilc.35.2022.04.21.08.21.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:21:58 -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=toxYxP2aXcQvkdxbDLhU41/426zsTDP12ynqYoToWEc=; b=SheRYWIGs0QsboCnvF6lrt3lUAkWwyDCdT/S+/t3FrLFRl9RNyyzlrEfwx9EJs2Iom zN0xPz7SKCi+Ait9oku5cDFLMX0fQa3RKbxfl5DcC7VPUuy4XiBc9C0s0l/VUR3VwSA6 fHZ+RfjTKVgMV+LA4QF7GYRp+GKngtN+HLSRylIVvXdbixLHibUF92kV0uAtSfrmPtG+ i8xHpaXTjPoA6hg945mqsU9nIT2K1JmvFQhGcqvLfX0bgMDAUn98vDXg26jSjzdsv4EX a/BSfoOPtER2Ep3Nfp6/7cNS6Egla6J234IVrogczbBlgtP/HIWSvCOX5/kiFIANXxyZ +l8A== 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=toxYxP2aXcQvkdxbDLhU41/426zsTDP12ynqYoToWEc=; b=UC1i+Rsw3iyehUQmOD7onuza19uf+GaojGmimpBaqAMiDQihz36ulom0Dwo+7+q3KJ +7ZuxYY8As7vGQss3qMrQkawXIGTe0CfUORBR8uqmajFJtd1MPPi8vCqQ/LkgXcvt4Fp VhLLgVtHt3DvrZnouNMfrWVjxD27bNJ0eSo54ED99d97xYN4AGpmpB2Hn9B9gAtQ0wUM 2XgDuKTSQaQ+XnmDyDSKWj5W0VVSExOHMt3GtlVlGTb2+AQS1lTtToHyFRcXx0Bzyffa epw9gIbh7QsQvyqQKj+kLJXtA70XcHS1C24DtQKDxjn9pqPp8KbfzwOgJ9lYf5At5IwX YRtg== X-Gm-Message-State: AOAM530em/nMfgWHqU57g7p6wHn0bHqNBui5t6dJ8Ei9GUDT0WFvGXYx 8MW2FgBu2tXrzAHf81IH1d7rm3VGKXuH/w== X-Google-Smtp-Source: ABdhPJz5XVJbgA6RWnGhU8jofK46RAmyWQYkzFUcvFw4B/KDsRlEzRGdmMUQzk4DytPBkjEfNvawag== X-Received: by 2002:a05:6638:12ce:b0:328:6eef:e1ee with SMTP id v14-20020a05663812ce00b003286eefe1eemr80868jas.54.1650554518961; Thu, 21 Apr 2022 08:21:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 54/64] target/nios2: Implement rdprs, wrprs Date: Thu, 21 Apr 2022 08:17:25 -0700 Message-Id: <20220421151735.31996-55-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::d30; envelope-from=richard.henderson@linaro.org; helo=mail-io1-xd30.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650558692396100001 Content-Type: text/plain; charset="utf-8" Implement these out of line, so that tcg global temps (aka the architectural registers) are synced back to tcg storage as required. This makes sure that we get the proper results when status.PRS =3D=3D status.CRS. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/cpu.h | 1 + target/nios2/helper.h | 2 ++ target/nios2/op_helper.c | 16 +++++++++++ target/nios2/translate.c | 57 ++++++++++++++++++++++++++++++++++++++-- 4 files changed, 74 insertions(+), 2 deletions(-) diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index 08f0688628..d4d97a159e 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -220,6 +220,7 @@ struct ArchCPU { =20 bool diverr_present; bool mmu_present; + bool eic_present; =20 uint32_t pid_num_bits; uint32_t tlb_num_ways; diff --git a/target/nios2/helper.h b/target/nios2/helper.h index 6f5ec60b0d..1648d76ade 100644 --- a/target/nios2/helper.h +++ b/target/nios2/helper.h @@ -24,6 +24,8 @@ DEF_HELPER_FLAGS_3(divu, TCG_CALL_NO_WG, i32, env, i32, i= 32) =20 #if !defined(CONFIG_USER_ONLY) DEF_HELPER_3(eret, noreturn, env, i32, i32) +DEF_HELPER_FLAGS_2(rdprs, TCG_CALL_NO_WG, i32, env, i32) +DEF_HELPER_3(wrprs, 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) diff --git a/target/nios2/op_helper.c b/target/nios2/op_helper.c index 38a71a1f2d..a3164f5356 100644 --- a/target/nios2/op_helper.c +++ b/target/nios2/op_helper.c @@ -83,4 +83,20 @@ void helper_eret(CPUNios2State *env, uint32_t new_status= , uint32_t new_pc) env->pc =3D new_pc; cpu_loop_exit(cs); } + +/* + * RDPRS and WRPRS are implemented out of line so that if PRS =3D=3D CRS, + * all of the tcg global temporaries are synced back to ENV. + */ +uint32_t helper_rdprs(CPUNios2State *env, uint32_t regno) +{ + unsigned prs =3D FIELD_EX32(env->ctrl[CR_STATUS], CR_STATUS, PRS); + return env->shadow_regs[prs][regno]; +} + +void helper_wrprs(CPUNios2State *env, uint32_t regno, uint32_t val) +{ + unsigned prs =3D FIELD_EX32(env->ctrl[CR_STATUS], CR_STATUS, PRS); + env->shadow_regs[prs][regno] =3D val; +} #endif /* !CONFIG_USER_ONLY */ diff --git a/target/nios2/translate.c b/target/nios2/translate.c index a6f5d39f4a..fdcc2154f2 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -124,6 +124,7 @@ typedef struct DisasContext { uint32_t tb_flags; TCGv sink; const ControlRegState *cr_state; + bool eic_present; } DisasContext; =20 static TCGv cpu_R[NUM_GP_REGS]; @@ -382,6 +383,27 @@ gen_i_math_logic(andhi, andi, 0, imm_shifted) gen_i_math_logic(orhi , ori, 1, imm_shifted) gen_i_math_logic(xorhi, xori, 1, imm_shifted) =20 +/* rB <- prs.rA + sigma(IMM16) */ +static void rdprs(DisasContext *dc, uint32_t code, uint32_t flags) +{ + if (!dc->eic_present) { + t_gen_helper_raise_exception(dc, EXCP_ILLEGAL); + return; + } + if (!gen_check_supervisor(dc)) { + return; + } + +#ifdef CONFIG_USER_ONLY + g_assert_not_reached(); +#else + I_TYPE(instr, code); + TCGv dest =3D dest_gpr(dc, instr.b); + gen_helper_rdprs(dest, cpu_env, tcg_constant_i32(instr.a)); + tcg_gen_addi_tl(dest, dest, instr.imm16.s); +#endif +} + /* Prototype only, defined below */ static void handle_r_type_instr(DisasContext *dc, uint32_t code, uint32_t flags); @@ -443,7 +465,7 @@ static const Nios2Instruction i_type_instructions[] =3D= { INSTRUCTION_FLG(gen_stx, MO_SL), /* stwio */ INSTRUCTION_FLG(gen_bxx, TCG_COND_LTU), /* bltu */ INSTRUCTION_FLG(gen_ldx, MO_UL), /* ldwio */ - INSTRUCTION_UNIMPLEMENTED(), /* rdprs */ + INSTRUCTION(rdprs), /* rdprs */ INSTRUCTION_ILLEGAL(), INSTRUCTION_FLG(handle_r_type_instr, 0), /* R-Type */ INSTRUCTION_NOP(), /* flushd */ @@ -643,6 +665,36 @@ static void wrctl(DisasContext *dc, uint32_t code, uin= t32_t flags) #endif } =20 +/* prs.rC <- rA */ +static void wrprs(DisasContext *dc, uint32_t code, uint32_t flags) +{ + if (!dc->eic_present) { + t_gen_helper_raise_exception(dc, EXCP_ILLEGAL); + return; + } + if (!gen_check_supervisor(dc)) { + return; + } + +#ifdef CONFIG_USER_ONLY + g_assert_not_reached(); +#else + R_TYPE(instr, code); + gen_helper_wrprs(cpu_env, tcg_constant_i32(instr.c), + load_gpr(dc, instr.a)); + /* + * The expected write to PRS[r0] is 0, from CRS[r0]. + * If not, and CRS =3D=3D PRS (which we cannot tell from here), + * we may now have a non-zero value in our current r0. + * By ending the TB, we re-evaluate tb_flags and find out. + */ + if (instr.c =3D=3D 0 + && (instr.a !=3D 0 || !FIELD_EX32(dc->tb_flags, TBFLAGS, R0_0))) { + dc->base.is_jmp =3D DISAS_UPDATE; + } +#endif +} + /* Comparison instructions */ static void gen_cmpxx(DisasContext *dc, uint32_t code, uint32_t flags) { @@ -792,7 +844,7 @@ static const Nios2Instruction r_type_instructions[] =3D= { INSTRUCTION_ILLEGAL(), INSTRUCTION(slli), /* slli */ INSTRUCTION(sll), /* sll */ - INSTRUCTION_UNIMPLEMENTED(), /* wrprs */ + INSTRUCTION(wrprs), /* wrprs */ INSTRUCTION_ILLEGAL(), INSTRUCTION(or), /* or */ INSTRUCTION(mulxsu), /* mulxsu */ @@ -894,6 +946,7 @@ static void nios2_tr_init_disas_context(DisasContextBas= e *dcbase, CPUState *cs) dc->mem_idx =3D cpu_mmu_index(env, false); dc->cr_state =3D cpu->cr_state; dc->tb_flags =3D dc->base.tb->flags; + dc->eic_present =3D cpu->eic_present; =20 /* Bound the number of insns to execute to those left on the page. */ page_insns =3D -(dc->base.pc_first | TARGET_PAGE_MASK) / 4; --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650557201; cv=none; d=zohomail.com; s=zohoarc; b=Kza/cng2Yh/Pt0prJGychFh2jfMteAd9OVdyOaewOE7no1hX+K7aQ9HncW1+eIeDRsm0QqnfJQo4opXNr6ozz3uZmM2Ujpd+/NPJkff2RaQeE6MMzhKplvQRY1GvoDKNHWdUomSe/X+eAdMDEUPe0YSczsv2nDuDmOIkGoYvgfg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650557201; 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=McaygJMouDzWBJn6CkHLQqjRYeidbiNno6j41gqLVPI=; b=klP97Do1Sqx16LvpeXxzB9DaoveTTpcbNWVetgBz/yfvfbmj35tnd9JLlEnytrIHw7S2RVj3vXsfvmqiTsopzrKpp5+C8uO22e8hoNjXZ1+iZEJ09BzzoWUXOTgfhH1sgr8mbgaxQ4dULO4m14EQg2byeRrN+3b5moo951fDxkE= 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 165055720138629.40108542088865; Thu, 21 Apr 2022 09:06:41 -0700 (PDT) Received: from localhost ([::1]:53478 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZKJ-0000Ns-Vy for importer@patchew.org; Thu, 21 Apr 2022 12:06:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45034) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYd8-0005iL-Pz for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:22:07 -0400 Received: from mail-il1-x131.google.com ([2607:f8b0:4864:20::131]:39697) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYd7-00079c-6O for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:22:02 -0400 Received: by mail-il1-x131.google.com with SMTP id d4so3252221iln.6 for ; Thu, 21 Apr 2022 08:22:00 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id j1-20020a926e01000000b002cc52449a19sm3985402ilc.35.2022.04.21.08.21.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:21:59 -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=McaygJMouDzWBJn6CkHLQqjRYeidbiNno6j41gqLVPI=; b=pD4YwCUNwDWqISSeKEJXxGtRVyG8ipjfVEhxHkO5WMM2DUAVzrPtCtqn2vLaRw48ZC w9pAuCyt53mEHxDw68yl4CllObBaI+Vo5HkP8TP2+36EtgbMjEJ4gkzkw2bwM1k1G1rv 9lQLrIJKXC3bTj3uOfynNXkQR7MoeJi4ZPOfhRZK3/R6BT1X0f1gAR5YTq9iTVkUo7rZ H0UrhEMPZeE5BX8HBobZ253gDDr4IIUmkugIZ4kyHCyrdZg3/4ZdSDtm/dr6H6sJ9QNz PS/x+7Dc4kt0+bEIPI9yhgt87vJAtc+NmXNnUKZ80NyBqlBcK3vy3nZpNp4xLUrX6nTi 1erQ== 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=McaygJMouDzWBJn6CkHLQqjRYeidbiNno6j41gqLVPI=; b=Z7o5NphDHMrmZAIla9LFFjmyASkURKNmosgtilz0aPPb7k+2rkRaixa+zWaGg8TC8D NN6BMqgX1jEACclqBILtoqunfy6QLRY2Qs1F+Mft336om4iPDEj4tipRncGqqb8iunqn QB8yg6qx61tlvFNyjE9vZ+FPnn2A+9cACCd0J+K4n0syLSQR4qjx42eOwK16RZkb9CcA /3syWeUTykphq2W/SyDijpghQl9JKPT+OfPilYYPbJ4jsWHCnmzrpEt01Cen7tuUy4Tm KBN2svZQDuZWeynuyEdJ2o+Bpsk9I2e+hkafoAtwmjT4EYrMllM+EnvKR6zgcYrzp60q lQ7A== X-Gm-Message-State: AOAM530AYlvf2KzP1of2BXmANG6Ye6TpYJJTXN81iA1o/hyFmBq6yBu4 TdPs+1da9UPTjqjvayyh0ODp+hgxt7HWkw== X-Google-Smtp-Source: ABdhPJynTgyo7nbjFXyTwkmi+4sOpkSS6rXYmQL18nX7AWGFGD2rD3ZhHs40KXBdlAJKraD/MtvOsg== X-Received: by 2002:a05:6e02:1348:b0:2ca:b398:1144 with SMTP id k8-20020a056e02134800b002cab3981144mr77383ilr.163.1650554520189; Thu, 21 Apr 2022 08:22:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 55/64] target/nios2: Update helper_eret for shadow registers Date: Thu, 21 Apr 2022 08:17:26 -0700 Message-Id: <20220421151735.31996-56-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::131; envelope-from=richard.henderson@linaro.org; helo=mail-il1-x131.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650557203273100001 Content-Type: text/plain; charset="utf-8" When CRS =3D 0, we restore from estatus; otherwise from sstatus. Update for the new CRS. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/nios2/cpu.h | 1 + target/nios2/op_helper.c | 10 +++++++--- target/nios2/translate.c | 13 ++++++++----- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index d4d97a159e..c2fedead54 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -82,6 +82,7 @@ enum { R_FP =3D 28, R_EA =3D 29, R_BA =3D 30, + R_SSTATUS =3D 30, R_RA =3D 31, }; =20 diff --git a/target/nios2/op_helper.c b/target/nios2/op_helper.c index a3164f5356..94040102f4 100644 --- a/target/nios2/op_helper.c +++ b/target/nios2/op_helper.c @@ -73,14 +73,18 @@ void helper_eret(CPUNios2State *env, uint32_t new_statu= s, uint32_t new_pc) } =20 /* - * Both estatus and bstatus have no constraints on write; + * None of estatus, bstatus, or sstatus have constraints on write; * do not allow reserved fields in status to be set. - * TODO: more than this is required for shadow registers. + * When shadow registers are enabled, eret *does* restore CRS. + * Rather than testing eic_present to decide, mask CRS out of + * the set of readonly fields. */ - new_status &=3D cpu->cr_state[CR_STATUS].writable; + new_status &=3D cpu->cr_state[CR_STATUS].writable | + (cpu->cr_state[CR_STATUS].readonly & R_CR_STATUS_CRS_MAS= K); =20 env->ctrl[CR_STATUS] =3D new_status; env->pc =3D new_pc; + nios2_update_crs(env); cpu_loop_exit(cs); } =20 diff --git a/target/nios2/translate.c b/target/nios2/translate.c index fdcc2154f2..29cb610aca 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -491,11 +491,14 @@ static void eret(DisasContext *dc, uint32_t code, uin= t32_t flags) #ifdef CONFIG_USER_ONLY g_assert_not_reached(); #else - TCGv tmp =3D tcg_temp_new(); - tcg_gen_ld_tl(tmp, cpu_env, offsetof(CPUNios2State, ctrl[CR_ESTATUS])); - gen_helper_eret(cpu_env, tmp, load_gpr(dc, R_EA)); - tcg_temp_free(tmp); - + if (FIELD_EX32(dc->tb_flags, TBFLAGS, CRS0)) { + TCGv tmp =3D tcg_temp_new(); + tcg_gen_ld_tl(tmp, cpu_env, offsetof(CPUNios2State, ctrl[CR_ESTATU= S])); + gen_helper_eret(cpu_env, tmp, load_gpr(dc, R_EA)); + tcg_temp_free(tmp); + } else { + gen_helper_eret(cpu_env, load_gpr(dc, R_SSTATUS), load_gpr(dc, R_E= A)); + } dc->base.is_jmp =3D DISAS_NORETURN; #endif } --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650558867; cv=none; d=zohomail.com; s=zohoarc; b=h7hN9bFKQk+eqcddKWIv5ernzUw8zYToxByJNbn56aWizBs3DKewACA6oRntPuPU4Qovkojojwx4gLlbpQfbAJSCkF6wOdRsc52SGsOKb65AhLEr2bwCI+DAylWw+sA6Rr5mGBrZoLhiKxaHMM0Q3aeDZSwy8cjhC4/Y6JEwPbE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650558867; h=Content-Transfer-Encoding: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=dF8mvmaGxyi5gJOEnPgYQbxleBV4wZ50WfCVHfSwoxY=; b=NJpRKvjQSB3+HH4NyBjRGr3IIYxbLCSVR9bkP3wemtPO+j24mOSWZQZbfTjJMH5sxvx9NRYQ5/yhmqCXtHwcJxaT4g7KGCEfQDf1tIUTzJAWMKYKND9kH/T0pQYqvN+dvL9rwYqMilCoqiw7wxnyHz5UoRdxsxk8L9oa9QTZON4= 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 1650558867594617.9071551709826; Thu, 21 Apr 2022 09:34:27 -0700 (PDT) Received: from localhost ([::1]:40758 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZlA-0000uy-PH for importer@patchew.org; Thu, 21 Apr 2022 12:34:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45044) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYdA-0005jd-AW for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:22:07 -0400 Received: from mail-io1-xd31.google.com ([2607:f8b0:4864:20::d31]:43549) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYd8-00079n-D1 for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:22:04 -0400 Received: by mail-io1-xd31.google.com with SMTP id 125so5621563iov.10 for ; Thu, 21 Apr 2022 08:22:01 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id j1-20020a926e01000000b002cc52449a19sm3985402ilc.35.2022.04.21.08.22.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:22:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=dF8mvmaGxyi5gJOEnPgYQbxleBV4wZ50WfCVHfSwoxY=; b=X0SJK8WtTyiz+VU8SL8iHAzy9oy/MytWgrSDpCiXwYpuums9KZorRlwde/oFL8NFNk tKxNDEKfMDWulCzvxNPJKz5i75aaPM+Kt97s66jQ4ZX5dfI78ftXnMoVJMo9/pueqDxI N05SCA6bLD75Vaft+sD8MUv+fyxAY3LBG82rTfd68Txq/rBQz24uFzxXYQX/ggLLJRzV KiWVDw2gs1srHwE2/X4aBUBVXul9n3qck4U3Q85HnkWXZsFTE0VxyIjEY5lCabJU4e6V 8Qvfi0pIKSqZmaNrJupu7aYxnSaVmBtn0EJPWKofqjohxyGmag7miSr7dlfmOuXPizwb iMyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=dF8mvmaGxyi5gJOEnPgYQbxleBV4wZ50WfCVHfSwoxY=; b=bSczxkWU90jT0M5l0ovPVSX2XmmfzI0aWgqPSkD/sbORzobtSyw7XjnTgzCOstWo3s vL4vEuaq5mAOvyZ1B5O8k8t/Vd3lXtJWcT4xQiRWZLLbcO52wWXjs07bDTuzAUpFakhr kP7mkRd22682CTETXQFVuP6EzsaqNTF2YNVXpCvjFxWGHnSXR0hwEocjXs5MUjqRK98f NC1XUOR+E8ZOOa+pUrLTI1Kpf4fZxp+Wqqr6Wun5GFmfqubxz5WwHWmqLm46dLp9NhZH kF8Pnt6bc5SUJmvXiGBvyRE8OHMexKjQIEXKK+SMSbuccIFMzw+VgqyiECGDPQfp6bo9 m3Dg== X-Gm-Message-State: AOAM533jRGwTi4Es7MUmE8wbxDpHhVycZP72DmMlbeaM+VlYU1ARjgHy CG+0FDSJV1cgDt23a6+zorCsWXg/Ky9PWg== X-Google-Smtp-Source: ABdhPJxexrOagH8mM2pxLQ6vNxDtha/6KcqJkglvjDepoDWvUNzBLgA3AzdK80/N6GYAADItne/CmQ== X-Received: by 2002:a02:9009:0:b0:328:9e86:574f with SMTP id w9-20020a029009000000b003289e86574fmr49026jaf.39.1650554521355; Thu, 21 Apr 2022 08:22:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 56/64] target/nios2: Implement EIC interrupt processing Date: Thu, 21 Apr 2022 08:17:27 -0700 Message-Id: <20220421151735.31996-57-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::d31; envelope-from=richard.henderson@linaro.org; helo=mail-io1-xd31.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650558869179100001 Content-Type: text/plain; charset="utf-8" This is the cpu side of the operation. Register one irq line, called EIC. Split out the rather different processing to a separate function. Delay initialization of gpio irqs until realize. We need to provide a window after init in which the board can set eic_present. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/nios2/cpu.h | 8 ++++ target/nios2/cpu.c | 92 +++++++++++++++++++++++++++++++++---------- target/nios2/helper.c | 51 +++++++++++++++++++++++- 3 files changed, 129 insertions(+), 22 deletions(-) diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index c2fedead54..e25d3cdb11 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -114,6 +114,7 @@ FIELD(CR_STATUS, CRS, 10, 6) FIELD(CR_STATUS, PRS, 16, 6) FIELD(CR_STATUS, NMI, 22, 1) FIELD(CR_STATUS, RSIE, 23, 1) +FIELD(CR_STATUS, SRS, 31, 1) /* only in sstatus */ =20 #define CR_STATUS_PIE R_CR_STATUS_PIE_MASK #define CR_STATUS_U R_CR_STATUS_U_MASK @@ -121,6 +122,7 @@ FIELD(CR_STATUS, RSIE, 23, 1) #define CR_STATUS_IH R_CR_STATUS_IH_MASK #define CR_STATUS_NMI R_CR_STATUS_NMI_MASK #define CR_STATUS_RSIE R_CR_STATUS_RSIE_MASK +#define CR_STATUS_SRS R_CR_STATUS_SRS_MASK =20 FIELD(CR_EXCEPTION, CAUSE, 2, 5) FIELD(CR_EXCEPTION, ECCFTL, 31, 1) @@ -234,6 +236,12 @@ struct ArchCPU { =20 /* Bits within each control register which are reserved or readonly. */ ControlRegState cr_state[NUM_CR_REGS]; + + /* External Interrupt Controller Interface */ + uint32_t rha; /* Requested handler address */ + uint32_t ril; /* Requested interrupt level */ + uint32_t rrs; /* Requested register set */ + bool rnmi; /* Requested nonmaskable interrupt */ }; =20 =20 diff --git a/target/nios2/cpu.c b/target/nios2/cpu.c index d043c02fcd..19b2409974 100644 --- a/target/nios2/cpu.c +++ b/target/nios2/cpu.c @@ -63,7 +63,19 @@ static void nios2_cpu_reset(DeviceState *dev) } =20 #ifndef CONFIG_USER_ONLY -static void nios2_cpu_set_irq(void *opaque, int irq, int level) +static void eic_set_irq(void *opaque, int irq, int level) +{ + Nios2CPU *cpu =3D opaque; + CPUState *cs =3D CPU(cpu); + + if (level) { + cpu_interrupt(cs, CPU_INTERRUPT_HARD); + } else { + cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD); + } +} + +static void iic_set_irq(void *opaque, int irq, int level) { Nios2CPU *cpu =3D opaque; CPUNios2State *env =3D &cpu->env; @@ -87,15 +99,6 @@ static void nios2_cpu_initfn(Object *obj) =20 #if !defined(CONFIG_USER_ONLY) mmu_init(&cpu->env); - - /* - * These interrupt lines model the IIC (internal interrupt - * controller). QEMU does not currently support the EIC - * (external interrupt controller) -- if we did it would be - * a separate device in hw/intc with a custom interface to - * the CPU, and boards using it would not wire up these IRQ lines. - */ - qdev_init_gpio_in_named(DEVICE(cpu), nios2_cpu_set_irq, "IRQ", 32); #endif } =20 @@ -128,10 +131,18 @@ static void realize_cr_status(CPUState *cs) RO_REG(CR_EXCEPTION); WR_REG(CR_BADADDR); =20 - /* TODO: These control registers are not present with the EIC. */ - RO_FIELD(CR_STATUS, RSIE); - WR_REG(CR_IENABLE); - RO_REG(CR_IPENDING); + if (cpu->eic_present) { + WR_FIELD(CR_STATUS, RSIE); + RO_FIELD(CR_STATUS, NMI); + WR_FIELD(CR_STATUS, PRS); + RO_FIELD(CR_STATUS, CRS); + WR_FIELD(CR_STATUS, IL); + WR_FIELD(CR_STATUS, IH); + } else { + RO_FIELD(CR_STATUS, RSIE); + WR_REG(CR_IENABLE); + RO_REG(CR_IPENDING); + } =20 if (cpu->mmu_present) { WR_FIELD(CR_STATUS, U); @@ -170,6 +181,14 @@ static void nios2_cpu_realizefn(DeviceState *dev, Erro= r **errp) Nios2CPUClass *ncc =3D NIOS2_CPU_GET_CLASS(dev); Error *local_err =3D NULL; =20 +#ifndef CONFIG_USER_ONLY + if (cpu->eic_present) { + qdev_init_gpio_in_named(DEVICE(cpu), eic_set_irq, "EIC", 1); + } else { + qdev_init_gpio_in_named(DEVICE(cpu), iic_set_irq, "IRQ", 32); + } +#endif + cpu_exec_realizefn(cs, &local_err); if (local_err !=3D NULL) { error_propagate(errp, local_err); @@ -187,17 +206,48 @@ static void nios2_cpu_realizefn(DeviceState *dev, Err= or **errp) } =20 #ifndef CONFIG_USER_ONLY +static bool eic_take_interrupt(Nios2CPU *cpu) +{ + CPUNios2State *env =3D &cpu->env; + const uint32_t status =3D env->ctrl[CR_STATUS]; + + if (cpu->rnmi) { + return !(status & CR_STATUS_NMI); + } + if (!(status & CR_STATUS_PIE)) { + return false; + } + if (cpu->ril <=3D FIELD_EX32(status, CR_STATUS, IL)) { + return false; + } + if (cpu->rrs !=3D FIELD_EX32(status, CR_STATUS, CRS)) { + return true; + } + return status & CR_STATUS_RSIE; +} + +static bool iic_take_interrupt(Nios2CPU *cpu) +{ + CPUNios2State *env =3D &cpu->env; + + if (!(env->ctrl[CR_STATUS] & CR_STATUS_PIE)) { + return false; + } + return env->ctrl[CR_IPENDING] & env->ctrl[CR_IENABLE]; +} + static bool nios2_cpu_exec_interrupt(CPUState *cs, int interrupt_request) { Nios2CPU *cpu =3D NIOS2_CPU(cs); - CPUNios2State *env =3D &cpu->env; =20 - if ((interrupt_request & CPU_INTERRUPT_HARD) && - (env->ctrl[CR_STATUS] & CR_STATUS_PIE) && - (env->ctrl[CR_IPENDING] & env->ctrl[CR_IENABLE])) { - cs->exception_index =3D EXCP_IRQ; - nios2_cpu_do_interrupt(cs); - return true; + if (interrupt_request & CPU_INTERRUPT_HARD) { + if (cpu->eic_present + ? eic_take_interrupt(cpu) + : iic_take_interrupt(cpu)) { + cs->exception_index =3D EXCP_IRQ; + nios2_cpu_do_interrupt(cs); + return true; + } } return false; } diff --git a/target/nios2/helper.c b/target/nios2/helper.c index 2e9fea4a01..e256d1528e 100644 --- a/target/nios2/helper.c +++ b/target/nios2/helper.c @@ -37,6 +37,10 @@ static void do_exception(Nios2CPU *cpu, uint32_t excepti= on_addr, uint32_t old_status =3D env->ctrl[CR_STATUS]; uint32_t new_status =3D old_status; =20 + /* With shadow regs, exceptions are always taken into CRS 0. */ + new_status &=3D ~R_CR_STATUS_CRS_MASK; + env->regs =3D env->shadow_regs[0]; + if ((old_status & CR_STATUS_EH) =3D=3D 0) { int r_ea =3D R_EA, cr_es =3D CR_ESTATUS; =20 @@ -60,6 +64,14 @@ static void do_exception(Nios2CPU *cpu, uint32_t excepti= on_addr, CR_TLBMISC_DBL); env->ctrl[CR_TLBMISC] |=3D tlbmisc_set; } + + /* + * With shadow regs, and EH =3D=3D 0, PRS is set from CRS. + * At least, so says Table 3-9, and some other text, + * though Table 3-38 says otherwise. + */ + new_status =3D FIELD_DP32(new_status, CR_STATUS, PRS, + FIELD_EX32(old_status, CR_STATUS, CRS)); } =20 new_status &=3D ~(CR_STATUS_PIE | CR_STATUS_U); @@ -77,6 +89,39 @@ static void do_iic_irq(Nios2CPU *cpu) do_exception(cpu, cpu->exception_addr, 0, false); } =20 +static void do_eic_irq(Nios2CPU *cpu) +{ + CPUNios2State *env =3D &cpu->env; + uint32_t old_status =3D env->ctrl[CR_STATUS]; + uint32_t new_status =3D old_status; + uint32_t old_rs =3D FIELD_EX32(old_status, CR_STATUS, CRS); + uint32_t new_rs =3D cpu->rrs; + + new_status =3D FIELD_DP32(new_status, CR_STATUS, CRS, new_rs); + new_status =3D FIELD_DP32(new_status, CR_STATUS, IL, cpu->ril); + new_status =3D FIELD_DP32(new_status, CR_STATUS, NMI, cpu->rnmi); + new_status &=3D ~(CR_STATUS_RSIE | CR_STATUS_U); + new_status |=3D CR_STATUS_IH; + + if (!(new_status & CR_STATUS_EH)) { + new_status =3D FIELD_DP32(new_status, CR_STATUS, PRS, old_rs); + if (new_rs =3D=3D 0) { + env->ctrl[CR_ESTATUS] =3D old_status; + } else { + if (new_rs !=3D old_rs) { + old_status |=3D CR_STATUS_SRS; + } + env->shadow_regs[new_rs][R_SSTATUS] =3D old_status; + } + env->shadow_regs[new_rs][R_EA] =3D env->pc + 4; + } + + env->ctrl[CR_STATUS] =3D new_status; + nios2_update_crs(env); + + env->pc =3D cpu->rha; +} + void nios2_cpu_do_interrupt(CPUState *cs) { Nios2CPU *cpu =3D NIOS2_CPU(cs); @@ -142,7 +187,11 @@ void nios2_cpu_do_interrupt(CPUState *cs) =20 switch (cs->exception_index) { case EXCP_IRQ: - do_iic_irq(cpu); + if (cpu->eic_present) { + do_eic_irq(cpu); + } else { + do_iic_irq(cpu); + } break; =20 case EXCP_TLB_D: --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650559783; cv=none; d=zohomail.com; s=zohoarc; b=QHiETWBaFnlMfPFDelRvw2KnL1bX+A1j+yEULzfV/gZyLTyXove8KfmzxCGFEkHz5kynmKrZUaZb+HzU12rd4ngd3IMyTEa0BAFdgNeiWLkY/yqikORLD1iJV0rpP9wRwEmVPz7l/bIIV4iHwgoX+E3PriidK4G/YK0VtukU7tk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650559783; h=Content-Transfer-Encoding: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=AgLkoSlPc9kVBGD+8KCREYxFe9w6OPCL62XB2O9QUUc=; b=Hj4aOWettF4OSCXvnNMH2+2BVEfzIBdLuqN3nnTLccuqo1IrdqQjbbX1jtIiJ2yW8m2ygvCpZGzr3H09DEzZPVevwO3xf/UqobAqmdVEOskqa3VtJpjUFcd7NHknmsWCZMzLwwL18ps4JnjTWbmnThW5ECU6r0ZJGg31arQHBhg= 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 1650559783554544.2635484584412; Thu, 21 Apr 2022 09:49:43 -0700 (PDT) Received: from localhost ([::1]:52138 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZzy-0003RZ-Ig for importer@patchew.org; Thu, 21 Apr 2022 12:49:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45076) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYdD-0005js-Jy for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:22:07 -0400 Received: from mail-io1-xd2c.google.com ([2607:f8b0:4864:20::d2c]:46884) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYdA-0007Bt-IS for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:22:06 -0400 Received: by mail-io1-xd2c.google.com with SMTP id g21so5610551iom.13 for ; Thu, 21 Apr 2022 08:22:04 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id j1-20020a926e01000000b002cc52449a19sm3985402ilc.35.2022.04.21.08.22.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:22:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=AgLkoSlPc9kVBGD+8KCREYxFe9w6OPCL62XB2O9QUUc=; b=Iz13hA+1eBGW8tm+rJ+cOQmtU6Ut0uCoBbT6fv4D4ATOdX/zitGZ3VCEC6kdUQmPmn sn/DypBS68dE5sReQg+NEyj9POc7RWAJtArIk3blgb1pRZPqrSPiDgb03xmnBL5R3oDa St967LY9U5ff+rjovlJcvJ5nYvmSi0V/EckWfQDIw6j8EXooGXMIfNykzHfvX3K3T3JP 1b7C2PFvSFRu8Q5vgKwEHBsbhj8l8wN47VT0DJL/vciP8K9zawFgc9wLiQlVki/VQKh3 8p+RUze/fdqG6fq1iAvXkaBDUlrgcekjqVcjSgEnWDF5Z18JQkBS5RlOEKlwrT3XOIC6 wtHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=AgLkoSlPc9kVBGD+8KCREYxFe9w6OPCL62XB2O9QUUc=; b=k8JGuN5P867R38VKJl3CkGiFTVw3LLUdBF4zq63coFY3Sdf1g32oh9hGyzkRi4mpRq VwImL+ZaUwftceyu1wHUZee6mANgZR082ie3f623LncE01R9VGkF+FI4wQXbPLiG0CVK QO5XVD9cqxJZweZlTZR1WqRKoNprhr7U5ZPDnXXgall3BJ/GnqjiX4gJ/XgsJa0UYoYm oNQYazOhiKBNqe5T/vdneIYIXtYyEv7aLw6wQ6kst2oAwanyEuSl7NakhnCQngDCxq1F OXOo6484Vv7NxwiZcK2wUf+vm37avf1ac5Q8NmnwbFZsD6gR2P0shCJpn8iJoSdalHAX sYcg== X-Gm-Message-State: AOAM532io1F/qJLxc3zaHMTCB1kGFqWRtbz51F42uyTCxIOLopJUwEQd LDLQPLX/vDsCRONi5Kkv4EIxzmUhO1qmDQ== X-Google-Smtp-Source: ABdhPJwHrsgDmMmI9c5r6/7Ey2pKb3XrieFgQIShwNkxlftu7w92Y+jho9utnj17rC4b71YaKpSSLQ== X-Received: by 2002:a05:6602:2c0d:b0:60f:6ac8:ad05 with SMTP id w13-20020a0566022c0d00b0060f6ac8ad05mr71133iov.175.1650554523552; Thu, 21 Apr 2022 08:22:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 57/64] target/nios2: Advance pc when raising exceptions Date: Thu, 21 Apr 2022 08:17:28 -0700 Message-Id: <20220421151735.31996-58-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::d2c; envelope-from=richard.henderson@linaro.org; helo=mail-io1-xd2c.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650559784252100001 Content-Type: text/plain; charset="utf-8" The exception return address for nios2 is the instruction after the one that was executing at the time of the exception. We have so far implemented this by advancing the pc during the process of raising the exception. It is perhaps a little less confusing to do this advance in the translator (and helpers) when raising the exception in the first place, so that we may more closely match kernel sources. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/nios2/cpu.h | 2 ++ linux-user/nios2/cpu_loop.c | 8 ++------ target/nios2/helper.c | 13 +++++++------ target/nios2/op_helper.c | 18 ++++++++++++++++-- target/nios2/translate.c | 6 +++--- 5 files changed, 30 insertions(+), 17 deletions(-) diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index e25d3cdb11..58d56e55f9 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -266,6 +266,8 @@ hwaddr nios2_cpu_get_phys_page_debug(CPUState *cpu, vad= dr addr); void nios2_cpu_do_unaligned_access(CPUState *cpu, vaddr addr, MMUAccessType access_type, int mmu_idx, uintptr_t retaddr) QEMU_NORETURN; +void nios2_cpu_loop_exit_advance(CPUNios2State *env, uintptr_t retaddr) + QEMU_NORETURN; =20 void do_nios2_semihosting(CPUNios2State *env); =20 diff --git a/linux-user/nios2/cpu_loop.c b/linux-user/nios2/cpu_loop.c index 30a27f252b..a5e86990e2 100644 --- a/linux-user/nios2/cpu_loop.c +++ b/linux-user/nios2/cpu_loop.c @@ -39,6 +39,8 @@ void cpu_loop(CPUNios2State *env) break; =20 case EXCP_DIV: + /* Match kernel's handle_diverror_c(). */ + env->pc -=3D 4; force_sig_fault(TARGET_SIGFPE, TARGET_FPE_INTDIV, env->pc); break; =20 @@ -49,12 +51,6 @@ void cpu_loop(CPUNios2State *env) break; =20 case EXCP_TRAP: - /* - * TODO: This advance should be done in the translator, as - * hardware produces an advanced pc as part of all exceptions. - */ - env->pc +=3D 4; - switch (env->error_code) { case 0: qemu_log_mask(CPU_LOG_INT, "\nSyscall\n"); diff --git a/target/nios2/helper.c b/target/nios2/helper.c index e256d1528e..bb3b09e5a7 100644 --- a/target/nios2/helper.c +++ b/target/nios2/helper.c @@ -49,7 +49,7 @@ static void do_exception(Nios2CPU *cpu, uint32_t exceptio= n_addr, cr_es =3D CR_BSTATUS; } env->ctrl[cr_es] =3D old_status; - env->regs[r_ea] =3D env->pc + 4; + env->regs[r_ea] =3D env->pc; =20 if (cpu->mmu_present) { new_status |=3D CR_STATUS_EH; @@ -113,7 +113,7 @@ static void do_eic_irq(Nios2CPU *cpu) } env->shadow_regs[new_rs][R_SSTATUS] =3D old_status; } - env->shadow_regs[new_rs][R_EA] =3D env->pc + 4; + env->shadow_regs[new_rs][R_EA] =3D env->pc; } =20 env->ctrl[CR_STATUS] =3D new_status; @@ -187,6 +187,8 @@ void nios2_cpu_do_interrupt(CPUState *cs) =20 switch (cs->exception_index) { case EXCP_IRQ: + /* Note that PC is advanced for interrupts as well. */ + env->pc +=3D 4; if (cpu->eic_present) { do_eic_irq(cpu); } else { @@ -249,7 +251,6 @@ void nios2_cpu_do_interrupt(CPUState *cs) break; =20 case EXCP_SEMIHOST: - env->pc +=3D 4; do_nios2_semihosting(env); break; =20 @@ -291,7 +292,7 @@ void nios2_cpu_do_unaligned_access(CPUState *cs, vaddr = addr, =20 env->ctrl[CR_BADADDR] =3D addr; cs->exception_index =3D EXCP_UNALIGN; - cpu_loop_exit_restore(cs, retaddr); + nios2_cpu_loop_exit_advance(env, retaddr); } =20 bool nios2_cpu_tlb_fill(CPUState *cs, vaddr address, int size, @@ -330,7 +331,7 @@ bool nios2_cpu_tlb_fill(CPUState *cs, vaddr address, in= t size, cs->exception_index =3D (access_type =3D=3D MMU_INST_FETCH ? EXCP_SUPERA_X : EXCP_SUPERA_D); env->ctrl[CR_BADADDR] =3D address; - cpu_loop_exit_restore(cs, retaddr); + nios2_cpu_loop_exit_advance(env, retaddr); } } =20 @@ -367,5 +368,5 @@ bool nios2_cpu_tlb_fill(CPUState *cs, vaddr address, in= t size, =20 cs->exception_index =3D excp; env->ctrl[CR_BADADDR] =3D address; - cpu_loop_exit_restore(cs, retaddr); + nios2_cpu_loop_exit_advance(env, retaddr); } diff --git a/target/nios2/op_helper.c b/target/nios2/op_helper.c index 94040102f4..2e30d0a908 100644 --- a/target/nios2/op_helper.c +++ b/target/nios2/op_helper.c @@ -31,6 +31,20 @@ void helper_raise_exception(CPUNios2State *env, uint32_t= index) cpu_loop_exit(cs); } =20 +void nios2_cpu_loop_exit_advance(CPUNios2State *env, uintptr_t retaddr) +{ + CPUState *cs =3D env_cpu(env); + + /* + * Note that PC is advanced for all hardware exceptions. + * Do this here, rather than in restore_state_to_opc(), + * lest we affect QEMU internal exceptions, like EXCP_DEBUG. + */ + cpu_restore_state(cs, retaddr, true); + env->pc +=3D 4; + cpu_loop_exit(cs); +} + static void maybe_raise_div(CPUNios2State *env, uintptr_t ra) { Nios2CPU *cpu =3D env_archcpu(env); @@ -38,7 +52,7 @@ static void maybe_raise_div(CPUNios2State *env, uintptr_t= ra) =20 if (cpu->diverr_present) { cs->exception_index =3D EXCP_DIV; - cpu_loop_exit_restore(cs, ra); + nios2_cpu_loop_exit_advance(env, ra); } } =20 @@ -69,7 +83,7 @@ void helper_eret(CPUNios2State *env, uint32_t new_status,= uint32_t new_pc) if (unlikely(new_pc & 3)) { env->ctrl[CR_BADADDR] =3D new_pc; cs->exception_index =3D EXCP_UNALIGND; - cpu_loop_exit_restore(cs, GETPC()); + nios2_cpu_loop_exit_advance(env, GETPC()); } =20 /* diff --git a/target/nios2/translate.c b/target/nios2/translate.c index 29cb610aca..c06e9e7b14 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -196,10 +196,10 @@ static TCGv dest_gpr(DisasContext *dc, unsigned reg) #endif } =20 -static void t_gen_helper_raise_exception(DisasContext *dc, - uint32_t index) +static void t_gen_helper_raise_exception(DisasContext *dc, uint32_t index) { - tcg_gen_movi_tl(cpu_pc, dc->pc); + /* Note that PC is advanced for all hardware exceptions. */ + tcg_gen_movi_tl(cpu_pc, dc->base.pc_next); gen_helper_raise_exception(cpu_env, tcg_constant_i32(index)); dc->base.is_jmp =3D DISAS_NORETURN; } --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650559612; cv=none; d=zohomail.com; s=zohoarc; b=YsADq+eNCR2FHGHoWYPvpcbHY/TZL7I3UCQKhvSB+S8CiUauqhu3f4awmqr8slWQqXsG0eo+9KLBUItt7RYnvCr+N/DohhpoVvUMJ51ku7C11/vJq1xI/6OF5lmdVQPWYoYp7CW64qNaYXjagMv8uTXhrZ4lCDnt35x5Q3eEo/A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650559612; 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=6CaarkqQrAAyxbYSlNSLaV7b+x4O7r/FJICreGNNBLc=; b=LoBWiYuEi9qjynGU0jQJsJ5K0CDLcDK20tzj8kGz4iAckqEdLq063oqWEb78hSCYOpUyvMyvNu+bYnQB4KrFwFcQOzsZzazI4Ag4HraxKW/drE1KMYP4//dKu1YIlfxI2wzcD3bLu3ZdRXTfUoVwlfYAh+Jb38KSjawPT26KzFg= 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 1650559612214853.0143086748137; Thu, 21 Apr 2022 09:46:52 -0700 (PDT) Received: from localhost ([::1]:43410 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZxD-0005tA-0V for importer@patchew.org; Thu, 21 Apr 2022 12:46:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45074) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYdD-0005jr-Jn for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:22:07 -0400 Received: from mail-io1-xd2a.google.com ([2607:f8b0:4864:20::d2a]:40712) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYdC-0007DC-4I for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:22:07 -0400 Received: by mail-io1-xd2a.google.com with SMTP id 79so5627735iou.7 for ; Thu, 21 Apr 2022 08:22:05 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id j1-20020a926e01000000b002cc52449a19sm3985402ilc.35.2022.04.21.08.22.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:22:04 -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=6CaarkqQrAAyxbYSlNSLaV7b+x4O7r/FJICreGNNBLc=; b=TQ/g9IvP6VHkOxZFfWIIFhMXPQp47KD1j+a2nhxJ0+ZNTbIqCDpjPc4wLkGLLyV9WO SWfd5uWajyUQNT/25IKQWi7B1RtLULxvC8xBzIDtKTPyi49u1tKgCdpu/pDcshi/7nJW I1+xyfrya/Mp12vmzjqnt4+LMSVuHW0KC6BfMzkgTyLUSuYO1aUMpl29+s5LdgFEJHx2 0u5US9Ik+FXgrY/jjSxJynFukFTXDzTS2DZhen+j2rv4mOQJ8kkgWo4eCzVDgiAgLiwm Fwi5dMsq551mfQolppmDLCjOt+HrUixacvmGJpFfn9GE2eTM4uIpT0OKDBihtIqUKFxm xL6g== 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=6CaarkqQrAAyxbYSlNSLaV7b+x4O7r/FJICreGNNBLc=; b=bsMhu6SZG37xArklp2Ex77Zow0iypwgDd7NuJaMjCAUDKU4wtQqE+qfCiipCEZIHnf 65WwW3AqsPKrOIqKQ5h5Askp6OlEdPA1pIccRrCggwE+ZBP2GIhTc6DzgPqZxPyrvK6E jPZUpssovLmAj960de5NvWv5FIa4J0H3Vuya2kTxTbfDYkgx27Q4roawyI2Lg6c7RVq+ j9k14qi/POvF1rAzRZLicnBQFlCyeDoqahymqw6rwfTnoAgICCfnaymz4nLCuIq6P74i PJA6aQgqEvG944wTn/lG+HTkyhwSEzDy0gfpvdG4XC7i4YHcjw9QaAFTq59j8HX1Ggy/ goYg== X-Gm-Message-State: AOAM530W6Ow03wWyeA7WdTOA1kW+jnoBbLTYtRguh6U8mz0bcqPI+K6s 57V6dE0U2BkhXvTIQMi3mjG+bGyFF04djw== X-Google-Smtp-Source: ABdhPJz3urYMSw0VqWTEytk/LWPx8/HZ9t+ZiilB5Xb818poiACA5vzijT8RQ2gHVyGKRuKDKWBcFA== X-Received: by 2002:a5d:8450:0:b0:64c:cc87:c5fc with SMTP id w16-20020a5d8450000000b0064ccc87c5fcmr87744ior.190.1650554525184; Thu, 21 Apr 2022 08:22:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 58/64] linux-user/nios2: Handle various SIGILL exceptions Date: Thu, 21 Apr 2022 08:17:29 -0700 Message-Id: <20220421151735.31996-59-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::d2a; envelope-from=richard.henderson@linaro.org; helo=mail-io1-xd2a.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650559613042100001 Content-Type: text/plain; charset="utf-8" We missed out on a couple of exception types that may legitimately be raised by a userland program. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/nios2/cpu_loop.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/linux-user/nios2/cpu_loop.c b/linux-user/nios2/cpu_loop.c index a5e86990e2..da77ede76b 100644 --- a/linux-user/nios2/cpu_loop.c +++ b/linux-user/nios2/cpu_loop.c @@ -50,6 +50,18 @@ void cpu_loop(CPUNios2State *env) env->ctrl[CR_BADADDR]); break; =20 + case EXCP_ILLEGAL: + case EXCP_UNIMPL: + /* Match kernel's handle_illegal_c(). */ + env->pc -=3D 4; + force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPC, env->pc); + break; + case EXCP_SUPERI: + /* Match kernel's handle_supervisor_instr(). */ + env->pc -=3D 4; + force_sig_fault(TARGET_SIGILL, TARGET_ILL_PRVOPC, env->pc); + break; + case EXCP_TRAP: switch (env->error_code) { case 0: --=20 2.34.1 From nobody Tue May 21 06:14:30 2024 Delivered-To: importer@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+importer=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 1650556902063252.3395296043093; Thu, 21 Apr 2022 09:01:42 -0700 (PDT) Received: from localhost ([::1]:48688 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZFU-0005M5-Qa for importer@patchew.org; Thu, 21 Apr 2022 12:01:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45112) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYdH-0005nm-R3 for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:22:19 -0400 Received: from mail-il1-x12d.google.com ([2607:f8b0:4864:20::12d]:36633) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYdE-0007EF-4p for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:22:10 -0400 Received: by mail-il1-x12d.google.com with SMTP id k12so3258527ilv.3 for ; Thu, 21 Apr 2022 08:22:07 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id j1-20020a926e01000000b002cc52449a19sm3985402ilc.35.2022.04.21.08.22.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:22:06 -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=1QgRqWtjL+z4Qx3KJiIq1wlo9GSAjzzZUAWZYv0s5ic=; b=t7x/eANb26C0p4CGNh6uAqxC6uBbpfbKJpRK2yWi/iYLw9UK9nDae981700v2vbm2w RQgOcsE5lh6+/3WT9DHUGVXtvfB0V8wC4YYq2H/14rxRI5MTgXjHehikmG633ZrhVlYD kW4vf4SeZkAJu0B9F3zQ7H5+UR+dBvWNbNMb8AMnxAfLlz4+caTbSv9AWC9oWIzd7QzQ JYJzp1arWXnDiDBYNzpJRl8kopgVqbd3EBBb69wXZI/uq8NXV0l/RgL9XHIOJGQDHW4j PMat9AbpibnV49aFHo+p1ciAi5uNkKue1rI9jPiHqSSOpReMjyWkRJkv/9C+OHGCWZUc EORQ== 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=1QgRqWtjL+z4Qx3KJiIq1wlo9GSAjzzZUAWZYv0s5ic=; b=tcX81hNWZL9G1p5jiuLOwmZC5S08+oFQAr4Df8Nsxdi9QqOGRYtzKf0u/GvHexwdl/ iq7lpYhpLEDi9VljctU8ZN8vMkSRsFlEsoqYpBBeP1QBZqFwf2KIRjSENwMjnAraS8Z8 NDo9DiiC24SVseupEGzDYAQ6AJdEZOdqTetSQpBd5LCDuBoIuTaZQWzje6PvII6YiL+M OEntAER6J88Y6V6Us3w+1/aTZarCEmezXdEa9GKGoPeNEu+c6H13vLXHsTojwJ28gP1k 4vIaMVmYvaYRMKVra7edzht7Ex5pAJICQsxhQnzr+fbmHb7qCmlXJmVydIFQ9SnrMy+P 3RSg== X-Gm-Message-State: AOAM532HFVlwZpuPBYubGgJXpFoY079LT4yo3km4GYIYSsqDALsUzkZ9 UNuicT89tHUnslYmGEbu4B5MUyZSX+dRqw== X-Google-Smtp-Source: ABdhPJxxyNQLIa78LNdsnTN3xPYn/bRNWkYRwaUDSB+7o2/dzIgxiaKzkjlCg9+PeUqNiQ1SVvcVqQ== X-Received: by 2002:a05:6e02:1bc4:b0:2cd:6349:7d9d with SMTP id x4-20020a056e021bc400b002cd63497d9dmr87155ilv.166.1650554526961; Thu, 21 Apr 2022 08:22:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 59/64] hw/intc: Vectored Interrupt Controller (VIC) Date: Thu, 21 Apr 2022 08:17:30 -0700 Message-Id: <20220421151735.31996-60-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::12d; envelope-from=richard.henderson@linaro.org; helo=mail-il1-x12d.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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 , Amir Gonnen Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1650556903454100001 From: Amir Gonnen Implement nios2 Vectored Interrupt Controller (VIC). VIC is connected to EIC. It needs to update rha, ril, rrs and rnmi fields on Nios2CPU before raising an IRQ. For that purpose, VIC has a "cpu" property which should refer to the nios2 cpu and set by the board that connects VIC. Reviewed-by: Peter Maydell Signed-off-by: Amir Gonnen Message-Id: <20220303153906.2024748-5-amir.gonnen@neuroblade.ai> [rth: Split out nios2_vic.h] Signed-off-by: Richard Henderson --- include/hw/intc/nios2_vic.h | 64 ++++++++ hw/intc/nios2_vic.c | 313 ++++++++++++++++++++++++++++++++++++ hw/intc/Kconfig | 3 + hw/intc/meson.build | 1 + 4 files changed, 381 insertions(+) create mode 100644 include/hw/intc/nios2_vic.h create mode 100644 hw/intc/nios2_vic.c diff --git a/include/hw/intc/nios2_vic.h b/include/hw/intc/nios2_vic.h new file mode 100644 index 0000000000..af1517a967 --- /dev/null +++ b/include/hw/intc/nios2_vic.h @@ -0,0 +1,64 @@ +/* + * Vectored Interrupt Controller for nios2 processor + * + * Copyright (c) 2022 Neuroblade + * + * Interface: + * QOM property "cpu": link to the Nios2 CPU (must be set) + * Unnamed GPIO inputs 0..NIOS2_VIC_MAX_IRQ-1: input IRQ lines + * IRQ should be connected to nios2 IRQ0. + * + * Reference: "Embedded Peripherals IP User Guide + * for Intel=C2=AE Quartus=C2=AE Prime Design Suite: 21.4" + * Chapter 38 "Vectored Interrupt Controller Core" + * See: https://www.intel.com/content/www/us/en/docs/programmable/683130/2= 1-4/vectored-interrupt-controller-core.html + * + * Permission is hereby granted, free of charge, to any person obtaining a= copy + * of this software and associated documentation files (the "Software"), t= o deal + * in the Software without restriction, including without limitation the r= ights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or se= ll + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included= in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS= OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OT= HER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING= FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS = IN + * THE SOFTWARE. + */ + +#ifndef HW_INTC_NIOS2_VIC +#define HW_INTC_NIOS2_VIC + +#define TYPE_NIOS2_VIC "nios2-vic" +OBJECT_DECLARE_SIMPLE_TYPE(Nios2VIC, NIOS2_VIC) + +#define NIOS2_VIC_MAX_IRQ 32 + +struct Nios2VIC { + /*< private >*/ + SysBusDevice parent_obj; + + /*< public >*/ + qemu_irq output_int; + + /* properties */ + CPUState *cpu; + MemoryRegion csr; + + uint32_t int_config[NIOS2_VIC_MAX_IRQ]; + uint32_t vic_config; + uint32_t int_raw_status; + uint32_t int_enable; + uint32_t sw_int; + uint32_t vic_status; + uint32_t vec_tbl_base; + uint32_t vec_tbl_addr; +}; + +#endif /* HW_INTC_NIOS2_VIC */ diff --git a/hw/intc/nios2_vic.c b/hw/intc/nios2_vic.c new file mode 100644 index 0000000000..cf63212a88 --- /dev/null +++ b/hw/intc/nios2_vic.c @@ -0,0 +1,313 @@ +/* + * Vectored Interrupt Controller for nios2 processor + * + * Copyright (c) 2022 Neuroblade + * + * Interface: + * QOM property "cpu": link to the Nios2 CPU (must be set) + * Unnamed GPIO inputs 0..NIOS2_VIC_MAX_IRQ-1: input IRQ lines + * IRQ should be connected to nios2 IRQ0. + * + * Reference: "Embedded Peripherals IP User Guide + * for Intel=C2=AE Quartus=C2=AE Prime Design Suite: 21.4" + * Chapter 38 "Vectored Interrupt Controller Core" + * See: https://www.intel.com/content/www/us/en/docs/programmable/683130/2= 1-4/vectored-interrupt-controller-core.html + * + * Permission is hereby granted, free of charge, to any person obtaining a= copy + * of this software and associated documentation files (the "Software"), t= o deal + * in the Software without restriction, including without limitation the r= ights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or se= ll + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included= in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS= OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OT= HER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING= FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS = IN + * THE SOFTWARE. + */ + +#include "qemu/osdep.h" + +#include "hw/irq.h" +#include "hw/qdev-properties.h" +#include "hw/sysbus.h" +#include "migration/vmstate.h" +#include "qapi/error.h" +#include "qemu/bitops.h" +#include "qemu/log.h" +#include "qom/object.h" +#include "hw/intc/nios2_vic.h" +#include "cpu.h" + + +enum { + INT_CONFIG0 =3D 0, + INT_CONFIG31 =3D 31, + INT_ENABLE =3D 32, + INT_ENABLE_SET =3D 33, + INT_ENABLE_CLR =3D 34, + INT_PENDING =3D 35, + INT_RAW_STATUS =3D 36, + SW_INTERRUPT =3D 37, + SW_INTERRUPT_SET =3D 38, + SW_INTERRUPT_CLR =3D 39, + VIC_CONFIG =3D 40, + VIC_STATUS =3D 41, + VEC_TBL_BASE =3D 42, + VEC_TBL_ADDR =3D 43, + CSR_COUNT /* Last! */ +}; + +/* Requested interrupt level (INT_CONFIG[0:5]) */ +static inline uint32_t vic_int_config_ril(const Nios2VIC *vic, int irq_num) +{ + return extract32(vic->int_config[irq_num], 0, 6); +} + +/* Requested NMI (INT_CONFIG[6]) */ +static inline uint32_t vic_int_config_rnmi(const Nios2VIC *vic, int irq_nu= m) +{ + return extract32(vic->int_config[irq_num], 6, 1); +} + +/* Requested register set (INT_CONFIG[7:12]) */ +static inline uint32_t vic_int_config_rrs(const Nios2VIC *vic, int irq_num) +{ + return extract32(vic->int_config[irq_num], 7, 6); +} + +static inline uint32_t vic_config_vec_size(const Nios2VIC *vic) +{ + return 1 << (2 + extract32(vic->vic_config, 0, 3)); +} + +static inline uint32_t vic_int_pending(const Nios2VIC *vic) +{ + return (vic->int_raw_status | vic->sw_int) & vic->int_enable; +} + +static void vic_update_irq(Nios2VIC *vic) +{ + Nios2CPU *cpu =3D NIOS2_CPU(vic->cpu); + uint32_t pending =3D vic_int_pending(vic); + int irq =3D -1; + int max_ril =3D 0; + /* Note that if RIL is 0 for an interrupt it is effectively disabled */ + + vic->vec_tbl_addr =3D 0; + vic->vic_status =3D 0; + + if (pending =3D=3D 0) { + qemu_irq_lower(vic->output_int); + return; + } + + for (int i =3D 0; i < NIOS2_VIC_MAX_IRQ; i++) { + if (pending & BIT(i)) { + int ril =3D vic_int_config_ril(vic, i); + if (ril > max_ril) { + irq =3D i; + max_ril =3D ril; + } + } + } + + if (irq < 0) { + qemu_irq_lower(vic->output_int); + return; + } + + vic->vec_tbl_addr =3D irq * vic_config_vec_size(vic) + vic->vec_tbl_ba= se; + vic->vic_status =3D irq | BIT(31); + + /* + * In hardware, the interface between the VIC and the CPU is via the + * External Interrupt Controller interface, where the interrupt contro= ller + * presents the CPU with a packet of data containing: + * - Requested Handler Address (RHA): 32 bits + * - Requested Register Set (RRS) : 6 bits + * - Requested Interrupt Level (RIL) : 6 bits + * - Requested NMI flag (RNMI) : 1 bit + * In our emulation, we implement this by writing the data directly to + * fields in the CPU object and then raising the IRQ line to tell + * the CPU that we've done so. + */ + + cpu->rha =3D vic->vec_tbl_addr; + cpu->ril =3D max_ril; + cpu->rrs =3D vic_int_config_rrs(vic, irq); + cpu->rnmi =3D vic_int_config_rnmi(vic, irq); + + qemu_irq_raise(vic->output_int); +} + +static void vic_set_irq(void *opaque, int irq_num, int level) +{ + Nios2VIC *vic =3D opaque; + + vic->int_raw_status =3D deposit32(vic->int_raw_status, irq_num, 1, !!l= evel); + vic_update_irq(vic); +} + +static void nios2_vic_reset(DeviceState *dev) +{ + Nios2VIC *vic =3D NIOS2_VIC(dev); + + memset(&vic->int_config, 0, sizeof(vic->int_config)); + vic->vic_config =3D 0; + vic->int_raw_status =3D 0; + vic->int_enable =3D 0; + vic->sw_int =3D 0; + vic->vic_status =3D 0; + vic->vec_tbl_base =3D 0; + vic->vec_tbl_addr =3D 0; +} + +static uint64_t nios2_vic_csr_read(void *opaque, hwaddr offset, unsigned s= ize) +{ + Nios2VIC *vic =3D opaque; + int index =3D offset / 4; + + switch (index) { + case INT_CONFIG0 ... INT_CONFIG31: + return vic->int_config[index - INT_CONFIG0]; + case INT_ENABLE: + return vic->int_enable; + case INT_PENDING: + return vic_int_pending(vic); + case INT_RAW_STATUS: + return vic->int_raw_status; + case SW_INTERRUPT: + return vic->sw_int; + case VIC_CONFIG: + return vic->vic_config; + case VIC_STATUS: + return vic->vic_status; + case VEC_TBL_BASE: + return vic->vec_tbl_base; + case VEC_TBL_ADDR: + return vic->vec_tbl_addr; + default: + return 0; + } +} + +static void nios2_vic_csr_write(void *opaque, hwaddr offset, uint64_t valu= e, + unsigned size) +{ + Nios2VIC *vic =3D opaque; + int index =3D offset / 4; + + switch (index) { + case INT_CONFIG0 ... INT_CONFIG31: + vic->int_config[index - INT_CONFIG0] =3D value; + break; + case INT_ENABLE: + vic->int_enable =3D value; + break; + case INT_ENABLE_SET: + vic->int_enable |=3D value; + break; + case INT_ENABLE_CLR: + vic->int_enable &=3D ~value; + break; + case SW_INTERRUPT: + vic->sw_int =3D value; + break; + case SW_INTERRUPT_SET: + vic->sw_int |=3D value; + break; + case SW_INTERRUPT_CLR: + vic->sw_int &=3D ~value; + break; + case VIC_CONFIG: + vic->vic_config =3D value; + break; + case VEC_TBL_BASE: + vic->vec_tbl_base =3D value; + break; + default: + qemu_log_mask(LOG_GUEST_ERROR, + "nios2-vic: write to invalid CSR address %#" + HWADDR_PRIx "\n", offset); + } + + vic_update_irq(vic); +} + +static const MemoryRegionOps nios2_vic_csr_ops =3D { + .read =3D nios2_vic_csr_read, + .write =3D nios2_vic_csr_write, + .endianness =3D DEVICE_LITTLE_ENDIAN, + .valid =3D { .min_access_size =3D 4, .max_access_size =3D 4 } +}; + +static void nios2_vic_realize(DeviceState *dev, Error **errp) +{ + Nios2VIC *vic =3D NIOS2_VIC(dev); + + if (!vic->cpu) { + /* This is a programming error in the code using this device */ + error_setg(errp, "nios2-vic 'cpu' link property was not set"); + return; + } + + sysbus_init_irq(SYS_BUS_DEVICE(dev), &vic->output_int); + qdev_init_gpio_in(dev, vic_set_irq, NIOS2_VIC_MAX_IRQ); + + memory_region_init_io(&vic->csr, OBJECT(dev), &nios2_vic_csr_ops, vic, + "nios2.vic.csr", CSR_COUNT * sizeof(uint32_t)); + sysbus_init_mmio(SYS_BUS_DEVICE(dev), &vic->csr); +} + +static Property nios2_vic_properties[] =3D { + DEFINE_PROP_LINK("cpu", Nios2VIC, cpu, TYPE_CPU, CPUState *), + DEFINE_PROP_END_OF_LIST() +}; + +static const VMStateDescription nios2_vic_vmstate =3D { + .name =3D "nios2-vic", + .version_id =3D 1, + .minimum_version_id =3D 1, + .fields =3D (VMStateField[]){ + VMSTATE_UINT32_ARRAY(int_config, Nios2VIC, 32), + VMSTATE_UINT32(vic_config, Nios2VIC), + VMSTATE_UINT32(int_raw_status, Nios2VIC), + VMSTATE_UINT32(int_enable, Nios2VIC), + VMSTATE_UINT32(sw_int, Nios2VIC), + VMSTATE_UINT32(vic_status, Nios2VIC), + VMSTATE_UINT32(vec_tbl_base, Nios2VIC), + VMSTATE_UINT32(vec_tbl_addr, Nios2VIC), + VMSTATE_END_OF_LIST() + }, +}; + +static void nios2_vic_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + + dc->reset =3D nios2_vic_reset; + dc->realize =3D nios2_vic_realize; + dc->vmsd =3D &nios2_vic_vmstate; + device_class_set_props(dc, nios2_vic_properties); +} + +static const TypeInfo nios2_vic_info =3D { + .name =3D TYPE_NIOS2_VIC, + .parent =3D TYPE_SYS_BUS_DEVICE, + .instance_size =3D sizeof(Nios2VIC), + .class_init =3D nios2_vic_class_init, +}; + +static void nios2_vic_register_types(void) +{ + type_register_static(&nios2_vic_info); +} + +type_init(nios2_vic_register_types); diff --git a/hw/intc/Kconfig b/hw/intc/Kconfig index a7cf301eab..eded1b557e 100644 --- a/hw/intc/Kconfig +++ b/hw/intc/Kconfig @@ -84,3 +84,6 @@ config GOLDFISH_PIC =20 config M68K_IRQC bool + +config NIOS2_VIC + bool diff --git a/hw/intc/meson.build b/hw/intc/meson.build index d6d012fb26..8b35139f82 100644 --- a/hw/intc/meson.build +++ b/hw/intc/meson.build @@ -62,3 +62,4 @@ specific_ss.add(when: ['CONFIG_KVM', 'CONFIG_XIVE'], if_true: files('spapr_xive_kvm.c')) specific_ss.add(when: 'CONFIG_GOLDFISH_PIC', if_true: files('goldfish_pic.= c')) specific_ss.add(when: 'CONFIG_M68K_IRQC', if_true: files('m68k_irqc.c')) +specific_ss.add(when: 'CONFIG_NIOS2_VIC', if_true: files('nios2_vic.c')) --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650557542; cv=none; d=zohomail.com; s=zohoarc; b=HC0/NAjN392mAQqwRLZVt+YvqbVnKLwNW/6QTYAF8jBLnc7prEhtoz06M5pTfKDvoLyhIjBy3+fPt7Mahr8m7EtjftXNkxko/xaV2+tPsCumhUNtOlZtDQykbL1aAacK4QZbCASoYCsfm08Me/d95LzOv5lUxzCwxNBvQvhw7R8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650557542; 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=WPr4QYChElGxhEce/LWtiBTMBdsOQPvJQwidP7rUddQ=; b=FGD64+wYR4w0Vg521IBy0aqPWyp7nWdaNPLUqGFn9epQPaT3BLcOEwHQ82nC0vjlpma+BwcX54sJYZIdY4QG+aem4FKw/9G2/Xna7Vz7ibNiFOhpjFtzhavVNDXbBmgeZpVTh254pbrfPzGR4h9yqHf1Dcc1I5KrH2014AKElKE= 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 1650557542102885.2546928674028; Thu, 21 Apr 2022 09:12:22 -0700 (PDT) Received: from localhost ([::1]:36764 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZPo-0008NP-HG for importer@patchew.org; Thu, 21 Apr 2022 12:12:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45114) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYdH-0005nn-R5 for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:22:19 -0400 Received: from mail-il1-x12d.google.com ([2607:f8b0:4864:20::12d]:41895) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYdF-0007FY-Gl for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:22:10 -0400 Received: by mail-il1-x12d.google.com with SMTP id h4so3252470ilq.8 for ; Thu, 21 Apr 2022 08:22:09 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id j1-20020a926e01000000b002cc52449a19sm3985402ilc.35.2022.04.21.08.22.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:22:07 -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=WPr4QYChElGxhEce/LWtiBTMBdsOQPvJQwidP7rUddQ=; b=TwtClUS5bFdwoMgsjgAirE3BpKyWDD/WM5YzlyM1D+PBA8lyBjsZkNu7kyrNzwwqlY JjLPGK2SY9u+bhPc8lL0nbbPzQk3aK3d/H8tRR5Ow7pXb5s7V76tatEhceO0bQG3ZtSf 2TWNR9mwqqZ6AF1z9TIzD6jskHB4fGRwBfuxQQWzQp3W69thP1ZuRCSgguySSjiDuBwQ ytqtq2v2sXKLlVz4JlNLSYTSabCH+MpU5ifKXTxU5JOnd061UgwGKYl7DCxLhuuwTwA3 k4hLt2J1N320kCXsGQsEdLrXJeWxxwxltr7pkcCw8a/J0J9PO7qm3QmyZkjPX7FBg8s4 jhoQ== 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=WPr4QYChElGxhEce/LWtiBTMBdsOQPvJQwidP7rUddQ=; b=G9Ba4VIFXnMov8d8E/y8kaznKLW8/9kZMIPG/037U1eANKgWKv6v+ZAuTscW0QetZ7 if5E4XGi3f0DVjfP+EiBWjHeMY3xpupOs5sX4HisI42t4HVYJOmobtWzLOyJqlFiht25 24dyRCHlXGUM1TwKADLuDDP/YSdeZuMOJ63UrUGraUYQ8QFfqwyORVqpWhTpABcE6oWh tbd88zJQTQoi0VZp+lFVKZcumdAsFp4g4/gkItWVEjYgbe5EFVbTa6KaTJufLwDsNZ9F kQQn9SeBJBCAEGsJKSMTQRHN1uSeZDRkNVFyodwnAKeWap6c24RSaMBTtJe1UTyd+obh FmYw== X-Gm-Message-State: AOAM533UhjcQby7jCHLhlp0+nhsYHUwwN9HGjQlWCl4M/9jSOP2f2pHo sfR6NSpta1Umhue1b+9kbHZz5VASUgIFTg== X-Google-Smtp-Source: ABdhPJy8x5A+VBfe0Klzc2WeXL0YV/UWdSFeWFyJ0qlpPEuP1itJE3id2i9TBGiJOhCSCH203CnDoQ== X-Received: by 2002:a92:ca06:0:b0:2cc:3a47:e5d with SMTP id j6-20020a92ca06000000b002cc3a470e5dmr80573ils.115.1650554528487; Thu, 21 Apr 2022 08:22:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 60/64] hw/nios2: Introduce Nios2MachineState Date: Thu, 21 Apr 2022 08:17:31 -0700 Message-Id: <20220421151735.31996-61-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::12d; envelope-from=richard.henderson@linaro.org; helo=mail-il1-x12d.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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: Mark Cave-Ayland Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650557543882100001 Content-Type: text/plain; charset="utf-8" We want to move data from the heap into Nios2MachineState, which is not possible with DEFINE_MACHINE. Reviewed-by: Mark Cave-Ayland Signed-off-by: Richard Henderson --- hw/nios2/10m50_devboard.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/hw/nios2/10m50_devboard.c b/hw/nios2/10m50_devboard.c index 3d1205b8bd..bdc3ffd50d 100644 --- a/hw/nios2/10m50_devboard.c +++ b/hw/nios2/10m50_devboard.c @@ -36,6 +36,13 @@ =20 #include "boot.h" =20 +struct Nios2MachineState { + MachineState parent_obj; +}; + +#define TYPE_NIOS2_MACHINE MACHINE_TYPE_NAME("10m50-ghrd") +OBJECT_DECLARE_TYPE(Nios2MachineState, MachineClass, NIOS2_MACHINE) + #define BINARY_DEVICE_TREE_FILE "10m50-devboard.dtb" =20 static void nios2_10m50_ghrd_init(MachineState *machine) @@ -105,11 +112,24 @@ static void nios2_10m50_ghrd_init(MachineState *machi= ne) BINARY_DEVICE_TREE_FILE, NULL); } =20 -static void nios2_10m50_ghrd_machine_init(struct MachineClass *mc) +static void nios2_10m50_ghrd_class_init(ObjectClass *oc, void *data) { + MachineClass *mc =3D MACHINE_CLASS(oc); + mc->desc =3D "Altera 10M50 GHRD Nios II design"; mc->init =3D nios2_10m50_ghrd_init; mc->is_default =3D true; } =20 -DEFINE_MACHINE("10m50-ghrd", nios2_10m50_ghrd_machine_init); +static const TypeInfo nios2_10m50_ghrd_type_info =3D { + .name =3D TYPE_NIOS2_MACHINE, + .parent =3D TYPE_MACHINE, + .instance_size =3D sizeof(Nios2MachineState), + .class_init =3D nios2_10m50_ghrd_class_init, +}; + +static void nios2_10m50_ghrd_type_init(void) +{ + type_register_static(&nios2_10m50_ghrd_type_info); +} +type_init(nios2_10m50_ghrd_type_init); --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650557328; cv=none; d=zohomail.com; s=zohoarc; b=fe/Az3dmTWGt94glScKhhO4+ODNa1wVobOZH2zqaP+iC2c5OLsb4rffmidyQb9V5dlPvNGVnlH3QsKO84DtdUPg9eAFqMd/+yHN/SYzvhDm9yS1M9740tdFq7LoQ8VK+RlZ+XN32NIdsmGkHo3S1mZ/LsSKOAgoeg2mwM3yXGlg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650557328; 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=uXPKs9vHAqlXB8nQgyfaDgoubOKDwBOyrE632ndwYX0=; b=lwzBbYeV3SQsON2cZysXjyQFf/8n8tLKvwiTSDbWmiHFbGtLCezjEqkb+sCdmhsjLGugxRHhPIUdrvqC0dOn2NKeLKAHFeiBK4+W3EtRJhDR3VYD7hR1oM98Zg8yxWBi1Amm0zTQXJeq/FR+5TXdAGLc8+jr02DqDjz6ed7wOWc= 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 1650557328707493.7898317105935; Thu, 21 Apr 2022 09:08:48 -0700 (PDT) Received: from localhost ([::1]:57360 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZMN-00039H-Nq for importer@patchew.org; Thu, 21 Apr 2022 12:08:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45138) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYdJ-0005nx-6I for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:22:20 -0400 Received: from mail-io1-xd2e.google.com ([2607:f8b0:4864:20::d2e]:45040) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYdH-0007H3-In for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:22:12 -0400 Received: by mail-io1-xd2e.google.com with SMTP id e194so5608995iof.11 for ; Thu, 21 Apr 2022 08:22:11 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id j1-20020a926e01000000b002cc52449a19sm3985402ilc.35.2022.04.21.08.22.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:22:09 -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=uXPKs9vHAqlXB8nQgyfaDgoubOKDwBOyrE632ndwYX0=; b=eTL9vDS8xUIZsYn1SmVmQmlRh6mXMl08SYuS1562eBbYh6hUL1aZQR2uwudldUE49m iZzPVvOtBj99eukStVCxcN5V5R8CVR+Rc5T4wZLgpFKXpTb5djdTRqkH1/Wk7zrlAA/v ZffSDwEN8Bh2Ga4ZpRu88k3x2wFO/7AcdkNlvIGcVvJA0jI6M17TkwacUD5vjy2/ws3u AbpWbR2YrqNha47LHaNSzoJnTtr4gdrWkBiSzpsESEypEb1RzCYqWKdYnIxdrB3wsYa0 qxD5VkoqtvUMPZtMg9ediEBtRpIQ0+hRPs2RSc3OcfsTwtkqLFGj0G+QIAYsqQEZk8HQ 9mNw== 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=uXPKs9vHAqlXB8nQgyfaDgoubOKDwBOyrE632ndwYX0=; b=QcMZ7Np41HvTWSE9VgAmCQM4lSzXJOQYY8zTkLmXygfp5KqudqiSInSH0WRjForwnr hXU1n+X4ngyGjg+IPgNo4juMFSO7CUy3GQoe464sqUjyp3HfFDs645spAHJZgyiOdvCz f6AD+n1Z9jstSjw0wvDXU69hVE3AC6iZtscP3aY3dgwVLGidG7+m/iD2qNxK4h6MArm7 3k79HB7sS5Ci/GUfmIv6Tc8J9Z4YmjbTc4zCA/LUGbVJmgZHfMomR6nbTFnDtoJDoQcN FlJqJNRCkAEqqenEv7bZ7sDhTXyk9jIQp0cs2hi5OmsQesWp7EL7Hpn2OC71gUqcNjo1 Lflw== X-Gm-Message-State: AOAM530ZK9DCMOgk3kUo2AEVr4ADHAXkJrQLKgiP5TeVirgmHy7S2pYJ fGlh6zl6ziExcLn7RngcZKDqaemrsgf7lw== X-Google-Smtp-Source: ABdhPJy7lh7jNhm0img+ZX+P35yFPBMQ18cluF3k7e/BfggUdURj/QjLYG7oMPRDsxKxY9++CSlD/w== X-Received: by 2002:a02:271f:0:b0:326:af4:3f0c with SMTP id g31-20020a02271f000000b003260af43f0cmr57003jaa.300.1650554529815; Thu, 21 Apr 2022 08:22:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 61/64] hw/nios2: Move memory regions into Nios2Machine Date: Thu, 21 Apr 2022 08:17:32 -0700 Message-Id: <20220421151735.31996-62-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::d2e; envelope-from=richard.henderson@linaro.org; helo=mail-io1-xd2e.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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: Mark Cave-Ayland Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650557330170100001 Content-Type: text/plain; charset="utf-8" Convert to contiguous allocation, as much as possible so far. The two timer objects are not exposed for subobject allocation. Reviewed-by: Mark Cave-Ayland Signed-off-by: Richard Henderson --- hw/nios2/10m50_devboard.c | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/hw/nios2/10m50_devboard.c b/hw/nios2/10m50_devboard.c index bdc3ffd50d..dda4ab2bf5 100644 --- a/hw/nios2/10m50_devboard.c +++ b/hw/nios2/10m50_devboard.c @@ -38,6 +38,11 @@ =20 struct Nios2MachineState { MachineState parent_obj; + + MemoryRegion phys_tcm; + MemoryRegion phys_tcm_alias; + MemoryRegion phys_ram; + MemoryRegion phys_ram_alias; }; =20 #define TYPE_NIOS2_MACHINE MACHINE_TYPE_NAME("10m50-ghrd") @@ -47,13 +52,10 @@ OBJECT_DECLARE_TYPE(Nios2MachineState, MachineClass, NI= OS2_MACHINE) =20 static void nios2_10m50_ghrd_init(MachineState *machine) { + Nios2MachineState *nms =3D NIOS2_MACHINE(machine); Nios2CPU *cpu; DeviceState *dev; MemoryRegion *address_space_mem =3D get_system_memory(); - MemoryRegion *phys_tcm =3D g_new(MemoryRegion, 1); - MemoryRegion *phys_tcm_alias =3D g_new(MemoryRegion, 1); - MemoryRegion *phys_ram =3D g_new(MemoryRegion, 1); - MemoryRegion *phys_ram_alias =3D g_new(MemoryRegion, 1); ram_addr_t tcm_base =3D 0x0; ram_addr_t tcm_size =3D 0x1000; /* 1 kiB, but QEMU limit is 4 kiB */ ram_addr_t ram_base =3D 0x08000000; @@ -62,22 +64,22 @@ static void nios2_10m50_ghrd_init(MachineState *machine) int i; =20 /* Physical TCM (tb_ram_1k) with alias at 0xc0000000 */ - memory_region_init_ram(phys_tcm, NULL, "nios2.tcm", tcm_size, + memory_region_init_ram(&nms->phys_tcm, NULL, "nios2.tcm", tcm_size, &error_abort); - memory_region_init_alias(phys_tcm_alias, NULL, "nios2.tcm.alias", - phys_tcm, 0, tcm_size); - memory_region_add_subregion(address_space_mem, tcm_base, phys_tcm); + memory_region_init_alias(&nms->phys_tcm_alias, NULL, "nios2.tcm.alias", + &nms->phys_tcm, 0, tcm_size); + memory_region_add_subregion(address_space_mem, tcm_base, &nms->phys_tc= m); memory_region_add_subregion(address_space_mem, 0xc0000000 + tcm_base, - phys_tcm_alias); + &nms->phys_tcm_alias); =20 /* Physical DRAM with alias at 0xc0000000 */ - memory_region_init_ram(phys_ram, NULL, "nios2.ram", ram_size, + memory_region_init_ram(&nms->phys_ram, NULL, "nios2.ram", ram_size, &error_abort); - memory_region_init_alias(phys_ram_alias, NULL, "nios2.ram.alias", - phys_ram, 0, ram_size); - memory_region_add_subregion(address_space_mem, ram_base, phys_ram); + memory_region_init_alias(&nms->phys_ram_alias, NULL, "nios2.ram.alias", + &nms->phys_ram, 0, ram_size); + memory_region_add_subregion(address_space_mem, ram_base, &nms->phys_ra= m); memory_region_add_subregion(address_space_mem, 0xc0000000 + ram_base, - phys_ram_alias); + &nms->phys_ram_alias); =20 /* Create CPU -- FIXME */ cpu =3D NIOS2_CPU(cpu_create(TYPE_NIOS2_CPU)); --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650559022; cv=none; d=zohomail.com; s=zohoarc; b=ghaAQQpvjFjbpE4HuVHeNeqcXEJDpwqNLXJNdFGuubvvFRZQPqLQ0dKNwLuIiTqlcGebbS2/13c+Z3XhoDk0ceksiP6JbVsOEgCTZt6BGm6O/pX8ge4Tw5hWR0H3u6BQyEwIMzo3j4GbenwwsAEYV4FhWlI1p4RVGmIMv28AH78= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650559022; 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=IfWSu9VNafPHp8o0fmuna0CY6dhXpdzmhz+aAiWUWPs=; b=laa+ceMUmR0/AbsOeiz5ed82wPicd93SofwYwyyWUiAzcsl3iUCLQKERn2GoTUKlu3S8I9Grzf/kUcQIS5PRCyQ1eQF7plYjNue5B4jA/r+Rn+rSVSmA2M0CPmFPP/oBzbLksBXACg+3iLo+OODOrzHdhx0VzmDVNq9NfJqhyM4= 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 1650559022748299.3952545080348; Thu, 21 Apr 2022 09:37:02 -0700 (PDT) Received: from localhost ([::1]:49482 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZnh-0007Hz-Pn for importer@patchew.org; Thu, 21 Apr 2022 12:37:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45156) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYdN-0005o6-IA for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:22:20 -0400 Received: from mail-il1-x12d.google.com ([2607:f8b0:4864:20::12d]:34702) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYdI-0007H8-62 for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:22:13 -0400 Received: by mail-il1-x12d.google.com with SMTP id r11so3269776ila.1 for ; Thu, 21 Apr 2022 08:22:11 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id j1-20020a926e01000000b002cc52449a19sm3985402ilc.35.2022.04.21.08.22.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:22:10 -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=IfWSu9VNafPHp8o0fmuna0CY6dhXpdzmhz+aAiWUWPs=; b=KZyLlJlXFcYH0kYmpOQ8OumbMXI/JI7kBBFBwPVFuzZR/Aa/PHu0b9xOGd9W8cvDof IK80ve2N3GY3B2JeYTWkTZ8fM0uDuP6s2ovhvtdSgxTS00b+TOjaWbd+u8yQRngPYupq CXxTTk7T3O38FHEcvPHfdo8e5kMgsErqFYFBlsUHbpNTBde7Vw49rK2v9ORjpz99ssHd OZmdX0yZ0X6lC6P6pulKfLoN3F83xki7N/sUwUq6RYA4yxms7dz/D32cLgIutJi1doRn pLDUZUqSiVfSB1qgwrr4wNzXfxKL4f7IwVtkgL03BxFeEY5bEKGVM0Jnk2Emr1LuYnhT 2xIw== 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=IfWSu9VNafPHp8o0fmuna0CY6dhXpdzmhz+aAiWUWPs=; b=du85pBAjaNBnGX2NtmY96TVQEJ4ZmKPhjkBbvuA5XJ+ZVjRpgVSVN4bpk4pR1lm0V2 1cXsnTAO0/5PZVsGIosL2sNBaO4K7aZ1pRVJyu2iBYoXjshxTkDH+bdf776Pg7ZVBhSL WsqPp3pvTRhUutoaWFqYgcGY6kQIsQ7Btqm22UkGu6XCwnWgdtri7NcJsEv13eYj0i0/ zPSXWJfD4sj8XjHkpZOqdo+UkKDXx8DAooHsTQi3LKPw0J3LyB+JAIAdU/dsr/gU1A8V dIo0Z+FkpVtMoM5zhTtuySyIZB2WLf5qKsoQCju1F7kgDl2O/DUXEYg7DFx7e5cCXyl2 vXIA== X-Gm-Message-State: AOAM530CeF8RPt1HKSmfT+mePdX4Shd4islQmeJ7hwGt5YJhkgKzRKTK ih6MMLTePWOcnfOrBTNdogGxclD1ESZnJQ== X-Google-Smtp-Source: ABdhPJxeaa4E84fwvef6YsZz6JZjAFLss6fB4/MKwxjlWKo+f6c2lww2+Bn4I0VWYvEUR0cZr5GgYw== X-Received: by 2002:a92:7c11:0:b0:2ca:36df:e2f2 with SMTP id x17-20020a927c11000000b002ca36dfe2f2mr73072ilc.149.1650554531193; Thu, 21 Apr 2022 08:22:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 62/64] hw/nios2: Machine with a Vectored Interrupt Controller Date: Thu, 21 Apr 2022 08:17:33 -0700 Message-Id: <20220421151735.31996-63-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::12d; envelope-from=richard.henderson@linaro.org; helo=mail-il1-x12d.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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: Amir Gonnen , Mark Cave-Ayland Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650559023859100001 Content-Type: text/plain; charset="utf-8" From: Amir Gonnen Demonstrate how to use nios2 VIC on a machine. Introduce a new machine property to attach a VIC. When VIC is present, let the CPU know that it should use the External Interrupt Interface instead of the Internal Interrupt Interface. The devices on the machine are attached to the VIC and not directly to cpu. To allow VIC update EIC fields, we set the "cpu" property of the VIC with a reference to the nios2 cpu. Reviewed-by: Mark Cave-Ayland Signed-off-by: Amir Gonnen Message-Id: <20220303153906.2024748-6-amir.gonnen@neuroblade.ai> [rth: Put a property on the 10m50-ghrd machine, rather than create a new machine class.] Signed-off-by: Richard Henderson --- hw/nios2/10m50_devboard.c | 61 +++++++++++++++++++++++++++++++++------ hw/nios2/Kconfig | 1 + 2 files changed, 53 insertions(+), 9 deletions(-) diff --git a/hw/nios2/10m50_devboard.c b/hw/nios2/10m50_devboard.c index dda4ab2bf5..91383fb097 100644 --- a/hw/nios2/10m50_devboard.c +++ b/hw/nios2/10m50_devboard.c @@ -27,6 +27,7 @@ =20 #include "hw/sysbus.h" #include "hw/char/serial.h" +#include "hw/intc/nios2_vic.h" #include "hw/qdev-properties.h" #include "sysemu/sysemu.h" #include "hw/boards.h" @@ -43,6 +44,8 @@ struct Nios2MachineState { MemoryRegion phys_tcm_alias; MemoryRegion phys_ram; MemoryRegion phys_ram_alias; + + bool vic; }; =20 #define TYPE_NIOS2_MACHINE MACHINE_TYPE_NAME("10m50-ghrd") @@ -81,10 +84,39 @@ static void nios2_10m50_ghrd_init(MachineState *machine) memory_region_add_subregion(address_space_mem, 0xc0000000 + ram_base, &nms->phys_ram_alias); =20 - /* Create CPU -- FIXME */ - cpu =3D NIOS2_CPU(cpu_create(TYPE_NIOS2_CPU)); - for (i =3D 0; i < 32; i++) { - irq[i] =3D qdev_get_gpio_in_named(DEVICE(cpu), "IRQ", i); + /* Create CPU. We need to set eic_present between init and realize. */ + cpu =3D NIOS2_CPU(object_new(TYPE_NIOS2_CPU)); + + /* Enable the External Interrupt Controller within the CPU. */ + cpu->eic_present =3D nms->vic; + + /* Configure new exception vectors. */ + cpu->reset_addr =3D 0xd4000000; + cpu->exception_addr =3D 0xc8000120; + cpu->fast_tlb_miss_addr =3D 0xc0000100; + + qdev_realize_and_unref(DEVICE(cpu), NULL, &error_fatal); + + if (nms->vic) { + DeviceState *dev =3D qdev_new(TYPE_NIOS2_VIC); + MemoryRegion *dev_mr; + qemu_irq cpu_irq; + + object_property_set_link(OBJECT(dev), "cpu", OBJECT(cpu), &error_f= atal); + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + + cpu_irq =3D qdev_get_gpio_in_named(DEVICE(cpu), "EIC", 0); + sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, cpu_irq); + for (int i =3D 0; i < 32; i++) { + irq[i] =3D qdev_get_gpio_in(dev, i); + } + + dev_mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); + memory_region_add_subregion(address_space_mem, 0x18002000, dev_mr); + } else { + for (i =3D 0; i < 32; i++) { + irq[i] =3D qdev_get_gpio_in_named(DEVICE(cpu), "IRQ", i); + } } =20 /* Register: Altera 16550 UART */ @@ -105,15 +137,22 @@ static void nios2_10m50_ghrd_init(MachineState *machi= ne) sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0xe0000880); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[5]); =20 - /* Configure new exception vectors and reset CPU for it to take effect= . */ - cpu->reset_addr =3D 0xd4000000; - cpu->exception_addr =3D 0xc8000120; - cpu->fast_tlb_miss_addr =3D 0xc0000100; - nios2_load_kernel(cpu, ram_base, ram_size, machine->initrd_filename, BINARY_DEVICE_TREE_FILE, NULL); } =20 +static bool get_vic(Object *obj, Error **errp) +{ + Nios2MachineState *nms =3D NIOS2_MACHINE(obj); + return nms->vic; +} + +static void set_vic(Object *obj, bool value, Error **errp) +{ + Nios2MachineState *nms =3D NIOS2_MACHINE(obj); + nms->vic =3D value; +} + static void nios2_10m50_ghrd_class_init(ObjectClass *oc, void *data) { MachineClass *mc =3D MACHINE_CLASS(oc); @@ -121,6 +160,10 @@ static void nios2_10m50_ghrd_class_init(ObjectClass *o= c, void *data) mc->desc =3D "Altera 10M50 GHRD Nios II design"; mc->init =3D nios2_10m50_ghrd_init; mc->is_default =3D true; + + object_class_property_add_bool(oc, "vic", get_vic, set_vic); + object_class_property_set_description(oc, "vic", + "Set on/off to enable/disable the Vectored Interrupt Controller"); } =20 static const TypeInfo nios2_10m50_ghrd_type_info =3D { diff --git a/hw/nios2/Kconfig b/hw/nios2/Kconfig index b10ea640da..4748ae27b6 100644 --- a/hw/nios2/Kconfig +++ b/hw/nios2/Kconfig @@ -3,6 +3,7 @@ config NIOS2_10M50 select NIOS2 select SERIAL select ALTERA_TIMER + select NIOS2_VIC =20 config NIOS2_GENERIC_NOMMU bool --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650557748; cv=none; d=zohomail.com; s=zohoarc; b=TBormYjQoxE40LaxOwa+sl2rwyunXtIaEnU9EgWji2paNrTkiUMqCgZX5q2ouDzJL2+RcKMs4OYhnS6Y1kmLwSVENDmjUZSoGKYauUbgiyOHvB1ymsPcHD6+QMj04QA99a97k/gQnTxkNJccwUDkAuTf0GGZpGcbrjfjM+lNDxc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650557748; 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=Y6wXmLblCt6S4c4wZEMyG9x0jyr+hkrFDS0c7/JgCQA=; b=lPyeOnBr9UYXdQaWU5ovVAsGctr06+7l7Xb9B+rFIMw77OF/rdnt7nXC9NcgSzQC6X0HJlabwTSFtA0ykTrDK22+7mh2ZzCdUgV9LPUa016h/AiEoljN7Xo2yJdURxAzuK6vrImVtmxg7/ejzComGNy7V6t4/bYPPgYHMwNi+Sc= 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 1650557748035570.6852186097582; Thu, 21 Apr 2022 09:15:48 -0700 (PDT) Received: from localhost ([::1]:46174 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZT8-0006En-SW for importer@patchew.org; Thu, 21 Apr 2022 12:15:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45182) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYdP-0005o9-Au for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:22:20 -0400 Received: from mail-il1-x134.google.com ([2607:f8b0:4864:20::134]:44942) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYdN-0007HO-9d for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:22:19 -0400 Received: by mail-il1-x134.google.com with SMTP id o5so3247379ils.11 for ; Thu, 21 Apr 2022 08:22:13 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id j1-20020a926e01000000b002cc52449a19sm3985402ilc.35.2022.04.21.08.22.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:22:12 -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=Y6wXmLblCt6S4c4wZEMyG9x0jyr+hkrFDS0c7/JgCQA=; b=UV74OxD+7GTuEgs2mw9kECDLX1gYWAvsSCef8JXV/uFDv5iqIb8c2VvCLnp9WmzoGN xSmAT3Lak3h1+aK37lKauuU1IrIfPfGgeGlXOuEzJLdWQb/ELSe/fC6sTdcz/Oy/PqY8 twWL8OESwEzI8xl7RY4O7HKUGAqKmoxN1T20rH2bjoON1veK/ppcZcFhZ/QY3iMRzR51 Y7KqG32Fg6rCuPaXBolzmRYHcnmgsbWkqUspoCIildFnMC9B+kloDrVMeKz1Ff0ar4KI j7uJMIrEQDBrr2+JcdZWefG34cbCHTPUTWDPpMx0RyQGrPmoMCV3zNlX5GCNikG8aXqz Jqbw== 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=Y6wXmLblCt6S4c4wZEMyG9x0jyr+hkrFDS0c7/JgCQA=; b=Tm8DhaYlfwVq6qJZOYd5bqxGr14qi/3wMJpGKQ/ZbTXQ8rcikw+e0JkoNd0vQrBmMQ gto0s2pxAwGlfMX0kiABDSqf5X2ZlKxhWJSQaiWNSmJeK1vzkn9rb5LvCzeSoPNxEg2O RazCEd9+Ynq/FHpA2vBo1sH7o+yzjd66LL7i/4v2AgdEgXjWpCiH+UP3niZtOTz4z79m 5R6MMt+TtTBsKEkgpqoaz6d8cRJXTxMG6ZhFcv9F9iOkyFpyWDgGkkDoS0YBPHi1uCrb wvP624joO3ULdX0fg/XKUe7ExAC4c5fE5Pct8ULlA1FXHSGgFewP0g2VH110zWqcuuAi rp4g== X-Gm-Message-State: AOAM531nTUY+REtqpQs5rY9WvzHFDFomZTjZczP97Cz36dsaOAjiZo65 g//DhMB3kXsD47yCrSZNyCbnHyNBzHvXAg== X-Google-Smtp-Source: ABdhPJxSlAA8z8Wxj7LaaYYG9Frgt+m15ZepCjc3cea1xrA6/94ksKDz9hG/YM7HTHbzVfMCOr7G9g== X-Received: by 2002:a05:6e02:8ae:b0:2c7:90a5:90b8 with SMTP id a14-20020a056e0208ae00b002c790a590b8mr84911ilt.19.1650554532485; Thu, 21 Apr 2022 08:22:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 63/64] tests/tcg/nios2: Add semihosting multiarch tests Date: Thu, 21 Apr 2022 08:17:34 -0700 Message-Id: <20220421151735.31996-64-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::134; envelope-from=richard.henderson@linaro.org; helo=mail-il1-x134.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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: =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650557749121100001 Add runtime supporting the nios2-semi.c interface. Execute the hello and memory multiarch tests. Cc: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- tests/tcg/nios2/semicall.h | 25 +++ tests/tcg/nios2/10m50-ghrd.ld | 59 +++++++ tests/tcg/nios2/Makefile.softmmu-target | 29 ++++ tests/tcg/nios2/boot.S | 218 ++++++++++++++++++++++++ tests/tcg/nios2/intr.S | 31 ++++ 5 files changed, 362 insertions(+) create mode 100644 tests/tcg/nios2/semicall.h create mode 100644 tests/tcg/nios2/10m50-ghrd.ld create mode 100644 tests/tcg/nios2/Makefile.softmmu-target create mode 100644 tests/tcg/nios2/boot.S create mode 100644 tests/tcg/nios2/intr.S diff --git a/tests/tcg/nios2/semicall.h b/tests/tcg/nios2/semicall.h new file mode 100644 index 0000000000..d7acf665e1 --- /dev/null +++ b/tests/tcg/nios2/semicall.h @@ -0,0 +1,25 @@ +/* + * Nios2 semihosting interface. + */ + +#ifndef SEMICALL_H +#define SEMICALL_H + +#define HOSTED_EXIT 0 +#define HOSTED_INIT_SIM 1 +#define HOSTED_OPEN 2 +#define HOSTED_CLOSE 3 +#define HOSTED_READ 4 +#define HOSTED_WRITE 5 +#define HOSTED_LSEEK 6 +#define HOSTED_RENAME 7 +#define HOSTED_UNLINK 8 +#define HOSTED_STAT 9 +#define HOSTED_FSTAT 10 +#define HOSTED_GETTIMEOFDAY 11 +#define HOSTED_ISATTY 12 +#define HOSTED_SYSTEM 13 + +#define semihosting_call break 1 + +#endif /* SEMICALL_H */ diff --git a/tests/tcg/nios2/10m50-ghrd.ld b/tests/tcg/nios2/10m50-ghrd.ld new file mode 100644 index 0000000000..d83e136267 --- /dev/null +++ b/tests/tcg/nios2/10m50-ghrd.ld @@ -0,0 +1,59 @@ +MEMORY +{ + tpf (rx) : ORIGIN =3D 0xc0000000, LENGTH =3D 1K + ram (rwx) : ORIGIN =3D 0xc8000000, LENGTH =3D 128M +} + +PHDRS +{ + RAM PT_LOAD; +} + +ENTRY(_start) +EXTERN(_start) +EXTERN(_interrupt) +EXTERN(_fast_tlb_miss) + +SECTIONS +{ + /* Begin at the (hardcoded) _interrupt entry point. */ + .text 0xc8000120 : { + *(.text.intr) + *(.text .text.* .gnu.linkonce.t.*) + } >ram :RAM + + .rodata : ALIGN(4) { + *(.rodata .rodata.* .gnu.linkonce.r.*) + } > ram :RAM + + .eh_frame_hdr : ALIGN (4) { + KEEP (*(.eh_frame_hdr)) + *(.eh_frame_entry .eh_frame_entry.*) + } >ram :RAM + .eh_frame : ALIGN (4) { + KEEP (*(.eh_frame)) *(.eh_frame.*) + } >ram :RAM + + .data : ALIGN(4) { + *(.shdata) + *(.data .data.* .gnu.linkonce.d.*) + . =3D ALIGN(4); + _gp =3D ABSOLUTE(. + 0x8000); + *(.got.plt) *(.got) + *(.lit8) + *(.lit4) + *(.sdata .sdata.* .gnu.linkonce.s.*) + } >ram :RAM + + .bss : ALIGN(4) { + __bss_start =3D ABSOLUTE(.); + *(.sbss .sbss.* .gnu.linkonce.sb.*) + *(.scommon) + *(.bss .bss.* .gnu.linkonce.b.*) + *(COMMON) + . =3D ALIGN(4); + __bss_end =3D ABSOLUTE(.); + } >ram :RAM + + __stack =3D ORIGIN(ram) + LENGTH(ram); +} diff --git a/tests/tcg/nios2/Makefile.softmmu-target b/tests/tcg/nios2/Make= file.softmmu-target new file mode 100644 index 0000000000..70664db81c --- /dev/null +++ b/tests/tcg/nios2/Makefile.softmmu-target @@ -0,0 +1,29 @@ +# +# Nios2 system tests +# + +NIOS2_SYSTEM_SRC =3D $(SRC_PATH)/tests/tcg/nios2 +VPATH +=3D $(NIOS2_SYSTEM_SRC) + +# These objects provide the basic boot code and helper functions for all t= ests +CRT_OBJS =3D boot.o intr.o $(MINILIB_OBJS) +LINK_SCRIPT =3D $(NIOS2_SYSTEM_SRC)/10m50-ghrd.ld + +CFLAGS +=3D -nostdlib -g -O0 $(MINILIB_INC) +LDFLAGS +=3D -Wl,-T$(LINK_SCRIPT) -static -nostdlib $(CRT_OBJS) -lgcc + +%.o: %.S + $(call quiet-command, $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -x assembler-with-c= pp -c $< -o $@, AS, $@) + +%.o: %.c + $(call quiet-command, $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c $< -o $@, CC, $@) + +# Build and link the tests +%: %.o $(LINK_SCRIPT) $(CRT_OBJS) + $(call quiet-command, $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS)= , LD, $@) + +# FIXME: nios2 semihosting writes to stdout, not a chardev +QEMU_OPTS =3D -M 10m50-ghrd,vic=3Don -semihosting >$@.out -kernel + +memory: CFLAGS+=3D-DCHECK_UNALIGNED=3D0 +TESTS +=3D $(MULTIARCH_TESTS) diff --git a/tests/tcg/nios2/boot.S b/tests/tcg/nios2/boot.S new file mode 100644 index 0000000000..f6771cbc81 --- /dev/null +++ b/tests/tcg/nios2/boot.S @@ -0,0 +1,218 @@ +/* + * Minimal Nios2 system boot code. + * + * Copyright Linaro Ltd 2022 + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "semicall.h" + + .text + .set noat + +_start: + /* Linker script defines stack at end of ram. */ + movia sp, __stack + + /* Install trampoline to _fast_tlb_miss at hardcoded vector. */ + movia r4, 0xc0000100 + movia r5, _ftm_tramp + movi r6, .L__ftm_end - _ftm_tramp + call memcpy + + /* Zero the bss to satisfy C. */ + movia r4, __bss_start + movia r6, __bss_end + sub r6, r6, r4 + movi r5, 0 + call memset + + /* Test! */ + call main + + /* Exit with main's return value. */ + movi r4, HOSTED_EXIT + mov r5, r2 + semihosting_call + + .globl _start + .type _start, @function + .size _start, . - _start + +_ftm_tramp: + movia et, _fast_tlb_miss + jmp et +.L__ftm_end: + + .type _ftm_tramp, @function + .size _ftm_tramp, . - _ftm_tramp + +#define dst r4 +#define src r5 +#define len r6 + +memcpy: + /* Store return value right away, per API */ + mov r2, dst + + /* Check for both dst and src aligned. */ + or at, dst, src + andi at, at, 3 + bne at, zero, .L_mc_test1 + + /* Copy blocks of 8. */ + + movi at, 8 + bltu len, at, .L_mc_test4 + +.L_mc_loop8: + ldw r8, 0(src) + ldw r9, 4(src) + addi src, src, 8 + addi dst, dst, 8 + subi len, len, 8 + stw r8, -8(dst) + stw r9, -4(dst) + bgeu len, at, .L_mc_loop8 + + /* Copy final aligned block of 4. */ + +.L_mc_test4: + movi at, 4 + bltu len, at, .L_mc_test1 + + ldw r8, 0(src) + addi src, src, 4 + addi dst, dst, 4 + subi len, len, 4 + stw r8, -4(dst) + + /* Copy single bytes to finish. */ + +.L_mc_test1: + beq len, zero, .L_mc_done + +.L_mc_loop1: + ldb r8, 0(src) + addi src, src, 1 + addi dst, dst, 1 + subi len, len, 1 + stb r8, -1(dst) + bne len, zero, .L_mc_loop1 + +.L_mc_done: + ret + +#undef dst +#undef src +#undef len + + .global memcpy + .type memcpy, @function + .size memcpy, . - memcpy + +#define dst r4 +#define val r5 +#define len r6 + +memset: + /* Store return value right away, per API */ + mov r2, dst + + /* Check for small blocks; fall back to bytewise. */ + movi r3, 8 + bltu len, r3, .L_ms_test1 + + /* Replicate the byte across the word. */ + andi val, val, 0xff + slli at, val, 8 + or val, val, at + slli at, val, 16 + or val, val, at + + /* Check for destination alignment; realign if needed. */ + andi at, dst, 3 + bne at, zero, .L_ms_align + + /* Set blocks of 8. */ + +.L_ms_loop8: + stw val, 0(dst) + stw val, 4(dst) + addi dst, dst, 8 + subi len, len, 8 + bgeu len, r3, .L_ms_loop8 + + /* Set final aligned block of 4. */ + +.L_ms_test4: + movi at, 4 + bltu len, at, .L_ms_test1 + + stw r8, 0(dst) + addi dst, dst, 4 + subi len, len, 4 + stw r8, -4(dst) + + /* Set single bytes to finish. */ + +.L_ms_test1: + beq len, zero, .L_ms_done + +.L_ms_loop1: + stb r8, 0(dst) + addi dst, dst, 1 + subi len, len, 1 + bne len, zero, .L_ms_loop1 + +.L_ms_done: + ret + + /* Realign for a large block, len >=3D 8. */ +.L_ms_align: + andi at, dst, 1 + beq at, zero, 2f + + stb val, 0(dst) + addi dst, dst, 1 + subi len, len, 1 + +2: andi at, dst, 2 + beq at, zero, 4f + + sth val, 0(dst) + addi dst, dst, 2 + subi len, len, 2 + +4: bgeu len, r3, .L_ms_loop8 + br .L_ms_test4 + +#undef dst +#undef val +#undef len + + .global memset + .type memset, @function + .size memset, . - memset + +/* + * void __sys_outc(char c); + */ +__sys_outc: + subi sp, sp, 16 + stb r4, 0(sp) /* buffer[0] =3D c */ + movi at, 1 + stw at, 4(sp) /* STDOUT_FILENO */ + stw sp, 8(sp) /* buffer */ + stw at, 12(sp) /* len */ + + movi r4, HOSTED_WRITE + addi r5, sp, 4 + semihosting_call + + addi sp, sp, 16 + ret + + .global __sys_outc + .type __sys_outc, @function + .size __sys_outc, . - __sys_outc diff --git a/tests/tcg/nios2/intr.S b/tests/tcg/nios2/intr.S new file mode 100644 index 0000000000..c1730692ba --- /dev/null +++ b/tests/tcg/nios2/intr.S @@ -0,0 +1,31 @@ +/* + * Minimal Nios2 system boot code -- exit on interrupt. + * + * Copyright Linaro Ltd 2022 + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "semicall.h" + + .section .text.intr, "ax" + .global _interrupt + .type _interrupt, @function + +_interrupt: + rdctl r5, exception /* extract exception.CAUSE */ + srli r5, r5, 2 + movi r4, HOSTED_EXIT + semihosting_call + + .size _interrupt, . - _interrupt + + .text + .global _fast_tlb_miss + .type _fast_tlb_miss, @function + +_fast_tlb_miss: + movi r5, 32 + movi r4, HOSTED_EXIT + semihosting_call + + .size _fast_tlb_miss, . - _fast_tlb_miss --=20 2.34.1 From nobody Tue May 21 06:14:30 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=1650557559; cv=none; d=zohomail.com; s=zohoarc; b=EWT7JWtLg68zsWY/kIyH6QLWJ3veRXgW7ujvu4AUNm5PGO6KYYXegR8XBcsOHw65r+O9fViRGgxhZ+VwQES0ss+k2eSIpmLoLvTKQVSeMej0aiPHfkTtVlHI9flN2Xfl5rYRGMo7wo8UUPn0XSXqpym1x3HUvFUUwmEORaonWwY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650557559; 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=HwV7h+cRAVlBMNxIV8xTU8C+Bl+pxTzWQ3OYqttL/GI=; b=IujXwgWtabOh3tHtpWWsDObwOVRrzk3RCh+e3zSAczbKJm68zwObNov1Cwq32pIUrQxM43++oZPXnsW0WZh7c5LtSlz4Q4UM/ESnbX4DTu0De5d2OPyE41BULf4v7VZLNOhdPp0TnvPcF9sC/AhWvpuCe0xzU9UoeQa6/iP2sH0= 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 1650557559964921.2548778163829; Thu, 21 Apr 2022 09:12:39 -0700 (PDT) Received: from localhost ([::1]:37606 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nhZQ6-0000UK-Ng for importer@patchew.org; Thu, 21 Apr 2022 12:12:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45180) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nhYdO-0005o8-Qp for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:22:20 -0400 Received: from mail-il1-x134.google.com ([2607:f8b0:4864:20::134]:39701) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nhYdN-0007HX-9n for qemu-devel@nongnu.org; Thu, 21 Apr 2022 11:22:18 -0400 Received: by mail-il1-x134.google.com with SMTP id d4so3252713iln.6 for ; Thu, 21 Apr 2022 08:22:15 -0700 (PDT) Received: from stoup.. ([2607:fb90:80c8:6cf3:a91a:4957:ba18:ac18]) by smtp.gmail.com with ESMTPSA id j1-20020a926e01000000b002cc52449a19sm3985402ilc.35.2022.04.21.08.22.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 08:22:13 -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=HwV7h+cRAVlBMNxIV8xTU8C+Bl+pxTzWQ3OYqttL/GI=; b=BxM1FJlmscGPBFByibhZl9u4CzIDwgUxyuZ4L5GOUD0qroCyt8FJx6C1FG1evk/Bym F77PJvl+8TEwYxvAr2Io8aLl6mAVFmbTh6RZROD1Xt2CvYcUGNUgZ1acE+qBx5sod3uD qvau20IPis07qoW8IOS0KQ4lxViXY+fitpHwsqYnl0u3wuLb55UBiN6mE7uZbUgk+wqc 7zdTnjdO0KabK5qnRmGyhrsG3Hu51eSCtN+uk+r5uj6D9jNMxvdB7eFhO8yAGHQkoSY+ IRNOFIy82WBHGWFujyYlHS/bC+sS5rDt0s7vJ5LiQIzQb3IJnKx+vh88bPZD/pn/joIQ LvSg== 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=HwV7h+cRAVlBMNxIV8xTU8C+Bl+pxTzWQ3OYqttL/GI=; b=lg3E5UHyFEGWQWxcG8gy1VEz1Vw+5FlnVVtKM9O+Ne2T8GC9Rem9VrOMcm1zlUSvVN WFGQEgvly3AsaZfYQ6YvnO8T7WJaSAPsRNXQG+ytR0/nw3LU0S3/NIPXYUqrDkdXsWrN ngsjZaTqGdqzs0gu+USlivGce+xVKvoqYZvqYJZMPouTiVfqDnCCgI2ybUv+KWy7J93g 199ve5RbWtAdqIWpp7hr4UEA1sKlV2CGvqbs0V3IMb0E1KBd3OZ5H6wxwSFaY+P3cV+f s4vQhRrv0BA2yxFaBBi3iPQKR78797s1wjwvFiQNaDw0iubKB/ws1qM4bMzM8qIpnoAt 5Dhg== X-Gm-Message-State: AOAM533ay8GWzNIO35AjeMXpsV58FMibj+ubweRRZYFNoq1B8o5oBMLV z+BDOxLx5p2DvS6lUl1B3Q7wczjHo6Cg7g== X-Google-Smtp-Source: ABdhPJzs71I226j4qz+35yQaSRYfz+gxmyC4AkS6peDiy024BB7ZKsCHXSr8lKR8VxikTyNZKYxoCg== X-Received: by 2002:a05:6e02:1a6b:b0:2cc:1eef:9c8c with SMTP id w11-20020a056e021a6b00b002cc1eef9c8cmr89733ilv.256.1650554534952; Thu, 21 Apr 2022 08:22:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v7 64/64] tests/tcg/nios2: Add test-shadow-1 Date: Thu, 21 Apr 2022 08:17:35 -0700 Message-Id: <20220421151735.31996-65-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220421151735.31996-1-richard.henderson@linaro.org> References: <20220421151735.31996-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::134; envelope-from=richard.henderson@linaro.org; helo=mail-il1-x134.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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: =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1650557561788100001 Add a regression test for tcg indirect global lowering. This appeared with nios2, with cps !=3D 0, so that we use indirection into the shadow register set. An indirect call verifies alignment of rA. The use of rA was live across the brcond leading to a tcg_debug_assert failure. Cc: Alex Benn=C3=A9e Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- tests/tcg/nios2/Makefile.softmmu-target | 1 + tests/tcg/nios2/test-shadow-1.S | 37 +++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 tests/tcg/nios2/test-shadow-1.S diff --git a/tests/tcg/nios2/Makefile.softmmu-target b/tests/tcg/nios2/Make= file.softmmu-target index 70664db81c..b5f6a08848 100644 --- a/tests/tcg/nios2/Makefile.softmmu-target +++ b/tests/tcg/nios2/Makefile.softmmu-target @@ -27,3 +27,4 @@ QEMU_OPTS =3D -M 10m50-ghrd,vic=3Don -semihosting >$@.out= -kernel =20 memory: CFLAGS+=3D-DCHECK_UNALIGNED=3D0 TESTS +=3D $(MULTIARCH_TESTS) +TESTS +=3D test-shadow-1 diff --git a/tests/tcg/nios2/test-shadow-1.S b/tests/tcg/nios2/test-shadow-= 1.S new file mode 100644 index 0000000000..33076ddf59 --- /dev/null +++ b/tests/tcg/nios2/test-shadow-1.S @@ -0,0 +1,37 @@ +/* + * Regresion test for TCG indirect global lowering. + */ + +#include "semicall.h" + + .text + .set noat + .align 2 + .globl main + .type main, @function + +main: + /* Initialize r0 in shadow register set 1. */ + movhi at, 1 /* PRS=3D1, CRS=3D0, RSIE=3D0, PIE=3D0 */ + wrctl status, at + wrprs zero, zero + + /* Change current register set to 1. */ + movi at, 1 << 10 /* PRS=3D0, CRS=3D1, RSIE=3D0, PIE=3D0 */ + wrctl estatus, at + movia ea, 1f + eret + + /* Load address for callr, then end TB. */ +1: movia at, 3f + br 2f + + /* Test case! TCG abort on indirect lowering across brcond. */ +2: callr at + + /* exit(0) */ +3: movi r4, HOSTED_EXIT + movi r5, 0 + semihosting_call + + .size main, . - main --=20 2.34.1