From patchwork Thu Dec 2 20:48: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: 1562986 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=HpW4FJKx; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) 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 bilbo.ozlabs.org (Postfix) with ESMTPS id 4J4p6j23Ypz9s3q for ; Fri, 3 Dec 2021 07:52:13 +1100 (AEDT) Received: from localhost ([::1]:42424 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mst3r-0005pX-0a for incoming@patchwork.ozlabs.org; Thu, 02 Dec 2021 15:52:11 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43980) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mst0r-0008WR-HK for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:05 -0500 Received: from [2607:f8b0:4864:20::1032] (port=53865 helo=mail-pj1-x1032.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mst0p-0005So-HS for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:04 -0500 Received: by mail-pj1-x1032.google.com with SMTP id iq11so667801pjb.3 for ; Thu, 02 Dec 2021 12:49:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=p6wlTrgyamt5pJcbz/NPTMdqMfp2gadP3Gsui6+XSsw=; b=HpW4FJKxeHYqJBd1tP9+DQCava5jqPxcFLLU2zL/15wj/v9ouCslBSc/vgJjZmOvSS gYVyqxX0GCh+T8y3zQn6545SjDqNJaVHGoG4ABxIYqR1zpse/21OPQl5zSq+m/YTK7AI T/G7i+zNLlOYbptTf3FnAr39KvCtefF5BBexsFcOz4ChNANeenLRqm5y8Sb5Pe5ajzTc qTFHlLKbxsngTlWBXS8OcGGgvP/MAQi2sYQUz12gipA+CskHlaTbnXlLWB2/nZM4Yasv kdrL+TE8Z1A64ou31gSDxe4n+B7RbUvvB1n6g7+GbIAFk4oZhVw1+OmHbMEhscDrCMgF eGqA== 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=p6wlTrgyamt5pJcbz/NPTMdqMfp2gadP3Gsui6+XSsw=; b=XBwo8LI4HrnFlpEbwHXtR7n7lHqhX3Jp7yprJO7Md9yrU0Y1SnnNMm/ciatZ3WgbxW ttWmr/NRJ1lCmo2/6cugsWdQg2/pbdya8W72eixBd3pRK5jAO776L71A11YZVooWRedN HbJjqXCHY/T+Nh4GhrDTZqMP7lCrDfZhqD3ffy4ULPOiHtzZl4umYyvrU64bsMqNh5bR 5D6iLPSnL0pDk8/5B3GOFg7n728n+FqozkRytyCu2uKrAYKi6V7WBACH0RAemjVKDZKv gNPjPHg8wXGVLB2ZpSr1tneaIgbY5wkB8tPHC89VItRHaiqLq6FrVBWp+9iXOYWh1ZUa AtMA== X-Gm-Message-State: AOAM530YTI2A7Ezoi5Nr2niG5p9i+HWjrAy2+Fy4CL6xfMMwMN9wYclo ptPUN74fdZQfKiuouiqAUg9T3LsvvSLgWg== X-Google-Smtp-Source: ABdhPJzig1zJL+gq4DIUK7vSK93emvlgtiuWN03tbtxgYT9dX4niTaNUGRWjS3gbRlfglc/Fv5E8Cw== X-Received: by 2002:a17:90b:390f:: with SMTP id ob15mr8763333pjb.32.1638478142248; Thu, 02 Dec 2021 12:49:02 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id pi17sm3721391pjb.34.2021.12.02.12.49.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Dec 2021 12:49:01 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 01/15] target/m68k: Raise the TRAPn exception with the correct pc Date: Thu, 2 Dec 2021 12:48:46 -0800 Message-Id: <20211202204900.50973-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211202204900.50973-1-richard.henderson@linaro.org> References: <20211202204900.50973-1-richard.henderson@linaro.org> MIME-Version: 1.0 X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::1032 (failed) Received-SPF: pass client-ip=2607:f8b0:4864:20::1032; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1032.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent@vivier.eu Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Rather than adjust the PC in all of the consumers, raise the exception with the correct PC in the first place. Signed-off-by: Richard Henderson Reviewed-by: Laurent Vivier --- linux-user/m68k/cpu_loop.c | 1 - target/m68k/op_helper.c | 9 --------- target/m68k/translate.c | 2 +- 3 files changed, 1 insertion(+), 11 deletions(-) diff --git a/linux-user/m68k/cpu_loop.c b/linux-user/m68k/cpu_loop.c index 790bd558c3..287f24cc60 100644 --- a/linux-user/m68k/cpu_loop.c +++ b/linux-user/m68k/cpu_loop.c @@ -70,7 +70,6 @@ void cpu_loop(CPUM68KState *env) { abi_long ret; n = env->dregs[0]; - env->pc += 2; ret = do_syscall(env, n, env->dregs[1], diff --git a/target/m68k/op_helper.c b/target/m68k/op_helper.c index cfbc987ba6..36662de149 100644 --- a/target/m68k/op_helper.c +++ b/target/m68k/op_helper.c @@ -216,11 +216,6 @@ static void cf_interrupt_all(CPUM68KState *env, int is_hw) cpu_loop_exit(cs); return; } - if (cs->exception_index >= EXCP_TRAP0 - && cs->exception_index <= EXCP_TRAP15) { - /* Move the PC after the trap instruction. */ - retaddr += 2; - } } vector = cs->exception_index << 2; @@ -303,10 +298,6 @@ static void m68k_interrupt_all(CPUM68KState *env, int is_hw) /* Return from an exception. */ m68k_rte(env); return; - case EXCP_TRAP0 ... EXCP_TRAP15: - /* Move the PC after the trap instruction. */ - retaddr += 2; - break; } } diff --git a/target/m68k/translate.c b/target/m68k/translate.c index af43c8eab8..af3febdd48 100644 --- a/target/m68k/translate.c +++ b/target/m68k/translate.c @@ -4860,7 +4860,7 @@ DISAS_INSN(wdebug) DISAS_INSN(trap) { - gen_exception(s, s->base.pc_next, EXCP_TRAP0 + (insn & 0xf)); + gen_exception(s, s->pc, EXCP_TRAP0 + (insn & 0xf)); } static void gen_load_fcr(DisasContext *s, TCGv res, int reg) From patchwork Thu Dec 2 20:48:47 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1562990 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=ay1ku5Wa; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) 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 bilbo.ozlabs.org (Postfix) with ESMTPS id 4J4p9m0sG8z9s3q for ; Fri, 3 Dec 2021 07:54:52 +1100 (AEDT) Received: from localhost ([::1]:50510 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mst6P-0002iP-TA for incoming@patchwork.ozlabs.org; Thu, 02 Dec 2021 15:54:49 -0500 Received: from eggs.gnu.org ([209.51.188.92]:44014) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mst0t-00005h-8H for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:08 -0500 Received: from [2607:f8b0:4864:20::434] (port=34796 helo=mail-pf1-x434.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mst0r-0005Su-7c for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:06 -0500 Received: by mail-pf1-x434.google.com with SMTP id r130so749749pfc.1 for ; Thu, 02 Dec 2021 12:49:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=4CLF5Cf10tY7ttRY0ouAmhAHzRXoDrzVwZM6NDHKcnI=; b=ay1ku5Wao1FtsQ0RT74QPm/zJV4gV7UFziabVlO3qnAiFkd+Q6J4I0mUcIcvjEAVJQ tyqB4MZC+0yK3XEipyPA3jfEklXauPVo/SO7pld0fse6vkI6zm5Kj3ceuGeYmWARj2kH Hwr9UXByaC3AMo/yL5xsC5bc0XrbJgd2Bx9yDcQQ6POLwh2IellazIWQBL8Hd4uvTnJf /Yb5sKfw4OJyiF5khxc+HdQ4yDlq+1xri846uct1/5H0HunkWYDp9QhhO7Wd6MbJqcYJ +ylwYwRDHF99qy69Er/V87JvNICdGzgRMnjANNj7lah2XXqOU2c1ym8OVQvgiFdzE8Nd fpCg== 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=4CLF5Cf10tY7ttRY0ouAmhAHzRXoDrzVwZM6NDHKcnI=; b=0AKXj5coqfE4cPugo34MATWTZSx4fgt5LnkMV5JkZs6fEeC9EFaHayd9M0hkKIahpi 2GdZSaIzBPYKheYxMe6pB0UBJM6Qo/lO0eusiJkgmiEIwjxz7aPhCBsG6zBOxsLxnVwD JYdVBjsBt5M92bAb7tSG47Gur9giInsbZL1gU5msQ4ZLDHio1g99STLb3zr0CmLbrMRR UQp59gOQFVSpEiLwVE9ueZZo7CfZAf+8ZJQTzf2hXLPNktAsb+p8VKF2j0nJwn6vXrDJ AminDHignF5PX9zGWQwOqFNS0GnXnYUMmi5np+g1eTZhswGQVXEFb0jPl0Vt58kmVrUG Cbbg== X-Gm-Message-State: AOAM533hGmJsJ7Lxyb9bLrG7IxDQQZwmXsjdIFNVgoN0Yq2CpsVgQtZO Ha/Pf9Nqtu2+O4Y1dQs9TO5rhsqSEJdiDg== X-Google-Smtp-Source: ABdhPJyr8GvbchL2FWHUbO4j6+Br6xlJ1ZsTpM+Tmpw3ld1vfOLKV4jJbFI6l0z6vW4GWIsVJjo0eQ== X-Received: by 2002:a63:90c7:: with SMTP id a190mr1235794pge.526.1638478142974; Thu, 02 Dec 2021 12:49:02 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id pi17sm3721391pjb.34.2021.12.02.12.49.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Dec 2021 12:49:02 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 02/15] target/m68k: Switch over exception type in m68k_interrupt_all Date: Thu, 2 Dec 2021 12:48:47 -0800 Message-Id: <20211202204900.50973-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211202204900.50973-1-richard.henderson@linaro.org> References: <20211202204900.50973-1-richard.henderson@linaro.org> MIME-Version: 1.0 X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::434 (failed) Received-SPF: pass client-ip=2607:f8b0:4864:20::434; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x434.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent@vivier.eu Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Replace an if ladder with a switch for clarity. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Laurent Vivier --- target/m68k/op_helper.c | 45 +++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/target/m68k/op_helper.c b/target/m68k/op_helper.c index 36662de149..71176eb3d8 100644 --- a/target/m68k/op_helper.c +++ b/target/m68k/op_helper.c @@ -332,7 +332,8 @@ static void m68k_interrupt_all(CPUM68KState *env, int is_hw) sp &= ~1; } - if (cs->exception_index == EXCP_ACCESS) { + switch (cs->exception_index) { + case EXCP_ACCESS: if (env->mmu.fault) { cpu_abort(cs, "DOUBLE MMU FAULT\n"); } @@ -390,26 +391,36 @@ static void m68k_interrupt_all(CPUM68KState *env, int is_hw) "ssw: %08x ea: %08x sfc: %d dfc: %d\n", env->mmu.ssw, env->mmu.ar, env->sfc, env->dfc); } - } else if (cs->exception_index == EXCP_ADDRESS) { + break; + + case EXCP_ADDRESS: do_stack_frame(env, &sp, 2, oldsr, 0, retaddr); - } else if (cs->exception_index == EXCP_ILLEGAL || - cs->exception_index == EXCP_DIV0 || - cs->exception_index == EXCP_CHK || - cs->exception_index == EXCP_TRAPCC || - cs->exception_index == EXCP_TRACE) { + break; + + case EXCP_ILLEGAL: + case EXCP_DIV0: + case EXCP_CHK: + case EXCP_TRAPCC: + case EXCP_TRACE: /* FIXME: addr is not only env->pc */ do_stack_frame(env, &sp, 2, oldsr, env->pc, retaddr); - } else if (is_hw && oldsr & SR_M && - cs->exception_index >= EXCP_SPURIOUS && - cs->exception_index <= EXCP_INT_LEVEL_7) { - do_stack_frame(env, &sp, 0, oldsr, 0, retaddr); - oldsr = sr; - env->aregs[7] = sp; - cpu_m68k_set_sr(env, sr &= ~SR_M); - sp = env->aregs[7] & ~1; - do_stack_frame(env, &sp, 1, oldsr, 0, retaddr); - } else { + break; + + case EXCP_SPURIOUS ... EXCP_INT_LEVEL_7: + if (is_hw && oldsr & SR_M) { + do_stack_frame(env, &sp, 0, oldsr, 0, retaddr); + oldsr = sr; + env->aregs[7] = sp; + cpu_m68k_set_sr(env, sr &= ~SR_M); + sp = env->aregs[7] & ~1; + do_stack_frame(env, &sp, 1, oldsr, 0, retaddr); + break; + } + /* fall through */ + + default: do_stack_frame(env, &sp, 0, oldsr, 0, retaddr); + break; } env->aregs[7] = sp; From patchwork Thu Dec 2 20:48:48 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1562991 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=T+o6OIOF; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) 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 bilbo.ozlabs.org (Postfix) with ESMTPS id 4J4p9w3Ddjz9s3q for ; Fri, 3 Dec 2021 07:55:00 +1100 (AEDT) Received: from localhost ([::1]:50896 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mst6Y-0002z4-7T for incoming@patchwork.ozlabs.org; Thu, 02 Dec 2021 15:54:58 -0500 Received: from eggs.gnu.org ([209.51.188.92]:45528) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mst69-0002uf-3W for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:54:33 -0500 Received: from [2607:f8b0:4864:20::235] (port=38892 helo=mail-oi1-x235.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mst67-0006fD-M7 for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:54:32 -0500 Received: by mail-oi1-x235.google.com with SMTP id r26so1618160oiw.5 for ; Thu, 02 Dec 2021 12:54:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=NxDiG73tsDFhm6pQN7GiRjJDURihgWL49OscOC2ndm4=; b=T+o6OIOFabv0+OUOuq5Vn/qtvSrPG4RDChB97kN/pI2/mWPTJOyE0/CXQ9JibUHGVl Qy5WWJoiN8wba1cPlNWiYV2QirzhGDrOlBL70XlwjA3+Dp2KxHQtPQt72qr0BDv8VkKH Rjcj8HgMAN57agr+Ly9qSnHZYRUFgUCvrOVXMibn1SpmpFekd7W3n66DSzTYgqT7PWZ8 zQ+kNQRZhqfNfscvYqgSsSzcTS+If0S+mGHRJxHWOraRfsnLcodhVmVjAvKNeNegAx2U Q/5B5SPD+ace9yoMjhv+5iRkZACJgMtapeQve0rbbAH6lVcMvkUdPJvmBZu3i95d9Dup mMSA== 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=NxDiG73tsDFhm6pQN7GiRjJDURihgWL49OscOC2ndm4=; b=0vf0vIKW07b8VRRBqQku6l2wB+A8XwMle0Woc3N/E0NMuF052VBjoBhH9MBobV5ANo 8OZsfQqCdX9B/Ah7mnon1N2Wu1gEz3Vru5AfyX+xJgewJysqBIFI8U4oePOmTwRyd1+l 0ET0Y5oAOZsiTdBmK+ybUUDSKUR7xYFeIvFZ64zvHBJ3tvFnZq1sPMHg4cfJPwjOhGSN J+aM7BVk94IRO5swVHRE3K4G7HJ5DafvB0T7GIxk6e4amU839sNdixVJuxBg1RomcSRk XxpEWgKugz4VeL3zB9Yr/iZ1DODf31nux80mnruNdMtsHvj8zd0u4JDH6q+VinQblDnZ n+fQ== X-Gm-Message-State: AOAM533OjzZ9iViF52KU3NFVOqPJdWqFs0UDMEwWWk2k3ayZuGHJ33AC S+p7CwWS/S+vtXbf4aeWar/kDMWRrLqhKA== X-Google-Smtp-Source: ABdhPJwo2BlybWAGtwjCZe4VBrNwyJHl1NtynJuAq8OUWeOHcbpw2Et1MWwS8H0ymfa6w/OhqKSm0w== X-Received: by 2002:a17:90b:615:: with SMTP id gb21mr8890704pjb.10.1638478143761; Thu, 02 Dec 2021 12:49:03 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id pi17sm3721391pjb.34.2021.12.02.12.49.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Dec 2021 12:49:03 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 03/15] linux-user/m68k: Use force_sig_fault Date: Thu, 2 Dec 2021 12:48:48 -0800 Message-Id: <20211202204900.50973-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211202204900.50973-1-richard.henderson@linaro.org> References: <20211202204900.50973-1-richard.henderson@linaro.org> MIME-Version: 1.0 X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::235 (failed) Received-SPF: pass client-ip=2607:f8b0:4864:20::235; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x235.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , laurent@vivier.eu Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.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 287f24cc60..396f98bd6c 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: { @@ -90,10 +77,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 Thu Dec 2 20:48:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1562981 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=jBytbe8b; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) 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 bilbo.ozlabs.org (Postfix) with ESMTPS id 4J4p4Z6FdFz9s3q for ; Fri, 3 Dec 2021 07:50:21 +1100 (AEDT) Received: from localhost ([::1]:34010 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mst22-00007m-Ca for incoming@patchwork.ozlabs.org; Thu, 02 Dec 2021 15:50:18 -0500 Received: from eggs.gnu.org ([209.51.188.92]:44038) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mst0t-00005j-Ss for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:08 -0500 Received: from [2607:f8b0:4864:20::52d] (port=35377 helo=mail-pg1-x52d.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mst0s-0005TG-1C for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:07 -0500 Received: by mail-pg1-x52d.google.com with SMTP id j11so944480pgs.2 for ; Thu, 02 Dec 2021 12:49:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=0fNsQKzzBZbMkBXxBO24tuTvZHmRZOZnsAlV3uXSDeo=; b=jBytbe8bMMFoNaZXIYk3XfiE1gM/pyEGmB5lmgNrS6Uddr6MvZAe63s9QY1bfrFkWm d6cq0dNB0x4t2xFFo4ZjVAl8p3lyOyTSGgMrsBaF36ZwUn5kTEaXveKhNHXHVezhzf4L EHofr990PF6KQ0tJCxFJmh1tdLg5uRNjpzJmwHAC5Kzj9606wDoW2Mp1VOpcRzYpZLjc d0pxxtb6qpz1HwlLVFpKFIA1zH4OLD7mJcjLT7YeL53dmpm4Fe247nw698XHS7q3UOCw lASaIDVdvYeVslvNajAOFwcDxZsyrnSdS4Y5pLzqD2iKdGkkgrhc325zg827TZONdV2O aq4A== 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=0fNsQKzzBZbMkBXxBO24tuTvZHmRZOZnsAlV3uXSDeo=; b=ELMvTrNnVf4JF6SH0Aciv0iqahv+Ito/9v05xN1sn2DMw1CdmEcjYENU4NC4n8exDp uuT6lL0AE8Ts8Lt9DEGNnXr7MqkPEyzGDqlBPUEcXd5rJWWLBLW7SSZ2UwCvTp90z7Ap 0TtKMrlfUT0PwAq6YJRtpPNyoPWnGgWud/5R+b1l1uFkDoMp/2CIv6nr4oIEeE3v8r4T aov0jrw7qRFJxkLdT/KdFzGeajn91PaygPyR377vGNsZ7UaPX9K47jou7F//NcGJ6wgJ 00C4laYjRaFTv44D92/+3K5FnQE9sidAJyWa1JFN+BNE28sSsC/kVCTlMGN6oV5L5iF0 x2RQ== X-Gm-Message-State: AOAM5336Y2IVgwkUpMn9FemjfR66IyfosmhUpstuHyWNvT5aH8Ga7LE2 0l971Plo3Pzo0OsBOc4/55M+338efF3vpQ== X-Google-Smtp-Source: ABdhPJwfzzJmklY3kDF3lUzdm38lfu9e128iimbTCo3xvhSLgFFR5WEp0a0Gld/v7nrPECof/jQapg== X-Received: by 2002:a05:6a00:807:b0:49f:d6ab:590c with SMTP id m7-20020a056a00080700b0049fd6ab590cmr14979052pfk.32.1638478144559; Thu, 02 Dec 2021 12:49:04 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id pi17sm3721391pjb.34.2021.12.02.12.49.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Dec 2021 12:49:04 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 04/15] linux-user/m68k: Handle EXCP_TRAP1 through EXCP_TRAP15 Date: Thu, 2 Dec 2021 12:48:49 -0800 Message-Id: <20211202204900.50973-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211202204900.50973-1-richard.henderson@linaro.org> References: <20211202204900.50973-1-richard.henderson@linaro.org> MIME-Version: 1.0 X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::52d (failed) Received-SPF: pass client-ip=2607:f8b0:4864:20::52d; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52d.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent@vivier.eu Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" These are raised by guest instructions, and should not fall through into the default abort case. Signed-off-by: Richard Henderson --- linux-user/m68k/cpu_loop.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/linux-user/m68k/cpu_loop.c b/linux-user/m68k/cpu_loop.c index 396f98bd6c..0de11fb9bf 100644 --- a/linux-user/m68k/cpu_loop.c +++ b/linux-user/m68k/cpu_loop.c @@ -45,6 +45,7 @@ void cpu_loop(CPUM68KState *env) case EXCP_ILLEGAL: case EXCP_LINEA: case EXCP_LINEF: + case EXCP_TRAP0 + 1 ... EXCP_TRAP0 + 14: force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPN, env->pc); break; case EXCP_CHK: @@ -77,6 +78,7 @@ void cpu_loop(CPUM68KState *env) /* just indicate that signals should be handled asap */ break; case EXCP_DEBUG: + case EXCP_TRAP15: force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->pc); break; case EXCP_ATOMIC: From patchwork Thu Dec 2 20:48:50 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1562988 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=ddXykI0u; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) 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 bilbo.ozlabs.org (Postfix) with ESMTPS id 4J4p7C1sYtz9s3q for ; Fri, 3 Dec 2021 07:52:39 +1100 (AEDT) Received: from localhost ([::1]:44616 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mst4H-0007GV-1e for incoming@patchwork.ozlabs.org; Thu, 02 Dec 2021 15:52:37 -0500 Received: from eggs.gnu.org ([209.51.188.92]:44052) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mst0u-00005o-Nr for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:08 -0500 Received: from [2607:f8b0:4864:20::631] (port=42972 helo=mail-pl1-x631.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mst0s-0005TT-Lf for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:08 -0500 Received: by mail-pl1-x631.google.com with SMTP id u17so565806plg.9 for ; Thu, 02 Dec 2021 12:49:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=nMS++2dwv9z8ou0xgXRFjbkq4F7YRX5rhwWnAtj0BDE=; b=ddXykI0u3gjtHgaFNkoKFqz5yXJhru45o2Tz4NoanvtXqAW0tW6EibFV6Jt60YPSAB jMFhFBe+JSp3EA+kMR5am6AkILaIfe4BtuyPxznFSoTtYG431bZldWLexOWrpc1n+/ib CFAR8fj9mIbDEquhu3AL9plp66R8j9mXF/t1azWIEfjiGxnVK+gw67+/vMk7aFJciAZc nNy0nKDMzE0O05X1KXvjXusogNT1co8N4WVXFqyDC7ZOWjTBs+2r8rwvNG1hzD/NnZht GHjK30HhtyZIMxZuS/gYb2VqRtHICOC9zIjkyIl/avenD+KwManDkTzxzrXYwq9BGY1M azKQ== 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=nMS++2dwv9z8ou0xgXRFjbkq4F7YRX5rhwWnAtj0BDE=; b=7w/Cxm3bI2pa6sOI9BBpaHxQ32ynUSUPUfdj/PvCP5L1b7h18dWcjJHU2QCI1Nl7jh /32rWGo2uT66B33ozzVWODDsyx+6IyL08mXls/oNtEeNmFw2YWS5nEyryR48qUrWJhaa 67yAXJmd9osLrSx2YFzLVizTB8BJc93AaLN8RQmz62v3WYltSOA1SCUfctuNEG+l0k84 BAlAZg91/bVn0HEBkRBFvpFfbbLehAoOsceHa/IdRO50qCEvjP03RyS/T7faTWhkzmA6 rR3wbvEbIizCuZiJ2epJBDyT0zTulH0xByAmCF+FlBuAkh+SFcy4Cear1jeKndUGgHEE hDLA== X-Gm-Message-State: AOAM531Qf8/DuGqarLqpKn/EBU0xEU7GC77Hh0eVA5vrAL5F6jlYbl7s 9AxUrgT3KMHbId4w01quFLfh/rHG7zGGBA== X-Google-Smtp-Source: ABdhPJztlhLQjkXDbW/0vjtCfs2qS3eJxC01a3Z1FEWDT2rIL8ihAVTlDy9cZ7LM4KvA2DNR1+BMQA== X-Received: by 2002:a17:90a:e60a:: with SMTP id j10mr8754908pjy.169.1638478145306; Thu, 02 Dec 2021 12:49:05 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id pi17sm3721391pjb.34.2021.12.02.12.49.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Dec 2021 12:49:04 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 05/15] target/m68k: Remove retaddr in m68k_interrupt_all Date: Thu, 2 Dec 2021 12:48:50 -0800 Message-Id: <20211202204900.50973-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211202204900.50973-1-richard.henderson@linaro.org> References: <20211202204900.50973-1-richard.henderson@linaro.org> MIME-Version: 1.0 X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::631 (failed) Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x631.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent@vivier.eu Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" The only value this variable holds is now env->pc. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Laurent Vivier --- target/m68k/op_helper.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/target/m68k/op_helper.c b/target/m68k/op_helper.c index 71176eb3d8..afbbb8b4ca 100644 --- a/target/m68k/op_helper.c +++ b/target/m68k/op_helper.c @@ -286,12 +286,9 @@ static void m68k_interrupt_all(CPUM68KState *env, int is_hw) { CPUState *cs = env_cpu(env); uint32_t sp; - uint32_t retaddr; uint32_t vector; uint16_t sr, oldsr; - retaddr = env->pc; - if (!is_hw) { switch (cs->exception_index) { case EXCP_RTE: @@ -384,7 +381,7 @@ static void m68k_interrupt_all(CPUM68KState *env, int is_hw) sp -= 4; cpu_stl_mmuidx_ra(env, sp, env->mmu.ar, MMU_KERNEL_IDX, 0); - do_stack_frame(env, &sp, 7, oldsr, 0, retaddr); + do_stack_frame(env, &sp, 7, oldsr, 0, env->pc); env->mmu.fault = false; if (qemu_loglevel_mask(CPU_LOG_INT)) { qemu_log(" " @@ -394,7 +391,7 @@ static void m68k_interrupt_all(CPUM68KState *env, int is_hw) break; case EXCP_ADDRESS: - do_stack_frame(env, &sp, 2, oldsr, 0, retaddr); + do_stack_frame(env, &sp, 2, oldsr, 0, env->pc); break; case EXCP_ILLEGAL: @@ -403,23 +400,23 @@ static void m68k_interrupt_all(CPUM68KState *env, int is_hw) case EXCP_TRAPCC: case EXCP_TRACE: /* FIXME: addr is not only env->pc */ - do_stack_frame(env, &sp, 2, oldsr, env->pc, retaddr); + do_stack_frame(env, &sp, 2, oldsr, env->pc, env->pc); break; case EXCP_SPURIOUS ... EXCP_INT_LEVEL_7: if (is_hw && oldsr & SR_M) { - do_stack_frame(env, &sp, 0, oldsr, 0, retaddr); + do_stack_frame(env, &sp, 0, oldsr, 0, env->pc); oldsr = sr; env->aregs[7] = sp; cpu_m68k_set_sr(env, sr &= ~SR_M); sp = env->aregs[7] & ~1; - do_stack_frame(env, &sp, 1, oldsr, 0, retaddr); + do_stack_frame(env, &sp, 1, oldsr, 0, env->pc); break; } /* fall through */ default: - do_stack_frame(env, &sp, 0, oldsr, 0, retaddr); + do_stack_frame(env, &sp, 0, oldsr, 0, env->pc); break; } From patchwork Thu Dec 2 20:48:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1562994 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=aTCwxLeS; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) 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 bilbo.ozlabs.org (Postfix) with ESMTPS id 4J4pFC2t2Nz9s3q for ; Fri, 3 Dec 2021 07:57:51 +1100 (AEDT) Received: from localhost ([::1]:58094 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mst9J-0007pj-6J for incoming@patchwork.ozlabs.org; Thu, 02 Dec 2021 15:57:49 -0500 Received: from eggs.gnu.org ([209.51.188.92]:44066) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mst0v-00006Q-BT for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:09 -0500 Received: from [2607:f8b0:4864:20::430] (port=33700 helo=mail-pf1-x430.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mst0t-0005Ta-Mb for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:09 -0500 Received: by mail-pf1-x430.google.com with SMTP id x5so775901pfr.0 for ; Thu, 02 Dec 2021 12:49:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=QB8xOr28M/WUUK5DvBYDr+mSvzOkIVVCrLOmzfGyBww=; b=aTCwxLeSqcOVAFo3a/7nAMYb6UasZzHDOQyBGMbHnkmyIli0tMeZpZ9DptgniqtqgP W0ZHoh/o3r8yKvyjJOsKH59tHp6gIxu8LYFo7nBfZ/lZMKRM/Qa8hsuXrkmJcRChbSiQ msFjrEp1oBGKw3rHnSJX1UUXqlWWIjZ7E+NO31riHui1iau+x8/rCGHODM+daj5n9dml QEnd7jjy4ZXIU2UXGsmVK5tVVXwdxxJdaRyq80zDaUjQ/XEZa6a9vTUpnHf4P4jIAEDL 9C/B/StV08jN7W0QRSd5GQvUEaGYRMt8Ca80Ju9D3gWUgjeHmqwHNG44NnZLfgj5nC3a J1Ag== 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=QB8xOr28M/WUUK5DvBYDr+mSvzOkIVVCrLOmzfGyBww=; b=apNcxl/q0f8EHNnSb1nCMNnIaU8x164NVjHxF+Z084AeLUK/IK9Ve21nB4QuqdXOCl mTvga0Gms8c+RgHzexRa1ogFYCF/moi3gFfZ0hejZT7uGwQlE2T4gLlECZ8+D0WZuKJk CiOc6Cy760Xeg7xkGkotXv9ey4LvPBFcfCoM93gcZpxGEvTknOLByXTt2uO39WmgLcGX y3m+71qRfSQsvC98A/IYkwT2AWLN6f0+oT7a+03t86SdSaxiuTIJFTk9I+BFyjjD2jNV IeFC58ECF7M6wNaKipuiJ3Rv5qTK72fXXGVBY17kNUqYdC8lZYMiE2xQzETGcHR9gqgz zpDA== X-Gm-Message-State: AOAM530UGwCz6RyLbNb7EYTYYhZLZdnHgzVxGFWbBIYONmaMOM3AXWPS ykW2kFJ6nJNWN1Q5nyLYEN2a3T3Fi8TiBw== X-Google-Smtp-Source: ABdhPJxhQFQE4SvZpY7+jAkml6ZPp+Z+r2CZqCpjSrREHd7zX2ckDql0QGImtUQooaTYDgYRo2VORQ== X-Received: by 2002:a63:130c:: with SMTP id i12mr1202675pgl.297.1638478146012; Thu, 02 Dec 2021 12:49:06 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id pi17sm3721391pjb.34.2021.12.02.12.49.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Dec 2021 12:49:05 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 06/15] target/m68k: Fix address argument for EXCP_CHK Date: Thu, 2 Dec 2021 12:48:51 -0800 Message-Id: <20211202204900.50973-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211202204900.50973-1-richard.henderson@linaro.org> References: <20211202204900.50973-1-richard.henderson@linaro.org> MIME-Version: 1.0 X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::430 (failed) Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x430.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent@vivier.eu Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" According to the M68040 Users Manual, section 8.4.3, Six word stack frame (format 2), CHK, CHK2 (and others) are supposed to record the next insn in PC and the address of the trapping instruction in ADDRESS. Create a raise_exception_format2 function to centralize recording of the trapping pc in mmu.ar, plus advancing to the next insn. Update m68k_interrupt_all to pass mmu.ar to do_stack_frame. Update cpu_loop to pass mmu.ar to siginfo.si_addr, as the kernel does in trap_c(). Signed-off-by: Richard Henderson Reviewed-by: Laurent Vivier --- linux-user/m68k/cpu_loop.c | 2 +- target/m68k/op_helper.c | 54 ++++++++++++++++++++------------------ 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/linux-user/m68k/cpu_loop.c b/linux-user/m68k/cpu_loop.c index 0de11fb9bf..82b100aa87 100644 --- a/linux-user/m68k/cpu_loop.c +++ b/linux-user/m68k/cpu_loop.c @@ -49,7 +49,7 @@ void cpu_loop(CPUM68KState *env) force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPN, env->pc); break; case EXCP_CHK: - force_sig_fault(TARGET_SIGFPE, TARGET_FPE_INTOVF, env->pc); + force_sig_fault(TARGET_SIGFPE, TARGET_FPE_INTOVF, env->mmu.ar); break; case EXCP_DIV0: force_sig_fault(TARGET_SIGFPE, TARGET_FPE_INTDIV, env->pc); diff --git a/target/m68k/op_helper.c b/target/m68k/op_helper.c index afbbb8b4ca..b549eb077c 100644 --- a/target/m68k/op_helper.c +++ b/target/m68k/op_helper.c @@ -396,13 +396,16 @@ static void m68k_interrupt_all(CPUM68KState *env, int is_hw) case EXCP_ILLEGAL: case EXCP_DIV0: - case EXCP_CHK: case EXCP_TRAPCC: case EXCP_TRACE: /* FIXME: addr is not only env->pc */ do_stack_frame(env, &sp, 2, oldsr, env->pc, env->pc); break; + case EXCP_CHK: + do_stack_frame(env, &sp, 2, oldsr, env->mmu.ar, env->pc); + break; + case EXCP_SPURIOUS ... EXCP_INT_LEVEL_7: if (is_hw && oldsr & SR_M) { do_stack_frame(env, &sp, 0, oldsr, 0, env->pc); @@ -544,6 +547,29 @@ void HELPER(raise_exception)(CPUM68KState *env, uint32_t tt) raise_exception(env, tt); } +static void QEMU_NORETURN +raise_exception_format2(CPUM68KState *env, int tt, int ilen, uintptr_t raddr) +{ + CPUState *cs = env_cpu(env); + + cs->exception_index = tt; + + /* Recover PC and CC_OP for the beginning of the insn. */ + cpu_restore_state(cs, raddr, true); + + /* Flags are current in env->cc_*, or are undefined. */ + env->cc_op = CC_OP_FLAGS; + + /* + * Remember original pc in mmu.ar, for the Format 2 stack frame. + * Adjust PC to end of the insn. + */ + env->mmu.ar = env->pc; + env->pc += ilen; + + cpu_loop_exit(cs); +} + void HELPER(divuw)(CPUM68KState *env, int destr, uint32_t den) { uint32_t num = env->dregs[destr]; @@ -1061,18 +1087,7 @@ void HELPER(chk)(CPUM68KState *env, int32_t val, int32_t ub) env->cc_c = 0 <= ub ? val < 0 || val > ub : val > ub && val < 0; if (val < 0 || val > ub) { - CPUState *cs = env_cpu(env); - - /* Recover PC and CC_OP for the beginning of the insn. */ - cpu_restore_state(cs, GETPC(), true); - - /* flags have been modified by gen_flush_flags() */ - env->cc_op = CC_OP_FLAGS; - /* Adjust PC to end of the insn. */ - env->pc += 2; - - cs->exception_index = EXCP_CHK; - cpu_loop_exit(cs); + raise_exception_format2(env, EXCP_CHK, 2, GETPC()); } } @@ -1093,17 +1108,6 @@ void HELPER(chk2)(CPUM68KState *env, int32_t val, int32_t lb, int32_t ub) env->cc_c = lb <= ub ? val < lb || val > ub : val > ub && val < lb; if (env->cc_c) { - CPUState *cs = env_cpu(env); - - /* Recover PC and CC_OP for the beginning of the insn. */ - cpu_restore_state(cs, GETPC(), true); - - /* flags have been modified by gen_flush_flags() */ - env->cc_op = CC_OP_FLAGS; - /* Adjust PC to end of the insn. */ - env->pc += 4; - - cs->exception_index = EXCP_CHK; - cpu_loop_exit(cs); + raise_exception_format2(env, EXCP_CHK, 4, GETPC()); } } From patchwork Thu Dec 2 20:48:52 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1562983 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=BZChWBu8; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) 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 bilbo.ozlabs.org (Postfix) with ESMTPS id 4J4p4b0l04z9t55 for ; Fri, 3 Dec 2021 07:50:23 +1100 (AEDT) Received: from localhost ([::1]:34150 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mst24-0000E3-RD for incoming@patchwork.ozlabs.org; Thu, 02 Dec 2021 15:50:20 -0500 Received: from eggs.gnu.org ([209.51.188.92]:44104) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mst0w-00007Y-Mj for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:10 -0500 Received: from [2607:f8b0:4864:20::52e] (port=33775 helo=mail-pg1-x52e.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mst0u-0005Tp-FL for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:10 -0500 Received: by mail-pg1-x52e.google.com with SMTP id f125so989443pgc.0 for ; Thu, 02 Dec 2021 12:49:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=0njpWOef/yhW+JaBuuR7Z57bvezWQP6HLTeHax2kXiY=; b=BZChWBu8boNF84qFNap/60pmuTCBj+qpQeIrzk2rLC63Han+1UgKohJpXnBjQH54bh FHiXpiGluwZLlikU/ITA0oMjiM52M4bGDUmPOfCtzGuLWjd+99VJ0UDAV53rP87Q3Sd0 h4tH12mMJT7Ll+d1/81s7Y6GaWHl3dPkqu+iAYrCBk9WTEGKl+EUn1Q5ixOYixbPouWC W5KLyVDLvRVOfCJ3hKu2LOCKY1ig04JcGiWPNeUXddLP4fi1lP+eu6dLxZ9WiCNJSLSr Nk3WDDfK3QYs9tWwaGtSlO3wn7ksqEIAaNxvkbon0YfWmB976syy4JbDSeVNsttSOej+ HF7Q== 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=0njpWOef/yhW+JaBuuR7Z57bvezWQP6HLTeHax2kXiY=; b=XgTR6p6/ATy9l0KYlB81Ymu5W4v4lkpnSl8UZPbOSb08DlkpsottRFy39801tzgkMY fQVmDnPLVtQAR75Yk0zggtYeg8C8qlGdJ+lNzHqVH61a/M0KrPAj7OA//U7bTcYjNBvZ /PELBHrW6/p6VB09EcR7MaETMK05qoHJnS+RycvpNHjgSBQzbdhlgr4byQGg0k8TB/Ri kO6tQkFFJggp3cCf7GyBpAZFW/3ph3pQUEfye11I1uFZu8nOe/01ZcpzcKzGxu+rs0Bb LJXPJ20wFJgFFnXpW204rmuQTuAwdHOExan6j3gLJpjTVV3vWvDxL6pmmwwuN76y+zQK ZB7Q== X-Gm-Message-State: AOAM532q2z4cRPlcbxm7ceWRgY0dD/PPU1xA0r8rVrhtOueF+VSToXcr YUTmoGhfrI51iwyWF7woguNl+7uyZMMiUQ== X-Google-Smtp-Source: ABdhPJwpLrMK6UzLRkBgOcmAwmwKjp83Oo9GaPRJkhKeuwYR1VCApqDY6gfh5P9VJHAjFo0pubWviw== X-Received: by 2002:a63:8449:: with SMTP id k70mr1153412pgd.27.1638478146778; Thu, 02 Dec 2021 12:49:06 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id pi17sm3721391pjb.34.2021.12.02.12.49.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Dec 2021 12:49:06 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 07/15] target/m68k: Fix pc, c flag, and address argument for EXCP_DIV0 Date: Thu, 2 Dec 2021 12:48:52 -0800 Message-Id: <20211202204900.50973-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211202204900.50973-1-richard.henderson@linaro.org> References: <20211202204900.50973-1-richard.henderson@linaro.org> MIME-Version: 1.0 X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::52e (failed) Received-SPF: pass client-ip=2607:f8b0:4864:20::52e; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52e.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent@vivier.eu Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" According to the M68040 Users Manual, section 8.4.3, Six word stack frame (format 2), Zero Div (and others) is supposed to record the next insn in PC and the address of the trapping instruction in ADDRESS. While the N, Z and V flags are documented to be undefine on DIV0, the C flag is documented as always cleared. Update helper_div* to take the instruction length as an argument and use raise_exception_format2. Hoist the reset of the C flag above the division by zero check. Update m68k_interrupt_all to pass mmu.ar to do_stack_frame. Update cpu_loop to pass mmu.ar to siginfo.si_addr, as the kernel does in trap_c(). Signed-off-by: Richard Henderson Reviewed-by: Laurent Vivier --- target/m68k/helper.h | 12 +++++----- linux-user/m68k/cpu_loop.c | 2 +- target/m68k/op_helper.c | 48 +++++++++++++++++++++++--------------- target/m68k/translate.c | 33 +++++++++++++------------- 4 files changed, 52 insertions(+), 43 deletions(-) diff --git a/target/m68k/helper.h b/target/m68k/helper.h index 9842eeaa95..813d180dd0 100644 --- a/target/m68k/helper.h +++ b/target/m68k/helper.h @@ -1,12 +1,12 @@ DEF_HELPER_1(bitrev, i32, i32) DEF_HELPER_1(ff1, i32, i32) DEF_HELPER_FLAGS_2(sats, TCG_CALL_NO_RWG_SE, i32, i32, i32) -DEF_HELPER_3(divuw, void, env, int, i32) -DEF_HELPER_3(divsw, void, env, int, s32) -DEF_HELPER_4(divul, void, env, int, int, i32) -DEF_HELPER_4(divsl, void, env, int, int, s32) -DEF_HELPER_4(divull, void, env, int, int, i32) -DEF_HELPER_4(divsll, void, env, int, int, s32) +DEF_HELPER_4(divuw, void, env, int, i32, int) +DEF_HELPER_4(divsw, void, env, int, s32, int) +DEF_HELPER_5(divul, void, env, int, int, i32, int) +DEF_HELPER_5(divsl, void, env, int, int, s32, int) +DEF_HELPER_5(divull, void, env, int, int, i32, int) +DEF_HELPER_5(divsll, void, env, int, int, s32, int) DEF_HELPER_2(set_sr, void, env, i32) DEF_HELPER_3(cf_movec_to, void, env, i32, i32) DEF_HELPER_3(m68k_movec_to, void, env, i32, i32) diff --git a/linux-user/m68k/cpu_loop.c b/linux-user/m68k/cpu_loop.c index 82b100aa87..267df05372 100644 --- a/linux-user/m68k/cpu_loop.c +++ b/linux-user/m68k/cpu_loop.c @@ -52,7 +52,7 @@ void cpu_loop(CPUM68KState *env) force_sig_fault(TARGET_SIGFPE, TARGET_FPE_INTOVF, env->mmu.ar); break; case EXCP_DIV0: - force_sig_fault(TARGET_SIGFPE, TARGET_FPE_INTDIV, env->pc); + force_sig_fault(TARGET_SIGFPE, TARGET_FPE_INTDIV, env->mmu.ar); break; case EXCP_TRAP0: { diff --git a/target/m68k/op_helper.c b/target/m68k/op_helper.c index b549eb077c..a6e4f5719f 100644 --- a/target/m68k/op_helper.c +++ b/target/m68k/op_helper.c @@ -395,7 +395,6 @@ static void m68k_interrupt_all(CPUM68KState *env, int is_hw) break; case EXCP_ILLEGAL: - case EXCP_DIV0: case EXCP_TRAPCC: case EXCP_TRACE: /* FIXME: addr is not only env->pc */ @@ -403,6 +402,7 @@ static void m68k_interrupt_all(CPUM68KState *env, int is_hw) break; case EXCP_CHK: + case EXCP_DIV0: do_stack_frame(env, &sp, 2, oldsr, env->mmu.ar, env->pc); break; @@ -570,18 +570,19 @@ raise_exception_format2(CPUM68KState *env, int tt, int ilen, uintptr_t raddr) cpu_loop_exit(cs); } -void HELPER(divuw)(CPUM68KState *env, int destr, uint32_t den) +void HELPER(divuw)(CPUM68KState *env, int destr, uint32_t den, int ilen) { uint32_t num = env->dregs[destr]; uint32_t quot, rem; + env->cc_c = 0; /* always cleared, even if div0 */ + if (den == 0) { - raise_exception_ra(env, EXCP_DIV0, GETPC()); + raise_exception_format2(env, EXCP_DIV0, ilen, GETPC()); } quot = num / den; rem = num % den; - env->cc_c = 0; /* always cleared, even if overflow */ if (quot > 0xffff) { env->cc_v = -1; /* @@ -597,18 +598,19 @@ void HELPER(divuw)(CPUM68KState *env, int destr, uint32_t den) env->cc_v = 0; } -void HELPER(divsw)(CPUM68KState *env, int destr, int32_t den) +void HELPER(divsw)(CPUM68KState *env, int destr, int32_t den, int ilen) { int32_t num = env->dregs[destr]; uint32_t quot, rem; + env->cc_c = 0; /* always cleared, even if overflow/div0 */ + if (den == 0) { - raise_exception_ra(env, EXCP_DIV0, GETPC()); + raise_exception_format2(env, EXCP_DIV0, ilen, GETPC()); } quot = num / den; rem = num % den; - env->cc_c = 0; /* always cleared, even if overflow */ if (quot != (int16_t)quot) { env->cc_v = -1; /* nothing else is modified */ @@ -625,18 +627,20 @@ void HELPER(divsw)(CPUM68KState *env, int destr, int32_t den) env->cc_v = 0; } -void HELPER(divul)(CPUM68KState *env, int numr, int regr, uint32_t den) +void HELPER(divul)(CPUM68KState *env, int numr, int regr, + uint32_t den, int ilen) { uint32_t num = env->dregs[numr]; uint32_t quot, rem; + env->cc_c = 0; /* always cleared, even if div0 */ + if (den == 0) { - raise_exception_ra(env, EXCP_DIV0, GETPC()); + raise_exception_format2(env, EXCP_DIV0, ilen, GETPC()); } quot = num / den; rem = num % den; - env->cc_c = 0; env->cc_z = quot; env->cc_n = quot; env->cc_v = 0; @@ -653,18 +657,20 @@ void HELPER(divul)(CPUM68KState *env, int numr, int regr, uint32_t den) } } -void HELPER(divsl)(CPUM68KState *env, int numr, int regr, int32_t den) +void HELPER(divsl)(CPUM68KState *env, int numr, int regr, + int32_t den, int ilen) { int32_t num = env->dregs[numr]; int32_t quot, rem; + env->cc_c = 0; /* always cleared, even if overflow/div0 */ + if (den == 0) { - raise_exception_ra(env, EXCP_DIV0, GETPC()); + raise_exception_format2(env, EXCP_DIV0, ilen, GETPC()); } quot = num / den; rem = num % den; - env->cc_c = 0; env->cc_z = quot; env->cc_n = quot; env->cc_v = 0; @@ -681,19 +687,21 @@ void HELPER(divsl)(CPUM68KState *env, int numr, int regr, int32_t den) } } -void HELPER(divull)(CPUM68KState *env, int numr, int regr, uint32_t den) +void HELPER(divull)(CPUM68KState *env, int numr, int regr, + uint32_t den, int ilen) { uint64_t num = deposit64(env->dregs[numr], 32, 32, env->dregs[regr]); uint64_t quot; uint32_t rem; + env->cc_c = 0; /* always cleared, even if overflow/div0 */ + if (den == 0) { - raise_exception_ra(env, EXCP_DIV0, GETPC()); + raise_exception_format2(env, EXCP_DIV0, ilen, GETPC()); } quot = num / den; rem = num % den; - env->cc_c = 0; /* always cleared, even if overflow */ if (quot > 0xffffffffULL) { env->cc_v = -1; /* @@ -716,19 +724,21 @@ void HELPER(divull)(CPUM68KState *env, int numr, int regr, uint32_t den) env->dregs[numr] = quot; } -void HELPER(divsll)(CPUM68KState *env, int numr, int regr, int32_t den) +void HELPER(divsll)(CPUM68KState *env, int numr, int regr, + int32_t den, int ilen) { int64_t num = deposit64(env->dregs[numr], 32, 32, env->dregs[regr]); int64_t quot; int32_t rem; + env->cc_c = 0; /* always cleared, even if overflow/div0 */ + if (den == 0) { - raise_exception_ra(env, EXCP_DIV0, GETPC()); + raise_exception_format2(env, EXCP_DIV0, ilen, GETPC()); } quot = num / den; rem = num % den; - env->cc_c = 0; /* always cleared, even if overflow */ if (quot != (int32_t)quot) { env->cc_v = -1; /* diff --git a/target/m68k/translate.c b/target/m68k/translate.c index af3febdd48..ae9f5a5222 100644 --- a/target/m68k/translate.c +++ b/target/m68k/translate.c @@ -1601,6 +1601,7 @@ DISAS_INSN(divw) int sign; TCGv src; TCGv destr; + TCGv ilen; /* divX.w ,Dn 32/16 -> 16r:16q */ @@ -1609,20 +1610,20 @@ DISAS_INSN(divw) /* dest.l / src.w */ SRC_EA(env, src, OS_WORD, sign, NULL); - destr = tcg_const_i32(REG(insn, 9)); + destr = tcg_constant_i32(REG(insn, 9)); + ilen = tcg_constant_i32(s->pc - s->base.pc_next); if (sign) { - gen_helper_divsw(cpu_env, destr, src); + gen_helper_divsw(cpu_env, destr, src, ilen); } else { - gen_helper_divuw(cpu_env, destr, src); + gen_helper_divuw(cpu_env, destr, src, ilen); } - tcg_temp_free(destr); set_cc_op(s, CC_OP_FLAGS); } DISAS_INSN(divl) { - TCGv num, reg, den; + TCGv num, reg, den, ilen; int sign; uint16_t ext; @@ -1639,15 +1640,14 @@ DISAS_INSN(divl) /* divX.l , Dr:Dq 64/32 -> 32r:32q */ SRC_EA(env, den, OS_LONG, 0, NULL); - num = tcg_const_i32(REG(ext, 12)); - reg = tcg_const_i32(REG(ext, 0)); + num = tcg_constant_i32(REG(ext, 12)); + reg = tcg_constant_i32(REG(ext, 0)); + ilen = tcg_constant_i32(s->pc - s->base.pc_next); if (sign) { - gen_helper_divsll(cpu_env, num, reg, den); + gen_helper_divsll(cpu_env, num, reg, den, ilen); } else { - gen_helper_divull(cpu_env, num, reg, den); + gen_helper_divull(cpu_env, num, reg, den, ilen); } - tcg_temp_free(reg); - tcg_temp_free(num); set_cc_op(s, CC_OP_FLAGS); return; } @@ -1656,15 +1656,14 @@ DISAS_INSN(divl) /* divXl.l , Dr:Dq 32/32 -> 32r:32q */ SRC_EA(env, den, OS_LONG, 0, NULL); - num = tcg_const_i32(REG(ext, 12)); - reg = tcg_const_i32(REG(ext, 0)); + num = tcg_constant_i32(REG(ext, 12)); + reg = tcg_constant_i32(REG(ext, 0)); + ilen = tcg_constant_i32(s->pc - s->base.pc_next); if (sign) { - gen_helper_divsl(cpu_env, num, reg, den); + gen_helper_divsl(cpu_env, num, reg, den, ilen); } else { - gen_helper_divul(cpu_env, num, reg, den); + gen_helper_divul(cpu_env, num, reg, den, ilen); } - tcg_temp_free(reg); - tcg_temp_free(num); set_cc_op(s, CC_OP_FLAGS); } From patchwork Thu Dec 2 20:48:53 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1562984 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=jtnMCVoq; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) 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 bilbo.ozlabs.org (Postfix) with ESMTPS id 4J4p4b0NxBz9t25 for ; Fri, 3 Dec 2021 07:50:21 +1100 (AEDT) Received: from localhost ([::1]:34120 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mst23-0000Cp-H1 for incoming@patchwork.ozlabs.org; Thu, 02 Dec 2021 15:50:19 -0500 Received: from eggs.gnu.org ([209.51.188.92]:44106) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mst0w-00007b-O8 for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:10 -0500 Received: from [2607:f8b0:4864:20::102a] (port=38806 helo=mail-pj1-x102a.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mst0u-0005Tz-PB for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:10 -0500 Received: by mail-pj1-x102a.google.com with SMTP id p18-20020a17090ad31200b001a78bb52876so3443691pju.3 for ; Thu, 02 Dec 2021 12:49:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Amn9xDCiJU2kDXsG3dRihkKCfyaF3Hk0fncLLUISY74=; b=jtnMCVoqYX3EE4a+EXd1jw9kz7YLgTnQFPbNDL+wWHP9sEFSe/fyUven0eRcj2gjP7 QkNlq/kfuH37X+Jm996m9SH7dKjPXWf8JECO+M/GCy1+NIk2ndV0FViCC+q+G0yuc+Ag 5ePJieqpj7nPh8z7vGIE9RVyDSbq1THSlmoWNBfTdZHG+TXVdhOSyUWGBhIXXyaOX9w9 Fb0PlZEzkf10MZ+4PvQRX46dVjk5lm1n33vHK2d/oVUlNv6vZ4zE26aqfaORWEjMdPIT 75BMmFo/Y+zvkQK59m26WlHo2+hkbLBVSRyfA1lEvOdg1sknzpTpMtwogVoGU8/OCW7B fuzg== 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=Amn9xDCiJU2kDXsG3dRihkKCfyaF3Hk0fncLLUISY74=; b=vKH3zpX69yFB8tNHVcv0jaGMCBfU8LUSFxNwAS0BWfvQ66Mcql9h3cqO4m3bjciHfm PopRRA5b29seSbigklpu5qvnjr3B4PSWOvRZNKn4mReC9n3hu+dtPLEoDHus2JQsq1xT oRynIq8zzhHC/qjfQ39etK3KvBlpGl36v/qPvnFbFEeMwAicvGZfNNONZ+JKI90AgTjh fVl1hLuOwGZoFUi5n6iTjCDWw5bbCGbp6KIU6DZSfNt4gxstjfWwqefKxmstnT9TB++1 CEZ6UBThFKrniWF+K6yav2KaLPjjCuePnxQdbp4Kf/AQ6OyAW7aokLvjHchS0Uhj3XBY RMow== X-Gm-Message-State: AOAM532k71/SKRQCFqjfGX7Me51NeOO/SHK/ij29s5qWnO8iAj5Ia4Ij MFK7Jz8Mpi819lbNFOSDjwjtXoUTsLKVcQ== X-Google-Smtp-Source: ABdhPJxXKQH+79e0uhiCs2RYHIPkS0SJI/Z49aDsWAiarYSWhfUw4OoqbaUx0kW77WZbJlh92GEchQ== X-Received: by 2002:a17:90b:218:: with SMTP id fy24mr8625463pjb.187.1638478147589; Thu, 02 Dec 2021 12:49:07 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id pi17sm3721391pjb.34.2021.12.02.12.49.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Dec 2021 12:49:07 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 08/15] target/m68k: Fix address argument for EXCP_TRACE Date: Thu, 2 Dec 2021 12:48:53 -0800 Message-Id: <20211202204900.50973-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211202204900.50973-1-richard.henderson@linaro.org> References: <20211202204900.50973-1-richard.henderson@linaro.org> MIME-Version: 1.0 X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::102a (failed) Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102a.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent@vivier.eu Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" According to the M68040 Users Manual, section 8.4.3, Six word stack frame (format 2), Trace (and others) is supposed to record the next insn in PC and the address of the trapping instruction in ADDRESS. Create gen_raise_exception_format2 to record the trapping pc in env->mmu.ar. Update m68k_interrupt_all to pass the value to do_stack_frame. Update cpu_loop to handle EXCP_TRACE. Signed-off-by: Richard Henderson --- linux-user/m68k/cpu_loop.c | 3 +++ target/m68k/op_helper.c | 2 +- target/m68k/translate.c | 27 ++++++++++++++++++--------- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/linux-user/m68k/cpu_loop.c b/linux-user/m68k/cpu_loop.c index 267df05372..8e2b79550d 100644 --- a/linux-user/m68k/cpu_loop.c +++ b/linux-user/m68k/cpu_loop.c @@ -54,6 +54,9 @@ void cpu_loop(CPUM68KState *env) case EXCP_DIV0: force_sig_fault(TARGET_SIGFPE, TARGET_FPE_INTDIV, env->mmu.ar); break; + case EXCP_TRACE: + force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_TRACE, env->mmu.ar); + break; case EXCP_TRAP0: { abi_long ret; diff --git a/target/m68k/op_helper.c b/target/m68k/op_helper.c index a6e4f5719f..c9ea28bf68 100644 --- a/target/m68k/op_helper.c +++ b/target/m68k/op_helper.c @@ -396,13 +396,13 @@ static void m68k_interrupt_all(CPUM68KState *env, int is_hw) case EXCP_ILLEGAL: case EXCP_TRAPCC: - case EXCP_TRACE: /* FIXME: addr is not only env->pc */ do_stack_frame(env, &sp, 2, oldsr, env->pc, env->pc); break; case EXCP_CHK: case EXCP_DIV0: + case EXCP_TRACE: do_stack_frame(env, &sp, 2, oldsr, env->mmu.ar, env->pc); break; diff --git a/target/m68k/translate.c b/target/m68k/translate.c index ae9f5a5222..fc2b6a3085 100644 --- a/target/m68k/translate.c +++ b/target/m68k/translate.c @@ -298,6 +298,20 @@ static void gen_raise_exception(int nr) tcg_temp_free_i32(tmp); } +static void gen_raise_exception_format2(DisasContext *s, int nr) +{ + /* + * Pass the address of the insn to the exception handler, + * for recording in the Format $2 (6-word) stack frame. + * Re-use mmu.ar for the purpose, since that's only valid + * after tlb_fill. + */ + tcg_gen_st_i32(tcg_constant_i32(s->base.pc_next), cpu_env, + offsetof(CPUM68KState, mmu.ar)); + gen_raise_exception(nr); + s->base.is_jmp = DISAS_NORETURN; +} + static void gen_exception(DisasContext *s, uint32_t dest, int nr) { update_cc_op(s); @@ -1499,7 +1513,7 @@ static void gen_jmp_tb(DisasContext *s, int n, uint32_t dest) if (unlikely(s->ss_active)) { update_cc_op(s); tcg_gen_movi_i32(QREG_PC, dest); - gen_raise_exception(EXCP_TRACE); + gen_raise_exception_format2(s, EXCP_TRACE); } else if (translator_use_goto_tb(&s->base, dest)) { tcg_gen_goto_tb(n); tcg_gen_movi_i32(QREG_PC, dest); @@ -6225,17 +6239,12 @@ static void m68k_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu) break; case DISAS_TOO_MANY: update_cc_op(dc); - if (dc->ss_active) { - tcg_gen_movi_i32(QREG_PC, dc->pc); - gen_raise_exception(EXCP_TRACE); - } else { - gen_jmp_tb(dc, 0, dc->pc); - } + gen_jmp_tb(dc, 0, dc->pc); break; case DISAS_JUMP: /* We updated CC_OP and PC in gen_jmp/gen_jmp_im. */ if (dc->ss_active) { - gen_raise_exception(EXCP_TRACE); + gen_raise_exception_format2(dc, EXCP_TRACE); } else { tcg_gen_lookup_and_goto_ptr(); } @@ -6246,7 +6255,7 @@ static void m68k_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu) * other state that may require returning to the main loop. */ if (dc->ss_active) { - gen_raise_exception(EXCP_TRACE); + gen_raise_exception_format2(dc, EXCP_TRACE); } else { tcg_gen_exit_tb(NULL, 0); } From patchwork Thu Dec 2 20:48:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1563000 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=K1X40JCu; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) 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 bilbo.ozlabs.org (Postfix) with ESMTPS id 4J4pGq5WTyz9s3q for ; Fri, 3 Dec 2021 07:59:15 +1100 (AEDT) Received: from localhost ([::1]:37292 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mstAf-0004J1-6O for incoming@patchwork.ozlabs.org; Thu, 02 Dec 2021 15:59:13 -0500 Received: from eggs.gnu.org ([209.51.188.92]:44118) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mst0x-000085-2g for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:11 -0500 Received: from [2607:f8b0:4864:20::433] (port=33703 helo=mail-pf1-x433.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mst0v-0005U5-DD for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:10 -0500 Received: by mail-pf1-x433.google.com with SMTP id x5so776011pfr.0 for ; Thu, 02 Dec 2021 12:49:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=zWqJqLjylsPF2+hUki5Vjip4Wvsqiu7KEGUjTIQCZgg=; b=K1X40JCuG2X6BmGWO1I8qxG2+ulwVP/tL46rcxYZB6AR4UhiL2vT9ig7XE+/Smapzl nA06fFfbYYKDDIS6JP2QhaalAmMefDis31lCVABqx6+yAKzc2NudxCm6TyPaKuS8VDuJ fuQ7I/tTKFkUK4G3bPchnVzSaMJQTp+i+YdoNeRwujAvu1hSFrr44PNUaIncsPWYSbhx WOClscyftY+PeHAKIeYn0xp3f57BAGu31gLLG02+mOQU9Oqhlv513BvCr6wWqyBI2axM PMrRuLWwQnIDjDGsQUzVfVnp7yxCIlYbJfJo3eocKHyrYapDPGRhb5JwufQjOIwyLVN8 nSTg== 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=zWqJqLjylsPF2+hUki5Vjip4Wvsqiu7KEGUjTIQCZgg=; b=btbFJ/Xg128RbAq/W5wokpFDtoIUy3Y+FwTBpdlrVLoMq40IK+Rzt6BXwrDtYO2TFI PgxfTJ19q2rjkeGGQSaNdIOx9SeZsrOBDbxkNwiF8IAbHwFP71WtcRWccPkjfdca6kt4 vEv7Etb0mAObxosy/sgAJDlECjnVoXQy8FCruRIe4YKsM5cf4/+Ab/ganjOkYAiKh38g 4ng+JnC0hKGz41OCAoMG1hVp8OR0CJ0hn0C0Y4ndugwTXLZAiuEF6tOBIKG8wLrBiSvI CmHpLb6iIT3dB25zd4YQwXMWofJAYKEizOFl/SDq53/1hhIJytPgJaPOuhQOpakv5veP dhCA== X-Gm-Message-State: AOAM5332E/hMmrDIzhUd+sDuSlCYqmiZbWCJPq87lckBudHqPk9/o89r smDgxmpBqpFKDBKbU3z+IfIQIQBnKjDE8Q== X-Google-Smtp-Source: ABdhPJygyExRHSCesw5ihkomleC/Qvg+78hGDqpXRkH95yVII6gJK96EdGmjT++dik95ELQVXOZrgw== X-Received: by 2002:a63:4c09:: with SMTP id z9mr1155837pga.561.1638478148114; Thu, 02 Dec 2021 12:49:08 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id pi17sm3721391pjb.34.2021.12.02.12.49.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Dec 2021 12:49:07 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 09/15] target/m68k: Implement TRAPcc Date: Thu, 2 Dec 2021 12:48:54 -0800 Message-Id: <20211202204900.50973-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211202204900.50973-1-richard.henderson@linaro.org> References: <20211202204900.50973-1-richard.henderson@linaro.org> MIME-Version: 1.0 X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::433 (failed) Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent@vivier.eu Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Richard Henderson --- target/m68k/cpu.h | 2 ++ linux-user/m68k/cpu_loop.c | 1 + target/m68k/cpu.c | 1 + target/m68k/op_helper.c | 2 +- target/m68k/translate.c | 41 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 46 insertions(+), 1 deletion(-) diff --git a/target/m68k/cpu.h b/target/m68k/cpu.h index a3423729ef..14e130f400 100644 --- a/target/m68k/cpu.h +++ b/target/m68k/cpu.h @@ -527,6 +527,8 @@ enum m68k_features { M68K_FEATURE_MOVEC, /* Unaligned data accesses (680[2346]0) */ M68K_FEATURE_UNALIGNED_DATA, + /* TRAPcc insn. (680[2346]0, and CPU32) */ + M68K_FEATURE_TRAPCC, }; static inline int m68k_feature(CPUM68KState *env, int feature) diff --git a/linux-user/m68k/cpu_loop.c b/linux-user/m68k/cpu_loop.c index 8e2b79550d..ed366d1645 100644 --- a/linux-user/m68k/cpu_loop.c +++ b/linux-user/m68k/cpu_loop.c @@ -49,6 +49,7 @@ void cpu_loop(CPUM68KState *env) force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPN, env->pc); break; case EXCP_CHK: + case EXCP_TRAPCC: force_sig_fault(TARGET_SIGFPE, TARGET_FPE_INTOVF, env->mmu.ar); break; case EXCP_DIV0: diff --git a/target/m68k/cpu.c b/target/m68k/cpu.c index c7aeb7da9c..5f778773d1 100644 --- a/target/m68k/cpu.c +++ b/target/m68k/cpu.c @@ -162,6 +162,7 @@ static void m68020_cpu_initfn(Object *obj) m68k_set_feature(env, M68K_FEATURE_CHK2); m68k_set_feature(env, M68K_FEATURE_MSP); m68k_set_feature(env, M68K_FEATURE_UNALIGNED_DATA); + m68k_set_feature(env, M68K_FEATURE_TRAPCC); } /* diff --git a/target/m68k/op_helper.c b/target/m68k/op_helper.c index c9ea28bf68..811b8bd117 100644 --- a/target/m68k/op_helper.c +++ b/target/m68k/op_helper.c @@ -395,7 +395,6 @@ static void m68k_interrupt_all(CPUM68KState *env, int is_hw) break; case EXCP_ILLEGAL: - case EXCP_TRAPCC: /* FIXME: addr is not only env->pc */ do_stack_frame(env, &sp, 2, oldsr, env->pc, env->pc); break; @@ -403,6 +402,7 @@ static void m68k_interrupt_all(CPUM68KState *env, int is_hw) case EXCP_CHK: case EXCP_DIV0: case EXCP_TRACE: + case EXCP_TRAPCC: do_stack_frame(env, &sp, 2, oldsr, env->mmu.ar, env->pc); break; diff --git a/target/m68k/translate.c b/target/m68k/translate.c index fc2b6a3085..e5338b50ad 100644 --- a/target/m68k/translate.c +++ b/target/m68k/translate.c @@ -4876,6 +4876,46 @@ DISAS_INSN(trap) gen_exception(s, s->pc, EXCP_TRAP0 + (insn & 0xf)); } +static void do_trapcc(DisasContext *s, DisasCompare *c) +{ + TCGLabel *over = gen_new_label(); + + /* Jump over if !c. */ + update_cc_op(s); + tcg_gen_brcond_i32(tcg_invert_cond(c->tcond), c->v1, c->v2, over); + free_cond(c); + + tcg_gen_movi_i32(QREG_PC, s->pc); + gen_raise_exception_format2(s, EXCP_TRAPCC); + + gen_set_label(over); + s->base.is_jmp = DISAS_NEXT; +} + +DISAS_INSN(trapcc) +{ + DisasCompare c; + + /* Consume and discard the immediate operand. */ + switch (extract32(insn, 0, 3)) { + case 2: /* trapcc.w */ + (void)read_im16(env, s); + break; + case 3: /* trapcc.l */ + (void)read_im32(env, s); + break; + case 4: /* trapcc (no operand) */ + break; + default: + /* Illegal insn */ + disas_undef(env, s, insn); + return; + } + + gen_cc_cond(&c, s, extract32(insn, 8, 4)); + do_trapcc(s, &c); +} + static void gen_load_fcr(DisasContext *s, TCGv res, int reg) { switch (reg) { @@ -6047,6 +6087,7 @@ void register_m68k_insns (CPUM68KState *env) INSN(scc, 50c0, f0f8, CF_ISA_A); /* Scc.B Dx */ INSN(scc, 50c0, f0c0, M68000); /* Scc.B */ INSN(dbcc, 50c8, f0f8, M68000); + INSN(trapcc, 50f8, f0f8, TRAPCC); INSN(tpf, 51f8, fff8, CF_ISA_A); /* Branch instructions. */ From patchwork Thu Dec 2 20:48:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1562989 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=MUb1KEnx; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) 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 bilbo.ozlabs.org (Postfix) with ESMTPS id 4J4p9505p0z9s3q for ; Fri, 3 Dec 2021 07:54:16 +1100 (AEDT) Received: from localhost ([::1]:48972 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mst5p-0001i6-WA for incoming@patchwork.ozlabs.org; Thu, 02 Dec 2021 15:54:14 -0500 Received: from eggs.gnu.org ([209.51.188.92]:44138) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mst0y-00008l-0G for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:12 -0500 Received: from [2607:f8b0:4864:20::435] (port=33705 helo=mail-pf1-x435.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mst0v-0005UC-Rk for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:11 -0500 Received: by mail-pf1-x435.google.com with SMTP id x5so776030pfr.0 for ; Thu, 02 Dec 2021 12:49:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=UY3jRtieYn7ImJypeaHV8rzjXB4D2FU0tmTATHNFJVU=; b=MUb1KEnxkB8SmPYAieAPZrGUxPDZcAuEjbOSjuSGlpGxAztiaknnIlNqUzI22ZVhNk t/RG04zglaP7qFgBS6SrgDZrMfIk93Lfl4ufP6x6lUNR9eWoEv5EAf8HR4F7kEwyGyRB QHnVpArev1iA6m2FXNL57wwStA9zKSIkiJ5eIN4YPOxGRoJ4oko/ldHsLrCXveeB87Wh Hpwe+NsLC5TCqqU/7BMa5NXXQGfLxzzFUnpQNwzpvz5/+HFyo3MDCzhkIGD0g+Hbcfcy sfVPVplbAfhbYx9BxpRriGSJUGBTLx/ujy87i8R5y5HsPJIu7fImbVd+yWVEyqqwbF8f 8cgw== 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=UY3jRtieYn7ImJypeaHV8rzjXB4D2FU0tmTATHNFJVU=; b=lNujfvBD95CKJFRVUqgnonmkqhVR1O49sf6K3ZaR+gAlhZ8aVkyE1QfGhsqrOUVeKH qrtRREJoQH+eDf3PguvNi8N4OiZg5CpO56u4VdGvxvCQdiZywU3pdZVSnOiEuJ8a/23u NFzELNK3CrFb8gl2JN8gK9pViQNzWMICb0r5Y+FRyabvk6weHDkozuEn65AmljBMJ69I UOWMdTUDZrsNOqWm/TJjpWVPEnnsXFe3mmtrmxsOei4z+Hp/zilzI+marzIDzswVEzaj hqt93aVnJazxhcGSRn2+/khewIkC6v++JFTNx8LkP2DjitztMNSOSS6OxmsccKXGB7G1 2XKA== X-Gm-Message-State: AOAM530vU9f37y2bhAvdffeTNdhQPAt4PBFhtV9xGLfENuCwZbJfdgST lQCAG+bqsDGquLR8pbBtN5/y0+avWMzxmQ== X-Google-Smtp-Source: ABdhPJwiMauDmPRPp2vJ2B6cITn9PYpqNNxhZzLJQaFr1870S93iO+qlXFBcg0M4ruygS7KtUIKXSA== X-Received: by 2002:a05:6a00:1945:b0:44c:a955:35ea with SMTP id s5-20020a056a00194500b0044ca95535eamr14702767pfk.85.1638478148683; Thu, 02 Dec 2021 12:49:08 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id pi17sm3721391pjb.34.2021.12.02.12.49.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Dec 2021 12:49:08 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 10/15] target/m68k: Implement TRAPV Date: Thu, 2 Dec 2021 12:48:55 -0800 Message-Id: <20211202204900.50973-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211202204900.50973-1-richard.henderson@linaro.org> References: <20211202204900.50973-1-richard.henderson@linaro.org> MIME-Version: 1.0 X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::435 (failed) Received-SPF: pass client-ip=2607:f8b0:4864:20::435; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x435.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent@vivier.eu Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Richard Henderson --- target/m68k/translate.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/target/m68k/translate.c b/target/m68k/translate.c index e5338b50ad..cfe292c929 100644 --- a/target/m68k/translate.c +++ b/target/m68k/translate.c @@ -4916,6 +4916,14 @@ DISAS_INSN(trapcc) do_trapcc(s, &c); } +DISAS_INSN(trapv) +{ + DisasCompare c; + + gen_cc_cond(&c, s, 9); /* V set */ + do_trapcc(s, &c); +} + static void gen_load_fcr(DisasContext *s, TCGv res, int reg) { switch (reg) { @@ -6079,6 +6087,7 @@ void register_m68k_insns (CPUM68KState *env) BASE(nop, 4e71, ffff); INSN(rtd, 4e74, ffff, RTD); BASE(rts, 4e75, ffff); + INSN(trapv, 4e76, ffff, M68000); INSN(rtr, 4e77, ffff, M68000); BASE(jump, 4e80, ffc0); BASE(jump, 4ec0, ffc0); From patchwork Thu Dec 2 20:48:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1562996 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=S9QhlB1C; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) 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 bilbo.ozlabs.org (Postfix) with ESMTPS id 4J4pFM2ZG1z9sR4 for ; Fri, 3 Dec 2021 07:57:59 +1100 (AEDT) Received: from localhost ([::1]:58934 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mst9R-0008NQ-4x for incoming@patchwork.ozlabs.org; Thu, 02 Dec 2021 15:57:57 -0500 Received: from eggs.gnu.org ([209.51.188.92]:45962) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mst7h-0005mm-5g for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:56:10 -0500 Received: from [2607:f8b0:4864:20::22d] (port=37650 helo=mail-oi1-x22d.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mst7d-0006sT-Vn for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:56:08 -0500 Received: by mail-oi1-x22d.google.com with SMTP id bj13so1638983oib.4 for ; Thu, 02 Dec 2021 12:56:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=yAL09uhbua6dPBItU2s08cVfqP4823JoWkfAH5hZ3a4=; b=S9QhlB1CghhM11YGlVaOzwbprn8BLLdssqHOcLq0xg4UFBrjM0Twgi+LfxZW4j6HZq HOOGZbgQcfTgB4zJddFZmrIcD65tBdRRtzgSZlbq+REZWQpHM6tqvTTuw/QA5HQ2wC1q g/ZKnex4n3IOkY9bqyy/4IXrRibgq4Jm+xw66y44AxMncJFVRuttkPPzh/4Dydgf2EFX VLYR6RuAV1O2G0X7R/yE3CXTAaP0w8g7bnRTBP5P67Kn/tGqYLX+6g1xURBCB0AnmN57 hrrHytsIs9bA0dC4yNxKxiAZLpS2Gc2naY67YZluX8Gp9nTpItX++tzif0IpqmyL/mGg FfwA== 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=yAL09uhbua6dPBItU2s08cVfqP4823JoWkfAH5hZ3a4=; b=i//V6zLiio3R7dXrHHrDeSHYMaXNudaVw1yOsw13zPuJJnr7CesFvYM9H0UXnfbpfD aJ4KHB21dI7cALIU7aGGtOOTsNQlLEsQkVXBmrI+7xD2DL3SgHsusgkP4+dE1MSmT/6h x2eowD4bdkwZ+MdYPh2Xfih1hmg5/vIjMAvua6gg/+fgVwie+ewGa7K8iDtoIQiRH5df NLlYkZMvyjpKtV2RDHqLGRNfxnrHJI9wCDOGpN1uBBRbZF9WCdlf/1SFDv+OSsQrmc4Q hwlKpT7U5CDuh5+GHsnjCSoTJas9+lWpjAEABnnOU1176iJt9dxVtFSZZH1czoQSZ3hS GBaQ== X-Gm-Message-State: AOAM532pE9Xg20MUaPFkhIrFQX095cEIXKbUq/EfUTPPAM/RTLcfXbYV DScm6Te7Rcgbg1mvjPrv6SOJ20ZE/9S6Lg== X-Google-Smtp-Source: ABdhPJyhYsfQtXzxuxwwiG5iZZ2Kt8NNiDqhsEQY/vMBX5KHtCYzKn3aRG+TuocAgHrZMyVmWDkZqQ== X-Received: by 2002:a17:90b:1c87:: with SMTP id oo7mr8411040pjb.159.1638478149391; Thu, 02 Dec 2021 12:49:09 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id pi17sm3721391pjb.34.2021.12.02.12.49.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Dec 2021 12:49:09 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 11/15] target/m68k: Implement FTRAPcc Date: Thu, 2 Dec 2021 12:48:56 -0800 Message-Id: <20211202204900.50973-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211202204900.50973-1-richard.henderson@linaro.org> References: <20211202204900.50973-1-richard.henderson@linaro.org> MIME-Version: 1.0 X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::22d (failed) Received-SPF: pass client-ip=2607:f8b0:4864:20::22d; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x22d.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent@vivier.eu Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Richard Henderson --- target/m68k/translate.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/target/m68k/translate.c b/target/m68k/translate.c index cfe292c929..641f95ff8a 100644 --- a/target/m68k/translate.c +++ b/target/m68k/translate.c @@ -5572,6 +5572,35 @@ DISAS_INSN(fscc) tcg_temp_free(tmp); } +DISAS_INSN(ftrapcc) +{ + DisasCompare c; + uint16_t ext; + int cond; + + ext = read_im16(env, s); + cond = ext & 0x3f; + + /* Consume and discard the immediate operand. */ + switch (extract32(insn, 0, 3)) { + case 2: /* ftrapcc.w */ + (void)read_im16(env, s); + break; + case 3: /* ftrapcc.l */ + (void)read_im32(env, s); + break; + case 4: /* ftrapcc (no operand) */ + break; + default: + /* Illegal insn */ + disas_undef(env, s, insn); + return; + } + + gen_fcc_cond(&c, s, cond); + do_trapcc(s, &c); +} + #if defined(CONFIG_SOFTMMU) DISAS_INSN(frestore) { @@ -6195,6 +6224,7 @@ void register_m68k_insns (CPUM68KState *env) INSN(fbcc, f280, ffc0, CF_FPU); INSN(fpu, f200, ffc0, FPU); INSN(fscc, f240, ffc0, FPU); + INSN(ftrapcc, f278, fff8, FPU); INSN(fbcc, f280, ff80, FPU); #if defined(CONFIG_SOFTMMU) INSN(frestore, f340, ffc0, CF_FPU); From patchwork Thu Dec 2 20:48:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1563001 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=AHZaDECG; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) 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 bilbo.ozlabs.org (Postfix) with ESMTPS id 4J4pK23VCnz9s3q for ; Fri, 3 Dec 2021 08:01:10 +1100 (AEDT) Received: from localhost ([::1]:41624 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mstCW-0007AY-1S for incoming@patchwork.ozlabs.org; Thu, 02 Dec 2021 16:01:08 -0500 Received: from eggs.gnu.org ([209.51.188.92]:44168) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mst0z-00009K-49 for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:13 -0500 Received: from [2607:f8b0:4864:20::42c] (port=43705 helo=mail-pf1-x42c.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mst0x-0005Uy-PA for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:12 -0500 Received: by mail-pf1-x42c.google.com with SMTP id n85so703588pfd.10 for ; Thu, 02 Dec 2021 12:49:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=rTeHp3U3o19QI3ip/iNIsdusFSPguDlUd5JMsIxKTZk=; b=AHZaDECG3zD348NBWSIHCeKf2L9x0XNb8hfpm2KhFwcodXJd6Bblm1YJhC8dhsJynO mbkHW5BPlKdL7lTgOZBiR5PWowF7zaG4MPnV6drUo0CKM77oXnz4R1QvqmH26gqxw7/k maDSiuFyhUQzjh4caler8snmy2dz+afjNVLNwoJz8oVEbQtj6azIxMxOlKQpPZd+GAmH YnCGGPI47vabXWS6FCVaCtYHR9y0rpKF8RanAFTSjQa43aZpJCdjQSkxbedjYycV+33J e683KIyZbrU0Ah5qelugtbcMGj9cOVcOjNrvIeM1avrKYryxMr2Xf5kYgoojl859effU Nyiw== 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=rTeHp3U3o19QI3ip/iNIsdusFSPguDlUd5JMsIxKTZk=; b=G9FjpK9JQ7jYY1OElogsCYkbcCj2iwg0QBjwy8oK9oP302zIgPHXi77oepXT4YusA/ I7ErH0kIxBA5+sKKQyZy5iaPe6M6reCcvP8qQEgeLkqHa1pr8DU7DPhieLkWqAYIm8Is vcKkHD9cnTJSD/mzQt5JruqJvDKW7GcKYNoJ4NvVikgEVnJiTxK0KzvGgbJv7oguLxqd fQqsLEqmIvHZpLYU5SL7gz70DI4jpifY8DOP6oRphBsUuLa+JNV0dBDxm/EA3QvR0ISL 3AV8Y58UZFmSgxVADb95rULg89EyuKdEfGVAOrzcE8P2s7jH1JipS5iWW6hlotDOVwQs syZQ== X-Gm-Message-State: AOAM530Gf5hWRKEvW5VTTDyptNVVt0Qh+IHaS8XnBbOCZ+Icj5MISYY8 h++smZUpShk+4zVXY2LgYybr95tjWDqdrQ== X-Google-Smtp-Source: ABdhPJygwSWW2HvLXka3Ji8h+xkS4UkghBorsMgDTidRQdfKWiHwhndqlewXIfYmQ9uGWUZv9Y/v2A== X-Received: by 2002:a63:7445:: with SMTP id e5mr1247012pgn.504.1638478150005; Thu, 02 Dec 2021 12:49:10 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id pi17sm3721391pjb.34.2021.12.02.12.49.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Dec 2021 12:49:09 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 12/15] target/m68k: Fix stack frame for EXCP_ILLEGAL Date: Thu, 2 Dec 2021 12:48:57 -0800 Message-Id: <20211202204900.50973-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211202204900.50973-1-richard.henderson@linaro.org> References: <20211202204900.50973-1-richard.henderson@linaro.org> MIME-Version: 1.0 X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::42c (failed) Received-SPF: pass client-ip=2607:f8b0:4864:20::42c; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42c.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent@vivier.eu Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" According to the M68040 Users Manual, section 8.4.3, Four word stack frame (format 0), includes Illegal Instruction. Use the correct frame format, which does not use the ADDR argument. Signed-off-by: Richard Henderson --- target/m68k/op_helper.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/target/m68k/op_helper.c b/target/m68k/op_helper.c index 811b8bd117..10d459f704 100644 --- a/target/m68k/op_helper.c +++ b/target/m68k/op_helper.c @@ -395,8 +395,7 @@ static void m68k_interrupt_all(CPUM68KState *env, int is_hw) break; case EXCP_ILLEGAL: - /* FIXME: addr is not only env->pc */ - do_stack_frame(env, &sp, 2, oldsr, env->pc, env->pc); + do_stack_frame(env, &sp, 0, oldsr, 0, env->pc); break; case EXCP_CHK: From patchwork Thu Dec 2 20:48:58 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1562999 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=B46Qilzq; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) 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 bilbo.ozlabs.org (Postfix) with ESMTPS id 4J4pGH1QcYz9s3q for ; Fri, 3 Dec 2021 07:58:47 +1100 (AEDT) Received: from localhost ([::1]:35130 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mstAC-0002sI-U9 for incoming@patchwork.ozlabs.org; Thu, 02 Dec 2021 15:58:44 -0500 Received: from eggs.gnu.org ([209.51.188.92]:44192) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mst0z-00009L-Nn for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:14 -0500 Received: from [2607:f8b0:4864:20::436] (port=34799 helo=mail-pf1-x436.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mst0x-0005Vy-S2 for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:13 -0500 Received: by mail-pf1-x436.google.com with SMTP id r130so750088pfc.1 for ; Thu, 02 Dec 2021 12:49:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=1iKqCq5gnBEuV7yETH5boxm9MvdrrB2fADfIX32vfoE=; b=B46QilzquCUJMPkOEwVfv6LN32acyFT987HJOEAb4tmKeVNbrORiB2WLtZ1NKoi4eb duf/B3C9lvrZ8GBKJLuYmDnglvSGkm2Jzqvad7Y2mN7P9OME5MLrBJZd7157xl4mS6TD w9eEwYTZl8VXQ0xdHSp/Uc1iBVUtfNy1a/NBGejt2me1MloNNerom+EoY4tHQreXAqaq GfeDrpnQFvlUySKDQDSQpVB99Zu+GfClBiKN1rdeAZ/IjPI2jPvdqQUWpm7c3CozPQW2 hKxUhPoPKyF1TjFRfpVDtiZiP0CygtGLNz9T8b0RLuyb0Z29M2fDzbont4A1/62+pb27 99tA== 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=1iKqCq5gnBEuV7yETH5boxm9MvdrrB2fADfIX32vfoE=; b=QnpTatsKR8utID+H2pSVMTgPniTUh4D5tXyis5grxviGA7egx+3oR50puseDs7xTE7 onDZ6kEPztW7MMHKL0JVV6+wZh9s6vRL9AhXH2Bz1QwMdDpjmsf0lp1J1w0snJoUSOAY fry7g62Jnxsly0d84EjGy9DvBIcC9NcHfqciFQHD8r0GW2OBBeUFrydXe38njeZwd/Hg yxd5aN8yPJf0pfTIQHI+9+60qkFrcfU2k5FoviDQ6QYASES4hvwYaspKmr435/70IGU1 Zeq6hijHTqaP0VoNCBHMKn96Segj0l1cUfxdaSSnbZ22MdNpUfVwdxJu0tVOdx+1gbLT ecOA== X-Gm-Message-State: AOAM533o/DJBxf641xP34AIc4wW3FAM9IokAC2HV6D6liOw5U26noVPT UY1/+t24hh8U4B49Xh+3nCet3x1bSJXNFA== X-Google-Smtp-Source: ABdhPJxAeoBp3xl9mSxXIlo8SwJJoscjSWSihl2nNxi574XD4n6ljLuSz0R/UcQnftK01Qrop6+l0w== X-Received: by 2002:aa7:8e52:0:b0:4a1:5820:d9cc with SMTP id d18-20020aa78e52000000b004a15820d9ccmr15118425pfr.49.1638478150607; Thu, 02 Dec 2021 12:49:10 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id pi17sm3721391pjb.34.2021.12.02.12.49.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Dec 2021 12:49:10 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 13/15] tests/tcg/m68k: Add trap.c Date: Thu, 2 Dec 2021 12:48:58 -0800 Message-Id: <20211202204900.50973-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211202204900.50973-1-richard.henderson@linaro.org> References: <20211202204900.50973-1-richard.henderson@linaro.org> MIME-Version: 1.0 X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::436 (failed) Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent@vivier.eu Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Test various trap instructions: chk, div, trap, trapv, trapcc, ftrapcc, and the signals and addresses that we expect from them. Signed-off-by: Richard Henderson --- tests/tcg/m68k/trap.c | 129 +++++++++++++++++++++++++++++++++ tests/tcg/m68k/Makefile.target | 3 + 2 files changed, 132 insertions(+) create mode 100644 tests/tcg/m68k/trap.c diff --git a/tests/tcg/m68k/trap.c b/tests/tcg/m68k/trap.c new file mode 100644 index 0000000000..08ab56b2ca --- /dev/null +++ b/tests/tcg/m68k/trap.c @@ -0,0 +1,129 @@ +/* + * Test m68k trap addresses. + */ + +#define _GNU_SOURCE 1 +#include +#include +#include + +static int expect_sig; +static int expect_si_code; +static void *expect_si_addr; +static greg_t expect_mc_pc; +static volatile int got_signal; + +static void sig_handler(int sig, siginfo_t *si, void *puc) +{ + ucontext_t *uc = puc; + mcontext_t *mc = &uc->uc_mcontext; + + assert(sig == expect_sig); + assert(si->si_code == expect_si_code); + assert(si->si_addr == expect_si_addr); + assert(mc->gregs[R_PC] == expect_mc_pc); + + got_signal = 1; +} + +#define FMT_INS [ad] "a"(&expect_si_addr), [pc] "a"(&expect_mc_pc) +#define FMT0_STR(S) \ + "move.l #1f, (%[ad])\n\tmove.l #1f, (%[pc])\n" S "\n1:\n" +#define FMT2_STR(S) \ + "move.l #0f, (%[ad])\n\tmove.l #1f, (%[pc])\n" S "\n1:\n" + +#define CHECK_SIG do { assert(got_signal); got_signal = 0; } while (0) + +int main(int argc, char **argv) +{ + struct sigaction act = { + .sa_sigaction = sig_handler, + .sa_flags = SA_SIGINFO + }; + int t0, t1; + + sigaction(SIGILL, &act, NULL); + sigaction(SIGTRAP, &act, NULL); + sigaction(SIGFPE, &act, NULL); + + expect_sig = SIGFPE; + expect_si_code = FPE_INTOVF; + asm volatile(FMT2_STR("0:\tchk %0, %1") : : "d"(0), "d"(-1), FMT_INS); + CHECK_SIG; + +#if 0 + /* FIXME: chk2 not correctly translated. */ + int bounds[2] = { 0, 1 }; + asm volatile(FMT2_STR("0:\tchk2.l %0, %1") + : : "m"(bounds), "d"(2), FMT_INS); + CHECK_SIG; +#endif + + asm volatile(FMT2_STR("cmp.l %0, %1\n0:\ttrapv") + : : "d"(INT_MIN), "d"(1), FMT_INS); + CHECK_SIG; + + asm volatile(FMT2_STR("cmp.l %0, %0\n0:\ttrapeq") + : : "d"(0), FMT_INS); + CHECK_SIG; + + asm volatile(FMT2_STR("cmp.l %0, %0\n0:\ttrapeq.w #0x1234") + : : "d"(0), FMT_INS); + CHECK_SIG; + + asm volatile(FMT2_STR("cmp.l %0, %0\n0:\ttrapeq.l #0x12345678") + : : "d"(0), FMT_INS); + CHECK_SIG; + + asm volatile(FMT2_STR("fcmp.x %0, %0\n0:\tftrapeq") + : : "f"(0.0L), FMT_INS); + CHECK_SIG; + + expect_si_code = FPE_INTDIV; + + asm volatile(FMT2_STR("0:\tdivs.w %1, %0") + : "=d"(t0) : "d"(0), "0"(1), FMT_INS); + CHECK_SIG; + + asm volatile(FMT2_STR("0:\tdivsl.l %2, %1:%0") + : "=d"(t0), "=d"(t1) : "d"(0), "0"(1), FMT_INS); + CHECK_SIG; + + expect_sig = SIGILL; + expect_si_code = ILL_ILLOPN; + asm volatile(FMT0_STR("trap #1") : : FMT_INS); + CHECK_SIG; + asm volatile(FMT0_STR("trap #2") : : FMT_INS); + CHECK_SIG; + asm volatile(FMT0_STR("trap #3") : : FMT_INS); + CHECK_SIG; + asm volatile(FMT0_STR("trap #4") : : FMT_INS); + CHECK_SIG; + asm volatile(FMT0_STR("trap #5") : : FMT_INS); + CHECK_SIG; + asm volatile(FMT0_STR("trap #6") : : FMT_INS); + CHECK_SIG; + asm volatile(FMT0_STR("trap #7") : : FMT_INS); + CHECK_SIG; + asm volatile(FMT0_STR("trap #8") : : FMT_INS); + CHECK_SIG; + asm volatile(FMT0_STR("trap #9") : : FMT_INS); + CHECK_SIG; + asm volatile(FMT0_STR("trap #10") : : FMT_INS); + CHECK_SIG; + asm volatile(FMT0_STR("trap #11") : : FMT_INS); + CHECK_SIG; + asm volatile(FMT0_STR("trap #12") : : FMT_INS); + CHECK_SIG; + asm volatile(FMT0_STR("trap #13") : : FMT_INS); + CHECK_SIG; + asm volatile(FMT0_STR("trap #14") : : FMT_INS); + CHECK_SIG; + + expect_sig = SIGTRAP; + expect_si_code = TRAP_BRKPT; + asm volatile(FMT0_STR("trap #15") : : FMT_INS); + CHECK_SIG; + + return 0; +} diff --git a/tests/tcg/m68k/Makefile.target b/tests/tcg/m68k/Makefile.target index 62f109eef4..1163c7ef03 100644 --- a/tests/tcg/m68k/Makefile.target +++ b/tests/tcg/m68k/Makefile.target @@ -3,5 +3,8 @@ # m68k specific tweaks - specifically masking out broken tests # +VPATH += $(SRC_PATH)/tests/tcg/m68k +TESTS += trap + # On m68k Linux supports 4k and 8k pages (but 8k is currently broken) EXTRA_RUNS+=run-test-mmap-4096 # run-test-mmap-8192 From patchwork Thu Dec 2 20:48:59 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1562992 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=UjR0MnPI; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) 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 bilbo.ozlabs.org (Postfix) with ESMTPS id 4J4pCx5X79z9s3q for ; Fri, 3 Dec 2021 07:56:45 +1100 (AEDT) Received: from localhost ([::1]:55330 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mst8F-00062G-Jj for incoming@patchwork.ozlabs.org; Thu, 02 Dec 2021 15:56:43 -0500 Received: from eggs.gnu.org ([209.51.188.92]:44200) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mst10-00009i-14 for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:14 -0500 Received: from [2607:f8b0:4864:20::1036] (port=53869 helo=mail-pj1-x1036.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mst0y-0005W3-Gq for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:13 -0500 Received: by mail-pj1-x1036.google.com with SMTP id iq11so668075pjb.3 for ; Thu, 02 Dec 2021 12:49:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=TanATbqLIZD4sdWdXDqq/ZctU6NkzIRRa3wOfm+DVqE=; b=UjR0MnPIyaXR7mpSxqL9bfkeSEu2iIRdoKKXmieCQljG6HZEhIfvVtNYsmcjlNHqJg MeuuGluvYl4244wsBc9kdrguVGg+06GoFrzEL1ez7ESWPb45qG2rlIKGxT6lULWnvtMD gMCFT1ToORkzJU8t03qAJ8WIm4sAxDcPkyFvQJ+yfQlGHeHBbfbeDp9RlGicAwVDySzH wq8D0fuwpkqAHR8Xouwmvz6hoX3qDb/GnAh6oJ6gY9xbENaSq5cE9MaMTk59nskNQYkP pXLAgipu18bCL2qquev+WSc9a7WeEuG651RsE4Hur+cJM9DQY8glu0rq+t6Es0JumqQE OKrQ== 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=TanATbqLIZD4sdWdXDqq/ZctU6NkzIRRa3wOfm+DVqE=; b=E6cRrJ5OFUZfHiG0dn10iXPbXCnDoN/Qyx34gVXch6yfmrVAAurQxuuppfEH4mOBCT 9LTDv+ZBYp9xgUI0s5/yHl07SU09JpUQushiZJ3oBWLLBewvrw+BkXLSlXyxLMP2JQTP 4rr5at4eqvsCPvUdWRCyQQfNMh+ffapjfaaJOV0Zf6DBrEMsrKKQ0Hdt9RI5Q+rBvUDd ZbGpnka73zhziBsTITRUvjt2zJmALOIdZtlTFZFY/f1w/GLhoi1nXSLAqQNVfwJ9jBv3 o2si8QSEagElxlHFu4qHJR0tWDHN2CUuTsI7bTfa78ANSqcaocB21WhKbUX7OHGtpGnF 0UHw== X-Gm-Message-State: AOAM531bPe0opreqWiIbxMsJT3TsOeCbWHE4NPhx9Q12rDJZlN5Z+UPP qMLlTmcbPbuok0bp5MYnmkvDz/lTqSBtKg== X-Google-Smtp-Source: ABdhPJy0O3iIqpWJWpqpBFpbZxBCJNOEzBd9MCnjYXmgouRqAWdAawwJlUjv2oovfXeSq1tNeIIong== X-Received: by 2002:a17:90b:4b4d:: with SMTP id mi13mr8041131pjb.192.1638478151247; Thu, 02 Dec 2021 12:49:11 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id pi17sm3721391pjb.34.2021.12.02.12.49.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Dec 2021 12:49:10 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 14/15] linux-user/strace: Fix print_syscall_err Date: Thu, 2 Dec 2021 12:48:59 -0800 Message-Id: <20211202204900.50973-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211202204900.50973-1-richard.henderson@linaro.org> References: <20211202204900.50973-1-richard.henderson@linaro.org> MIME-Version: 1.0 X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::1036 (failed) Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent@vivier.eu Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Errors are not all negative numbers, but only the top 4k. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daudé --- linux-user/strace.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/linux-user/strace.c b/linux-user/strace.c index 2cdbf030ba..f235118fb6 100644 --- a/linux-user/strace.c +++ b/linux-user/strace.c @@ -684,12 +684,12 @@ print_ipc(void *cpu_env, const struct syscallname *name, */ static bool -print_syscall_err(abi_long ret) +print_syscall_err(abi_ulong ret) { const char *errstr; qemu_log(" = "); - if (ret < 0) { + if (ret > -4096) { errstr = target_strerror(-ret); if (errstr) { qemu_log("-1 errno=%d (%s)", (int)-ret, errstr); From patchwork Thu Dec 2 20:49:00 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 1562987 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=IppJY0cF; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) 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 bilbo.ozlabs.org (Postfix) with ESMTPS id 4J4p6r3Qjsz9s3q for ; Fri, 3 Dec 2021 07:52:20 +1100 (AEDT) Received: from localhost ([::1]:42966 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mst3y-0006BG-1h for incoming@patchwork.ozlabs.org; Thu, 02 Dec 2021 15:52:18 -0500 Received: from eggs.gnu.org ([209.51.188.92]:44206) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mst10-00009j-CO for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:14 -0500 Received: from [2607:f8b0:4864:20::1036] (port=33584 helo=mail-pj1-x1036.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mst0z-0005WJ-4y for qemu-devel@nongnu.org; Thu, 02 Dec 2021 15:49:14 -0500 Received: by mail-pj1-x1036.google.com with SMTP id w33-20020a17090a6ba400b001a722a06212so3817973pjj.0 for ; Thu, 02 Dec 2021 12:49:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=z9CNoFSrWjAjukly+g7lYy0zjZhRUxJXZZvZuVjkY44=; b=IppJY0cFQhtprV+hVi3zZSq6ohWp70dtHV0hvF81kuzy7RhM0e2LkbQ9BxT24q25yi aTuUs8UMuoRHDVuzPFUGGsvJGfh36Vj6csvHq+5YEBrIcTqRDhlF/U5BZHUL5wf7jmlg qvwVAhFV4EOnZzsC0wcAceZgqUnxxZ74O8ogTFhcK/ieoyFnEtEgX1JPc7vYHYTOHPB+ lX9L2pxGM9PcnUzZhfL2LfShiiOZlcVYy4L8fHNp35h0/LIDr3Ce7sr6+8H3Y4BbDmMU IaXyQFVhjaNPHzfsGpJ7Jkm7AVd68KUsp49GKpfTWmSRzb9ioNif6dygQv+E/OiDf1yq Lwnw== 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=z9CNoFSrWjAjukly+g7lYy0zjZhRUxJXZZvZuVjkY44=; b=0IlpIW7/6ZgHIWFqgzG0RtdyuSvjkgAHYw0EV2wv9UkrkdAP/wcubx9rlAUGhsH1RJ srPN0MfZmTM/HkbQhZvJq6JB3UD4AA9d4qMWYl/FUkOO94lLWpZzU6wWwkoYXqipcnSI FQXN/BS4GbxUjmD/s59pFU2bJAst9RGu/kl6oEq+zc6ESYoZd/JCXztbbvmoJuABrX3b clklsPw6lgiHDH3gxq9JQEeb3CR6trsPCQMqYYfms9BtYN+8ixqIw4StREmjU0Rag7DI 86SYXWLiGhLbj0+rAX/BNFUxe//cZAZ8hkpam61MuxncMGH5MvtUCy/ITLNCGPi2tQSF YC+Q== X-Gm-Message-State: AOAM531Et6krQjGVoDhyZMerOUP69GXO5y0zkXmz42RgQww0LYB7lVOx 9vDfpuLTk8nTuZhS4ZD+euUWoDZNr6qBPg== X-Google-Smtp-Source: ABdhPJz0LDIG09dN/m3XoDD68Rfx6wNQFkd8fhtZpedihfQkmO6doeDCey2UvhlJkG+Rx+cQYQMGvw== X-Received: by 2002:a17:90b:f81:: with SMTP id ft1mr8716036pjb.136.1638478152052; Thu, 02 Dec 2021 12:49:12 -0800 (PST) Received: from localhost.localdomain (174-21-75-75.tukw.qwest.net. [174.21.75.75]) by smtp.gmail.com with ESMTPSA id pi17sm3721391pjb.34.2021.12.02.12.49.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Dec 2021 12:49:11 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 15/15] linux-user/strace: Adjust get_thread_area for m68k Date: Thu, 2 Dec 2021 12:49:00 -0800 Message-Id: <20211202204900.50973-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211202204900.50973-1-richard.henderson@linaro.org> References: <20211202204900.50973-1-richard.henderson@linaro.org> MIME-Version: 1.0 X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::1036 (failed) Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent@vivier.eu Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Unlike i386, m68k get_thread_area has no arguments. Signed-off-by: Richard Henderson --- linux-user/strace.list | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/linux-user/strace.list b/linux-user/strace.list index 278596acd1..72e17b1acf 100644 --- a/linux-user/strace.list +++ b/linux-user/strace.list @@ -384,8 +384,13 @@ { TARGET_NR_getsockopt, "getsockopt" , NULL, NULL, NULL }, #endif #ifdef TARGET_NR_get_thread_area +#if defined(TARGET_I386) && defined(TARGET_ABI32) { TARGET_NR_get_thread_area, "get_thread_area", "%s(0x"TARGET_ABI_FMT_lx")", NULL, NULL }, +#elif defined(TARGET_M68K) +{ TARGET_NR_get_thread_area, "get_thread_area" , "%s()", + NULL, print_syscall_ret_addr }, +#endif #endif #ifdef TARGET_NR_gettid { TARGET_NR_gettid, "gettid" , "%s()", NULL, NULL },