From patchwork Wed Nov 3 14:08:25 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 12600877 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 426CDC433EF for ; Wed, 3 Nov 2021 14:10:36 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DB9366109F for ; Wed, 3 Nov 2021 14:10:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org DB9366109F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:38142 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1miGyJ-0004qg-1A for qemu-devel@archiver.kernel.org; Wed, 03 Nov 2021 10:10:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47538) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1miGwf-00025k-65 for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:08:53 -0400 Received: from mail-qv1-xf2e.google.com ([2607:f8b0:4864:20::f2e]:40616) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1miGwc-0004um-TE for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:08:52 -0400 Received: by mail-qv1-xf2e.google.com with SMTP id b11so3032799qvm.7 for ; Wed, 03 Nov 2021 07:08: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=J2ekQZgUHFBwZ3Oz3uiVU6aBNOJi28RxLl6uhXrVgUY=; b=zJoZTnLPOBIuC6dwuFd5eQBMRhyNbYljs/S+k+EV3iT/ujQqq9KTP5EpLVFwZTHpRL CWSJDbjDjipP3AILc6KfDJS0B63XZm1proJAy79q4DX2FbufPhlZlX+4l/I00OqbSLTJ m5F5Gy3uLKaV6qYpo9vek0o+99wyLFDxZBvhXFDsRxeDhjOkzcosY3kuVRRCiERuM4f2 14ZwzoFrDX69rN6XiDul6rikLp3j2XjdJi2xhECCMHNUyIXk3jcQb5JJy8zr3T4xJgD5 q32/cfOjT0bKEiFT8WboQmo/a8b9Ee9Nzf7zE2uW+waRv7W2kfaFdXHbM6udJEV8YTpX g7cg== 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=J2ekQZgUHFBwZ3Oz3uiVU6aBNOJi28RxLl6uhXrVgUY=; b=f1eQ2iTPVjF5z3MipHi4ELq5MQ73vZ+WDtp0zLFGpQvhs7bGGrEib1MWQ6DLFFYrJO hflIye7NjTtEtCm99DO5wIFHwG5gKECsBqdj3ICxYAP5luew/mmlZFAHH3myNKobWeQr RaJwO6efGme9/cw/xjKi1DU5dL9Hjbl+q16pmVmermyauhsow8QliD+OeRUbZ/CFHzAF SRcjkDkAl3Pz2ho8BktGJwpQNAp0lQnzBE0Ce2Ijr4PLL/zk89FWBdeASEdvwwCbeOYM qWn1d5EO0Ltp4nl8rP3L1bRmQeLPm93yCIJhNuJg7pi7hdBiXQ4U5tUst9Mozz5oN8J3 aubQ== X-Gm-Message-State: AOAM532ufdffRZKDE9BetKgAt5IaRd0wiUqbIvB+QFVciPooIRZs3oJ1 V6Gm9QvtqLVPcbl2Wx++mMVQ2ojC1rg5lQ== X-Google-Smtp-Source: ABdhPJx0FvzACsCWUYZG6m2OBbFUItYcoJ3jzIpYJPEOtjowdBKJV/7866LnUm5vFOIdVc46ABsaog== X-Received: by 2002:a05:6214:27c7:: with SMTP id ge7mr32075882qvb.44.1635948529446; Wed, 03 Nov 2021 07:08:49 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id z5sm1669377qtw.71.2021.11.03.07.08.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Nov 2021 07:08:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 01/23] linux-user/alpha: Set TRAP_UNK for bugchk and unknown gentrap Date: Wed, 3 Nov 2021 10:08:25 -0400 Message-Id: <20211103140847.454070-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103140847.454070-1-richard.henderson@linaro.org> References: <20211103140847.454070-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::f2e; envelope-from=richard.henderson@linaro.org; helo=mail-qv1-xf2e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, laurent@vivier.eu Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" These si_codes were changed in 535906c684fca, for linux 4.17. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/syscall_defs.h | 1 + linux-user/alpha/cpu_loop.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index a5ce487dcc..55ccc6ae03 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -715,6 +715,7 @@ typedef struct target_siginfo { #define TARGET_TRAP_TRACE (2) /* process trace trap */ #define TARGET_TRAP_BRANCH (3) /* process taken branch trap */ #define TARGET_TRAP_HWBKPT (4) /* hardware breakpoint/watchpoint */ +#define TARGET_TRAP_UNK (5) /* undiagnosed trap */ struct target_rlimit { abi_ulong rlim_cur; diff --git a/linux-user/alpha/cpu_loop.c b/linux-user/alpha/cpu_loop.c index 4029849d5c..b039369198 100644 --- a/linux-user/alpha/cpu_loop.c +++ b/linux-user/alpha/cpu_loop.c @@ -86,7 +86,7 @@ void cpu_loop(CPUAlphaState *env) /* BUGCHK */ info.si_signo = TARGET_SIGTRAP; info.si_errno = 0; - info.si_code = 0; + info.si_code = TARGET_TRAP_UNK; info._sifields._sigfault._addr = env->pc; queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); break; @@ -155,7 +155,7 @@ void cpu_loop(CPUAlphaState *env) break; default: info.si_signo = TARGET_SIGTRAP; - info.si_code = 0; + info.si_code = TARGET_TRAP_UNK; break; } info.si_errno = 0; From patchwork Wed Nov 3 14:08:26 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 12600885 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E480DC433EF for ; Wed, 3 Nov 2021 14:13:32 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A365F608FB for ; Wed, 3 Nov 2021 14:13:32 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org A365F608FB Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:46644 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1miH19-0002EE-Rz for qemu-devel@archiver.kernel.org; Wed, 03 Nov 2021 10:13:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47584) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1miGwg-000262-CY for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:08:54 -0400 Received: from mail-qt1-x82d.google.com ([2607:f8b0:4864:20::82d]:40619) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1miGwd-0004ur-9h for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:08:54 -0400 Received: by mail-qt1-x82d.google.com with SMTP id l12so415045qtx.7 for ; Wed, 03 Nov 2021 07:08: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=BCE1WlXmmaCtgHYc/C0kxl+XaSWrlWSBPlh1JjzXRMo=; b=Dr5Woc4Jop+dRmFy5mBMeyansUnLV+/FsJS4uB39qyYwWLTHGQpgLLVAPDtt0juxeb MKmPkvzG6icckvrxTFI40cEBDFpQ4A8kzYNbro2rhvsbyQ2M9QYwg5cDD3pd1AXQd2s6 OYzyY28DHM9ukEO0+dLR5iPqbhER0/24j3VYaARWLhzMR012z3RdxhhVKGK/A7brxqF9 Wat0zJy/kYrMvz7K7YJrXGz35SItjpm89jteJV81JcTjRG5R7JIdb3lTZx6I1HetN3JN kRu6vs+h6c+or8SCAomxTGWQiKQrKOodGfryO/3PTvHeiwGkInv4IIAM78z4Mc0aXx+l bfqQ== 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=BCE1WlXmmaCtgHYc/C0kxl+XaSWrlWSBPlh1JjzXRMo=; b=q5EWyB1WcLKkllbtrtFgsQ55edKK7NXdWJilbxBPyExThmqP5l5cVjL+avFqvCFDIm Gu5vmOCq/UZJ/a4mMXu3nktlg0V3HST7qkltezFrFF+FPFgWFh7zIzN9WVRGw7wIe3mQ 5jakauahmDHhtetAdQtfYXHHuphvUE2qKB0v+ZNHg1imtqTiXNLe0FGPog4QBt5LyWFN CPkpdUC3WX/se7ew1Ifd2YTygrgkxAUi6v/lAzUunj910XquTjhAnlV0BFMHTeWbq8NR /UDyxDSklk8GKTKvqr8KxDh7I5xjKePpdlcNnbWCYwU4ajO49Hj5TMCDKqayYRw9uChB loqw== X-Gm-Message-State: AOAM533LfhIL3SiL4Wx2tkjIuzBE0npeDWcCd7p0aORF82uBAFeVj6i+ r3WCWXSBx/h1QsMe2QxnSmJhJtf/U5q35g== X-Google-Smtp-Source: ABdhPJynE3EfW9/gAsxjwhWIAMHEijPLBvq3CqOiPc+McfDQikTajGZIPHwsoHj6OzgvDCTOKLmaNg== X-Received: by 2002:ac8:5dc6:: with SMTP id e6mr46128401qtx.174.1635948530051; Wed, 03 Nov 2021 07:08:50 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id z5sm1669377qtw.71.2021.11.03.07.08.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Nov 2021 07:08:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 02/23] linux-user/alpha: Set FPE_FLTUNK for gentrap ROPRAND Date: Wed, 3 Nov 2021 10:08:26 -0400 Message-Id: <20211103140847.454070-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103140847.454070-1-richard.henderson@linaro.org> References: <20211103140847.454070-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::82d; envelope-from=richard.henderson@linaro.org; helo=mail-qt1-x82d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, laurent@vivier.eu Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" This si_code was changed in 4cc13e4f6d441, for linux 4.17. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/alpha/cpu_loop.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linux-user/alpha/cpu_loop.c b/linux-user/alpha/cpu_loop.c index b039369198..92de2a4424 100644 --- a/linux-user/alpha/cpu_loop.c +++ b/linux-user/alpha/cpu_loop.c @@ -151,7 +151,7 @@ void cpu_loop(CPUAlphaState *env) info.si_code = TARGET_FPE_FLTRES; break; case TARGET_GEN_ROPRAND: - info.si_code = 0; + info.si_code = TARGET_FPE_FLTUNK; break; default: info.si_signo = TARGET_SIGTRAP; From patchwork Wed Nov 3 14:08:27 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 12600887 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E25C9C433F5 for ; Wed, 3 Nov 2021 14:13:32 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 89E766052B for ; Wed, 3 Nov 2021 14:13:32 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 89E766052B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:46604 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1miH19-0002Ce-Oo for qemu-devel@archiver.kernel.org; Wed, 03 Nov 2021 10:13:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47602) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1miGwh-000276-32 for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:08:55 -0400 Received: from mail-qt1-x829.google.com ([2607:f8b0:4864:20::829]:39560) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1miGwd-0004uv-KC for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:08:54 -0400 Received: by mail-qt1-x829.google.com with SMTP id x10so486610qta.6 for ; Wed, 03 Nov 2021 07:08: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=sq/kznFGz9PWdUHHi74JU5t5d0KvsAf3BVy4yRlW1PQ=; b=tZU21ZQnsjZXfbrkB1zSLY15kI+7bvdm3arZHT6VGz6Oopke9M4O/ILS9OVBOzReal tQecHsJiMDf2z+vHowZXBJoAQ/EwStJzFQzt2ki1Zgs0+5r6PPTXeUNQbor996x/nJqD Z9F+IQ0TLgzr5TCBUGzZfxOqdzyVChJfL+bjg2TmBKFIyM/6pHhDOwTRTQS4+om+ettV uvK0f4Z6bVOGCWFKK3JrliBHt6dnRKbVseBIb21dlRSc0CKiLVRsjqDc0BpFxTissjwm 61wfChd+5XX3l7FEXvEYFc5I/xIDScDO0hQ7W+WYdOpad7FcpRyWggiBaonVc3mO3qZy Hp2Q== 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=sq/kznFGz9PWdUHHi74JU5t5d0KvsAf3BVy4yRlW1PQ=; b=PGRfW/I6Ua4QCYTFgoC2dvtj9Not9fMK+RlbIEbPDu4VWylHaGI+xUgHPHR61GC0ru O2yU+aKnVYCr0GoZm+aMk3ncnDYtNeFAtJ+n2QvnTHrqek4tIU62rjrbm09Xd5xxKnK0 jkzTNpfxAntm4qdC46OFnq21+uHKKvNiMdS1TYJPNIwPf+Gb0K7ARmGFwlArs8T4tgcv ztJYxOrjmYj0WsuNK2MREzDcJ/GVTmAqQhVO4hopKwlvQyjznsqSTmEwq6Qi5AiI7aOG 8nUk0ySWhEiGaqjz2lzE+ohR8sAICtvk4dM7HvG95jHSKWBCzUo8q6b0eg5AXdeychQw XDOg== X-Gm-Message-State: AOAM533QMW+KO+c40WusOHMLoUmEROjMsHMbZpGloEHtq8wS5M7VlVjE BfnmM8+nxdmyZ9+TbnlX6i0J7ODAkf236Q== X-Google-Smtp-Source: ABdhPJz+5FaoAK1ohJmTiFWF4zuj5lz9eIiDE0yNxXj3OfG99yIBtmpc0WPAEurnXPjKNP7HIdeFDA== X-Received: by 2002:ac8:4e49:: with SMTP id e9mr47154668qtw.137.1635948530727; Wed, 03 Nov 2021 07:08:50 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id z5sm1669377qtw.71.2021.11.03.07.08.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Nov 2021 07:08:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 03/23] linux-user/alpha: Use force_sig_fault Date: Wed, 3 Nov 2021 10:08:27 -0400 Message-Id: <20211103140847.454070-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103140847.454070-1-richard.henderson@linaro.org> References: <20211103140847.454070-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::829; envelope-from=richard.henderson@linaro.org; helo=mail-qt1-x829.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, laurent@vivier.eu Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Use the new function instead of setting up a target_siginfo_t and calling queue_signal. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/alpha/cpu_loop.c | 61 ++++++++++++------------------------- 1 file changed, 19 insertions(+), 42 deletions(-) diff --git a/linux-user/alpha/cpu_loop.c b/linux-user/alpha/cpu_loop.c index 92de2a4424..0e4c2db462 100644 --- a/linux-user/alpha/cpu_loop.c +++ b/linux-user/alpha/cpu_loop.c @@ -27,8 +27,7 @@ void cpu_loop(CPUAlphaState *env) { CPUState *cs = env_cpu(env); - int trapnr; - target_siginfo_t info; + int trapnr, si_code; abi_long sysret; while (1) { @@ -56,18 +55,10 @@ void cpu_loop(CPUAlphaState *env) break; case EXCP_OPCDEC: do_sigill: - info.si_signo = TARGET_SIGILL; - info.si_errno = 0; - info.si_code = TARGET_ILL_ILLOPC; - info._sifields._sigfault._addr = env->pc; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPC, env->pc); break; case EXCP_ARITH: - info.si_signo = TARGET_SIGFPE; - info.si_errno = 0; - info.si_code = TARGET_FPE_FLTINV; - info._sifields._sigfault._addr = env->pc; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(TARGET_SIGFPE, TARGET_FPE_FLTINV, env->pc); break; case EXCP_FEN: /* No-op. Linux simply re-enables the FPU. */ @@ -76,20 +67,10 @@ void cpu_loop(CPUAlphaState *env) switch (env->error_code) { case 0x80: /* BPT */ - info.si_signo = TARGET_SIGTRAP; - info.si_errno = 0; - info.si_code = TARGET_TRAP_BRKPT; - info._sifields._sigfault._addr = env->pc; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); - break; + goto do_sigtrap_brkpt; case 0x81: /* BUGCHK */ - info.si_signo = TARGET_SIGTRAP; - info.si_errno = 0; - info.si_code = TARGET_TRAP_UNK; - info._sifields._sigfault._addr = env->pc; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); - break; + goto do_sigtrap_unk; case 0x83: /* CALLSYS */ trapnr = env->ir[IR_V0]; @@ -130,47 +111,43 @@ void cpu_loop(CPUAlphaState *env) abort(); case 0xAA: /* GENTRAP */ - info.si_signo = TARGET_SIGFPE; switch (env->ir[IR_A0]) { case TARGET_GEN_INTOVF: - info.si_code = TARGET_FPE_INTOVF; + si_code = TARGET_FPE_INTOVF; break; case TARGET_GEN_INTDIV: - info.si_code = TARGET_FPE_INTDIV; + si_code = TARGET_FPE_INTDIV; break; case TARGET_GEN_FLTOVF: - info.si_code = TARGET_FPE_FLTOVF; + si_code = TARGET_FPE_FLTOVF; break; case TARGET_GEN_FLTUND: - info.si_code = TARGET_FPE_FLTUND; + si_code = TARGET_FPE_FLTUND; break; case TARGET_GEN_FLTINV: - info.si_code = TARGET_FPE_FLTINV; + si_code = TARGET_FPE_FLTINV; break; case TARGET_GEN_FLTINE: - info.si_code = TARGET_FPE_FLTRES; + si_code = TARGET_FPE_FLTRES; break; case TARGET_GEN_ROPRAND: - info.si_code = TARGET_FPE_FLTUNK; + si_code = TARGET_FPE_FLTUNK; break; default: - info.si_signo = TARGET_SIGTRAP; - info.si_code = TARGET_TRAP_UNK; - break; + goto do_sigtrap_unk; } - info.si_errno = 0; - info._sifields._sigfault._addr = env->pc; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(TARGET_SIGFPE, si_code, env->pc); break; default: goto do_sigill; } break; case EXCP_DEBUG: - info.si_signo = TARGET_SIGTRAP; - info.si_errno = 0; - info.si_code = TARGET_TRAP_BRKPT; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + do_sigtrap_brkpt: + force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->pc); + break; + do_sigtrap_unk: + force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_UNK, env->pc); break; case EXCP_INTERRUPT: /* Just indicate that signals should be handled asap. */ From patchwork Wed Nov 3 14:08:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 12600879 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8AA4EC433FE for ; Wed, 3 Nov 2021 14:10:36 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 409D0610FC for ; Wed, 3 Nov 2021 14:10:36 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 409D0610FC Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:38100 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1miGyJ-0004pJ-9Z for qemu-devel@archiver.kernel.org; Wed, 03 Nov 2021 10:10:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47598) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1miGwg-00026t-UX for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:08:54 -0400 Received: from mail-qt1-x836.google.com ([2607:f8b0:4864:20::836]:34548) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1miGwe-0004v0-Gm for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:08:54 -0400 Received: by mail-qt1-x836.google.com with SMTP id u7so944663qtc.1 for ; Wed, 03 Nov 2021 07:08: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=h2fdYoIHcyUR/++4/QSd+NppRobTSDqFOu9ZoZtWFRE=; b=VqR6SFi0nhsxTuhz0+n1nr2SepKsLpYzuXp8SeI50nmxAN2UMjoq5brxyRMqeupayX Y2Kih3G5rP/Qk+r6H7nsRTCvd8LRhT53URwpTZmjUNoHWp9zEwxeuVo4B2K5/pYW2wXk 5El2k4QKlhZKOGvEP97ITGpcCEOCTIVrpD5V5yKFyOdgB0kdAOtjBrP2SFdPanYm11KY PbwK647h7Wbn4xwwgcDFyhWaRwu7h4bqF8BmUGkaJ6ebB0NkwtGZp8mKwBFU7CEQjxFJ rFN3DYnzH5XwfXuTxFZT999kIMQzmROI5dRUS6cTgWAlHIOOhKQpKydVrUc7rc0lytiX zW4A== 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=h2fdYoIHcyUR/++4/QSd+NppRobTSDqFOu9ZoZtWFRE=; b=xpLivcPh+Lq4uIisXkkPBIsfnUAmWGvLrrC+QgirSQOqcZqoflyB8OZjJJo3NFxK0z fv6yhNhOEOZN4+Wi3m14V+0i7o/V9APp3H0gu/CUQAa1mE25ZGI5UyZsd4B0E7eDJkAD ZRQSmJaLtEVIZ7wSkflf/Cd4VqZkahAgUWQRkn+egFXduuqkzc7Eu5p298TY9y1R6WJC wtVmDDyqUKMcAMFDMWDI3BlLrzC+UndmFLQSBxAuS8Zjroj74PIRYyAr/wQ6PVg9hh/B LXwEYcLRdU3OgaS8NwdQlnz0OIBI2vPmKvXMKJSPZfZIYXOKDHc+t6Vy4IgrijcKaGXY 1MOQ== X-Gm-Message-State: AOAM531ezLYf+LAf4jyXxopUT33z4jzaqrK1OaMpYmp0IQAcmGgwbzOT 3U9EJl4GmJrfaOFs1PjUh9/5rG7R5xxt7Q== X-Google-Smtp-Source: ABdhPJwEnLSWUQx1JEi5vUfVLWtbUJuQiiQMP69v46ufbExSTXe0XDJoMnTLrVcdmYfZU3HZbSvXPQ== X-Received: by 2002:a05:622a:d5:: with SMTP id p21mr30872854qtw.44.1635948531365; Wed, 03 Nov 2021 07:08:51 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id z5sm1669377qtw.71.2021.11.03.07.08.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Nov 2021 07:08:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 04/23] linux-user/cris: Use force_sig_fault Date: Wed, 3 Nov 2021 10:08:28 -0400 Message-Id: <20211103140847.454070-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103140847.454070-1-richard.henderson@linaro.org> References: <20211103140847.454070-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::836; envelope-from=richard.henderson@linaro.org; helo=mail-qt1-x836.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, laurent@vivier.eu Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Use the new function instead of setting up a target_siginfo_t and calling queue_signal. Fill in the missing PC for SIGTRAP. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/cris/cpu_loop.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/linux-user/cris/cpu_loop.c b/linux-user/cris/cpu_loop.c index 0d5d268609..16a2e889e5 100644 --- a/linux-user/cris/cpu_loop.c +++ b/linux-user/cris/cpu_loop.c @@ -28,8 +28,7 @@ void cpu_loop(CPUCRISState *env) { CPUState *cs = env_cpu(env); int trapnr, ret; - target_siginfo_t info; - + while (1) { cpu_exec_start(cs); trapnr = cpu_exec(cs); @@ -38,8 +37,8 @@ void cpu_loop(CPUCRISState *env) switch (trapnr) { case EXCP_INTERRUPT: - /* just indicate that signals should be handled asap */ - break; + /* just indicate that signals should be handled asap */ + break; case EXCP_BREAK: ret = do_syscall(env, env->regs[9], @@ -57,10 +56,7 @@ void cpu_loop(CPUCRISState *env) } break; case EXCP_DEBUG: - info.si_signo = TARGET_SIGTRAP; - info.si_errno = 0; - info.si_code = TARGET_TRAP_BRKPT; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->pc); break; case EXCP_ATOMIC: cpu_exec_step_atomic(cs); From patchwork Wed Nov 3 14:08:29 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 12600883 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9A26CC433EF for ; Wed, 3 Nov 2021 14:13:30 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 5403D6052B for ; Wed, 3 Nov 2021 14:13:30 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 5403D6052B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:46554 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1miH16-00029y-04 for qemu-devel@archiver.kernel.org; Wed, 03 Nov 2021 10:13:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47642) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1miGwi-00029J-E5 for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:08:56 -0400 Received: from mail-qk1-x730.google.com ([2607:f8b0:4864:20::730]:39648) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1miGwe-0004wu-VH for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:08:56 -0400 Received: by mail-qk1-x730.google.com with SMTP id bk22so2365720qkb.6 for ; Wed, 03 Nov 2021 07:08: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=Cq+EqsUr6Fk7YRDOR1iWeMyRL/11b3e2J0Pnd4eMUrQ=; b=z8omwNMrodohDHkiauqS99L0gCILRKBYvNtDCqiAhsW04VpfxAv/MCLZ5wp4+lVCxI M/SzkwQm7u4dGJlA/mxcJT8NKUkcITv/CjVVpqElsrDS1zuEfOSOpROtQ+lnaB+eGQjh E0LDbXYUMhx3fFblsZfdHqGpF2YZmpTSm/bgCww00xpt8ecv4dM6X/pFXyg0B++yLdxi 4TMkkTzIogXplsPW8fsQcE+aH+VM/SkGqBG421YHpDMGUtecjrC19REVF6aMo0kImgdx qDF0+dnJSV1HPqhITOyhN2Jy70GTudJYJ+ICFOD0GYs1myT7OOZ74SS7CWiZ8cVKKDjP OhZQ== 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=Cq+EqsUr6Fk7YRDOR1iWeMyRL/11b3e2J0Pnd4eMUrQ=; b=cATx1wct0vbO45KARZ7jDKKYIFbPZ+8jd8Irr2P8sfb+vlOAsZ8CXUMYRY12XEEcaW hfpR4lhMZMHszGqXdIYbDTLDinWEFIafrOFbskbyLbAJeCsYYmOGb2hVYXH+Tl7JnVu0 eQ0OrzG5/dblU0mrYu4AdjdEXbSdHfYqlc2RqbxPTORfxq1qA+RgH9Rili1E82cWrJ4H YZIjiLMkzd1uUS+dJ9dKXgWmUiAl9Lp9Bo2Kl+jZJzoghDaUnQxsMgWoqvyor/J4+bKn fx3oFFEAx+M7ubjHTGkeAYctTwFlVYPY/0v0ZY5kdVyDjo6KdiSFeczo/fx/cex4JPBj /q5A== X-Gm-Message-State: AOAM533O8hOvwiF1ExDXX+Khn/l8RN9FknlyErffE3SFIlvoni5krCLT gzth1WALtXWFkNPf+eR2G6EjTpAWKaUtBQ== X-Google-Smtp-Source: ABdhPJymgZJPyRFXAEi5k0NbWgoDylTwNcVYi94G9cmScCUF4r2Ju94U+dJsPV3yifSUBCYeGeqBIw== X-Received: by 2002:a37:614:: with SMTP id 20mr2213299qkg.403.1635948532025; Wed, 03 Nov 2021 07:08:52 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id z5sm1669377qtw.71.2021.11.03.07.08.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Nov 2021 07:08:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 05/23] linux-user/hppa: Use force_sig_fault Date: Wed, 3 Nov 2021 10:08:29 -0400 Message-Id: <20211103140847.454070-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103140847.454070-1-richard.henderson@linaro.org> References: <20211103140847.454070-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::730; envelope-from=richard.henderson@linaro.org; helo=mail-qk1-x730.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, laurent@vivier.eu Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Use the new function instead of setting up a target_siginfo_t and calling queue_signal. Fill in the missing PC for SIGTRAP and missing si_code for SIGBUS. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/hppa/cpu_loop.c | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/linux-user/hppa/cpu_loop.c b/linux-user/hppa/cpu_loop.c index 375576c8f0..b09caa1111 100644 --- a/linux-user/hppa/cpu_loop.c +++ b/linux-user/hppa/cpu_loop.c @@ -110,7 +110,6 @@ static abi_ulong hppa_lws(CPUHPPAState *env) void cpu_loop(CPUHPPAState *env) { CPUState *cs = env_cpu(env); - target_siginfo_t info; abi_ulong ret; int trapnr; @@ -147,26 +146,15 @@ void cpu_loop(CPUHPPAState *env) case EXCP_ILL: case EXCP_PRIV_OPR: case EXCP_PRIV_REG: - info.si_signo = TARGET_SIGILL; - info.si_errno = 0; - info.si_code = TARGET_ILL_ILLOPN; - info._sifields._sigfault._addr = env->iaoq_f; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPN, env->iaoq_f); break; case EXCP_OVERFLOW: case EXCP_COND: case EXCP_ASSIST: - info.si_signo = TARGET_SIGFPE; - info.si_errno = 0; - info.si_code = 0; - info._sifields._sigfault._addr = env->iaoq_f; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(TARGET_SIGFPE, 0, env->iaoq_f); break; case EXCP_DEBUG: - info.si_signo = TARGET_SIGTRAP; - info.si_errno = 0; - info.si_code = TARGET_TRAP_BRKPT; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->iaoq_f); break; case EXCP_INTERRUPT: /* just indicate that signals should be handled asap */ From patchwork Wed Nov 3 14:08:30 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 12600891 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6503BC433EF for ; Wed, 3 Nov 2021 14:16:29 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2AF1C6103C for ; Wed, 3 Nov 2021 14:16:29 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 2AF1C6103C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:55096 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1miH40-0007w8-9o for qemu-devel@archiver.kernel.org; Wed, 03 Nov 2021 10:16:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47644) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1miGwi-00029Q-ET for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:08:56 -0400 Received: from mail-qk1-x729.google.com ([2607:f8b0:4864:20::729]:42533) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1miGwf-0004yG-M8 for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:08:56 -0400 Received: by mail-qk1-x729.google.com with SMTP id bm28so2356327qkb.9 for ; Wed, 03 Nov 2021 07:08: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=3GSy2kvUvNsh+WtyFYrRefI0IkOd8hdjsqXAQKDL2Tk=; b=D1cQeN7ga/4wQ/QM8+2uB0FcUGKrUgcL9/oRKc6ejSJKDVodak1d4I3vTk6NCqWNCT P09p1P7KTlaHpCszO2h212qDoqPk/O60+PfgPTFzPvilFLjvCdUWQ4f2VRlVAsGOLESt mdiN5JesBD9LiYfPLNNXdndLygBXU6rDA7U5gyzKPhvR1x6wLG/rjiaSuK2ogNrV5+Ye NzScQNZLv3TvXOT+NTGAEEIjRb85ulTv6CcuPLhcC/6t+hYHp5vsj89f9Dnhaib0AuoX W4qClPbs/J7hIDkasYbeMwYAmYGJa7iEc2URZXT8DIrCpzsgHYXN9gEAGQbl4AqF5uTO J2mw== 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=3GSy2kvUvNsh+WtyFYrRefI0IkOd8hdjsqXAQKDL2Tk=; b=q/XrTOHz0QNO26ZaqrpxUtcqltqokZkjdSuuFLcwt3wKarqKMxWoCP0JYLkCh3ifiw i7e90K2r6WP+6VHCuU2nU7CvdLOcvppAjG9RquQ7E/OLOQ72b1iM7HtRexC/h6RQwE6T Yt7SA9L7rNdlNkxrJ2WydqFj20dIhJAlcG98xGQyeq2d9kduP7ByLHMte+agGA6u1ozR 6b58ThEyrVqy/M0f5oeujFnXsvtEEz+ZhgzMvHb52aPt5E5hI7CTpCn9iavPVTUjp7oe 82viQSdpu5lEmp4ZVwPM2KqhxwNS5jSKxYGvU1EMonItKGY/buKV7r9bFNxxqEy/px5w sxfA== X-Gm-Message-State: AOAM533cGJrVYRRinbbNTlvCYB6ub3PuW736b8dzkg4deor8TZOyoOnu ehbew0DP4+5HQB3QkB9ADV7Mf5UWJHyvTA== X-Google-Smtp-Source: ABdhPJyI+PimmiSrsfqS9q1+pHmbIgvlOR7UddeCtrCdCHUk0u/lpiKv8V2MuN0EqT0YWDA4MbqhGw== X-Received: by 2002:a37:9b83:: with SMTP id d125mr34331678qke.374.1635948532811; Wed, 03 Nov 2021 07:08:52 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id z5sm1669377qtw.71.2021.11.03.07.08.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Nov 2021 07:08:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 06/23] linux-user/hppa: Use the proper si_code for PRIV_OPR, PRIV_REG, OVERFLOW Date: Wed, 3 Nov 2021 10:08:30 -0400 Message-Id: <20211103140847.454070-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103140847.454070-1-richard.henderson@linaro.org> References: <20211103140847.454070-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::729; envelope-from=richard.henderson@linaro.org; helo=mail-qk1-x729.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, laurent@vivier.eu Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" These si_codes have been properly set by the kernel since the beginning. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/hppa/cpu_loop.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/linux-user/hppa/cpu_loop.c b/linux-user/hppa/cpu_loop.c index b09caa1111..8e13f84a64 100644 --- a/linux-user/hppa/cpu_loop.c +++ b/linux-user/hppa/cpu_loop.c @@ -144,11 +144,17 @@ void cpu_loop(CPUHPPAState *env) env->iaoq_b = env->gr[31] + 4; break; case EXCP_ILL: - case EXCP_PRIV_OPR: - case EXCP_PRIV_REG: force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPN, env->iaoq_f); break; + case EXCP_PRIV_OPR: + force_sig_fault(TARGET_SIGILL, TARGET_ILL_PRVOPC, env->iaoq_f); + break; + case EXCP_PRIV_REG: + force_sig_fault(TARGET_SIGILL, TARGET_ILL_PRVREG, env->iaoq_f); + break; case EXCP_OVERFLOW: + force_sig_fault(TARGET_SIGFPE, TARGET_FPE_INTOVF, env->iaoq_f); + break; case EXCP_COND: case EXCP_ASSIST: force_sig_fault(TARGET_SIGFPE, 0, env->iaoq_f); From patchwork Wed Nov 3 14:08:31 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 12600889 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5B442C433EF for ; Wed, 3 Nov 2021 14:16:27 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id EAF006109F for ; Wed, 3 Nov 2021 14:16:26 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org EAF006109F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:54906 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1miH3x-0007p5-UE for qemu-devel@archiver.kernel.org; Wed, 03 Nov 2021 10:16:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47656) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1miGwi-0002A3-LD for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:08:56 -0400 Received: from mail-qk1-x72e.google.com ([2607:f8b0:4864:20::72e]:45845) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1miGwg-0004yL-BH for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:08:56 -0400 Received: by mail-qk1-x72e.google.com with SMTP id n15so2335781qkp.12 for ; Wed, 03 Nov 2021 07:08: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=1o19N/gk+PXUbK6jyFXquvR0OhRPiuwQnhC8c4hu1vw=; b=JJUr5FC7hZ7DKtjnSHUU5Qb8R0OxgQKQHQfD2L8og3/u7HMv5merNjuxDIOVwA7umt IlTsoOibsgilWhDohCLkytIrgsmka1+hPKtuihpT1YUD0Bo06uHEe4/3tOcopbIEtEIp SqpjivER7KL+K/GDl7tzGLhprxEP1k1flYkdJQtSqTBO5lcDkyJ3ic82sPy1OEbB0eZb VN+nXcESRlbc5mWlu2lB4qp1ptuyPUsAO4CHptJIKqUSsmH3LChriWU4avD05CCnqJ8g wIyjlmUffZSYYfuGhHahxvt7CP/LQtx4rN0yCWO2og4AgQ77MCsuY4kgOJcTKhY4kd32 jxPA== 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=1o19N/gk+PXUbK6jyFXquvR0OhRPiuwQnhC8c4hu1vw=; b=4M8GmR5QZZ0ZhZ9PI6ftj6bOcnNiauUSY4vDit8CNz6Z7vhrwRkFt9J2wS8x/sktmW 3Hh/vhthKvJiiju2dm3ql91WSRB6pZvTQbiat0TXEUdXvW1hriv7sDsIJZC6spXzUt4C xQc2ns4TjLjaFeOUtmpfiUE/otZlDvRNnUNc1qmH7gT9g41+6gUJ+YGkGDV89SfepKUu MUpOGq5DvkP0jj0pQvJA6JdlPWIBFRPHHg7wUrVHO3yA+JPyMdJ4yUoHeVY4h99hgiwc Hezu2NIA4VnpSYfuNfzKBWrz6CaOLJ2N4ux0MLoJRZVPxjb4itv71zssFZH3lxrkKrmh S4lQ== X-Gm-Message-State: AOAM531/1GjY+xOa/PJwSnsAop4vwQJtB/VI9CZqOFDc8djaSEwm2825 n/+HYkfUKUPhtFB+RGL4sWZmWNx2DNjHOw== X-Google-Smtp-Source: ABdhPJxrrPvgcvihLyIQoDXxLXnwBnEa9eyL6oKciacD9gYDmLE6c9Ow2uBImR3gWiihZE49m++dvg== X-Received: by 2002:a05:620a:448e:: with SMTP id x14mr34639705qkp.406.1635948533408; Wed, 03 Nov 2021 07:08:53 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id z5sm1669377qtw.71.2021.11.03.07.08.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Nov 2021 07:08:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 07/23] linux-user/hppa: Set FPE_CONDTRAP for COND Date: Wed, 3 Nov 2021 10:08:31 -0400 Message-Id: <20211103140847.454070-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103140847.454070-1-richard.henderson@linaro.org> References: <20211103140847.454070-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::72e; envelope-from=richard.henderson@linaro.org; helo=mail-qk1-x72e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, laurent@vivier.eu Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" This si_code was changed in 75abf64287cab, for linux 4.17. Signed-off-by: Richard Henderson --- linux-user/syscall_defs.h | 1 + linux-user/hppa/cpu_loop.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index 55ccc6ae03..f9efbffe0c 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -688,6 +688,7 @@ typedef struct target_siginfo { #define TARGET_FPE_FLTINV (7) /* floating point invalid operation */ #define TARGET_FPE_FLTSUB (8) /* subscript out of range */ #define TARGET_FPE_FLTUNK (14) /* undiagnosed fp exception */ +#define TARGET_FPE_CONDTRAP (15) /* trap on condition */ #define TARGET_NSIGFPE 15 /* diff --git a/linux-user/hppa/cpu_loop.c b/linux-user/hppa/cpu_loop.c index 8e13f84a64..c33a59fef5 100644 --- a/linux-user/hppa/cpu_loop.c +++ b/linux-user/hppa/cpu_loop.c @@ -156,6 +156,8 @@ void cpu_loop(CPUHPPAState *env) force_sig_fault(TARGET_SIGFPE, TARGET_FPE_INTOVF, env->iaoq_f); break; case EXCP_COND: + force_sig_fault(TARGET_SIGFPE, TARGET_FPE_CONDTRAP, env->iaoq_f); + break; case EXCP_ASSIST: force_sig_fault(TARGET_SIGFPE, 0, env->iaoq_f); break; From patchwork Wed Nov 3 14:08:32 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 12600901 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A90C0C433F5 for ; Wed, 3 Nov 2021 14:21:44 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 450CA60F9D for ; Wed, 3 Nov 2021 14:21:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 450CA60F9D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:37792 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1miH95-00074h-Fl for qemu-devel@archiver.kernel.org; Wed, 03 Nov 2021 10:21:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47698) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1miGwk-0002GK-5p for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:08:58 -0400 Received: from mail-qt1-x833.google.com ([2607:f8b0:4864:20::833]:38590) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1miGwh-00053w-VU for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:08:57 -0400 Received: by mail-qt1-x833.google.com with SMTP id h4so928292qth.5 for ; Wed, 03 Nov 2021 07:08: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=eorTYpTGmRMqlosPMgNCUx4CrYGaNy55bmumMBNoYKc=; b=Yq8iQ5in0C1NgWCyi9rfpzWeJSg4FUhC4iIHgo3iRskj1bG87UemKVpqCt6S1AbUWO D/80g1PjaMLY50gA76/8kEmuIR58LWQfdkIzSLb+mWvXAO7s/Q6QJZFGFogY3TCmTZjo GySzlng4kxDrbY8d7D1z65a5UIGFE9fJIW2kWo3aYwKdif2LZiYaplwPAArw+ccNkPfb kFXjb47xkghTzv+/Zc0sw+ojO/RBG5tOpWzSM73t6Pe3aId4gK0xKw1eZjIi9X4CtmIQ NxLZ9T1Yo6fco3weYs0RQXlNgyNV6GMOIhXwzRN48XWHc9joRqiy/H1rRjULfIuRo3/y e53w== 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=eorTYpTGmRMqlosPMgNCUx4CrYGaNy55bmumMBNoYKc=; b=11ZsbUOmrKRQtb4/MTIGjJEFnRL2l78NuRPWaAmEjV3vZ8Yxa1nsHAyp+xSJGW5Qkk Md3k1i05hQWQrg+oV80AaqKg/hRiGA8rPU2waqBNQHD+39TYSGB9ty5SUgBYmlkweAS0 ZDMtmFPpXPO6UU6/5JAc0OSvqKYlYGYilDIkcQS3tgvMXXkL3o02BWb/tHok6rO88RzA DLUFP80gBh2tdi+xrC128iS0mGm1LbPh5uoWwLLEy0pKUeJTj8L6NvIgytxtn000T4ls gCp+G89BOgIHJKXrwfru0at/jPYuO/fhd/ouyOOZOOIuJd1LFEKfgzqhWEMsbquPAIor yXtg== X-Gm-Message-State: AOAM5309q54ZIhhaw7vlgQlb76jLiDFMQdGrKm6gSjxiAu32JzCST3EN zAYm7aPzAQLgysM8x/5okv8xwnnV8qJ3yg== X-Google-Smtp-Source: ABdhPJyFCeU7g0PFR/6QdrMX3LfSVo/9mL2fFGJp4rbjvYOBHeCs0Idj63EUOFhENWHoSAbnuhrOVg== X-Received: by 2002:ac8:5bd3:: with SMTP id b19mr27869626qtb.153.1635948534028; Wed, 03 Nov 2021 07:08:54 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id z5sm1669377qtw.71.2021.11.03.07.08.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Nov 2021 07:08:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 08/23] linux-user/i386: Split out maybe_handle_vm86_trap Date: Wed, 3 Nov 2021 10:08:32 -0400 Message-Id: <20211103140847.454070-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103140847.454070-1-richard.henderson@linaro.org> References: <20211103140847.454070-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::833; envelope-from=richard.henderson@linaro.org; helo=mail-qt1-x833.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, laurent@vivier.eu Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Reduce the number of ifdefs within cpu_loop(). Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/i386/cpu_loop.c | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/linux-user/i386/cpu_loop.c b/linux-user/i386/cpu_loop.c index f6a1cc632b..a372cfe1b2 100644 --- a/linux-user/i386/cpu_loop.c +++ b/linux-user/i386/cpu_loop.c @@ -198,6 +198,17 @@ static void emulate_vsyscall(CPUX86State *env) } #endif +static bool maybe_handle_vm86_trap(CPUX86State *env, int trapnr) +{ +#ifndef TARGET_X86_64 + if (env->eflags & VM_MASK) { + handle_vm86_trap(env, trapnr); + return true; + } +#endif + return false; +} + void cpu_loop(CPUX86State *env) { CPUState *cs = env_cpu(env); @@ -259,12 +270,9 @@ void cpu_loop(CPUX86State *env) break; case EXCP0D_GPF: /* XXX: potential problem if ABI32 */ -#ifndef TARGET_X86_64 - if (env->eflags & VM_MASK) { - handle_vm86_fault(env); + if (maybe_handle_vm86_trap(env, trapnr)) { break; } -#endif gen_signal(env, TARGET_SIGSEGV, TARGET_SI_KERNEL, 0); break; case EXCP0E_PAGE: @@ -274,22 +282,16 @@ void cpu_loop(CPUX86State *env) env->cr[2]); break; case EXCP00_DIVZ: -#ifndef TARGET_X86_64 - if (env->eflags & VM_MASK) { - handle_vm86_trap(env, trapnr); + if (maybe_handle_vm86_trap(env, trapnr)) { break; } -#endif gen_signal(env, TARGET_SIGFPE, TARGET_FPE_INTDIV, env->eip); break; case EXCP01_DB: case EXCP03_INT3: -#ifndef TARGET_X86_64 - if (env->eflags & VM_MASK) { - handle_vm86_trap(env, trapnr); + if (maybe_handle_vm86_trap(env, trapnr)) { break; } -#endif if (trapnr == EXCP01_DB) { gen_signal(env, TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->eip); } else { @@ -298,12 +300,9 @@ void cpu_loop(CPUX86State *env) break; case EXCP04_INTO: case EXCP05_BOUND: -#ifndef TARGET_X86_64 - if (env->eflags & VM_MASK) { - handle_vm86_trap(env, trapnr); + if (maybe_handle_vm86_trap(env, trapnr)) { break; } -#endif gen_signal(env, TARGET_SIGSEGV, TARGET_SI_KERNEL, 0); break; case EXCP06_ILLOP: From patchwork Wed Nov 3 14:08:33 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 12600893 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E10F2C433FE for ; Wed, 3 Nov 2021 14:16:29 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7A1BE6103C for ; Wed, 3 Nov 2021 14:16:29 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 7A1BE6103C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:55130 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1miH40-0007x8-CC for qemu-devel@archiver.kernel.org; Wed, 03 Nov 2021 10:16:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47688) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1miGwj-0002EF-Hz for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:08:57 -0400 Received: from mail-qk1-x72a.google.com ([2607:f8b0:4864:20::72a]:38744) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1miGwh-00052J-HM for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:08:57 -0400 Received: by mail-qk1-x72a.google.com with SMTP id bi29so2378272qkb.5 for ; Wed, 03 Nov 2021 07:08: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=oryq+LuMrMDBeDTMJmIY7vqQWuye0TU114y1grFNoXo=; b=ungcFu6dQhfohOTevkP7C98yW1WFl7MWaBtyB7uoVL8/tha02x9JJqIPU1xaXTiK6z dMn6TXV45AFwl0DdDRvmxc6fA60LrqzrtyPJHdgtSGHyIhUeq6x0rs8a6RBkdZ1fi2xi GjyZdiXlHJ6yA7pnb9rMmV7S58VPueP6alnYoW/dTpRc+KgsDW5pvdrhoI7Yd8WtBaFE PLIQ4hAICQtAufsEzX+seIjCZg69vCkrTsTw5CccXM22P9/cxfpYjMbYz3oZ8epGSs1I /w06ovvYP5SIcBMtOGJV8qx3boHy/waoUh6OhG+Rfw3k4/JXCWB8OSjv9VhqekmF1iNE YLVw== 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=oryq+LuMrMDBeDTMJmIY7vqQWuye0TU114y1grFNoXo=; b=6uvQUu3QM5YV9LuVUV4CKVkDzDGuemDA7uIr5z2AeD3sRAzukbwkN1KVAEh8tev9Rt L4CRkLqUWz99eyROc6cuPyITHn2fKUqjqMbHPY3VcX0KyFXgmNAwcEgMox/pzd1lXUJa qLlAIF++LNtns9pr6vTexRa2+6Sri6umghSBSDcNuQkVSbmrJYxky4zKL5DYXPkutM6u W5GEaCyFxxcMlPc9iW5AlUZppHOISRekgKZeeXwyLvd5IPphaxiNpaD8PaHBsOnU29n9 J1ZlQmtVsfwhEThud5+A1rXFkj51Gb/Dn1bczQvqdj/RfQopfTdBoeymNaIj9i2vbvna jYnA== X-Gm-Message-State: AOAM530aX6t9OckK0cx6MZmQQ1S+lBFZImoElvu5KRooG/3OwsY4ozwr mZAvFjc4GioUKLIwfZjeTtC8jB29zNTh7Q== X-Google-Smtp-Source: ABdhPJwtWEqjp1qa/E/fWaRce+h4bJBBlbXk0HAkxm2AsqNst0+QeSYtYJRARJAR7FIv+gwzk4lPxA== X-Received: by 2002:a37:b0c6:: with SMTP id z189mr35320453qke.344.1635948534751; Wed, 03 Nov 2021 07:08:54 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id z5sm1669377qtw.71.2021.11.03.07.08.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Nov 2021 07:08:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 09/23] linux-user/i386: Use force_sig, force_sig_fault Date: Wed, 3 Nov 2021 10:08:33 -0400 Message-Id: <20211103140847.454070-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103140847.454070-1-richard.henderson@linaro.org> References: <20211103140847.454070-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::72a; envelope-from=richard.henderson@linaro.org; helo=mail-qk1-x72a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, laurent@vivier.eu Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Replace the local gen_signal with the generic functions that match how the kernel raises signals. Fill in the missing PC for SIGTRAP. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/i386/cpu_loop.c | 47 +++++++++++++++----------------------- 1 file changed, 18 insertions(+), 29 deletions(-) diff --git a/linux-user/i386/cpu_loop.c b/linux-user/i386/cpu_loop.c index a372cfe1b2..879d44b490 100644 --- a/linux-user/i386/cpu_loop.c +++ b/linux-user/i386/cpu_loop.c @@ -84,17 +84,6 @@ static void set_idt(int n, unsigned int dpl) } #endif -static void gen_signal(CPUX86State *env, int sig, int code, abi_ptr addr) -{ - target_siginfo_t info = { - .si_signo = sig, - .si_code = code, - ._sifields._sigfault._addr = addr - }; - - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); -} - #ifdef TARGET_X86_64 static bool write_ok_or_segv(CPUX86State *env, abi_ptr addr, size_t len) { @@ -107,7 +96,7 @@ static bool write_ok_or_segv(CPUX86State *env, abi_ptr addr, size_t len) } env->error_code = PG_ERROR_W_MASK | PG_ERROR_U_MASK; - gen_signal(env, TARGET_SIGSEGV, TARGET_SEGV_MAPERR, addr); + force_sig_fault(TARGET_SIGSEGV, TARGET_SEGV_MAPERR, addr); return false; } @@ -193,8 +182,7 @@ static void emulate_vsyscall(CPUX86State *env) return; sigsegv: - /* Like force_sig(SIGSEGV). */ - gen_signal(env, TARGET_SIGSEGV, TARGET_SI_KERNEL, 0); + force_sig(TARGET_SIGSEGV); } #endif @@ -266,53 +254,54 @@ void cpu_loop(CPUX86State *env) #endif case EXCP0B_NOSEG: case EXCP0C_STACK: - gen_signal(env, TARGET_SIGBUS, TARGET_SI_KERNEL, 0); + force_sig(TARGET_SIGBUS); break; case EXCP0D_GPF: /* XXX: potential problem if ABI32 */ if (maybe_handle_vm86_trap(env, trapnr)) { break; } - gen_signal(env, TARGET_SIGSEGV, TARGET_SI_KERNEL, 0); + force_sig(TARGET_SIGSEGV); break; case EXCP0E_PAGE: - gen_signal(env, TARGET_SIGSEGV, - (env->error_code & 1 ? - TARGET_SEGV_ACCERR : TARGET_SEGV_MAPERR), - env->cr[2]); + force_sig_fault(TARGET_SIGSEGV, + (env->error_code & PG_ERROR_P_MASK ? + TARGET_SEGV_ACCERR : TARGET_SEGV_MAPERR), + env->cr[2]); break; case EXCP00_DIVZ: if (maybe_handle_vm86_trap(env, trapnr)) { break; } - gen_signal(env, TARGET_SIGFPE, TARGET_FPE_INTDIV, env->eip); + force_sig_fault(TARGET_SIGFPE, TARGET_FPE_INTDIV, env->eip); break; case EXCP01_DB: + if (maybe_handle_vm86_trap(env, trapnr)) { + break; + } + force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->eip); + break; case EXCP03_INT3: if (maybe_handle_vm86_trap(env, trapnr)) { break; } - if (trapnr == EXCP01_DB) { - gen_signal(env, TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->eip); - } else { - gen_signal(env, TARGET_SIGTRAP, TARGET_SI_KERNEL, 0); - } + force_sig(TARGET_SIGTRAP); break; case EXCP04_INTO: case EXCP05_BOUND: if (maybe_handle_vm86_trap(env, trapnr)) { break; } - gen_signal(env, TARGET_SIGSEGV, TARGET_SI_KERNEL, 0); + force_sig(TARGET_SIGSEGV); break; case EXCP06_ILLOP: - gen_signal(env, TARGET_SIGILL, TARGET_ILL_ILLOPN, env->eip); + force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPN, env->eip); break; case EXCP_INTERRUPT: /* just indicate that signals should be handled asap */ break; case EXCP_DEBUG: - gen_signal(env, TARGET_SIGTRAP, TARGET_TRAP_BRKPT, 0); + force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->eip); break; case EXCP_ATOMIC: cpu_exec_step_atomic(cs); From patchwork Wed Nov 3 14:08:34 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 12600907 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AEA59C433EF for ; Wed, 3 Nov 2021 14:23:29 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7254A6103C for ; Wed, 3 Nov 2021 14:23:29 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 7254A6103C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:44074 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1miHAm-0002yW-LU for qemu-devel@archiver.kernel.org; Wed, 03 Nov 2021 10:23:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47716) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1miGwk-0002HD-D3 for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:08:58 -0400 Received: from mail-qk1-x72f.google.com ([2607:f8b0:4864:20::72f]:35397) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1miGwi-00054N-CC for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:08:58 -0400 Received: by mail-qk1-x72f.google.com with SMTP id az8so2382041qkb.2 for ; Wed, 03 Nov 2021 07:08: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=QjcTOyfouWebLv6OWxrEWdluQ6cixLMqNIiFZ1J5dvA=; b=nJbU4XvDizlijKMngLwH31ra32Qd4idbp5DY4Jw6GtfXCIbyFJ8biQ2bP4e9bfZcPy QU33Y//wRpFmw2QWSTBhiI/btimEJ8w3IHMSrBwY2bCW9sYJNpFBuQzKCzFhHNAWaOSe XM3NqIwci3qcHoIz2pbg82Tds6k5VWSC2h9yl2EbMkps3GqdnHahSPNko38md0w41Dx1 9zmeEHyHuzN9Pqqko+fAHfho72ZQFq5mmMp//jg8zvdY+78F3k88gcIKBLeHdzEIk4yN jJcn8eL0IhMQmJtcaUG3vm7tGMeWeiiUlll/2BSBNWPdw+HzyOosgZ8eaAtt8kHtgKQj OapA== 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=QjcTOyfouWebLv6OWxrEWdluQ6cixLMqNIiFZ1J5dvA=; b=lUmU1KYkp/Fhsl2g5M0oRuloTr36+Yu0w42l9xKDjAiDvcc98On+1XKr+pwn3kcvA2 70uBdGNDwjLSokPSFINfQ0J/LTowYz9LGbmrQCAaEEU0a23SR1RLft+Ft8OPwzCUuqGZ kS2Ho5jTfqtcr5keWqP4PRFca25S0daiTyEFVl9OX6kX+bjgA0aIgCX0Qop4nNWdWAXy le9I4hJQxACSEaKhbST7EnaAkomxWLhbMmDAWNiFZIBHrWRLHKvW48undXQKsMmV++U+ rCsqtcLCKquG7RMR4fK3heUQLZZEerfx4Bd+3hUDJLfuy/E9w0aHSTkamcgXM9uQRUQH 616A== X-Gm-Message-State: AOAM530Cn93gcMfJdc5hf6SVl4km8JWkYlxTVoxTpwYbErEHdjxyvbcr xe92PCIkAvbayEDG7HApLGXDyLRYZ+Yonw== X-Google-Smtp-Source: ABdhPJyaDGoTG6MYjX4ddXRqV5JktVXVBeeYrpD7Juk0/oePkxuQ1N3zE6mgzX3KcpKLPbtILwGlGQ== X-Received: by 2002:a37:54d:: with SMTP id 74mr5789043qkf.209.1635948535428; Wed, 03 Nov 2021 07:08:55 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id z5sm1669377qtw.71.2021.11.03.07.08.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Nov 2021 07:08:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 10/23] linux-user/m68k: Use force_sig_fault Date: Wed, 3 Nov 2021 10:08:34 -0400 Message-Id: <20211103140847.454070-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103140847.454070-1-richard.henderson@linaro.org> References: <20211103140847.454070-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::72f; envelope-from=richard.henderson@linaro.org; helo=mail-qk1-x72f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, laurent@vivier.eu Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Use the new function instead of setting up a target_siginfo_t and calling queue_signal. Fill in the missing PC for SIGTRAP. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/m68k/cpu_loop.c | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/linux-user/m68k/cpu_loop.c b/linux-user/m68k/cpu_loop.c index 790bd558c3..f6ea3b97ec 100644 --- a/linux-user/m68k/cpu_loop.c +++ b/linux-user/m68k/cpu_loop.c @@ -29,7 +29,6 @@ void cpu_loop(CPUM68KState *env) CPUState *cs = env_cpu(env); int trapnr; unsigned int n; - target_siginfo_t info; for(;;) { cpu_exec_start(cs); @@ -46,25 +45,13 @@ void cpu_loop(CPUM68KState *env) case EXCP_ILLEGAL: case EXCP_LINEA: case EXCP_LINEF: - info.si_signo = TARGET_SIGILL; - info.si_errno = 0; - info.si_code = TARGET_ILL_ILLOPN; - info._sifields._sigfault._addr = env->pc; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPN, env->pc); break; case EXCP_CHK: - info.si_signo = TARGET_SIGFPE; - info.si_errno = 0; - info.si_code = TARGET_FPE_INTOVF; - info._sifields._sigfault._addr = env->pc; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(TARGET_SIGFPE, TARGET_FPE_INTOVF, env->pc); break; case EXCP_DIV0: - info.si_signo = TARGET_SIGFPE; - info.si_errno = 0; - info.si_code = TARGET_FPE_INTDIV; - info._sifields._sigfault._addr = env->pc; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(TARGET_SIGFPE, TARGET_FPE_INTDIV, env->pc); break; case EXCP_TRAP0: { @@ -91,10 +78,7 @@ void cpu_loop(CPUM68KState *env) /* just indicate that signals should be handled asap */ break; case EXCP_DEBUG: - info.si_signo = TARGET_SIGTRAP; - info.si_errno = 0; - info.si_code = TARGET_TRAP_BRKPT; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->pc); break; case EXCP_ATOMIC: cpu_exec_step_atomic(cs); From patchwork Wed Nov 3 14:08:35 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 12600911 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 62900C433EF for ; Wed, 3 Nov 2021 14:25:18 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DE3386103C for ; Wed, 3 Nov 2021 14:25:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org DE3386103C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:49018 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1miHCW-0006P6-Tu for qemu-devel@archiver.kernel.org; Wed, 03 Nov 2021 10:25:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47730) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1miGwl-0002JW-0D for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:08:59 -0400 Received: from mail-qt1-x82a.google.com ([2607:f8b0:4864:20::82a]:34538) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1miGwj-00054i-1c for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:08:58 -0400 Received: by mail-qt1-x82a.google.com with SMTP id u7so944902qtc.1 for ; Wed, 03 Nov 2021 07:08:56 -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=RWV9WOum/EgcRXAB9OWJGs5V6nSAWvrKYW5XslI2s0c=; b=ioUvExLcJdcJ8BXkJH2ISa4o3F9qaE690mucceUqVokG/ITAprIe+LDHVmEaFIQ2Hd BFuSNVJ7Ep2G1uNBSozXzzdZzOP0cyYbxdjqxDeKiZKVd40pMClmd6RR/u/mwGUXMXo2 wUYoGBoezJWRdrbhSnQpPPzhe+1TLtvhNPVlejTiCrx508HQ+UzLbRV6kMxtk5ucL6+U oz6lBG/tE4jRs3l/kJZKX0+q6q9IoVCrzLtdWya+CZiCXh76Dvd6hbA8j8K3OUsKeq0q WImV+gY+vCQIEUbUiBR8yCpUugYTT6+N3j5sAmP/DyOj80nQ7MtnIE3j6R0Oe/aEzhMm extA== 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=RWV9WOum/EgcRXAB9OWJGs5V6nSAWvrKYW5XslI2s0c=; b=tm8akv4vhXNCrdN2JJt4BOxijsY5W1tipYHEJTdP6UNgeGgv66BpuMAWNYDIOVYswR QykrUKd9dkeIXcsorc3nHcbYXZ9yZmBrUW5gmiAGrL0eFkKd4mvHQNmuw8HCVpziEbsM W+Ca6mzSVJkfmb+iS98Ddyn7rdb3zy7wN11puyJMP+tNHq95Tp6kRlhu5/ATzBIM6797 h73TypRqO9iMO9IGu/HfVi53kJ6N9RFOXcvcKNoH6W3XUD7VSmY+vvcTK7MbHwF67T+R t5qNUC1EcLPjPKxBFAjLHrckiwNKE+ezCMMlUoducrEGa2wNYLGrtjNDxbbM0EpY2erc af8g== X-Gm-Message-State: AOAM530E/axXRcZK6EIfXFKenxNpGoXigfEgieCPUN0qP56zGSgIQogw zKirX0NkUdVisQBdWGdw3CeXJuRiVj6Vug== X-Google-Smtp-Source: ABdhPJwUv7aIRPi2gPBq7wu3Fxh+Y5zN/rZAtIzeX78BeZy9a5AiPZ1bfGJAxXRh0TaJzguEfx6Exw== X-Received: by 2002:a05:622a:1a1e:: with SMTP id f30mr3063718qtb.292.1635948536148; Wed, 03 Nov 2021 07:08:56 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id z5sm1669377qtw.71.2021.11.03.07.08.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Nov 2021 07:08:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 11/23] linux-user/microblaze: Use force_sig_fault Date: Wed, 3 Nov 2021 10:08:35 -0400 Message-Id: <20211103140847.454070-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103140847.454070-1-richard.henderson@linaro.org> References: <20211103140847.454070-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::82a; envelope-from=richard.henderson@linaro.org; helo=mail-qt1-x82a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, laurent@vivier.eu Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Use the new function instead of setting up a target_siginfo_t and calling queue_signal. Fill in the missing PC for SIGTRAP. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/microblaze/cpu_loop.c | 61 +++++++++++++------------------- 1 file changed, 25 insertions(+), 36 deletions(-) diff --git a/linux-user/microblaze/cpu_loop.c b/linux-user/microblaze/cpu_loop.c index a94467dd2d..263b68aea1 100644 --- a/linux-user/microblaze/cpu_loop.c +++ b/linux-user/microblaze/cpu_loop.c @@ -27,9 +27,8 @@ void cpu_loop(CPUMBState *env) { CPUState *cs = env_cpu(env); - int trapnr, ret; - target_siginfo_t info; - + int trapnr, ret, si_code; + while (1) { cpu_exec_start(cs); trapnr = cpu_exec(cs); @@ -38,8 +37,8 @@ void cpu_loop(CPUMBState *env) switch (trapnr) { case EXCP_INTERRUPT: - /* just indicate that signals should be handled asap */ - break; + /* just indicate that signals should be handled asap */ + break; case EXCP_SYSCALL: /* Return address is 4 bytes after the call. */ env->regs[14] += 4; @@ -67,6 +66,7 @@ void cpu_loop(CPUMBState *env) */ env->regs[14] = env->pc; break; + case EXCP_HW_EXCP: env->regs[17] = env->pc + 4; if (env->iflags & D_FLAG) { @@ -74,42 +74,31 @@ void cpu_loop(CPUMBState *env) env->pc -= 4; /* FIXME: if branch was immed, replay the imm as well. */ } - env->iflags &= ~(IMM_FLAG | D_FLAG); - switch (env->esr & 31) { - case ESR_EC_DIVZERO: - info.si_signo = TARGET_SIGFPE; - info.si_errno = 0; - info.si_code = TARGET_FPE_FLTDIV; - info._sifields._sigfault._addr = 0; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); - break; - case ESR_EC_FPU: - info.si_signo = TARGET_SIGFPE; - info.si_errno = 0; - if (env->fsr & FSR_IO) { - info.si_code = TARGET_FPE_FLTINV; - } - if (env->fsr & FSR_DZ) { - info.si_code = TARGET_FPE_FLTDIV; - } - info._sifields._sigfault._addr = 0; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); - break; - default: - fprintf(stderr, "Unhandled hw-exception: 0x%x\n", - env->esr & ESR_EC_MASK); - cpu_dump_state(cs, stderr, 0); - exit(EXIT_FAILURE); - break; + case ESR_EC_DIVZERO: + si_code = TARGET_FPE_FLTDIV; + break; + case ESR_EC_FPU: + si_code = 0; + if (env->fsr & FSR_IO) { + si_code = TARGET_FPE_FLTINV; + } + if (env->fsr & FSR_DZ) { + si_code = TARGET_FPE_FLTDIV; + } + break; + default: + fprintf(stderr, "Unhandled hw-exception: 0x%x\n", + env->esr & ESR_EC_MASK); + cpu_dump_state(cs, stderr, 0); + exit(EXIT_FAILURE); } + force_sig_fault(TARGET_SIGFPE, si_code, env->pc); break; + case EXCP_DEBUG: - info.si_signo = TARGET_SIGTRAP; - info.si_errno = 0; - info.si_code = TARGET_TRAP_BRKPT; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->pc); break; case EXCP_ATOMIC: cpu_exec_step_atomic(cs); From patchwork Wed Nov 3 14:08:36 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 12600897 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9C828C433EF for ; Wed, 3 Nov 2021 14:20:36 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 5F82C6103C for ; Wed, 3 Nov 2021 14:20:36 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 5F82C6103C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:35310 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1miH7z-0005Eh-Ge for qemu-devel@archiver.kernel.org; Wed, 03 Nov 2021 10:20:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47762) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1miGwm-0002Mx-BW for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:09:00 -0400 Received: from mail-qt1-x835.google.com ([2607:f8b0:4864:20::835]:46943) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1miGwk-000552-5Q for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:09:00 -0400 Received: by mail-qt1-x835.google.com with SMTP id s1so884639qta.13 for ; Wed, 03 Nov 2021 07:08: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=ta3Ko9zxfZ4eRR7LoDI2ksYw0ZQI5fINkcgZmVZuQY0=; b=ezRZnNXGQD9chZo/0QDTYGe+ZSgaxdt5jwZ2b3uwqbnPlSLSxm7gWchIGieVhjXiud BHqFjEMpGXP8Ws16zss3KxESk3agJnmZCKE6uGniItxzxoLcF3gw0sP9kUNW7bRAe+CI a8MLsQWpgMUXHENUisn9Zceo/ua4NX1lVVHXcIobC5JkM4Z8iOxdGXnwNWr9J/fDA6sZ nDgLS5FE5Z6k7JzXmD6xVXvZ5SysH2sqItK0U1pdrUdDpfqwYUtV74hTFSZdWKS9UoJ5 FNtBl9li8YXgADA5hay1Etki51H3iogZEcjvwJntv8UAHqTjUcTTzncb/zjHzeodoeLR SV2Q== 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=ta3Ko9zxfZ4eRR7LoDI2ksYw0ZQI5fINkcgZmVZuQY0=; b=SEAmPkNelRm3qFU/QlSwCWhpFv/nYmXhlgESlNuKnelt6pm0zRQFgL/Q0bOWb6PVai zhkOZJo6tkbdBWhWrAu+CtZ5hNKoSqH/TtzyBhyD6X2Ri67K4K1XkrLDTepFKqvqg/Ma Sd1xrYTS/Ul57sBOvV0DSkwz8jMJIi0YuxKs+uXI24JFqm8pbO6P0Mdt9J2WVqM+h7H7 0IVj/GiGeKyMhBp7o0EFoGRP433pCHuvO/coJxoD3TdRIdAAkq9kZ3nVWHdi/1G9i4fu B2gekUGew8ybmlCRLrfRihFVN7Zeni/DVw6C02KiqXrGhl/pZWRyNW0gQnsiRP7F0cCw b5nA== X-Gm-Message-State: AOAM533ni2E2Zs0ooJIfdaIRN+ltHeN1nxBaMTRIHHJYCjHyVR7kIvs7 I0V/HsdLfFfuuC4mEr8kgZ0OUgfriVr28g== X-Google-Smtp-Source: ABdhPJwjoojt2Bdnr+dBi8ofCfb206dbpKaoEmbzrniYto41GkcM09XkeCXOPhbx7oFaCXHjqhct0g== X-Received: by 2002:ac8:203:: with SMTP id k3mr46408053qtg.384.1635948537137; Wed, 03 Nov 2021 07:08:57 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id z5sm1669377qtw.71.2021.11.03.07.08.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Nov 2021 07:08:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 12/23] linux-user/microblaze: Fix SIGFPE si_codes Date: Wed, 3 Nov 2021 10:08:36 -0400 Message-Id: <20211103140847.454070-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103140847.454070-1-richard.henderson@linaro.org> References: <20211103140847.454070-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::835; envelope-from=richard.henderson@linaro.org; helo=mail-qt1-x835.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, laurent@vivier.eu Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Fix a typo for ESR_EC_DIVZERO, which is integral not floating-point. Fix the if ladder for decoding floating-point exceptions. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/microblaze/cpu_loop.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/linux-user/microblaze/cpu_loop.c b/linux-user/microblaze/cpu_loop.c index 263b68aea1..cf1668a45f 100644 --- a/linux-user/microblaze/cpu_loop.c +++ b/linux-user/microblaze/cpu_loop.c @@ -77,15 +77,25 @@ void cpu_loop(CPUMBState *env) env->iflags &= ~(IMM_FLAG | D_FLAG); switch (env->esr & 31) { case ESR_EC_DIVZERO: - si_code = TARGET_FPE_FLTDIV; + si_code = TARGET_FPE_INTDIV; break; case ESR_EC_FPU: - si_code = 0; - if (env->fsr & FSR_IO) { + /* + * Note that the kernel passes along fsr as si_code + * if there's no recognized bit set. Possibly this + * implies that si_code is 0, but follow the structure. + */ + si_code = env->fsr; + if (si_code & FSR_IO) { si_code = TARGET_FPE_FLTINV; - } - if (env->fsr & FSR_DZ) { + } else if (si_code & FSR_OF) { + si_code = TARGET_FPE_FLTOVF; + } else if (si_code & FSR_UF) { + si_code = TARGET_FPE_FLTUND; + } else if (si_code & FSR_DZ) { si_code = TARGET_FPE_FLTDIV; + } else if (si_code & FSR_DO) { + si_code = TARGET_FPE_FLTRES; } break; default: From patchwork Wed Nov 3 14:08:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 12600881 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CF6E8C433F5 for ; Wed, 3 Nov 2021 14:10:47 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 52F296109F for ; Wed, 3 Nov 2021 14:10:47 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 52F296109F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:39016 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1miGyU-0005RK-6n for qemu-devel@archiver.kernel.org; Wed, 03 Nov 2021 10:10:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47806) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1miGwn-0002SD-R5 for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:09:01 -0400 Received: from mail-qv1-xf2b.google.com ([2607:f8b0:4864:20::f2b]:40614) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1miGwk-00055I-LC for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:09:01 -0400 Received: by mail-qv1-xf2b.google.com with SMTP id b11so3033129qvm.7 for ; Wed, 03 Nov 2021 07:08: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=JNhSgXJTgMGZWBsS+vqzx7SqW7s/rfAY63sPF+SkLf0=; b=AdQIIOTgJ0iiEYecUpn/1TCMf6xHUtKaqEKumxWNbrsOJwQOlq45zhLaf4mLUNaP98 3+Frh4j2DfuYuWj7A75g8G9s/Dd+2kfIIabhgKO7khIk7/gyJRqz6BFpUIUcS6aDJpdM UYv6AR6RbOW0meKg6qcA+BpSLEdLUPKO214PGgZ3T+ga8xs451Z6nPSrYiSCLaVl95Oq HRV0jHf/igyCxTIpbiHg1XuEPc4uN9w10ZTFA4SA20ZxzLfJx7r0gfXnF5G3RmuF1rL4 QR9/O3+cJrATEBaq4drfrljfAiNIj5NQOEh8xZHYVuvPMW13ZMbasjsMgSIdjBrIgHJh Qokg== 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=JNhSgXJTgMGZWBsS+vqzx7SqW7s/rfAY63sPF+SkLf0=; b=NHbe7Vu+f0/ux2+hRBvf3n/6FAglqy5l3MERoWt8FOtEBu1SciZlynO1uZo2ISOPjO RtR4FlIr3Dk1m9ORV8tCq5q6/FbVFnjjwKn/sg3TnfFrp10lX56AESWctQOMV2cUKAV4 w1aGP6/Fp3nxpVQRnA+olPyCkfglQh6/8FUGUALdU54HO0DI5m5UDivRek7HvSTljs8M oRPDd3mNEDx3iitieCwsgnQUnuKpmFprtjcdPSH69GdRWKTaE13eOK6h0dEv4Cy22rlH uDAGwO/yAR7JQooi2/Ti0XNFOxl62qvCbq8eeY8HFN8Y3Klwkfxqip7030afQtuoBf8u zFxA== X-Gm-Message-State: AOAM532ZHSeW662S5qdXUPb8qzOP63cHZ5aoU8wNHvArUGoH7jIMi4VO 3AOHDndIQHDGpMAYQDtn3F4fflpjDbxUgw== X-Google-Smtp-Source: ABdhPJwjV9qQuGpJpYBla8SWS0rLz6UY0nbtn3ZZTcEi8kXQkRvu3NUwAzNbUUryaty0CJbjTBYHcg== X-Received: by 2002:ad4:5f88:: with SMTP id jp8mr39896296qvb.57.1635948537836; Wed, 03 Nov 2021 07:08:57 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id z5sm1669377qtw.71.2021.11.03.07.08.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Nov 2021 07:08:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 13/23] linux-user/mips: Improve do_break Date: Wed, 3 Nov 2021 10:08:37 -0400 Message-Id: <20211103140847.454070-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103140847.454070-1-richard.henderson@linaro.org> References: <20211103140847.454070-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::f2b; envelope-from=richard.henderson@linaro.org; helo=mail-qv1-xf2b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, laurent@vivier.eu, =?utf-8?q?Philippe_Mathieu-?= =?utf-8?q?Daud=C3=A9?= Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Rename to do_tr_or_bp, as per the kernel function. Add a 'trap' argument, akin to the kernel's si_code, but clearer. The return value is always 0, so change the return value to void. Use force_sig and force_sig_fault. Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Richard Henderson --- linux-user/mips/cpu_loop.c | 46 +++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/linux-user/mips/cpu_loop.c b/linux-user/mips/cpu_loop.c index b735c99a24..7317194cc3 100644 --- a/linux-user/mips/cpu_loop.c +++ b/linux-user/mips/cpu_loop.c @@ -40,29 +40,25 @@ enum { BRK_DIVZERO = 7 }; -static int do_break(CPUMIPSState *env, target_siginfo_t *info, - unsigned int code) +static void do_tr_or_bp(CPUMIPSState *env, unsigned int code, bool trap) { - int ret = -1; + target_ulong pc = env->active_tc.PC; switch (code) { case BRK_OVERFLOW: + force_sig_fault(TARGET_SIGFPE, TARGET_FPE_INTOVF, pc); + break; case BRK_DIVZERO: - info->si_signo = TARGET_SIGFPE; - info->si_errno = 0; - info->si_code = (code == BRK_OVERFLOW) ? FPE_INTOVF : FPE_INTDIV; - queue_signal(env, info->si_signo, QEMU_SI_FAULT, &*info); - ret = 0; + force_sig_fault(TARGET_SIGFPE, TARGET_FPE_INTDIV, pc); break; default: - info->si_signo = TARGET_SIGTRAP; - info->si_errno = 0; - queue_signal(env, info->si_signo, QEMU_SI_FAULT, &*info); - ret = 0; + if (trap) { + force_sig(TARGET_SIGTRAP); + } else { + force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, pc); + } break; } - - return ret; } void cpu_loop(CPUMIPSState *env) @@ -205,6 +201,13 @@ done_syscall: abi_ulong trap_instr; unsigned int code; + /* + * FIXME: It would be better to decode the trap number + * during translate, and store it in error_code while + * raising the exception. We should not be re-reading + * the opcode here. + */ + if (env->hflags & MIPS_HFLAG_M16) { if (env->insn_flags & ASE_MICROMIPS) { /* microMIPS mode */ @@ -257,9 +260,7 @@ done_syscall: } } - if (do_break(env, &info, code) != 0) { - goto error; - } + do_tr_or_bp(env, code, false); } break; case EXCP_TRAP: @@ -267,6 +268,13 @@ done_syscall: abi_ulong trap_instr; unsigned int code = 0; + /* + * FIXME: It would be better to decode the trap number + * during translate, and store it in error_code while + * raising the exception. We should not be re-reading + * the opcode here. + */ + if (env->hflags & MIPS_HFLAG_M16) { /* microMIPS mode */ abi_ulong instr[2]; @@ -293,9 +301,7 @@ done_syscall: } } - if (do_break(env, &info, code) != 0) { - goto error; - } + do_tr_or_bp(env, code, true); } break; case EXCP_ATOMIC: From patchwork Wed Nov 3 14:08:38 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 12600913 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EB6FAC433EF for ; Wed, 3 Nov 2021 14:27:16 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 763CF61073 for ; Wed, 3 Nov 2021 14:27:16 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 763CF61073 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:53296 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1miHER-00013G-G7 for qemu-devel@archiver.kernel.org; Wed, 03 Nov 2021 10:27:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47794) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1miGwn-0002Qk-Cq for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:09:01 -0400 Received: from mail-qt1-x830.google.com ([2607:f8b0:4864:20::830]:44027) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1miGwl-00055T-9q for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:09:01 -0400 Received: by mail-qt1-x830.google.com with SMTP id 8so903323qty.10 for ; Wed, 03 Nov 2021 07:08: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=sVhhElrpe+4XPKy6R1NWowFrVYM3GvIonkol7qAjv2A=; b=OxeTtimAvRbEY5x5nVTZeQcshfaXUGeMM1uV7e3uohIn9pMTXYFD9I5J173kx2cKak X+jnOfGm0YPuZ0DNmFBMOJvMkrPVihK0BTemnihktfOxuJ5LbuF1j4359zxyowsSHS9E 60aUS4ZH2Gq9KKWPS4AI7a06VYAsXnV2FU3Iz3ibLe4alGk3T7O3PvKYzmOq3R7eLxzT MrH6Kis7dEYjb6DoBa3pwMT3JSDWO/uBflYxn7aZ1K6qBDQljCHdb+IuE+OGurzOoV1K yospk1O1zK6ErY2Lxju+WRQ1RvL9svV93jJghwYAjLW45j3uQ7uCpn6PnvmHOFJfUja0 mZfw== 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=sVhhElrpe+4XPKy6R1NWowFrVYM3GvIonkol7qAjv2A=; b=ZJJ8RqslKRQQSbQsXJQ0oSs0lOZvQY8GNa7ZJMWGQmIIwxGgi6RuJQe2TwghDhYkC3 hboDIY4CDqEhket/ashdqJBFdTFLBrs/fkAVSqmnHf+3O5tBR7fxXWDepGrXaFqf02G6 Iu8Q5pryDqmK7OHhYU8Rro6CdR/UhPj/BnxrEKOPUX81omXM+mcVpoZjXpllYFNHKCQh QoB3zAr3UpYLl7HJ1BtDp1T2GbyzdccTgfCTSAcufYAGsADttkAK1uSGQTKhPgA2uu4d xf478N+VmQQsAAwiaNPRXPyVGr8oXvMlfLlxeOoiW8g/6uRjgKwSamAR5NdSR965vGwZ C7vg== X-Gm-Message-State: AOAM531qGbCjl0KDRBwrU4b5vrfhS0B1DVMdr94ZYSQeZJkfSpTuxl1i MH0qTWg/MiNFNewPtcp7nh8JkQZ8zXvb0A== X-Google-Smtp-Source: ABdhPJzhyixmANMKaewzfvL0UiD85jHM7BJ8yj1Y8KbGbl2Q2/12d0dMuKo6ZoxlC8d12gJoBLOUig== X-Received: by 2002:a05:622a:1010:: with SMTP id d16mr47949927qte.70.1635948538425; Wed, 03 Nov 2021 07:08:58 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id z5sm1669377qtw.71.2021.11.03.07.08.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Nov 2021 07:08:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 14/23] linux-user/mips: Use force_sig_fault Date: Wed, 3 Nov 2021 10:08:38 -0400 Message-Id: <20211103140847.454070-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103140847.454070-1-richard.henderson@linaro.org> References: <20211103140847.454070-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::830; envelope-from=richard.henderson@linaro.org; helo=mail-qt1-x830.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, laurent@vivier.eu Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Use the new function instead of setting up a target_siginfo_t and calling queue_signal. Fill in the missing PC for SIGTRAP and SIGFPE; use force_sig (SI_KERNEL) for EXCP_DSPDIS. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/mips/cpu_loop.c | 38 +++++++++++++------------------------- 1 file changed, 13 insertions(+), 25 deletions(-) diff --git a/linux-user/mips/cpu_loop.c b/linux-user/mips/cpu_loop.c index 7317194cc3..034b31f853 100644 --- a/linux-user/mips/cpu_loop.c +++ b/linux-user/mips/cpu_loop.c @@ -64,8 +64,7 @@ static void do_tr_or_bp(CPUMIPSState *env, unsigned int code, bool trap) void cpu_loop(CPUMIPSState *env) { CPUState *cs = env_cpu(env); - target_siginfo_t info; - int trapnr; + int trapnr, si_code; abi_long ret; # ifdef TARGET_ABI_MIPSO32 unsigned int syscall_num; @@ -156,43 +155,32 @@ done_syscall: break; case EXCP_CpU: case EXCP_RI: - info.si_signo = TARGET_SIGILL; - info.si_errno = 0; - info.si_code = 0; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + case EXCP_DSPDIS: + force_sig(TARGET_SIGILL); break; case EXCP_INTERRUPT: /* just indicate that signals should be handled asap */ break; case EXCP_DEBUG: - info.si_signo = TARGET_SIGTRAP; - info.si_errno = 0; - info.si_code = TARGET_TRAP_BRKPT; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); - break; - case EXCP_DSPDIS: - info.si_signo = TARGET_SIGILL; - info.si_errno = 0; - info.si_code = TARGET_ILL_ILLOPC; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, + env->active_tc.PC); break; case EXCP_FPE: - info.si_signo = TARGET_SIGFPE; - info.si_errno = 0; - info.si_code = TARGET_FPE_FLTUNK; + si_code = TARGET_FPE_FLTUNK; if (GET_FP_CAUSE(env->active_fpu.fcr31) & FP_INVALID) { - info.si_code = TARGET_FPE_FLTINV; + si_code = TARGET_FPE_FLTINV; } else if (GET_FP_CAUSE(env->active_fpu.fcr31) & FP_DIV0) { - info.si_code = TARGET_FPE_FLTDIV; + si_code = TARGET_FPE_FLTDIV; } else if (GET_FP_CAUSE(env->active_fpu.fcr31) & FP_OVERFLOW) { - info.si_code = TARGET_FPE_FLTOVF; + si_code = TARGET_FPE_FLTOVF; } else if (GET_FP_CAUSE(env->active_fpu.fcr31) & FP_UNDERFLOW) { - info.si_code = TARGET_FPE_FLTUND; + si_code = TARGET_FPE_FLTUND; } else if (GET_FP_CAUSE(env->active_fpu.fcr31) & FP_INEXACT) { - info.si_code = TARGET_FPE_FLTRES; + si_code = TARGET_FPE_FLTRES; } - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(TARGET_SIGFPE, si_code, env->active_tc.PC); break; + /* The code below was inspired by the MIPS Linux kernel trap * handling code in arch/mips/kernel/traps.c. */ From patchwork Wed Nov 3 14:08:39 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 12600903 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 01FB4C433F5 for ; Wed, 3 Nov 2021 14:23:04 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 8A84D60EB4 for ; Wed, 3 Nov 2021 14:23:03 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 8A84D60EB4 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:41866 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1miHAM-0001SP-Oa for qemu-devel@archiver.kernel.org; Wed, 03 Nov 2021 10:23:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47824) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1miGwo-0002UA-D7 for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:09:02 -0400 Received: from mail-qt1-x829.google.com ([2607:f8b0:4864:20::829]:39561) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1miGwl-00055k-Pz for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:09:02 -0400 Received: by mail-qt1-x829.google.com with SMTP id x10so487037qta.6 for ; Wed, 03 Nov 2021 07:08: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=ZFpeoDrdt+3ART61xwj3YrRUH5IdU+zLoLX56R9IMco=; b=usih3XKJ52KaA+UiJKhSLrUcjLU0fpjF8zUif88z0LGBniOcCa+Ua1ZC7hJsvDlyGY Udwf88vFxaUeHJbGEWsX0u0phavUmZO6kEb04sla+vl8DVtOJFPKq94yE9GiXo/vvPSK 5+ycBa1qbKEEE4Tju0mJdxXFHgx2qf3SAwMzeVzPkASGQD8T2HQ7zoCzr/3vqyhNrwP2 D+axS12rvFXSl3Q65eChATtA1jmk9xJjUD2lLOChJ8nJjdyeqMyDWQlCAGSh4JjMSd/y ghzyl9gye+Ly9NRSrpnQBlh4mwJ+YxHKy7Jzv6SG9qGdUYhVYx5WspLBdYQQ9T2p8ie4 xmlg== 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=ZFpeoDrdt+3ART61xwj3YrRUH5IdU+zLoLX56R9IMco=; b=vnqYPJtB6PfSb8mjvISQX+5/QDAUtfsKYsEModZ1UGHb0NCCWlMUIpNdhPsgMYsSuz aAT4t2R2tGxEQm74VgMQJRnamw/ut4RfQ72cC7L6ZgajlVw1surt/rjCR42jvJ6tdzci JhR8rnK2PRDZH3Pt8VnbYoN7hdeHGWVtu9vYOybvxAoq5YR5g7moJ1clAVly67c3EgUv 4nlrGyq8qudBZaZ9+462TQ7HOdNuz5GMUATNEPHlQa2o4RRg6c6meTfGkD3Bz74QOEi6 0BY/kdB8cpkpcXDFvTKSgyEtJu+PCnYBvO2897WBEAmQfLndwhcYIGuF3JdaffkbpX51 cv4g== X-Gm-Message-State: AOAM531Qnv0yTWoFOTaVut7ZzYMjOz2X2eIuJMFDMAyTHU7+1MIXHDQt kjZvuHqg/nP/MZZrHnC9R9aVQKzJrI/QVw== X-Google-Smtp-Source: ABdhPJzvo5Ge3Q+Uj9n5vATPfIpKtqQDuTCTCHhpENid2moVa//49nLwoq4A/P4tECAtXdTXaElN2w== X-Received: by 2002:a05:622a:1208:: with SMTP id y8mr36762922qtx.214.1635948539006; Wed, 03 Nov 2021 07:08:59 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id z5sm1669377qtw.71.2021.11.03.07.08.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Nov 2021 07:08:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 15/23] target/mips: Extract break code into env->error_code Date: Wed, 3 Nov 2021 10:08:39 -0400 Message-Id: <20211103140847.454070-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103140847.454070-1-richard.henderson@linaro.org> References: <20211103140847.454070-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::829; envelope-from=richard.henderson@linaro.org; helo=mail-qt1-x829.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, laurent@vivier.eu Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Simplify cpu_loop by doing all of the decode in translate. This fixes a bug in that cpu_loop was not handling the different layout of the R6 version of break16. This fixes a bug in that cpu_loop extracted the wrong bits for the mips16e break16 instruction. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daudé --- target/mips/tcg/translate.h | 1 + linux-user/mips/cpu_loop.c | 73 +++-------------------- target/mips/tcg/translate.c | 12 +++- target/mips/tcg/micromips_translate.c.inc | 6 +- target/mips/tcg/mips16e_translate.c.inc | 2 +- 5 files changed, 25 insertions(+), 69 deletions(-) diff --git a/target/mips/tcg/translate.h b/target/mips/tcg/translate.h index 6111493651..ae01515efe 100644 --- a/target/mips/tcg/translate.h +++ b/target/mips/tcg/translate.h @@ -129,6 +129,7 @@ enum { void generate_exception(DisasContext *ctx, int excp); void generate_exception_err(DisasContext *ctx, int excp, int err); void generate_exception_end(DisasContext *ctx, int excp); +void generate_exception_break(DisasContext *ctx, int code); void gen_reserved_instruction(DisasContext *ctx); void check_insn(DisasContext *ctx, uint64_t flags); diff --git a/linux-user/mips/cpu_loop.c b/linux-user/mips/cpu_loop.c index 034b31f853..8efb6d2a24 100644 --- a/linux-user/mips/cpu_loop.c +++ b/linux-user/mips/cpu_loop.c @@ -65,6 +65,7 @@ void cpu_loop(CPUMIPSState *env) { CPUState *cs = env_cpu(env); int trapnr, si_code; + unsigned int code; abi_long ret; # ifdef TARGET_ABI_MIPSO32 unsigned int syscall_num; @@ -185,71 +186,15 @@ done_syscall: * handling code in arch/mips/kernel/traps.c. */ case EXCP_BREAK: - { - abi_ulong trap_instr; - unsigned int code; - - /* - * FIXME: It would be better to decode the trap number - * during translate, and store it in error_code while - * raising the exception. We should not be re-reading - * the opcode here. - */ - - if (env->hflags & MIPS_HFLAG_M16) { - if (env->insn_flags & ASE_MICROMIPS) { - /* microMIPS mode */ - ret = get_user_u16(trap_instr, env->active_tc.PC); - if (ret != 0) { - goto error; - } - - if ((trap_instr >> 10) == 0x11) { - /* 16-bit instruction */ - code = trap_instr & 0xf; - } else { - /* 32-bit instruction */ - abi_ulong instr_lo; - - ret = get_user_u16(instr_lo, - env->active_tc.PC + 2); - if (ret != 0) { - goto error; - } - trap_instr = (trap_instr << 16) | instr_lo; - code = ((trap_instr >> 6) & ((1 << 20) - 1)); - /* Unfortunately, microMIPS also suffers from - the old assembler bug... */ - if (code >= (1 << 10)) { - code >>= 10; - } - } - } else { - /* MIPS16e mode */ - ret = get_user_u16(trap_instr, env->active_tc.PC); - if (ret != 0) { - goto error; - } - code = (trap_instr >> 6) & 0x3f; - } - } else { - ret = get_user_u32(trap_instr, env->active_tc.PC); - if (ret != 0) { - goto error; - } - - /* As described in the original Linux kernel code, the - * below checks on 'code' are to work around an old - * assembly bug. - */ - code = ((trap_instr >> 6) & ((1 << 20) - 1)); - if (code >= (1 << 10)) { - code >>= 10; - } - } - - do_tr_or_bp(env, code, false); + /* + * As described in the original Linux kernel code, the below + * checks on 'code' are to work around an old assembly bug. + */ + code = env->error_code; + if (code >= (1 << 10)) { + code >>= 10; } + do_tr_or_bp(env, code, false); break; case EXCP_TRAP: { diff --git a/target/mips/tcg/translate.c b/target/mips/tcg/translate.c index 47db35d7dd..a42f507aed 100644 --- a/target/mips/tcg/translate.c +++ b/target/mips/tcg/translate.c @@ -1367,6 +1367,16 @@ void generate_exception_end(DisasContext *ctx, int excp) generate_exception_err(ctx, excp, 0); } +void generate_exception_break(DisasContext *ctx, int code) +{ +#ifdef CONFIG_USER_ONLY + /* Pass the break code along to cpu_loop. */ + tcg_gen_st_i32(tcg_constant_i32(code), cpu_env, + offsetof(CPUMIPSState, error_code)); +#endif + generate_exception_end(ctx, EXCP_BREAK); +} + void gen_reserved_instruction(DisasContext *ctx) { generate_exception_end(ctx, EXCP_RI); @@ -14160,7 +14170,7 @@ static void decode_opc_special(CPUMIPSState *env, DisasContext *ctx) generate_exception_end(ctx, EXCP_SYSCALL); break; case OPC_BREAK: - generate_exception_end(ctx, EXCP_BREAK); + generate_exception_break(ctx, extract32(ctx->opcode, 6, 20)); break; case OPC_SYNC: check_insn(ctx, ISA_MIPS2); diff --git a/target/mips/tcg/micromips_translate.c.inc b/target/mips/tcg/micromips_translate.c.inc index 0da4c802a3..f91f7a96cd 100644 --- a/target/mips/tcg/micromips_translate.c.inc +++ b/target/mips/tcg/micromips_translate.c.inc @@ -822,7 +822,7 @@ static void gen_pool16c_insn(DisasContext *ctx) gen_HILO(ctx, OPC_MFLO, 0, uMIPS_RS5(ctx->opcode)); break; case BREAK16: - generate_exception_end(ctx, EXCP_BREAK); + generate_exception_break(ctx, extract32(ctx->opcode, 0, 4)); break; case SDBBP16: if (is_uhi(extract32(ctx->opcode, 0, 4))) { @@ -937,7 +937,7 @@ static void gen_pool16c_r6_insn(DisasContext *ctx) break; case R6_BREAK16: /* BREAK16 */ - generate_exception(ctx, EXCP_BREAK); + generate_exception_break(ctx, extract32(ctx->opcode, 6, 4)); break; case R6_SDBBP16: /* SDBBP16 */ @@ -1812,7 +1812,7 @@ static void decode_micromips32_opc(CPUMIPSState *env, DisasContext *ctx) gen_pool32axf(env, ctx, rt, rs); break; case BREAK32: - generate_exception_end(ctx, EXCP_BREAK); + generate_exception_break(ctx, extract32(ctx->opcode, 6, 20)); break; case SIGRIE: check_insn(ctx, ISA_MIPS_R6); diff --git a/target/mips/tcg/mips16e_translate.c.inc b/target/mips/tcg/mips16e_translate.c.inc index 84d816603a..f57e0a5f2a 100644 --- a/target/mips/tcg/mips16e_translate.c.inc +++ b/target/mips/tcg/mips16e_translate.c.inc @@ -969,7 +969,7 @@ static int decode_ase_mips16e(CPUMIPSState *env, DisasContext *ctx) gen_slt(ctx, OPC_SLTU, 24, rx, ry); break; case RR_BREAK: - generate_exception_end(ctx, EXCP_BREAK); + generate_exception_break(ctx, extract32(ctx->opcode, 5, 6)); break; case RR_SLLV: gen_shift(ctx, OPC_SLLV, ry, rx, ry); From patchwork Wed Nov 3 14:08:40 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 12600899 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E74F5C433EF for ; Wed, 3 Nov 2021 14:20:58 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 4E6EE60F9D for ; Wed, 3 Nov 2021 14:20:58 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 4E6EE60F9D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:35530 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1miH8L-0005OI-CL for qemu-devel@archiver.kernel.org; Wed, 03 Nov 2021 10:20:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47856) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1miGwp-0002XG-Bg for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:09:03 -0400 Received: from mail-qv1-xf36.google.com ([2607:f8b0:4864:20::f36]:36369) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1miGwm-00055w-Kv for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:09:03 -0400 Received: by mail-qv1-xf36.google.com with SMTP id d6so3056272qvb.3 for ; Wed, 03 Nov 2021 07:09:00 -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=QZLeLhINJ1okRa8nBmn25FRlqUkKrhOM2xV7yiUsz0k=; b=wA+tJ4vvv1zwnZPhT06UoVEJDA3sPeEogV3q+bxr4iySR18D6t87tK9pUI22oIV5l5 mPnNzTE01fW6qCBDfCl4EDhCt0ZYEkMKTm2+dMHguI5DmxRt+FL9myhDYr0Pl2EL7Sgv yc0kKf8mUfB1CXoHCwd+FUASB0f3QHriZdZGd3OBtsTsH/FJz7PoiI5yWX9hrJoKjboA /1zfw+eJcDP5++pKaGIxT7PIrivDoNsGS8radeYJ5M7I95nbHpG+svY5py/ZUhP26geS Omcwx3XNG/XSH22ee5oH1CsS2M5qXHPCm/J7Z9QoLlwQLFuDNKEd2vQle1YApHNb4GRG Y3fA== 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=QZLeLhINJ1okRa8nBmn25FRlqUkKrhOM2xV7yiUsz0k=; b=v/DU6aoXtyPxQboJdLMY8Uhz4l7aDJMIiRVRjN+YLqLxOIzUDdOSRoLJvTLZ7JxYJN xw1MIlW9EUOlCJAZQhaiL4lGEAvHduLxFeB8xHArKx1CW2KUwjy8CMqymtANngbXbIID 21SQUNGlCZ85drQvvyfxxVL2rhVYKaBHCUFKXJyhxKAg97VtEjtwMnuK8YvS+5F+aOjE eIvsFvY1t7qW6MPvqfUZXXpjMF7HQfYhgy59aRTrHTmllYa0DzwBpBNNfFT2vssLtxVI gvwiyJ81eCZhucp8feT0WJw6+/m4VfsL/ETpBrQIetj9NrP81r3IDtXEO9u4p/fBx/P9 Ka+A== X-Gm-Message-State: AOAM531shSJxBDjxQXBQcn9EF4Fhhc2EZFhsqWN5nBBqizHRaJZhmYEo 921gBevcGzWL1laBFKtGyK4KZKpclwFSSA== X-Google-Smtp-Source: ABdhPJwD7jiYu1y1fkB3SWesNR0CeEeje4SSgWIoXcUrZ7fePMfEv6085PBg1NfqPO7RLXeaaF0CmQ== X-Received: by 2002:a05:6214:1c41:: with SMTP id if1mr6927502qvb.0.1635948539737; Wed, 03 Nov 2021 07:08:59 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id z5sm1669377qtw.71.2021.11.03.07.08.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Nov 2021 07:08:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 16/23] target/mips: Extract trap code into env->error_code Date: Wed, 3 Nov 2021 10:08:40 -0400 Message-Id: <20211103140847.454070-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103140847.454070-1-richard.henderson@linaro.org> References: <20211103140847.454070-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::f36; envelope-from=richard.henderson@linaro.org; helo=mail-qv1-xf36.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, laurent@vivier.eu Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Simplify cpu_loop by doing all of the decode in translate. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daudé --- linux-user/mips/cpu_loop.c | 41 +---------------------- target/mips/tcg/translate.c | 24 ++++++++++--- target/mips/tcg/micromips_translate.c.inc | 4 +-- target/mips/tcg/nanomips_translate.c.inc | 4 +-- 4 files changed, 25 insertions(+), 48 deletions(-) diff --git a/linux-user/mips/cpu_loop.c b/linux-user/mips/cpu_loop.c index 8efb6d2a24..6079c2d600 100644 --- a/linux-user/mips/cpu_loop.c +++ b/linux-user/mips/cpu_loop.c @@ -197,51 +197,12 @@ done_syscall: do_tr_or_bp(env, code, false); break; case EXCP_TRAP: - { - abi_ulong trap_instr; - unsigned int code = 0; - - /* - * FIXME: It would be better to decode the trap number - * during translate, and store it in error_code while - * raising the exception. We should not be re-reading - * the opcode here. - */ - - if (env->hflags & MIPS_HFLAG_M16) { - /* microMIPS mode */ - abi_ulong instr[2]; - - ret = get_user_u16(instr[0], env->active_tc.PC) || - get_user_u16(instr[1], env->active_tc.PC + 2); - - trap_instr = (instr[0] << 16) | instr[1]; - } else { - ret = get_user_u32(trap_instr, env->active_tc.PC); - } - - if (ret != 0) { - goto error; - } - - /* The immediate versions don't provide a code. */ - if (!(trap_instr & 0xFC000000)) { - if (env->hflags & MIPS_HFLAG_M16) { - /* microMIPS mode */ - code = ((trap_instr >> 12) & ((1 << 4) - 1)); - } else { - code = ((trap_instr >> 6) & ((1 << 10) - 1)); - } - } - - do_tr_or_bp(env, code, true); - } + do_tr_or_bp(env, env->error_code, true); break; case EXCP_ATOMIC: cpu_exec_step_atomic(cs); break; default: -error: EXCP_DUMP(env, "qemu: unhandled CPU exception 0x%x - aborting\n", trapnr); abort(); } diff --git a/target/mips/tcg/translate.c b/target/mips/tcg/translate.c index a42f507aed..98c0f1aab3 100644 --- a/target/mips/tcg/translate.c +++ b/target/mips/tcg/translate.c @@ -4733,7 +4733,7 @@ static void gen_loongson_lsdc2(DisasContext *ctx, int rt, /* Traps */ static void gen_trap(DisasContext *ctx, uint32_t opc, - int rs, int rt, int16_t imm) + int rs, int rt, int16_t imm, int code) { int cond; TCGv t0 = tcg_temp_new(); @@ -4778,6 +4778,11 @@ static void gen_trap(DisasContext *ctx, uint32_t opc, case OPC_TGEU: /* rs >= rs unsigned */ case OPC_TGEIU: /* r0 >= 0 unsigned */ /* Always trap */ +#ifdef CONFIG_USER_ONLY + /* Pass the break code along to cpu_loop. */ + tcg_gen_st_i32(tcg_constant_i32(code), cpu_env, + offsetof(CPUMIPSState, error_code)); +#endif generate_exception_end(ctx, EXCP_TRAP); break; case OPC_TLT: /* rs < rs */ @@ -4818,6 +4823,18 @@ static void gen_trap(DisasContext *ctx, uint32_t opc, tcg_gen_brcond_tl(TCG_COND_EQ, t0, t1, l1); break; } +#ifdef CONFIG_USER_ONLY + /* Pass the break code along to cpu_loop. */ + tcg_gen_st_i32(tcg_constant_i32(code), cpu_env, + offsetof(CPUMIPSState, error_code)); +#endif + /* Like save_cpu_state, only don't update saved values. */ + if (ctx->base.pc_next != ctx->saved_pc) { + gen_save_pc(ctx->base.pc_next); + } + if (ctx->hflags != ctx->saved_hflags) { + tcg_gen_movi_i32(hflags, ctx->hflags); + } generate_exception(ctx, EXCP_TRAP); gen_set_label(l1); } @@ -14155,7 +14172,7 @@ static void decode_opc_special(CPUMIPSState *env, DisasContext *ctx) case OPC_TEQ: case OPC_TNE: check_insn(ctx, ISA_MIPS2); - gen_trap(ctx, op1, rs, rt, -1); + gen_trap(ctx, op1, rs, rt, -1, extract32(ctx->opcode, 6, 10)); break; case OPC_PMON: /* Pmon entry point, also R4010 selsl */ @@ -15289,11 +15306,10 @@ static bool decode_opc_legacy(CPUMIPSState *env, DisasContext *ctx) case OPC_TLTI: case OPC_TLTIU: case OPC_TEQI: - case OPC_TNEI: check_insn(ctx, ISA_MIPS2); check_insn_opc_removed(ctx, ISA_MIPS_R6); - gen_trap(ctx, op1, rs, -1, imm); + gen_trap(ctx, op1, rs, -1, imm, 0); break; case OPC_SIGRIE: check_insn(ctx, ISA_MIPS_R6); diff --git a/target/mips/tcg/micromips_translate.c.inc b/target/mips/tcg/micromips_translate.c.inc index f91f7a96cd..7e7d26a91b 100644 --- a/target/mips/tcg/micromips_translate.c.inc +++ b/target/mips/tcg/micromips_translate.c.inc @@ -1047,7 +1047,7 @@ static void gen_pool32axf(CPUMIPSState *env, DisasContext *ctx, int rt, int rs) case TNE: mips32_op = OPC_TNE; do_trap: - gen_trap(ctx, mips32_op, rs, rt, -1); + gen_trap(ctx, mips32_op, rs, rt, -1, extract32(ctx->opcode, 12, 4)); break; #ifndef CONFIG_USER_ONLY case MFC0: @@ -2439,7 +2439,7 @@ static void decode_micromips32_opc(CPUMIPSState *env, DisasContext *ctx) check_insn_opc_removed(ctx, ISA_MIPS_R6); mips32_op = OPC_TEQI; do_trapi: - gen_trap(ctx, mips32_op, rs, -1, imm); + gen_trap(ctx, mips32_op, rs, -1, imm, 0); break; case BNEZC: diff --git a/target/mips/tcg/nanomips_translate.c.inc b/target/mips/tcg/nanomips_translate.c.inc index 2c022a49f2..916cece4d2 100644 --- a/target/mips/tcg/nanomips_translate.c.inc +++ b/target/mips/tcg/nanomips_translate.c.inc @@ -1268,11 +1268,11 @@ static void gen_pool32a0_nanomips_insn(CPUMIPSState *env, DisasContext *ctx) switch (extract32(ctx->opcode, 10, 1)) { case NM_TEQ: check_nms(ctx); - gen_trap(ctx, OPC_TEQ, rs, rt, -1); + gen_trap(ctx, OPC_TEQ, rs, rt, -1, rd); break; case NM_TNE: check_nms(ctx); - gen_trap(ctx, OPC_TNE, rs, rt, -1); + gen_trap(ctx, OPC_TNE, rs, rt, -1, rd); break; } break; From patchwork Wed Nov 3 14:08:41 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 12600909 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B8908C433F5 for ; Wed, 3 Nov 2021 14:24:37 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 6E02160EB4 for ; Wed, 3 Nov 2021 14:24:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 6E02160EB4 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:47448 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1miHBs-0005Hq-HC for qemu-devel@archiver.kernel.org; Wed, 03 Nov 2021 10:24:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47862) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1miGwp-0002Xk-Fq for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:09:03 -0400 Received: from mail-qt1-x834.google.com ([2607:f8b0:4864:20::834]:45598) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1miGwn-00056u-Cn for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:09:03 -0400 Received: by mail-qt1-x834.google.com with SMTP id g13so488577qtk.12 for ; Wed, 03 Nov 2021 07:09:00 -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=g1qaOZHLXK14ZfaZ8YTeXXSLRoUxo2kF1DzkBRJBkhg=; b=FVC018KH8EOYDysCdqIUaDCV/C0bjH4xCKo5gFEoPFqxRJYPlYGEygPNkDbmqair26 9Umj0mrbV77J3mFR4R+TdfNJVYUX5vzFLLqNieazieOB2w6n6dBEXoSNvinn0Sb34FIm m+BYYqaFwEAMyKTAgVtZs7FbsNcNbWotcu13wVct6TVMfVNYOK4pvrcKz0rwvewkHTyG 39ZLMIxECVvB+3pp9Ce8UeBw7N4/gnQDdF8haljtUhVLTZzKTWJnIld8Da+HwITBAsg0 fTobW2tfWJWyz8nqHelpH6N7mTcgVTvVPtfy9xObMer56LybBki8eKjbO9f1HZUmVa07 HLOw== 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=g1qaOZHLXK14ZfaZ8YTeXXSLRoUxo2kF1DzkBRJBkhg=; b=smg+sQLK++9PZ1FBcj1wRBpTJkXyak+b1mEFgZZwfgzgsGNcdvm60L0fHeeekTSX/z 8nvlveda+EfSF9m6jQZEW8iK2dWiuFddGKWsxjUSNMu03fGpes+24pnW6EHYFGr+k28z q4zftUHovemy+u81c/UOWy9NVNseN7A/djM8lJcJo4sLQuCLz0O824S+AxTqCzvB8yfI Sn/rlvjXiEIVLuOk4pjSqtv1ziNJ7aFvu1BIu10UAobVf/uvQ0GAKFX+r4tjntjL76+s OA2qtUx/HyP4XOrhGJBDYgPEa0bvbwswvKHvpWtpLXuRcyr2mMq5Ats9KjzZkcudYtcS V4pw== X-Gm-Message-State: AOAM530CjrRBdrTp+h78tc6XDP1k1JuzNqWTCotCStBn0yHzM3ZcPQJs BwQDCmPvTbHo+MygHVr9v8FEGYMUcDUabg== X-Google-Smtp-Source: ABdhPJzacQc9qqXoX8ZRE72jmVUvwhsrHY5tlSDuqgUSBN1rD+1rXAb69SE5rOPM4rztjWnUZzkOCw== X-Received: by 2002:ac8:4e94:: with SMTP id 20mr30320059qtp.150.1635948540411; Wed, 03 Nov 2021 07:09:00 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id z5sm1669377qtw.71.2021.11.03.07.08.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Nov 2021 07:09:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 17/23] linux-user/openrisc: Use force_sig_fault Date: Wed, 3 Nov 2021 10:08:41 -0400 Message-Id: <20211103140847.454070-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103140847.454070-1-richard.henderson@linaro.org> References: <20211103140847.454070-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::834; envelope-from=richard.henderson@linaro.org; helo=mail-qt1-x834.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, laurent@vivier.eu Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Use the new function instead of setting up a target_siginfo_t and calling queue_signal. Fill in the missing PC for SIGTRAP. Signed-off-by: Richard Henderson Reviewed-by: Stafford Horne --- linux-user/openrisc/cpu_loop.c | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/linux-user/openrisc/cpu_loop.c b/linux-user/openrisc/cpu_loop.c index 3cfdbbf037..9b3d6743d2 100644 --- a/linux-user/openrisc/cpu_loop.c +++ b/linux-user/openrisc/cpu_loop.c @@ -29,7 +29,6 @@ void cpu_loop(CPUOpenRISCState *env) CPUState *cs = env_cpu(env); int trapnr; abi_long ret; - target_siginfo_t info; for (;;) { cpu_exec_start(cs); @@ -55,27 +54,16 @@ void cpu_loop(CPUOpenRISCState *env) } break; case EXCP_ALIGN: - info.si_signo = TARGET_SIGBUS; - info.si_errno = 0; - info.si_code = TARGET_BUS_ADRALN; - info._sifields._sigfault._addr = env->pc; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(TARGET_SIGBUS, TARGET_BUS_ADRALN, env->eear); break; case EXCP_ILLEGAL: - info.si_signo = TARGET_SIGILL; - info.si_errno = 0; - info.si_code = TARGET_ILL_ILLOPC; - info._sifields._sigfault._addr = env->pc; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPC, env->pc); break; case EXCP_INTERRUPT: /* We processed the pending cpu work above. */ break; case EXCP_DEBUG: - info.si_signo = TARGET_SIGTRAP; - info.si_errno = 0; - info.si_code = TARGET_TRAP_BRKPT; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->pc); break; case EXCP_ATOMIC: cpu_exec_step_atomic(cs); From patchwork Wed Nov 3 14:08:42 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 12600929 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B135FC433F5 for ; Wed, 3 Nov 2021 14:29:20 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 21DD26103C for ; Wed, 3 Nov 2021 14:29:20 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 21DD26103C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:55810 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1miHGQ-0002pP-WB for qemu-devel@archiver.kernel.org; Wed, 03 Nov 2021 10:29:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47888) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1miGwq-0002bg-FE for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:09:04 -0400 Received: from mail-qt1-x835.google.com ([2607:f8b0:4864:20::835]:34549) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1miGwo-0005AY-0R for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:09:04 -0400 Received: by mail-qt1-x835.google.com with SMTP id u7so945193qtc.1 for ; Wed, 03 Nov 2021 07:09: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=JKn/dn/o5/5uSJhUVusVlDHnM+Rs1ENAWdTHsonHpeI=; b=kcXAnrooEQjyqfcr9EKSHoTtAz8c09Jzb8Q+/E+zmwSa62s0JxLQGHgIssaHZSvQOq q0uWITiRaqtFSqF+VwodKm4uw19oQPFSGVfMe2qpbGo7CQndEkwqgSJlSqwo9mTxJyd1 iQBNIrnOX9bQt4NNtLRc8dI4gK5n8CFinLj0AHT2r3z015AXmEMNcLadybxV01E9sYEE 6R3C6unRhUR5dmJsQs0YOiebtW0va/kSs+M4/beLUD4VMnKz+CiC+cWgPOXYR4fi2GWY dY9Ikx62lk/x/wAB+zCaPfNJTqbfoJAdLgz5QeyxBieXtzLMWz742WF/VnomNP8AxVvZ HXRA== 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=JKn/dn/o5/5uSJhUVusVlDHnM+Rs1ENAWdTHsonHpeI=; b=r5RY3iJw9FK0DC1vJLYsnOtkJAhrG4NBlk644fGKVHZepEXmp4DvE44yDseeM60vcR FR4wdHNxasapVgnK1nNIirzAT9CfvRJgIXBn1/sL/+ZLmB4w+YLG9bqB2EgDF/8ZPaze 3RY7B4WMM5dKEVrf4/OQIrNIcZxJwz2dLBNeaID6eyNG21iYqhMfUQ9SEYs9X/gACzmw y1ZlGnYDIewMnWYzYxPEDutnR3hJ0nMt89emv2gwkZ1+VLHjKcfFs4irogFXZc+QiWtK iwccYPD/xjopOHkRjEZmf6Ph1RLBxUaWnl2u5B5Rt+SUHJYQiwQhEljceu64Lh8wMF8p tc5w== X-Gm-Message-State: AOAM533IhYbHqbC545pA8VqhvjnaEUEKt03gtdgqh2ZSgW/McpBexOgg tV0yiLo5gtnH/LbgnEMvuJHGQe3u4S9CXw== X-Google-Smtp-Source: ABdhPJzp07q2OJovOoAlP5++G8zatFFhI2IhovDE73lBNMzExdLoELUF9H8ZCVFSbTtgE9G4Qz027Q== X-Received: by 2002:a05:622a:1450:: with SMTP id v16mr35957117qtx.25.1635948541007; Wed, 03 Nov 2021 07:09:01 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id z5sm1669377qtw.71.2021.11.03.07.09.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Nov 2021 07:09:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 18/23] linux-user/ppc: Use force_sig_fault Date: Wed, 3 Nov 2021 10:08:42 -0400 Message-Id: <20211103140847.454070-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103140847.454070-1-richard.henderson@linaro.org> References: <20211103140847.454070-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::835; envelope-from=richard.henderson@linaro.org; helo=mail-qt1-x835.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, laurent@vivier.eu Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Use the new function instead of setting up a target_siginfo_t and calling queue_signal. Fill in the missing PC for SIGTRAP. The fault address for POWERPC_EXCP_ISI is nip exactly, not nip - 4. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/ppc/cpu_loop.c | 136 ++++++++------------------------------ 1 file changed, 28 insertions(+), 108 deletions(-) diff --git a/linux-user/ppc/cpu_loop.c b/linux-user/ppc/cpu_loop.c index 483e669300..bb20300da9 100644 --- a/linux-user/ppc/cpu_loop.c +++ b/linux-user/ppc/cpu_loop.c @@ -76,8 +76,7 @@ int ppc_dcr_write (ppc_dcr_t *dcr_env, int dcrn, uint32_t val) void cpu_loop(CPUPPCState *env) { CPUState *cs = env_cpu(env); - target_siginfo_t info; - int trapnr; + int trapnr, si_signo, si_code; target_ulong ret; for(;;) { @@ -102,61 +101,10 @@ void cpu_loop(CPUPPCState *env) "Aborting\n"); break; case POWERPC_EXCP_DSI: /* Data storage exception */ - /* XXX: check this. Seems bugged */ - switch (env->error_code & 0xFF000000) { - case 0x40000000: - case 0x42000000: - info.si_signo = TARGET_SIGSEGV; - info.si_errno = 0; - info.si_code = TARGET_SEGV_MAPERR; - break; - case 0x04000000: - info.si_signo = TARGET_SIGILL; - info.si_errno = 0; - info.si_code = TARGET_ILL_ILLADR; - break; - case 0x08000000: - info.si_signo = TARGET_SIGSEGV; - info.si_errno = 0; - info.si_code = TARGET_SEGV_ACCERR; - break; - default: - /* Let's send a regular segfault... */ - EXCP_DUMP(env, "Invalid segfault errno (%02x)\n", - env->error_code); - info.si_signo = TARGET_SIGSEGV; - info.si_errno = 0; - info.si_code = TARGET_SEGV_MAPERR; - break; - } - info._sifields._sigfault._addr = env->spr[SPR_DAR]; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); - break; case POWERPC_EXCP_ISI: /* Instruction storage exception */ - /* XXX: check this */ - switch (env->error_code & 0xFF000000) { - case 0x40000000: - info.si_signo = TARGET_SIGSEGV; - info.si_errno = 0; - info.si_code = TARGET_SEGV_MAPERR; - break; - case 0x10000000: - case 0x08000000: - info.si_signo = TARGET_SIGSEGV; - info.si_errno = 0; - info.si_code = TARGET_SEGV_ACCERR; - break; - default: - /* Let's send a regular segfault... */ - EXCP_DUMP(env, "Invalid segfault errno (%02x)\n", - env->error_code); - info.si_signo = TARGET_SIGSEGV; - info.si_errno = 0; - info.si_code = TARGET_SEGV_MAPERR; - break; - } - info._sifields._sigfault._addr = env->nip - 4; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + /* FIXME: handle maperr in ppc_cpu_record_sigsegv. */ + force_sig_fault(TARGET_SIGSEGV, TARGET_SEGV_MAPERR, + env->spr[SPR_DAR]); break; case POWERPC_EXCP_EXTERNAL: /* External input */ cpu_abort(cs, "External interrupt while in user mode. " @@ -167,24 +115,23 @@ void cpu_loop(CPUPPCState *env) /* XXX: check this */ switch (env->error_code & ~0xF) { case POWERPC_EXCP_FP: - info.si_signo = TARGET_SIGFPE; - info.si_errno = 0; + si_signo = TARGET_SIGFPE; switch (env->error_code & 0xF) { case POWERPC_EXCP_FP_OX: - info.si_code = TARGET_FPE_FLTOVF; + si_code = TARGET_FPE_FLTOVF; break; case POWERPC_EXCP_FP_UX: - info.si_code = TARGET_FPE_FLTUND; + si_code = TARGET_FPE_FLTUND; break; case POWERPC_EXCP_FP_ZX: case POWERPC_EXCP_FP_VXZDZ: - info.si_code = TARGET_FPE_FLTDIV; + si_code = TARGET_FPE_FLTDIV; break; case POWERPC_EXCP_FP_XX: - info.si_code = TARGET_FPE_FLTRES; + si_code = TARGET_FPE_FLTRES; break; case POWERPC_EXCP_FP_VXSOFT: - info.si_code = TARGET_FPE_FLTINV; + si_code = TARGET_FPE_FLTINV; break; case POWERPC_EXCP_FP_VXSNAN: case POWERPC_EXCP_FP_VXISI: @@ -193,51 +140,50 @@ void cpu_loop(CPUPPCState *env) case POWERPC_EXCP_FP_VXVC: case POWERPC_EXCP_FP_VXSQRT: case POWERPC_EXCP_FP_VXCVI: - info.si_code = TARGET_FPE_FLTSUB; + si_code = TARGET_FPE_FLTSUB; break; default: EXCP_DUMP(env, "Unknown floating point exception (%02x)\n", env->error_code); + si_code = 0; break; } break; case POWERPC_EXCP_INVAL: - info.si_signo = TARGET_SIGILL; - info.si_errno = 0; + si_signo = TARGET_SIGILL; switch (env->error_code & 0xF) { case POWERPC_EXCP_INVAL_INVAL: - info.si_code = TARGET_ILL_ILLOPC; + si_code = TARGET_ILL_ILLOPC; break; case POWERPC_EXCP_INVAL_LSWX: - info.si_code = TARGET_ILL_ILLOPN; + si_code = TARGET_ILL_ILLOPN; break; case POWERPC_EXCP_INVAL_SPR: - info.si_code = TARGET_ILL_PRVREG; + si_code = TARGET_ILL_PRVREG; break; case POWERPC_EXCP_INVAL_FP: - info.si_code = TARGET_ILL_COPROC; + si_code = TARGET_ILL_COPROC; break; default: EXCP_DUMP(env, "Unknown invalid operation (%02x)\n", env->error_code & 0xF); - info.si_code = TARGET_ILL_ILLADR; + si_code = TARGET_ILL_ILLADR; break; } break; case POWERPC_EXCP_PRIV: - info.si_signo = TARGET_SIGILL; - info.si_errno = 0; + si_signo = TARGET_SIGILL; switch (env->error_code & 0xF) { case POWERPC_EXCP_PRIV_OPC: - info.si_code = TARGET_ILL_PRVOPC; + si_code = TARGET_ILL_PRVOPC; break; case POWERPC_EXCP_PRIV_REG: - info.si_code = TARGET_ILL_PRVREG; + si_code = TARGET_ILL_PRVREG; break; default: EXCP_DUMP(env, "Unknown privilege violation (%02x)\n", env->error_code & 0xF); - info.si_code = TARGET_ILL_PRVOPC; + si_code = TARGET_ILL_PRVOPC; break; } break; @@ -250,28 +196,19 @@ void cpu_loop(CPUPPCState *env) env->error_code); break; } - info._sifields._sigfault._addr = env->nip; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(si_signo, si_code, env->nip); break; case POWERPC_EXCP_FPU: /* Floating-point unavailable exception */ - info.si_signo = TARGET_SIGILL; - info.si_errno = 0; - info.si_code = TARGET_ILL_COPROC; - info._sifields._sigfault._addr = env->nip; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + case POWERPC_EXCP_APU: /* Auxiliary processor unavailable */ + case POWERPC_EXCP_SPEU: /* SPE/embedded floating-point unavail. */ + case POWERPC_EXCP_VPU: /* Vector unavailable exception */ + force_sig_fault(TARGET_SIGILL, TARGET_ILL_COPROC, env->nip); break; case POWERPC_EXCP_SYSCALL: /* System call exception */ case POWERPC_EXCP_SYSCALL_VECTORED: cpu_abort(cs, "Syscall exception while in user mode. " "Aborting\n"); break; - case POWERPC_EXCP_APU: /* Auxiliary processor unavailable */ - info.si_signo = TARGET_SIGILL; - info.si_errno = 0; - info.si_code = TARGET_ILL_COPROC; - info._sifields._sigfault._addr = env->nip; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); - break; case POWERPC_EXCP_DECR: /* Decrementer exception */ cpu_abort(cs, "Decrementer interrupt while in user mode. " "Aborting\n"); @@ -292,13 +229,6 @@ void cpu_loop(CPUPPCState *env) cpu_abort(cs, "Instruction TLB exception while in user mode. " "Aborting\n"); break; - case POWERPC_EXCP_SPEU: /* SPE/embedded floating-point unavail. */ - info.si_signo = TARGET_SIGILL; - info.si_errno = 0; - info.si_code = TARGET_ILL_COPROC; - info._sifields._sigfault._addr = env->nip; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); - break; case POWERPC_EXCP_EFPDI: /* Embedded floating-point data IRQ */ cpu_abort(cs, "Embedded floating-point data IRQ not handled\n"); break; @@ -355,13 +285,6 @@ void cpu_loop(CPUPPCState *env) cpu_abort(cs, "Hypervisor instruction segment exception " "while in user mode. Aborting\n"); break; - case POWERPC_EXCP_VPU: /* Vector unavailable exception */ - info.si_signo = TARGET_SIGILL; - info.si_errno = 0; - info.si_code = TARGET_ILL_COPROC; - info._sifields._sigfault._addr = env->nip; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); - break; case POWERPC_EXCP_PIT: /* Programmable interval timer IRQ */ cpu_abort(cs, "Programmable interval timer interrupt " "while in user mode. Aborting\n"); @@ -444,10 +367,7 @@ void cpu_loop(CPUPPCState *env) env->gpr[3] = ret; break; case EXCP_DEBUG: - info.si_signo = TARGET_SIGTRAP; - info.si_errno = 0; - info.si_code = TARGET_TRAP_BRKPT; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->nip); break; case EXCP_INTERRUPT: /* just indicate that signals should be handled asap */ From patchwork Wed Nov 3 14:08:43 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 12600933 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 85DA6C433F5 for ; Wed, 3 Nov 2021 14:32:47 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2BB7B60F5A for ; Wed, 3 Nov 2021 14:32:47 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 2BB7B60F5A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:36490 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1miHJm-0000ZC-1x for qemu-devel@archiver.kernel.org; Wed, 03 Nov 2021 10:32:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47894) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1miGwr-0002ck-3Y for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:09:05 -0400 Received: from mail-qk1-x72e.google.com ([2607:f8b0:4864:20::72e]:42540) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1miGwo-0005B7-DZ for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:09:04 -0400 Received: by mail-qk1-x72e.google.com with SMTP id bm28so2356857qkb.9 for ; Wed, 03 Nov 2021 07:09: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=zc3+Ihp6y4hHFXMKLdPsirKMIyUJ0yRqgI5dfqy9/NI=; b=mzwo7YNn3gkJbpoQ+rAYrt+gfyXGMQzfTw9+y9zCgrW+9g6hht6Z6Js5ZIEI8QZTQZ mjeBysO+Xa+wTk1zermTIz7axCbyHyFB4mI6yrY4gl+MrZQ1Z/CpedAnmIYoPQJNxahH x7RIfzcuXIRl6vaOLpvdODvqZ8WcO5Izh5pO7GP2fmM/TtN8NJWgERsQo3s+UR5xV7lE rShpNzmqENSIuDVOykKbPzyCY/126e7YYJzrYSpqG/VGp/jeQFEoErCOHkOInbDryvUS 0OghU+YEbH7AVoaIjsSw1gcicXCkjmUZLbZ+3UGUelFeWbtrw1W5rMvtAlde8ab+cSkw 7rnQ== 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=zc3+Ihp6y4hHFXMKLdPsirKMIyUJ0yRqgI5dfqy9/NI=; b=XDarFyQPMxlH7bapb3LHwXlRBAi8aiQKdhJsrLBBtXMadUjAIIQabOd31UhBl8S66O FwGeYmMRB2Zh4aDr3nquPV0OsbUQ15Xf6xV8J6OWYiavdo8fledx5o9qn/wdWZ5AVkZs 7ebiwFjQ6ohKY8fT8wFA073mlyGI+85dpJXtc2LxDWECHYmF5QR1qPNI1dms07l5DDdZ /S4oM9lYr1S5nbhvzRRSNdW27znZlO2jHGFcX85iW6CXC1uEYd/xRjCN6R8OFS+syps5 UW0v5CbDThQa5Iy8TXXGjZxCLFSDJlFhvNm7RN+Pyp/FVqm9yu2MDPQMwi8m+nyALnKw 7iWQ== X-Gm-Message-State: AOAM531+m2CfhjO+c+VY7/gN7cxbTkjmuJrvAtQfuAJjDQZh7hvxKGIb vha7zBx5IEF9MgAU/Vlb2l+bR57pQA19cA== X-Google-Smtp-Source: ABdhPJwTE8Us5b6EL53WZWAHI+tF9nmMQQ3OC/q8Jia/MNLz2o2oC458fhILSwGLNY60P5K6NoHTBg== X-Received: by 2002:a05:620a:424b:: with SMTP id w11mr34440688qko.179.1635948541588; Wed, 03 Nov 2021 07:09:01 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id z5sm1669377qtw.71.2021.11.03.07.09.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Nov 2021 07:09:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 19/23] linux-user/riscv: Use force_sig_fault Date: Wed, 3 Nov 2021 10:08:43 -0400 Message-Id: <20211103140847.454070-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103140847.454070-1-richard.henderson@linaro.org> References: <20211103140847.454070-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::72e; envelope-from=richard.henderson@linaro.org; helo=mail-qk1-x72e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, laurent@vivier.eu Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" 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 --- 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 b301dac802..92a5a113f6 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); } } From patchwork Wed Nov 3 14:08:44 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 12600931 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 13092C433F5 for ; Wed, 3 Nov 2021 14:31:39 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id BD60261050 for ; Wed, 3 Nov 2021 14:31:38 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org BD60261050 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:60428 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1miHIf-00068V-M8 for qemu-devel@archiver.kernel.org; Wed, 03 Nov 2021 10:31:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47898) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1miGwq-0002d8-Vl for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:09:04 -0400 Received: from mail-qk1-x72a.google.com ([2607:f8b0:4864:20::72a]:45843) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1miGwp-0005BN-3P for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:09:04 -0400 Received: by mail-qk1-x72a.google.com with SMTP id n15so2336323qkp.12 for ; Wed, 03 Nov 2021 07:09: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=laLwdCpLZDBORzW+YMoP8+ykSJDKmPsijwGqiemMxIQ=; b=ErQ0u8/FfAVcKxQObxp+mJ4RCQNSt9pyfJdS0sZt6znN/q6HPJejrh1wZ0FGRQXakx sILxPMBqv3uPXXRxUzSzzQNVsNINQmN4U9apzpXEfi8O/Vkavt5kwps35Ss4MEsNOoul rCnqb5g8j/GFjrFBxl1ESg0Hum7PZAjvtxGXLSRjeIptVR4WGHg5G94VqGYuXVe6Cp7F egIxPBZJpitD+h7xn+DTTkx0ObXBA1FqBFfaJhuof2GaD+MhKM70h9RL4ksBH0sGh9hi V7q1ZZH0a0sYx8jZxK2fevDWdFsNZB6sb+Z7+gjmUUo68h7vg+LZR5yKNNtpaN3xhXIz WQ5A== 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=laLwdCpLZDBORzW+YMoP8+ykSJDKmPsijwGqiemMxIQ=; b=ah79ujONxAzTASI988x47DMwzn4/Y4LbUQRQgkvb5uwaTCpjRN32FtARp3tjBjAcdD nSMLo76OuGS9yVxOZZWu7SQMFM/vR25we1Kp6Fu2Ee6iBkU1CxyqeObkboXPXS4Oqvgn 3Ll612Jqy8RlPEC8/gB1yS4XAaDcwFEMtrRKdwt/hny9W8KjRGmWvmc52qmfxiFlKf2U QwdvTYXu6M45hS1aKlcOjGkhHCpuxeu2QQg4y9nolzz5WR3qbWKNGacKaRyfL7Jt88H9 U+uYNckN9+8BAJt5EsrTSgkzOW/M3nQvAO/wKcYiojH4mMTK/W1f5NYBO1hLPC6XminO Vofw== X-Gm-Message-State: AOAM5327TWhyc4PBLJjnupQtvQr8uIZjTYh46HssOsK4tBQHXOAz2voi JCaTJW0P6A+Hn5Yx46J5/a08XWnXD/sMJQ== X-Google-Smtp-Source: ABdhPJwJpTTpgsfw1JN/63wb9tMj+fO9WTzbTky1eg4eTSNkPbCmKitpn5k6XnhJEjkD7jqktKahig== X-Received: by 2002:a05:620a:178b:: with SMTP id ay11mr36326218qkb.287.1635948542226; Wed, 03 Nov 2021 07:09:02 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id z5sm1669377qtw.71.2021.11.03.07.09.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Nov 2021 07:09:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 20/23] linux-user/s390x: Use force_sig_fault Date: Wed, 3 Nov 2021 10:08:44 -0400 Message-Id: <20211103140847.454070-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103140847.454070-1-richard.henderson@linaro.org> References: <20211103140847.454070-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::72a; envelope-from=richard.henderson@linaro.org; helo=mail-qk1-x72a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, laurent@vivier.eu Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Use the new function instead of setting up a target_siginfo_t and calling queue_signal. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/s390x/cpu_loop.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/linux-user/s390x/cpu_loop.c b/linux-user/s390x/cpu_loop.c index d089c8417e..0965d3abca 100644 --- a/linux-user/s390x/cpu_loop.c +++ b/linux-user/s390x/cpu_loop.c @@ -58,7 +58,6 @@ void cpu_loop(CPUS390XState *env) { CPUState *cs = env_cpu(env); int trapnr, n, sig; - target_siginfo_t info; target_ulong addr; abi_long ret; @@ -158,11 +157,7 @@ void cpu_loop(CPUS390XState *env) */ env->psw.addr += env->int_pgm_ilen; do_signal: - info.si_signo = sig; - info.si_errno = 0; - info.si_code = n; - info._sifields._sigfault._addr = addr; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(sig, n, addr); break; case EXCP_ATOMIC: From patchwork Wed Nov 3 14:08:45 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 12600895 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4EF18C433EF for ; Wed, 3 Nov 2021 14:17:54 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0184661050 for ; Wed, 3 Nov 2021 14:17:53 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 0184661050 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:58712 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1miH5M-0001yQ-Po for qemu-devel@archiver.kernel.org; Wed, 03 Nov 2021 10:17:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47906) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1miGwr-0002fu-JF for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:09:05 -0400 Received: from mail-qk1-x731.google.com ([2607:f8b0:4864:20::731]:42543) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1miGwp-0005BV-N4 for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:09:05 -0400 Received: by mail-qk1-x731.google.com with SMTP id bm28so2356927qkb.9 for ; Wed, 03 Nov 2021 07:09:03 -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=0l8DFIUjHslvq6ryn61Vjm8Wn0lLyOzSxVFdscdlWzg=; b=GGhBjrst84xggomt+4RSvPPkY08LeWG99fXCaVYnnS9u/uAhRkuc51cQpFWphvJ9su I5v3Hg/5KfnWbIGbwjRWaMAFUe9HFuvXdX3zI0BCSPzVKit+SJi6boytITSsX83LUXzI y544x95LhkYtI/diSgknHKZ6pTKqxD4Z9GnICg01beOMBkGNt+P4uwQguQ03laVSTrVh /ejUFyspTCjX3xFLcc6dTS9yYM4rQh6LQY1HSyBOyKgZATbiqu3vDJDo6iuk9LNneBQD RRCH8RSnUH9DbFchVY8/1VuZYwuXFHM+3ygwSE9Ich0BYFyBKNYfu0tlxGBys5gOELvR +Xxg== 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=0l8DFIUjHslvq6ryn61Vjm8Wn0lLyOzSxVFdscdlWzg=; b=Y2lPDvXmD2kxK2btHICsdb3BU08jAaS9u/pUXy8spGJKp/SvbhJXaVZRq4NXTqHJ0M T8dWFyq0JECZFpuJFtVrbK/ms7LvuTdhAx+vfgtZA3OaITFr/vCzQAw50V3jAz6SA9fM mnqUTLjVVwHBmX520THPb/nuK9+Ycnw5wKIysHwUEQ+rTGGw1tIkmLI2cgMlT3Fk9jlw rk2IR2OoUtroz1b6uqiVAaw245zKXkMt0Z8P+WC3+2Nrv2Zt0X8Vnory+WMN85WJ8Naj +nW9stFrgNhMu4JIvRJyTyoPgToUS2vqsPkBNXnrAPP6rH7lgZJhRu1OUZ4NUF00KWgn 1jJQ== X-Gm-Message-State: AOAM533bKYAmQo0k8xShaXLyoFUCIILLPdgrAybjOh4FrU2F98sAo7Hp gmtXQZyuf0x5oSQc7gPZBDifGPw5NhcxDg== X-Google-Smtp-Source: ABdhPJyaHu1euYRmQuIp61LFWBQ7gZ25R01GNjsNKBpn/o55+yLXgLf9RyXfDJmD12NxwfAOBLleow== X-Received: by 2002:a37:9b83:: with SMTP id d125mr34332726qke.374.1635948542800; Wed, 03 Nov 2021 07:09:02 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id z5sm1669377qtw.71.2021.11.03.07.09.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Nov 2021 07:09:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 21/23] linux-user/sh4: Use force_sig_fault Date: Wed, 3 Nov 2021 10:08:45 -0400 Message-Id: <20211103140847.454070-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103140847.454070-1-richard.henderson@linaro.org> References: <20211103140847.454070-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::731; envelope-from=richard.henderson@linaro.org; helo=mail-qk1-x731.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, laurent@vivier.eu Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Use the new function instead of setting up a target_siginfo_t and calling queue_signal. Fill in the missing PC for SIGTRAP. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/sh4/cpu_loop.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/linux-user/sh4/cpu_loop.c b/linux-user/sh4/cpu_loop.c index ac9b01840c..fb561f1113 100644 --- a/linux-user/sh4/cpu_loop.c +++ b/linux-user/sh4/cpu_loop.c @@ -28,7 +28,6 @@ void cpu_loop(CPUSH4State *env) { CPUState *cs = env_cpu(env); int trapnr, ret; - target_siginfo_t info; while (1) { bool arch_interrupt = true; @@ -60,10 +59,7 @@ void cpu_loop(CPUSH4State *env) /* just indicate that signals should be handled asap */ break; case EXCP_DEBUG: - info.si_signo = TARGET_SIGTRAP; - info.si_errno = 0; - info.si_code = TARGET_TRAP_BRKPT; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->pc); break; case EXCP_ATOMIC: cpu_exec_step_atomic(cs); From patchwork Wed Nov 3 14:08:46 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 12600905 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 48C4AC433EF for ; Wed, 3 Nov 2021 14:23:09 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0F3D461050 for ; Wed, 3 Nov 2021 14:23:09 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 0F3D461050 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:42322 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1miHAS-0001l0-8e for qemu-devel@archiver.kernel.org; Wed, 03 Nov 2021 10:23:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47998) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1miGx4-0003NG-4b for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:09:18 -0400 Received: from mail-qk1-x72b.google.com ([2607:f8b0:4864:20::72b]:43961) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1miGx1-0005Lb-Ug for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:09:17 -0400 Received: by mail-qk1-x72b.google.com with SMTP id bp7so2345046qkb.10 for ; Wed, 03 Nov 2021 07:09: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=aSGoNpLJmGSYi5bNrETBfs3C1lY0kiG6L8JLO5qLPZk=; b=Wqd4CS5XGxU3NVIgsYd88Auk4RqpxUhlmGbeuszjR7kGKz0IxEdCJIWTmeGGDx832m MO6qpxCnRpEGcok0+FYdIh0UnPHkH47VOJmFXlrukDxTCT1lUdHmWVTkctU16rSSFdw6 YFK/mrhjUxkHsymHSY9N0pI5e8GvER65+PmVHY62pT3d4qYwTs/B5I8Wb4jhfLbHFCS1 a/mXXnYwUXdmH39oRiZzUWJJOnTluxInY7hR8TRY8+3OndH6nKhRfVy7bVu65OxE1mPg OwE/KVc4qr/fKU2sAGYtho6mlKucnFOj0oXgH9p/JDZBiP0dlM9g3uIcannMbv5Wth9O P3Fw== 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=aSGoNpLJmGSYi5bNrETBfs3C1lY0kiG6L8JLO5qLPZk=; b=BesMvOFz7dVw4WClpaqtPR+CdPNG1an7kLLGUNIor9hteCX0VQH6JoKbqvGS2+5Eew 8Ux+3AWA5KaIW/OotbxcW1RJcoSY/YNn8gh/lWBLscJa7LGnvZeWnUJgrbbI66O/u50t AWzEnhinDI9TZ2/RROrAIbpq223kBL4HzKjS3B/9I+3jAmv6Yp8DE/IZi+B8Et+Z1SM9 V8RTue0eYvqDS0iShBGsHJQeS5Lo7FJPTN9wBj6NfV0hdrska9Mw7YEX0kqy0AL4x72e kmXYy6resurDupmNLSeNf0gtu/w8Onn+x8NA7PaLr3+pdaEF5Zl4DDRvZjMsz6joV1lN CLKQ== X-Gm-Message-State: AOAM533nZk941TSolZzNfowDD2yIlXhOgCkoMrpxqlgN3T9DPHTDMFOW lFbQF0QVUrk0/hQvvv7vfvyNWjmnpRN1Iw== X-Google-Smtp-Source: ABdhPJyP4Sj7OSFk+7GHTigGfdMaalleeWQb+QiviCdPRhIhy4ccAXlbJDlj5UBSg8hpmLCSvLr9lg== X-Received: by 2002:a05:620a:4588:: with SMTP id bp8mr28073316qkb.292.1635948543552; Wed, 03 Nov 2021 07:09:03 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id z5sm1669377qtw.71.2021.11.03.07.09.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Nov 2021 07:09:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 22/23] linux-user/sparc: Use force_sig_fault Date: Wed, 3 Nov 2021 10:08:46 -0400 Message-Id: <20211103140847.454070-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103140847.454070-1-richard.henderson@linaro.org> References: <20211103140847.454070-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::72b; envelope-from=richard.henderson@linaro.org; helo=mail-qk1-x72b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, laurent@vivier.eu Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Use the new function instead of setting up a target_siginfo_t and calling queue_signal. Fill in the missing PC for SIGTRAP. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/sparc/cpu_loop.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c index 0ba65e431c..b3e44bc1aa 100644 --- a/linux-user/sparc/cpu_loop.c +++ b/linux-user/sparc/cpu_loop.c @@ -155,7 +155,6 @@ void cpu_loop (CPUSPARCState *env) CPUState *cs = env_cpu(env); int trapnr; abi_long ret; - target_siginfo_t info; while (1) { cpu_exec_start(cs); @@ -241,19 +240,10 @@ void cpu_loop (CPUSPARCState *env) /* just indicate that signals should be handled asap */ break; case TT_ILL_INSN: - { - info.si_signo = TARGET_SIGILL; - info.si_errno = 0; - info.si_code = TARGET_ILL_ILLOPC; - info._sifields._sigfault._addr = env->pc; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); - } + force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPC, env->pc); break; case EXCP_DEBUG: - info.si_signo = TARGET_SIGTRAP; - info.si_errno = 0; - info.si_code = TARGET_TRAP_BRKPT; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->pc); break; case EXCP_ATOMIC: cpu_exec_step_atomic(cs); From patchwork Wed Nov 3 14:08:47 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 12600935 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BC88FC433EF for ; Wed, 3 Nov 2021 14:34:11 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 572076103C for ; Wed, 3 Nov 2021 14:34:11 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 572076103C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:38712 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1miHL8-00028E-Hv for qemu-devel@archiver.kernel.org; Wed, 03 Nov 2021 10:34:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47926) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1miGwt-0002lg-0n for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:09:07 -0400 Received: from mail-qk1-x72a.google.com ([2607:f8b0:4864:20::72a]:38746) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1miGwr-0005C7-3D for qemu-devel@nongnu.org; Wed, 03 Nov 2021 10:09:06 -0400 Received: by mail-qk1-x72a.google.com with SMTP id bi29so2378800qkb.5 for ; Wed, 03 Nov 2021 07:09: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=5xSDql4+/4hjZ41MoR3OqxD/rR+Fa1of3CAUT/0rGzk=; b=ZmcsrWbP7rplnj2v6AVnty7fuCBFNtjO15O0UBMlVYSSsNKAEagpedvfBJ6vSun1Lm 3w/PzKKqnuItwwu4Tl6WTCSIXV0c4OXWu42Jq4XqUhpTP0pmwEMCE00ya8AoDTu3DEXU 47HMWAYKhURplzA4mclZVKy1G59S9/mRhLvRTpeUpcviuCsXl/JmyD628Dd0jWOzq0KG qmZ8VrdDPHF0vl6ZD3AgiZRNyEM/rjDalFXjIXPfp9XT1Rudpl/K4ungby8KAF4NdsxU 9JnAnjpoUQdnPPiOv4HN2V+DF+yf/lDXvYI0x8sI0pvwdNloTO/V/NHN9fu9bUJGXhV6 gr3A== 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=5xSDql4+/4hjZ41MoR3OqxD/rR+Fa1of3CAUT/0rGzk=; b=QZ2YNaJonz0eoBwCGoMjiZG6/14VBcr2RBxogJO8fx2CGPF1mSIsMhbrB1tpqk5frj i49A16t12OHRgBF+IlwEyzwfgiSv2QrhUKOkYpQVRgn47hhl1Et3ChEcsvFEXzG2GxK6 9aFXZRBE9hxBz5O5H+Zmm9hjF9olnlu2dGEDD7kTx5z+rGclLADMXiCoQvlIYAnJ2UhS Xee9o7QLPVLheR9xjelO+zgLKTPM2yjfGKcQraThwtQDNDucJ9LpuWaj1g+j8pafSMxR Gb2IgbK4SBkVtRKJuYs/RXl59pSoeKYQNuJ923u/wj45m1ESkdC5VGyzfIriqZXGBwU/ MW0A== X-Gm-Message-State: AOAM532fTVtPmUQLQX0C0Bvc49/6T+SO90eF2/f1XdxU2S8AHeYtfcBV jiVSx5gbnd7C3xmyuKSCQLSW0gN1HKV4IQ== X-Google-Smtp-Source: ABdhPJxYh0/VrJizuxw4VYHnu+Q7REsJfgO2TtuDB9UDktQ7UlfEnt7BH1Lt/t2If69RLVMJ4r9Jpw== X-Received: by 2002:a37:b0c6:: with SMTP id z189mr35321418qke.344.1635948544136; Wed, 03 Nov 2021 07:09:04 -0700 (PDT) Received: from localhost.localdomain (rrcs-172-254-253-57.nyc.biz.rr.com. [172.254.253.57]) by smtp.gmail.com with ESMTPSA id z5sm1669377qtw.71.2021.11.03.07.09.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Nov 2021 07:09:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v3 23/23] linux-user/xtensa: Use force_sig_fault Date: Wed, 3 Nov 2021 10:08:47 -0400 Message-Id: <20211103140847.454070-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211103140847.454070-1-richard.henderson@linaro.org> References: <20211103140847.454070-1-richard.henderson@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::72a; envelope-from=richard.henderson@linaro.org; helo=mail-qk1-x72a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, laurent@vivier.eu Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Use the new function instead of setting up a target_siginfo_t and calling queue_signal. Fill in the missing PC for SIGTRAP. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/xtensa/cpu_loop.c | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/linux-user/xtensa/cpu_loop.c b/linux-user/xtensa/cpu_loop.c index a83490ab35..34775feb7c 100644 --- a/linux-user/xtensa/cpu_loop.c +++ b/linux-user/xtensa/cpu_loop.c @@ -126,7 +126,6 @@ static void xtensa_underflow12(CPUXtensaState *env) void cpu_loop(CPUXtensaState *env) { CPUState *cs = env_cpu(env); - target_siginfo_t info; abi_ulong ret; int trapnr; @@ -163,14 +162,12 @@ void cpu_loop(CPUXtensaState *env) case EXC_USER: switch (env->sregs[EXCCAUSE]) { case ILLEGAL_INSTRUCTION_CAUSE: + force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPC, + env->sregs[EPC1]); + break; case PRIVILEGED_CAUSE: - info.si_signo = TARGET_SIGILL; - info.si_errno = 0; - info.si_code = - env->sregs[EXCCAUSE] == ILLEGAL_INSTRUCTION_CAUSE ? - TARGET_ILL_ILLOPC : TARGET_ILL_PRVOPC; - info._sifields._sigfault._addr = env->sregs[EPC1]; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(TARGET_SIGILL, TARGET_ILL_PRVOPC, + env->sregs[EPC1]); break; case SYSCALL_CAUSE: @@ -219,11 +216,8 @@ void cpu_loop(CPUXtensaState *env) break; case INTEGER_DIVIDE_BY_ZERO_CAUSE: - info.si_signo = TARGET_SIGFPE; - info.si_errno = 0; - info.si_code = TARGET_FPE_INTDIV; - info._sifields._sigfault._addr = env->sregs[EPC1]; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(TARGET_SIGFPE, TARGET_FPE_INTDIV, + env->sregs[EPC1]); break; default: @@ -232,10 +226,8 @@ void cpu_loop(CPUXtensaState *env) } break; case EXCP_DEBUG: - info.si_signo = TARGET_SIGTRAP; - info.si_errno = 0; - info.si_code = TARGET_TRAP_BRKPT; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, + env->sregs[EPC1]); break; case EXC_DEBUG: default: