From patchwork Tue Jan 11 19:52:37 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 531150 Delivered-To: patch@linaro.org Received: by 2002:ad5:544f:0:0:0:0:0 with SMTP id a15csp3790654imp; Tue, 11 Jan 2022 12:08:20 -0800 (PST) X-Google-Smtp-Source: ABdhPJzvk0skAzZDqkPhY6Wagwaf55Y1MjJJHBRwt0zngNB0wDz7CMZAUEbs0Gf6OLcMjInAqENo X-Received: by 2002:a05:6e02:1a86:: with SMTP id k6mr3490935ilv.223.1641931700709; Tue, 11 Jan 2022 12:08:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1641931700; cv=none; d=google.com; s=arc-20160816; b=tXjFWw6himPAT+vUoPqiSthikLcdPLR72NpbefM9X1e8/8QbQQTUu9nz0s2WrzZkB/ w0Jsxnb0XItp0jBapa647VIrYhh8DFzzU//faBjYGdTjjSdTczVSsMrGUFAOYUGJ9C4Z SNWVg632f2tBjC7Vrn6mi4eqlgwDQxMzelNFAduBAFvoI51xoGJpha3FMtoczM7Y6qty 3Cb5lPaLW1BR6etf12RkObKc7Tj0TQMB0Y9yu7tjYvlQkeBgai1pSfFPog/JCypdd1iC sRAvhjphC/dRsdW9XLRmndujtz+vbLq4isXsTBUlDx06aWQpvoLAEmA5Uxn99jgt6zIe Qg2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=i6WJJvYciPXb7PzZ1CNg5m01BGPtfU1reNwO8S3mtkA=; b=bUpNWXOZ8sFrqt3hUkSUr7E70b5TR4CQeO0mZXtdbhEKlTRPxV83d985nQp1Hxj1+6 cynpP1tIhtM5+FEUBLYxkJRk3JT5n+/iYLRSloD4GqRU5UFyQKbpVwWK99EvsXVB7Kaa 5Ypanln1ju/P73IXICufdAMmxkVTmv5OiQ6Dqgm3aVoaCC8w3/wM1+7DYjtFWjbzJWiE ovmmTHWhsnwAOSpMm3Qxy3rh2Xpf49QJrIC8yikaEvd97jOLJsQuro+3NO5eUjGb1PEe OlDB8r1e/HgnMyEQgpWrmBH9qA7cNdSkww+EmcLAXBc0rHWkR5zvq58/yGaGXjsN4izt MI+g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id i2si5258003ila.77.2022.01.11.12.08.20 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 11 Jan 2022 12:08:20 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:52906 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1n7NRM-0007cl-8A for patch@linaro.org; Tue, 11 Jan 2022 15:08:20 -0500 Received: from eggs.gnu.org ([209.51.188.92]:44596) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n7NCZ-0007x1-EY for qemu-devel@nongnu.org; Tue, 11 Jan 2022 14:53:03 -0500 Received: from mout.kundenserver.de ([217.72.192.74]:35023) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n7NCX-0008Gp-4K for qemu-devel@nongnu.org; Tue, 11 Jan 2022 14:53:02 -0500 Received: from quad ([82.142.23.158]) by mrelayeu.kundenserver.de (mreue109 [212.227.15.183]) with ESMTPSA (Nemesis) id 1Macay-1mWOoq44de-00c7Vc; Tue, 11 Jan 2022 20:52:59 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 20/30] linux-user/riscv: Use force_sig_fault Date: Tue, 11 Jan 2022 20:52:37 +0100 Message-Id: <20220111195247.1737641-21-laurent@vivier.eu> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20220111195247.1737641-1-laurent@vivier.eu> References: <20220111195247.1737641-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:fGQXr8FBrgCLpPRXMphAnIPCZ9lNj3vti3e14NtiMnVE1qgUlxn zN4I9q9iKllEvyMKrEdZcPaAkbjX1cklenHzZwhUpEGf5K0dX1hoz80QDW0KBw9H/Vi8CmR wfqVokIj1PTdn5/ji1G/DNiLCil5B7tsZM0MQlRWQ7UfHI2s0PBYgYq7a55bZeujdn5gsbj /vjE/hrpFLRJgiHDAweQA== X-UI-Out-Filterresults: notjunk:1;V03:K0:TTtKnOJ0hSY=:/CBAdi/54DYDMjwU6eRMl6 xQG/iKL9RSKOVcQW4Vo51NglaaSaiOafz+F6FcGUiLDX1dS6YsSoPHTVYkKG0IA8cs23SgWKA hu7OjXKSElDEBKZ4WfZBHRqwRjNLg221jmW26IKvNAm/I7RKOKmiRcvb1CXfo/3OKBE6qeGJj Xf4DU75wHl/JzOEMqW+VNwBOsXEH4aGDk8aInW+bIJtkA9UPPxPGPXyUsPral+XdG0vfWNQoV JV1etuoUQixW4zJGN+mfiSudCeDkCGA4QHPSevDH//OVBzxKakkYlSM9Rfm95xl7AsKdis/WN P86yUbolNemXP1WlzmvRxDdgP9uqoIrlLOAlWxg2JI33HUhhGrNO7WGS53wslBOuoeNDuBA9A iWvoTJbw3AaYh8EZ/xr/x1pCG8JouEB30fg/s4CQSfjZQ+mGWZc/dagCPIIGFvW5dYoL85tOO End9A5MGY6gPNndbEWLn4pP6v4ZVoCH40xbvPJPn1MZucHLxPd0wYp6jqKW7s9TX/gtt+8TyG IOeqbSseqWXHQ2ttO9X+xJRnqjKUQ071ijdoUkmVf/Tw5vQdNWKktBplgGLhtvKSQM7M9mj8s ISIotWuttYn/owtufstl6lKbgUNMIAstTPBwFuoNjIPqMKwB2yJmuekrPVqv5DkhBUyZy18x3 aoDU7FyZzRy+KIMUheObeI9SySoymMeJ/pRLBH/IYKnJg7pUWTUDNBanXyj1xAT1YC9E= Received-SPF: none client-ip=217.72.192.74; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 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 , Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Use the new function instead of setting up a target_siginfo_t and calling queue_signal. Fix missing PC from EXCP_DEBUG by merging the case with EXCP_BREAKPOINT. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-Id: <20220107213243.212806-21-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/riscv/cpu_loop.c | 31 +++++-------------------------- 1 file changed, 5 insertions(+), 26 deletions(-) diff --git a/linux-user/riscv/cpu_loop.c b/linux-user/riscv/cpu_loop.c index 0cd8985cb854..26d446f32379 100644 --- a/linux-user/riscv/cpu_loop.c +++ b/linux-user/riscv/cpu_loop.c @@ -30,8 +30,7 @@ void cpu_loop(CPURISCVState *env) { CPUState *cs = env_cpu(env); - int trapnr, signum, sigcode; - target_ulong sigaddr; + int trapnr; target_ulong ret; for (;;) { @@ -40,10 +39,6 @@ void cpu_loop(CPURISCVState *env) cpu_exec_end(cs); process_queued_cpu_work(cs); - signum = 0; - sigcode = 0; - sigaddr = 0; - switch (trapnr) { case EXCP_INTERRUPT: /* just indicate that signals should be handled asap */ @@ -79,39 +74,23 @@ void cpu_loop(CPURISCVState *env) } break; case RISCV_EXCP_ILLEGAL_INST: - signum = TARGET_SIGILL; - sigcode = TARGET_ILL_ILLOPC; + force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPC, env->pc); break; case RISCV_EXCP_BREAKPOINT: - signum = TARGET_SIGTRAP; - sigcode = TARGET_TRAP_BRKPT; - sigaddr = env->pc; + case EXCP_DEBUG: + gdbstep: + force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->pc); break; case RISCV_EXCP_SEMIHOST: env->gpr[xA0] = do_common_semihosting(cs); env->pc += 4; break; - case EXCP_DEBUG: - gdbstep: - signum = TARGET_SIGTRAP; - sigcode = TARGET_TRAP_BRKPT; - break; default: EXCP_DUMP(env, "\nqemu: unhandled CPU exception %#x - aborting\n", trapnr); exit(EXIT_FAILURE); } - if (signum) { - target_siginfo_t info = { - .si_signo = signum, - .si_errno = 0, - .si_code = sigcode, - ._sifields._sigfault._addr = sigaddr - }; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); - } - process_pending_signals(env); } }