From nobody Mon May 20 16:30:38 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmx.de ARC-Seal: i=1; a=rsa-sha256; t=1664391119; cv=none; d=zohomail.com; s=zohoarc; b=RCZ8j66A9lMyRj4ZnxQNeT4Glq6NPdnRSFllG0NDLlcDtK2ux6KMCSI9DAs57dxuC9iXQpRy3+mLNGB7CYnACvTjZZiEbLKh2PszKVm5vYECiRWkFrBeBTLeoZYqjJoRRlTa1rIuOy06Yj0QzRq9YP5mYLmwXk6wH7nz42UDVwg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1664391119; h=Content-Type:Content-Transfer-Encoding:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=EA68b57SqXcy4ZNhl96ANtnkWPFWxJu6COotidpOQlA=; b=ehS2mhJ7YvNxvIcVKrqWei+t5ZR5qXkwwzHRP/hHOdxHLKYhOIFojVDTrubTZP6JE5jGTepEoobZUxMcHovvE4CFw4wYwsusF9E8SVYqS8qrzoPVqkMB8eSH+KHPg32PRuuTycrrdhdaTRgDlqIFFTBLjLd+bIsbycXezdzO9l4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1664391119349341.0364161147254; Wed, 28 Sep 2022 11:51:59 -0700 (PDT) Received: from localhost ([::1]:35958 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1odcA1-00064L-Gx for importer@patchew.org; Wed, 28 Sep 2022 14:51:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:52578) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1odc7X-0004Y9-8i for qemu-devel@nongnu.org; Wed, 28 Sep 2022 14:49:23 -0400 Received: from mout.gmx.net ([212.227.15.19]:54329) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1odc7R-0006TP-RG for qemu-devel@nongnu.org; Wed, 28 Sep 2022 14:49:22 -0400 Received: from p100 ([92.116.180.135]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1Mf0BM-1pB0vg2NQ2-00gWgX; Wed, 28 Sep 2022 20:49:14 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1664390954; bh=0wAfRuqRXm6UYnnUf+5fqHk4mCJEck3Gd1tyiYO555E=; h=X-UI-Sender-Class:Date:From:To:Subject; b=IdiwRREZKKc/jE0lVg67UytyZLj4LANYFAFWmb4dbYR2yb1SHZLVllFpCCr82gPMm VPmmPaa1tQp5hhg7XvpEOPigANBMq0pRx43qG4TcsQJa1XstL3L5Y3SXEbIkodFM4q RwwndZFf+TODvmVbz+TwaHUmWKV9QZdjZjSn3W3k= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Date: Wed, 28 Sep 2022 20:49:13 +0200 From: Helge Deller To: Richard Henderson , qemu-devel@nongnu.org Subject: [PATCH v2] target/hppa: Generate illegal instruction exception for 64-bit instructions Message-ID: MIME-Version: 1.0 Content-Disposition: inline X-Provags-ID: V03:K1:fYpiKarELmXUGjFb0wqIzQAU5ccscydX1/kreoVhzafVQWUc9/B /uZUhKfAVsWxu+dU8HWDjyRD7Dk6XJ/Juhnsp2+RY/Uf7bsw20DoSErxYmWgCwFpTkuYoeM vX1OYIQXkYkzCDmJeA0r4DYOpHKbeVZ0YKjdsnJ7V7e8PWBrbRTWYfmjc5xRrMSrXOT1aXu UHrwf83uVNcxZf4B0S4cQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:upUQPAiOS88=:/zA8tWhXKJjjcclKsDAPXo tLKbGzK+LERd1hsNFYWBJKr3+FmSdnwMoi2VaPeXJi3vyZvQbKlSLVATz5w/m9h9+GMqYJnG7 7nPmXbaTfCOw6yP19wQvl0SXvocYIc1mBywxyeB7BFvaNp1XO3YuNNgCWXNJd+fOA0Z6fIpcT Ow9vLYCa2Jd+Us42YXr/1rGR5NZtO0CWLDxcTlcGtv9WL5qO24Odt5R3LmNWaD7hNsPd9Iffs lou9FLccazRhn+Z47kDHtfJJpuTDW5ZgbdR6JD6C8s4kdP22Pv/egbHQzT18TZnXGwRaSm1IW uxfnuiRVjfcAJUPToCzZWQiImoISN2dnudCP6hEEHnqc8qSt4TFwucISxa0iJtt9TE20xe6t7 IMkJepfrbosXJ2n3soAG4wI9GHkCm3udlNK1dTLfXmtlTvlZ91GFjHb/nkz9dm1uK3d9W8mCT g+I/pAq6325PajWgguvN2Wx+cs38ARvGcA/cxwnZ07b+K/84ne8mJmztT9YB+rOI4kipqtRRT n0w0pWjJDkZkn6/zJjVFd/x4Lfd99dCsfLnpQnU1YS/kRD746bPFWSZ5sy2h+J0GqwJcYPiOB 4Rx95laVs5qsYn4OW8OFIWFrLtlvt4GslRiMuQiOhoguJF4pr7WCg2o4iA/oEAXnPEy4ST0Kl kY4JEEyg5XXs6TWGzae3QStht0RL5qrS/MWfptFJbVuJMGq20r6pkeGKno+a2AQswdEefXW+Y YjtOXa0UC3kLvPtKYm8PLlKyc9STUa58ayBGrS959jTSKjSAMntzKKrHxg0CiDVBpp3rghPEB E+/kKP2d4ljyZKWN5O33kGOmSaN3ZeKo3NnnuRzulyZvj7PqP8DeRTXIoNmbBIbQK9VUEW8ot Jgl2GQ1JzDph/McHg/RkDRSrPCgHoHEF9dacTIifBzxfgSDfzMVhdPa2xfgr5dU8A9NI7jecI FJ4rAFnB6rnl3RnqkVtnboPGYfp5iwGY7Jgoxpewf3DIjXTjJQVEiOSGeD74mbQqksNyGuGUP jp4f5VeQmkb8cSFdSp2qSDTAVnw4YP6zdQ/eZsTLBM0MwilWZimoAIgeYCFoGPhVgeQEk+1zd zZUjn2peD1Lh6jqcLjpGqMXwL/a2URvbpfG+nuS9PRDS5GG9KgNcVUgsU9kT+rzVZsEh7FJpb TIwKneBSrQ9OC8T5fClxt4Fyxh Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.19; envelope-from=deller@gmx.de; helo=mout.gmx.net X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmx.net) X-ZM-MESSAGEID: 1664391120658100001 Content-Type: text/plain; charset="utf-8" Qemu currently emulates a 32-bit CPU only, and crashes with this error when it faces a 64-bit load (e.g. "ldd 0(r26),r0") or a 64-bit store (e.g. "std r26,0(r26)") instruction in the guest: ERROR:../qemu/tcg/tcg-op.c:2822:tcg_canonicalize_memop: code should not be = reached Add checks for 64-bit sizes and generate an illegal instruction exception if necessary. Signed-off-by: Helge Deller Reviewed-by: Richard Henderson --- v2: Move checks to trans_ld() and trans_st() as suggested by Richard diff --git a/target/hppa/translate.c b/target/hppa/translate.c index 8b861957e0..a32036c4ce 100644 --- a/target/hppa/translate.c +++ b/target/hppa/translate.c @@ -2899,14 +2899,22 @@ static bool trans_cmpiclr(DisasContext *ctx, arg_rr= i_cf *a) static bool trans_ld(DisasContext *ctx, arg_ldst *a) { - return do_load(ctx, a->t, a->b, a->x, a->scale ? a->size : 0, + if (unlikely(TARGET_REGISTER_BITS =3D=3D 32 && a->size > MO_32)) { + return gen_illegal(ctx); + } else { + return do_load(ctx, a->t, a->b, a->x, a->scale ? a->size : 0, a->disp, a->sp, a->m, a->size | MO_TE); + } } static bool trans_st(DisasContext *ctx, arg_ldst *a) { assert(a->x =3D=3D 0 && a->scale =3D=3D 0); - return do_store(ctx, a->t, a->b, a->disp, a->sp, a->m, a->size | MO_TE= ); + if (unlikely(TARGET_REGISTER_BITS =3D=3D 32 && a->size > MO_32)) { + return gen_illegal(ctx); + } else { + return do_store(ctx, a->t, a->b, a->disp, a->sp, a->m, a->size | M= O_TE); + } } static bool trans_ldc(DisasContext *ctx, arg_ldst *a)