From nobody Mon Feb 9 14:27:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1654171430343965.4058611168468; Thu, 2 Jun 2022 05:03:50 -0700 (PDT) Received: from localhost ([::1]:33266 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nwjYK-0003GC-N9 for importer@patchew.org; Thu, 02 Jun 2022 08:03:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46822) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTQ-0000RU-GJ for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:44 -0400 Received: from mout.kundenserver.de ([212.227.17.13]:37629) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTO-0001D4-BF for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:43 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1M7JrG-1nrFpL3B8O-007ja8; Thu, 02 Jun 2022 13:58:39 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Laurent Vivier , Richard Henderson Subject: [PULL 01/19] target/m68k: Clear mach in m68k_cpu_disas_set_info Date: Thu, 2 Jun 2022 13:58:19 +0200 Message-Id: <20220602115837.2013918-2-laurent@vivier.eu> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220602115837.2013918-1-laurent@vivier.eu> References: <20220602115837.2013918-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:9YYpO0UbLK2qUfZGGPz8V4GgQwOo1/v8LOsqyH8cqeaa1MzHvS/ WZ1kIbBrmZJnqmdhluSQ5fF9H+RySHao9wAxqx9k0i/WegCUDVlANvVJLwCS3foRmVijiOT fgX1LZH30lrk1I7iYx16kzlEvE6f14j9pdcNmkyXmUUEu9gLA8PqGz8M9xbpQZAhrVVPDn3 ceBi3DmTRxXhyOh5k5Xyg== X-UI-Out-Filterresults: notjunk:1;V03:K0:mgufHukKBHQ=:H1SGxwLPYKSj2NwZgTRSYV ZCFsoIZdRMfk6DjgmQQ+YjXU0OF5PAfXZgyhStJeYnxR7Q6rbGrLQivgAY4tsVb86r0DZeFIJ AhTlxVm/gGPlSyBBBBEpLEUn6yW7dQRghtFbuOR5cDtRO3XLxyjEWcs2XwHQb8722+GulkcX9 cDFy91yGQ+N9GxsKozOaw6XYmh3twDJbsSaFWEUFbyPBxDZLUloKHgapqv6rQH1FNt754mCl0 /1rkzu5BnjgtVJgt1vuV8cXUy4gWu3V5cxmZSknAng5klq2ZT4QlFkoj6GUxeFHx/LMomzPzb /2VfO03inRr2jmf+9kspv8vnT8Uj1i28j7m4CE44Z/RsFXgnZhpRAcUn23NRL6wwQgy2kava3 kXPMjFvtPee8T+zNjSW6lPFfbwczX8nzXEWEBC/AmxYu3x4t+tx0GkvWlPAGJnYwYfPweymzO rNqRB4vB9jCTNp4ftgz0d6o0IiREv6NHuv739M7YxNzPLoEAodfnOlNjch36PXwXaYtOif4ru V6/LT5RrNd5VlxuSRxUY2yHBE5r9bu9uJOoKNYUDOb6jcdeiZfjAN5Y4g1KCMBe6IVzbDOgas b7m4xeEfBB/iWWVMwqNsWysDZoMyA5PIfmBiGA9++Cl9T01V13wRya84N8n40tgiFmYQc3Xfz N0ofX/esvZG773VFeVWFoPymo5OtjgidYdjSX0ySkwT76hS3Ofhzj9vdsJbCdm9cqqnwY3PvK 6u0IOMqTHZbg0B8iO87/0/kOZOw5rJex4cf65w== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: none client-ip=212.227.17.13; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1654171431608100001 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Zero selects all cpu features in disas/m68k.c, which is really what we want -- not limited to 68040. Signed-off-by: Richard Henderson Reviewed-by: Laurent Vivier Message-Id: <20220430170225.326447-2-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- target/m68k/cpu.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/target/m68k/cpu.c b/target/m68k/cpu.c index c7aeb7da9c42..567106792377 100644 --- a/target/m68k/cpu.c +++ b/target/m68k/cpu.c @@ -75,12 +75,8 @@ static void m68k_cpu_reset(DeviceState *dev) =20 static void m68k_cpu_disas_set_info(CPUState *s, disassemble_info *info) { - M68kCPU *cpu =3D M68K_CPU(s); - CPUM68KState *env =3D &cpu->env; info->print_insn =3D print_insn_m68k; - if (m68k_feature(env, M68K_FEATURE_M68000)) { - info->mach =3D bfd_mach_m68040; - } + info->mach =3D 0; } =20 /* CPU models */ --=20 2.36.1 From nobody Mon Feb 9 14:27:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1654171674152842.0545695192252; Thu, 2 Jun 2022 05:07:54 -0700 (PDT) Received: from localhost ([::1]:37576 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nwjcG-0006fk-5l for importer@patchew.org; Thu, 02 Jun 2022 08:07:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46840) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTR-0000Sp-4z for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:45 -0400 Received: from mout.kundenserver.de ([212.227.17.10]:40993) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTO-0001D6-Bj for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:44 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MEV7U-1nzTYI0gVG-00FxJC; Thu, 02 Jun 2022 13:58:40 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Laurent Vivier , Richard Henderson Subject: [PULL 02/19] target/m68k: Enable halt insn for 68060 Date: Thu, 2 Jun 2022 13:58:20 +0200 Message-Id: <20220602115837.2013918-3-laurent@vivier.eu> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220602115837.2013918-1-laurent@vivier.eu> References: <20220602115837.2013918-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:WE+vm4POpxuT/AcqBQKdjScVPfqJyL364Er30eYxC4Qpp7IR1CA Rvy07CYmmu/y9AscIw+u4e+d/2LIqRIkQuS+6eiovgH6gp/C000/Ebu5WA8ZaUfBNNunoNl lxsA3JFpe0qfnNPFMGeX5zYBqGmRbWk5zUj5fRndH586b3q44jVRWtMm7QgjaZVR6gZb2Ph WBbYiDGs9fJwtDsfIOf0Q== X-UI-Out-Filterresults: notjunk:1;V03:K0:ZjoRdlo9Ows=:rWADOVKFsyfZL2DR+/zrVf FzS1DSOXwsnrPz7hMRmjiFt5kxMKDgKFL28zoii8fL9hlZ+MfMy3J0spY3MPm1fyLfy58aYjf V+Il55MqC4Y2kd5pNKVuwq9k1i+WJIgtrxFIChZAaAP61Hi+2fvwHx04pRJ2MVR44osPkvbgP ILq/QBwWoWG95RwvK86u5DFaUbwPpPqN0/f3nKad/4oxW1lIyV1zHcttTlQzpztz2j7Rqcqn2 sJWtZi+afK0bigvUSe54MjhgTNYwx3OuRstrbRAdbJ6TJgzsukEm1Ma+V0DF4LPmejWN2x3On H6z3vDcamPqn0ibJ8sUAh8Z5Af4Y+2et4ggPhvmeWcGb/xIid0bwDbXGFCJXpYhA5C/T/9D2H anwW5jenZ7ISWIU7ixODizruXdbDsj0dk7TFhAzygCt7qL6nAQdwUr3hZ0TF64AgRi97a5dVv r7V4Li5fAE88INBYQsNUPXwncbUUz00IVCXkloJGE43hbn7apPHUh7VUUhjAXeUtRds/BfbNY XFSaxRB7SUp0SczwTWMgHwd/sdPP1r91NXthz9u6QzuOWF34TLiPX6EfWeuyI0PjzjVQ+KnXm TYrWa9uG7BCo6tJsR8sXamGEXHz4VRi8TEuS1I553ct9R/KXdPpwGcMytZEGAqGe9+cL7P5gU bQ6gbgO0ih9C3oTduov/GTAu3gK/Xveo+ZleTWvI8XR4853MbV/mfJKzLDpNR+b3g+BSokUc/ p85sbqSfLn6kmkXLDgbUNJY9yM6LN7KwHKlCgQ== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: none client-ip=212.227.17.10; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1654171676282100001 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: Laurent Vivier Message-Id: <20220430170225.326447-3-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- target/m68k/translate.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/m68k/translate.c b/target/m68k/translate.c index 4026572ed83a..e4efd988d2db 100644 --- a/target/m68k/translate.c +++ b/target/m68k/translate.c @@ -6003,6 +6003,7 @@ void register_m68k_insns (CPUM68KState *env) INSN(tas, 4ac0, ffc0, M68000); #if defined(CONFIG_SOFTMMU) INSN(halt, 4ac8, ffff, CF_ISA_A); + INSN(halt, 4ac8, ffff, M68060); #endif INSN(pulse, 4acc, ffff, CF_ISA_A); BASE(illegal, 4afc, ffff); --=20 2.36.1 From nobody Mon Feb 9 14:27:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16541719843301008.6280398818301; Thu, 2 Jun 2022 05:13:04 -0700 (PDT) Received: from localhost ([::1]:45812 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nwjhH-0003vZ-5z for importer@patchew.org; Thu, 02 Jun 2022 08:13:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46862) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTS-0000Uf-0W for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:46 -0400 Received: from mout.kundenserver.de ([217.72.192.75]:52839) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTQ-0001DC-6z for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:45 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MacWq-1nLl1u2Qwc-00c8yo; Thu, 02 Jun 2022 13:58:40 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Laurent Vivier , Richard Henderson Subject: [PULL 03/19] target/m68k: Raise the TRAPn exception with the correct pc Date: Thu, 2 Jun 2022 13:58:21 +0200 Message-Id: <20220602115837.2013918-4-laurent@vivier.eu> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220602115837.2013918-1-laurent@vivier.eu> References: <20220602115837.2013918-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:ltkQRhIAjDRTaKjTXT+IRcKvQIyZQsLXbUR9bDbhZ79QlzA6Q4m gB0AQaMf/3s0NKG/VvSD6eANX2L/uUX+nvGLfPSfMQCOL4veC0hFuDi1buNZtS/Yz3vpI17 u+YtGWIthZgFUkQzC1oorZRbXUkjj67P1B/0Pb2cpKd20IpwWRpgp+buOVk2j9snmb1OFhN 0k3Gt9dVFf1evam+NG8pg== X-UI-Out-Filterresults: notjunk:1;V03:K0:rajuMxlQMPg=:COhWzAfA/M6RrO2jQH0iqv 4jfxgAeixx48fK2tQ+hnyuLJQ34+AfafOT7LDYbk3Wlk2xKcgDVYckbHuJ/Xs3mmbNbfJ6HRK IHg+93U8VsVuD9MTCDXErkDseb+lnOIjMApBP96NOFRvIvxg2T8WqNhj34LofaYSUSIAqNqBM jt8IjCQmVY/+U19kieBAaou0IGJN5OB6fsEwnmDNXouiuQHcXBIFw6IuggwcYh63vA3J+SdHw HHMzxB9VfX3nLFYAFXjv31g5WrElk2Zc/jwMFxD0zxh1Jp84ABrR7rAwUVaGCuyasNYPasYMa vPLrOkVvrNtXkdi3WWT+4LNqfzkZi1CyzvYV5rf520n4p4cuWoaiphe9ic1Avly4mLSpiBtQH UQgpiQK11H+QxpB1uyiIfj3tmqG3BBwLF/Y6hdqFtigl4ckiFuLn+PGKpsnwYID4PotOAka8K aHr1qGqk8u1wQbLZoztl+i0HZkILDlGAobZGaDtuNYIaFZI3Gek2hJUrGbUG2U4HQWwHciH1P DFjm6OC+m2pgiJWhMtefTnGo/ucJBYvEHu8cFYR1V9TSZwdCd0q0vZ1N5CXg/aw5n1vztDF3s KdRJJTlEoOrWxggBvLPHA2emiciMqT8XYQG8UIRrl+Y0ODccTunCEYX/npWZToEGNon92sVeE 9+CbvqLkfEFuxIz2jVWqbDrscSvg5SN1daFr3mHQko+o9IfLJf5H2f3nqxWyRBA+CkEOthFxW EqzPVkyV7LAp4Q7W+2PpGjXQRv2/bh3O3ytfjQ== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: none client-ip=217.72.192.75; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1654171985480100001 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Rather than adjust the PC in all of the consumers, raise the exception with the correct PC in the first place. Reviewed-by: Laurent Vivier Signed-off-by: Richard Henderson Message-Id: <20220602013401.303699-2-richard.henderson@linaro.org> Signed-off-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 d1bf8548b747..56417f7401dd 100644 --- a/linux-user/m68k/cpu_loop.c +++ b/linux-user/m68k/cpu_loop.c @@ -56,7 +56,6 @@ void cpu_loop(CPUM68KState *env) { abi_long ret; n =3D env->dregs[0]; - env->pc +=3D 2; ret =3D do_syscall(env, n, env->dregs[1], diff --git a/target/m68k/op_helper.c b/target/m68k/op_helper.c index 8decc612409c..d30f988ae089 100644 --- a/target/m68k/op_helper.c +++ b/target/m68k/op_helper.c @@ -217,11 +217,6 @@ static void cf_interrupt_all(CPUM68KState *env, int is= _hw) cpu_loop_exit(cs); return; } - if (cs->exception_index >=3D EXCP_TRAP0 - && cs->exception_index <=3D EXCP_TRAP15) { - /* Move the PC after the trap instruction. */ - retaddr +=3D 2; - } } =20 vector =3D cs->exception_index << 2; @@ -304,10 +299,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 +=3D 2; - break; } } =20 diff --git a/target/m68k/translate.c b/target/m68k/translate.c index e4efd988d2db..22e5379d3c64 100644 --- a/target/m68k/translate.c +++ b/target/m68k/translate.c @@ -4860,7 +4860,7 @@ DISAS_INSN(wdebug) =20 DISAS_INSN(trap) { - gen_exception(s, s->base.pc_next, EXCP_TRAP0 + (insn & 0xf)); + gen_exception(s, s->pc, EXCP_TRAP0 + (insn & 0xf)); } =20 static void gen_load_fcr(DisasContext *s, TCGv res, int reg) --=20 2.36.1 From nobody Mon Feb 9 14:27:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1654171785432957.2685914667466; Thu, 2 Jun 2022 05:09:45 -0700 (PDT) Received: from localhost ([::1]:41804 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nwje4-00018p-AS for importer@patchew.org; Thu, 02 Jun 2022 08:09:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46916) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTT-0000Yf-EZ for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:47 -0400 Received: from mout.kundenserver.de ([217.72.192.73]:44991) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTR-0001Dy-OX for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:47 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1Mk0BK-1nTyDx0Jgm-00kMAq; Thu, 02 Jun 2022 13:58:41 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Laurent Vivier , Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 04/19] target/m68k: Switch over exception type in m68k_interrupt_all Date: Thu, 2 Jun 2022 13:58:22 +0200 Message-Id: <20220602115837.2013918-5-laurent@vivier.eu> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220602115837.2013918-1-laurent@vivier.eu> References: <20220602115837.2013918-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:3yy/6cRXLahJTt3MX413aSaYxSs4uxAnqC7280jofzISyv8LfxY JkJzon5lj5U7e21UtFV6Iv7NsQcJcQZBDOZcMCA0NRWaxZOeTyz4bpUOZw4zXPIn5KVmlXu vEmlj8TOa5HbGyEyOZZITK+zcJm8XqEK4o2JUBCJVb9Ek4NzjIOsr2lwS20anu14NNGWtKl vSzDfccZw+JPQGlhYtpcA== X-UI-Out-Filterresults: notjunk:1;V03:K0:tnIFgJhjMcw=:enrsHJTck8WR1NsvOqhQDV AL8QzDXCpPiWPZQhAYWLR70bjBXKfogyMRt6+KUqAYhI9JS+4lp45BLhe7ybLFU3FMOp057Xk pCr2xK1SHmYOQXvUYe0Uxkxf7j7a4rzF8iXACpPSrK0svtDiWOXVMW6Dt/Q99EQunGNurGCVz AqC8XyMT1KU6KzYRuRrv6lPCG/wbO/OrDLZtWZvL09p31OUTyN3ndUIOePvY7w9f13AMuNWqb /swPXCzndP+PrX3gwLUQp8lMfJbFI0d+GqzEgtka87Ga1WM3wfPzlyoKduCq+sMTk7VKVK1cR 2iJku8ETamL5L1K0t3SCJ8h/ZuXrgloemd93fKWCSJsOJAZV5ISTJUmWKOCoc9rE0BC7hDYBn drtyaTEPtGIUaTqK6mvIK0NkDWqwiN3zQkk5cVfybO1Sd96xNN1kh5qfVxHNPWCbheuGFd57U pPgqcG8UmNJNKqJOTtytHda2Aw7UC4qrv+zNtCNHn+Q+m1A0d76tJHFpH67sdjaVTX4SLAIPg w6ntxmIEez2bbDLY7aB5+CdFjPI1P492JD+c4lHKfmsP/zIahFUuCkO51eok8gN7prh6B35ST o47DI91Y4vygzRoRHxz58KPJx9/nra7xwSu55GaLMemI3rCqf1/LavsqQOrpYK1CnqVx/T8zh aqHW8HllYYAi4JP49hWYTtTqHqpju4JS1V4Gj7BvgwQJ4AjdBFBLYlSfXnO/D0/3gcMnvkMwE 9ZgFPojmwi8xYzmSFhldDlrnyNcpEgkp9XAypA== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: none client-ip=217.72.192.73; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1654171786567100001 From: Richard Henderson Replace an if ladder with a switch for clarity. Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson Message-Id: <20220602013401.303699-3-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- target/m68k/op_helper.c | 49 +++++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/target/m68k/op_helper.c b/target/m68k/op_helper.c index d30f988ae089..2b94a6ec84de 100644 --- a/target/m68k/op_helper.c +++ b/target/m68k/op_helper.c @@ -333,7 +333,8 @@ static void m68k_interrupt_all(CPUM68KState *env, int i= s_hw) sp &=3D ~1; } =20 - if (cs->exception_index =3D=3D EXCP_ACCESS) { + switch (cs->exception_index) { + case EXCP_ACCESS: if (env->mmu.fault) { cpu_abort(cs, "DOUBLE MMU FAULT\n"); } @@ -391,29 +392,39 @@ 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 =3D=3D EXCP_ADDRESS) { + break; + + case EXCP_ADDRESS: do_stack_frame(env, &sp, 2, oldsr, 0, retaddr); - } else if (cs->exception_index =3D=3D EXCP_ILLEGAL || - cs->exception_index =3D=3D EXCP_DIV0 || - cs->exception_index =3D=3D EXCP_CHK || - cs->exception_index =3D=3D EXCP_TRAPCC || - cs->exception_index =3D=3D 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 >=3D EXCP_SPURIOUS && - cs->exception_index <=3D EXCP_INT_LEVEL_7) { - do_stack_frame(env, &sp, 0, oldsr, 0, retaddr); - oldsr =3D sr; - env->aregs[7] =3D sp; - cpu_m68k_set_sr(env, sr &=3D ~SR_M); - sp =3D env->aregs[7]; - if (!m68k_feature(env, M68K_FEATURE_UNALIGNED_DATA)) { - sp &=3D ~1; + break; + + case EXCP_SPURIOUS ... EXCP_INT_LEVEL_7: + if (is_hw && oldsr & SR_M) { + do_stack_frame(env, &sp, 0, oldsr, 0, retaddr); + oldsr =3D sr; + env->aregs[7] =3D sp; + cpu_m68k_set_sr(env, sr &=3D ~SR_M); + sp =3D env->aregs[7]; + if (!m68k_feature(env, M68K_FEATURE_UNALIGNED_DATA)) { + sp &=3D ~1; + } + do_stack_frame(env, &sp, 1, oldsr, 0, retaddr); + break; } - do_stack_frame(env, &sp, 1, oldsr, 0, retaddr); - } else { + /* fall through */ + + default: do_stack_frame(env, &sp, 0, oldsr, 0, retaddr); + break; } =20 env->aregs[7] =3D sp; --=20 2.36.1 From nobody Mon Feb 9 14:27:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1654173721125532.4544683220547; Thu, 2 Jun 2022 05:42:01 -0700 (PDT) Received: from localhost ([::1]:59950 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nwk9H-00088F-BG for importer@patchew.org; Thu, 02 Jun 2022 08:41:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47032) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTZ-0000or-61 for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:53 -0400 Received: from mout.kundenserver.de ([212.227.17.10]:51931) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTX-0001GW-Ja for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:52 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MC2wN-1o4fxE2OSL-00COGj; Thu, 02 Jun 2022 13:58:41 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Laurent Vivier , Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 05/19] target/m68k: Fix coding style in m68k_interrupt_all Date: Thu, 2 Jun 2022 13:58:23 +0200 Message-Id: <20220602115837.2013918-6-laurent@vivier.eu> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220602115837.2013918-1-laurent@vivier.eu> References: <20220602115837.2013918-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:S55jd4+FUU0Vu9TAGkeOUB3CV1u0XwpWiXYOfZy19ai6P5wpb/P MMJiq2Nj0Tl5E6JUMAmBo4CKNxZRLUqTXA23fJ5ZwWKtESsT5PJVxLhlvHWTEh8Lb5Vx50W vhszdFW+seo9bnYmTAejVGvOCkWyRWZOng6663MQQDqnDBmD6csGDpvHYDySVGaRxxsCbYa XM+92adDTGzr71F+0eSmA== X-UI-Out-Filterresults: notjunk:1;V03:K0:Gjdxg35eqg0=:bsLqbKjB79LAKo5EXwgCmH xeovS/c19ZxfIO9tcyz7SlSs4a5v4ldj8QnVcM8KKqTw8+7IVFR2P4u9wJQvErZudQtzbL4zo TupvDjCa2VfSKqHoExvwOWiKQDX68opFxbAiAnP148gcurOA8NZvhMUZZPfcqgrTUxe0PTXqq cbv/LJZal9b9S1NUndXfAsitJ0m1/YcL2PiOHYnhZtTu+n4Slr4vb7YaqnFCI1YDF9+/PmLpJ fu/PkrZOPYbAzlry8zillZXGC22RXEVsro5wCJE2Aeem9MP+JSikZRl6VwO4mXor/cp/KaBlT Drpw8w+I0NUWvbwfpSHs4dKmc0SGSjVKn3Ju0gt1qGOpDA1+nMm9hOAnc88yFjEEr2wg79vne xogyUbIHjCg1GfSfq4fdCKo3haJyEh9aqOKcQ47qU9kqfkBTocMEx7pTYUqE4Dcjg7k1JOoc5 twfBhUujH2lE+2TdeuHpiXTVgsZccmRZV93w9mj7GcAHJlyTqKqp4IHvNT7sMCwQyN4HtEkig LaW9poppH7jr1EbFUqLZvO9+9xAkY/Pgm41ZI85wjg40Xb3xdEKfvlz8hrTeNLcd67VAvuKne 7HatHPig6QZsdn0L/y9CmTkbnnrGB9oxffrJl9GjEh+dhEB4xgHfU8uK5PDNtyPunpC/3iq0x Rjn2xovpQ1sKS8VFy0eEgpSag8IZ4ONdGnk+NMrPiKJRtVN2HCQPR9TkHoGpw5pDSXv34mlsd SohIsdJi0AjNcd+hHPOKs8Wxab1u/ldJowYOqw== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: none client-ip=212.227.17.10; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1654173722927100001 From: Richard Henderson Add parenthesis around & vs &&. Remove assignment to sr in function call argument -- note that sr is unused after the call, so the assignment was never needed, only the result of the & expression. Suggested-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Laurent Vivier Signed-off-by: Richard Henderson Message-Id: <20220602013401.303699-4-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- target/m68k/op_helper.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/m68k/op_helper.c b/target/m68k/op_helper.c index 2b94a6ec84de..0f41c2dce3cc 100644 --- a/target/m68k/op_helper.c +++ b/target/m68k/op_helper.c @@ -408,11 +408,11 @@ static void m68k_interrupt_all(CPUM68KState *env, int= is_hw) break; =20 case EXCP_SPURIOUS ... EXCP_INT_LEVEL_7: - if (is_hw && oldsr & SR_M) { + if (is_hw && (oldsr & SR_M)) { do_stack_frame(env, &sp, 0, oldsr, 0, retaddr); oldsr =3D sr; env->aregs[7] =3D sp; - cpu_m68k_set_sr(env, sr &=3D ~SR_M); + cpu_m68k_set_sr(env, sr & ~SR_M); sp =3D env->aregs[7]; if (!m68k_feature(env, M68K_FEATURE_UNALIGNED_DATA)) { sp &=3D ~1; --=20 2.36.1 From nobody Mon Feb 9 14:27:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1654171440027824.3931116887265; Thu, 2 Jun 2022 05:04:00 -0700 (PDT) Received: from localhost ([::1]:33322 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nwjYU-0003I6-QK for importer@patchew.org; Thu, 02 Jun 2022 08:03:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46872) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTS-0000V6-71 for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:46 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:33543) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTQ-0001Da-HD for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:45 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MiakT-1nKw4s4BV9-00fhkl; Thu, 02 Jun 2022 13:58:42 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Laurent Vivier , Richard Henderson Subject: [PULL 06/19] linux-user/m68k: Handle EXCP_TRAP1 through EXCP_TRAP15 Date: Thu, 2 Jun 2022 13:58:24 +0200 Message-Id: <20220602115837.2013918-7-laurent@vivier.eu> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220602115837.2013918-1-laurent@vivier.eu> References: <20220602115837.2013918-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:S+pnPJHyysi4eznHgu74eOFRdnIExZsdv+STBbocPE02m34jMHU zTk+xl0b9sqp/EPMBaVpndFrYEx3bYe+HwCHxiLnjn0nNOrczQR8qBlBQGP2sHvGf+y50K0 meJ17thJYbIrxfPWF1tTX6Sc3E0LzgLxu2SsdbKc0Ihfm3yPicThaRZg8oWVshystsSO7vx fe9m2o+uJQlwYKgcoeoPw== X-UI-Out-Filterresults: notjunk:1;V03:K0:8VFCskYE41Y=:qOpR1qQLc+WpT/246rTG9C SFpWBh+uk/m3ek13+XQK4AKpG48nEuU69mty1pwh5Y5UJAtzp9Ag/6sHN/Wn2ykmuijX7Z6Bx 4H8LrEQxNtNYRs/yeFQEsG9QCPCdtt4dGWovbDA5CbsPkCxPgkDYMVJIIuME8WTPQo6SwfNh4 jmJzx5XPjDrF1mDCcl47SZVMyEKDVPy9Cqqikdh+6pNpGx1mNrBwTdB2EIy2x3FCJz/x9tgM5 T/a+DwtQnYCQcnHlMaRHPbJkqXQ3gyXD+u3zcWfgYCVHg2jeZjBaGAqaQ0zu+wN3bsoPoqmnB RBEVFaZM4E+z1X8cjhKysAs6rxjOo17HHf3tBrl5Y14VaYCAHrxG0OrN/Rz9+3ac8kVVkE6/B ifFi+mNHiOEtvCtT5NIYJILfDdz5ZqvTorRMlULBS1hIrel+dF99c4y5WA3nm7RhIp5pWpejh IJ4pZNDSY51bVV4xwHE5iy57qGRCiYm82yM3OsN+y2VmqRy3E4Fp0K7KyeylNcsUUJt9SQfkg aWIVIOpWhU2iZNXwC9AvoFk4hSSfj37iULlNZqtwIJWBDOzzZMdVk+BO+yKe0IZwiz8pBMHNk AmBuvEnCPWQIyMxuqGzC9UWwuI+WkloB5HmDjspbLgjNukadvW1Y1zVhY3vpJVzoQsoCk7G/B aI3E229/cWN/Z4t+Xs0YxD8o++BwtUi6SBjkF+tI/Oi3DVnXTVusakl92MzAYlzoosxc0TQsL sbYIAixR+IwUXiiwUKazVmnUumWprjXeZQjJkA== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: none client-ip=212.227.17.24; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1654171441136100001 Content-Type: text/plain; charset="utf-8" From: Richard Henderson These are raised by guest instructions, and should not fall through into the default abort case. Signed-off-by: Richard Henderson Message-Id: <20220602013401.303699-5-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/m68k/cpu_loop.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/linux-user/m68k/cpu_loop.c b/linux-user/m68k/cpu_loop.c index 56417f7401dd..12e5d9cd5363 100644 --- a/linux-user/m68k/cpu_loop.c +++ b/linux-user/m68k/cpu_loop.c @@ -75,7 +75,11 @@ void cpu_loop(CPUM68KState *env) case EXCP_INTERRUPT: /* just indicate that signals should be handled asap */ break; + case EXCP_TRAP0 + 1 ... EXCP_TRAP0 + 14: + force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLTRP, env->pc); + break; case EXCP_DEBUG: + case EXCP_TRAP15: force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->pc); break; case EXCP_ATOMIC: --=20 2.36.1 From nobody Mon Feb 9 14:27:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1654172481241567.7158227434578; Thu, 2 Jun 2022 05:21:21 -0700 (PDT) Received: from localhost ([::1]:54576 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nwjpI-0001zK-5f for importer@patchew.org; Thu, 02 Jun 2022 08:21:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46954) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTU-0000bM-Bb for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:48 -0400 Received: from mout.kundenserver.de ([217.72.192.73]:56375) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTS-0001E8-6w for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:48 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MKsf5-1oDZuB1zDx-00LIFh; Thu, 02 Jun 2022 13:58:42 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Laurent Vivier , Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 07/19] target/m68k: Remove retaddr in m68k_interrupt_all Date: Thu, 2 Jun 2022 13:58:25 +0200 Message-Id: <20220602115837.2013918-8-laurent@vivier.eu> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220602115837.2013918-1-laurent@vivier.eu> References: <20220602115837.2013918-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:q1sjSe+GkGOoLn5SpR62FDp5/1rKAfDn74SyKr5evD+4lhcX5Pd xZfGAhnr42NLWnRGHF5WU+h30xWpsv5gxUuuh4WdfxyfsI6TRvAo76OMwce1Je3hBRjOExO XeLmofY4vyhoiLhHjth7vDKj5pyFRn+5Jx8bILjhicPkNM4Ey2kmJFlk/cIWS7GLUtvyF5S NqZu65HZSlLN08pCOuuuQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:evpqtX4b1Nc=:lrr91Yw8qWAJhByZVrs175 O9n77bFe49d4Q0Ykbl69Hu7XW8tKQYMcTsBJUKZ5RhwJ+uY6kUvPQAy7hdxx1tmRthajZDSLN 8uOiIEVpzJHiawGJcBt5CzxswKIzJ1Azqsw+mMYlpQcDF2B4G0eB8jIaBfcZAQMNbX8F65cjl HwOC8XjN24jFY04SduJl6dRdGy3HDK97YytgQwhOA4xLu2C0LUGzzJPuOTkZBBJezR+NaVUy7 W8z+4cEMZI0IYhdtOlKYgW8nakGSmj7zm1hlrsPAvX12d2p9aZsea5vuN8myRfeCtD2udIi8n LLccoeFCtCq1hEuiGzXYJpGx0OPu3VnNz/lnLLGuPMJJb2QzEu6Q6Gz96GYkkOfqla4hojte6 xgfQmGZcKRYnyI4iLS837/p2yhdJD4I6KamNxj+r3fq25RHysvTmBGuZ0ZV5iTQkuHk4VHEiN +FeYui67uBuNYitO/+yi41CtSzASi2OOohh3aGTmxbcpo4wJV1NB9cTg1PZp95jqcPHzgbZxt /mCNdG2DskFIAQ/EtLRgH2dShv5aEjmWaHfuOjRN3m1JcqiWH22e7ph2p245lmsGH86R7Xr5e ZpKktggtvOOGV2QceZ9Tmwrz9YydSpCCNv5aHJInp6onGH1WZYSxjZkvglkDRnaHCoiCzPkB4 hqlYHjKEKj5uEbk1vlU52da68z2ISamK/wxIAH/w7ZLE1onE9HqCNpaOZIxSja06y55m/Ql7r Np2OdIOZRTqZaI3w7FZ1LFBW6wKxwmLOpgDgXg== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: none client-ip=217.72.192.73; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1654172483543100001 From: Richard Henderson The only value this variable holds is now env->pc. Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson Message-Id: <20220602013401.303699-6-richard.henderson@linaro.org> Signed-off-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 0f41c2dce3cc..777869790b66 100644 --- a/target/m68k/op_helper.c +++ b/target/m68k/op_helper.c @@ -287,12 +287,9 @@ static void m68k_interrupt_all(CPUM68KState *env, int = is_hw) { CPUState *cs =3D env_cpu(env); uint32_t sp; - uint32_t retaddr; uint32_t vector; uint16_t sr, oldsr; =20 - retaddr =3D env->pc; - if (!is_hw) { switch (cs->exception_index) { case EXCP_RTE: @@ -385,7 +382,7 @@ static void m68k_interrupt_all(CPUM68KState *env, int i= s_hw) sp -=3D 4; cpu_stl_mmuidx_ra(env, sp, env->mmu.ar, MMU_KERNEL_IDX, 0); =20 - do_stack_frame(env, &sp, 7, oldsr, 0, retaddr); + do_stack_frame(env, &sp, 7, oldsr, 0, env->pc); env->mmu.fault =3D false; if (qemu_loglevel_mask(CPU_LOG_INT)) { qemu_log(" " @@ -395,7 +392,7 @@ static void m68k_interrupt_all(CPUM68KState *env, int i= s_hw) break; =20 case EXCP_ADDRESS: - do_stack_frame(env, &sp, 2, oldsr, 0, retaddr); + do_stack_frame(env, &sp, 2, oldsr, 0, env->pc); break; =20 case EXCP_ILLEGAL: @@ -404,12 +401,12 @@ 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; =20 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 =3D sr; env->aregs[7] =3D sp; cpu_m68k_set_sr(env, sr & ~SR_M); @@ -417,13 +414,13 @@ static void m68k_interrupt_all(CPUM68KState *env, int= is_hw) if (!m68k_feature(env, M68K_FEATURE_UNALIGNED_DATA)) { sp &=3D ~1; } - do_stack_frame(env, &sp, 1, oldsr, 0, retaddr); + do_stack_frame(env, &sp, 1, oldsr, 0, env->pc); break; } /* fall through */ =20 default: - do_stack_frame(env, &sp, 0, oldsr, 0, retaddr); + do_stack_frame(env, &sp, 0, oldsr, 0, env->pc); break; } =20 --=20 2.36.1 From nobody Mon Feb 9 14:27:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1654171986439555.0952855285797; Thu, 2 Jun 2022 05:13:06 -0700 (PDT) Received: from localhost ([::1]:45992 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nwjhJ-00044f-9g for importer@patchew.org; Thu, 02 Jun 2022 08:13:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46900) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTT-0000Xl-2Z for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:47 -0400 Received: from mout.kundenserver.de ([217.72.192.73]:37981) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTR-0001Df-5Y for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:46 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MeD1l-1nPJnZ3nip-00bK23; Thu, 02 Jun 2022 13:58:43 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Laurent Vivier , Richard Henderson Subject: [PULL 08/19] target/m68k: Fix address argument for EXCP_CHK Date: Thu, 2 Jun 2022 13:58:26 +0200 Message-Id: <20220602115837.2013918-9-laurent@vivier.eu> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220602115837.2013918-1-laurent@vivier.eu> References: <20220602115837.2013918-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:WnZLBWQ7LjeNtl2oz0PAPlylRE93UJuVhVrCe/LcWs5UC3SopHt jeZH6ADRHay4qmMoXcSHlvhLwGmp+pb9Jhyhslv01ciWT4ZDFKaY5aTeIf13q8tQGUs6Obf OZQS30bhcMiLBlXjc7eJoVyAOcovR1Xc3SWUHe1gN61y9pvjpR6kB6bFZsC2ZqNWIJeudIl Tq9sYnlNW8JYNeuZEXt/A== X-UI-Out-Filterresults: notjunk:1;V03:K0:BUwLszaAd1Y=:r4zbB+hGInrflnqv7MC727 rGQpmOLaiAvQGvULoAd/zlTgT6yots3+Bx2ApOHtz9dk4Fx/y8J89UQliMgNmCaGK4Ors0lUg m43tfzS0mYsGsqN6hwqt1r+NiCo59/VsNLHwq5d8s1eDgszLM3vLrqVYyV490d0frTmeo99YB hVkVD5DQqKeMZRUXKBV7kbOQ32rzux2UMRdN5Of3lF8eM8Wk+FNaykwSGDQzQTlOd1NbLZdyV QvydcL8VCVGkKWEHciZ55REUrOKKh2oReoIzUYC/buGmaeaxtiBRNX8N5rLAWI+9k2RC9/bn3 f9aJkN6voGRG2NMNfh0ehhvhedY2KdSbMv3u8RKBiXGIvKiyaQANi5yvRWDNEee78YCT38200 ekJo0WCZ4OyhZ1/cISOgCG/M3Ga1xfeubyeIHn7Kf2iAqRGJC+HNDHmRUvc4GPdvxO7FH76rS cNjXfS2fRHdacLByf2ITiABM1Ddm/mgjekDczXW5HFP1KNFFeikToqiwrn+s7wOUSZtlvR2fT yfUj4bsDreF1tGnFom3unDRPa9CcaXbYuVbkE1liET2X6Kn0paJepSlm025Yl1CnRx7CGUG9j 0TPeDTQkCtbeg+qq2ByoBZXihm0zYAyw1bdSfE69ou7B5YNHI40PR3VlPuIcgzAl/GucvsivW Q0tzAs49zNMIVnyMyT6r5ZFvFJu0ZKb+sJxRk8Mh1zDQqd5UXVu9olognwtppTn5U2Wi/sMJW pCfp0wKXBLzPTKJOYuKhR1IhDnInhvyN5PyvlQ== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: none client-ip=217.72.192.73; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1654171987411100003 Content-Type: text/plain; charset="utf-8" From: Richard Henderson 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(). Reviewed-by: Laurent Vivier Signed-off-by: Richard Henderson Message-Id: <20220602013401.303699-7-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- target/m68k/cpu.h | 6 +++++ linux-user/m68k/cpu_loop.c | 2 +- target/m68k/op_helper.c | 54 ++++++++++++++++++++------------------ 3 files changed, 36 insertions(+), 26 deletions(-) diff --git a/target/m68k/cpu.h b/target/m68k/cpu.h index 9b3bf7a44819..558c3c67d607 100644 --- a/target/m68k/cpu.h +++ b/target/m68k/cpu.h @@ -122,6 +122,12 @@ typedef struct CPUArchState { =20 /* MMU status. */ struct { + /* + * Holds the "address" value in between raising an exception + * and creation of the exception stack frame. + * Used for both Format 7 exceptions (Access, i.e. mmu) + * and Format 2 exceptions (chk, div0, trapcc, etc). + */ uint32_t ar; uint32_t ssw; /* 68040 */ diff --git a/linux-user/m68k/cpu_loop.c b/linux-user/m68k/cpu_loop.c index 12e5d9cd5363..e24d17e180e3 100644 --- a/linux-user/m68k/cpu_loop.c +++ b/linux-user/m68k/cpu_loop.c @@ -47,7 +47,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 777869790b66..750d65576fcf 100644 --- a/target/m68k/op_helper.c +++ b/target/m68k/op_helper.c @@ -397,13 +397,16 @@ static void m68k_interrupt_all(CPUM68KState *env, int= is_hw) =20 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; =20 + 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); @@ -548,6 +551,29 @@ void HELPER(raise_exception)(CPUM68KState *env, uint32= _t tt) raise_exception(env, tt); } =20 +G_NORETURN static void +raise_exception_format2(CPUM68KState *env, int tt, int ilen, uintptr_t rad= dr) +{ + CPUState *cs =3D env_cpu(env); + + cs->exception_index =3D 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 =3D 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 =3D env->pc; + env->pc +=3D ilen; + + cpu_loop_exit(cs); +} + void HELPER(divuw)(CPUM68KState *env, int destr, uint32_t den) { uint32_t num =3D env->dregs[destr]; @@ -1065,18 +1091,7 @@ void HELPER(chk)(CPUM68KState *env, int32_t val, int= 32_t ub) env->cc_c =3D 0 <=3D ub ? val < 0 || val > ub : val > ub && val < 0; =20 if (val < 0 || val > ub) { - CPUState *cs =3D 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 =3D CC_OP_FLAGS; - /* Adjust PC to end of the insn. */ - env->pc +=3D 2; - - cs->exception_index =3D EXCP_CHK; - cpu_loop_exit(cs); + raise_exception_format2(env, EXCP_CHK, 2, GETPC()); } } =20 @@ -1097,17 +1112,6 @@ void HELPER(chk2)(CPUM68KState *env, int32_t val, in= t32_t lb, int32_t ub) env->cc_c =3D lb <=3D ub ? val < lb || val > ub : val > ub && val < lb; =20 if (env->cc_c) { - CPUState *cs =3D 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 =3D CC_OP_FLAGS; - /* Adjust PC to end of the insn. */ - env->pc +=3D 4; - - cs->exception_index =3D EXCP_CHK; - cpu_loop_exit(cs); + raise_exception_format2(env, EXCP_CHK, 4, GETPC()); } } --=20 2.36.1 From nobody Mon Feb 9 14:27:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1654171788471821.5160019651653; Thu, 2 Jun 2022 05:09:48 -0700 (PDT) Received: from localhost ([::1]:42000 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nwje7-0001GQ-6z for importer@patchew.org; Thu, 02 Jun 2022 08:09:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46930) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTT-0000a0-Qq for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:47 -0400 Received: from mout.kundenserver.de ([217.72.192.75]:45559) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTR-0001Du-KI for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:47 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MYNS0-1oJKmf1PXO-00VQrC; Thu, 02 Jun 2022 13:58:43 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Laurent Vivier , Richard Henderson Subject: [PULL 09/19] target/m68k: Fix pc, c flag, and address argument for EXCP_DIV0 Date: Thu, 2 Jun 2022 13:58:27 +0200 Message-Id: <20220602115837.2013918-10-laurent@vivier.eu> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220602115837.2013918-1-laurent@vivier.eu> References: <20220602115837.2013918-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:pqc3r/HEB15/YeH/OaPtISXwt4qva2YCyTOCRbDbVawZj59XmzQ O3AlyN0GRnYutLWTZtWJd0zRMPSGk+Q2jzBANdBPUmP4IuPbz24ej81cgBp5GuaPKZfPI2W xlcgSZa1G9vwDaRuLkopr9g/4VNXij0CXcXzlOMFXS5CukHKNVigUOcCrOad2WCW5rV1/WJ xCq1aPTcq+nztONkUz2zQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:9Mm51OlHIT8=:nwUQ7CT/u7ms67LH1ooe3n Agiwga5I9dKBEuMhtxE0AJrZ/BYZYvaA7u1grzfb5WFBsrsRG7Gqf+Xe/AseiVanMLBX9Fzf/ SpIzryrXtfof0++b00YqF7ClF4vPGkiA6kPLnafhxUCHAPpGZ3e9PR/qTgOl0XGha6jjKLu7V X7KzXPxwvG+spIFocdcQw4SxXmvostcH+5WA3YvG9kt8+A0+r56rPn+npu5iO3hT1yRJPnlxH tA5HWKy/LkzSsWCpW7bPD6WMoCCJIASNj9Sz2vfWfb63zo3SwqFSEaP4btO0zt9ueN0x+VymG 3BFECwcB2ld40CXIu7yCg+QqoAF2RS7zRvRg3wgdp+AhDXosbvu6MeAHvx1ZXq9qPO493ACgT HlJF/05R7C0giDPHdz7hMftgTsA3hhwXFuNbLXautJPnEAGujhjHt2OQBwHUnAeWO3wNkB7EF ahvyZ8aiRZxvLTF7gYZWQy++YpOV1BjRTpKdyLVRXLsqo3SQ5C5RkRg78be+xK60nTXaYji9K PjAdKYgieDnauKzwLE8Q92YTl8LfIKOG4nr0bezLN8RJEo18Ga9Gpr263HvUu+XKJMcswtyRL ImlE+3L9oV7/FqJnMx+q+2zn8IGJvdzNSHq3KiXi2CQ2qnD05sxTcN5Pzwy+PbKhNcmcKBHYs QasxSDvCLmES2RDhKuVDidVJ64eq9iTer36qyA8uEI6Ceb3MbJGVpZEdjR98A7drUmfNHHEjD AGUAGzHmxAIumQ+Dv89oOoirPFzxRyY3M9pCpw== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: none client-ip=217.72.192.75; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1654171790513100001 Content-Type: text/plain; charset="utf-8" From: Richard Henderson 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(). Reviewed-by: Laurent Vivier Signed-off-by: Richard Henderson Message-Id: <20220602013401.303699-8-richard.henderson@linaro.org> Signed-off-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 0a6b4146f635..f016c4c1c226 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 e24d17e180e3..6598bce3c4e7 100644 --- a/linux-user/m68k/cpu_loop.c +++ b/linux-user/m68k/cpu_loop.c @@ -50,7 +50,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 750d65576fcf..729ee0e93482 100644 --- a/target/m68k/op_helper.c +++ b/target/m68k/op_helper.c @@ -396,7 +396,6 @@ static void m68k_interrupt_all(CPUM68KState *env, int i= s_hw) break; =20 case EXCP_ILLEGAL: - case EXCP_DIV0: case EXCP_TRAPCC: case EXCP_TRACE: /* FIXME: addr is not only env->pc */ @@ -404,6 +403,7 @@ static void m68k_interrupt_all(CPUM68KState *env, int i= s_hw) break; =20 case EXCP_CHK: + case EXCP_DIV0: do_stack_frame(env, &sp, 2, oldsr, env->mmu.ar, env->pc); break; =20 @@ -574,18 +574,19 @@ raise_exception_format2(CPUM68KState *env, int tt, in= t ilen, uintptr_t raddr) cpu_loop_exit(cs); } =20 -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 =3D env->dregs[destr]; uint32_t quot, rem; =20 + env->cc_c =3D 0; /* always cleared, even if div0 */ + if (den =3D=3D 0) { - raise_exception_ra(env, EXCP_DIV0, GETPC()); + raise_exception_format2(env, EXCP_DIV0, ilen, GETPC()); } quot =3D num / den; rem =3D num % den; =20 - env->cc_c =3D 0; /* always cleared, even if overflow */ if (quot > 0xffff) { env->cc_v =3D -1; /* @@ -601,18 +602,19 @@ void HELPER(divuw)(CPUM68KState *env, int destr, uint= 32_t den) env->cc_v =3D 0; } =20 -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 =3D env->dregs[destr]; uint32_t quot, rem; =20 + env->cc_c =3D 0; /* always cleared, even if overflow/div0 */ + if (den =3D=3D 0) { - raise_exception_ra(env, EXCP_DIV0, GETPC()); + raise_exception_format2(env, EXCP_DIV0, ilen, GETPC()); } quot =3D num / den; rem =3D num % den; =20 - env->cc_c =3D 0; /* always cleared, even if overflow */ if (quot !=3D (int16_t)quot) { env->cc_v =3D -1; /* nothing else is modified */ @@ -629,18 +631,20 @@ void HELPER(divsw)(CPUM68KState *env, int destr, int3= 2_t den) env->cc_v =3D 0; } =20 -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 =3D env->dregs[numr]; uint32_t quot, rem; =20 + env->cc_c =3D 0; /* always cleared, even if div0 */ + if (den =3D=3D 0) { - raise_exception_ra(env, EXCP_DIV0, GETPC()); + raise_exception_format2(env, EXCP_DIV0, ilen, GETPC()); } quot =3D num / den; rem =3D num % den; =20 - env->cc_c =3D 0; env->cc_z =3D quot; env->cc_n =3D quot; env->cc_v =3D 0; @@ -657,18 +661,20 @@ void HELPER(divul)(CPUM68KState *env, int numr, int r= egr, uint32_t den) } } =20 -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 =3D env->dregs[numr]; int32_t quot, rem; =20 + env->cc_c =3D 0; /* always cleared, even if overflow/div0 */ + if (den =3D=3D 0) { - raise_exception_ra(env, EXCP_DIV0, GETPC()); + raise_exception_format2(env, EXCP_DIV0, ilen, GETPC()); } quot =3D num / den; rem =3D num % den; =20 - env->cc_c =3D 0; env->cc_z =3D quot; env->cc_n =3D quot; env->cc_v =3D 0; @@ -685,19 +691,21 @@ void HELPER(divsl)(CPUM68KState *env, int numr, int r= egr, int32_t den) } } =20 -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 =3D deposit64(env->dregs[numr], 32, 32, env->dregs[regr]); uint64_t quot; uint32_t rem; =20 + env->cc_c =3D 0; /* always cleared, even if overflow/div0 */ + if (den =3D=3D 0) { - raise_exception_ra(env, EXCP_DIV0, GETPC()); + raise_exception_format2(env, EXCP_DIV0, ilen, GETPC()); } quot =3D num / den; rem =3D num % den; =20 - env->cc_c =3D 0; /* always cleared, even if overflow */ if (quot > 0xffffffffULL) { env->cc_v =3D -1; /* @@ -720,19 +728,21 @@ void HELPER(divull)(CPUM68KState *env, int numr, int = regr, uint32_t den) env->dregs[numr] =3D quot; } =20 -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 =3D deposit64(env->dregs[numr], 32, 32, env->dregs[regr]); int64_t quot; int32_t rem; =20 + env->cc_c =3D 0; /* always cleared, even if overflow/div0 */ + if (den =3D=3D 0) { - raise_exception_ra(env, EXCP_DIV0, GETPC()); + raise_exception_format2(env, EXCP_DIV0, ilen, GETPC()); } quot =3D num / den; rem =3D num % den; =20 - env->cc_c =3D 0; /* always cleared, even if overflow */ if (quot !=3D (int32_t)quot) { env->cc_v =3D -1; /* diff --git a/target/m68k/translate.c b/target/m68k/translate.c index 22e5379d3c64..6075f4993031 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; =20 /* divX.w ,Dn 32/16 -> 16r:16q */ =20 @@ -1609,20 +1610,20 @@ DISAS_INSN(divw) /* dest.l / src.w */ =20 SRC_EA(env, src, OS_WORD, sign, NULL); - destr =3D tcg_const_i32(REG(insn, 9)); + destr =3D tcg_constant_i32(REG(insn, 9)); + ilen =3D 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); =20 set_cc_op(s, CC_OP_FLAGS); } =20 DISAS_INSN(divl) { - TCGv num, reg, den; + TCGv num, reg, den, ilen; int sign; uint16_t ext; =20 @@ -1639,15 +1640,14 @@ DISAS_INSN(divl) /* divX.l , Dr:Dq 64/32 -> 32r:32q */ =20 SRC_EA(env, den, OS_LONG, 0, NULL); - num =3D tcg_const_i32(REG(ext, 12)); - reg =3D tcg_const_i32(REG(ext, 0)); + num =3D tcg_constant_i32(REG(ext, 12)); + reg =3D tcg_constant_i32(REG(ext, 0)); + ilen =3D 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 */ =20 SRC_EA(env, den, OS_LONG, 0, NULL); - num =3D tcg_const_i32(REG(ext, 12)); - reg =3D tcg_const_i32(REG(ext, 0)); + num =3D tcg_constant_i32(REG(ext, 12)); + reg =3D tcg_constant_i32(REG(ext, 0)); + ilen =3D 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); =20 set_cc_op(s, CC_OP_FLAGS); } --=20 2.36.1 From nobody Mon Feb 9 14:27:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1654172624842751.5718586887542; Thu, 2 Jun 2022 05:23:44 -0700 (PDT) Received: from localhost ([::1]:34964 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nwjrb-0007xV-Dp for importer@patchew.org; Thu, 02 Jun 2022 08:23:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46962) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTU-0000bb-H6 for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:48 -0400 Received: from mout.kundenserver.de ([212.227.17.10]:40887) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTS-0001E6-2B for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:48 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1N5mSj-1ni55k3kp1-017EWB; Thu, 02 Jun 2022 13:58:44 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Laurent Vivier , Richard Henderson Subject: [PULL 10/19] target/m68k: Fix address argument for EXCP_TRACE Date: Thu, 2 Jun 2022 13:58:28 +0200 Message-Id: <20220602115837.2013918-11-laurent@vivier.eu> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220602115837.2013918-1-laurent@vivier.eu> References: <20220602115837.2013918-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:yHtcuEI5oWPEj21RnBWwmQG1PB2U1nccNA1xUHgD1dZ0tjk06zG kyLPVXqVegdeSi09d4cflMs8mMNm7muJpIkazz5j61oTDVyCcLJPclU+SUNwai7ch+kHxS/ oP3Xza0M24OuFj1MZ3ta8SjiQm35wmZJI8yJFWtocx72AA8vN4CxQ9boTlqOzUiAgbhetw9 1FfUgTDOFC10rteOGDHXg== X-UI-Out-Filterresults: notjunk:1;V03:K0:gbRDYPoZyrY=:PElDNouuAcoceyxKfdegqT dmHgZWsd5UWhhC7oHj4F32DmLowL2uV7nOq2/S6T1uWGcCGjZg/2qiaZEu/J4uRq4AXutK5rX xhiFIbDqQTli33XyZvE5KiILBQP3QxZ5HxVeXh+OAchkrG19xlTGWSobounvezhBAtpqozSJz A3zAcxn/Tcgyc1/Cmrr5KhTIxop7usSEq5a0H41g2TP+PFypmLNs2hEg8W20bQvJDNrKX+KcH bxVBwIs4fHX9enRxKDoboUDzw09Ovjgqua3htmhl5Jdr63t/AbHJaYuCzC1noHQCl+jMkFt+Y RfeJkV7GnyDshQ6k1oGA+VT6zlL6xQzK5x7OJbMmEltgZkVtOmM1R1Ra4bb9zRZT4xCLXTVeU cwq8oesNDGd0OWrlcIcQ3xkfTgaIDnzcGaatCYmAPqSkg76Zm2IGezZ3a2mofrrsKX4lBmr2P HhhL6guqm+1N8rXhvG+WjYVTfO0T3AKHP1WwfwmnKv+HdKtSMSPgBIXJaslaYx4Rz+XWE3DcP jjRAC+JiBNhhFO0S6qvL05LLMq/HCeXAY5SRzv0RJJkPuqss+Amb4Kr8fVdOwjk/VEoT0tQFq iPXeaRfT0CJAgiGboOqCwT/8buZdf24Tjmbp4388BhjhviZP9NKGdj/dJbQpfF+1lUkzZhPmh lS8ypChlyDVG+T8xFPYvCEU2gDQNdhZVzzVk2CF+QZ0Z7sr8Y6dUXJRpT5R0CtfB4dOloFHPF yjSFU3U+VDBgOvUUvkmmgW0H/3XnIhgC6fOG9Q== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: none client-ip=212.227.17.10; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1654172625292100001 Content-Type: text/plain; charset="utf-8" From: Richard Henderson 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. Reviewed-by: Laurent Vivier Signed-off-by: Richard Henderson Message-Id: <20220602013401.303699-9-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/m68k/cpu_loop.c | 3 +++ target/m68k/op_helper.c | 2 +- target/m68k/translate.c | 49 +++++++++++++++++++++++++------------- 3 files changed, 36 insertions(+), 18 deletions(-) diff --git a/linux-user/m68k/cpu_loop.c b/linux-user/m68k/cpu_loop.c index 6598bce3c4e7..fcf92205529e 100644 --- a/linux-user/m68k/cpu_loop.c +++ b/linux-user/m68k/cpu_loop.c @@ -52,6 +52,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 729ee0e93482..3cb71c914003 100644 --- a/target/m68k/op_helper.c +++ b/target/m68k/op_helper.c @@ -397,13 +397,13 @@ static void m68k_interrupt_all(CPUM68KState *env, int= is_hw) =20 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; =20 case EXCP_CHK: case EXCP_DIV0: + case EXCP_TRACE: do_stack_frame(env, &sp, 2, oldsr, env->mmu.ar, env->pc); break; =20 diff --git a/target/m68k/translate.c b/target/m68k/translate.c index 6075f4993031..38b72d282aa6 100644 --- a/target/m68k/translate.c +++ b/target/m68k/translate.c @@ -114,6 +114,7 @@ typedef struct DisasContext { DisasContextBase base; CPUM68KState *env; target_ulong pc; + target_ulong pc_prev; CCOp cc_op; /* Current CC operation */ int cc_op_synced; TCGv_i64 mactmp; @@ -298,6 +299,21 @@ static void gen_raise_exception(int nr) tcg_temp_free_i32(tmp); } =20 +static void gen_raise_exception_format2(DisasContext *s, int nr, + target_ulong this_pc) +{ + /* + * 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(this_pc), cpu_env, + offsetof(CPUM68KState, mmu.ar)); + gen_raise_exception(nr); + s->base.is_jmp =3D DISAS_NORETURN; +} + static void gen_exception(DisasContext *s, uint32_t dest, int nr) { update_cc_op(s); @@ -1494,12 +1510,13 @@ static void gen_exit_tb(DisasContext *s) } while (0) =20 /* Generate a jump to an immediate address. */ -static void gen_jmp_tb(DisasContext *s, int n, uint32_t dest) +static void gen_jmp_tb(DisasContext *s, int n, target_ulong dest, + target_ulong src) { 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, src); } else if (translator_use_goto_tb(&s->base, dest)) { tcg_gen_goto_tb(n); tcg_gen_movi_i32(QREG_PC, dest); @@ -1548,9 +1565,9 @@ DISAS_INSN(dbcc) tcg_gen_addi_i32(tmp, tmp, -1); gen_partset_reg(OS_WORD, reg, tmp); tcg_gen_brcondi_i32(TCG_COND_EQ, tmp, -1, l1); - gen_jmp_tb(s, 1, base + offset); + gen_jmp_tb(s, 1, base + offset, s->base.pc_next); gen_set_label(l1); - gen_jmp_tb(s, 0, s->pc); + gen_jmp_tb(s, 0, s->pc, s->base.pc_next); } =20 DISAS_INSN(undef_mac) @@ -3096,13 +3113,13 @@ DISAS_INSN(branch) /* Bcc */ TCGLabel *l1 =3D gen_new_label(); gen_jmpcc(s, ((insn >> 8) & 0xf) ^ 1, l1); - gen_jmp_tb(s, 1, base + offset); + gen_jmp_tb(s, 1, base + offset, s->base.pc_next); gen_set_label(l1); - gen_jmp_tb(s, 0, s->pc); + gen_jmp_tb(s, 0, s->pc, s->base.pc_next); } else { /* Unconditional branch. */ update_cc_op(s); - gen_jmp_tb(s, 0, base + offset); + gen_jmp_tb(s, 0, base + offset, s->base.pc_next); } } =20 @@ -5485,9 +5502,9 @@ DISAS_INSN(fbcc) l1 =3D gen_new_label(); update_cc_op(s); gen_fjmpcc(s, insn & 0x3f, l1); - gen_jmp_tb(s, 0, s->pc); + gen_jmp_tb(s, 0, s->pc, s->base.pc_next); gen_set_label(l1); - gen_jmp_tb(s, 1, base + offset); + gen_jmp_tb(s, 1, base + offset, s->base.pc_next); } =20 DISAS_INSN(fscc) @@ -6159,6 +6176,8 @@ static void m68k_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cpu) =20 dc->env =3D env; dc->pc =3D dc->base.pc_first; + /* This value will always be filled in properly before m68k_tr_tb_stop= . */ + dc->pc_prev =3D 0xdeadbeef; dc->cc_op =3D CC_OP_DYNAMIC; dc->cc_op_synced =3D 1; dc->done_mac =3D 0; @@ -6192,6 +6211,7 @@ static void m68k_tr_translate_insn(DisasContextBase *= dcbase, CPUState *cpu) do_writebacks(dc); do_release(dc); =20 + dc->pc_prev =3D dc->base.pc_next; dc->base.pc_next =3D dc->pc; =20 if (dc->base.is_jmp =3D=3D DISAS_NEXT) { @@ -6226,17 +6246,12 @@ static void m68k_tr_tb_stop(DisasContextBase *dcbas= e, 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, dc->pc_prev); 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, dc->pc_prev); } else { tcg_gen_lookup_and_goto_ptr(); } @@ -6247,7 +6262,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, dc->pc_prev); } else { tcg_gen_exit_tb(NULL, 0); } --=20 2.36.1 From nobody Mon Feb 9 14:27:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16541723664121.1543038737682991; Thu, 2 Jun 2022 05:19:26 -0700 (PDT) Received: from localhost ([::1]:50612 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nwjnR-0007eB-7w for importer@patchew.org; Thu, 02 Jun 2022 08:19:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46970) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTU-0000ca-PM for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:48 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:59465) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTT-0001ET-47 for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:48 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MvsR7-1ngzAp1dg7-00szRP; Thu, 02 Jun 2022 13:58:44 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Laurent Vivier , Richard Henderson Subject: [PULL 11/19] target/m68k: Fix stack frame for EXCP_ILLEGAL Date: Thu, 2 Jun 2022 13:58:29 +0200 Message-Id: <20220602115837.2013918-12-laurent@vivier.eu> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220602115837.2013918-1-laurent@vivier.eu> References: <20220602115837.2013918-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:u4GDy3CSL4HtG1XGhMv0X9GfHFZt16h8rO3u/h4KWxlTJnU42np bZDIGs0kybqGk9IerBf4YU2SVUrULVWr8UYX5Cf8W1hqkwivGNYbEIInuL4S5kHAXeMYmuI rnSEAzX4v91hHLSXIARehFjnH5xYyi5Ls36A4S+K7U2MK06gmhKklEz7OW8np3OAjhQo3O7 Vv/Z/9S4kBAYcv9E1dK1A== X-UI-Out-Filterresults: notjunk:1;V03:K0:j2MNrR6jPFw=:m8/3baLnwBX76LkVb4A+2/ wSYzO3SHUrEQMVx3jAkxxoZY0UyVo8bpteOAyKJycVToL6hc8n17UBPtKlCsicPgWsfkT9aje Aq1eGw2bpDVUvForNfK34uCrJ7cpZqapeKOT1VQWItTykf79w6aUmwHXDw4mZpjBEkBFToMoC 0mm16M5bCCAwN+0FHO8eK/3DklwYcQLzVOLiQsuDorpYC0BpsnWSzx7aL+l7OYT6tM4uRVIIr Bo7eADi4rkv8+eEgjrFvb+0rC9RDAvbQk5h3jIOCkNKk8XvIfIu020fx79xFGhhukIfISkksf 44Qs4ac+sf1yqpDFQfGgMLd4+sUywIaQdnvES+3vVgpmAdEKvzJ4f4+fgZYPeXpjCZWKiwNBL YdHc0y3H7Vv0SHsGZAjLqNCUInUc/e6IC9PtauvX9JbCDaiysy8o64fG3aIIZssHkoabCbg3w swxZ2xaoAe/73CL1bRTXrZ1/dq9PHeG3QxBBJ8gBa4jdVTUzoUPj0ZwtU1JE1VWJE4ffr0IcT iy8DwzAKznaVwQpRLAdDw4y0uiik4T2ZBqdi7YFcH5Y4zfTfZDQQSJq6HDJD7nMcQEqFQdxAr q/heqQw40jakwA7EizJ3p8eiVjgZy1TL0EdwccrIy4BLjuuogHyMAiySHGfuxX2Ogk567wESc +C0LOz2oEPMWWMOSiekWmMJi2o9yk8ha4FRyUkR5gu//IXZ9nzevzKFluXdYIB6eoKM92xTUP 0FRSSbXWYwe7d/WWRHJsQwhbXkY7+eA1lhAD5w== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: none client-ip=212.227.17.24; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1654172367980100003 Content-Type: text/plain; charset="utf-8" From: Richard Henderson According to the M68040 Users Manual, section 8.4.1, Four word stack frame (format 0), includes Illegal Instruction. Use the correct frame format, which does not use the ADDR argument. Reviewed-by: Laurent Vivier Signed-off-by: Richard Henderson Message-Id: <20220602013401.303699-10-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- target/m68k/op_helper.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/target/m68k/op_helper.c b/target/m68k/op_helper.c index 3cb71c914003..aa62158eb97b 100644 --- a/target/m68k/op_helper.c +++ b/target/m68k/op_helper.c @@ -391,11 +391,14 @@ static void m68k_interrupt_all(CPUM68KState *env, int= is_hw) } break; =20 + case EXCP_ILLEGAL: + do_stack_frame(env, &sp, 0, oldsr, 0, env->pc); + break; + case EXCP_ADDRESS: do_stack_frame(env, &sp, 2, oldsr, 0, env->pc); break; =20 - case EXCP_ILLEGAL: case EXCP_TRAPCC: /* FIXME: addr is not only env->pc */ do_stack_frame(env, &sp, 2, oldsr, env->pc, env->pc); --=20 2.36.1 From nobody Mon Feb 9 14:27:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1654173143836791.5547199898804; Thu, 2 Jun 2022 05:32:23 -0700 (PDT) Received: from localhost ([::1]:43192 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nwjzy-0005PU-7J for importer@patchew.org; Thu, 02 Jun 2022 08:32:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46986) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTV-0000dl-5o for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:49 -0400 Received: from mout.kundenserver.de ([217.72.192.74]:41035) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTT-0001EP-4R for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:48 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1M4b5s-1nyNdK3TF8-001iEQ; Thu, 02 Jun 2022 13:58:45 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Laurent Vivier , Richard Henderson Subject: [PULL 12/19] target/m68k: Implement TRAPcc Date: Thu, 2 Jun 2022 13:58:30 +0200 Message-Id: <20220602115837.2013918-13-laurent@vivier.eu> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220602115837.2013918-1-laurent@vivier.eu> References: <20220602115837.2013918-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:aM8JKn8e9Sb4Fg8HWR6thAno0SAYgKnGGVoT/kJddwsXSrQD0FO S5pWkU3e2I/cHVaMZa2TblJGVGxdEHc+DMHJlnVaVZ5ku+aZIc6KadOU/wqaL7+OiiIq5mC 5LEqft6DHVDiUwdM9NrfUkJo5NRzXDqYmyT1EnIQ70kKSJevHdW++SpYfZfajq1TA7Vjf4l 3dhtrW7X8Q6zpYmPCEESA== X-UI-Out-Filterresults: notjunk:1;V03:K0:wvsiIdWel9U=:aMrvljOazC5+tlcL1NHUvl wnzsr50VM8xhkuCWGbwPKb2AY5l4XV3LxNq1cHGFU23wbfcaQsHfyAZU20z9PwRC62eXqui+V bM2D6+0+jdDvEb9G1+mjg+uBSwZ4YjmeQnygm8opjNVWgYwiG9RMB0QJqc446IHz5VyqTqsCJ I2gToJLgv7mv7FjVoPkLQPca534FXwXqzvNISwEdV55579puDmvIFJ83x0sBDW+z8Gycm6nSt N5MGdd65iHdxnmNokkFsm0mIidO3vzNdL/bYy/T3VQ3cJjMmATXGWi2a4hJVmu87ktyd067Rd 35rCzmioZaPqoTfmpbxVL0nJSDRSonHAZkkLW5u7N5vI67qZevrBZvnO1pSlmXB6KZ/OdVqcl l2ulbVDBdqFuHwQzZy3CuVOQZFTpqNFWZwQo/KkRsErhns9ULczxRI5AQof2N2Dki+qgOMm73 ynI2cPhOJdmFNEPdMd5mEnGY8dHoSVPkmh3nFL3RX36wsQEWpCPKD9AEL1EnKQ6+0CDdhqssI 3ScEKjia9sO94PzH7GVCSb8JLWdlYL8ET3hbtOFjZSvA3EfmnZsCUGaI0TeqPVPOYB1BhlgLf 8odSb9hGAWk38w+s2CJDeTqoPJ1W21c+yAkfufRo9Iz3gPMBUbDcl6Y0bRCwsKRpg/qG+pDae KBx/PUum8mbRwL8nuqDpb2+xTTLIUDIwMFi64prF41caWfaZrn1URTD6uTzONj3tGaH5Znt8w tHlyh2K3/PMpf7gzS0NreEapuOCyfiqAp7739g== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: none client-ip=217.72.192.74; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1654173144527100001 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Resolves: https://gitlab.com/qemu-project/qemu/-/issues/754 Reviewed-by: Laurent Vivier Signed-off-by: Richard Henderson Message-Id: <20220602013401.303699-11-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- target/m68k/cpu.h | 2 ++ linux-user/m68k/cpu_loop.c | 1 + target/m68k/cpu.c | 1 + target/m68k/op_helper.c | 6 +---- target/m68k/translate.c | 49 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 54 insertions(+), 5 deletions(-) diff --git a/target/m68k/cpu.h b/target/m68k/cpu.h index 558c3c67d607..4d8f48e8c747 100644 --- a/target/m68k/cpu.h +++ b/target/m68k/cpu.h @@ -534,6 +534,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, }; =20 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 fcf92205529e..3d3033155f69 100644 --- a/linux-user/m68k/cpu_loop.c +++ b/linux-user/m68k/cpu_loop.c @@ -47,6 +47,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 567106792377..5bbefda5752d 100644 --- a/target/m68k/cpu.c +++ b/target/m68k/cpu.c @@ -158,6 +158,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); } =20 /* diff --git a/target/m68k/op_helper.c b/target/m68k/op_helper.c index aa62158eb97b..61948d92bb25 100644 --- a/target/m68k/op_helper.c +++ b/target/m68k/op_helper.c @@ -399,14 +399,10 @@ static void m68k_interrupt_all(CPUM68KState *env, int= is_hw) do_stack_frame(env, &sp, 2, oldsr, 0, env->pc); break; =20 - case EXCP_TRAPCC: - /* 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: + case EXCP_TRAPCC: do_stack_frame(env, &sp, 2, oldsr, env->mmu.ar, env->pc); break; =20 diff --git a/target/m68k/translate.c b/target/m68k/translate.c index 38b72d282aa6..e9aa96d7684b 100644 --- a/target/m68k/translate.c +++ b/target/m68k/translate.c @@ -4879,6 +4879,53 @@ DISAS_INSN(trap) gen_exception(s, s->pc, EXCP_TRAP0 + (insn & 0xf)); } =20 +static void do_trapcc(DisasContext *s, DisasCompare *c) +{ + if (c->tcond !=3D TCG_COND_NEVER) { + TCGLabel *over =3D NULL; + + update_cc_op(s); + + if (c->tcond !=3D TCG_COND_ALWAYS) { + /* Jump over if !c. */ + over =3D gen_new_label(); + tcg_gen_brcond_i32(tcg_invert_cond(c->tcond), c->v1, c->v2, ov= er); + } + + tcg_gen_movi_i32(QREG_PC, s->pc); + gen_raise_exception_format2(s, EXCP_TRAPCC, s->base.pc_next); + + if (over !=3D NULL) { + gen_set_label(over); + s->base.is_jmp =3D DISAS_NEXT; + } + } + free_cond(c); +} + +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: + /* trapcc registered with only valid opmodes */ + g_assert_not_reached(); + } + + 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) { @@ -6051,6 +6098,8 @@ 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, 50fa, f0fe, TRAPCC); /* opmode 010, 011 */ + INSN(trapcc, 50fc, f0ff, TRAPCC); /* opmode 100 */ INSN(tpf, 51f8, fff8, CF_ISA_A); =20 /* Branch instructions. */ --=20 2.36.1 From nobody Mon Feb 9 14:27:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1654172897381223.61287350042198; Thu, 2 Jun 2022 05:28:17 -0700 (PDT) Received: from localhost ([::1]:39264 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nwjvz-0002Wf-HA for importer@patchew.org; Thu, 02 Jun 2022 08:28:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47068) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTd-0000zR-F3 for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:57 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:49485) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTb-0001Gw-OQ for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:57 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1Mlf8e-1nWiJT1Jp4-00iiXq; Thu, 02 Jun 2022 13:58:45 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Laurent Vivier , Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 13/19] target/m68k: Implement TPF in terms of TRAPcc Date: Thu, 2 Jun 2022 13:58:31 +0200 Message-Id: <20220602115837.2013918-14-laurent@vivier.eu> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220602115837.2013918-1-laurent@vivier.eu> References: <20220602115837.2013918-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:n9uj/wcEOptFifWOopaitigEcrv3wKxG0k5e3c8PoRgIJhpSjKx TzO30MOpWbjXPC8O/F+h5frH/s92hgOaDP3YNc27nEZaR33DcET6AIMDWtmXqSj9j0ZF7MZ iG2jjojczvYvhN5okE2u/PNy0ji7cfpspT9RHl5cJQeSESgxOnAIPzm7WpOsSZdjZR67Dpb VFhnQvgllBm77UoZ1GcGA== X-UI-Out-Filterresults: notjunk:1;V03:K0:3QQB8RgD9bY=:vbDiedLU2LZaHr5HUfjxzx aOHizySFZE/zHVM93dyQ4igU0imauPH4MT5M0FbiNhbZMQV81m6z36rIdmQgtIUVrXblLYaFT KHcwVGAnRU57a5x5Jan0EXo0v4uWng6wlqb6+xoTJiDnK3zgmsXWGNXNw2rOWxpV7MUFF2hZD mBT1yYqdMv9TnEwcpjp1ydwb86gLmdZiwBniKoa6fcyX21KRB6bZRVPOfgzJEPaCRSD/3c9T4 sRerqegodwRaYa48o9pqvcqFl2qLf73ezCbdAfs4g0bZINKrcp1w1SLub976ywG57pdod3BSB vnnQtJsW0Pki+74/rJVAw67jHfh9sKhOxpDofDA0uRmBvkGlBAJH8PUyl4/eUYkORQoYgw7Ih OtXQ/d+XA32QIMgWkg9W+0A426F5WkU5YTL7gNnbfCgcfpucGuXuITOlAABHyp3ssid/dRYmX WVD1d71eFWS+UpyTERENVUoeCVnW/Ix7VeVEX2KmKuNYxDNnhHBJVh0IdAavuhZrKKTDrBCEH EWV1+0eji3dyJVjdpgBD66ouUUmvaak5vP24MMJ/NS/jfr5b/kvtybhcHjwdCiLNDGIWzpLHW 1RZrtmkxzHjdHWNL/k8RbsdrpBm1LOLhB8c2uSyI62f/CJ6K5Auv17jSwufm3xLLP9FLYS+ul 3flOzmF48kBOqE8bcdcQT1Tn4fsv9/k6sJ1VZ5GV6qphP1dD5CpdZ/evnR3qDKLgjHbnt9gTD MWJG6y9EWtngHmapCqWr65ZOHMUZRgKrnIjQSg== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: none client-ip=212.227.17.24; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1654172899199100001 From: Richard Henderson TPF stands for "trap false", and is a long-form nop for ColdFire. Re-use the immediate consumption code from trapcc; the insn will already expand to a nop because of the TCG_COND_NEVER test within do_trapcc. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Laurent Vivier Signed-off-by: Richard Henderson Message-Id: <20220602013401.303699-12-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- target/m68k/translate.c | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/target/m68k/translate.c b/target/m68k/translate.c index e9aa96d7684b..8b2157c31f54 100644 --- a/target/m68k/translate.c +++ b/target/m68k/translate.c @@ -3075,22 +3075,6 @@ DISAS_INSN(addsubq) tcg_temp_free(dest); } =20 -DISAS_INSN(tpf) -{ - switch (insn & 7) { - case 2: /* One extension word. */ - s->pc +=3D 2; - break; - case 3: /* Two extension words. */ - s->pc +=3D 4; - break; - case 4: /* No extension words. */ - break; - default: - disas_undef(env, s, insn); - } -} - DISAS_INSN(branch) { int32_t offset; @@ -6100,7 +6084,8 @@ void register_m68k_insns (CPUM68KState *env) INSN(dbcc, 50c8, f0f8, M68000); INSN(trapcc, 50fa, f0fe, TRAPCC); /* opmode 010, 011 */ INSN(trapcc, 50fc, f0ff, TRAPCC); /* opmode 100 */ - INSN(tpf, 51f8, fff8, CF_ISA_A); + INSN(trapcc, 51fa, fffe, CF_ISA_A); /* TPF (trapf) opmode 010, 011 = */ + INSN(trapcc, 51fc, ffff, CF_ISA_A); /* TPF (trapf) opmode 100 */ =20 /* Branch instructions. */ BASE(branch, 6000, f000); --=20 2.36.1 From nobody Mon Feb 9 14:27:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1654172364711689.9925094487933; Thu, 2 Jun 2022 05:19:24 -0700 (PDT) Received: from localhost ([::1]:50388 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nwjnP-0007S1-6y for importer@patchew.org; Thu, 02 Jun 2022 08:19:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46992) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTV-0000en-FU for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:49 -0400 Received: from mout.kundenserver.de ([217.72.192.73]:42613) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTT-0001Ep-QI for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:49 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MO9vD-1o86Fo35UP-00Oa2j; Thu, 02 Jun 2022 13:58:45 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Laurent Vivier , Richard Henderson Subject: [PULL 14/19] target/m68k: Implement TRAPV Date: Thu, 2 Jun 2022 13:58:32 +0200 Message-Id: <20220602115837.2013918-15-laurent@vivier.eu> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220602115837.2013918-1-laurent@vivier.eu> References: <20220602115837.2013918-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:1OPeGsv3Q5yuq+In3e8gfptCQoLv/GmfjNIQCmz4hie6xw4gZDY EXACP5F9AujWU7Ef63iPaQ2n5auMQTaOHbeFk6CwyMj+W/zVG8vSV11APLv3IiPa9bV/qWC /ttCEIXXPeyE/KVigcGmOi4R2l5Nk88+ecw9/gUHNny1zBwP/0E1Qcdb5NM8OaVl0+p/NsP /ruNFD83OmQuRJf3tAh+w== X-UI-Out-Filterresults: notjunk:1;V03:K0:AurgsR2fp/8=:7Liw5zF12r9MeX8q0RI3JY 8uNIQ8z3D1iZ0OOx+XRWn0coPGhcnncwLINpBMqHVUj5hY/34CcYi5jzrys+rbj4G8KNAp2ev cduA69YRg47T6PMm1jc5flomfAL5o71KrU4mqcaDm9sn5USqWf3sN1Nr87YH+nP5YiOfW5kus +3wtaPsORpgiMJkWTg2Il3eYk9Dh7rNxt2mM/ZFOmlo/OnPZrDhJ5AXplpjuNo5CHJE6ZK8l9 HpRdsiwNLOn3YAilsC4vGPyAlOxsptowenLCqSzZS6iydwvQ3Y3geshkVBAAoDoFoDpsOa81i 9Sw5XAetiIvUx0519QNge8fwUSF6i7RPonCdL4IR0+6cMSIuQapQ+DkISFRp7IMZ2yZ5JSaox tOaPmCklpcbnPmMMnM+T2+nZfE/VQqHk1H/GjAe161YRIideqJOIy4cxV4S5vvNqWIjAs2foF AhBR4KzJf+vLh4xMMjueNI61tFHoXt3onqX47GXGMlQ3w4qgxnIRfk4uL+U2MQVrsOkehHIzl tU6h7jHE0BIGkRj4K2yAmJj8cPAKS/roSzln04vV0PoOWJx8XlijPQuurhcekd7uTy7tPzNXs BfB41BqeWB3msRbjGqFNHAsw27nmwhZmyOxpov1NoTFMeQQaR6ayEcKuGhIbTVxD7xa5QrXeP TXcGGsrmA3P+Z1vkac/VOHtNvyxzeWxEpTU3deoG3li5hoGjPLqWFSktrVHc3gxuQ417/7tdj tqkaTNkQ/kAWHWOeNUf0D2FXN/99l9HCJqLmbQ== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: none client-ip=217.72.192.73; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1654172366126100001 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Laurent Vivier Signed-off-by: Richard Henderson Message-Id: <20220602013401.303699-13-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- target/m68k/translate.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/target/m68k/translate.c b/target/m68k/translate.c index 8b2157c31f54..0dfddaa05628 100644 --- a/target/m68k/translate.c +++ b/target/m68k/translate.c @@ -4910,6 +4910,14 @@ DISAS_INSN(trapcc) do_trapcc(s, &c); } =20 +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) { @@ -6074,6 +6082,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); --=20 2.36.1 From nobody Mon Feb 9 14:27:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1654172480490698.6783836362073; Thu, 2 Jun 2022 05:21:20 -0700 (PDT) Received: from localhost ([::1]:54522 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nwjpH-0001wi-1k for importer@patchew.org; Thu, 02 Jun 2022 08:21:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47004) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTV-0000gD-UE for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:49 -0400 Received: from mout.kundenserver.de ([212.227.17.13]:36841) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTU-0001F5-8R for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:49 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1M1Hi8-1nv5qe0jxC-002oA6; Thu, 02 Jun 2022 13:58:46 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Laurent Vivier , Richard Henderson Subject: [PULL 15/19] target/m68k: Implement FTRAPcc Date: Thu, 2 Jun 2022 13:58:33 +0200 Message-Id: <20220602115837.2013918-16-laurent@vivier.eu> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220602115837.2013918-1-laurent@vivier.eu> References: <20220602115837.2013918-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:BsQvszhiMunhfUGS9kl7E5WtpL9uCiUN+7E2JTwK7APFKVOqxqs uXITMBrg8VOWM232q7CMZdo2L8hEUM9AEu8TsYBDGFGYjiqQ3NfWuNw3gJp1TPvw20Jo0GD Z94tVjk+0ZpnInJTa0F/ol50Obpz2AaYTazhDDIHJ8t2vKXPmXi5r0XethonHOTPRKKeM3+ 9+7K4fhh8qxPNtXhSEYug== X-UI-Out-Filterresults: notjunk:1;V03:K0:mOYMHOGQ4B4=:TQZWJWYOVJ+uglpJZ3XQWl 9tiahQdcB3cIf9xPRcA7ABUgTReaWzD60Pit+F/JcQIo6ZqW7m6VGZLqRFlcjtF2nx06cZOnL Mx+UYB53ytgS+cT/XPpqZUGUKJK9sper2CPxQQDkfCUojtslWvYfuciupvULCLu/Ohv/xRSaJ beFczOhZQA/CR8k4YXaU6IfzEEy1vqsGmgOP8XtwqJkOmGWIYnh4s6Q/sgPmtbVoJHJL2oQu9 k9scptl5YMIABbSrK86A27MVT701KFPCXHntWrPWXk1h+cSkkVEX6k/Htno85KGjaX60fPRe4 KHHdJw3fl5pyENNx8AHaIT3lCO2KNBF4f/aTG3sjaYIL8C1LHCk5IwWfSqu59AR+DEb9iJRur glxRFUt3WYU4OvAv183SCzL+ZhNbgFkOGMAPgao7NRAhAqR0y13vMWIBHTYYK8fY8iCPGFZF7 /xTf0NibLoy0n4Xvqq2iorksYWs2tt15BfboDHVWyZwY2bdnLL3ycqnYdIPWHTRb8fBFJY8D1 u+kwOCYKwD+aobgnR1txuXLuIhsDDvnBkG49I+zMSD4rhCKgp1s/Y//mCZr6xJaCDdh2idCny 2ELHHUpw7f59QXWliUPMgzgW1/olNHyM/9orikTZdQk1hb29ejzKfqv8GWDfPOKtU61fxoH/N a4ovGoGLUvLrxK3PLca+R4NoLk3dypsoKhyZHB2fFhf+psfsk9LYA+TJ8IZfjEmANhDzHHYhr q2nOQ1oxfUy1eEDqpDp4KADess/TEAHxmcUiUw== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: none client-ip=212.227.17.13; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1654172481454100001 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Laurent Vivier Signed-off-by: Richard Henderson Message-Id: <20220602013401.303699-14-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- target/m68k/translate.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/target/m68k/translate.c b/target/m68k/translate.c index 0dfddaa05628..8f3c298ad04f 100644 --- a/target/m68k/translate.c +++ b/target/m68k/translate.c @@ -5566,6 +5566,34 @@ DISAS_INSN(fscc) tcg_temp_free(tmp); } =20 +DISAS_INSN(ftrapcc) +{ + DisasCompare c; + uint16_t ext; + int cond; + + ext =3D read_im16(env, s); + cond =3D 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: + /* ftrapcc registered with only valid opmodes */ + g_assert_not_reached(); + } + + gen_fcc_cond(&c, s, cond); + do_trapcc(s, &c); +} + #if defined(CONFIG_SOFTMMU) DISAS_INSN(frestore) { @@ -6192,6 +6220,8 @@ void register_m68k_insns (CPUM68KState *env) INSN(fbcc, f280, ffc0, CF_FPU); INSN(fpu, f200, ffc0, FPU); INSN(fscc, f240, ffc0, FPU); + INSN(ftrapcc, f27a, fffe, FPU); /* opmode 010, 011 */ + INSN(ftrapcc, f27c, ffff, FPU); /* opmode 100 */ INSN(fbcc, f280, ff80, FPU); #if defined(CONFIG_SOFTMMU) INSN(frestore, f340, ffc0, CF_FPU); --=20 2.36.1 From nobody Mon Feb 9 14:27:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 165417256991056.98318176275586; Thu, 2 Jun 2022 05:22:49 -0700 (PDT) Received: from localhost ([::1]:59074 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nwjqi-0005Cf-R4 for importer@patchew.org; Thu, 02 Jun 2022 08:22:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47016) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTW-0000i5-IB for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:50 -0400 Received: from mout.kundenserver.de ([217.72.192.73]:48373) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTU-0001FD-Kf for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:50 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MvJwN-1nfL0x2Tp3-00rLHN; Thu, 02 Jun 2022 13:58:46 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Laurent Vivier , Richard Henderson Subject: [PULL 16/19] tests/tcg/m68k: Add trap.c Date: Thu, 2 Jun 2022 13:58:34 +0200 Message-Id: <20220602115837.2013918-17-laurent@vivier.eu> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220602115837.2013918-1-laurent@vivier.eu> References: <20220602115837.2013918-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:JQGQGKNSJpDygUX0DhsidVlCLXwU9dfSRO4lGFdhve62gsmWVgI Xw4aEH+tDG7KsFEru7MB7osN9JqM+/1+cLQaUaH3Xrk8ThFISRLTaohnHJllF4EfvC655Ig XPqPpFelIcthCfRwHTfqWwPZAevEw/qmEV/s9D5VL0wDF/Ru0Tr2xeIC/4a1rbnM1Jo8/P2 oKJH0kzyCnD5x8Ock8k4g== X-UI-Out-Filterresults: notjunk:1;V03:K0:NjKuHP496LU=:ugkM1EBLlHazMscCgvy+6j 5wYtdNtdPqYowHS24B/1C5yapdNY1EZdiMSSzhoGkcgV6nzzSDWtKppPNjBWu4nc9z7aYE/Ay 0Qaj29IN0Wt98gFsrJo5/ojPWRT3NmJs3wSiKwnq4olmSyRQbcGHzxc87iVJ4Xlx8oLVBz4L+ gJsfKcsrkl1dJHAJitrrIH75jAKp+D8JMU3iwLzWAlqGwVD1hLpn7cMRM6Eo/dkMr69KD4e5I Led17IeIhf/Dr4XNAsNfgjm0wC4QGA+zjz/cyrZtHjs7m9WfAzfMpu5ojspYfJm1VYv5/BmHh uoSfLxdF+XPLYYVUROOGEHt1iJqBuJSess44ZbzjW2LyPvOQsfoFm037qEOj9cC33/zfDQb8F 91+UK2piZTNV0iEq2lW/5jBqom6X33ANSD0aGEFZVlav2cdnPOu17Qv+0wEyHUR+Bmd8RmDK5 dPXdcQYaNocsAb0od+Kbi+NVWTU4QbDiWUBzqPcQ/tt6utd13NMI5WK9mtCZZRHlw8xjr/wYO ZcJnu/lJCXlnBtsrtqGRGhjCljCgNMM7nliYZeMjEEdnskhWG3FEGPhgcCupkzhScnoMBbecZ QT4PMGvd7Co+Y3UiUbhkHPRjhde80IACYfoPPSsVALtuqAIgyll0wb/a2t90WeN/NbD/G48uO 5hZVTBPwm1rxnu4eRkpyDVDZD9B7Nt41/hSse/cwjBjK2o1ZQJyufMomesr2MjAWBFpcWjv91 1hN7EdytKBx124BcdF8RvNwHm2W51wvY+fpkSA== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: none client-ip=217.72.192.73; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1654172571882100003 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Test various trap instructions: chk, div, trap, trapv, trapcc, ftrapcc, and the signals and addresses that we expect from them. Reviewed-by: Laurent Vivier Signed-off-by: Richard Henderson Message-Id: <20220602013401.303699-15-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- 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 000000000000..96cac18d4d5a --- /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 =3D puc; + mcontext_t *mc =3D &uc->uc_mcontext; + + assert(sig =3D=3D expect_sig); + assert(si->si_code =3D=3D expect_si_code); + assert(si->si_addr =3D=3D expect_si_addr); + assert(mc->gregs[R_PC] =3D=3D expect_mc_pc); + + got_signal =3D 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 =3D 0; } while (0) + +int main(int argc, char **argv) +{ + struct sigaction act =3D { + .sa_sigaction =3D sig_handler, + .sa_flags =3D SA_SIGINFO + }; + int t0, t1; + + sigaction(SIGILL, &act, NULL); + sigaction(SIGTRAP, &act, NULL); + sigaction(SIGFPE, &act, NULL); + + expect_sig =3D SIGFPE; + expect_si_code =3D 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] =3D { 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 =3D FPE_INTDIV; + + asm volatile(FMT2_STR("0:\tdivs.w %1, %0") + : "=3Dd"(t0) : "d"(0), "0"(1), FMT_INS); + CHECK_SIG; + + asm volatile(FMT2_STR("0:\tdivsl.l %2, %1:%0") + : "=3Dd"(t0), "=3Dd"(t1) : "d"(0), "0"(1), FMT_INS); + CHECK_SIG; + + expect_sig =3D SIGILL; + expect_si_code =3D ILL_ILLTRP; + 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 =3D SIGTRAP; + expect_si_code =3D 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 62f109eef46b..1163c7ef034d 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 # =20 +VPATH +=3D $(SRC_PATH)/tests/tcg/m68k +TESTS +=3D trap + # On m68k Linux supports 4k and 8k pages (but 8k is currently broken) EXTRA_RUNS+=3Drun-test-mmap-4096 # run-test-mmap-8192 --=20 2.36.1 From nobody Mon Feb 9 14:27:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1654172568744446.0773389718962; Thu, 2 Jun 2022 05:22:48 -0700 (PDT) Received: from localhost ([::1]:58910 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nwjqg-00056D-Gr for importer@patchew.org; Thu, 02 Jun 2022 08:22:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47084) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTe-00012y-Jb for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:58 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:39111) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTd-0001HA-2E for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:58 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MDykM-1o6apP0V6q-009vQS; Thu, 02 Jun 2022 13:58:47 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Laurent Vivier , Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 17/19] linux-user/strace: Use is_error in print_syscall_err Date: Thu, 2 Jun 2022 13:58:35 +0200 Message-Id: <20220602115837.2013918-18-laurent@vivier.eu> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220602115837.2013918-1-laurent@vivier.eu> References: <20220602115837.2013918-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:XWErTcrZ6W5JxPdOk3q0B2fTn1s115yHePcBVlGBw46nDI3KZJw JQIQy/SIJwh3UqaapA8CPrCDw9Yrp9XcUsWIoePE6cjqwZ6T6uzA6FCjpCu8aJYp7AykLbJ VlXfd4NgmXg6OCRpaFfPklD77p8u2DEIbaIk9qrCpo1j5/n8AWufHGVJvjYarDunAk+nsyE TGIAE8hhatX8npu+GgCIw== X-UI-Out-Filterresults: notjunk:1;V03:K0:EM9Dr8HJ7BY=:/TYFpVVxoDDSBa3VMK7+HH gTASeUxFvDLe+YvyXJKWdqjFzUjJBOyiAEf1nS4RQ+/ahem/PYYZuX+APOnjf3fQC9O4U3Qmq 9j9SHmRwFzICUmuLbdmevg7UMF6RTkdASUzvGCfKS98LQO/inOPl4zQSLJ/1VmyblLIspvdNI nxahldfng0CNVgYkX81C0w7bpul71PNhgMwBLzGSvl1UZ0M2AIzthX92l9GIDhA2/0NKL/oXe P3VDfYfQpvV7qQsmc71Z3fy486yo2NxSccVN5zVgBeaRM1S1Z+wOsVXTNuzBekb+nMnXDNJT7 IV6tPBq2Z61xJH8AX6zIkGs+ZRo8tI3LdeCmc2HAZNgUvVrdvRHrdtyszSKPW4+WBQKAsEvjk 2ESVoYZcR2VviA72HiIngGHOUnyo/meOZM+ezySvuwhfWbNG39NaT6VtZ1nuvMIbVuOZvDBxb dwRjBaaju0/Kmz+YW5OZwXdcUZUGr4qdRtAOk4HY+dgJXsQlPgtUfbCnfi4OZ8xr1g6gX/ieC s5VnkljkFrVeealawdUcN0aQKXk8dYR6VyCvD/V+xMln7MezKsfrQzegnKE67k/Osx4qFbF/5 RSPkI8sTlf4kd3TkuGd2NiC5lUaWoG0Iy/EPgeARF9fFi6Q79ErYgcKP5xHxlWOFxbBaDlb0g Ph4ovwF4XZnOE3miC6iOvqj3VYvqYFfV75S0FYZ4D2/pfLfkJdI+Asy/BZV2Yfn8HEUuaIh0H MHPcczzkHgEvVWMOsGrC08XRhMWpzOhqeTdaiw== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: none client-ip=212.227.17.24; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1654172569966100001 From: Richard Henderson Errors are not all negative numbers: use is_error. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson Message-Id: <20220602013401.303699-16-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/strace.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linux-user/strace.c b/linux-user/strace.c index 9fa681dea9bb..7d882526da03 100644 --- a/linux-user/strace.c +++ b/linux-user/strace.c @@ -689,7 +689,7 @@ print_syscall_err(abi_long ret) const char *errstr; =20 qemu_log(" =3D "); - if (ret < 0) { + if (is_error(ret)) { errstr =3D target_strerror(-ret); if (errstr) { qemu_log("-1 errno=3D%d (%s)", (int)-ret, errstr); --=20 2.36.1 From nobody Mon Feb 9 14:27:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1654173364337307.1014394404755; Thu, 2 Jun 2022 05:36:04 -0700 (PDT) Received: from localhost ([::1]:52972 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nwk3X-0002vW-02 for importer@patchew.org; Thu, 02 Jun 2022 08:36:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47018) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTX-0000jT-5G for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:51 -0400 Received: from mout.kundenserver.de ([217.72.192.73]:48357) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTV-0001Fi-Hi for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:58:50 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MmUDf-1nWR422KMD-00iRIP; Thu, 02 Jun 2022 13:58:47 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Laurent Vivier , Richard Henderson Subject: [PULL 18/19] linux-user/strace: Adjust get_thread_area for m68k Date: Thu, 2 Jun 2022 13:58:36 +0200 Message-Id: <20220602115837.2013918-19-laurent@vivier.eu> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220602115837.2013918-1-laurent@vivier.eu> References: <20220602115837.2013918-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:1i7W3jUYi+QzdhOVXBzBgAwSkthVMLDcViHEt268kF6hzJUTHls 42N81pfhCQLkI7K2avYmtSkLilpBe/7bjAVID3I5xcqjFXj4s7gDZuYSQDXBXhiQ5upzdnC J6+qO9aiY7Tt4JKo6SwgkPpHIO0NfKGkz128Umiqe1JBaiIS9utYQOe+88T/txf/xzH43ca zpMbLl+Z10TU3e0OGys9g== X-UI-Out-Filterresults: notjunk:1;V03:K0:ZWWXOEpeBKY=:Xd0oqVL5il1pHXarfkD11C Y7XS5H8Q3RaTAGARl90Fr50HPXyvzbVvv74sdv6X9uld6teKpA2Fx/JZH5nKMkv3s5ZF3OIWO nHNzrmpQzcObprc11fayI8EXghoK02rZdNq0E8si24NLsD30fVD/x+7z4xkE0ruHXY82WUyX/ 2sKu2/hslThDqlFnGmSxn6Ncm2/57Uct8mvywZ5LxMpSEtIWAwa7qYKhQ31D05IEBsYwf3iyN wsv+j1fMuSL7X58mnYCCsRgGMJVZc1dbez9qUFNffqeEB0WBuYDlOOE//nLPrtBiEQMGqTXo5 8tFpALWvL4wXok/a74RRo1rgq8FmlTgfe4phZDCrrZpfLwVbJakLT5D9pMp8KybrESLrbR3gb uIANw3I8s3QqosHL+9r64hWyzcwO8I6ZFgwmx8OEiOAVAnaXalQgUjwU1onacIdSTBxX+2ZgU ISUOhTOM35d/QsllQhZTOrMBx99f9x/OayhwuIu25Qh8nrEtCqZ6DfTQydNxTUJzVYm3PFaB8 BreZ/+tN/vFzYvhq4lz/ex6PsPMDYv7Da7JZNLHpvm0RcEnA5I2HR36l8FBWCtoOZr3sKZVyP ZYoZLi16qC2ChUnbs89n7ThYhA5tV393fhqs+FamLQN28qecAZQz6XdUoh7NUysAFaqq37dCM o3S6SIKiU+cdDeQOYgyJDsDMWVTveTXZcYhAGm8xlSp5pMJ4Y50u1kmJ9kQIA6LqDvDEbOTXv TRgg9viJw7rxMtn8DxsTfkmdDMljAhAOcbNmZg== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: none client-ip=217.72.192.73; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1654173366066100002 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Unlike i386, m68k get_thread_area has no arguments. Reviewed-by: Laurent Vivier Signed-off-by: Richard Henderson Message-Id: <20220602013401.303699-17-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/strace.list | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/linux-user/strace.list b/linux-user/strace.list index 278596acd131..72e17b1acf00 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 }, --=20 2.36.1 From nobody Mon Feb 9 14:27:35 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1654172619773890.3970725968337; Thu, 2 Jun 2022 05:23:39 -0700 (PDT) Received: from localhost ([::1]:34694 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nwjrW-0007mV-OC for importer@patchew.org; Thu, 02 Jun 2022 08:23:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47102) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTh-0001Bh-Jv for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:59:01 -0400 Received: from mout.kundenserver.de ([212.227.126.131]:55455) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nwjTf-0001Ho-SD for qemu-devel@nongnu.org; Thu, 02 Jun 2022 07:59:01 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue009 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MsYzD-1ndhNy1SMF-00typ9; Thu, 02 Jun 2022 13:58:49 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Laurent Vivier , Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 19/19] target/m68k: Mark helper_raise_exception as noreturn Date: Thu, 2 Jun 2022 13:58:37 +0200 Message-Id: <20220602115837.2013918-20-laurent@vivier.eu> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220602115837.2013918-1-laurent@vivier.eu> References: <20220602115837.2013918-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:r8vNTj3IrYU1gL5zTDko+2/VbcHj2MLpeigxtozZJCcK6LnL7q+ 8sfb0xuzFJPNIbh/3fLluUp3J8UyT6jZgf0+FBQmLopayYtjGp2UKLuq+TpOeIwsbhpgu1C iX8jII82E788YIR/mXh3t+6eTEPX//QffdbkAbIz7bB2pALR75ALtU50tOnqpm/k4JLuAaG rwzqi7PpnDW7T70Om7UVQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:s9/8px6N+I8=:MqSSY3y7ibhDqoEi5mX7Vy +kmQy+0vqER70rO8nKBv7bas0iDzGYW6l2sJfV6igqofpgIMzqw4eeDb9UBEQMA8i3jkx++4t w9EPqwn4kHDTbaFaeGdgi7l5CvP97iBb/wtlxXWACr0At2g9I7TLTEh7adAEjMfoIQM1GzlO0 /M1+uwjE0cLBd7KGUTcQ0f/5EoAEmjiyLTtyR/8g3zl82qj8CkfMenCoazqibAfTAsHy8i3Nl 8hNriLTQncwPTKhthnafDqiCXQXXtuNQezY1W85B1EgITnHCIaGsizQpQGI8kYzteKLHrcRF6 0wOPpO7/9AfPCGFqbWBboiJnp22waJhiF0qq/S+U6ip081eexmcvhEOzBWhV/KphupZwwT+2X 33sFs0MuRGHeJTvAFhUR/ymSEgWRpAUgD/89b7eSMK96K1PAvJcFmGYPjU9uRSHDJ9whV3bmj x1PRBd/mjfwIIr5O3vMSgrHh8uMau4pwsxTZJIrH0r+SQykiXZy1UDfwbZvEllBZFazmXYDl2 bxwDydgUAqnLfel8VSlDo0lYm9Uak9KzvVzKI5tKkKNXgnlsVjGKe3cgSkg6y1UEc6BdQJTOX I52ZD2PFYgNAFmishZ1nYkUT7a9qnW1FF7xHGfShnbPUrTK6TvuQsTlYqcKuepLBpPw3BmqlL IRs/b/QbFElVsApEdftrRkxzodnEP3vLKHCt2sGUo5PuY1mQCxWOcYaOHn5RxckOqOblBcSL/ v+jmzuVstpukt/CJsR+gX+XvgEvNL/Llo/r6Pg== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: none client-ip=212.227.126.131; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1654172621244100001 From: Richard Henderson Also mark raise_exception_ra and raise_exception, lest we generate a warning about helper_raise_exception returning. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Laurent Vivier Signed-off-by: Richard Henderson Message-Id: <20220602013401.303699-18-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- target/m68k/helper.h | 2 +- target/m68k/op_helper.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/target/m68k/helper.h b/target/m68k/helper.h index f016c4c1c226..c9bed2b88456 100644 --- a/target/m68k/helper.h +++ b/target/m68k/helper.h @@ -109,7 +109,7 @@ DEF_HELPER_3(set_mac_extu, void, env, i32, i32) DEF_HELPER_2(flush_flags, void, env, i32) DEF_HELPER_2(set_ccr, void, env, i32) DEF_HELPER_FLAGS_1(get_ccr, TCG_CALL_NO_WG_SE, i32, env) -DEF_HELPER_2(raise_exception, void, env, i32) +DEF_HELPER_2(raise_exception, noreturn, env, i32) =20 DEF_HELPER_FLAGS_3(bfffo_reg, TCG_CALL_NO_RWG_SE, i32, i32, i32, i32) =20 diff --git a/target/m68k/op_helper.c b/target/m68k/op_helper.c index 61948d92bb25..d9937ca8dc5a 100644 --- a/target/m68k/op_helper.c +++ b/target/m68k/op_helper.c @@ -532,7 +532,8 @@ bool m68k_cpu_exec_interrupt(CPUState *cs, int interrup= t_request) =20 #endif /* !CONFIG_USER_ONLY */ =20 -static void raise_exception_ra(CPUM68KState *env, int tt, uintptr_t raddr) +G_NORETURN static void +raise_exception_ra(CPUM68KState *env, int tt, uintptr_t raddr) { CPUState *cs =3D env_cpu(env); =20 @@ -540,7 +541,7 @@ static void raise_exception_ra(CPUM68KState *env, int t= t, uintptr_t raddr) cpu_loop_exit_restore(cs, raddr); } =20 -static void raise_exception(CPUM68KState *env, int tt) +G_NORETURN static void raise_exception(CPUM68KState *env, int tt) { raise_exception_ra(env, tt, 0); } --=20 2.36.1