From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324255; cv=none; d=zohomail.com; s=zohoarc; b=PwLgsARaHGKxMW+F8WH0MMuLcsoYnbpKKOrHCnvMp/yi0ZVUdUK1Dsx4xP8JztSU6qxPwL4PAt+0frsJSCP5qInP/PFeBVEkOlChvrQPszpKgKGEyNN+5Yj0qDmrY1CfgapwVmy88sjmLf2dUwZ7hQmTl0cDMV8+LyfLjc7wuqg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324255; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ZNTR3/6EkzzGDdmrE+eKhhQJUXAT/uyCSJ3ksScZAE0=; b=FYQtj93HN6d/HvjGIckOlqU/+oSYo8oJNbcg8Pxp/d/oOJatn9dLvBddlJouoyQMLy0mKFVPpQFeZiPjXdp3k0lURrnGa1wbGqs9/D0mjOtExTDIkbp9vH75CROuazoMejlBNrLLmM1zajQHpe/QPq+fT8oNSOOq+UQ511I3nI0= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17883242554613.9248623040698476; Tue, 1 Sep 2026 21:44:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1coD-0008Vq-Bp; Wed, 02 Sep 2026 00:42:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1co9-0008Uq-Mr for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:42:46 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1co7-0000Iy-DU for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:42:45 -0400 Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 681KTj053109252 for ; Wed, 2 Sep 2026 04:42:42 GMT Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ge1wpan6r-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:42:41 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2d94a158dc8so10158065ad.2 for ; Tue, 01 Sep 2026 21:42:41 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.42.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:42:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= ZNTR3/6EkzzGDdmrE+eKhhQJUXAT/uyCSJ3ksScZAE0=; b=GtjEYlJwoSMwKm3p zHVpwLe2Eg/NfpUOoSl+bXT9Rkrgtx1gLs6QyoSFP3F8dNO8DH/utpRcb5zQbc5P QLM6y3rHcpv3LvO2NzYLn+DjstNdnucSWLjzPl/JYenETur+lrxIlEN8B991DjWn /poU0JhL0qb6sT4zYjrqocy3bVYcvX0YkAx+/my7wrDyOyHIVyqSb/7PsfyfdYau JEUCNTt5eSr/kac0ql0KsadkrMTwFiea7wmmzMZ+iybpkCJchBLcuZmT8YJ2UwSI fCuTxivEQ3gvl/zYU43qIjhBWgk7e9Ft7fOKrGYDNnORlRxAWXH2kEiXBrcD5w/l TDz66w== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324161; x=1788928961; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=ZNTR3/6EkzzGDdmrE+eKhhQJUXAT/uyCSJ3ksScZAE0=; b=JysyZ9kvUQ+Whmgp72r/jVgIli1edo+0Hjm4xczHRb2F8vIn++WqGevldd4GLmDzV5 ggul3uvgdRi1V304frRbTIPlUGEEzYWKGUBD2DQklLrcGeXhsIw4xtCs4x2infUVsV38 CVsjiz9PFZ0wTJh6a/5hR3RMuJq39odh2lrB7x5EIwpj9gHvYr3bJQgFhTVLlbfiANpO +3QMNrbB1TUhZHJcawe47kWSTsPkFJ4xQGsEfchMn4fMveZvDckWOwW08PGr7q2qe76m EOA7dOpf27ydXAywOVQkKh4AlwDErgYgVQJAm5ajHe4+8y3m7pcVQTvO3uZVBoEM36Nd 6Prg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324161; x=1788928961; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=ZNTR3/6EkzzGDdmrE+eKhhQJUXAT/uyCSJ3ksScZAE0=; b=Gz3pXp3Q3m6ivM6spGOXUWfR8wwOmUpUsZ28Toc8MRZi845+q84EOdzEFHe42t3+Fl CDmGqJ3fN0DAzV7aPT9/7ZA5MiOY7DvFN5jkbkx56Vkl1jumC256OhO5yRO0K3MYib7I hXzDaY9m1ncpN9VomlOBeM1V3XcZGaOpjPp3YvJEKmUsV69fTrvVDVkAMX6LDt65POul oLjbeHNi2hGkqmYvJCeM4nRPQNGfARY1CWzFYXbZ7ozVu6+6GJOAyofoe6rB4vjamMVR TMeTf4+TiexKXNyguB9mBaKpdGHRNmrr/4gOOwdQE9n3Nm70DOFgPQoVwQ8TEYNAkYpb FTTQ== X-Gm-Message-State: AFuF++mKdwNK5aUGBkXmbzNGmqG1xBTeVyrfA/Cc8gAtFpOZAaxvqla8 cC+hLKmfRQR+55fe6DG5OyJWCvfuzsm7805cGL1aRqRTy5p2rll8q1I8z2LbvemgjBvuiyz7IAG 5n9WEtgFRskG2PoLZS0i0VoLKJCP63f6irlIS8z6A0DFAFsxwXq3N5NNtXjnZCL3cSg== X-Gm-Gg: AYBFou1sc/1X2+NIJrAZKZKMq1utcpy76uvP0PK6UiofWHMG/mTI4i+ST9ULD/CR3sl 5y2WwJAAEjJ2VwOG+bSaZoBTOiMX0YsLKajJmyLk6Z5oZubBmLmhJW8VDof/841Uv7/yJNHzg9S CB3KBIvt2mTy5fMEb8H+3uA31BDKY2o06iSm3n8fF+YaBB265wacLlLWUDIpc9I9QNjpQCDVLsW 99LpUKFDDfPEyLPiRz8kVMj4uexa4KBhwkW/I0F924UoaCpY2e1+tMFSNs/tIo4ADQMYYMsLE5R 0dS9y9ewFLPHq8MXLBC8YxRRTKlWAUn00go5Jp3Ar/3y7/OAdwIPF/FR4IPHOq5I2TqUD/v0BJe lLIBCifkfOtmVI6IMOTcZuqcyy6GmWYFKeULiZ0ACEV/30nFh X-Received: by 2002:a17:903:3810:b0:2c6:90ec:f601 with SMTP id d9443c01a7336-2daec5e6457mr11107375ad.8.1788324161311; Tue, 01 Sep 2026 21:42:41 -0700 (PDT) X-Received: by 2002:a17:903:3810:b0:2c6:90ec:f601 with SMTP id d9443c01a7336-2daec5e6457mr11106875ad.8.1788324160781; Tue, 01 Sep 2026 21:42:40 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Matheus Tavares Bernardino , Pierrick Bouvier Subject: [PULL 01/28] disas/hexagon: honour target byte order when printing instructions Date: Tue, 1 Sep 2026 21:42:04 -0700 Message-Id: <20260902044231.843004-2-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=F8JnsKhN c=1 sm=1 tr=0 ts=6a97a941 cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=Y0R2AH0urpkzOH2ra7cA:9 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-GUID: 2seM4BhQVIx1zWq6-ly2DDadPVm29nJu X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX8hqjjxXtJTac sEiwqSOvaDKO0yd3RzXlo4oxnUqyOLhLP9767GBYi+eeSbBuIFSzX2LLQHda/RkxIgG07zCOALo M5wfE8QPAiTaNmsmFOwdazkKfpG3F/I= X-Proofpoint-ORIG-GUID: 2seM4BhQVIx1zWq6-ly2DDadPVm29nJu X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfXw6l+1G4jmNqT r0QgF02+2CfdMqW1+mR/Eaeg7N6nku5tZoTYPHqnWwS2eulkXC8hCByXVMB9apJFA9D1xXlwS+c TluuYbpZJq4eyyr9mYc6BX7ZPfUP9HzcUSJjI/mtNDp7Q+2QbIdjSJs4wprSnOAfr8qPGDviU2U KgK/cu6T2WFXMoL3pMojqr4E2HYaCtqovoA+lSPQuf/4h6ZsGleDdyT73zwfY1QBViuCQG9RikW hifYYwSWtHuHdKXLwqiS9/C+aFMvEh7+KkiNS1yjNohjMBV2u+9Uc0AeW6X3WL1Xb+yUSI2SBIA Z4k9Lv4eTR3sd9ox3u8rBq3UWloBRXAt72vap5Ql7ACbdM7rmkoN8IU2s1SqBUHnE+gn7pUwWJ1 Y+yxCXJqQhHUtMGQLQZ1wOUiAejdhnz3gCr4jlB/oRSBe5yCuObti8wqE4t1t442nmk6SbBusXW JyBnCFClqaFEdQkDFHQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 priorityscore=1501 spamscore=0 lowpriorityscore=0 impostorscore=0 adultscore=0 malwarescore=0 suspectscore=0 clxscore=1015 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324256008158500 From: Matheus Tavares Bernardino print_insn_hexagon() read each instruction word as a host-order integer, thus getting them inverted on a big-endian host. Instead, read into a byte buffer and convert with ldl_le_p(). Signed-off-by: Matheus Tavares Bernardino Reviewed-by: Pierrick Bouvier Signed-off-by: Brian Cain --- disas/hexagon.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/disas/hexagon.c b/disas/hexagon.c index e2d3804606e..62e0cba6611 100644 --- a/disas/hexagon.c +++ b/disas/hexagon.c @@ -20,6 +20,7 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/bswap.h" #include "disas/dis-asm.h" #include "target/hexagon/cpu_bits.h" =20 @@ -37,9 +38,9 @@ int print_insn_hexagon(bfd_vma memaddr, struct disassembl= e_info *info) int i, len; =20 for (i =3D 0; i < PACKET_WORDS_MAX && !found_end; i++) { + bfd_byte insn[sizeof(uint32_t)]; int status =3D (*info->read_memory_func)(memaddr + i * sizeof(uint= 32_t), - (bfd_byte *)&words[i], - sizeof(uint32_t), info); + insn, sizeof(uint32_t), inf= o); if (status) { if (i > 0) { break; @@ -47,6 +48,7 @@ int print_insn_hexagon(bfd_vma memaddr, struct disassembl= e_info *info) (*info->memory_error_func)(status, memaddr, info); return status; } + words[i] =3D ldl_le_p(insn); if (is_packet_end(words[i])) { found_end =3D true; } --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324231; cv=none; d=zohomail.com; s=zohoarc; b=YeYt0QNdhdZ3ehiFvX0HdYu80usvjh8KwRHpOVOMPnEH3aLw4NS5OXwn6OZzXX8mgUC2GKIx+PYpI39dyogaxsWxpaoUTzi++YbdQqTCfG98PjHG/Llf7H2ZFUPuBJDHiA6MRVrbMp1cahgcr58g14hD/HbARl4+0HCc5eW8cOs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324231; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=WvmBQy5dMbgt9UR5nYGTA3klSicXmWsc2axDcx6oLEg=; b=bXzDLi2zJipg4TUBFen9ghJy/d9uji2DDVRip/qWk8q/a/rMsRFYka2EZV2NsWUZb0YQbprT8a3b2unn4sQ6bbxXpsNPpeZ5X7ntBYeR8xMPomx7B1i+T9c5ZE+AUtiRCUWiCeqxynYemO0300AITqwy3ksuicQrAHKT3L9E0bI= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324231550841.3129616272465; Tue, 1 Sep 2026 21:43:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1coD-0008Vs-LZ; Wed, 02 Sep 2026 00:42:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coB-0008VA-F9 for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:42:47 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1co9-0000J6-O9 for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:42:47 -0400 Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 681KTHen2982853 for ; Wed, 2 Sep 2026 04:42:44 GMT Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ge35k25r2-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:42:44 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2d63bad3d09so10425365ad.3 for ; Tue, 01 Sep 2026 21:42:44 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.42.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:42:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= WvmBQy5dMbgt9UR5nYGTA3klSicXmWsc2axDcx6oLEg=; b=RxrkkBGfg2CYqsIY KjX34Hgwi6Kxxz0LnctXsqb/svMs4zGbuFdm7XThJZpIfObxBt60OmptfcVqbg2/ rosV/Ijlup/4awzQy7dw1Pz2TBjqQQspfUxR9KOHBPM0gYfAhqbMihUum9WOTZNz 6Q/SrpRm5iahk+0g3Qg95DVsvXD8hxjrYOI3M5AMvK/JDzfB9pG91cGQ+voMne6r deGIg8vrWGaGU9M8F8POYajCHVc74mNlawWpWl4tHtzCD/1b2yTel1Z3DSnr7OtN rxUz9xefLfL5BsvCkeylDN9owMnwpOFX+LFp9660hs318Ji1M+TxLzGIKxg3HNCq pC4uEw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324164; x=1788928964; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=WvmBQy5dMbgt9UR5nYGTA3klSicXmWsc2axDcx6oLEg=; b=OnDakW9IZ2zGMzX9Wk+RuQTtTsslBPleHs8wutdnmHW0GBMR6YFHLvoHpgjds/+Ij0 TFZYJEerVjBhXZA+hhmS5wjSywBO9twqEkCvaiSnAsx+OjVErTb6Nn22MPY5LOJTQjuv 2QspXB9xGy4Dzz1xedF/24EhmIuyP/OtCI92HX6wsbsmMMO1h45qhnQRXS/zpQ/L6PhW /2vmR4+i+YowaCuMNu6BiE7X8Txv8PYvNJVH0P0b0rJ0yzI0vuJDK9mRGq9jZfnp4Hc1 yLN0TlY+z8hZImXX+0+stPXBU+6cF5KpbP+lW+irGFbh7GpJuH+GcUziB6+iyVzYhRUm d3Ew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324164; x=1788928964; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=WvmBQy5dMbgt9UR5nYGTA3klSicXmWsc2axDcx6oLEg=; b=e8XACrrnNap/Jv4oBy0szDnl0PUvkADmeXBv0NI/iTM+KZ+4GskZV1lmY0hitISEPy ntymYDHwoXBcyJR9YLY+tsrfBb4wBNdBdtEzKCWdoWxOUqsmXAv2hgWnGr+Cm3/5E0fr sj2TMCPMqefoVDhCPDh7NW5+4XDTGgpDhyTvwsj1AXBUmhgDYCPoXB0o5BEtrrAQ/cNB Epyn92XnZkuBfMoT/Pp6di5BaRw51vI+wiQrIRDMpBRi8t5ZT5NCpaT8Zk1+GTQYP4GP xvfcAn2OiAr7Zo7NvHcyU1Qgq9bYW+je35Gk5zhhYCOR1PLgWSfcUYp9qcm48/tJbDi4 kuAQ== X-Gm-Message-State: AFuF++lMwd05SvJdlyJoH1E1+t00/mghWSBIwSaoZeh3bMWzf52Lly4W +Jn7231OurtIRGzsZj5Ek/gOPWOk9VYPMXJm034laAnKs0Z1BwGF7VOIoYl1Y2ZfZMlum2GkiQR I3o2HNvNl9pps18m7Rs5EZvIuqYB4yffCmFO7gXiOmkd4IrZkjrf04Oo8k0RKnF2rqg== X-Gm-Gg: AYBFou0prtZd0mn46u/IEPhA7Eod+5ArR1fZAZXPfPnp3KQ5PF1FqUHwKXF7KLHhgDm N6qqXMrolUcFuIWkJBAW2Au+jR+MacaFoVG/zK0u6n3xNo27Mdm9bblTSxlJd6G1XgGYztFpHxK p6H90rw826d6YLVwwKTHqrFxkGvYUJjCdCkS5yupMvlkCo6u2l4BWHr2vmIZrK3tzeIZ+f3HzSM a3c+N/JVAmThELw2G/iwNOXijdHb7edeSaDKCthVaE+nlgp1RQ+VZ/4z3p9NbIV8OLP+FrNH1u6 8TE1XYEUg4MqsqiK8kP8rKaROrjDUDhGreYlvzMWdEEDRpQUOjKe05QqNbGUb3bWMLo4mL1ohMw PwU9hZ806ROWF+JwIOKNqVy97ffIr31/3K+AM4xkSa9LDYp7B X-Received: by 2002:a17:902:ce87:b0:2c0:a555:80d6 with SMTP id d9443c01a7336-2daec5f25b5mr29762685ad.2.1788324163759; Tue, 01 Sep 2026 21:42:43 -0700 (PDT) X-Received: by 2002:a17:902:ce87:b0:2c0:a555:80d6 with SMTP id d9443c01a7336-2daec5f25b5mr29762105ad.2.1788324163200; Tue, 01 Sep 2026 21:42:43 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Matheus Tavares Bernardino , Pierrick Bouvier Subject: [PULL 02/28] target/hexagon: fix store-conditional on big-endian hosts Date: Tue, 1 Sep 2026 21:42:05 -0700 Message-Id: <20260902044231.843004-3-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfXxwCPESbkI45A +l/EzzdNBw6L/KGxz0q9P0+ZkbJismyqOEaYw61t49zyH4DAq7AlGb9rb49FWc076RRA3yoB2KF g3bEJKimKezPjmCG285QCCM5UIx78H/RB+F8lWR8sXNPx7WzYLMROcZL8p9ikYa0CUrCSifekGP XHGq6BnSg1sAC8u7QC+AfbjCrFgDeQmdwJSkOOegylFHHEvzrVuJr2crPvc+LZibMoXUwTLP0rv qExhabPpNC8DsPDutjjUKv4EFt/wvafY6kHoTw0yZsGCEyh61Ngi/coN0t9XW5Ghy4nWpbw2qrl b6BZJb/YoW4CpbWn0wMFnzV2UEy3eLaZ3W+QPsPbcaRRt9lyK06s5o5wSWmET7gfLmCUJhO7gw7 QBgAOk0NJjgIfWcxDlN8V2i2XsKT0I1tCIzykq3dU8H9vuvmoIwR4VF3n5MShTt2dEugo0VeQJS NmCBnS8jtokIJkNEfMQ== X-Proofpoint-GUID: vwB2-9lD0D824f4JziFo1BwvQyQpVA4m X-Proofpoint-ORIG-GUID: vwB2-9lD0D824f4JziFo1BwvQyQpVA4m X-Authority-Analysis: v=2.4 cv=VLrtWdPX c=1 sm=1 tr=0 ts=6a97a944 cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=leud2LzcgvzU7ZSISvAA:9 a=QEXdDO2ut3YA:10 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX/1yg+kY3KYvs IiSX/ZPByaxaYEIcGfjfyDJbg/+lZDBGUxN7b+gD1MWlVBbbsEXMP+VpvUWQOob3WfUWS8811qS x3HaeTk4/yI5CBDNq2478gOABfuzzJU= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 lowpriorityscore=0 clxscore=1015 bulkscore=0 malwarescore=0 adultscore=0 priorityscore=1501 phishscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324232018158500 From: Matheus Tavares Bernardino gen_load_locked4u() and gen_load_locked8u() read guest memory with an explicit MO_LE, but gen_store_conditional4() and gen_store_conditional8() are missing that, so we wrongly access guest memory in host byte order. Signed-off-by: Matheus Tavares Bernardino Reviewed-by: Pierrick Bouvier Signed-off-by: Brian Cain --- target/hexagon/genptr.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/hexagon/genptr.c b/target/hexagon/genptr.c index 2a98b13b714..9330732c99b 100644 --- a/target/hexagon/genptr.c +++ b/target/hexagon/genptr.c @@ -576,7 +576,7 @@ static inline void gen_store_conditional4(DisasContext = *ctx, zero =3D tcg_constant_tl(0); tmp =3D tcg_temp_new(); tcg_gen_atomic_cmpxchg_tl(tmp, hex_llsc_addr, hex_llsc_val, src, - ctx->mem_idx, MO_32 | MO_ALIGN); + ctx->mem_idx, MO_LE | MO_32 | MO_ALIGN); tcg_gen_movcond_tl(TCG_COND_EQ, pred, tmp, hex_llsc_val, one, zero); tcg_gen_br(done); @@ -601,7 +601,7 @@ static inline void gen_store_conditional8(DisasContext = *ctx, zero =3D tcg_constant_i64(0); tmp =3D tcg_temp_new_i64(); tcg_gen_atomic_cmpxchg_i64(tmp, hex_llsc_addr, hex_llsc_val_i64, src, - ctx->mem_idx, MO_64 | MO_ALIGN); + ctx->mem_idx, MO_LE | MO_64 | MO_ALIGN); tcg_gen_movcond_i64(TCG_COND_EQ, tmp, tmp, hex_llsc_val_i64, one, zero); tcg_gen_extrl_i64_i32(pred, tmp); --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324237; cv=none; d=zohomail.com; s=zohoarc; b=Y9U1KQoYJl9VZS9cjD6Disyw5CxLt4Jhiswa7foNb0DBB0wU6Sn3BboKfLKvBwcEheyTzIcXtyfUWBuIVazzp8xjnJZlPwdSCAYyZmmEg7eu20iNRGp6jt96SnCb8S3EQCXBX00WqSm3q6RLRPYvxtspFUyY8F3UlYMmEIZGf7o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324237; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=lL7MYL4wXjNxhVBVqr/w00VTB56od7CTJ8sE/VpsDuY=; b=ngy0DjYJqaIO9ERdnMqC6XstEROOTT8iTJAPlV7Oyuvw+NqpC1qClxFnjLbFedL4Bmq0pk3p1nVkPsrQmJp3OJvgiWYRxr4xAkqqVmEW91FYtIKitq40JEqweShE1MMLN8P/hnoWpAiervjVwPIKyZ88H976Vv/d8kPW9l2rP2c= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324237471364.64040231906506; Tue, 1 Sep 2026 21:43:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1coD-0008Vu-U9; Wed, 02 Sep 2026 00:42:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coC-0008Ve-Kq for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:42:48 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coA-0000JP-U2 for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:42:48 -0400 Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 681KTM683751043 for ; Wed, 2 Sep 2026 04:42:46 GMT Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ge38w24eh-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:42:45 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-398dc3d8f0fso2041218a91.0 for ; Tue, 01 Sep 2026 21:42:45 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.42.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:42:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= lL7MYL4wXjNxhVBVqr/w00VTB56od7CTJ8sE/VpsDuY=; b=lNDBduAOTXn4z4aH XSUoWbvPut0XPNbdvDgfuQUbGmAiMgyMvTVxjpie+8s3w0pRbuyLP5FB97YN4BB/ LdUW9SlCSX6mjmN8Q66QMfBe+lybawpiyVMAqeG7LAUe5C0yjf0WOG8RjnBrLbIG Lwwyh3HngVgWJxjaJvNsgUzJv6VG5tgN6nUJduZ0nz6FEbBZeAmE2P3QQ7SKGx4X +abfeNpWLoECAJNztkR0Isy8iKMFFaeSgH03OFxAIzPDob59dS+TuPSExUc7XbKb pTFVC/sK+bbV07KboLZYDWAnopuezKkQaI41RoSRvBWqNhzAlgGMEM+c/21/+fAh H+s2lg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324165; x=1788928965; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=lL7MYL4wXjNxhVBVqr/w00VTB56od7CTJ8sE/VpsDuY=; b=FV8EqGHbrMB9fYuZUfKlb3YU5QLTzDZIY2jfABsvcAswU59Ei+8WreyO2EDxUXPBlu 0ZUiQzK1JJ5kwa/kuFjPZb2LyQX0yM+cBxHEkyWLVG/si418XsDvVsptDY1u+V9ifLdT 4ZZ2SGVPK7Z8rRcSWonYVq9a476bCLCq9BC8FyKdX8Ca2ChVT50tDTOHRIc431FUpJfT cAcUz4E3Ba4OkDOXAtIWIwSLCnWrmKFO4UTKksQk+W3TycmXYYSoz3XMJ4l1AZ6ckDzE CqPwIhWyzbhtWEcdcu2Jwg803wNFFBEbDncVyoirhr5VUFrWBp2pGo/fDHC7wrOexgfW J+ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324165; x=1788928965; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=lL7MYL4wXjNxhVBVqr/w00VTB56od7CTJ8sE/VpsDuY=; b=VEoFv3OyXutEbXUX7ju4GRisCZhRLVJD+929JN52S2LTNUU1yIt4RSl3qgnm+F1+/d g0Qyno1/nopOU66mNJN9W6YHBBzWBgU9hKqYjqorpvoHfFNmEtvLIuXmcCOh21zP6yN4 mZAw1CW7dtgHMRclaeoQphn4oV1nDYYufOZfkfi6zTIc1zL4sC+Vzak2Mk8C/SEB/6fz c/dD7+wUZJhbFJABiH0oYcj7wFp98qv04m40pE/CDGTb+RxhJSfJYVDAKZjFqaW8624D c+sXI9n25QmLhTZeqU6KJEYt/CBeToqu+tgGNmkVXat8L4QsZ/koMvkqiCvGX1lLd5iR QFjw== X-Gm-Message-State: AFuF++k9LEiQjHxH7AVwl6UIjig+ym1pATmll4InqTJtotf41ytY9faU aBHHJwe9GgQogvR3zV0THnrhlc2U0Ocdi3aeeGIMwiPp/gwNrehew0wUiy3TL3DjakuuxCfv6xO trPUriOUnxfovEg2cAdkM5GwvECzwWZrLSZ1w2doqLGcHjT7xJLRdt9D9d3iipJp6qg== X-Gm-Gg: AYBFou3rla2YbKEaPF846tmdfDOfKEz0Crgt8e+XC7Yx82Oxm9BVPzVLTnSkUK0b1Qu hP9SJFuG2FwBEBeIH9AAvRIjNiJ165UIAbbgeRpQoADXq0/IuNn/n8P8r9fg+YRkBP3pzxywuNm gvvAG5aDAUxB2UuT2jIiSbXe/Kuqzwvd1/4N/eAmhbOopT726RirEudH1P2V6Mye4Tb1l5y1IgE zG2tm/g9VVJpUAngi8aBpTMqFTLwlzMKAm7TJej44Smyip6tmEZnyoMKJbZewtE/ndhXT+6tF19 yQGRPy+dmJVqiOMl8WyMncA3QCBPdBdUPFJutdk9kq/dw0IkiCiRvfb+JPa+htmyf1EbcIQ6IIQ F9SfKQ62Cqo/18ENKvYSmXUZOvDFSy+q+OdvXm8+9orf1ynGJ X-Received: by 2002:a17:90a:e152:b0:37f:e5b1:ec4b with SMTP id 98e67ed59e1d1-39af57ba754mr432678a91.5.1788324164920; Tue, 01 Sep 2026 21:42:44 -0700 (PDT) X-Received: by 2002:a17:90a:e152:b0:37f:e5b1:ec4b with SMTP id 98e67ed59e1d1-39af57ba754mr432650a91.5.1788324164417; Tue, 01 Sep 2026 21:42:44 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Matheus Tavares Bernardino , Pierrick Bouvier Subject: [PULL 03/28] target/hexagon: fix PC advancement for non-COF TB terminators Date: Tue, 1 Sep 2026 21:42:06 -0700 Message-Id: <20260902044231.843004-4-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: E5Lvg6KNLv22JnOWdOwyxNruWhAqoQs9 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX7ieXVPLeflb9 Mum3w5vMDAjrn9tlhYOJoOA/Sey8Jw+0f8jnKKX4as9CWhsHqC5L5BEu6WrhTg99SP8VMlUOd9Q hqVrcmOuiW4+on6mX3DwBJPKi+fyGNg= X-Authority-Analysis: v=2.4 cv=LOpWhpW9 c=1 sm=1 tr=0 ts=6a97a945 cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=4a9di1UdVY1t8Q3xuf0A:9 a=QEXdDO2ut3YA:10 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-GUID: E5Lvg6KNLv22JnOWdOwyxNruWhAqoQs9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX5xNsS870jZ9s fDHYwMNj8FPb5HXCfqFA51//CINt5VTrFIFJ0WVrTKB021VuljLqqEqD50uwyhbPa65HZyqPkHW z0RR5R4eal3V5/te2/ow/4TTt3DB8hkNIrBE2T8Uv+CbeO/6itOklfc7KaxHjWvOWszsTudqOiF ZHtaJeCpg6WMbaekeWjNaKABQYG0rSYa3VfnhiUjEvMj1htp/v6pBuFjzVwgbJi3NeF796Oy5eR 4c1eHMe3IVRTJsNRPrgcu2n8om+6fUg6X+VJVz+j2alS+U87q2/81QNvUsxDrJpEf7kCNVsOTtH HmNeg5aETrM9G21nvdmd2kjWecvaD825K4uVvWOuSCc8JhKV29BXTeaM1JijRwViG/savNbGklP Jo/0/PJiBg35iYst0yMvdYKKGkAWIxVisVrjmFOJ07gfOx6lJGK6TngSP8GFw+KjjxbJqic2RVX 20lh4f4m2UhUzUVwElA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 lowpriorityscore=0 priorityscore=1501 suspectscore=0 adultscore=0 clxscore=1015 impostorscore=0 bulkscore=0 phishscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.180.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324240202154100 From: Matheus Tavares Bernardino Some packets end a translation block without a change-of-flow. These do not update the PC during commit, so gen_end_tb() leaves hex_gpr[HEX_REG_PC] pointing at the same packet and the block gets re-entered forever. Set PC explicitly to next_PC in that gen_end_tb() branch to fix execution of next blocks. Note that gen_start_packet() used to have a special case for tlblock/k0lock, setting ctx->next_PC to the packet's own address. This relies on the tlblock/k0lock helpers to properly advance the PC, which is never done (only env->next_PC is updated, but that never reaches hex_gpr[HEX_REG_PC]). Drop the special case so these packets advance to the following packet like any other non-COF TB terminator. Reviewed-by: Pierrick Bouvier Signed-off-by: Matheus Tavares Bernardino Signed-off-by: Brian Cain --- target/hexagon/translate.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c index 06a8159d283..5463a07ec52 100644 --- a/target/hexagon/translate.c +++ b/target/hexagon/translate.c @@ -217,6 +217,12 @@ static void gen_end_tb(DisasContext *ctx) gen_goto_tb(ctx, 0, ctx->base.tb->pc, true); gen_set_label(skip); gen_goto_tb(ctx, 1, ctx->next_PC, false); + } else if (!ctx->pkt.pkt_has_cof) { + /* + * Packet with no deferred COF that still ends the TB. PC is + * not updated during commit, so set it explicitly to next_PC. + */ + gen_goto_tb(ctx, 0, ctx->next_PC, true); } else { tcg_gen_lookup_and_goto_ptr(); } @@ -289,6 +295,7 @@ static bool check_for_attrib(Packet *pkt, int attrib) return false; } =20 +#ifndef CONFIG_USER_ONLY static bool check_for_opcode(Packet *pkt, uint16_t opcode) { for (int i =3D 0; i < pkt->num_insns; i++) { @@ -298,6 +305,7 @@ static bool check_for_opcode(Packet *pkt, uint16_t opco= de) } return false; } +#endif =20 static bool need_slot_cancelled(Packet *pkt) { @@ -577,10 +585,7 @@ static void analyze_packet(DisasContext *ctx) static void gen_start_packet(DisasContext *ctx) { Packet *pkt =3D &ctx->pkt; - target_ulong next_PC =3D (check_for_opcode(pkt, Y2_k0lock) || - check_for_opcode(pkt, Y2_tlblock)) ? - ctx->base.pc_next : - ctx->base.pc_next + pkt->encod_pkt_size_in_= bytes; + target_ulong next_PC =3D ctx->base.pc_next + pkt->encod_pkt_size_in_by= tes; int i; =20 /* Clear out the disassembly context */ --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324228; cv=none; d=zohomail.com; s=zohoarc; b=LVHSu8dcebwVxu4uodsFXPiNJ3+VQx36IvvVl55jAkyqxSTrsXqWknpOwwy2pd16Eh7ICyD2yyINVBQKRfOIghpFYRZdsnd0cwCQOYOuRURbVP8Ss46vsDQ7T2IFv1Y8HlLNTrcMQNw/AzFkwwXeTXItTgWwcX43zmw9cOXox6A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324228; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=YK/XxszV1lTbhNWAE/tHQ5rhD2kql2wA4ZjsZiVAwAc=; b=GVMSH1Op+noiKctiaYY8F8Nt5HIi1B00buI3QJ3cGUINnGdzjQywZ5tnTpEsAqSfDdQ5a+Y3SxHPtznc9nGikq8zkoulMox1wf0qALqaG9w/eArewedTuN6RAua5ouDgPk4kGjjVESewTkVw2P6KBNRIHTwVsbwU4UQuiAA2iTE= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324227882241.42510047924338; Tue, 1 Sep 2026 21:43:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1coL-00006M-DA; Wed, 02 Sep 2026 00:42:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coJ-00005d-DI for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:42:55 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coD-0000Ji-VP for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:42:51 -0400 Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6824MLUY3664584 for ; Wed, 2 Sep 2026 04:42:48 GMT Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ge37j24er-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:42:48 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2ce7dff6253so19439345ad.1 for ; Tue, 01 Sep 2026 21:42:48 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.42.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:42:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= YK/XxszV1lTbhNWAE/tHQ5rhD2kql2wA4ZjsZiVAwAc=; b=oJzjakdV7dTZAqh0 XVUAOP2pLYddAQnZpN9TTUPLwbF68q4cAvT4/3M03vpCMvs0PYPSdHRnbIg4MvzJ z9GCwwmWEDst8lo9NSD+5H6hdQEEHd2Cb3UslXBrRo07FslEmCESLV1ztcviJSIn vk0c+Zj9zGaqEMX9vrS8ZGXeXS2T6aw+0xQXA8ghEHJqOVB7j5q1WKzeF/Mr2mFo yespWTeotYQ5Er++m2Mlojl/cf6zt1hNrKWCm1uF8bMS8VqmwfF5edCpeRWSyEiy ncNS4yYnrLBD+n2ovuPziqPimHmFOu2qC+igfOfbZ1ZJAkolsOIcSYXdNwed4/c+ nefDDA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324168; x=1788928968; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=YK/XxszV1lTbhNWAE/tHQ5rhD2kql2wA4ZjsZiVAwAc=; b=aGDSSvyG3KXMALuA/W2DPQMX+61JHmviKn07l0u8g6g+XeK6ZMzvOcJqeWs2R/O7db X2kDnGcELUcI7gV9nSNqTNa8Cil2vyjh1hON2I+yVgTDXgZTGzappzc/UF7P5knKTtQD dpvw8xbrXAwFKT9Xjd10mq1vLBoZTG6a0rtGXL+8g6Qs5J1vRs/bZNuO3vrDH8S0A7zX xWyBwLiX0rlTZU1lnNnKgRK3tFc+acfidDiaxnPDVmoXL2cK2gl2Iffl6K4NtBee5C8T L/0ku0Jl228K7fKaAae8gUwFKOLJVoaLmAsNJXBjR1j3Bo/C2/ldbUdroZfkPn0Ew/1F eW/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324168; x=1788928968; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=YK/XxszV1lTbhNWAE/tHQ5rhD2kql2wA4ZjsZiVAwAc=; b=O90KGvmXeoSrRINMA35fCnbYT0pBFTKkhNksu/FQtTlCV9XWx8xeuiM+UUoo9u+aTa BoRxdmgOSCNWnnqfdinx6V6ry/UNQWkZcE04PjZ4n1HHsgGKNwg7Zah7MfA/G3Sq3kV/ ICGUhO2/N3KnbCz9X99zHbuRmc6RFTiAsORl/QSfYIHSZDwjOXufZo5rPvyV3Xx8LUUg LyOM2NBzADeSnx1LQvuP1v3SJX3A2kp2M7KZ0otI81t24rl+a6A25jtZP9LsS8oK9Adc E85E8YZm5oYcG2mK60kkv7nyJ5Kpx+6RXBrU/WAQwVqD1HsVyUbZlczcKB/TlxElaXyS iR4g== X-Gm-Message-State: AFuF++ls+Vg6ALLzggbMZYMF70pNUmhwAQAc1/KgiE2Z34xbY5x5FkTb h7MogdDbpBgTJh9MQrVZIJClS4STX6Ulg7HsGEhXK5c9lu9mQY1PguiCakxdE2oEga3dqxePN5y St0GiqhaS6AYAoIFNOjgNiUCF6DiT1lS7z9M1/HvmDLaGwle4h3GCBVgNIn3D1VluMw== X-Gm-Gg: AYBFou1CMQNNhNavVbvO8c9aq6jtmqYeoTlDp5M6slE9ooL/Wj7iThjVrXExpUmtO8b FIFPB3oDdFmbiWGI1QlJ4NSKQmQqZd1YtBAgFW5O62AWN+466YX4lu9VnCEFSDmxu6+dgcDm+8M kFpCoEoh8SQmyOC016nGIN/Btq/yQNUzSWPEmvf17t3SaFfOWH5hQ0hhqckq0SgR9MbONLkijJt cqP1ou6EpttV8WF+Lofo/FAJxx6Ye1AveelEp8Bnf2ziMRWgJXXQ++2GMHm8mkH6E7skDN4aIy+ 17ZLB+nG65NA3sZd0uODmuhkZ86iJDA7wCNLpy6PAgW9OrLP/bsuninhzTKI1JdQCCLyAR43QUz zkn5ROZScXJwjW0J+qfdYUKxvRdBbcu41YP1mutHrqxF4tWTf X-Received: by 2002:a17:902:f708:b0:2d7:1b20:e98f with SMTP id d9443c01a7336-2daf125a6fdmr4077835ad.2.1788324167788; Tue, 01 Sep 2026 21:42:47 -0700 (PDT) X-Received: by 2002:a17:902:f708:b0:2d7:1b20:e98f with SMTP id d9443c01a7336-2daf125a6fdmr4077495ad.2.1788324167330; Tue, 01 Sep 2026 21:42:47 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Matheus Tavares Bernardino , Pierrick Bouvier Subject: [PULL 04/28] target/hexagon: add aux functions for guest mem load/store Date: Tue, 1 Sep 2026 21:42:07 -0700 Message-Id: <20260902044231.843004-5-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: tuDb5KVfQ5Kf24vDuc83wI-zK1IKu8Da X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX7lzVv9vCQ2oa nk9R+87SJ761Ow9NptxfmFYmXe6b4rHXgDtzQvug0NdIxChJ202wG9oO5XFlrh/12Ntil7z5jDn qzVmlyBHraafGt+wKEHRBgwSF0x+fqk= X-Proofpoint-ORIG-GUID: tuDb5KVfQ5Kf24vDuc83wI-zK1IKu8Da X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX+4SwkC1wfMFn TCr1X/1BL7MdxxDhV4eahG5NcdDG65xcZH+JXiZNqDd2UXsdBFYaIIvPRi+jKWnWPFbDweBwm/3 SDsvFgc4+XCDQ1RS49nac+pbiwzGxMaxvjS5/Ei5FZcyHkaGa2Pn0ZZtSzfRQ1911cxmAtRHZI4 5nSbv7thvpu1VLHCXSF8ydvqNJ6Qo2L+1E92nnTgFA6nVYyNB+r/8fAPucyrZDE77aRJKaTDrbd S8oXU/XyEuu7xm4oMkPxZd1YMETW7A5leNDpgDnJS5FKP1XZr6xTCWQO7xVUcGOXIgZRr7iKMx+ JNhkyRANh14TJXqKbTn8dy6OJPnMtunuyUjz49GX5yvWqhHY9d5yIxVBhU/WgrnehXN4mI8szew qHWByIMgKUVpllaZlnYy61rFeGCGY6HtpJ3lbe+sqkslMisZXxSzM4WTszYGBiN14PsXQpYCxG7 lf0J1ZDrEICdigG+9tA== X-Authority-Analysis: v=2.4 cv=PKg/P/qC c=1 sm=1 tr=0 ts=6a97a948 cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=-4NnfYh-EZONJb1VZs8A:9 a=QEXdDO2ut3YA:10 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 impostorscore=0 phishscore=0 clxscore=1015 lowpriorityscore=0 bulkscore=0 spamscore=0 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324229875158500 From: Matheus Tavares Bernardino Will be used for semihosting. Reviewed-by: Pierrick Bouvier Signed-off-by: Matheus Tavares Bernardino Signed-off-by: Brian Cain --- target/hexagon/cpu_helper.h | 6 +++ target/hexagon/cpu_helper.c | 100 ++++++++++++++++++++++++++++++++++++ 2 files changed, 106 insertions(+) diff --git a/target/hexagon/cpu_helper.h b/target/hexagon/cpu_helper.h index d1767503156..ca2e13ab1d1 100644 --- a/target/hexagon/cpu_helper.h +++ b/target/hexagon/cpu_helper.h @@ -7,6 +7,12 @@ #ifndef HEXAGON_CPU_HELPER_H #define HEXAGON_CPU_HELPER_H =20 +void hexagon_read_memory(CPUHexagonState *env, target_ulong vaddr, int siz= e, + void *retptr, uintptr_t retaddr); +void hexagon_write_memory(CPUHexagonState *env, target_ulong vaddr, + int size, uint64_t data, uintptr_t retaddr); +void hexagon_peek_memory_range(CPUHexagonState *env, uint32_t start_addr, + uint32_t length, uintptr_t retaddr); uint32_t hexagon_get_pmu_counter(CPUHexagonState *cur_env, int index); void hexagon_modify_ssr(CPUHexagonState *env, uint32_t new, uint32_t old); int get_cpu_mode(CPUHexagonState *env); diff --git a/target/hexagon/cpu_helper.c b/target/hexagon/cpu_helper.c index 64c5746c6d9..fab9a9d7b12 100644 --- a/target/hexagon/cpu_helper.c +++ b/target/hexagon/cpu_helper.c @@ -25,6 +25,106 @@ #include "sys_macros.h" #include "arch.h" =20 +#ifndef CONFIG_USER_ONLY + +static bool hexagon_read_memory_small(CPUHexagonState *env, target_ulong a= ddr, + int byte_count, uint64_t *data, + int mmu_idx, uintptr_t retaddr) + { + /* handle small sizes */ + switch (byte_count) { + case 1: + *data =3D cpu_ldub_mmuidx_ra(env, addr, mmu_idx, retaddr); + return true; + + case 2: + *data =3D cpu_lduw_le_mmuidx_ra(env, addr, mmu_idx, retaddr); + return true; + + case 4: + *data =3D cpu_ldl_le_mmuidx_ra(env, addr, mmu_idx, retaddr); + return true; + + case 8: + *data =3D cpu_ldq_le_mmuidx_ra(env, addr, mmu_idx, retaddr); + return true; + + default: + /* larger request, handle elsewhere */ + return false; + } +} + +void hexagon_read_memory(CPUHexagonState *env, target_ulong vaddr, int siz= e, + void *retptr, uintptr_t retaddr) +{ + BQL_LOCK_GUARD(); + CPUState *cs =3D env_cpu(env); + unsigned mmu_idx =3D cpu_mmu_index(cs, false); + uint64_t data; + if (hexagon_read_memory_small(env, vaddr, size, &data, mmu_idx, retadd= r)) { + stn_he_p(retptr, size, data); + } else { + cpu_abort(cs, "%s: ERROR: bad size =3D %d!\n", __func__, size); + } +} + +static bool hexagon_write_memory_small(CPUHexagonState *env, target_ulong = addr, + int byte_count, uint64_t data, + int mmu_idx, uintptr_t retaddr) +{ + /* handle small sizes */ + switch (byte_count) { + case 1: + cpu_stb_mmuidx_ra(env, addr, (uint8_t)data, mmu_idx, retaddr); + return true; + + case 2: + cpu_stw_le_mmuidx_ra(env, addr, (uint16_t)data, mmu_idx, retaddr); + return true; + + case 4: + cpu_stl_le_mmuidx_ra(env, addr, (uint32_t)data, mmu_idx, retaddr); + return true; + + case 8: + cpu_stq_le_mmuidx_ra(env, addr, (uint64_t)data, mmu_idx, retaddr); + return true; + + default: + /* larger request, handle elsewhere */ + return false; + } +} + +void hexagon_write_memory(CPUHexagonState *env, target_ulong vaddr, + int size, uint64_t data, uintptr_t retaddr) +{ + CPUState *cs =3D env_cpu(env); + unsigned mmu_idx =3D cpu_mmu_index(cs, false); + if (!hexagon_write_memory_small(env, vaddr, size, data, mmu_idx, retad= dr)) { + cpu_abort(cs, "%s: ERROR: bad size =3D %d!\n", __func__, size); + } +} + +static inline uint32_t page_start(uint32_t addr) +{ + uint32_t page_align =3D ~(TARGET_PAGE_SIZE - 1); + return addr & page_align; +} + +void hexagon_peek_memory_range(CPUHexagonState *env, uint32_t start_addr, + uint32_t length, uintptr_t retaddr) +{ + unsigned int warm; + uint32_t first =3D page_start(start_addr); + uint32_t last =3D page_start(start_addr + length - 1); + for (uint32_t page =3D first; page <=3D last; page +=3D TARGET_PAGE_SI= ZE) { + hexagon_read_memory(env, page, 1, &warm, retaddr); + } +} + +#endif =20 uint32_t hexagon_get_pmu_counter(CPUHexagonState *cur_env, int index) { --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324283; cv=none; d=zohomail.com; s=zohoarc; b=SyrEchgiklTxSm8nLFTWU5+QAd2QCR+qcIeDN+OUepyVSjjJTto+WBlJRiLAfzGObpcOD0uq5hPL8oaNDnKYjpaJLGyavDXgsDc2+sI+AV5GBSMkx/GCKI7ZXJssra4kP1PCVayaySi0A54oAYdnkBZJ/av5AVr1fpG4wvXy2tk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324283; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=bIdP3MyJvBiNaQACqfwwsKzexe7QSvciscpahroNaz8=; b=Wkslny1BbM7/advrX38v13EAKE+solw4syoJeVjd9bs7Ox93T12NKDxFjFmKTaSf/XaC7TcpjSZccIMlpq601btBAEdIIMSJ2xORYlzZ0ckwqEB4MlNGAfSEfeNkTVeCxjziW6cdhejjo5jKVf8/3ZbDgXsVZVrBokK41EPXYIM= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324283370310.1197460900288; Tue, 1 Sep 2026 21:44:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1coM-00006W-33; Wed, 02 Sep 2026 00:42:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coK-00005t-RS for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:42:56 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coJ-0000Jm-5v for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:42:56 -0400 Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 681KTFYm2468840 for ; Wed, 2 Sep 2026 04:42:49 GMT Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ge39cj378-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:42:49 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2d6f75c1219so12272095ad.3 for ; Tue, 01 Sep 2026 21:42:49 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.42.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:42:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= bIdP3MyJvBiNaQACqfwwsKzexe7QSvciscpahroNaz8=; b=n1HkCoQsZFEl6QCP lJ4XAtmD7C2XxbsW6D746xmzeRXZljnYTa6pqfBQkUCroGX1VF/MZfd1oA5sa9+/ ai+dHROCXSOgZ3hFIcX16U+4wPo5tCHrvnIISh7isPU6vY+1aYapZdI3FA8pp3gp Te+veC7x8HCWT737tLWq3UeMIqsXWoUFXqwqWJd1chUHYDFgOL4BRsJRY1Hu+0kZ cQ+qMYGm3PcRTfoGjLpUR3uLhlcuAoCDtzqlRqufKkBuUuq+h31CzQL+mdEgDvQu ZeTXLq9OO4JzNpLm3kC/sqievHVyCaXgdytfVfagP10YPL2NuazgYQctd7hIBLhl jtRPMQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324169; x=1788928969; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=bIdP3MyJvBiNaQACqfwwsKzexe7QSvciscpahroNaz8=; b=hvvaZlN1Sqz92ktwJOBUQ/FdX9UkmQ33EYZYAKJRx2p4rH6vGRFtJsmQ1aqh7V2Nzk +Zd4Ms+wKDseWS3xgjxN1yDvuSUeJToerlc2QJNA0G4kBzzX5af90ufErMrEGvCmag7m 0l/WLy2Mn3hKHYO7qh72hvFSJzeXwO+FPclO848iddJq+mAODKy8//rW+OUDW0vXpb0Y M7g2yTSgYwtY0PGr5ZMEI3sTXFhegcD9I1EmRNTZrxDkD6A7j2UCxL9CZ8WWuVBxtvJc Lzi0Iv/ldogCFkAPnlRQYUEskSHKvf/8umOz5Z4Lvk9M2QYA3l8Wc1cCAA8ZGOoMw1Ou r7tA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324169; x=1788928969; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=bIdP3MyJvBiNaQACqfwwsKzexe7QSvciscpahroNaz8=; b=mxW5y7Xur+EMQYsemcp3O+CIZaHBOqOa9UY2e6o3CEvUiVR4LVDvGj6Z9Sg6Ocz5gz 2w76etyrgQPJba7kYpwGlTv5hlCogDB0a1a2+EHVptdIgrlSRdIUrIpLkFuFc8F3UPKO VJKef1IIbURVuFG53qUrgOuK/dO0MCehapi5PD/impYCdkBFh8ec9Eisn2u095tAYDVN iJkFv2csgo2YeylpKZCf3zKaftojg9sM8vh/hZMGkPFt6tPxFZ86gZXPDq5KssPClB2c CYnRrSFj8Wdh7u67eXOuAxs7/bJ5VA9T4yzmSYfm+ee1VBo3HMCxTARLITwPNCd2RpG8 Twwg== X-Gm-Message-State: AFuF++k/IKYxXSTzzcFALbWa9gEMKyhULEp3WkSQxxo1UxABIl7jkNGo 5p2UzyxTfS1P8VpEchek6h73Ibq/F6GHWhn8rGULZnvfbzyFd3xI5SmPY3pkGuHdPyN94dqjeMO jxIwYgOnM4iJORlTQBmi0JfyM+j0WUfKqLHibpVwlqch/EOfMnc9fedUqhip0bOg+AQ== X-Gm-Gg: AYBFou0DOe6OnBt7TU4oepFCaqTM2tLdsd8AqmsZklVBGkTPYvsJW2R8x/2GWFKxIUy seS6MAFZfGxmy9oxeOR0PbXmLqRDSrOwje8swVyeXoZzlYmFnUcvYztXkZWfVOGpqa52Tbg0Viz ivzB1JLK4Qd5b4x+cw4lwhkDRXmxScT67dnjkYxVKMSsAws9S/mhO7RRJ4D3JsZxm/0MdUBNuhW FgdExnH3ho++U5V7mVuJHl4oRVMyKw5cj+ONsq2x8loylbydYfnDNgY1rCDsJD0aolvRcY5hO/4 +rqPEjvqyIoBngyGZd/arrmMlkyhINVLmGrUg+vhxcxbidkL40QF/1QStivhmZAJGMwEIUxw2/m b/Ib6QSXTpGhaaknInetsBEV+S0iDKPV2twSCke87F6qGPjNi X-Received: by 2002:a17:903:2b03:b0:2d8:d4cc:5bb2 with SMTP id d9443c01a7336-2daec75cd4dmr32286545ad.18.1788324168892; Tue, 01 Sep 2026 21:42:48 -0700 (PDT) X-Received: by 2002:a17:903:2b03:b0:2d8:d4cc:5bb2 with SMTP id d9443c01a7336-2daec75cd4dmr32286005ad.18.1788324168488; Tue, 01 Sep 2026 21:42:48 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Pierrick Bouvier , =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [PULL 05/28] semihosting: add APIs for chardev-aware guest fd routing Date: Tue, 1 Sep 2026 21:42:08 -0700 Message-Id: <20260902044231.843004-6-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=T968ifKQ c=1 sm=1 tr=0 ts=6a97a949 cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=4trHgkiC9q-UxXHgwkcA:9 a=QEXdDO2ut3YA:10 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-ORIG-GUID: jwZ-3swsVY3HTvkhBMcQ82dp8BCiZaVh X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX39UzrdyMd0Uy tU2ToGo+24vg00QxK3jROy8HdqPWKSyxLuz2zNKs3dQbovnDmd1gEKh8HCUM2M9FOFL91h/T1EE W49+QvXyZhw1pu6rvX+MMdYYLRSKUNA= X-Proofpoint-GUID: jwZ-3swsVY3HTvkhBMcQ82dp8BCiZaVh X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX9CVfWe5CA8+K hmw67/G6Pz5yYOivp/wz734d2ycuGJPC87ylzGWzfcXBjXzBWv3qEbA1tBXJqmwCxgS3VD/9ujQ Svs/VHKdxlix5tmhEP0s4Y4pkEiQUlx6O9VY1rHpwosSgghOzcBpdfhSlk+ZI72JQnXng9o2tpF Aln+mWqq46uVqvd5XO8I/YFi4ZO9bD8d5xAebQDIL3eVa7pjmuKscycMpNRgrTeSS8QoGMXlPHv N2ju+U7rUaNrM6ighMM+95C4CPxP1CHzz+lpjFCFpHsDXMeHpjuCNjVC59jUR9KGMzvLF8QwDZp RzgHo/Na18ZsK0BVa0eozFWDCSYY8ugtU42zZATD58MCV8JnWhiEE86QngeFY+EYhoxKqOXUYWk GXe1Tk5DgMfkZcZ0ystAqC/ixQlA3EQbeIVGvWD9WUJtcm7ADPB88Q3dWn53/5XgIlvxtLM3SnO d4X6Bl37mbGaM1GHtHg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 adultscore=0 clxscore=1015 phishscore=0 priorityscore=1501 impostorscore=0 bulkscore=0 spamscore=0 malwarescore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324284833154100 Add qemu_semihosting_console_has_chardev() to query whether the semihosting console is backed by a chardev, and console_guestfd() to initialize a guest file descriptor as GuestFDConsole. These APIs enable callers to route semihosting I/O through a chardev rather than directly to host stdio. Reviewed-by: Pierrick Bouvier Signed-off-by: Brian Cain --- include/semihosting/console.h | 9 +++++++++ include/semihosting/guestfd.h | 9 +++++++++ semihosting/console.c | 5 +++++ semihosting/guestfd.c | 8 ++++++++ 4 files changed, 31 insertions(+) diff --git a/include/semihosting/console.h b/include/semihosting/console.h index 1c12e178ee3..d5f149e2088 100644 --- a/include/semihosting/console.h +++ b/include/semihosting/console.h @@ -54,4 +54,13 @@ void qemu_semihosting_console_block_until_ready(CPUState= *cs); */ bool qemu_semihosting_console_ready(void); =20 +/** + * qemu_semihosting_console_has_chardev: + * + * Return true if the semihosting console is backed by a chardev. + * When true, console I/O goes through the chardev rather than + * host stdio. + */ +bool qemu_semihosting_console_has_chardev(void); + #endif /* SEMIHOST_CONSOLE_H */ diff --git a/include/semihosting/guestfd.h b/include/semihosting/guestfd.h index a7ea1041ea0..76ca0fcf1a7 100644 --- a/include/semihosting/guestfd.h +++ b/include/semihosting/guestfd.h @@ -70,6 +70,15 @@ GuestFD *get_guestfd(int guestfd); */ void associate_guestfd(int guestfd, int hostfd); =20 +/** + * console_guestfd: + * @guestfd: GuestFD index + * + * Initialize the GuestFD for @guestfd to GuestFDConsole. + * I/O will be routed through the semihosting console chardev. + */ +void console_guestfd(int guestfd); + /** * staticfile_guestfd: * @guestfd: GuestFD index diff --git a/semihosting/console.c b/semihosting/console.c index 91e5d50d502..9d786833564 100644 --- a/semihosting/console.c +++ b/semihosting/console.c @@ -108,6 +108,11 @@ int qemu_semihosting_console_read(CPUState *cs, void *= buf, int len) return ret; } =20 +bool qemu_semihosting_console_has_chardev(void) +{ + return console.chr !=3D NULL; +} + int qemu_semihosting_console_write(void *buf, int len) { if (console.chr) { diff --git a/semihosting/guestfd.c b/semihosting/guestfd.c index e8f236c690c..8b5770bab0d 100644 --- a/semihosting/guestfd.c +++ b/semihosting/guestfd.c @@ -117,6 +117,14 @@ void associate_guestfd(int guestfd, int hostfd) gf->hostfd =3D hostfd; } =20 +void console_guestfd(int guestfd) +{ + GuestFD *gf =3D do_get_guestfd(guestfd); + + assert(gf); + gf->type =3D GuestFDConsole; +} + void staticfile_guestfd(int guestfd, const uint8_t *data, size_t len) { GuestFD *gf =3D do_get_guestfd(guestfd); --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324394; cv=none; d=zohomail.com; s=zohoarc; b=bEI6pQXJT8mhXsaBCFPE/s/60L3021fCGSEF4ryUnOcM56InfFFLiKIkk3ri+v8HleQIzyO2YW2LPG3ADnUKR1fyBcuCr9SG14xse0PG2jvq1oiKOk1S9SYyma4IONwX3s+4eV5F+GlN0GykTQe5FLPb8bo0JF2dCTPeb3C8o50= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324394; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=duQyVDjHvCwWfJ8/fDnqIo03r/fNqO+pyLmoWy36RGE=; b=CYbswQtdDZf/tM6vJATp6NqYpdCl3JdQS2t1kfVB9kByVt8bZ++rvFfUZi5ujEfUGxK02ECkqxthHFPbK09DkEZ5JsITHal8VeafAErcelHlKCE/c6bXM5LhSidOxhfAPoOSPFfaT1w30cXly4N2mSqzqH4z+aokpykFogq4/y4= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324394138260.15943213174876; Tue, 1 Sep 2026 21:46:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1coN-000088-It; Wed, 02 Sep 2026 00:42:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coM-00006V-0z for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:42:58 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coJ-0000Jt-69 for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:42:57 -0400 Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6824M1Vs2982864 for ; Wed, 2 Sep 2026 04:42:51 GMT Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ge35k25rk-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:42:51 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-cc1bbd7d6e6so731420a12.3 for ; Tue, 01 Sep 2026 21:42:50 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.42.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:42:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= duQyVDjHvCwWfJ8/fDnqIo03r/fNqO+pyLmoWy36RGE=; b=hsXDBVyCG5hqKBrE zrJg4OoGnjC1NDKzjryifJov0CmbXV/DQirTRcTvSuZLJeeCq209Yo4JVpvL7KCO 9J0HocrHSnOi1I0CVoo/EJy3VPQxY4JBS9bI3HJxg2E34+MB/czk2R2Rxc6WPrxU EXG3sP4bvYF+x4egjYNh0LML96F3j3UyO4wNmY5u6HkUijNS9le7SafsN5Hczlko fyEz+ZZf1It8mrHfCgDRhNRogQ+mu7+O68Fdocf97ta3grSTQTQc5xhzkDFYX0ze sE630gnrQ0d7vP37vLmSrXamWE+J67PeCWdSd+Jh/x724jNODOAAMndeRuRL2doa pJNVcw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324170; x=1788928970; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=duQyVDjHvCwWfJ8/fDnqIo03r/fNqO+pyLmoWy36RGE=; b=e46sFtKK0Z3eJh7IMs/BdubzLqczZcUH5mK8/pLbgG+UW75trNAsSRMJBYmzb6M1sf haQeuJ6FOl2nyMHVoINsNy6nYEeioOQGXp0BQxCMtur6W4AXFeA+JGVtFYk3mutD0Wzh 2rXRAacPISL4pUd6NZeSAn2WkbkKGZtY78KVK7y+NJ5xTjVVRA7oyi4HmoFroMGdtnbJ eVFwrhDATPPGsY6I8EZgBT5X6HA4FpDMz+BokFGggtrwGtRfkQiqRjL+4lIcNsHtBY4j mfQ0dUCKLkrCc/PjZbN8TWwWE5gAgbXQSxWK+ElU6UsvQvqvq3mAO7VxGtwyxQeos12L y3Fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324170; x=1788928970; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=duQyVDjHvCwWfJ8/fDnqIo03r/fNqO+pyLmoWy36RGE=; b=p2Bwf/cXlhQdlH5T6BiCluOT8IV1p2V/jdrL8bnUU/KKYdHIW/udUdO9ZIIt9xGIE/ 700FcmVeRG4i0+5WHLinR232Tc7eki90tZbl3fNDhGGCz976waZTq4m5ns9BX0qLR5Af g291dHn/UWVH3oghRPUBrDqXzkVMjp0wdQn2LQQP7Ee40GcW3HU6IQA1IuRriyifEktB uGur/RnzR1y7PEssXp+zJ4hqrcatjbBcGOGoEk6IqizVo87oRKqoYhvlL8ZHN1tD0HG2 qbhV//SbC8XFcHTRVJZz0QgYLSZ0j6Bb/sceGwFrfOFKTvZj+I5/HqQN+p924yETZEtn Mx3w== X-Gm-Message-State: AFuF++leFc+q3cUOd2P0qhEbKc2XP98uMkE8P0zIksq9CF9JTdYMlgHl 8Ag3JSIK0Ho2Cp8/2mwVOsfH6lGRaKDzbNTsHKUq5aRcaZAOJrEa3EhtIlncdJKu485EgsuG3km 4gI+4VmY8pZui9skhlLMkJyVxdTJ7mEUF6Ari+ACKThbaS6gQa2z+cnCTPOrTsc+zSA== X-Gm-Gg: AR+sD10fxTWYy1kdE8naFUNGv14rIbOoXfAhwmS4PlvTuIHIuwR/sEV4rc7X441Yoam 1ubR2nJtnXRkUM1eWo7Fudey9kt2L6aZnyBwTUFdiisEj77PtXD5er0ZJqZTA7MYZyJDYpR2HSb SJ9dY9uVG7noGnFsuNBA1BrrGSvLv0etm6fbviIZqN9RqkStqr/ZCWRcNesZioDOzEk3dMz41+7 adCqlgEfEFohQRrOV5573KlRy5D0uCQWkSOqHSmRtZkjad/r5yVYLFKEzJHHL7zDka/y3kpEsgz VGfPWOPcUKBud3i7J7WIe4XnSqQvNWzzuzQu3rCqQzD1WeWpe6N6XsPtCW5OpL/VGKfrjYVf24O bKZoa0X4NENWKL6ZvXfwIKTbTyzXQtitIiXmjYenBh+31xuYw X-Received: by 2002:a05:6a20:9392:b0:3d3:ae1f:d7f5 with SMTP id adf61e73a8af0-3d9afe1762emr3031890637.21.1788324170375; Tue, 01 Sep 2026 21:42:50 -0700 (PDT) X-Received: by 2002:a05:6a20:9392:b0:3d3:ae1f:d7f5 with SMTP id adf61e73a8af0-3d9afe1762emr3031847637.21.1788324169936; Tue, 01 Sep 2026 21:42:49 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Matheus Tavares Bernardino , Daniel Henrique Barboza , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Peter Maydell , Palmer Dabbelt , Alistair Francis , Weiwei Li , Liu Zhiwei , Chao Liu , qemu-arm@nongnu.org (open list:ARM TCG CPUs), qemu-riscv@nongnu.org (open list:RISC-V TCG CPUs) Subject: [PULL 06/28] semihosting: add callback to set error Date: Tue, 1 Sep 2026 21:42:09 -0700 Message-Id: <20260902044231.843004-7-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX9UaOPNFUSZ+b z2YnNIWIJuarU9W1zvpxBJeYjOrvudTfWssaPNmKn/lNXlTwNlLDrC8OKY0iqq0EQUVKFv8B9bY UTbbSYzqaWG8vuCOkWj/aOCzeIjnfY0GT/ofgxBGRcfMkhIQLHV44NN3PLuibQOLE7dHBC7MZBe YmTnRgsHOadQXYyY2rs8r7uUQZzLe+caQ7wvAntgnuux5XP8Xjr49mpcSDQwmaC8VYuW4bRg0BY d1VfQdcY0h4gE+39ZlvEmujwwBW7B1ePVpLuNCywKbc1UPtZAAQUwjmwRigppvapnCamc6/JSr4 fhayLKXgGRVoodQjCTAn6j6pbJP9ePVXczeZsZtBqlRle9jiQxLRCL9rnWGKOIVWwaTJOkSNHSC CQVcvRmEppXdS4tk4QVKHG3GAtLkY9MhxZ5efxYDhbOjZmKO5izDXN/CNsX9gFw/9uI7sl/UNBg gFWewlK9hCgcbDPYTug== X-Proofpoint-GUID: vtDrKVsenTZoBb16vCH_XFfmH7BMpFUQ X-Proofpoint-ORIG-GUID: vtDrKVsenTZoBb16vCH_XFfmH7BMpFUQ X-Authority-Analysis: v=2.4 cv=VLrtWdPX c=1 sm=1 tr=0 ts=6a97a94b cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=8ndNYmkutmpv_8xOvXsA:9 a=QEXdDO2ut3YA:10 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX+ADs4W0phh5B 7GsJFxxw++NdjFtC/B/ynX9/L0ZI1c9aare4cgXaUXYRvoJbdKLMr4wBzZMPwAyDTqLqDqVwmtu pNbT8yqA2YVkl3K34zeavcgmDLjUZZk= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 lowpriorityscore=0 clxscore=1015 bulkscore=0 malwarescore=0 adultscore=0 priorityscore=1501 phishscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324395492154100 From: Matheus Tavares Bernardino This is currently unused by existing semihosting targets, but it will be used by hexagon in the following commit. Reviewed-by: Daniel Henrique Barboza Signed-off-by: Matheus Tavares Bernardino Signed-off-by: Brian Cain --- include/semihosting/common-semi.h | 1 + semihosting/arm-compat-semi.c | 1 + target/arm/common-semi-target.c | 4 ++++ target/riscv/common-semi-target.c | 4 ++++ 4 files changed, 10 insertions(+) diff --git a/include/semihosting/common-semi.h b/include/semihosting/common= -semi.h index aa511a46f42..a11905ef4ef 100644 --- a/include/semihosting/common-semi.h +++ b/include/semihosting/common-semi.h @@ -37,6 +37,7 @@ void do_common_semihosting(CPUState *cs); uint64_t common_semi_arg(CPUState *cs, int argno); void common_semi_set_ret(CPUState *cs, uint64_t ret); +void common_semi_set_err(CPUState *cs, int err); bool is_64bit_semihosting(CPUArchState *env); bool common_semi_sys_exit_is_extended(CPUState *cs); uint64_t common_semi_stack_bottom(CPUState *cs); diff --git a/semihosting/arm-compat-semi.c b/semihosting/arm-compat-semi.c index 5e5f181b908..c54753f696f 100644 --- a/semihosting/arm-compat-semi.c +++ b/semihosting/arm-compat-semi.c @@ -237,6 +237,7 @@ static void common_semi_cb(CPUState *cs, uint64_t ret, = int err) ts->swi_errno =3D err; #else syscall_err =3D err; + common_semi_set_err(cs, err); #endif } common_semi_set_ret(cs, ret); diff --git a/target/arm/common-semi-target.c b/target/arm/common-semi-targe= t.c index 2b77ce9c17b..38d52deb3d6 100644 --- a/target/arm/common-semi-target.c +++ b/target/arm/common-semi-target.c @@ -34,6 +34,10 @@ void common_semi_set_ret(CPUState *cs, uint64_t ret) } } =20 +void common_semi_set_err(CPUState *cs, int err) +{ +} + bool common_semi_sys_exit_is_extended(CPUState *cs) { return is_a64(cpu_env(cs)); diff --git a/target/riscv/common-semi-target.c b/target/riscv/common-semi-t= arget.c index aeaeb88d536..38a00e160c3 100644 --- a/target/riscv/common-semi-target.c +++ b/target/riscv/common-semi-target.c @@ -26,6 +26,10 @@ void common_semi_set_ret(CPUState *cs, uint64_t ret) env->gpr[xA0] =3D ret; } =20 +void common_semi_set_err(CPUState *cs, int err) +{ +} + bool is_64bit_semihosting(CPUArchState *env) { return riscv_cpu_mxl(env) !=3D MXL_RV32; --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324225; cv=none; d=zohomail.com; s=zohoarc; b=Dw5m6DtNlleR6mK5nvMDrva+I6ZXUe3WysSMY0ayakaeWBUJAwos+D9p3JOOpH3A/XjAB/gzSGf2dETKyrgSCmVCesAmvjIb865EdqZxqXifg4OI0VsPMIx+dQepyYz5cXqeeSOpsTJAohfp5C91+tU6N93lDvIJIMTZbNH7E78= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324225; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=qoeiQW8G/vrM5BSKOgnOUobtabxzfF0gWui8dzH0GKo=; b=j6wVNNXbD0qkelhMGys6jGYChxDAOVuTX4THfj8awRskvhRIJl0sh2v8jay1hR+8/D06Yo+Hqd5Zg5FDiZyylqPOXPaJXSRZBxPMTJEhD+th7z/Vn/pnFOsanJUFp7RoVkuYJYVqu8oXT0/pGNM/czXbTkMMBdFEQf/eT5PRUG8= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324225434657.0877541929635; Tue, 1 Sep 2026 21:43:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1coO-000097-VY; Wed, 02 Sep 2026 00:43:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coN-00007o-4W for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:42:59 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coJ-0000K8-6S for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:42:58 -0400 Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 681KTTH02983055 for ; Wed, 2 Sep 2026 04:42:52 GMT Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ge35k25rq-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:42:52 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-399311947f6so1187081a91.0 for ; Tue, 01 Sep 2026 21:42:52 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.42.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:42:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= qoeiQW8G/vrM5BSKOgnOUobtabxzfF0gWui8dzH0GKo=; b=D6rlAeOMMG859jTg zDT47umpB8tElr3HO17zlp01U0LUg+Am/EFqN7IbO+P3Ayv3CxbEecF9Mb1kfdON aSpU42OAeJjkMnyZWpj11Y/s5W15w9SmIOgLLjlw8iLREDwTGgu7nv7z91s2kUj0 BEi3uh3j7s7Kf+5Idk63KLkePEYEN8la2Z5SFDMoPU7OUOwQJ/NfuDIsZpeHeFeX H5FP9bSj5kPITUJ/qbU/Adc9e0Wfc013F5U++OZ9MT27iMGcK/BDhEgCr5xspD6U 0vUjBvRQ52TkhhoZepKA5W4LwwBlqABqYzpvKOqtiDOrKgJZp/Gt1N3JRpLuEmTb o25GbA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324172; x=1788928972; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=qoeiQW8G/vrM5BSKOgnOUobtabxzfF0gWui8dzH0GKo=; b=gdd3QKBUR2moe1MLcshnwRpDhWa8Ke3+HlC8rvUtiFW4ZB+P93e67Nn0hXWtW9R1TQ PywbcjONJGMsJYijr4LXYGR79VjkqMuq7SAVjXpft8EvZ/71rN2rFyOhxrVtEJMsNCUQ MfS2dYFA0NVlmWjczUgXVdJXSRWARyHE5RFJXoV7EvG4mYVesABbbUQU1LnYye7fK+nH HtP69LC+tzjLQZV6CTnwhPRL3uyJyFPceV8pVTwCPBZ7MQd5KlXqpQRiCMMOGBmM4sjv 0qeYfxH/KcD/39WnT9rS3usqUmGNY9RG1+JBw5SiQ0jBE742rFiAa68SizuTdXgpTtzi hHjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324172; x=1788928972; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=qoeiQW8G/vrM5BSKOgnOUobtabxzfF0gWui8dzH0GKo=; b=VP6VyZMDYIo3/MoCMt62yw8Wvs4UKmu6k1OmZCpfImwBEwaRSwqlV5AZxqvtEt2F/O MWtGGtM6FJeCwT8Ob6Gn1X4oaQVwJnAScVssG8bqY8ECHHqXTv3U6gis6ab4xhWAgCXL eBGv29M8dKQifWoAVyPqI6u7QbLqAuPowRlmS5tQchmDSpDEaaJt11UjxXMzi/raQ+yG ZRhZBvqLj//UFNfP1d6f/LjGGUdWiSttoc98oW6s3cAGdeLlShsXcDG2I5gSPiglodYM 7iRySoslzhRDdfbi+qziooSau1xong+vehXrioplB10RnLPxO6KM/G7r0B33/ICbZDEi pFvA== X-Gm-Message-State: AFuF++kC3R9R2TY8MRb6cwAUFmoRFPFVWSabb7nNxIf5SVZ9fy57JxWW Pru9yw0ypkFzsjBlmVnb2jDD/ZiRqrZYwxYt49FW0RZK177Lleyb0o/4/vnzJGyMhVGXbEAFJta IJwVj3Ajj3RCkrnBDQx0xufEHhCUeULzzPNrR7Tla3aIH5SM19QF4APBuUiQZbSiTNw== X-Gm-Gg: AYBFou0GKmXYrqdJ8rhk0ShGbjH84pApbmNnQexSzE9MqMIoHgur9ltKng2xIgUejXB ULM7AOtEaHWESP4WiHAwuvH6ux0ijv1fpXcH2LnasS4qpIskEb4LtyZUTFXPC4eDCax27FPQvlm yTfs62T2ePV2yMHMggUMcSqEB2m52YK9RTUwJvqlEpR5zsGVBKKCRTDw/KeG0MLL2O1pyxhZHVF XMux2cE3r9ogkywHu+RtLYCi1TF6Zo6HDNw95TNvR7mzmOZIP/GG9Z8iRDf/bNxBsoY6g0P/xo0 iACnP5BiuEIg8JPv8sH+KPx2hPfz+sh8E0fLo9bVRMaFDdWCpt7pDPXIRFP0r9F2krQNZsEUlQJ WE8RazCnsZ2VP4YgZ1Gotpc/DBxE50mfzmqZDPSuhHZpnoMnW X-Received: by 2002:a17:90b:5845:b0:398:cb56:e92 with SMTP id 98e67ed59e1d1-39aedf435b8mr3295144a91.11.1788324171631; Tue, 01 Sep 2026 21:42:51 -0700 (PDT) X-Received: by 2002:a17:90b:5845:b0:398:cb56:e92 with SMTP id 98e67ed59e1d1-39aedf435b8mr3295085a91.11.1788324171126; Tue, 01 Sep 2026 21:42:51 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Matheus Tavares Bernardino , Pierrick Bouvier , Paolo Bonzini Subject: [PULL 07/28] target/hexagon: add semihosting support Date: Tue, 1 Sep 2026 21:42:10 -0700 Message-Id: <20260902044231.843004-8-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX9hwoSpUJWwuW p41YKOZg7lL381hgD1T8MGg3GGdpkUXbwpnKNnvS/idQESCw1joomNHCEuFn76CSAwoGu3T6gvu LDFMKpETTlPrJsLocf88Wp/FMKs3CD0RyK4cEHV4DSZhmn4y8+JCuSnbXbqr/NS3gioxTLfT8gU pejtywmOeVW9mYj6MhGWizruUZ+59VPdYs4g3ruRQxbhEuHiiuB9sZ34mepVt3rtagRkAS1hKhS 8f47Tw5m1EQ8Q7SjHWija9+uR+6TCC/PU7czgF9NR3RuvBs5bfqwSnxaWALxQ0zAHJWtiRzGBS0 h7gtPyhyNg1eHH1cvSrZcEm6STO66tL9aw1ozQPUjulFsbSVyDuGFCB5Ly1OKAVJ9juCLdfsWmS /XKptMtjwI9TBvJoUUM9VX5gWmrsSoACQuOfkg16xpZrMeUBOgv0tkwGaZIygcNbjRJW/orNgml Tjym/0Owk2vGlM0CUVw== X-Proofpoint-GUID: Rb3WDQOxD_9KQriI5XA2DiBtq48ba19k X-Proofpoint-ORIG-GUID: Rb3WDQOxD_9KQriI5XA2DiBtq48ba19k X-Authority-Analysis: v=2.4 cv=VLrtWdPX c=1 sm=1 tr=0 ts=6a97a94c cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=02KkXuQP0Ix7r3NTeQ0A:9 a=QEXdDO2ut3YA:10 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX+jHmDiclFdY+ u/j8FZzN+NU0AFE4BQwkPj1WaL91wChXGNNum1HESk0YK9PBTMFOT85P0P+Q/ywbDo38KgDmtB+ /yr5YtNlucE3DbZW+hjWN5LBuETXAsE= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 lowpriorityscore=0 clxscore=1015 bulkscore=0 malwarescore=0 adultscore=0 priorityscore=1501 phishscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324228007154100 From: Matheus Tavares Bernardino Baremetal Hexagon programs use trap0 #0 to invoke semihosting calls for I/O and process control. Wire up the arm-compatible semihosting framework for softmmu by enabling CONFIG_ARM_COMPATIBLE_SEMIHOSTING and routing trap0 to the semihosting handler. Reviewed-by: Pierrick Bouvier Reviewed-by: Brian Cain Signed-off-by: Matheus Tavares Bernardino checkpatch: style fixes. Signed-off-by: Brian Cain --- docs/system/target-hexagon.rst | 8 +- configs/targets/hexagon-softmmu.mak | 2 + hw/hexagon/hexagon_dsp.c | 2 + target/hexagon/common-semi-target.c | 51 ++++++++ target/hexagon/hexswi.c | 191 +++++++++++++++++++++++++++- hw/hexagon/Kconfig | 1 + qemu-options.hx | 8 +- target/hexagon/meson.build | 1 + 8 files changed, 254 insertions(+), 10 deletions(-) create mode 100644 target/hexagon/common-semi-target.c diff --git a/docs/system/target-hexagon.rst b/docs/system/target-hexagon.rst index 416b8f7be76..a9f8c29810e 100644 --- a/docs/system/target-hexagon.rst +++ b/docs/system/target-hexagon.rst @@ -91,9 +91,11 @@ Semihosting ----------- Hexagon supports a semihosting interface similar to other architectures'. The ``trap0`` instruction can activate these semihosting calls so that the -guest software can access the host console and filesystem. Semihosting -is not yet implemented in QEMU hexagon. - +guest software can access the host console and filesystem. Read the +`Hexagon Semihosting Specification +`__ +for details. Semihosting is enabled by default on hexagon-sim-compatible +machines. This can be further configured through ``-semihosting-config``. =20 Hexagon Features =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D diff --git a/configs/targets/hexagon-softmmu.mak b/configs/targets/hexagon-= softmmu.mak index a77c100f0c5..6cbdc64be56 100644 --- a/configs/targets/hexagon-softmmu.mak +++ b/configs/targets/hexagon-softmmu.mak @@ -6,3 +6,5 @@ TARGET_LONG_BITS=3D32 TARGET_NOT_USING_LEGACY_LDST_PHYS_API=3Dy TARGET_NOT_USING_LEGACY_NATIVE_ENDIAN_API=3Dy TARGET_NEED_FDT=3Dy +CONFIG_SEMIHOSTING=3Dy +CONFIG_ARM_COMPATIBLE_SEMIHOSTING=3Dy diff --git a/hw/hexagon/hexagon_dsp.c b/hw/hexagon/hexagon_dsp.c index 20306c28e72..2198436a440 100644 --- a/hw/hexagon/hexagon_dsp.c +++ b/hw/hexagon/hexagon_dsp.c @@ -26,6 +26,7 @@ #include "target/hexagon/internal.h" #include "system/physmem.h" #include "system/reset.h" +#include "semihosting/semihost.h" =20 #include "machine_cfg_v66g_1024.h.inc" =20 @@ -153,6 +154,7 @@ static void init_mc(MachineClass *mc) mc->no_serial =3D 1; mc->is_default =3D false; mc->max_cpus =3D 8; + qemu_semihosting_enable(); } =20 /* ----------------------------------------------------------------- */ diff --git a/target/hexagon/common-semi-target.c b/target/hexagon/common-se= mi-target.c new file mode 100644 index 00000000000..210d33e54e2 --- /dev/null +++ b/target/hexagon/common-semi-target.c @@ -0,0 +1,51 @@ +/* + * Target-specific parts of semihosting/arm-compat-semi.c. + * + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "cpu.h" +#include "cpu_helper.h" +#include "semihosting/common-semi.h" + +uint64_t common_semi_arg(CPUState *cs, int argno) +{ + CPUHexagonState *env =3D cpu_env(cs); + return env->gpr[HEX_REG_R00 + argno]; +} + +void common_semi_set_ret(CPUState *cs, uint64_t ret) +{ + CPUHexagonState *env =3D cpu_env(cs); + env->gpr[HEX_REG_R00] =3D ret; +} + +void common_semi_set_err(CPUState *cs, int err) +{ + CPUHexagonState *env =3D cpu_env(cs); + env->gpr[HEX_REG_R01] =3D err; +} + +bool common_semi_sys_exit_is_extended(CPUState *cs) +{ + return false; +} + +bool is_64bit_semihosting(CPUArchState *env) +{ + return false; +} + +uint64_t common_semi_stack_bottom(CPUState *cs) +{ + CPUHexagonState *env =3D cpu_env(cs); + return env->gpr[HEX_REG_SP]; +} + +bool common_semi_has_synccache(CPUArchState *env) +{ + return false; +} diff --git a/target/hexagon/hexswi.c b/target/hexagon/hexswi.c index 43c373ea2ee..4a75ff36f07 100644 --- a/target/hexagon/hexswi.c +++ b/target/hexagon/hexswi.c @@ -24,9 +24,195 @@ #error "This file is only used in system emulation" #endif =20 +#include "semihosting/common-semi.h" +#include "semihosting/console.h" +#include "semihosting/syscalls.h" +#include "semihosting/guestfd.h" +#include "system/runstate.h" + +/* non-arm-compatible semihosting calls */ +#define HEXAGON_SPECIFIC_SWI_FLAGS \ + DEF_SWI_FLAG(OPEN, 0x01) \ + DEF_SWI_FLAG(ISTTY, 0x09) \ + DEF_SWI_FLAG(HEAPINFO, 0x16) \ + DEF_SWI_FLAG(EXCEPTION, 0x18) \ + DEF_SWI_FLAG(SEEK, 0x0A) \ + DEF_SWI_FLAG(READ_CYCLES, 0x40) \ + DEF_SWI_FLAG(PROF_ON, 0x41) \ + DEF_SWI_FLAG(PROF_OFF, 0x42) \ + DEF_SWI_FLAG(WRITECREG, 0x43) \ + DEF_SWI_FLAG(READ_TCYCLES, 0x44) \ + DEF_SWI_FLAG(LOG_EVENT, 0x45) \ + DEF_SWI_FLAG(REDRAW, 0x46) \ + DEF_SWI_FLAG(READ_ICOUNT, 0x47) \ + DEF_SWI_FLAG(PROF_STATSRESET, 0x48) \ + DEF_SWI_FLAG(DUMP_PMU_STATS, 0x4a) \ + DEF_SWI_FLAG(READ_PCYCLES, 0x52) \ + DEF_SWI_FLAG(COREDUMP, 0xCD) \ + DEF_SWI_FLAG(FTELL, 0x100) \ + DEF_SWI_FLAG(FSTAT, 0x101) \ + DEF_SWI_FLAG(STAT, 0x103) \ + DEF_SWI_FLAG(GETCWD, 0x104) \ + DEF_SWI_FLAG(ACCESS, 0x105) \ + DEF_SWI_FLAG(OPENDIR, 0x180) \ + DEF_SWI_FLAG(CLOSEDIR, 0x181) \ + DEF_SWI_FLAG(READDIR, 0x182) \ + DEF_SWI_FLAG(EXEC, 0x185) \ + DEF_SWI_FLAG(FTRUNC, 0x186) + +/* + * We use the arm-compatible semihosting routines for these ones, but we do + * need some hexagon-specific preprocessing. + */ +#define HEX_SYS_WRITE 0x05 +#define HEX_SYS_READ 0x06 +#define HEX_SYS_READC 0x07 + +enum hex_swi_flag { + HEX_SYS_OPEN =3D 0x01, + HEX_SYS_ISTTY =3D 0x09, + HEX_SYS_HEAPINFO =3D 0x16, + HEX_SYS_EXCEPTION =3D 0x18, + HEX_SYS_SEEK =3D 0x0A, + HEX_SYS_READ_CYCLES =3D 0x40, + HEX_SYS_PROF_ON =3D 0x41, + HEX_SYS_PROF_OFF =3D 0x42, + HEX_SYS_WRITECREG =3D 0x43, + HEX_SYS_READ_TCYCLES =3D 0x44, + HEX_SYS_LOG_EVENT =3D 0x45, + HEX_SYS_REDRAW =3D 0x46, + HEX_SYS_READ_ICOUNT =3D 0x47, + HEX_SYS_PROF_STATSRESET =3D 0x48, + HEX_SYS_DUMP_PMU_STATS =3D 0x4a, + HEX_SYS_READ_PCYCLES =3D 0x52, + HEX_SYS_COREDUMP =3D 0xCD, + HEX_SYS_FTELL =3D 0x100, + HEX_SYS_FSTAT =3D 0x101, + HEX_SYS_STAT =3D 0x103, + HEX_SYS_GETCWD =3D 0x104, + HEX_SYS_ACCESS =3D 0x105, + HEX_SYS_OPENDIR =3D 0x180, + HEX_SYS_CLOSEDIR =3D 0x181, + HEX_SYS_READDIR =3D 0x182, + HEX_SYS_EXEC =3D 0x185, + HEX_SYS_FTRUNC =3D 0x186, +}; + +#define DEF_SWI_FLAG(_, val) case val: +static inline bool is_hexagon_specific_swi_flag(enum hex_swi_flag what_swi) +{ + switch (what_swi) { + HEXAGON_SPECIFIC_SWI_FLAGS + return true; + } + return false; +} +#undef DEF_SWI_FLAG + +static void init_semihosting_guestfds(void) +{ + static gsize initialized; + + if (g_once_init_enter(&initialized)) { + if (qemu_semihosting_console_has_chardev()) { + alloc_guestfd(); + console_guestfd(0); + alloc_guestfd(); + console_guestfd(1); + alloc_guestfd(); + console_guestfd(2); + } else { + alloc_guestfd(); + associate_guestfd(0, 0); + alloc_guestfd(); + associate_guestfd(1, 1); + alloc_guestfd(); + associate_guestfd(2, 2); + } + g_once_init_leave(&initialized, 1); + } +} + +static void do_preload(CPUHexagonState *env, target_ulong swi_info, bool l= oad) +{ + uint32_t addr, count; + uintptr_t retaddr =3D 0; + + hexagon_read_memory(env, swi_info + 4, 4, &addr, retaddr); + hexagon_read_memory(env, swi_info + 8, 4, &count, retaddr); + hexagon_peek_memory_range(env, addr, count, retaddr); +} + +static void sim_handle_trap0(CPUHexagonState *env) +{ + target_ulong what_swi, swi_info; + CPUState *cs =3D env_cpu(env); + + g_assert(bql_locked()); + init_semihosting_guestfds(); + + what_swi =3D env->gpr[HEX_REG_R00]; + swi_info =3D env->gpr[HEX_REG_R01]; + + qemu_log_mask(CPU_LOG_INT, + "sim_handle_trap0: swi=3D0x%" PRIx32 + " info=3D0x%" PRIx32 " PC=3D0x%" PRIx32 + " thread=3D%" PRId32 "\n", + (uint32_t)what_swi, (uint32_t)swi_info, + (uint32_t)env->gpr[HEX_REG_PC], + (uint32_t)env->threadId); + + if (!is_hexagon_specific_swi_flag(what_swi)) { + if (what_swi =3D=3D HEX_SYS_READ || what_swi =3D=3D HEX_SYS_READC = || + what_swi =3D=3D HEX_SYS_WRITE) { + /* + * Avoid page faults if the buffer is not in memory yet. + * NOTE: Counterintuitive, but a WRITE must be able to LOAD fr= om + * the input address. The contents of that buffer will be + * directed to the SWI interface. + */ + do_preload(env, swi_info, (what_swi =3D=3D HEX_SYS_WRITE)); + } + /* + * ARM-compat semihosting SWI numbers are all <=3D 0x31. + * If R0 holds a value outside that range (e.g. guest code + * executing trap0(#0) with an arbitrary R0), treat it as an + * unrecognized request rather than forwarding to + * do_common_semihosting() which would abort. + */ + if (what_swi > 0x31) { + qemu_log_mask(LOG_UNIMP, + "trap0(#0): unrecognized request in r0: " + "0x" TARGET_FMT_lx "\n", what_swi); + return; + } + do_common_semihosting(cs); + return; + } + + switch (what_swi) { + + case HEX_SYS_EXCEPTION: + { + uint32_t ret =3D env->gpr[HEX_REG_R02]; + env->gpr[HEX_SREG_MODECTL] =3D 0; + gdb_exit(ret); + exit(ret); + } + break; + + /* TODO: implement other hexagon-specific semihosting calls */ + + default: + qemu_log_mask(LOG_UNIMP, + "unknown swi request: 0x%" PRIx32 "\n", + (uint32_t)what_swi); + common_semi_cb(cs, -1, ENOSYS); + } +} + static void set_addresses(CPUHexagonState *env, uint32_t pc_offset, uint32_t exception_index) - { HexagonCPU *cpu =3D env_archcpu(env); uint32_t evb =3D cpu->globalregs ? @@ -95,8 +281,7 @@ void hexagon_cpu_do_interrupt(CPUState *cs) switch (cs->exception_index) { case HEX_EVENT_TRAP0: if (env->cause_code =3D=3D 0) { - qemu_log_mask(LOG_UNIMP, - "trap0 is unhandled, no semihosting available\n"= ); + sim_handle_trap0(env); } =20 hexagon_ssr_set_cause(env, env->cause_code); diff --git a/hw/hexagon/Kconfig b/hw/hexagon/Kconfig index 83b2763d1e3..bb8a254fd26 100644 --- a/hw/hexagon/Kconfig +++ b/hw/hexagon/Kconfig @@ -5,6 +5,7 @@ config HEX_DSP select CPU_CLUSTER select HEX_L2VIC select HEX_QTIMER + select ARM_COMPATIBLE_SEMIHOSTING =20 config HEX_VIRT bool diff --git a/qemu-options.hx b/qemu-options.hx index 562c4c2b035..be6fcad79fd 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -5515,7 +5515,7 @@ ERST DEF("semihosting", 0, QEMU_OPTION_semihosting, "-semihosting semihosting mode\n", QEMU_ARCH_ARM | QEMU_ARCH_M68K | QEMU_ARCH_XTENSA | - QEMU_ARCH_MIPS | QEMU_ARCH_RISCV) + QEMU_ARCH_MIPS | QEMU_ARCH_RISCV | QEMU_ARCH_HEXAGON) SRST ``-semihosting`` Enable :ref:`Semihosting` mode (ARM, M68K, Xtensa, MIPS, RISC-V only). @@ -5531,11 +5531,11 @@ DEF("semihosting-config", HAS_ARG, QEMU_OPTION_semi= hosting_config, "-semihosting-config [enable=3Don|off][,target=3Dnative|gdb|auto][,cha= rdev=3Did][,userspace=3Don|off][,arg=3Dstr[,...]]\n" \ " semihosting configuration\n", QEMU_ARCH_ARM | QEMU_ARCH_M68K | QEMU_ARCH_XTENSA | -QEMU_ARCH_MIPS | QEMU_ARCH_RISCV) +QEMU_ARCH_MIPS | QEMU_ARCH_RISCV | QEMU_ARCH_HEXAGON) SRST ``-semihosting-config [enable=3Don|off][,target=3Dnative|gdb|auto][,charde= v=3Did][,userspace=3Don|off][,arg=3Dstr[,...]]`` - Enable and configure :ref:`Semihosting` (ARM, M68K, Xtensa, MIPS, RISC= -V - only). + Enable and configure :ref:`Semihosting` (ARM, M68K, Xtensa, MIPS, RISC= -V, + Hexagon only). =20 .. warning:: Note that this allows guest direct access to the host filesystem, so diff --git a/target/hexagon/meson.build b/target/hexagon/meson.build index 4c921eee73b..09620de3324 100644 --- a/target/hexagon/meson.build +++ b/target/hexagon/meson.build @@ -261,6 +261,7 @@ hexagon_softmmu_ss.add(files( 'hex_interrupts.c', 'hexswi.c', 'machine.c', + 'common-semi-target.c', )) =20 # --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324197; cv=none; d=zohomail.com; s=zohoarc; b=cJOJYMtjLitLXm0e7ITg07EuoHonFNqY8cx2CkaaWzrvTcHQZkqWC15eBbrj6V+u4TzNOO7mNpVU+BT7PL+0pVoS+k09jih/RcQrZP/Qf2bAy2Wp7o/j3/rFXkm6ZotciAoSKn75YRZ36bXv3zD3xv76zH81aZV48Uy8uuoInVI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324197; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=eF8RqxLrvuk2CLDFYv0pEEjgULI/TA8csQSHi7utusw=; b=KBjDp3ljaDjNXKflld0VW+gmg84C+0jU+qxuRYnXH2o8jFHvBp9qh3PNRrAZG6Jb0E+JrxpFNhbsTkx4y6Jdqrruo2L5x145foHlpErp1xfttDl60eCOISZjQN/V/nQgku4ZUgHm38UcxNE4V9pEKXhfwR00YoAT6X/OKm4vN68= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324197861526.9817316120369; Tue, 1 Sep 2026 21:43:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1coO-00008Y-Hs; Wed, 02 Sep 2026 00:43:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coM-00006j-8A for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:42:58 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coJ-0000KD-GT for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:42:57 -0400 Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6823JPxQ1025989 for ; Wed, 2 Sep 2026 04:42:54 GMT Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gebsx08ab-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:42:54 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-398dc3d8f0aso981641a91.0 for ; Tue, 01 Sep 2026 21:42:53 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.42.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:42:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= eF8RqxLrvuk2CLDFYv0pEEjgULI/TA8csQSHi7utusw=; b=WCxXvhScIBI2iTvG y8k5ZapK+VtOEIwdgx/86kiUBwMCQ26dPosGoh3zDw7Xv7Py3Fn6wpgg3XLgYiVY niBr6eWpkXXTuScWvVHbzL6k2dqMP+XwpfoL8XLa5TbWC6mV7Q74GzgxZmAAO0rc X0WrVMWsq/6u17Dq8o+sqMbm3wRAZ0vYDtpQsj5CeecLJzk+pPYU7Sninhn7K3BX wivYrmmZktoOHJi7cFUleCF2B/Ua8D3EKNVJdUiwtXUHI1r+a0jor1+r2abzOv7/ f7KOy1Ncr3HAR7mvsb7rEK/Wqi26bLSdHwXppIQUaLFerMLIRILFmjIUy+5ZMWPs naZefw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324173; x=1788928973; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=eF8RqxLrvuk2CLDFYv0pEEjgULI/TA8csQSHi7utusw=; b=Iq6ZEtY0Nx2TcsZW2Ey51amCYHlPOxEthG+GuMvo0Aiwj4RMpd03xD/DUpb6ZZDXN4 8OV4rj91XS9Nqj77F7E/gZdGiZFp/Vhce2ix3cASEeG6YWbu56Wt9snwUyeJCz0k5l80 CPgeiJVIoaLwks/0kMzj9QIqOZ+fThuEj5ZpzBZ7e4IZ336KF9r5YxVzLE+rVzwSRvxh dd98wdEJOvHf7p6n9NARK/+dZZimKIDAQj9rwY3W2uFk6cMFBNL2pijReCQK8LhTS1iP W0DAF9iDOWBUp7L8xC6Ypa0gPwrl/+51mH6CiCdk0nMZLvRk6zHOkmn4yK15OFSY+qJE pk8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324173; x=1788928973; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=eF8RqxLrvuk2CLDFYv0pEEjgULI/TA8csQSHi7utusw=; b=ABkgikkwEsxO7UymnL+QWKZA5Q6SoXC0D0aZi+8ZGVvLggM+eJN/Xm3/yTpJW5YuUr YBc7DFsjkrzrDzC+qweGuMhtty/H3jfnWLa/IuGUZK6IdnihFwgE6sXDSFI6ogLpTVTc diJlr59uPgVkslXZSZmUK+8vuIudI94uP+tOtgyW3nXmweMFW6qCbe+ZgZuaa/8MGBfW tXS/pd3uU42p29KsPMcgAYP9afa4sSjhQAfPH2diBOBPga5YXnUyV2tmyYDzukfDM+ch Y/XV+CFRdurXGvKAhlM0Al7G7zPQowemHG/NymygyZof/6f9b6TmqCa48uwxraamN5es EVfg== X-Gm-Message-State: AFuF++kdicZoJrXuTmug7R3rgL48hoElOTI831WDBrtqCsxmV5SNi3qk 5/GTSW3uVQg0w8zbN6ds/YMhGZlX+bDwk2LIcD2YdOD5zRWCz8MGurqYUNYBd0UKQuaG3UP8Mah kx+jV4K9Td2y4duwcFalxCs5xr3wfXRS068uJV1ffnh5kcolFRfQ9sLaI1CaYFWNQ8w== X-Gm-Gg: AYBFou2tFfkDUZ7uzDCMBqp9ODJEgLijU92v8d1Pn8kZL5BKC/cL1nhfpxyzso3ID+U H8G5eh68aG7bfvoAAOhUxy3JUBde8dxRUEwPORN93KkJXghcMgfhkURHpdPf/jF4uGWzP9KrxfQ CWg/zeAu6HtKsDfJrD/DeVe3CYKQU+wsIoPfE1KM0VeXbxGyBGdDX0yCEmo+wLVn+LC1lQGFlam /o4UXxZ+FwnTkkM96m/7KkUDaafCua/0dVSJu5G1WbsZ5DS9FO/a2MedGj2w2gLXsFXp0GB0CrS PYEL5zxX3FOpDw++3ePSwGN+W9tpmBHAlEc1LiyGHJO1Bggrlr5u19pocEknbG6rC0Z1Ya+V4Kf LkbK7bAXePmVMZzmRzDy5ecQUV8qF8s/ZC04NsyLI1nXc8dxz X-Received: by 2002:a17:90b:562e:b0:380:8bb9:aba9 with SMTP id 98e67ed59e1d1-39af57ba71dmr729506a91.3.1788324173301; Tue, 01 Sep 2026 21:42:53 -0700 (PDT) X-Received: by 2002:a17:90b:562e:b0:380:8bb9:aba9 with SMTP id 98e67ed59e1d1-39af57ba71dmr729446a91.3.1788324172732; Tue, 01 Sep 2026 21:42:52 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Matheus Tavares Bernardino , Pierrick Bouvier , =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [PULL 08/28] semihosting: add ftruncate helper (to be used for hexagon) Date: Tue, 1 Sep 2026 21:42:11 -0700 Message-Id: <20260902044231.843004-9-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: UEiSsCJ9kvq37qXIhO2hTst95uxQ0ZiF X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX+yVhFhKUbDon rDS7mF6yD465xYCqPxjcWb4tyQ5TE7JM9ocfjdftd44RcXIVlVKEXYPQ2Kh6Bu4AJZxjNvujpUc 1cG7CKsoC6OME1gWc2QSltpBmlutL63f8qEsJF6AGJbG3JzHoZgqhR345JZQ7/pQf+wHu9AeuI9 evDzzvknfyaSZNdS20hJx7epe/t1gFPITDqf1PWJJw53GagztaYTCCiwtdv8RcceFK+kfDlb9Ba SN2xm+B6Jihh/6tMfCi07QKR/SbLAlkBvHYnI5I6A00xaZO/eBib+0PYW5ZGSBxZyLPAh8EAJEq O3LH0vDQH7n309Yc+mGnabYB/UywMMNDmUqppwGDekz1BeL4kaqAgaN7WNveosb0qcG2o6uS6vW meidCN9GSlSv2bWEJC6mPPz8J6WCge+D/GMCa/W9rbdU0FNxiWNK4gzvn3hT8SlMTd0fKn6GkHA O4yzaWMLGP5/93pk/7A== X-Proofpoint-GUID: UEiSsCJ9kvq37qXIhO2hTst95uxQ0ZiF X-Authority-Analysis: v=2.4 cv=AufeGu9P c=1 sm=1 tr=0 ts=6a97a94e cx=c_pps a=RP+M6JBNLl+fLTcSJhASfg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=uJe94fD4SakSd_PNSRgA:9 a=QEXdDO2ut3YA:10 a=iS9zxrgQBfv6-_F4QbHw:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX+9KC8Bpi+oBk FJhr0kgRu9lgGSUXxeERek19MFQLmU7nf8KNheS0ls/0uH7SqbLnFtg1+TGuOw1w7aOvznBLvgx /VTWoextK3duLDzWPxGnR267uW0ZsQU= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 bulkscore=0 lowpriorityscore=0 impostorscore=0 phishscore=0 spamscore=0 adultscore=0 suspectscore=0 priorityscore=1501 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324199975158500 From: Matheus Tavares Bernardino The common semihosting syscall layer has no ftruncate helper, but the Hexagon semihosting ABI includes an FTRUNC operation. Add semihost_sys_ftruncate() so that Hexagon can delegate to it rather than calling ftruncate directly. Reviewed-by: Pierrick Bouvier Signed-off-by: Matheus Tavares Bernardino Signed-off-by: Brian Cain --- include/semihosting/syscalls.h | 2 ++ semihosting/syscalls.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/include/semihosting/syscalls.h b/include/semihosting/syscalls.h index 03aa45b7bb9..3919ab64c7c 100644 --- a/include/semihosting/syscalls.h +++ b/include/semihosting/syscalls.h @@ -75,4 +75,6 @@ void semihost_sys_gettimeofday(CPUState *cs, gdb_syscall_= complete_cb complete, void semihost_sys_poll_one(CPUState *cs, gdb_syscall_complete_cb complete, int fd, GIOCondition cond, int timeout); =20 +void semihost_sys_ftruncate(CPUState *cs, gdb_syscall_complete_cb complete, + int fd, off_t len); #endif /* SEMIHOSTING_SYSCALLS_H */ diff --git a/semihosting/syscalls.c b/semihosting/syscalls.c index 20f155f869a..0456db0befb 100644 --- a/semihosting/syscalls.c +++ b/semihosting/syscalls.c @@ -8,10 +8,12 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" +#include "qemu/error-report.h" #include "gdbstub/syscalls.h" #include "semihosting/guestfd.h" #include "semihosting/syscalls.h" #include "semihosting/console.h" +#include "semihosting/semihost.h" #ifdef CONFIG_USER_ONLY #include "qemu.h" #else @@ -541,6 +543,13 @@ static void host_poll_one(CPUState *cs, gdb_syscall_co= mplete_cb complete, } #endif =20 +static void host_ftruncate(CPUState *cs, gdb_syscall_complete_cb complete, + GuestFD *gf, off_t len) +{ + int err =3D ftruncate(gf->hostfd, len); + complete(cs, err, err < 0 ? errno : 0); +} + /* * Static file semihosting syscall implementations. */ @@ -982,3 +991,23 @@ void semihost_sys_poll_one(CPUState *cs, gdb_syscall_c= omplete_cb complete, } } #endif + +void semihost_sys_ftruncate(CPUState *cs, gdb_syscall_complete_cb complete, + int fd, off_t len) +{ + GuestFD *gf =3D get_guestfd(fd); + if (!gf) { + complete(cs, -1, EBADF); + return; + } + + switch (gf->type) { + case GuestFDHost: + host_ftruncate(cs, complete, gf, len); + break; + default: + error_report("ftruncate call not implemented " + "for this semihosting mode."); + g_assert_not_reached(); + } +} --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324227; cv=none; d=zohomail.com; s=zohoarc; b=CRm2LEVpkKieckMKJ/rbbUBJRe3KltTGRxuK4P1UctXfmKCV/NfZwaGlmSULd+BNWRZ179DGR4hEXicqCl9fDwRGHJzFpWmrFvUFhldU2pXKAj58SWh0d+OTkpORlKTtuoZeGipZQFLnW7elNvr93Z5Okrr/PxuAL89MWWt9NaI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324227; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ClU+Gdkkim9l5bQC/1rUiTqYeshxRKyBIviyIKmH/qs=; b=XgPuQ98TbRNWfR6eUVWRvZqWHAJhAvi4kOXs+5oPPyyQcfBUEFtw/bo6Px0V24qFLz6QXyvUHD0w4WJFnfzfQNsygDujlH/zczOLIu1il3fSd5zyUs4DhwVrCG5Br4GhAiGwMPJAr3a3pAF1J2rYLvP+dmSgV+oXpYwZFMNLCO8= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324227235713.4072050631127; Tue, 1 Sep 2026 21:43:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1coP-000098-5j; Wed, 02 Sep 2026 00:43:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coN-00008J-SF for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:42:59 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coL-0000KV-I0 for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:42:59 -0400 Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 681KTFYt2468840 for ; Wed, 2 Sep 2026 04:42:56 GMT Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ge39cj37s-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:42:55 +0000 (GMT) Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-cc1b6f65dacso839557a12.1 for ; Tue, 01 Sep 2026 21:42:55 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.42.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:42:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= ClU+Gdkkim9l5bQC/1rUiTqYeshxRKyBIviyIKmH/qs=; b=RmpZMCQwXpqUl63x oMg9Tvwhc2GwbChNdAeoHCi0TC1CjSJb1G3+MAWSQk4vd2abwUebMzDX0wqm0UUc cN+jS2oPkg8k8qleT+02AZIII2wh3hg1FBDP23w0G1AAKXseGPFlVYFUrN1BVcOy EysymYyGstzh42uzugk0+urxwbkyjcfrtyjqE1X6KEjWcUvhwBg6tW27UlJTI5gO qPFOasKS3ISDnd7Mo5dooJpv3QGzCwNgAVfQnscJNByAqXjppwHx3Hv5RKMrmPbM eEzfhGH3kOuPcOmVWyrv0BHnSxgW/8B3wI/yHwONkwN5Mqo0Lv1SOGqa5KKxhW0o JNO/PQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324175; x=1788928975; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=ClU+Gdkkim9l5bQC/1rUiTqYeshxRKyBIviyIKmH/qs=; b=A2oWlxGw4sMjhvKks1oTxLfit5pttLH9FAltX8DxdRBp5Na+IWMALtjA388kbmgSqF 9DGqlHwbOD3VoOqytde3882v2cqVdzOAnCW3OAfwlmdLtqaUhUIl/9fhGlYNW6U9EMBw UuLSN6n+kTtmmfDxrgQZUdOcw+ksXYOnM2yYmzeq1q5GZTImR03kv849AidaqrafaB+5 +9AuUP19S1SE7IZ/EnHHGn19tVAcnB5UrK4/O6u99qbtEQYkA0hWDjnbJPgXeKerXNuH qeJwCikj+xyY9RpQlcVmUi5ByX2veETgCPD6Ns3CN16TY87ryXQaSzKddAh+Nfnkll9r Rn1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324175; x=1788928975; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=ClU+Gdkkim9l5bQC/1rUiTqYeshxRKyBIviyIKmH/qs=; b=a6e3skDyzKGVf416MM2LkkfzmbCxKZdicdI+AxMWJDysrKUpNTmmjaoKOSe68urhKl CZvkDPK9Ac+zB1F3lSdyko45Rgluzuv1t4RfDC6CEp3GNiEALil0MGkPPDwrEEDsh7/A XpzH/MmZBk6heqUIFGPEUy9FVr1v0a9uP9sc/GV5SLUScN4ejFF8BInFL/5onf3QiFyX Xh498l5uKMQ5fMSsbSMBzUotmw/iF1ooQ4VZp6LUmx7dCZd+gLecFx8mqW+Q6KBj0IaQ eGrKSXMT8lac7U1itYlSgix+sm96TafKZdlsp1nA3PAca34eMWuHfJOP/ZSxSOfXpoD9 cn7Q== X-Gm-Message-State: AFuF++kTt5xS+UWhSHzB4C3QD6Z5PNmSe0HGXyKE68jP3ZNnSef5TdIL 0hBzSmIRqHduNCtd8up7zexNccGhmmcqm/2QodCwD6QlyKWRU9zgj994p68IS89aMzjtFg5S1fX dmVM+UiWlypR78Z+ufqce5+SKqPYmgpdUUDI2qgb1MDKmB7YpW7bbhFyRvx16gmpZ3A== X-Gm-Gg: AR+sD13R/xjS9EVzp/OF2pDwo45Vy3G+fvZS1IV4caiF7cdhRRQ6hmrG1v/Vz89JKVc LCrz/Qld+Uefx2bm/UFCKAq3Fr3ASXqcU4NiF/roxAphThCLTnSMoeTruXBX8LAMdMK6XSNmxeJ 9PC2sTe6jdYcqXhPlOzfpVw4iZTKOaCRKtVk+lvrdLPRNTOm5p1PfcNzwSMDVmnhNtuR4/a4sEH 1RTo415aDrTA3LGjCP1e3w7azfEK93tFVuIS3CDr49pJPOQUsd4O77EJzfpB02Z/6YkvNh0bu5a n/UpZFu0B23RZN3nbAJKq4HTzXXXT4ltM6ocZEfvi7akjDDLZ7rX3cdPOw/q3OK65hKKuOouWel bB25skC8Ua7++pCBNWK4OuH4j70RptEDRelOtFWFEDajrRAr0 X-Received: by 2002:a05:6a21:7303:b0:3d0:ba81:79b7 with SMTP id adf61e73a8af0-3d9ac6395b4mr4274495637.12.1788324175255; Tue, 01 Sep 2026 21:42:55 -0700 (PDT) X-Received: by 2002:a05:6a21:7303:b0:3d0:ba81:79b7 with SMTP id adf61e73a8af0-3d9ac6395b4mr4274404637.12.1788324174636; Tue, 01 Sep 2026 21:42:54 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Matheus Tavares Bernardino , Pierrick Bouvier , =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [PULL 09/28] target/hexagon: add main arch-specific semihosting operations Date: Tue, 1 Sep 2026 21:42:12 -0700 Message-Id: <20260902044231.843004-10-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=T968ifKQ c=1 sm=1 tr=0 ts=6a97a950 cx=c_pps a=oF/VQ+ItUULfLr/lQ2/icg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=UwY7kZyrlkj7TMZqf0EA:9 a=QEXdDO2ut3YA:10 a=3WC7DwWrALyhR5TkjVHa:22 X-Proofpoint-ORIG-GUID: csqe0MYrsa4anARJQ9Li5lnJ9slBn1jm X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX3B/jcCAcz+/P MMhWn1J5uQRwfJLDofKYfQyEqlSQH3fOef9wQAXcJC2itID9K0kJ9vNYfgx0vLoAgLEVXV/1Ekw br5G9TEGHLbwg/X43nHhVAw5l4VpajM= X-Proofpoint-GUID: csqe0MYrsa4anARJQ9Li5lnJ9slBn1jm X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX5ge5xlm7SLaU VVdAogd/QqaUNG26Tvz/TUlgdmrRflSbNocCV7Oep2kvjjYozutUeyAk+a6sI8h13kN6LwV/aS4 EdNnyyQrFgY0LYZNID+qfhPPg0WxrUeLgSwaQ9HEV+58syn2ezQVs8OcxnMcS4LX5HQzm5NZ1cP YkrCgsSirZg207/ouggeY3R/bZKwmhNrnJEcx2MQAAp1voEfDClgPKzUiMI0SfOJfOzEn4XXWm9 H6n76A8TKInkZsAzUdSsEBMpHzmiFbLxQd9zLhv/boXDN1Sa6ssjt7/ePUMuc7+SfC2beNPZpHV T4wn/wVPrlfi788dRW2I0Qh3/iFVU6050OMerhcg5P6/JEDGSlM7EnH4zcAFrfBkikwqYL7boXc l0/mC7yO8ASo28gWDryHuer5wI2Bj91HBIKYAPLj3k/kr3jAk1TO1V8QONApT7PoLU9w3BpTgIJ xHRve8Y8f8YbnwulkUg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 adultscore=0 clxscore=1015 phishscore=0 priorityscore=1501 impostorscore=0 bulkscore=0 spamscore=0 malwarescore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324230036154100 From: Matheus Tavares Bernardino The Hexagon semihosting ABI extends the arm-compatible set with operations like OPEN, WRITECREG, WRITE0, ISTTY, STAT, FSTAT, FTELL, SEEK, FTRUNC, ACCESS, and GETCWD. Implement these trap0 handlers so that baremetal programs using the standard Hexagon simulator ABI can perform file I/O when running on qemu-system-hexagon. Reviewed-by: Pierrick Bouvier Reviewed-by: Brian Cain Signed-off-by: Matheus Tavares Bernardino checkpatch: style fixes. Signed-off-by: Brian Cain --- include/semihosting/common-semi.h | 1 + semihosting/arm-compat-semi.c | 2 +- target/hexagon/hexswi.c | 290 +++++++++++++++++++++++++++++- 3 files changed, 291 insertions(+), 2 deletions(-) diff --git a/include/semihosting/common-semi.h b/include/semihosting/common= -semi.h index a11905ef4ef..1e7699d7bbd 100644 --- a/include/semihosting/common-semi.h +++ b/include/semihosting/common-semi.h @@ -34,6 +34,7 @@ #ifndef COMMON_SEMI_H #define COMMON_SEMI_H =20 +void common_semi_cb(CPUState *cs, uint64_t ret, int err); void do_common_semihosting(CPUState *cs); uint64_t common_semi_arg(CPUState *cs, int argno); void common_semi_set_ret(CPUState *cs, uint64_t ret); diff --git a/semihosting/arm-compat-semi.c b/semihosting/arm-compat-semi.c index c54753f696f..b930a028649 100644 --- a/semihosting/arm-compat-semi.c +++ b/semihosting/arm-compat-semi.c @@ -229,7 +229,7 @@ static inline uint32_t get_swi_errno(CPUState *cs) #endif } =20 -static void common_semi_cb(CPUState *cs, uint64_t ret, int err) +void common_semi_cb(CPUState *cs, uint64_t ret, int err) { if (err) { #ifdef CONFIG_USER_ONLY diff --git a/target/hexagon/hexswi.c b/target/hexagon/hexswi.c index 4a75ff36f07..28e251f8996 100644 --- a/target/hexagon/hexswi.c +++ b/target/hexagon/hexswi.c @@ -109,6 +109,41 @@ static inline bool is_hexagon_specific_swi_flag(enum h= ex_swi_flag what_swi) } #undef DEF_SWI_FLAG =20 +static const unsigned int angel_to_host_filemode_table[] =3D { + O_RDONLY, + O_RDONLY | O_BINARY, + O_RDWR, + O_RDWR | O_BINARY, + O_WRONLY | O_CREAT | O_TRUNC, + O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, + O_RDWR | O_CREAT | O_TRUNC, + O_RDWR | O_CREAT | O_TRUNC | O_BINARY, + O_WRONLY | O_APPEND | O_CREAT, + O_WRONLY | O_APPEND | O_CREAT | O_BINARY, + O_RDWR | O_APPEND | O_CREAT, + O_RDWR | O_APPEND | O_CREAT | O_BINARY, + O_RDWR | O_CREAT, + O_RDWR | O_CREAT | O_EXCL +}; + +/* + * This must match the caller's definition, it would be in the + * caller's angel.h or equivalent header. + */ +struct __SYS_STAT { + uint64_t dev; + uint64_t ino; + uint32_t mode; + uint32_t nlink; + uint64_t rdev; + uint32_t size; + uint32_t __pad1; + uint32_t atime; + uint32_t mtime; + uint32_t ctime; + uint32_t __pad2; +} sys_stat; + static void init_semihosting_guestfds(void) { static gsize initialized; @@ -143,10 +178,19 @@ static void do_preload(CPUHexagonState *env, target_u= long swi_info, bool load) hexagon_peek_memory_range(env, addr, count, retaddr); } =20 +static void common_semi_ftell_cb(CPUState *cs, uint64_t ret, int err) +{ + if (err) { + ret =3D -1; + } + common_semi_cb(cs, ret, err); +} + static void sim_handle_trap0(CPUHexagonState *env) { target_ulong what_swi, swi_info; CPUState *cs =3D env_cpu(env); + uintptr_t retaddr =3D 0; =20 g_assert(bql_locked()); init_semihosting_guestfds(); @@ -201,7 +245,251 @@ static void sim_handle_trap0(CPUHexagonState *env) } break; =20 - /* TODO: implement other hexagon-specific semihosting calls */ + case HEX_SYS_OPEN: + { + char filename[BUFSIZ]; + target_ulong physical_filename_addr; + unsigned int filemode; + int length; + int real_openmode; + int ret, err =3D 0; + int i =3D 0; + + hexagon_read_memory(env, swi_info, 4, &physical_filename_addr, ret= addr); + hexagon_read_memory(env, swi_info + 4, 4, &filemode, retaddr); + hexagon_read_memory(env, swi_info + 8, 4, &length, retaddr); + + if (length >=3D BUFSIZ) { + qemu_log_mask(LOG_GUEST_ERROR, + "%s: filename too large (%d)\n", + __func__, length); + common_semi_cb(cs, -1, ENAMETOOLONG); + break; + } + + do { + hexagon_read_memory(env, physical_filename_addr + i, 1, + &filename[i], retaddr); + i++; + } while (filename[i - 1]); + + /* convert ARM ANGEL filemode into host filemode */ + if (filemode < ARRAY_SIZE(angel_to_host_filemode_table)) { + real_openmode =3D angel_to_host_filemode_table[filemode]; + } else { + qemu_log_mask(LOG_GUEST_ERROR, + "%s: invalid OPEN mode: %u\n", + __func__, filemode); + common_semi_cb(cs, -1, EINVAL); + break; + } + + if (strcmp(filename, ":tt") =3D=3D 0 && + qemu_semihosting_console_has_chardev()) { + ret =3D alloc_guestfd(); + console_guestfd(ret); + } else { + ret =3D open(filename, real_openmode | O_BINARY, 0644); + + if (ret =3D=3D -1) { + err =3D errno; + } else { + int guestfd =3D alloc_guestfd(); + associate_guestfd(guestfd, ret); + ret =3D guestfd; + } + } + common_semi_cb(cs, ret, err); + } + break; + + case HEX_SYS_WRITECREG: + { + char c =3D swi_info; + qemu_semihosting_console_write(&c, 1); + } + break; + + /* + * Hexagon's SYS_ISTTY is a bit different than arm's: we do not return= -1 + * on error, neither errno. So we override with our own implementation. + */ + case HEX_SYS_ISTTY: + { + int fd; + hexagon_read_memory(env, swi_info, 4, &fd, retaddr); + common_semi_cb(cs, isatty(fd), 0); + } + break; + + case HEX_SYS_SEEK: + { + int fd; + target_ulong off; + hexagon_read_memory(env, swi_info, 4, &fd, retaddr); + hexagon_read_memory(env, swi_info + 4, 4, &off, retaddr); + semihost_sys_lseek(env_cpu(env), common_semi_ftell_cb, fd, off, + GDB_SEEK_SET); + } + break; + + case HEX_SYS_STAT: + case HEX_SYS_FSTAT: + { + struct stat st_buf; + uint8_t *st_bufptr =3D (uint8_t *)&sys_stat; + int rc, err =3D 0; + char filename[BUFSIZ]; + target_ulong physical_filename_addr; + target_ulong statBufferAddr; + hexagon_read_memory(env, swi_info, 4, &physical_filename_addr, ret= addr); + + if (what_swi =3D=3D HEX_SYS_STAT) { + int i =3D 0; + do { + hexagon_read_memory(env, physical_filename_addr + i, 1, + &filename[i], retaddr); + i++; + } while ((i < BUFSIZ) && filename[i - 1]); + rc =3D stat(filename, &st_buf); + err =3D errno; + } else { + int fd =3D physical_filename_addr; + GuestFD *gf =3D get_guestfd(fd); + if (!gf || gf->type !=3D GuestFDHost) { + qemu_log_mask(LOG_UNIMP, + "fstat semihosting only implemented" + " for native mode\n"); + g_assert_not_reached(); + } + rc =3D fstat(gf->hostfd, &st_buf); + err =3D errno; + } + if (rc =3D=3D 0) { + sys_stat.dev =3D cpu_to_le64(st_buf.st_dev); + sys_stat.ino =3D cpu_to_le64(st_buf.st_ino); + sys_stat.mode =3D cpu_to_le32(st_buf.st_mode); + sys_stat.nlink =3D cpu_to_le32((uint32_t) st_buf.st_nlink); + sys_stat.rdev =3D cpu_to_le64(st_buf.st_rdev); + sys_stat.size =3D cpu_to_le32((uint32_t) st_buf.st_size); + sys_stat.atime =3D cpu_to_le32(st_buf.st_atime); + sys_stat.mtime =3D cpu_to_le32(st_buf.st_mtime); + sys_stat.ctime =3D cpu_to_le32(st_buf.st_ctime); + } + hexagon_read_memory(env, swi_info + 4, 4, &statBufferAddr, retaddr= ); + + for (int i =3D 0; i < sizeof(sys_stat); i++) { + hexagon_write_memory(env, statBufferAddr + i, 1, st_bufptr[i], + retaddr); + } + common_semi_cb(cs, rc, rc =3D=3D 0 ? 0 : err); + } + break; + + case HEX_SYS_FTRUNC: + { + int fd; + off_t size_limit; + hexagon_read_memory(env, swi_info, 4, &fd, retaddr); + hexagon_read_memory(env, swi_info + 4, 8, &size_limit, retaddr); + semihost_sys_ftruncate(cs, common_semi_cb, fd, size_limit); + } + break; + + case HEX_SYS_ACCESS: + { + char filename[BUFSIZ]; + uint32_t FileNameAddr; + uint32_t BufferMode; + int rc; + + int i =3D 0; + + hexagon_read_memory(env, swi_info, 4, &FileNameAddr, retaddr); + do { + hexagon_read_memory(env, FileNameAddr + i, 1, &filename[i], + retaddr); + i++; + } while ((i < BUFSIZ) && (filename[i - 1])); + filename[i] =3D 0; + + hexagon_read_memory(env, swi_info + 4, 4, &BufferMode, retaddr); + + rc =3D access(filename, BufferMode); + common_semi_cb(cs, rc, rc =3D=3D 0 ? 0 : errno); + } + break; + + case HEX_SYS_GETCWD: + { + char cwdPtr[PATH_MAX]; + uint32_t BufferAddr; + uint32_t BufferSize; + uint32_t rc =3D 0, err =3D 0; + + hexagon_read_memory(env, swi_info, 4, &BufferAddr, retaddr); + hexagon_read_memory(env, swi_info + 4, 4, &BufferSize, retaddr); + + if (!getcwd(cwdPtr, PATH_MAX)) { + err =3D errno; + } else { + size_t cwd_size =3D strlen(cwdPtr); + if (cwd_size > BufferSize) { + err =3D ERANGE; + } else { + for (int i =3D 0; i < cwd_size; i++) { + hexagon_write_memory(env, BufferAddr + i, 1, + (uint64_t)cwdPtr[i], retaddr); + } + rc =3D BufferAddr; + } + } + common_semi_cb(cs, rc, rc !=3D 0 ? 0 : err); + break; + } + + case HEX_SYS_EXEC: + { + qemu_log_mask(LOG_UNIMP, "SYS_EXEC is deprecated\n"); + common_semi_cb(cs, -1, ENOSYS); + } + break; + + case HEX_SYS_FTELL: + { + int fd; + hexagon_read_memory(env, swi_info, 4, &fd, retaddr); + semihost_sys_lseek(cs, common_semi_ftell_cb, fd, 0, GDB_SEEK_CUR); + } + break; + + case HEX_SYS_READ_CYCLES: + case HEX_SYS_READ_TCYCLES: + case HEX_SYS_READ_ICOUNT: + { + env->gpr[HEX_REG_R00] =3D 0; + env->gpr[HEX_REG_R01] =3D 0; + break; + } + + case HEX_SYS_READ_PCYCLES: + { + env->gpr[HEX_REG_R00] =3D hexagon_get_sys_pcycle_count_low(env); + env->gpr[HEX_REG_R01] =3D hexagon_get_sys_pcycle_count_high(env); + break; + } + + case HEX_SYS_PROF_ON: + case HEX_SYS_PROF_OFF: + case HEX_SYS_PROF_STATSRESET: + case HEX_SYS_DUMP_PMU_STATS: + case HEX_SYS_HEAPINFO: + common_semi_cb(cs, -1, ENOSYS); + qemu_log_mask(LOG_UNIMP, + "SWI call %" PRIx32 + " is unimplemented in QEMU\n", + (uint32_t)what_swi); + break; =20 default: qemu_log_mask(LOG_UNIMP, --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324350; cv=none; d=zohomail.com; s=zohoarc; b=eJ4grJ3hkr5lhvagWaDashvsDgFryKfdynYGKoIj1Gxr06vAoc1uW9yZC5mp0CxEFJscz4fd0WHGcmlemgIOoehTvwPZv1Ok7qO4BP0wuBy0QWcrOnRBSqPUATbMWI37MRpar5HPwwXnjaJRqkNtQbVHpwv96fpLejk1naKTvh4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324350; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=lUra5n4ghSpLEO7eMlfs+iseKnxlFfIAkYW+BxZWUl8=; b=AE4h75vF/u58ZYK3cmaN7ah/walmirqCVkDylpDIbwfG3YMzNUbo8q2ObKTWAllg7HwyfjuOkkO6CpLczO/wLlw0aLZwfV+gogH0qeon4gwM7aCeutjKZjX7FygsEMbWKbtyhNv1W/5yckObv8VSSrytqMpVsOp82RG/cN1touk= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324350689344.0973893667625; Tue, 1 Sep 2026 21:45:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1coQ-00009K-BL; Wed, 02 Sep 2026 00:43:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coO-00008a-Ig for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:00 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coM-0000Kw-Je for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:00 -0400 Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6824C68a2983309 for ; Wed, 2 Sep 2026 04:42:57 GMT Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ge35k25s3-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:42:57 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-396901263b6so1149938a91.2 for ; Tue, 01 Sep 2026 21:42:57 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.42.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:42:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= lUra5n4ghSpLEO7eMlfs+iseKnxlFfIAkYW+BxZWUl8=; b=IqhMHfi7iiiDmGU8 yWk3cGbxcDPekvXBTNywbprdkP+EBCtQvRXJSFH1i1KTGdirSg8BNW+mwLEmEDiq OxVhhaycaaC501asW4ofSSAV7/xLSuTWVEwsQ/lwajoentKsoP9YL+ZIp93F2YMU ApzlVt1WDFJoVrjwoO+z97HunC7/SM1s6OHJaEungpeZl0fgSIQrZN+YaSc9r9uD bn8T1Q0E1cc5myltvPFXbprqozmHs9fJE3mlwMSFlq0J65A2YUhARE5ELWzVqYB6 ynzdyYqMbzR77VrWWZG5QWDGtC9t6op/SOrdc/T6pB78AVuqGKLCH9t4y/qmiSZj 6zSETQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324176; x=1788928976; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=lUra5n4ghSpLEO7eMlfs+iseKnxlFfIAkYW+BxZWUl8=; b=h/l3q0+oPfr/QcyE4AtViaoLJbrWXgBji0Zd8VG65Y63kj4+7uDcaq8O+QywHdrCqS KsqgxhbICJ13Tk0vdnDPrp5eV5wgM+pStr6xvNgrIDu1on+mLu5Vi05qM2D8Pjql1+KH JZYMOYmITeUsSR9Kq8EeRgo2gSnmQ7hxBTWm2Mzus6FX7C7zulkE90nBUtJthAODDXoJ qt8/os+idVgH8VcMStNJTduz7hdgWNkw+dXIXOUHtBUs0wkOTe6/Mpu+yM+SfXnabM5C RqnEA8z1sKlolMkHnNBQmwj5h8o9ARbXcyZDVjzHCpWIuzXRF3bK9DfHvK/dZP3tO4oG qyrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324177; x=1788928977; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=lUra5n4ghSpLEO7eMlfs+iseKnxlFfIAkYW+BxZWUl8=; b=pBU3jYUA8UO9Qip7geSpQQlEl+mpgxoEkOP5R/eBelkb5K42w2tDk9X/FXh0E7dw+j j254RGbLF6QMmZSOXq+YbY8+D7wVavshymFDbvf9rfSa/KMBeRNhG/mYXmFo6TtF2PsT 79Q4lIZScgo4Ss0/c0Eu+I9De9BvSYCRTzUPRudPsgMc2GUJqL3Nd0M6K5KQrDtsWH0W tCzBP7mr8rA+NowMyyEbSv2/c8zOnKn/HlGgSVgu/j4u827r9y3pCaSd2LwhsRDc7f9m +1p9mccAX7vz1E0fRy83wnTv21ISTvN5L+qZsrh9P4eaI2ZygqjQVkxEKk2XKmr9fJLn 16mg== X-Gm-Message-State: AFuF++k6RBGZTSNNuQTOB9KstyCHuwpN0MRDSs9kZK0+QZLt2HRRERU3 wAMqXYqef+vpCsTYNeVWpQQHkI+ItQQsGENGf4N1egwZaayw3VaJr+NwGMgl3HdG767sO9KzLEL V6C+kCez0IWvUfCo3Hqm+onXdMp5Ir/rc1xTgPUE3kOuTk746t2GTyp98kVubwNmIPw== X-Gm-Gg: AYBFou2KqvaIt4jDjEWLzqpifzbRbTSr3t1Na4MfuDFzuN+n0Xo6C9R3+LN3NTH9CqS FJJEeRaR0xV9eTdkYtZkJod9H3SkfplkiVIDrnvlE2kqUmHlaSpLMAJUZ3STBDBxopsUsF+saGA V0/PBZKLQVU2ts9UyPpzAew1RK/GG43r1xzkREEbAfZYEEQBHPccY5JrNnL2Q6qkAhDvF1rA05l 1sCH4tKphKNXn7uglw0OF/4m0cuhhtdkQbUhRFg/IsGd1xJYmbmoWsWhwWUPpq29fe4jQuWbDTf k1sLBi4Xm+hvlRmL3P23mGGvmg9wRbdWcejzoaCpOJnTLTKSrP10zSktAUBtNGgb6ZD6/NnmXRa SIZ24yIVWzM0Lp3LzCz+lLzF80jIW2GqHGFavi60RKWnIFh7h X-Received: by 2002:a17:90b:58e6:b0:398:dcfe:968e with SMTP id 98e67ed59e1d1-39aee1e8db3mr3034018a91.20.1788324176455; Tue, 01 Sep 2026 21:42:56 -0700 (PDT) X-Received: by 2002:a17:90b:58e6:b0:398:dcfe:968e with SMTP id 98e67ed59e1d1-39aee1e8db3mr3033962a91.20.1788324176011; Tue, 01 Sep 2026 21:42:56 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Matheus Tavares Bernardino , Pierrick Bouvier Subject: [PULL 10/28] target/hexagon: add COREDUMP semihosting operation Date: Tue, 1 Sep 2026 21:42:13 -0700 Message-Id: <20260902044231.843004-11-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX9mDfcpENIav/ 4oQLWI1zUlNIfvCzcMYsdDbq/YaHVo0V7vKAmQ0tVckcGImiJU/V63Mb+pCqjXPjaD3uD5nmHSI LGuLasPaVHSjgaUeEc/nFNvPJ23s9A1MsZ2uHGufvmmgENIEOU8xrWJVtazgQNFdmY6tYVdcM09 DCgtcD0UeEufo3BCqJDFjt1aM7qoRMEqLg5b7Jk4BDkWdFh2clketfkF2BNGKRxiBm0bloGDAza SwQgHGN9z6e6fH8zUzgZiDicNivv746n7nMAQDJA0aUacEjVj8Rpx+/1QUycNc3c1B+MPi8hXW6 jaRhv9zaHD1bT4bTyIYVZw00MqaKZ1YKD8ZDhgrH+Tt344Jo+3hBwmRJpUX9GCujzYldRz0BC1l TZTXPq1drMalTt3O0Mt9x+QFLsBRT8SVfmapawdkwk78gIUmicELDn8kr6sGqgmwx2lxMgo89Eh iA+M8p9kAlJNqzKAXpw== X-Proofpoint-GUID: Aib1OdzKzzJz8Egmr6uCVEBuFywG5K23 X-Proofpoint-ORIG-GUID: Aib1OdzKzzJz8Egmr6uCVEBuFywG5K23 X-Authority-Analysis: v=2.4 cv=VLrtWdPX c=1 sm=1 tr=0 ts=6a97a951 cx=c_pps a=RP+M6JBNLl+fLTcSJhASfg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=BE4lvaXKYeXNScGiURoA:9 a=QEXdDO2ut3YA:10 a=iS9zxrgQBfv6-_F4QbHw:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX6zV0dXzDE1iE nrv3hjjxRPb8dXQc5a8b9BF/LE8eOv0z9kqrzusKKtWJKcQFKYvWZO+WKvqLFG8ez4nu3zXJxiB 96+EAIGtK/h+bS6VgvRjDseSW26hSL4= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 lowpriorityscore=0 clxscore=1015 bulkscore=0 malwarescore=0 adultscore=0 priorityscore=1501 phishscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324351982154100 From: Matheus Tavares Bernardino Baremetal Hexagon programs invoke SYS_COREDUMP (0xCD) through semihosting to dump CPU state on a fatal exception. Implement the handler to decode the SSR cause field and print the full register file, matching hexagon-sim behavior. Reviewed-by: Pierrick Bouvier Signed-off-by: Matheus Tavares Bernardino Signed-off-by: Brian Cain --- target/hexagon/internal.h | 1 + target/hexagon/cpu.c | 2 +- target/hexagon/hexswi.c | 136 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 138 insertions(+), 1 deletion(-) diff --git a/target/hexagon/internal.h b/target/hexagon/internal.h index 00b37aea7af..05d1129916e 100644 --- a/target/hexagon/internal.h +++ b/target/hexagon/internal.h @@ -28,6 +28,7 @@ int hexagon_hvx_gdb_write_register(CPUState *env, uint8_t= *mem_buf, int n); void hexagon_debug_vreg(CPUHexagonState *env, int regnum); void hexagon_debug_qreg(CPUHexagonState *env, int regnum); void hexagon_debug(CPUHexagonState *env); +void hexagon_dump(CPUHexagonState *env, FILE *f, int flags); =20 extern const char * const hexagon_regnames[TOTAL_PER_THREAD_REGS]; #ifndef CONFIG_USER_ONLY diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index 7067e5b70f7..47e3683d754 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -235,7 +235,7 @@ void hexagon_debug_qreg(CPUHexagonState *env, int regnu= m) print_qreg(stdout, env, regnum, false); } =20 -static void hexagon_dump(CPUHexagonState *env, FILE *f, int flags) +void hexagon_dump(CPUHexagonState *env, FILE *f, int flags) { HexagonCPU *cpu =3D env_archcpu(env); =20 diff --git a/target/hexagon/hexswi.c b/target/hexagon/hexswi.c index 28e251f8996..6bb4881d14b 100644 --- a/target/hexagon/hexswi.c +++ b/target/hexagon/hexswi.c @@ -186,6 +186,138 @@ static void common_semi_ftell_cb(CPUState *cs, uint64= _t ret, int err) common_semi_cb(cs, ret, err); } =20 +static void coredump(CPUHexagonState *env) +{ + uint32_t ssr =3D env->t_sreg[HEX_SREG_SSR]; + FILE *f =3D qemu_log_trylock(); + + if (!f) { + return; + } + + fprintf(f, "CRASH!\n"); + fprintf(f, "I think the exception was: "); + switch (GET_SSR_FIELD(SSR_CAUSE, ssr)) { + case 0x43: + fprintf(f, "0x43, NMI"); + break; + case 0x42: + fprintf(f, "0x42, Data abort"); + break; + case 0x44: + fprintf(f, "0x44, Multi TLB match"); + break; + case HEX_CAUSE_BIU_PRECISE: + fprintf(f, "0x%x, Bus Error (Precise BIU error)", + HEX_CAUSE_BIU_PRECISE); + break; + case HEX_CAUSE_DOUBLE_EXCEPT: + fprintf(f, "0x%x, Exception observed when EX =3D 1" + " (double exception)", + HEX_CAUSE_DOUBLE_EXCEPT); + break; + case HEX_CAUSE_FETCH_NO_XPAGE: + fprintf(f, "0x%x, Privilege violation: User/Guest mode execute" + " to page with no execute permissions", + HEX_CAUSE_FETCH_NO_XPAGE); + break; + case HEX_CAUSE_FETCH_NO_UPAGE: + fprintf(f, "0x%x, Privilege violation: " + "User mode execute to page with no user permissions", + HEX_CAUSE_FETCH_NO_UPAGE); + break; + case HEX_CAUSE_INVALID_PACKET: + fprintf(f, "0x%x, Invalid packet", + HEX_CAUSE_INVALID_PACKET); + break; + case HEX_CAUSE_PRIV_USER_NO_GINSN: + fprintf(f, "0x%x, Privilege violation:" + " guest mode insn in user mode", + HEX_CAUSE_PRIV_USER_NO_GINSN); + break; + case HEX_CAUSE_PRIV_USER_NO_SINSN: + fprintf(f, "0x%x, Privilege violation: " + "monitor mode insn in user/guest mode", + HEX_CAUSE_PRIV_USER_NO_SINSN); + break; + case HEX_CAUSE_REG_WRITE_CONFLICT: + fprintf(f, "0x%x, Multiple writes to same register", + HEX_CAUSE_REG_WRITE_CONFLICT); + break; + case HEX_CAUSE_PC_NOT_ALIGNED: + fprintf(f, "0x%x, PC not aligned", + HEX_CAUSE_PC_NOT_ALIGNED); + break; + case HEX_CAUSE_MISALIGNED_LOAD: + fprintf(f, "0x%x, Misaligned Load @ 0x%" PRIx32, + HEX_CAUSE_MISALIGNED_LOAD, env->t_sreg[HEX_SREG_BADVA]); + break; + case HEX_CAUSE_MISALIGNED_STORE: + fprintf(f, "0x%x, Misaligned Store @ 0x%" PRIx32, + HEX_CAUSE_MISALIGNED_STORE, env->t_sreg[HEX_SREG_BADVA]); + break; + case HEX_CAUSE_PRIV_NO_READ: + fprintf(f, "0x%x, Privilege violation: " + "user/guest read permission @ 0x%" PRIx32, + HEX_CAUSE_PRIV_NO_READ, env->t_sreg[HEX_SREG_BADVA]); + break; + case HEX_CAUSE_PRIV_NO_WRITE: + fprintf(f, "0x%x, Privilege violation: " + "user/guest write permission @ 0x%" PRIx32, + HEX_CAUSE_PRIV_NO_WRITE, env->t_sreg[HEX_SREG_BADVA]); + break; + case HEX_CAUSE_PRIV_NO_UREAD: + fprintf(f, "0x%x, Privilege violation:" + " user read permission @ 0x%" PRIx32, + HEX_CAUSE_PRIV_NO_UREAD, env->t_sreg[HEX_SREG_BADVA]); + break; + case HEX_CAUSE_PRIV_NO_UWRITE: + fprintf(f, "0x%x, Privilege violation:" + " user write permission @ 0x%" PRIx32, + HEX_CAUSE_PRIV_NO_UWRITE, env->t_sreg[HEX_SREG_BADVA]); + break; + case HEX_CAUSE_COPROC_LDST: + fprintf(f, "0x%x, Coprocessor VMEM address error @ 0x%" PRIx32, + HEX_CAUSE_COPROC_LDST, env->t_sreg[HEX_SREG_BADVA]); + break; + case HEX_CAUSE_STACK_LIMIT: + fprintf(f, "0x%x, Stack limit check error", + HEX_CAUSE_STACK_LIMIT); + break; + case HEX_CAUSE_FPTRAP_CAUSE_BADFLOAT: + fprintf(f, "0x%x, Floating-Point: Execution of Floating-Point " + "instruction resulted in exception", + HEX_CAUSE_FPTRAP_CAUSE_BADFLOAT); + break; + case HEX_CAUSE_NO_COPROC_ENABLE: + fprintf(f, "0x%x, Illegal Execution of Coprocessor Instruction", + HEX_CAUSE_NO_COPROC_ENABLE); + break; + case HEX_CAUSE_NO_COPROC2_ENABLE: + fprintf(f, "0x%x, Illegal Execution of Secondary" + " Coprocessor Instruction", + HEX_CAUSE_NO_COPROC2_ENABLE); + break; + case HEX_CAUSE_UNSUPPORTED_HVX_64B: + fprintf(f, "0x%x, Unsupported Execution of" + " Coprocessor Instruction with 64bits Mode On", + HEX_CAUSE_UNSUPPORTED_HVX_64B); + break; + case HEX_CAUSE_VWCTRL_WINDOW_MISS: + fprintf(f, "0x%x, Thread accessing a region" + " outside VWCTRL window", + HEX_CAUSE_VWCTRL_WINDOW_MISS); + break; + default: + fprintf(f, "unknown cause 0x%" PRIx32, + GET_SSR_FIELD(SSR_CAUSE, ssr)); + break; + } + fprintf(f, "\nRegister Dump:\n"); + hexagon_dump(env, f, 0); + qemu_log_unlock(f); +} + static void sim_handle_trap0(CPUHexagonState *env) { target_ulong what_swi, swi_info; @@ -455,6 +587,10 @@ static void sim_handle_trap0(CPUHexagonState *env) } break; =20 + case HEX_SYS_COREDUMP: + coredump(env); + break; + case HEX_SYS_FTELL: { int fd; --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324263; cv=none; d=zohomail.com; s=zohoarc; b=Ullkbc0LwciyLVWEGEb/+l/f1vETfbMhKcFK7nm7eCdbpsDuq49z/u69jThuP2SGsP/wtK7p2+JK8dX/R0FazC2wx7siXRdVw5lhs1NDV7YU5sKweEaKNqwPBTCCZ+H07aloEZr8afsgKH9mEVAOvrFm4PaJk8rdtzidZ96+kVQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324263; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=wRVW65uh7U+FMWuz++hNCKhljmUypitoQWpzBd+SGd8=; b=dyQrYbVVAGP9YOX6kIjZhxNq8BEw/U2vcgw/CxnCEjpozvdU8fHNIbPDiAia9gCu/tLQfAZLFal4EnM86kL9bkzUP0utJNRYzjyZZf81Cn5jOYOGDX6YzjxWGVNWE8o5EFIZYLwsVkxPa3w+jjhtlyg3+2C+BbGk8Np7HodtlTU= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324263830520.8658808949192; Tue, 1 Sep 2026 21:44:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1coc-0000EO-Ez; Wed, 02 Sep 2026 00:43:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coa-0000Cg-5P for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:12 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coY-0000LS-3f for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:11 -0400 Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 681KTJdo3664124 for ; Wed, 2 Sep 2026 04:42:59 GMT Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ge37j24ff-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:42:58 +0000 (GMT) Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-cc42a07d04aso251404a12.1 for ; Tue, 01 Sep 2026 21:42:58 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.42.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:42:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= wRVW65uh7U+FMWuz++hNCKhljmUypitoQWpzBd+SGd8=; b=duNJxVO/ESYwCT01 39lIdEfax1ngxZrgClOUcMdJqPnXtHJrN/hALITlrN2za9n1YYJOCG7x5wIwcCRy wY7TNXEkJaQIYRqLOtobO0TYbnfI5vgbN95K7c1l/R859bja2XO8YzmurWekLpNM DUTVClzckPx7akPVK1024tZls0dX4IoMbDzRdMLjPLy3wCaouVZNaHOdNLhso7rC olpA1mSHjNc867kG9kltW+ww08oQcYNKhkFVPmozTqXCAbqVI3x/kd2uIxDJuXhg wj/HdIU8nwCnzqCeOm+DAaiqCimk8fJ4SPm6z19EvWxbja2kcpp7rR5PEQkGT5tm gwbRDw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324178; x=1788928978; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=wRVW65uh7U+FMWuz++hNCKhljmUypitoQWpzBd+SGd8=; b=DNAp7HDIrP5X/gSwma58lNJFlz9+Jxfu4xB4gp8aPRB0ySfBQgyhUf204Pu0L7be/l pUwKAYpqD/mH+EZerOgGt+pm8lc73t7Zf+qOnIPR00w7jgZV4XcijIO2eWpqHpxrdfbC N9V0kdvG5T/PBuzV3febh7zDBF2JtkmIVODrrYeM+QYwq6LqU9NXi71Ao5S6ycZbSNZ6 ymXlVF3XbHTLU+XcWC92Ejqf79181e4HCEi/QrsyjBcGBuvL3/TpVt7PFCwQn+/fAZWe eUyRd93JoYRmwVs31r+XECd8vDiLz+cIoptAWqti99hdpYXPyN/9VWsDtHhpeH1dJfOi 1t4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324178; x=1788928978; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=wRVW65uh7U+FMWuz++hNCKhljmUypitoQWpzBd+SGd8=; b=I0NuXSKU5F1dRa3LTYNtDcWRmiefSEJJJxcw9KfvDH4ZgPYvWDRQ8t1ruS9GeeeXOX gfqfHCdU/G5gZVTPyeznz9PAGY57d5GMFl9fnKYz4lwAV9gvEIqyG5euxaqabiqZO+O3 24pydybs2zsu4rizQ1rDPPAPEx4672460GHSvvZ2p5x57LSpDUPRIpe1rl0wCSJH/IkW YrUtxcPoxN2Yc1GW1tu4KR+aM5hCBcGhApF9PZ68x8hNvtO61V/J0Sv32881xCrZJg+b 6dblCN4jylneExLGf9MYi9ijYuePmzAT01jWW/30rfLiCj2ZOftO7QAZUEd8VXZrYAG/ agsA== X-Gm-Message-State: AFuF++l3fKYLHdwTJ7XAgBS5nT/Nk+CDMEtuytFWjvi0xZiNIHNzkSex s09Jjqyka4Adxlb1jUU3ySAqNW0ohf7U5wtOydyDuCJMoRx83Qi/psrh1knf1f0d2jkFtK3EMX/ aVSKZ9u7eX0j/8xJRe2J5bRsot4g4xpTvSH2zL6iDIslhBXZ8h9Bt7UBvl2t5pU0htQ== X-Gm-Gg: AR+sD13Y/9K75UA+ZAq/d59XosEhTnnc1u/nAa5kyBEgzdJwP1xPbMgE40zaIWtlJTr 2A/uLhsL0FF/WICJuY4cYp7Huf2nlZEWV6p9IWjvy3tH8leRMe1eZxn2Au9CpYT8RfnSna2QLBZ pr5x68S/CbEeibLS/otSrCIdTLm3I+rkP668vb52GkPvCsFDIsJN5mo+mdHKyGNduOxu2A8M8zB gWqaNGejwpipCQyhxcF9Hc5NRz5Uxb+sQkWf65ROYPgYj/8xKxdX5e6Zn3XyZGyV6AUfsBLSHgF 6M9fggMaC8PLifEWwnnloE8dNjBmfotFJj4rxsPndflNYDWWYIUVfK8VQ0ls3RJQoXK/Kj2g/Qv wJ/5lPDQJt43egEAf4bAaFbdzjEuy2Y8zfMqBHMQhYD5ZwCat X-Received: by 2002:a05:6a20:9f97:b0:3d1:60d3:99f8 with SMTP id adf61e73a8af0-3d9ad2683damr3764922637.5.1788324178037; Tue, 01 Sep 2026 21:42:58 -0700 (PDT) X-Received: by 2002:a05:6a20:9f97:b0:3d1:60d3:99f8 with SMTP id adf61e73a8af0-3d9ad2683damr3764870637.5.1788324177551; Tue, 01 Sep 2026 21:42:57 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Pierrick Bouvier , Matheus Tavares Bernardino Subject: [PULL 11/28] target/hexagon: Add an errno mapping Date: Tue, 1 Sep 2026 21:42:14 -0700 Message-Id: <20260902044231.843004-12-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: wayXnMOlEZ7CnRjSSuN7WM_Cb6IOjvi6 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfXyDGO1qvAhBjC qdCUngPu5xVIEzYApBCgkfoSoNfzfInbSykZqX7b0776a9KclTG+Nvd27rlUVjGPfqR6IaHt39L nMEeQPQHt5w/HyF8zTXIy0fWvz3kYR4= X-Proofpoint-ORIG-GUID: wayXnMOlEZ7CnRjSSuN7WM_Cb6IOjvi6 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX+i3KK55spHmh XJOGSgcdc+IeJ2nWqIKHU+Ialpnl/crWKmtraVs1VSI4gYlG6aWikfQF13HjpTCARPIESwcjx6/ udt0t4m7jpKwgztkYJQVJ9wn/dA/+8XJiV1/fRYvCia9FrUj0J1AfBnB5MQ0xXAasyO1IPTfR0K 6qKNK38oZA3BgaMD5H6pk/uUFxJ972I1M46y7Ve+MqRx5e3txcAbHKepbkylt/vdgU/Z3zrnrhd 35mwvb/+RLAHdJciAMJPrrNU7f3GDUmcMynOrsh/yT6bwRMpgbrljFk9s24yz9exOxbmFD/rkP1 XcVvBhVLF6lBQ/W3klJ0m4kNNjujl14+HxIFXEMRrJ32OJozIF+y6oJKwqEeTEnnRJ14/0RkftF d18JlTHSebk7d3TRzwO8SJNT/4coNzT2a0Mscx+cqfThy0X1tt1wjkZKHlhZQBrOme+6zCy+ivp iH3aco8/fCa3segEv8A== X-Authority-Analysis: v=2.4 cv=PKg/P/qC c=1 sm=1 tr=0 ts=6a97a952 cx=c_pps a=oF/VQ+ItUULfLr/lQ2/icg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=JV9Q9KcNIqeBpUAahVgA:9 a=QEXdDO2ut3YA:10 a=3WC7DwWrALyhR5TkjVHa:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 impostorscore=0 phishscore=0 clxscore=1015 lowpriorityscore=0 bulkscore=0 spamscore=0 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324266619154100 The Hexagon semihosting ABI defines its own errno values which may differ from the host's. Translate host errno to the Hexagon-specific values before returning results to the guest so that baremetal programs see the expected error codes. Reviewed-by: Pierrick Bouvier Signed-off-by: Matheus Tavares Bernardino checkpatch: style fixes. Signed-off-by: Brian Cain --- target/hexagon/hexswi.c | 106 +++++++++++++++++++++++++++++++++++----- 1 file changed, 94 insertions(+), 12 deletions(-) diff --git a/target/hexagon/hexswi.c b/target/hexagon/hexswi.c index 6bb4881d14b..2ab4aaf39d7 100644 --- a/target/hexagon/hexswi.c +++ b/target/hexagon/hexswi.c @@ -178,12 +178,94 @@ static void do_preload(CPUHexagonState *env, target_u= long swi_info, bool load) hexagon_peek_memory_range(env, addr, count, retaddr); } =20 +/* Hexagon semihosting errno values */ +enum { + TARGET_EPERM =3D 1, + TARGET_ENOENT =3D 2, + TARGET_EINTR =3D 4, + TARGET_EIO =3D 5, + TARGET_ENXIO =3D 6, + TARGET_EBADF =3D 9, + TARGET_EAGAIN =3D 11, + TARGET_ENOMEM =3D 12, + TARGET_EACCES =3D 13, + TARGET_EFAULT =3D 14, + TARGET_EBUSY =3D 16, + TARGET_EEXIST =3D 17, + TARGET_EXDEV =3D 18, + TARGET_ENODEV =3D 19, + TARGET_ENOTDIR =3D 20, + TARGET_EISDIR =3D 21, + TARGET_EINVAL =3D 22, + TARGET_ENFILE =3D 23, + TARGET_EMFILE =3D 24, + TARGET_ENOTTY =3D 25, + TARGET_ETXTBSY =3D 26, + TARGET_EFBIG =3D 27, + TARGET_ENOSPC =3D 28, + TARGET_ESPIPE =3D 29, + TARGET_EROFS =3D 30, + TARGET_EMLINK =3D 31, + TARGET_EPIPE =3D 32, + TARGET_ERANGE =3D 34, + TARGET_ENAMETOOLONG =3D 36, + TARGET_ENOSYS =3D 38, + TARGET_ELOOP =3D 40, + TARGET_EOVERFLOW =3D 75, +}; + +/* Map host errno to hexagon semihosting errno */ +static uint32_t errno_h2g(uint32_t err) +{ + switch (err) { + case 0: return 0; + case EPERM: return TARGET_EPERM; + case ENOENT: return TARGET_ENOENT; + case EINTR: return TARGET_EINTR; + case EIO: return TARGET_EIO; + case ENXIO: return TARGET_ENXIO; + case EBADF: return TARGET_EBADF; + case EAGAIN: return TARGET_EAGAIN; + case ENOMEM: return TARGET_ENOMEM; + case EACCES: return TARGET_EACCES; + case EFAULT: return TARGET_EFAULT; + case EBUSY: return TARGET_EBUSY; + case EEXIST: return TARGET_EEXIST; + case EXDEV: return TARGET_EXDEV; + case ENODEV: return TARGET_ENODEV; + case ENOTDIR: return TARGET_ENOTDIR; + case EISDIR: return TARGET_EISDIR; + case EINVAL: return TARGET_EINVAL; + case ENFILE: return TARGET_ENFILE; + case EMFILE: return TARGET_EMFILE; + case ENOTTY: return TARGET_ENOTTY; + case ETXTBSY: return TARGET_ETXTBSY; + case EFBIG: return TARGET_EFBIG; + case ENOSPC: return TARGET_ENOSPC; + case ESPIPE: return TARGET_ESPIPE; + case EROFS: return TARGET_EROFS; + case EMLINK: return TARGET_EMLINK; + case EPIPE: return TARGET_EPIPE; + case ERANGE: return TARGET_ERANGE; + case ENAMETOOLONG: return TARGET_ENAMETOOLONG; + case ENOSYS: return TARGET_ENOSYS; + case ELOOP: return TARGET_ELOOP; + case EOVERFLOW: return TARGET_EOVERFLOW; + } + return TARGET_EINVAL; +} + +static void semi_cb(CPUState *cs, uint64_t ret, int err) +{ + common_semi_cb(cs, ret, errno_h2g(err)); +} + static void common_semi_ftell_cb(CPUState *cs, uint64_t ret, int err) { if (err) { ret =3D -1; } - common_semi_cb(cs, ret, err); + semi_cb(cs, ret, err); } =20 static void coredump(CPUHexagonState *env) @@ -395,7 +477,7 @@ static void sim_handle_trap0(CPUHexagonState *env) qemu_log_mask(LOG_GUEST_ERROR, "%s: filename too large (%d)\n", __func__, length); - common_semi_cb(cs, -1, ENAMETOOLONG); + semi_cb(cs, -1, ENAMETOOLONG); break; } =20 @@ -412,7 +494,7 @@ static void sim_handle_trap0(CPUHexagonState *env) qemu_log_mask(LOG_GUEST_ERROR, "%s: invalid OPEN mode: %u\n", __func__, filemode); - common_semi_cb(cs, -1, EINVAL); + semi_cb(cs, -1, EINVAL); break; } =20 @@ -431,7 +513,7 @@ static void sim_handle_trap0(CPUHexagonState *env) ret =3D guestfd; } } - common_semi_cb(cs, ret, err); + semi_cb(cs, ret, err); } break; =20 @@ -450,7 +532,7 @@ static void sim_handle_trap0(CPUHexagonState *env) { int fd; hexagon_read_memory(env, swi_info, 4, &fd, retaddr); - common_semi_cb(cs, isatty(fd), 0); + semi_cb(cs, isatty(fd), 0); } break; =20 @@ -514,7 +596,7 @@ static void sim_handle_trap0(CPUHexagonState *env) hexagon_write_memory(env, statBufferAddr + i, 1, st_bufptr[i], retaddr); } - common_semi_cb(cs, rc, rc =3D=3D 0 ? 0 : err); + semi_cb(cs, rc, rc =3D=3D 0 ? 0 : err); } break; =20 @@ -524,7 +606,7 @@ static void sim_handle_trap0(CPUHexagonState *env) off_t size_limit; hexagon_read_memory(env, swi_info, 4, &fd, retaddr); hexagon_read_memory(env, swi_info + 4, 8, &size_limit, retaddr); - semihost_sys_ftruncate(cs, common_semi_cb, fd, size_limit); + semihost_sys_ftruncate(cs, semi_cb, fd, size_limit); } break; =20 @@ -548,7 +630,7 @@ static void sim_handle_trap0(CPUHexagonState *env) hexagon_read_memory(env, swi_info + 4, 4, &BufferMode, retaddr); =20 rc =3D access(filename, BufferMode); - common_semi_cb(cs, rc, rc =3D=3D 0 ? 0 : errno); + semi_cb(cs, rc, rc =3D=3D 0 ? 0 : errno); } break; =20 @@ -576,14 +658,14 @@ static void sim_handle_trap0(CPUHexagonState *env) rc =3D BufferAddr; } } - common_semi_cb(cs, rc, rc !=3D 0 ? 0 : err); + semi_cb(cs, rc, rc !=3D 0 ? 0 : err); break; } =20 case HEX_SYS_EXEC: { qemu_log_mask(LOG_UNIMP, "SYS_EXEC is deprecated\n"); - common_semi_cb(cs, -1, ENOSYS); + semi_cb(cs, -1, ENOSYS); } break; =20 @@ -620,7 +702,7 @@ static void sim_handle_trap0(CPUHexagonState *env) case HEX_SYS_PROF_STATSRESET: case HEX_SYS_DUMP_PMU_STATS: case HEX_SYS_HEAPINFO: - common_semi_cb(cs, -1, ENOSYS); + semi_cb(cs, -1, ENOSYS); qemu_log_mask(LOG_UNIMP, "SWI call %" PRIx32 " is unimplemented in QEMU\n", @@ -631,7 +713,7 @@ static void sim_handle_trap0(CPUHexagonState *env) qemu_log_mask(LOG_UNIMP, "unknown swi request: 0x%" PRIx32 "\n", (uint32_t)what_swi); - common_semi_cb(cs, -1, ENOSYS); + semi_cb(cs, -1, ENOSYS); } } =20 --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324272; cv=none; d=zohomail.com; s=zohoarc; b=Jq0gt8iXeshvNqE+vYKT3mqsK/hC/cKGBfqxXlFTDybfFTlSysuY6A5pDMu1bYojpKy+/mZRP00LUPpTQYfqQr6VfibGVZAESpOP1HveZgMsIiq8fRK3iHYsRcOyECF0C81Ymd2MFB+wWrQpFux4nViKMafjSCO4AGURKXHErzc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324272; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=PQ16nUwPIDbGgXKH6tg88QaIBf0q5nzzNEMoDUMS1DI=; b=BvqsA6yl4LwTOZ2Jm54WBex2FsAYiuCwm1GzUpayR0fFFzx/LDY0m1f8yAI1RNgCuy03xd2Mn4L6mOHTiGT+Y+0eNx4sNSPqBVtrBrAxPWFHUcaaSlSjAgw93lAjRewOFd/mqruUVEIM6lMaZb0yxHdAoyW6pVqtTAj2c0ef0BY= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324272150554.4686297156505; Tue, 1 Sep 2026 21:44:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1coe-0000Em-EO; Wed, 02 Sep 2026 00:43:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coc-0000EU-Oe for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:14 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coa-0000Ll-QQ for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:14 -0400 Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 681KTLDL2468908 for ; Wed, 2 Sep 2026 04:43:01 GMT Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ge39cj388-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:43:01 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-cbedb8673ceso616056a12.0 for ; Tue, 01 Sep 2026 21:43:01 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.42.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:42:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:content-type:date:from :in-reply-to:message-id:mime-version:references:subject:to; s= qcppdkim1; bh=PQ16nUwPIDbGgXKH6tg88QaIBf0q5nzzNEMoDUMS1DI=; b=Co ADXd0yMX9x5cCOSYWZQtAe5KdUD5LVOpfMxNmqnWRGEVKgJLujlYVRxiSBXKdOsA 5nALE9EfH8M/Mnt6/y0jTQ5eHDts9Q0OwkjVHsmw5DwkvrSn+IYofIGTaQJ0VovR 1NwhWBlZNGYdLS8pb/OVPWv+1ymLVOB/Rubmby6sMYw+hag6bQLnQdvD46Z7BWR4 92MMM+7ebJnnm54moKbT6bz4SHcZWJPreZEPR3r4nDhtLzL/3h84fAJ+Rz4sQjvD oSmzfbJ9Mfb2fEaZmrWfv05X1RfdygcgcrhW08ac46sNrwVs0G5ouPnV3aJe9+Ya +ywpMg1kCmu2oB/6jGvQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324181; x=1788928981; darn=nongnu.org; h=content-transfer-encoding:content-type:content-type:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to:content-type; bh=PQ16nUwPIDbGgXKH6tg88QaIBf0q5nzzNEMoDUMS1DI=; b=bgDM+wGZBhl72H6fl5xLUFHE5kraRcoYNWCCK97PXx4Tg8i0v3PY5+mX5oBPqq0ZOh e4ZJn4vKl3JQYsQcZ8xn2pWL+uKXJa1qHxyllHVyK44gsfOSZsQTmFLVIiT4AlI/Rnju YaHCq8tX/gN8TUxiClfvinx10CR3BbHa/yT7XcG+1Qd2fBLkM9TJ3/xSAy9dxzSdal4S Qp2szRu5ZXWvjknN+vKPdvjOQaLFR4YvtUe3BLMrjq7BrCuPvvUqeoyavRUpf8tovvZ6 TGZZbo/QLcxPjaVTGOX56WMmKReFLGwiwX3Wy7pcKbZtLDGnheblIsWqdzGQqFMOCDL+ CR0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324181; x=1788928981; h=content-transfer-encoding:content-type:content-type:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=PQ16nUwPIDbGgXKH6tg88QaIBf0q5nzzNEMoDUMS1DI=; b=ez2dmee6Y3GbN6dtORYK7H+gGhYttyAdNQ4+iVE3R+VxRCiCQi0Fz09r68zYJcS6lm XsXLxP/hRoTzOoliuI7IA1IUuHQUOeaxH9d2yXgNmsZuGoWkXDMVE5PFgfnNoN4JzoeO 7AfIkfCPVVncx/hENE/M/4wrgRLEaMCfLZGlWQcLrZf50KRgKlLhKWsdt3NTqeMT3Bco P2DFu+2saY3+BpRU2N9dGnVDPn/fz3OGgQXEoL+BQQqYqxvW7eoETlSrGTUJ63+NAMwt ULxeOVf28eS29yEuFQmgVMnfffCaHD69FSI9/RtcpPLYsaQ6bi0vSNvPaq5oG2EzyJUi nVXw== X-Gm-Message-State: AFuF++nAqzXMvh8bBuTdXm1bxPYxxqnTshPmQap/JF7DZSXGP3swG+FV MFH2rh5vqagb1cjvKUZ8WXDzp4Mdr4rBJbThdi0L+NBpvmHVLUbYspyNKpEJxXV463CGwLDa08G B97yUx+TGSTYO1YcDk1JGaBuIXV0YybVa7PLndT13alVu+36sbLrPPCWh5iTkgwKBbA== X-Gm-Gg: AR+sD12IpbWPMus499HErIm73Ncpg1nk4kO1Sx0dKavy8dmp4qQZKpMVCXuTxtEH+m+ dq9UzZwQmueKHlU27XjrAJXcFUgXzX6nu+e6f0NYqzDmYBUNaBL96CIu2EQwrjfBpUFBZrSvYV6 uqg1ckG4IdqIkhm3n4AIjr7LgR258a1NJprVSBBlUhRcJqj3XhIGQ7MB5OuNdmhZb9QQcdkL0Ig i0MdXzYZTP23xOlpkIqt2QrNqGaahwbidPeJIF8F7scE60Vsxk1OUQ2KBcUmSJyqeC3EuGsMiPr VlJ4i+MDJ1C/cWtx7kFGvLvSiyIZhKH8sOlMFnmTVwfrZUf0eHRNKnOlD1UjnUTW+paR6FUZPiw ef+Us2myE+3A1VuAzoVzR1kY7SncOfTXzdE3MnySWeL5B/ulm X-Received: by 2002:a05:6a21:a512:b0:3d7:dfbf:7435 with SMTP id adf61e73a8af0-3d9b0a3a1ecmr3156088637.25.1788324180528; Tue, 01 Sep 2026 21:43:00 -0700 (PDT) X-Received: by 2002:a05:6a21:a512:b0:3d7:dfbf:7435 with SMTP id adf61e73a8af0-3d9b0a3a1ecmr3155890637.25.1788324178774; Tue, 01 Sep 2026 21:42:58 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Pierrick Bouvier , Matheus Tavares Bernardino , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , John Snow , Cleber Rosa Subject: [PULL 12/28] python/machine: support routing semihosting output to the test console Date: Tue, 1 Sep 2026 21:42:15 -0700 Message-Id: <20260902044231.843004-13-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=T968ifKQ c=1 sm=1 tr=0 ts=6a97a955 cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=Z4HElfRGeH4uGo3IGfcA:9 a=QEXdDO2ut3YA:10 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-ORIG-GUID: k1zFXdLeaReUpnJ8By1_PUvw_mtV9ZS8 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfXy7D8omLHHUlO N2MQF0t+rv+ikT2zaUBoaCu4NVzzPyD42FzMnItzGBodY/CPNGdQOe+5YofzsbBQ3TjrEpMMccT d9A29a01Irkb2jFDs9125IA6IR3KSQI= X-Proofpoint-GUID: k1zFXdLeaReUpnJ8By1_PUvw_mtV9ZS8 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX/r04MP6vepjL 1/xxU4M2FQ4MMKY1XpnjMX1VSzAF/tNY0Xoyn4YxKgZsDa0MBvJ8jfPokp37DteJlcc7BAf+g3a zbxpu3CDQDQnqi14bgv1g4qcQ2kfTFdm3ioGX412zFPFH2CABt75XOenw1o0K/d0V/2B5qmPGYi 3Za1g5r+3UWp2wX/+cGg7p31ibOKmeKlJ2tZUeeRRzbcKpcbktXTySatss2i54HxEvGMpKAZ0hm u6rkaQz5sgxqsFbjCSjXWiT/Slvp4/D/be488inZHjrDdtJOu+EsCYlE9dnWVLgD0v871bsxuuR q14CUj1zRuvHw5qCu7GpUgyrGZ2kz5jPRazrLuAgBqJ3asQqNQGjL/XC++lIYMVqseEnH3yWej9 HnN6C+Y3YR09uck+Hk5LFwX13M3CigEYT/vxkYeO0Xopk+geMd/bODffQW0Hb5W35zjgTT4sTBo /rpO2Bpsoh3hP6f68cw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 adultscore=0 clxscore=1015 phishscore=0 priorityscore=1501 impostorscore=0 bulkscore=0 spamscore=0 malwarescore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324274703154100 Content-Type: text/plain; charset="utf-8" The hexagon semihosting systests will wait for output on the semihosting console. Reviewed-by: Pierrick Bouvier Signed-off-by: Matheus Tavares Bernardino Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Brian Cain --- python/qemu/machine/machine.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/python/qemu/machine/machine.py b/python/qemu/machine/machine.py index bfb59d4c0bf..39375065558 100644 --- a/python/qemu/machine/machine.py +++ b/python/qemu/machine/machine.py @@ -186,6 +186,7 @@ def __init__(self, self._console_index =3D 0 self._console_set =3D False self._console_device_type: Optional[str] =3D None + self._console_semihosting =3D False self._console_socket: Optional[socket.socket] =3D None self._console_file: Optional[socket.SocketIO] =3D None self._remove_files: List[str] =3D [] @@ -321,7 +322,10 @@ def _console_args(self, interactive: bool =3D False) -= > List[str]: fd =3D self._cons_sock_pair[0].fileno() chardev =3D f"socket,id=3Dconsole,fd=3D{fd}" args.extend(['-chardev', chardev]) - if self._console_device_type is None: + if self._console_semihosting: + args.extend(['-semihosting-config', + 'enable=3Don,chardev=3Dconsole']) + elif self._console_device_type is None: args.extend(['-serial', 'chardev:console']) else: device =3D '%s,chardev=3Dconsole' % self._console_device_t= ype @@ -892,7 +896,8 @@ def set_machine(self, machine_type: str) -> None: =20 def set_console(self, device_type: Optional[str] =3D None, - console_index: int =3D 0) -> None: + console_index: int =3D 0, + semihosting: bool =3D False) -> None: """ Sets the device type for a console device =20 @@ -921,6 +926,7 @@ def set_console(self, self._console_set =3D True self._console_device_type =3D device_type self._console_index =3D console_index + self._console_semihosting =3D semihosting =20 @property def console_socket(self) -> socket.socket: --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324299; cv=none; d=zohomail.com; s=zohoarc; b=jNehADHPRp/uYVXzji353VwKvlr6dFTxbEjF11dQ/5VC2VxQ3CsHITqpQDtLrm2pOnT0CMD0327x5IMmj6PF+bOxdKFvQrtMhQnTsxLgZYnIUOAcAdoMEPKKHowc5oNK8CXtCtOIFqCfZR9W5Hg33bO9Xvcd/7CClz5hAK3kqMk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324299; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=mcEDKaXk/V4durGYugyVdvHkcGTvG/CoUwinf9Jtyf0=; b=Y/4NNKw8J4fb7n7+mhtrQuB8vyTEJCvYdhN5byoyiUelADF2D5L0PSIA4xnmwX8r2FjUid+vRD46HUGw6YFR09fc0ggIwmep7jnpmqvO6nqy1HvoO+BQh/Y7fxs+06tQC7hWmg1ifONfGew8qLuoI8+tYxDKVpEgb8UxhqKDAUs= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324299867588.7967198278809; Tue, 1 Sep 2026 21:44:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1coi-0000HU-6t; Wed, 02 Sep 2026 00:43:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coe-0000En-Di for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:16 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1cob-0000Lr-MW for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:15 -0400 Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6824C68c2983309 for ; Wed, 2 Sep 2026 04:43:02 GMT Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ge35k25sp-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:43:02 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-38f283baf1fso885984a91.3 for ; Tue, 01 Sep 2026 21:43:02 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.43.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:43:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= mcEDKaXk/V4durGYugyVdvHkcGTvG/CoUwinf9Jtyf0=; b=iSiSuYpshJnHJibG nOhwmlKR9DBWRCoDmGV4/TRzJb5juyepq5FS2cClJPfZ0f7ih6ArbSkx6ZL8jw8b CgCRn5oA+OyyJ5XnUvTJhb7fa6XHA7BKO5NafWUg2h7ln7JFUxR5EAuk1UjdIeOJ +mZbUXSAX0I+Xsdtxu1DDlYZxAsFdJbS4z80hwDiDUhY5qFRgJatGqwi1jHNpQUn Oo9SwWdKts5ju+A+P0yi9ILzLaPQcxlEyc14MP8oq9jxWk2LAmKEUqXwB2k/PSgJ /QFepVNUDlJ3q1hg2M5UTNQN2hI8kjMLCHVASv+nJYHS9Ut1sZRojm1vDXh5evN9 2xFxfQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324181; x=1788928981; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=mcEDKaXk/V4durGYugyVdvHkcGTvG/CoUwinf9Jtyf0=; b=aWW//Svo6PakbOvldA52na/ksm73MQI1m39xl+xSyCs8oMVNa0mOv3kfkjmwTzauH9 ts2BvbFFpEoryI/LdK7pcrWFZ1NCMa/Hn3o3TpiMPE62pwbqUVn44moPPMG1e2fulmpS GjtuEphIS+SuB8CJzYGEVmt9Gh/Da7a0RGMqnkBmyn1748uYT4DL2MNk240gTypU17tr AE1KnO/rSiTERcmaCCD04fD0nhR0287KLLLi2tqdiPqUHBUzg/z1GvJlNaNYI/4a8nYp vpJE8z8YyE5YBsAebYTw7RkimpznJVFBkIj+FInzjL+SKbAIVpe0+KDJoIMjBuevMuJt DI8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324181; x=1788928981; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=mcEDKaXk/V4durGYugyVdvHkcGTvG/CoUwinf9Jtyf0=; b=WIylgFjjJp4f9r+k4f3WPgBHcpavdrpockm4wVKplYLKFcEdYEq6BLVlzcffeOnHOY O9AntdCt2jvauUZYmvUyD1czDXfZtzXyA7wMI3kJ6LO7Qgt93fXrqYy17f0XBvZD/EBu fhfU2voZZ7glyrwugIMOhz68ZRZXWl7Qnkfa0jwZd8SXgAb14jhx7RpJzj5Jo3knUen3 CnKNNiadxnitva4H7HJpdQHojEXsBbRTmb633dqsdznH/h8+ijAyoW+e2L+TFD/YbEgB wDGw8qhuiSZJgrHljQosIsu8zbDG+wOFVBdHqYV+pROx6IqtCutECc+Vi1jHBPo+a01N Osog== X-Gm-Message-State: AFuF++lH6sYz4KpOGXdUoPI6UDFS5eYezFXuP7D9d5WtozpDYrHiHPaK FH013oGPyUD4CbJNZw1rxAOyGvQ8sa/p1HeE1bUTW15N8Dw2ecxRCqmIHpXscb/wz0DTW05eG7+ PCx/0yaBmizMI4WRIP5gnSbv11xKhtNF9mvRf+t258BCz73zivzfvU2JqxxDQCmDd4A== X-Gm-Gg: AYBFou2uvNuIKPwy9N88TRlE2XeRchRH+LQQCrs0pHw/XW5KhGESsXgASJcxKXUnYvf 8ucwKWsJAJEJQASzNH7PaDQYG0k5gAuNpqex1c9pNE0ETgh4L7h3E3UAyHpDx40c0e8uuw4J0uu /ckgfLOCyGowjUMxb5tJ5fm69o9eYBnEsgAyMoaS38fKurBMJXNjGxzW9pGAhEhmJI4yC5shXoo G/z9URFFhUgTfCfVKRVxBevqr/XH6bUD8KNiBfkW9mK+O+r5Cj4BxVo6g1QJJAWcYpdXEihZiPh TDsIbj1eoEfayKR8Gs1AhdHrOwdFyMCEOq/9X8vZZl9Sx8VgYxDVSFhv0tVihuYJzhP4Hv0OQAs mzG/fcrlErYj3rcti8z8nmYE9xpV58YUq7yZT3hHlaX6AcHSj X-Received: by 2002:a17:90b:3f84:b0:381:25ce:bcc2 with SMTP id 98e67ed59e1d1-39aedf1922dmr3173056a91.6.1788324181414; Tue, 01 Sep 2026 21:43:01 -0700 (PDT) X-Received: by 2002:a17:90b:3f84:b0:381:25ce:bcc2 with SMTP id 98e67ed59e1d1-39aedf1922dmr3173001a91.6.1788324180870; Tue, 01 Sep 2026 21:43:00 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Pierrick Bouvier , Matheus Tavares Bernardino Subject: [PULL 13/28] tests/functional: Add hexagon semihosting systests Date: Tue, 1 Sep 2026 21:42:16 -0700 Message-Id: <20260902044231.843004-14-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX4xJbMP73b9kc s26j6UYH6jxIdW5Dr7nowRrpufPBhkB+xmDK8DltZs3xGwxhml+90zLfFAsp50U7jqQvWjbg8sr LWE2Aao14nKGrktPo6wYg2iGfTv/J5P1Up82u0iMY2J8xhJOD6G7LlL2sj7CiClmAOS6Kic3wQC 4a+u68q3VZGXkKnZLZoiYttj5KzT5MXChKPoKozky4sQ5xukD8ApSPkJw4trzC6KRneQ9T/KVEo ybC53xX/YgqHKHEr/5dxLbUe7DST8/pZ8mJIe8tQ0AqLeCCbS9H9ULClsMbD6lxGcTSgzeSLLMR kPJTEmas+huFj74tCpjRtG1mLsUF/maBOYSmV5LKSl+z4k8r0ZF8N/cD+4pkdH7Z8O00q7hP8zX FcepmI5MVUHvqxbzBBjbA2Or6Q8Y83C2DgGzunRNoaO/tBJTRwd25gTIlPIUrPu3fO0Tn6iEZZd 9P0651uTAV7FRkKuelg== X-Proofpoint-GUID: 2-Kjx6ePlTsjz_i0XZirn3w6HZmF4NPC X-Proofpoint-ORIG-GUID: 2-Kjx6ePlTsjz_i0XZirn3w6HZmF4NPC X-Authority-Analysis: v=2.4 cv=VLrtWdPX c=1 sm=1 tr=0 ts=6a97a956 cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=5vFef2XoAAAA:20 a=EUspDBNiAAAA:8 a=gC5wIKLFQIU-z-kLmxwA:9 a=QEXdDO2ut3YA:10 a=rl5im9kqc5Lf4LNbBjHf:22 a=bA3UWDv6hWIuX7UZL3qL:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX2GD8M2TxiYcL TyIoKGFBrUPujq//s60SlXJqPlDYx45/n/dT37LBfp8WSSBLiVa6cMaTx74wPsOIlRyU7evqFHB v+UqdUR/XFXvgPLsiuJ7hRx9rsy5uhg= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 lowpriorityscore=0 clxscore=1015 bulkscore=0 malwarescore=0 adultscore=0 priorityscore=1501 phishscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324301094154100 Reviewed-by: Pierrick Bouvier Signed-off-by: Matheus Tavares Bernardino Signed-off-by: Brian Cain --- tests/functional/hexagon/meson.build | 5 ++ tests/functional/hexagon/test_systests.py | 94 +++++++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100755 tests/functional/hexagon/test_systests.py diff --git a/tests/functional/hexagon/meson.build b/tests/functional/hexago= n/meson.build index 2b5a1a8f264..44053e64676 100644 --- a/tests/functional/hexagon/meson.build +++ b/tests/functional/hexagon/meson.build @@ -2,4 +2,9 @@ =20 tests_hexagon_system_thorough =3D [ 'arch_tests', + 'systests', ] + +test_hexagon_timeouts =3D { + 'systests': 180, +} diff --git a/tests/functional/hexagon/test_systests.py b/tests/functional/h= exagon/test_systests.py new file mode 100755 index 00000000000..f36e015f502 --- /dev/null +++ b/tests/functional/hexagon/test_systests.py @@ -0,0 +1,94 @@ +#!/usr/bin/env python3 +# +# Copyright(c) Qualcomm Innovation Center, Inc. All Rights Reserved. +# SPDX-License-Identifier: GPL-2.0-or-later + +import os +import re +import time +import unittest + +from qemu_test import QemuSystemTest, Asset, wait_for_console_pattern + + +_TARBALL_BIN_PATH =3D ( + "systests_standalone_package", + "StandaloneSysTests_6.4.0.2_v68", + "bin", +) + +class SysTestsStandaloneTests(QemuSystemTest): + SYSTEST_TIMEOUT_SEC =3D 30 + + ASSET_TARBALL =3D Asset( + "https://github.com/qualcomm/qemu-hexagon-testing/releases/downloa= d/v0.2.11/systests_standalone.tar.gz", + "b5777aa65245de7710a7a08d717953c1362be7c8b60d9014c9fee8b17610ad1c", + ) + + def setUp(self): + super().setUp() + self.archive_extract(self.ASSET_TARBALL) + + def binary(self, name): + path =3D self.scratch_file(*_TARBALL_BIN_PATH, name) + self.assertTrue(os.path.exists(path)) + return path + + def run_exit_zero(self, binary_name, *extra_args, machine=3D"V66G_1024= "): + self.set_machine(machine) + self.set_vm_arg("-display", "none") + self.set_vm_arg("-kernel", self.binary(binary_name)) + for flag, value in zip(extra_args[::2], extra_args[1::2]): + self.set_vm_arg(flag, value) + self.vm.launch() + self.vm.wait(timeout=3D60.0) + self.assertEqual(self.vm.exitcode(), 0, + f"Test {binary_name} exited with " + f"code {self.vm.exitcode()}, expected 0") + + def run_console_pattern(self, binary_name, pattern, *extra_args, + machine=3D"V66G_1024"): + self.set_machine(machine) + self.set_vm_arg("-display", "none") + self.set_vm_arg("-kernel", self.binary(binary_name)) + for flag, value in zip(extra_args[::2], extra_args[1::2]): + self.set_vm_arg(flag, value) + self.vm.set_console(semihosting=3DTrue) + self.vm.launch() + try: + wait_for_console_pattern(self, pattern) + finally: + self.vm.kill() + + def test_fopen(self): + """fopen reads a file passed via --append and verifies its content= s.""" + import tempfile + # The fopen binary has a short cmdline buffer; use a short path. + dummy =3D os.path.join(tempfile.gettempdir(), "qemu_fopen_test.so") + with open(dummy, "w") as f: + f.write("valid\n") + self.run_exit_zero("fopen", "-append", dummy) + + def test_ftrunc(self): + """ftrunc truncates _testfile_ftrunc from 6 bytes to 1 byte.""" + ftrunc_path =3D self.scratch_file("_testfile_ftrunc") + with open(ftrunc_path, "w") as f: + f.write("valid\n") + # Sleep 1 s so mtime change is observable + time.sleep(1) + self.run_exit_zero("ftrunc", "-append", ftrunc_path) + self.assertEqual(os.path.getsize(ftrunc_path), 1, + "_testfile_ftrunc should be 1 byte after ftrunc") + + def test_access(self): + """access checks R_OK|W_OK on _testfile_access.""" + testfile =3D self.scratch_file("_testfile_access") + with open(testfile, "w") as f: + f.write("valid\n") + self.run_exit_zero("access", "-append", testfile) + + def test_semihost(self): + self.run_console_pattern("semihost", "PASS", "-append", "arg1", "a= rg2") + +if __name__ =3D=3D "__main__": + QemuSystemTest.main() --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324224; cv=none; d=zohomail.com; s=zohoarc; b=El8y77vtmFPq/j12C/qr0TeFPC8XGJyJ1bmGkO5nM/1JS+aLY4BjG1NMZNwRo8bpUnKTdnWz2cgvVJLUucbKewP0XllfM/RN0n2rZwrTOEia+kUjUZEocATQTyA6GY2tN0I4ob2b8YzGsF9QuMfaqYjaFSkeVvDmr5F0ieeG13k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324224; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=DxP/ZsqM8SX5EuNtEkk/xZq9y6bXs7/uvEzE1tXWQVc=; b=lCfqNUDbSA0OOriQ6M559aZQk8YUXuEe0BpTZcNDqodQtvtyn5ibALrPQmx/lBow47Bi5TvVinKXkiT4LXP44TY4M4I+8oZnHkS9lXZh2YPjF1UhbpsLaVTsUBlZT/r00ZEfw39UQGyI0eoiwZSLjaqR5A8V9Q3R1skQQWU2sM8= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324224481400.49134190902157; Tue, 1 Sep 2026 21:43:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1cok-0000Iq-EP; Wed, 02 Sep 2026 00:43:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1cog-0000HA-6l for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:19 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1cod-0000Lx-Va for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:17 -0400 Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6823Jd3b1026272 for ; Wed, 2 Sep 2026 04:43:03 GMT Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gebsx08b9-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:43:03 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2d63bad3d09so10430455ad.3 for ; Tue, 01 Sep 2026 21:43:03 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.43.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:43:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= DxP/ZsqM8SX5EuNtEkk/xZq9y6bXs7/uvEzE1tXWQVc=; b=NY24VyxfOo02OoER RQfzNVw24ltgJ6Ah+bCgcTSPkMl5Mco0+9HT6DgbZ+NQufbOiqMXrfQJNNXm5Yj5 JuCaUn+j4QIpKV7f54jDh55KgXuovPMmcKxhO3q2uICweM9C5rLofuczIrRptiXI 1UKvP+8zlbLeYt5o3YJpJHsrz1zVi4e1g8nA0QZr8e7uFqIRYSJ5QAxNe1UIDo2V zX8vql3DPcOT3M/nJhYOb2yoc+g+hYMeEIiEBcklmOpy5bxKBNxxwgsKYbQiV6AC AyJhpsiQXuH5pUr6TXbgTopfnp4SQbMs+TR/lfWIc209+E+xO5MDW2QtLGNW88Ez 61WfaA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324182; x=1788928982; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=DxP/ZsqM8SX5EuNtEkk/xZq9y6bXs7/uvEzE1tXWQVc=; b=LIcLE/FeOx+Ak0+xTDXw21XK4cXLX3MBJNxN1TJOhl+Zh6ru3sHdYymTSiUVWKhlte WMKCQ0LFlH9rJ0cmk2JCIJTR8r7gQWSgrmW2OkfkhzaVr2crBkMZMzJy8C3dsblnxYU4 mNWTuIRndqNVkPMHWR42oaC98zHfW1wIGr9BXVSQEkIK9qePfa+s5Y5ZRssvSqRxhnBa vJmD2JC9nUYm6rO3USIMP1mS983/aHKMm0UvxwVQgjOh4W4q6xlacUfpl4SVHhOoPqWh hRG2J482WFvQRS9AjBdVD2LbkcYvyNiAU5FjWkegHQm/LgsWg/gX24nxcSlU6ZeL41f5 CpqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324182; x=1788928982; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=DxP/ZsqM8SX5EuNtEkk/xZq9y6bXs7/uvEzE1tXWQVc=; b=MwnW1xcStwa+n6unOfZVUqUJMjAmbfDpZyeMjzgTABRNonZK8SbcJcxMYlBpUaiN5S sIjRIp2C9MjGgPmduLDMmOFqO4Qq7K2+mdbAn8MrkFRgGtVuz84bHfcy2pO94mz0++rM eiOk3QYCkfCJyDwowwrYHECxWDxaXnbV0zyEI/AD5K+++q7m8OxDASNzO3RLMQg+T2cC DSWhjnaTgVSCZUHbNoVZtZRAVcSVwjcRZ4lUBie2/ot4G6+VgIGHnjERf9tno55Sapr7 JFK/VOXeSzNsW6pwnwuNjWwmvUnh5DOH27yJoO9+gyu1IBswuADnTTcz1rAPD7q74L8p V/Ow== X-Gm-Message-State: AFuF++nZ2TmlFfk+6KwcMfSFcjNe4K3FUs/q2JVZjHWXDDZHB11z31GB 18tqFyvIaLfylt3K8ifitB0OL85aK0R22DTkoXdvo2ADQ7FCYkN+yvS7MbXm5aqKFHvSa+IzxVV kTFyXW/4t0OZkcswkq/ejZqvTz/CUN36027xFbMV6e7b0KsMn4EZqg7Km5y+yIVpwgA== X-Gm-Gg: AYBFou2Hf5nN6Dp4cL45oMk3lZAErTDrUOzQ8HcxN5VBh3/vFKB92VVZ9O3ooC5EG2p EuAXFhAYMVBpHK6VxilNx/+uFdkYm+/8xx3X+h4ZheCbKQfIXeL0M+qRovHC9SRBK7RmJf4LCuN zcF8NK5chapQwds/RJnBDDsNTM4fuP6FnB06rBmkw4kT2Ai8+t4Wv6P+z1KhiUEcAyXrx7+VRR8 li4Ale7G0K0utPF3jcA+oswcQzb/UNJU9rTKSc4OOrRdt0jtuTyiP1fL3l5SAABDPKLBMEKcvZp BAu+UfkF7VyivfQiTHVCw4+p2zJBWPJMVEYvlSQZ+ESXGcMB7dKkSOVHHw0mXqIlk6WOfziUg4g vInB7bZw5mnf8b5R7ybQakAexngMYn/1xvz6H5JLqrOuwFo0R X-Received: by 2002:a17:90b:4a07:b0:38e:97f0:aa4b with SMTP id 98e67ed59e1d1-39aee0e5ca1mr2618329a91.13.1788324182413; Tue, 01 Sep 2026 21:43:02 -0700 (PDT) X-Received: by 2002:a17:90b:4a07:b0:38e:97f0:aa4b with SMTP id 98e67ed59e1d1-39aee0e5ca1mr2618264a91.13.1788324181886; Tue, 01 Sep 2026 21:43:01 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Pierrick Bouvier , Laurent Vivier , Helge Deller Subject: [PULL 14/28] target/hexagon: align exceptions for user/sysemu Date: Tue, 1 Sep 2026 21:42:17 -0700 Message-Id: <20260902044231.843004-15-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: l9p9mj4Q6slqEmEGN1kUS_bioiGwg7az X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfXyApDEfvaPIkw 1EKsBiXWsL4WFvNNYvy7LhwTuibB+opOMT07gllPTI212UjfkhgZwrAHGGX/63aJXgvZ+CEkHt+ /bF3ZVbldmfIl/bwNqBh366Z1Hwt4pH2zqdugcZUJA/GXANmOmN6VFyVDD7JpfFUTC8e2j0C9sI oltCVPXeOijebJi9tEVnaoXzLwo9MQMNJ3MPXCawiCtyrqO+kz9QZdkCIQkH/wHrPgg1YP2z9gE z+/jd6G5E/NuXKnKSvRAbFIq+ePFvD+0fmn8Iak5wHOs4QyUf6fyJPYGNpsj3qlGkjU0Q768c4t cYLHlrBGWTy7kxC5IjV3ZqzwBqOZTdWJza4pGH2oPQR3BUX07RqBMSuX5jhNTH7+RawvB4RNPTW DVTnn6TLRBjM7HFTF7wdIW9N+Bc5mLMPS2xYWzuaLykXtrCpBAJcSs8AQ13DyFU684wzvnGd1re 2rSAxhz1+K1Ez0C0i7A== X-Proofpoint-GUID: l9p9mj4Q6slqEmEGN1kUS_bioiGwg7az X-Authority-Analysis: v=2.4 cv=AufeGu9P c=1 sm=1 tr=0 ts=6a97a957 cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=YFOaZ8uGGOB_e2P6zNAA:9 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX25oUkHb7fkua F6mRWPn73lAJhSxBkPdN3H4HS9xxwyAtLRVrEC8i4r+c5IlNh2sftLWl7ZDXVMELwpAq8qf//PH 5tLkybg2kVEecQmHlVNwyKkXZdKQM1Q= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 bulkscore=0 lowpriorityscore=0 impostorscore=0 phishscore=0 spamscore=0 adultscore=0 suspectscore=0 priorityscore=1501 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324226542154100 System mode reports an exception as cs->exception_index =3D HEX_EVENT_* plus env->cause_code =3D HEX_CAUSE_*, but translated code in user mode put the c= ause code straight into exception_index, so cpu_loop() was decoding both forms. gen_exception_decode_fail() and the misaligned-PC check used the raw form unconditionally, so in system mode the cause code was misread as an event number. Use the {event, cause} everywhere and drop the duplicated cases from cpu_loop(), which fixes HEX_CAUSE_PRIV_USER_NO_SINSN and HEX_CAUSE_PRIV_USER_NO_GINSN. The misaligned PC is no longer zeroed on its way out either, so it reaches the signal frame as si_addr instead of whatever r31 held. Reviewed-by: Pierrick Bouvier Signed-off-by: Brian Cain --- target/hexagon/translate.h | 2 +- linux-user/hexagon/cpu_loop.c | 30 +++++++++++------------------- target/hexagon/cpu.c | 3 ++- target/hexagon/translate.c | 27 +++++++++------------------ 4 files changed, 23 insertions(+), 39 deletions(-) diff --git a/target/hexagon/translate.h b/target/hexagon/translate.h index 3c5773e2c73..00de2b0d2ec 100644 --- a/target/hexagon/translate.h +++ b/target/hexagon/translate.h @@ -330,7 +330,7 @@ extern TCGv_i32 hex_t_sreg[NUM_SREGS]; #endif =20 =20 -void hex_gen_exception_end_tb(DisasContext *ctx, int excp); +void hex_gen_exception_end_tb(DisasContext *ctx, int cause); =20 void process_store(DisasContext *ctx, int slot_num); =20 diff --git a/linux-user/hexagon/cpu_loop.c b/linux-user/hexagon/cpu_loop.c index d7f73439dbc..e4ef97a1184 100644 --- a/linux-user/hexagon/cpu_loop.c +++ b/linux-user/hexagon/cpu_loop.c @@ -66,21 +66,22 @@ void cpu_loop(CPUHexagonState *env) case HEX_CAUSE_FETCH_NO_UPAGE: case HEX_CAUSE_PRIV_NO_UREAD: case HEX_CAUSE_PRIV_NO_UWRITE: - force_sig_fault(TARGET_SIGSEGV, TARGET_SEGV_MAPERR, - env->gpr[HEX_REG_PC]); - - break; + force_sig_fault(TARGET_SIGSEGV, TARGET_SEGV_MAPERR, + env->gpr[HEX_REG_PC]); + break; case HEX_CAUSE_PRIV_USER_NO_GINSN: case HEX_CAUSE_PRIV_USER_NO_SINSN: case HEX_CAUSE_INVALID_PACKET: - force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPC, - env->gpr[HEX_REG_PC]); - break; + case HEX_CAUSE_REG_WRITE_CONFLICT: + force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPC, + env->gpr[HEX_REG_PC]); + break; case HEX_CAUSE_MISALIGNED_LOAD: case HEX_CAUSE_MISALIGNED_STORE: - force_sig_fault(TARGET_SIGBUS, TARGET_BUS_ADRALN, - env->gpr[HEX_REG_PC]); - break; + case HEX_CAUSE_PC_NOT_ALIGNED: + force_sig_fault(TARGET_SIGBUS, TARGET_BUS_ADRALN, + env->gpr[HEX_REG_PC]); + break; default: EXCP_DUMP(env, "\nqemu: unhandled CPU precise exception " "cause code 0x%x - aborting\n", @@ -88,15 +89,6 @@ void cpu_loop(CPUHexagonState *env) exit(EXIT_FAILURE); } break; - case HEX_CAUSE_PC_NOT_ALIGNED: - force_sig_fault(TARGET_SIGBUS, TARGET_BUS_ADRALN, - env->gpr[HEX_REG_R31]); - break; - case HEX_CAUSE_INVALID_PACKET: - case HEX_CAUSE_REG_WRITE_CONFLICT: - force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPC, - env->gpr[HEX_REG_PC]); - break; case EXCP_ATOMIC: cpu_exec_step_atomic(cs); break; diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index 47e3683d754..96d888149cc 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -323,7 +323,8 @@ static TCGTBCPUState hexagon_get_tb_cpu_state(CPUState = *cs) hex_flags =3D FIELD_DP32(hex_flags, TB_FLAGS, IS_TIGHT_LOOP, 1); } if (pc & PCALIGN_MASK) { - hexagon_raise_exception_err(env, HEX_CAUSE_PC_NOT_ALIGNED, 0); + env->cause_code =3D HEX_CAUSE_PC_NOT_ALIGNED; + hexagon_raise_exception_err(env, HEX_EVENT_PRECISE, pc); } =20 #ifndef CONFIG_USER_ONLY diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c index 5463a07ec52..9d5402a9822 100644 --- a/target/hexagon/translate.c +++ b/target/hexagon/translate.c @@ -73,8 +73,8 @@ TCGv hex_vstore_pending[VSTORES_MAX]; #ifndef CONFIG_USER_ONLY TCGv_i32 hex_greg[NUM_GREGS]; TCGv_i32 hex_t_sreg[NUM_SREGS]; -TCGv_i32 hex_cause_code; #endif +static TCGv_i32 hex_cause_code; =20 static const char * const hexagon_prednames[] =3D { "p0", "p1", "p2", "p3" @@ -128,19 +128,14 @@ intptr_t ctx_tmp_vreg_off(DisasContext *ctx, int regn= um, return offset; } =20 -static void gen_exception(int excp, uint32_t PC) +static void gen_precise_exception(int cause, uint32_t PC) { - gen_helper_raise_exception(tcg_env, tcg_constant_i32(excp), + tcg_gen_movi_i32(hex_cause_code, cause); + gen_helper_raise_exception(tcg_env, tcg_constant_i32(HEX_EVENT_PRECISE= ), tcg_constant_i32(PC)); } =20 #ifndef CONFIG_USER_ONLY -static inline void gen_precise_exception(int excp, uint32_t PC) -{ - tcg_gen_movi_i32(hex_cause_code, excp); - gen_exception(HEX_EVENT_PRECISE, PC); -} - static void gen_pcycle_counters(DisasContext *ctx) { if (ctx->pcycle_enabled) { @@ -230,14 +225,10 @@ static void gen_end_tb(DisasContext *ctx) ctx->base.is_jmp =3D DISAS_NORETURN; } =20 -void hex_gen_exception_end_tb(DisasContext *ctx, int excp) +void hex_gen_exception_end_tb(DisasContext *ctx, int cause) { gen_exec_counters(ctx); -#ifdef CONFIG_USER_ONLY - gen_exception(excp, ctx->pkt.pc); -#else - gen_precise_exception(excp, ctx->pkt.pc); -#endif + gen_precise_exception(cause, ctx->pkt.pc); ctx->base.is_jmp =3D DISAS_NORETURN; } =20 @@ -245,13 +236,13 @@ void hex_gen_exception_end_tb(DisasContext *ctx, int = excp) * Generate exception for decode failures. Unlike gen_exception_end_tb, * this is used when decode fails before ctx->next_PC is initialized. */ -static void gen_exception_decode_fail(DisasContext *ctx, int nwords, int e= xcp) +static void gen_exception_decode_fail(DisasContext *ctx, int nwords, int c= ause) { target_ulong fail_pc =3D ctx->base.pc_next + nwords * sizeof(uint32_t); =20 gen_exec_counters(ctx); tcg_gen_movi_tl(hex_gpr[HEX_REG_PC], fail_pc); - gen_exception(excp, fail_pc); + gen_precise_exception(cause, fail_pc); ctx->base.is_jmp =3D DISAS_NORETURN; ctx->base.pc_next =3D fail_pc; } @@ -1366,9 +1357,9 @@ void hexagon_translate_init(void) offsetof(CPUHexagonState, llsc_val), "llsc_val"); hex_llsc_val_i64 =3D tcg_global_mem_new_i64(tcg_env, offsetof(CPUHexagonState, llsc_val_i64), "llsc_val_i64"); -#ifndef CONFIG_USER_ONLY hex_cause_code =3D tcg_global_mem_new_i32(tcg_env, offsetof(CPUHexagonState, cause_code), "cause_code"); +#ifndef CONFIG_USER_ONLY hex_cycle_count =3D tcg_global_mem_new_i64(tcg_env, offsetof(CPUHexagonState, t_cycle_count), "t_cycle_count"); #endif --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324390; cv=none; d=zohomail.com; s=zohoarc; b=RP36JrQMrgBfulQ+IKuI5OwKItJfJfg/NL7/jE8yqDLQYiy2IjsfHOZG2yY+2p1p+4AdiDG2feOdP3NDvrC5SvOLGX1uzUVQnuC2hScnXaoHKe+PaoH+xJop2T3EItMFsuHkoVyBlaWmRlahmX5WZlxLpHES8E4nKJKm0RVm0EI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324390; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=uXO3tne317bGrEZCKuTBMVZVrng3uc6zCucp+Ub/ZgE=; b=DVymg3F9Xup4/zVQIMfjMopzjfZTn2OWow2OV/CWUdIOXjRF2l4mUFK9Z3/GiIGh/rjhCRZsrZYujcw6/iBbxa9IIeGC3EKe0aXI4kxI4oH7QeGnxUKpjkesdP2gzBfQIZHj0ODlqESo3mawMA6c/NBWqb6gM9cIuLfYoFtJ80Q= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324390062206.76248924003016; Tue, 1 Sep 2026 21:46:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1col-0000Ja-DJ; Wed, 02 Sep 2026 00:43:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coj-0000J2-Qt for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:22 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1cog-0000M5-3P for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:21 -0400 Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68202SBv1013646 for ; Wed, 2 Sep 2026 04:43:06 GMT Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ge8whgskp-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:43:06 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-cc132709c76so1127177a12.3 for ; Tue, 01 Sep 2026 21:43:06 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.43.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:43:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= uXO3tne317bGrEZCKuTBMVZVrng3uc6zCucp+Ub/ZgE=; b=UoIlfxp6W87VI0Hh 39ydLREYm+yUOtC1EoHSyMvCGvZw7DBcupaNnYWiyoRUux1wTjggIBAX6frow96D mzTELebhEJ2UDZb7+L+3obp4lp5MbHJ/Mw2M43XVFobmke3+/5ur3tUJZx52oUhC lY7vCRDaxlVHt8W0fILHeGfC5C42WD+d7/UaD6GGaMdhaAp0pfvJP+PQCZH5WbN7 eyR+UCtQlLDbeFHR5f+c/WntygAqLaXiof140HnKZnDYnEAQgg7xrKfsVqaXSCzk LranRMcwehpfdNUgaSmkV+4xk9uXeoeAG4NRHvnfeEmQQHaXrtZhmif2gXyMbX6h sBt6tg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324186; x=1788928986; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=uXO3tne317bGrEZCKuTBMVZVrng3uc6zCucp+Ub/ZgE=; b=W+u8lfh+9vl1Te3zJt02YliE+t8veO09QmoAKrh8n1m3bNcdgvMLOdeO3ScsP39vdg EmKkYTzjDGzWM/Aa/SVOD0Egmn5Bwka+WFqnVzaW2p0lcge/NnmRYKlpTiAv5NukDbgX 0kO5ItiwP7QHmzb0Jk3U4QTp03bcUzbb3RP0zRirrWzstSpL7KeEDjmA2EVUnVssmDH4 /JgIJ4qGUhpMjImaLMh8SnM2gG5S4y36TKKFyn8iI5s3iXEJnI58XQ8eHb4I3L1pRKPS MYqtZNywHVbWTeQ+J+bbDxx/4LuRqYKVUH6q537RAUDDTCVTtK3kpqU38DeeYpMOCri8 OvIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324186; x=1788928986; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=uXO3tne317bGrEZCKuTBMVZVrng3uc6zCucp+Ub/ZgE=; b=mlfHn/f/YYi9ZEo0Szg/jkcxolG3yX4tPkXWgOiru+Tpzix+ayjH2lLAm1AU2oRMAz e3i3UhBcqSi+UFIxA6URsWj33m4cGJ0tr27rsdcNRVacMubOLkjuN60nzcArhMvCdH4+ C6EQkzHfJqUCj7JAxmm8XeJ/NXOmJaqq18HN65NwSY+aPKOid4Ztnoolh7odrGTik+Zb 6Y7cayFIMKufdefWc6JWd+4B0feFNe79DpJ18PGTneKkZ/J4Ee39U1+NB5+igKxLZOLi 5atLE4FgbS0+dcZVFd7uno4Rf/Mq/WTBWduA96hloH+GZN7vPAchn5EkpwcqHiX6XbKB 0hiQ== X-Gm-Message-State: AFuF++ml7A8nxFY6Msmvfs0pm/2zjV9BC+DfWVTX0EFWSHtrF3qOECHC NQL3iEcocgZ86UDHj9+ttnnKWSTyWFNtwncEKduCd6YLlva5LuVqktLpn28QRELO5AK+MUIWCai k5nOvfVvHbQfk/3o6tco2aCvKfgLJZlYjlEutikW71WiDrwSC/XnkYIUgWvinFENU0Q== X-Gm-Gg: AR+sD10d8cIVrPgMuzqmy6UohVkKXLJQrtQgFX3ZgIEQEmSwU7hMXjTIKfhQnfqEmCK /jnL6dcin1xQdoCvqj3OgnUZzeIKdZ3nOYTi6YP7J/E3+I5Op4GsPWI546TSMNhzEOyd5ZtPGQ8 JRsFV1VFT7ailOY1YJqyRvzbINAlbFYWMV6IhMoINMa1sKLrvC5gTTLQww/npcikYtu4KS5dVQx 1EEbTUEzmdKKwgX5Ot9lMJ+qupBh/DZDRyfILqpjaGl03HhOAN86XrctM4eTZalbRifYHkLgHGU OYjrwuEmDbFCELmzGKXrO1gyFq8zEu+upvsiR2RDFXX1tlm7tQdoXHi0lXe7+FnUkvd9mnVEVHt KipnBp1IuciqEzS0A6tA0/FG916Q/XEgvs7a3+lznznYccxgq X-Received: by 2002:a05:6a21:3282:b0:3b4:7e2d:a3c2 with SMTP id adf61e73a8af0-3d9af9f65acmr3078420637.18.1788324185873; Tue, 01 Sep 2026 21:43:05 -0700 (PDT) X-Received: by 2002:a05:6a21:3282:b0:3b4:7e2d:a3c2 with SMTP id adf61e73a8af0-3d9af9f65acmr3078345637.18.1788324185420; Tue, 01 Sep 2026 21:43:05 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Pierrick Bouvier Subject: [PULL 15/28] tests/tcg/hexagon: check priv instructions raise SIGILL Date: Tue, 1 Sep 2026 21:42:18 -0700 Message-Id: <20260902044231.843004-16-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=fLkJG5ae c=1 sm=1 tr=0 ts=6a97a95a cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=brjt2USROf7zqxP8TNAA:9 a=QEXdDO2ut3YA:10 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-ORIG-GUID: QCaYE_WFPBMNGsMwlt0yPZCsBcwauqVH X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX4lOZf0M/u9zE OXOWMz8k7il++SPLHVZhULbTNSZci1bK3ElYidEOsPXV43zV3vintkGCwC50087E85M5c09f8pH 1ifwcQkBh2vp833k3U2qxsmT/lOZ7sX7bzHwTn2dVXR3tIhOSIJ6Z+YGsWLfPJU1uGIFBbsEWHd coSFj3JEnbGIWldgLtgPcKgFrdNzjLeadCgGaIi4sOJP+gyGSWkUZV9kx/WGFWYL0MeIuVKwlkN vIigJN43w6TBN6ZOIYFQSaN0xhESNsrRi8VN1ubXoG0k9WoAFI3AEtEH+vILitvF+jkD8cKsCln IN2KXE+vb8ClPFKh0+txxGm6B7XPEq2hIQetQLHlFZJew4CLM9NpGdrwYNfuNQ9rzuoYSR+ntmi u5g8TcMK2hUwP5RzkWXYQ59QHL5Qt6QnQHYvJgwdIf1a5SIAp4F/Cp3k8D4g6Ef96+i5PK3M0/F 6z/3SV+XNZGEOSKyEZQ== X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX0IGJ7+TshbSR 6aBiszeX1WQDYgpiEtV7QgOBUVQIc4sEAIiqsOD9x4mKcB76P2WPmibyIHixGeGNR0MueBxl2lc YULojUmitpp1fp3DL4SbaBaiMX+svHo= X-Proofpoint-GUID: QCaYE_WFPBMNGsMwlt0yPZCsBcwauqVH X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 malwarescore=0 impostorscore=0 clxscore=1015 priorityscore=1501 spamscore=0 phishscore=0 lowpriorityscore=0 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324390556158500 A_PRIV and A_GUEST instructions executed from user mode raise HEX_CAUSE_PRIV_USER_NO_SINSN and HEX_CAUSE_PRIV_USER_NO_GINSN, which aborted qemu-hexagon until the preceding patch. Reviewed-by: Pierrick Bouvier Signed-off-by: Brian Cain --- tests/tcg/hexagon/privileged-insn.c | 79 +++++++++++++++++++++++++++++ tests/tcg/hexagon/Makefile.target | 1 + 2 files changed, 80 insertions(+) create mode 100644 tests/tcg/hexagon/privileged-insn.c diff --git a/tests/tcg/hexagon/privileged-insn.c b/tests/tcg/hexagon/privil= eged-insn.c new file mode 100644 index 00000000000..306d4542ea4 --- /dev/null +++ b/tests/tcg/hexagon/privileged-insn.c @@ -0,0 +1,79 @@ +/* + * Test that privileged and guest-mode instructions raise SIGILL in user m= ode. + * + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include +#include +#include +#include +#include +#include + +static void *resume_pc; + +static void handle_sigill(int sig, siginfo_t *info, void *puc) +{ + ucontext_t *uc =3D (ucontext_t *)puc; + + if (sig !=3D SIGILL) { + _exit(EXIT_FAILURE); + } + + uc->uc_mcontext.r0 =3D SIGILL; + uc->uc_mcontext.pc =3D (unsigned long)resume_pc; +} + +static int test_priv_insn(void) +{ + int sig; + + asm volatile( + "r0 =3D #0\n" + "r1 =3D ##1f\n" + "memw(%[pc]) =3D r1\n" + "stop(r0)\n" + "1:\n" + "%[sig] =3D r0\n" + : [sig] "=3Dr"(sig) + : [pc] "r"(&resume_pc) + : "r0", "r1", "memory"); + + return sig; +} + +static int test_guest_insn(void) +{ + int sig; + + asm volatile( + "r0 =3D #0\n" + "r1 =3D ##1f\n" + "memw(%[pc]) =3D r1\n" + "r0 =3D g0\n" + "1:\n" + "%[sig] =3D r0\n" + : [sig] "=3Dr"(sig) + : [pc] "r"(&resume_pc) + : "r0", "r1", "memory"); + + return sig; +} + +int main() +{ + struct sigaction act; + + memset(&act, 0, sizeof(act)); + act.sa_sigaction =3D handle_sigill; + act.sa_flags =3D SA_SIGINFO; + assert(sigaction(SIGILL, &act, NULL) =3D=3D 0); + + assert(test_priv_insn() =3D=3D SIGILL); + assert(test_guest_insn() =3D=3D SIGILL); + + puts("PASS"); + return EXIT_SUCCESS; +} diff --git a/tests/tcg/hexagon/Makefile.target b/tests/tcg/hexagon/Makefile= .target index 61adf6356e4..641f6bc10e7 100644 --- a/tests/tcg/hexagon/Makefile.target +++ b/tests/tcg/hexagon/Makefile.target @@ -58,6 +58,7 @@ HEX_TESTS +=3D invalid-slots HEX_TESTS +=3D valid-slots HEX_TESTS +=3D invalid-encoding HEX_TESTS +=3D multiple-writes +HEX_TESTS +=3D privileged-insn HEX_TESTS +=3D unaligned_pc HEX_TESTS +=3D unaligned_data =20 --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324269; cv=none; d=zohomail.com; s=zohoarc; b=RJKzR9+lVLRNeJoXFI4V3ZiOqvs39xDVBgCKZFjNKBeSpeVzEfZUaPSqlk8EBdL75OwY+Gcy+OJqjZLdKGEzo292aYGJ9h4BSLIyeiD9cph2LOwZiBsyy5doYcp+LWQUxzp6CCAYdElutOWgn4hm6TLTdjkYPlci7yw4AvErxfQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324269; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=tUb6HZcIOhxOTay/dp40hNaQg6ai7PBaXk7NXeGW/Mw=; b=WLc6s5JFB23AAFCxEW8APlqHDSYUtXSFJzo8UbSjL+N0MxMcTzjvWJ094+4vrtNZHgLavkl6Zux1Pa4DP2EkPxjqNqWD+NCU+hFLvnlsS1dhA0X0NHbODyqge4Rflb1Mtrm+VZyAn7FNtLcDRaMTHosAgPSRmkrHlfVjcy5HOBY= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324269062657.9532020742298; Tue, 1 Sep 2026 21:44:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1con-0000KI-Q6; Wed, 02 Sep 2026 00:43:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coj-0000Is-1x for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:22 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coh-0000ME-0Z for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:20 -0400 Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 681KTI2E2982875 for ; Wed, 2 Sep 2026 04:43:07 GMT Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ge35k25tg-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:43:07 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-398d7e0f3b4so892504a91.3 for ; Tue, 01 Sep 2026 21:43:07 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.43.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:43:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= tUb6HZcIOhxOTay/dp40hNaQg6ai7PBaXk7NXeGW/Mw=; b=k8W0kcgcpyXhOViR 8AcmWkCPRo76M8JvhXl0bRwO6vA8agtY428VXFdVwHIAVTIuDv+wbHq1IKnL9KGc 3hhI8603QtbvwTHxqQL+7lKJTwpEJGSU41RoIaV/trZdMi33bxkVj5pBRbqTHfZY cuBSXD/X7ZmeuvMlOFZtxdpD5w/13v/kH+hP5KMDFNU80KwA1Z/yVTvBMUGUd3cY 50BH9VNRc9Wk/JFBhw9AaN3rYP0azbQob45+KkbAbiOJcirEmMTPiey2rrGuLxJh UUMTIVmOkyanyW09ggUiANcG0WsrGUW5F2RwjHQjUd7ByQInMPNxK32s1OT27Hoa wTyFoA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324187; x=1788928987; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=tUb6HZcIOhxOTay/dp40hNaQg6ai7PBaXk7NXeGW/Mw=; b=ML4MAMXMySmRjcihSBw396Z2B81Ovw8s8+lNWZeXXam2JQWdDhrt7wecq0o3OnU3j/ wlZFrN8SGQIAZD8qEJqLZnaI0VbXOlvzHL6a+QyjC4N4Qgkrr8SQrxg7antXhDS10W8t DN6HFUFN84UdtUhvgq2/0wiSRr0Oshv53T115r+qd0mcmBj/DYKwHDBnbTP/sisC+n2s JfmBen3f3ojA61UDmbxaa8OTIZxO8GZAlKSYaOEilI1KspntqfdtWHhHTYIBVrlorAWf 1vurH5dnDRDAMLm+AjI3ThAOZN/bJKHUKvMMX0PVVzi7IpM1DUo47cNIXm1o8IJ+dEgm HCOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324187; x=1788928987; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=tUb6HZcIOhxOTay/dp40hNaQg6ai7PBaXk7NXeGW/Mw=; b=OCxf9rZMtfOESJ7CaQp+rK22QmwGYz2bhUHsk6hd4IOI37IWpcBmq3ug8HLprkyA7m T6qyDDW29nBBpx11yqDc+OX8JDmykNADD57vrLqJO9JnhpZfT37yNAXLtVmooXQSf7+b l/2LeWBNAJICClU5pri7+WXpyIwzLC8ytjooz/oZlBeChBYFFy5hd/WcCo3fC1ZFMjz0 a5wbLzzZ+Z9cIGDzqJvGOZEoWOuDXmS9YzZ1KAYb2t9r9xDlCTGxU7zy9VAbgoBXn+9P kOsCans11bZxHix6Aw+j9pqVh+WqpsCDOzxGmKWTCXu4BTRkByrs292T77uDkQf6BNjq K/kw== X-Gm-Message-State: AFuF++kISjB6t/Z3/m3ajsSN02Q4lArqLL0x6mk10bzOcW5qb7j7Zyc0 Qi7gphJa/Fm+R9k5rCl0TYZYoqkMIfZQdZm/qKncC48+W1dKK6sWPCiQPZ9dxBxdY6qZTc3s/7s XeiOpWu9z5q53z7s1yeGFkHR+kNdejm9B1DQeOpUe3G0p1l2Tn8ji/P7qP5+DKvaJsg== X-Gm-Gg: AYBFou2YfAnubLvmrby1InE4nDB9O3YZAaZ8c6erV0Khd+buyaa317TqPj5Cd324Qc6 i90G6FXA7dBs7jFiWLM/WPE72XpUrT86duHr21feLG9QxnD52e8GuHW3mTUFLejoMQVtwKUKgXj CWQWONuZ5c4WUcAGpeKm1asuP7eJVu5Cev4Uu4p9YmSomQ3eOoZ7rd6uT6q9BLvsn/Pa0Yh2btI qcGlqKq3zNaDpA1iRw86PSsVO6WgXbS+5Pbg9wfAwPBg1eNUfH0z2cnq+n5wm0+hPAODCP5fjLY upgPJBjzWb/XT7zOX/gVcfvpjwd/kdoas5jgl8ovzFHYBdaFddb4s5Xi2hXg3IohqDJhpizbuKw 1T4yH1ZJ60VuxvVMGWl6gvPBt46YUdBaDssG1paAat7BriEzr X-Received: by 2002:a17:90b:4c05:b0:398:d93a:b343 with SMTP id 98e67ed59e1d1-39aedebf901mr3215613a91.3.1788324187012; Tue, 01 Sep 2026 21:43:07 -0700 (PDT) X-Received: by 2002:a17:90b:4c05:b0:398:d93a:b343 with SMTP id 98e67ed59e1d1-39aedebf901mr3215568a91.3.1788324186580; Tue, 01 Sep 2026 21:43:06 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Sid Manning , Pierrick Bouvier Subject: [PULL 16/28] hw/intc: clear pending bit on l2vic de-assertion Date: Tue, 1 Sep 2026 21:42:19 -0700 Message-Id: <20260902044231.843004-17-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfXw8uMuU+C+8LS VRcvzdDor9CFMiFkQoGYH1AePLZ1wzsfwL02othB1yaXVNoK4gFI5MMlzb1DE9A10Pg/1FPylvx iUP5qmBtrP+KkggnFfD1pTAIumU+NP96bCF8XgYZojBWlsmCfT3Jbgz6fP5PQVUWcbcP8TtuzmB iem1zfNXPFBDBRAeCVfch5RGNwFt2qFMbZG6bdx+fsRMtBXmPXHrj3B3UtWWNxdSKGyYbY3rtSk /orppd57OskjT93kDjOrtTEHzoE3QZce0B4vzk0Hx3+r5PLIHY/RHlS6u+K6RpaTirIGkNtSsfM IThucH4cbtd3q220BBmtlxj2AXWls42E+bcvm12elbZ1Hrw6Cw87v1WchRw4WcVHOG6OOwdPfs5 5IbcElO+13nu6lpUW4Gt4YwS25iQ3Cf3h3yrKAdFF/Jif9fmx6wC5MGLJRvUD8sFmvEEvmHnD9C PZZxO88QEIbxs6DTJ7g== X-Proofpoint-GUID: M_IaTaXL1YiIzDFpbf0eptmUchyY1Bn7 X-Proofpoint-ORIG-GUID: M_IaTaXL1YiIzDFpbf0eptmUchyY1Bn7 X-Authority-Analysis: v=2.4 cv=VLrtWdPX c=1 sm=1 tr=0 ts=6a97a95b cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=Z8PlLslTYKWvlVeuNugA:9 a=QEXdDO2ut3YA:10 a=rl5im9kqc5Lf4LNbBjHf:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfXz6IoKxEIoFnh qfpUBs4B2KB1sPHJjpzj/h2NedrqCGGd3mgcSPv+WEU8Snx2e5YrY5fM6cSCF8nhDstKbosXOZo 7RNA60pVJAW6QNIewV6tXH2chmqmr2A= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 lowpriorityscore=0 clxscore=1015 bulkscore=0 malwarescore=0 adultscore=0 priorityscore=1501 phishscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324270079158500 From: Sid Manning l2vic_set_irq() clears a level-triggered source's pending bit on de-assertion, so a source that drops before it is latched into int_status is not spuriously re-delivered on the next ciad. Edge-triggered sources (int_type set) keep the pulse semantics they already have via SOFT_INT/set_irq(level=3D1). Reviewed-by: Pierrick Bouvier Signed-off-by: Brian Cain --- hw/intc/hex-l2vic.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/intc/hex-l2vic.c b/hw/intc/hex-l2vic.c index f07ec850d49..a986f0bdf35 100644 --- a/hw/intc/hex-l2vic.c +++ b/hw/intc/hex-l2vic.c @@ -299,6 +299,8 @@ static void l2vic_set_irq(void *opaque, int irq, int le= vel) =20 if (level) { set_bit32(irq, s->int_pending); + } else if (!test_bit32(irq, s->int_type)) { + clear_bit32(irq, s->int_pending); } l2vic_update(s, irq); } --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324243; cv=none; d=zohomail.com; s=zohoarc; b=G6fnFjbjLiI/Xl+nkdOnUoBCWM3UAqyNj25hu4KpLh1Wh/5qagF1INwZnmoYQO5d8n9MbbQcuw2Wzf3kvSkr7BupAtnZbWVQvjfshI04nG8ONT6VZUF/Dipf1oz6Z/OtbLDtWc4d2k4nClVAEfQnxcyfXFlM+xCrDbe2PL3Z54Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324243; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=qewLIFfOi6lHQJ/9/MZcPmzrBcWMeQOFjUtVSbqXWyM=; b=LaygxXFdcteYNwItcqhuNURsEbq3KCNaKT2jzgAzvcugPvl/tCjlzPqtTb/pc4k/7Wr/+KlAvz0W/HhxMy/c6n0GknLM7TArZOntMKoo4jcwDoMt2O8K2VC8GWJDD07M3Dota903N2VVgnmO5x3P/vHAFW3X03UmchZ1vlMTsZM= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324243157218.34811373759783; Tue, 1 Sep 2026 21:44:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1coo-0000Ko-Gz; Wed, 02 Sep 2026 00:43:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1col-0000Je-Ig for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:23 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coj-0000Me-Us for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:23 -0400 Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 681KTI2F2982875 for ; Wed, 2 Sep 2026 04:43:10 GMT Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ge35k25tk-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:43:09 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-398d292eac1so1241274a91.1 for ; Tue, 01 Sep 2026 21:43:09 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.43.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:43:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= qewLIFfOi6lHQJ/9/MZcPmzrBcWMeQOFjUtVSbqXWyM=; b=XsQ33E/Dwj6ukhEU mK4tUtYcqlgQCVRHNR0b8gRI41lc0T3ROsP3GPYeJIyfygEbun09RJID7/Rw2WIU 3qHEBakNM30uE/zumRl6zlY2U7v26VQKXvUfij46knDhxB1MM9oqcu9IP1HlZl67 yMXY1RFXTcSMNg2sY+d/XrwM+i+kKe8wX+ssGhcyizNpdl/bujkGeWyTVTrJqMx3 n9UZCOvN4s8bble8p9AydXJGq5BATbo1X2CnlMaPynDwpbKs8Ti7iSZjIqu276nB tyUgDZ35YDpD8BiNMQbPNiEPbtj9S2sMkcGBbI4xJDymB54f7jFnSR1iSSbVeC4c eDZ5ZQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324189; x=1788928989; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=qewLIFfOi6lHQJ/9/MZcPmzrBcWMeQOFjUtVSbqXWyM=; b=duITfr1HsEfR1xH4NcVX68SSgBnuy3vymaZiYb2q8wxAvRdY2QqebmqEfniZM+3pC7 YE778vtz5shfcLblAjducCRsp5izwCfeSTEy0RqzH7ahTqWMnv4Uzk0NQGL04LjM7x8X jxSpb2twiPTP2TA9oOnUfOF9rfANt1+c77mcM+voeUYoGsbQzLvBtPVwHSeAAQbpQ5e5 HuAmDMuzfOljUV1w5BVBiB6nKxt+tXGFoawlwTb8dlDh49kDizQrvgXEyBuntmCdtSxM p2I5c276kXNdKJ5lODH8reKRDoRgfUHAI5hnXFg2ecTI5KaTwWiywZDkcr5SN7oof3D0 yQhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324189; x=1788928989; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=qewLIFfOi6lHQJ/9/MZcPmzrBcWMeQOFjUtVSbqXWyM=; b=o6K/jccTWO3oBvEXeXkKE/MleP8HW8Um7J1Jb0juY7Oiq2au5ZM97rIiM2q5AMNxGi u1ZFlzNmM7KJZaGRA2suMLCMCZGZp0hIrLgMbS3ryOfo+LJ5AAqCyyHtrcIZYwGoclK4 0Jyawhi6wzjID8+n9+MxyIV+X2kHDx3swcxzklARoBhcoE/zDbnF2s0m1xm6+bawWkXT vYCbBfSGz5id3x5A0vwp9NSO1tCPoU0zBWGupOhVq4Nbdy7QJnb2yNN0vLvpq01jLoBt cZ9dCOnJd9bREdZvB/3StdjVy9LIzR9hNYNtk6umcmNqfXyZxAOdCBQFeJ1Zh92S/ka2 RmQw== X-Gm-Message-State: AFuF++k32e/aH1SWi/RXTnQmlSmOf9slTcyR/3YhIlAblADZnHl7aMJR b6tBoPU7lh2Oc3L7px6uwwyk5fJGFK1UYafUwjrab9XQM+bm3jcSf9Kt+0NxRHIUxTUaiZDPenm qsFDpf39uDkPEUiy/5DcZNrACnW0nRCtka2wjXmN6ocV/AWyfvIxsTVetzzGmADYy8A== X-Gm-Gg: AYBFou0rYKj3oYOCw9UX2WXoyS8SpjgV6wGJWBtk8bT8jp8O8Se+9svujDCA04Dhhkn 2EDvmr59kF2ib/quM8pmutHGRBzb835jAFvXZEpYZQHmQw93WV6NdAdJOjlLGaN7Hf3IXYKZ85C nbIDtVNeyKOXEeY87Tz1f9rNgq4hiMuaU+/9G5uKeY9aeEuWcYPijjhufwCzXWFME0to4sl8HlV QrtSl8Y+q45pOHhau+K/lfesyo2py14DI/zYjocbr/2J3z9Crd8dbpg8wB+BDSYGjILwlDXWf4c CxR09Glj4hMqlX2PcOHJyESjn2bGBB7ktWzyitgW9qPsdWJTo7sCwgBxsjJPjqfKB6Q6Ow0sj2N 44BeBvajd507jNUsK3GgVl+Lc1qOClMGkcIYstwLWORtrgDCo X-Received: by 2002:a17:90b:3fc7:b0:398:9be8:ea69 with SMTP id 98e67ed59e1d1-39aee251837mr3417109a91.22.1788324189224; Tue, 01 Sep 2026 21:43:09 -0700 (PDT) X-Received: by 2002:a17:90b:3fc7:b0:398:9be8:ea69 with SMTP id 98e67ed59e1d1-39aee251837mr3417059a91.22.1788324188770; Tue, 01 Sep 2026 21:43:08 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Pierrick Bouvier Subject: [PULL 17/28] target/hexagon: guard writes to unimplemented guest registers Date: Tue, 1 Sep 2026 21:42:20 -0700 Message-Id: <20260902044231.843004-18-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX4zV9JJqkFGtY fJxMu6Xmn3ibMkf3dR/Ic2BmvsMCrhyMGvUPuNNsE+juEZcqlVcUfm+eaaxKthu+WhWiqm1aMuB VDLIJyUgwlzcHWfxt0TBtzdzuhy3L+xGNV32XINKN4H4IrI/DLzdJptjgynTeIWTALuCH6P5n2C 5oNSW01zfeUDcSTsMlxbkbCInaYn0uBX0GxM4tGK66YUm82VJ7U+M3mKl7oMq9hX+fF2O37by6w t97w6XRQFr8KQ5kSGVZugjp5o8lH9IpAprSCRJdCeK55Ff1UoVL8Y8orA3P8Weql2fD5Q+FGPEl ysX7TMWYkaLw1LWgY0flLlEsjyKwXox6E/H5E6C1xDPxXQL9FkBbVFfzjz2xZiFq5INAtdNIxkq 2Lbb0TJLyW1UFSDrM2sxWLiGdfvMbYbR+rKKfxBkIxt+fUdc9XesOr6JGbo3ZYGcdUFHqGF/dS0 49q//wIzA+l4eQhJG0A== X-Proofpoint-GUID: 5IGkbFj_nPKMkzdWPOtuy7Ffl6-8bJbX X-Proofpoint-ORIG-GUID: 5IGkbFj_nPKMkzdWPOtuy7Ffl6-8bJbX X-Authority-Analysis: v=2.4 cv=VLrtWdPX c=1 sm=1 tr=0 ts=6a97a95d cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=q6_NcmobPIDMa4dJqmQA:9 a=QEXdDO2ut3YA:10 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX6qijWI3ORQVl it2RiTHJ9xAzn0l+jb5RxBQYvaSYWY5nYsn5yX25pQW9TMJu5cj+DQ0Vo1SJsAlR5K/NUG3zSkO tqEpUwNshoonNErBMARkYYMKwKldYUQ= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 lowpriorityscore=0 clxscore=1015 bulkscore=0 malwarescore=0 adultscore=0 priorityscore=1501 phishscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324244008158500 Guest register G4 and above have PMU-ish features that are yet to be implemented. We'll skip these when we encounter this code rather than fault on an assertion. Note that the generated call to greg_writable() has the side-effect of doing a LOG_UNIMP for these register accesses. Reviewed-by: Pierrick Bouvier Signed-off-by: Brian Cain --- target/hexagon/translate.h | 4 +++- target/hexagon/hex_common.py | 18 +++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/target/hexagon/translate.h b/target/hexagon/translate.h index 00de2b0d2ec..d8628383f1d 100644 --- a/target/hexagon/translate.h +++ b/target/hexagon/translate.h @@ -97,7 +97,9 @@ bool is_gather_store_insn(DisasContext *ctx); #ifndef CONFIG_USER_ONLY static inline void ctx_log_greg_write(DisasContext *ctx, int rnum) { - assert(rnum <=3D HEX_GREG_G3); + if (rnum > HEX_GREG_G3) { + return; + } ctx->greg_log[ctx->greg_log_idx] =3D rnum; ctx->greg_log_idx++; } diff --git a/target/hexagon/hex_common.py b/target/hexagon/hex_common.py index e33d43e3ce0..c180c19b092 100755 --- a/target/hexagon/hex_common.py +++ b/target/hexagon/hex_common.py @@ -1097,11 +1097,24 @@ def analyze_write(self, f, tag, regno): """)) =20 class GuestRegister(Register): - pass + def gen_check_impl(self, f, regno): + if self.is_written(): + f.write(code_fmt(f"""\ + if (!greg_writable(insn->regno[{regno}], + {str(self.is_pair()).lower()})) {{ + return; + }} + """)) + else: + f.write(code_fmt(f"""\ + check_greg_impl(insn->regno[{regno}], + {str(self.is_pair()).lower()}); + """)) =20 class GuestDest(GuestRegister, Single, Dest): def decl_tcg(self, f, tag, regno): self.decl_reg_num(f, regno) + self.gen_check_impl(f, regno) f.write(code_fmt(f"""\ TCGv_i32 {self.reg_tcg()} =3D tcg_temp_new_i32(); """)) @@ -1121,6 +1134,7 @@ def decl_reg_num(self, f, regno): """)) def decl_tcg(self, f, tag, regno): self.decl_reg_num(f, regno) + self.gen_check_impl(f, regno) f.write(code_fmt(f"""\ TCGv_i32 {self.reg_tcg()} =3D tcg_temp_new_i32(); gen_read_greg({self.reg_tcg()}, {self.reg_num}); @@ -1131,6 +1145,7 @@ def analyze_read(self, f, regno): class GuestPairDest(GuestRegister, Pair, Dest): def decl_tcg(self, f, tag, regno): self.decl_reg_num(f, regno) + self.gen_check_impl(f, regno) f.write(code_fmt(f"""\ TCGv_i64 {self.reg_tcg()} =3D tcg_temp_new_i64(); """)) @@ -1150,6 +1165,7 @@ def decl_reg_num(self, f, regno): """)) def decl_tcg(self, f, tag, regno): self.decl_reg_num(f, regno) + self.gen_check_impl(f, regno) f.write(code_fmt(f"""\ TCGv_i64 {self.reg_tcg()} =3D tcg_temp_new_i64(); gen_read_greg_pair({self.reg_tcg()}, {self.reg_num}); --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324267; cv=none; d=zohomail.com; s=zohoarc; b=mqgscLrvtlD85czm3tu2FrkS/nbXuOEoqYydvCGxW7UUw8KzCHieUpynmFPmtC3wZPvg3YWWPqpoSr9aPyRXCbGJX9+NK+OeqB3soBDPmVaq1WM20U02YAhoa3qxV0XVH9dwsu3tyDZ1IKKfLG0VksRGmLXwsrD1e207+TbQM3g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324267; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=kYrgAC0z2GRpON4Nk4P3dMDIJH7F2ulKL/BFNIuNltY=; b=MdTPoMOATksHR5mzHv44CJWIQFONwwBOkgRijlEsYg0uTMUJ079BPjV/mc6Hu/OQEXIKV45rvqErddigVxdhby0QYFjXOVz395hFNZ3KcK48L9w685eIPL2WExUSaSVevOBbbEJH78NmxZDC0ecSCBVfkRUN24+wFVNJrtcE5wU= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324267484827.5980697907646; Tue, 1 Sep 2026 21:44:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1cop-0000Kz-6I; Wed, 02 Sep 2026 00:43:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1con-0000K2-2a for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:25 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1col-0000Mv-Cx for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:24 -0400 Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 681KTGRY2468846 for ; Wed, 2 Sep 2026 04:43:11 GMT Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ge39cj397-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:43:11 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-381250979d5so808860a91.0 for ; Tue, 01 Sep 2026 21:43:11 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.43.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:43:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= kYrgAC0z2GRpON4Nk4P3dMDIJH7F2ulKL/BFNIuNltY=; b=ciHvri5/rijGDkBs 75jeVtMPHdhf3r5n9zyw6hc5juGANcc2jGypJ12zlYOcmIapopD/UHYBSL0NvMK7 MXrPLotHShx/VcoFVB3yUt6D6Dxvpol2XRCIi2yUcP8uJ2PLNJgUgB7yWifY9+RI afIsQQP45JOy9vma1U0VTjuvIkORVxGq0jnaFI1BmI0llT0zIty8pKQF0s274kuO vyqvk+MA3UQ7oiTgIOO/GHGyZd72Ezj46BWcM+yHozTBJ1XmtGI2LqbnJqQgozFk n7VhuBQgWVHA9Er1bbmrvzGtRrEM+BIBKixkaqXNcxqHNxzlJ7vM9+RRfgsgk7o4 f2Z2CA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324191; x=1788928991; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=kYrgAC0z2GRpON4Nk4P3dMDIJH7F2ulKL/BFNIuNltY=; b=Fgv5CvttETxU2yy5Ce4CUogXp+upf12LNIzUA6RY+V/6PqJpRs/Z0aSe5BrXNpeDcq GDKKQ9dt2QKKUGK7a6Kf3i96yr3XDgn80NYG8ABkeNj5g5yivq7YbsvQpEg6jJ3XUSNB eagRHbdjEmgdh0xFY75OMOik6NXm203MiaHRt0FECgeARRXFl/QopYofyw+ysAYQywHI LGKysMGF8epxNuJB9nnxOq2sgmp50x3ooz5lFrrThq2z+qDb0ibK6ZPWf82C2vcN5mFi 2YUBJFDhsUHEoIv9Go81c4LpX6NN7bl6o90sKsANIQofv66z/S5OS0RfsQTHwPCPrgcd V1Ig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324191; x=1788928991; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=kYrgAC0z2GRpON4Nk4P3dMDIJH7F2ulKL/BFNIuNltY=; b=siatoDw3ghs/E52vKwQ5ePfZsc+3ndQoebRXCBwXFn5BoJX+aHrmA7YF17L5tx4QRE ehluR8e7udyzhkDG9AB1bo4wjuyR3bq92Sk1dV0JGO4lzqCvDIcShA5YBohNHc0tbs3T 38f2c0omXXwG0WPTUF+MCsVgV3zK2GR4cJkQYP9tQauT9hOXi7z4AD8PauRzkwVil6H4 Tv4tAdmm2xTQ/awlTYXd2ArBWCVCSH9qk1XfsJFPejsPhe3IkwtV1TiCEhpDeZ+WwlXP uvVc0rVnTmwZNN65pma0F/BNn9GKelD8qPJhd5yl8miZT2xUuqSPzYvoO1qG2gkiIAkO Jetw== X-Gm-Message-State: AFuF++k3h2M9trC9yM/ANxPQ1BVOEKy2hlr9k7TxGkf+sr6dZd6l7aQ7 kaBqDzgvaceHCxUWs50Su+hBBT/t4WwV2Sqs/+wCfy285qqCruayZRXNAtxjSWmyKe+LHUMRhSD w6p+zRhrvLKK2fJNzyWq8+9JYC36RPS29ketlI7j1ic9Lru1wlgRquq/8BE86ILm2uw== X-Gm-Gg: AYBFou1b+l2HhJ8pNILxAwi4TtBkfcs6B/ZDBZ5Jy+nlmbo3vJ3185KAhyvDNOAI7Y3 dXKQgC/IWdYaPqF7iEBd5SdWOIRv1l/kFN2IaHuNTaW/LAH0LbLCAhZzp9UlLadHzUVZ9JuIwmJ GtmjjX/fxwMJ6cQAPScg8VL9Bq9e0JbCmoMchnAuGkrC40MPceUckEq4R6aqyhARqQiedyaBvkG k0vKJdGq1fGH8+CZPW0MBsTr8Xmb0gYnU9naDBUO3zXHQodAuumKQrOAIynhf4aB/Dnmr4lOIc1 BE4hdtW487Phhyxy8AefQ09UMD66IwfxxAc6dDd9SnyGPgG9++k5zKHA3L+kHP9T0lPLDebpE7E zUe+cIt7wKS2M5AzyqY8BCKyZZGN2d3fl1pfrPe8HFpnByqGU X-Received: by 2002:a17:90b:2552:b0:38e:c232:9d3f with SMTP id 98e67ed59e1d1-39aedec7bbbmr3284797a91.5.1788324190693; Tue, 01 Sep 2026 21:43:10 -0700 (PDT) X-Received: by 2002:a17:90b:2552:b0:38e:c232:9d3f with SMTP id 98e67ed59e1d1-39aedec7bbbmr3284746a91.5.1788324190169; Tue, 01 Sep 2026 21:43:10 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Pierrick Bouvier Subject: [PULL 18/28] target/hexagon: take BQL when reading the system pcycle count Date: Tue, 1 Sep 2026 21:42:21 -0700 Message-Id: <20260902044231.843004-19-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=T968ifKQ c=1 sm=1 tr=0 ts=6a97a95f cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=tKA3sQWDS_42iA0j-SoA:9 a=QEXdDO2ut3YA:10 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-ORIG-GUID: Gku368bjyGDkiFMdphIOMC-s1IkfS2Dc X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX3mvPZq2Suj+F lMBMAYmxoGftgDyYeyTweoXTnT/FcqI5zKGrmHqLtug6o5NZMP8av8tWMtv2nlx4oMV92buBKZz T3MFQVFuVk2BJZ36xsOdUCX3PbfC4vk= X-Proofpoint-GUID: Gku368bjyGDkiFMdphIOMC-s1IkfS2Dc X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX/y/zW2iTn9MV nH6SMIQTTC/5ILd5ITZPmrWAaBMNix44u35sEHA3X1B71Cp6t4MaNRXT9Fyk5XQ0jsuHxilsc+1 ony6lyGTAcZ8jjw7VconckQVitLFxuDXJd5X3zj+NM/GUyEaGTXv+cpela7zYc8UZ5VOee2zj2w KzDslKcQGNbOHYPZs49X0io9f4z/CGEu0PI8B5xRU3MTG5UxTPFZWlgOuVgjZfs4G8qy4BEq5gr g3tmXCcQiMkapKWWMk7dHa2BhrHDJaAoCwIId118Z8gwsXpjKfYvR+Z44xKBLYZBjVFbMM2uBML Yi7RVwKKHHBN5c+BD/SYnxQ3lrnZsk3EvOMJIE5XjNnU71QqCm9AWJwF4+XcNhlypaINrBF2oS8 NMxDZs7/b7wsvD11/sjo8u0GJ5Y0de/YEnSrXYZPe/nmr8iv2x0u79ZIHVetTSXVB8uYtYQysKa xlvWzSB20tTr/jcoZtA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 adultscore=0 clxscore=1015 phishscore=0 priorityscore=1501 impostorscore=0 bulkscore=0 spamscore=0 malwarescore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324268725154100 hexagon_get_sys_pcycle_count() iterates all CPUs, so take the BQL with BQL_LOCK_GUARD() instead of asserting the caller already holds it. Convert the matching setters the same way, which keeps the locking contract symmetric and makes the read-modify-write in the _low/_high setters atomic. BQL_LOCK_GUARD() is a no-op when the lock is already held, so the nested guards on the guest-register read path cost nothing. Reviewed-by: Pierrick Bouvier Signed-off-by: Brian Cain --- target/hexagon/cpu_helper.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/target/hexagon/cpu_helper.c b/target/hexagon/cpu_helper.c index fab9a9d7b12..17d6b4eb2b4 100644 --- a/target/hexagon/cpu_helper.c +++ b/target/hexagon/cpu_helper.c @@ -136,7 +136,7 @@ uint64_t hexagon_get_sys_pcycle_count(CPUHexagonState *= env) uint64_t total =3D 0; CPUState *cs; =20 - g_assert(bql_locked()); + BQL_LOCK_GUARD(); CPU_FOREACH(cs) { CPUHexagonState *thread_env =3D cpu_env(cs); total +=3D thread_env->t_cycle_count; @@ -154,11 +154,15 @@ uint32_t hexagon_get_sys_pcycle_count_low(CPUHexagonS= tate *env) return (uint32_t)(hexagon_get_sys_pcycle_count(env)); } =20 +/* + * Every function in this family takes the BQL itself, so the guard below + * holds it across the read-modify-write. Nested guards are no-ops. + */ void hexagon_set_sys_pcycle_count_high(CPUHexagonState *env, uint32_t val) { uint64_t old; =20 - g_assert(bql_locked()); + BQL_LOCK_GUARD(); old =3D hexagon_get_sys_pcycle_count(env); old =3D deposit64(old, 32, 32, val); hexagon_set_sys_pcycle_count(env, old); @@ -168,7 +172,7 @@ void hexagon_set_sys_pcycle_count_low(CPUHexagonState *= env, uint32_t val) { uint64_t old; =20 - g_assert(bql_locked()); + BQL_LOCK_GUARD(); old =3D hexagon_get_sys_pcycle_count(env); old =3D deposit64(old, 0, 32, val); hexagon_set_sys_pcycle_count(env, old); @@ -181,7 +185,7 @@ void hexagon_set_sys_pcycle_count(CPUHexagonState *env,= uint64_t val) int num_threads; int64_t delta, per_thread, remainder; =20 - g_assert(bql_locked()); + BQL_LOCK_GUARD(); total =3D hexagon_get_sys_pcycle_count(env); =20 /* Count active threads */ --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324316; cv=none; d=zohomail.com; s=zohoarc; b=DbKo5s1tgVKsGRPIkB6YxOfRAgha2Rj+LqcffOrd8i8rmoGRYZO/u83vVkmLWQm+3yhMR843fQBJjWC1WQIzCzXedkFERG5/plP8IQhopQw1BGP1F9PBLMtQpoI4UniVsfNSjGTRG75ckpxr3uirJe5hG82rHot1e7uzdbGiXdY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324316; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hsVjO+DmhXKJULXtLGCVhQ+MHND5Odh4ZZoRxso5QqU=; b=iK6x2W0QZpQhKgQfAeOAMg8YQwB/qJWK2xV47WTE7wfMew4gMegdpxE6JcZMMzv6vB9CAuPq6bTP+L1KN0XzS+fvqR2SN+ES4h1bgXnisJWp3+MN5nTMhEpZ6qN7Amn5PjzAC3Hho0QlrjnY1MEojHyTVn+q+0lTfVX5aEAKB7I= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324316966471.03567676815703; Tue, 1 Sep 2026 21:45:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1cou-0000dw-U7; Wed, 02 Sep 2026 00:43:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1cot-0000aW-GI for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:31 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1cor-0000Np-Mj for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:31 -0400 Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 681KTBTc3108359 for ; Wed, 2 Sep 2026 04:43:17 GMT Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ge1wpan9f-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:43:17 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-38dbf293831so1530552a91.3 for ; Tue, 01 Sep 2026 21:43:16 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.43.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:43:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= hsVjO+DmhXKJULXtLGCVhQ+MHND5Odh4ZZoRxso5QqU=; b=lhTTBiSnWrWO9Enw IVku7o5pYgRq+dvhl6nlQyvILwXuv027xnIy4S6IYHNfSgKsOqqkvKJrCnDx0TSg KrCgJLiWG3Xlsx3NgohfAtPZVuGIbeESeuYmiYpAEnm06NfRm3pumcEP7TE3FS+T 9optHvCUKkx2VWGZAEJWzwBQG4ENf9gW8lA+8q9Ue0mMvv+Z7rEUXp0LHDeZD2w4 oIKgbiuUvs+cem05XSHNpBOKlzaHmsggDe7kiltOaSs5Cem48AXHedWHT85VJOWM PWJSuteEsLNWijOeMXYL3obYzS3dzX+mzr3Q8nX42zbVhzp8aqQWpYhtugp1YzT8 xvuX6w== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324196; x=1788928996; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=hsVjO+DmhXKJULXtLGCVhQ+MHND5Odh4ZZoRxso5QqU=; b=cIFLjpq9zsIbldNHQiN0JbV/D7UeONBgjiy3qGoI8yulGny0jjvDZxiE4dENEfKoI+ SGCmIE9Zswn13AFaaZq7y7cWs2AALZG9cE1EEAPdD3YDGXYzPgTQ3qrnCLVcuMZtmkKb +RROVOgIczRsLgED6n86g9yhCi4ejzyapezTvWZeIc0ojtcTz7zsEZ6CnQPbSVsA+9Pg 5hYvVR0BWCjfmfpevtUmR/m6TzOlQCdeumEpaZId+/PrXy3MDHyndiNpcnKk/WXLdeho B+XW9U5DG3dcH2XE4E8jZkZYxC0b/cNhhnk2oktkUI9MByw8qAl/DOdy2D5NJmEwYNpi T9Kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324196; x=1788928996; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=hsVjO+DmhXKJULXtLGCVhQ+MHND5Odh4ZZoRxso5QqU=; b=lt3mKDx1ldy4H+brPLH/ar2///dE4jRhPlx2PAQ6ljl3kki76OdC0TKXj/H7Xwez9S ceVim6VkL88duFcMil2igQqrYAnQjlrZkEFfLiCIIbJ+MRKcc8nXSf1L8z8SgrEA68Eo 6Q8j5PSqgJ928J8Ni3V9/t0NPvrqBVUxt9FggUErBKrBVwy3r9qzCNIYRwWE/Bfs/fvY aiJ8JUc2JfUoDbbWgi03623KiSWNxEu8HrdJji67alV/eefQeSTSJm3C3hBVupJMOmcR ISIlgp5IWbfTruzQJVCE6Fp/5yixh4XN1BSXw7T8zHSB5AnUgzq/4tXa3+AfG74YRBqf qTqQ== X-Gm-Message-State: AFuF++mrIatq+TSB6InrIXnauUg/Q8+gAQbQpaUox70DghRxHGR8YrTx YO3ysfoc/DO5d/NsYrBR5aak/gWucEGYasco6ulFK2gV+mWleZ7pjoCVurpBppvAZcRYWEiK4cG mQOB7d1Kqi6B72TJMKXbIHj2MAvDJyNZSOPCy7hh1BLGBR9HQlvwBHA16nzYOFiCg+Q== X-Gm-Gg: AYBFou0+6Zwb9OD08eUrcz71nYRPHe9RMf5dwl7a/YHHp+Pwho6vgA5D0w3xyiFKJtb yqAshrIkOoWQE5jxNWi2JDvTBFNSL/itVHgk8f71boP4CgBmPcPRq6Ztth/lQzvpOgLH3jtFcB5 pPO73a3Lt4Xb+Y+aqo2Q9dEGrYUJFFC8PGeiUVTumHzRwTnfi6M8894TxUH1o0NjsktpxBvWfzk 6Fv7zj7w/dqE3tV1pKk9IfqiGkbkEU0SaR1xvJv9XyFfbBRkdam3YtVXgLWfABshDFElf6gCIzn 9dOai1FKqNNiNdlkYQIMbgwqDfNZOPkPXHcY5Mhwyfo2j9S8W5qJgA/RnSG7uqyR25fCJkJkg2q BfA9uRY4uisYozzTz2KOQJd/U0OAB72cWIK0FTY89w0eFZSWy X-Received: by 2002:a17:90b:3d89:b0:398:deed:6e1d with SMTP id 98e67ed59e1d1-39aedf89bc9mr3282475a91.5.1788324196400; Tue, 01 Sep 2026 21:43:16 -0700 (PDT) X-Received: by 2002:a17:90b:3d89:b0:398:deed:6e1d with SMTP id 98e67ed59e1d1-39aedf89bc9mr3281832a91.5.1788324191275; Tue, 01 Sep 2026 21:43:11 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Pierrick Bouvier Subject: [PULL 19/28] target/hexagon: gate GPCYCLE guest register reads on SSR:CE Date: Tue, 1 Sep 2026 21:42:22 -0700 Message-Id: <20260902044231.843004-20-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=F8JnsKhN c=1 sm=1 tr=0 ts=6a97a965 cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=xDRi0JrXNLxaQ6-XZMQA:9 a=QEXdDO2ut3YA:10 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-GUID: Wgjqc_rsJdi6Xb-NJ0WuSq4yUeZ1vH4u X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX3HMuEuTnwTpU T2b5F3VnPB7tqmm3sOIRcHjcq0QdCBs7GZdbEDVFdqqsMvc+gRH6R5ieOjdXv1MTF0tdqBR1qC9 WZhhX5rfSvLpiOTgwlCqYlzV1rXxK6U= X-Proofpoint-ORIG-GUID: Wgjqc_rsJdi6Xb-NJ0WuSq4yUeZ1vH4u X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX7/P6kPo0yXpx nJA8AoncmYMnAB+FcF/3igzMny7FPW7HkN94kFHajo2h+3PTLwqNgYjOjU8zEsPTSlZJvfLTKWR 4k3bgRaiaobupgFwsTatw6gIy5pCgYu3ojJUxGFLsZUs7fLKIaB52dSe9XK/Vm/QQeF0EHmYvY+ OWSxo8OR4llVhl831QYMyAUSDEPxdbvOefHTd1skw2CGDmE7PkxH6N0RrP1Gl2BFuOrCaePjKJ4 bwOjieAyuTAnns3gLp+J+bQ2QXgyuX42bGljhB3hu3CpcYaRjfV2167KTn79WMwFon4plKLgCzX 9lLGtKlbstbhqkaeVcnRKTgD/j+0rcFV/pO14BK/Y5/Xb9OJT/2VIMMxzet0/gejE7UtiRG96fr ZunyVFXAx3inguVt3LfUIj28AY9IsabLAlDxei3m2jf7z7ZaOUbKIqw+R8hkSihENxMmgl1XWx+ OspYG9fHYPH03X2bnag== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 priorityscore=1501 spamscore=0 lowpriorityscore=0 impostorscore=0 adultscore=0 malwarescore=0 suspectscore=0 clxscore=1015 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324318222158500 GPCYCLELO/GPCYCLEHI read as zero unless the cycle counter is enabled (SSR:CE), matching the hardware. Reviewed-by: Pierrick Bouvier Signed-off-by: Brian Cain --- target/hexagon/cpu.c | 7 +++++-- target/hexagon/op_helper.c | 9 ++------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index 96d888149cc..e4138df9472 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -809,14 +809,17 @@ static void hexagon_cpu_class_init(ObjectClass *c, co= nst void *data) #ifndef CONFIG_USER_ONLY uint32_t hexagon_greg_read(CPUHexagonState *env, uint32_t reg) { + uint32_t ssr =3D env->t_sreg[HEX_SREG_SSR]; + int ssr_ce =3D GET_SSR_FIELD(SSR_CE, ssr); + if (reg <=3D HEX_GREG_G3) { return env->greg[reg]; } switch (reg) { case HEX_GREG_GPCYCLELO: - return hexagon_get_sys_pcycle_count_low(env); + return ssr_ce ? hexagon_get_sys_pcycle_count_low(env) : 0; case HEX_GREG_GPCYCLEHI: - return hexagon_get_sys_pcycle_count_high(env); + return ssr_ce ? hexagon_get_sys_pcycle_count_high(env) : 0; default: qemu_log_mask(LOG_UNIMP, "reading greg %" PRId32 " not yet supported.\n", reg); diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index 23894ff3d28..2cea1927263 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -1912,13 +1912,8 @@ uint64_t HELPER(greg_read_pair)(CPUHexagonState *env= , uint32_t reg) return (uint64_t)(env->greg[reg]) | (((uint64_t)(env->greg[reg + 1])) << 32); } - switch (reg) { - case HEX_GREG_GPCYCLELO: - return hexagon_get_sys_pcycle_count(env); - default: - return (uint64_t)hexagon_greg_read(env, reg) | - ((uint64_t)(hexagon_greg_read(env, reg + 1)) << 32); - } + return (uint64_t)hexagon_greg_read(env, reg) | + ((uint64_t)(hexagon_greg_read(env, reg + 1)) << 32); } =20 /* --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324234; cv=none; d=zohomail.com; s=zohoarc; b=ISkjlWuCPepx65eKBnos3bLJq7GUFuYaPTZ+cR7yIrSmnqUgpFzFrDKna8xcCG8xelllMGHI8zPhepR+1RKKwZFhRpdLCKMz5KF/caxedyojDx8IfTPA3F71C+8qalCq+mDsLbKJ3Nt7wDIDQuz0I23uxaNHxwc62kTLs+wWJTA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324234; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=OLqX3lslZDdZkMrvqr4J8bRoj7IT+A5jFpR2gBcu18c=; b=STgJHf72O6zksfwyW9KGyafbfcFghaG0sQU+/vb6fTib/nJuAr44Y9GddJnGDEX/S0fqxPrq79q5vy415Nr4SC4r9N3NAUwuXBCWaKYPd3ntjWK+sLk89ckmIm3sG3ivFU1UC6kZvTcYwTxx1VNOGfMHeozIT3h1jCVcFk5WavU= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324234114471.62457410279796; Tue, 1 Sep 2026 21:43:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1coq-0000M3-Up; Wed, 02 Sep 2026 00:43:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1cop-0000LI-Nl for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:27 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1con-0000N8-Sx for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:27 -0400 Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6823JMi01025979 for ; Wed, 2 Sep 2026 04:43:14 GMT Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gebsx08cb-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:43:13 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2ce7dfd33ffso8223385ad.0 for ; Tue, 01 Sep 2026 21:43:13 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.43.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:43:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= OLqX3lslZDdZkMrvqr4J8bRoj7IT+A5jFpR2gBcu18c=; b=D4IwyVUfEjOv/ufP vYwz1u0kA09roq8HPmZgxWfnOlpSYCHgDjNBdxJLmbuhzQDf7BQnOaf+pD+3WVla LgjDE+cfFhro4mpXOn9GJofWiCRYK6nL3ogxr5TU4OAyjNo+fgSiF0vJ36WhdbHa HzM3cqmwK5BCJy/rSeIXvsuBehqNVt5HLoff9PJfUEJ5wJnMoyvlWYdr/skK3f/P +jNoLOdTG1Wrpzh8Hh0DGbuho7b47L3EiD3gJgBjXAKi0zvVAbj8E3praVie+Jml y+m/D/w32La6td0V+baXNbImFbf/YNYaJ1UihtwH54FqJqdLeY/bT/GHO6kRnZMm t3H55Q== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324193; x=1788928993; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=OLqX3lslZDdZkMrvqr4J8bRoj7IT+A5jFpR2gBcu18c=; b=XLV1eragJjvpK7jSRyrQm1HJAnLoSbjygM8emt2e92+t3Nf/DGp9y4jED67Tg9KeMh aaPx0/RfUqqyfKVwmd2lQn3sjhB0ICcU17IhuBwVEwVG1r+kpolk0lTZF0mn182f3HJ5 cV00b74f9NSs9hTxl9cL5GddJbvdhFlmZNqSxKsvddLrO6Y2e2A7VkAZhcPhv2yyi9uD gMA420vOL4fRidihMXYJUTtj/EcUvsYvO7vh5SA0BIRXI5ywZ/pKAno8XwK5REMlC7dx qN560LQryEl93PTXe0Qoj8Z0YkpmHxHl/ZAmSjoN0NCbkj9kxAQUwZfJyRfc8PevaZHF 2DkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324193; x=1788928993; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=OLqX3lslZDdZkMrvqr4J8bRoj7IT+A5jFpR2gBcu18c=; b=a6NaJr4STakt3L0wSt/VcK5IIa2hM0C0R+531WbqkS5HENmxCuObMZ/AWz4max2Jud Nq3oscrkAxJDF7uZZRB007OOLq+Lw86dbayyMoJYkFSoHC7csqsrWlbUm9imzF2kgL3y YeLd/JfuR3QxKs7nvXusKtkpNOS4LNQLXh9iDXa1nGH7c6a9ytO2LRYjcQxtjd62KMHl xHI4NVPoUNs8d1gSla6Cq5fWDJI6MQsEHcPxsj/+tY/8I+ZwcP2Gs5AwSSfZ8eW8dVDK EXUSESqjm5+f7Ro9uAD5+IRXohWbtMaWNGeAjX5G7Z0tJUpPAB0mefji563s22VmBjMQ 7r6Q== X-Gm-Message-State: AFuF++nVBqPm/EXrdADmXkN+wy3nC1NqXhTrQVhK+9dlEae1HkKhs3zh Ku8DFBVWT0tcx9paesh+rwxyuJwk7mcBtvDbnA/rY2vt+IKMcn4ON0KF7k4dwFyzjSIb/nPWeVC i7cW0GcuRyYRPCZC5JycoFR5A0FfsHxK9/9puFkSGkaDDFXWkKuBRNYZSNZam/A6jYg== X-Gm-Gg: AYBFou06l/9wLk17LBozFn5m11pmcWfLzn5Mj65dxb2MqErPy0Y1c/H/LwEGIVJu6nK ROP8tMGEudzyAAPKxyfrNRhE6F99lIukT5hhLdvq7CnjmFKXiArUse6U3xsfVqeYIDNJASOYg9y 4pB3MCJqTnYfzcTd0tpj+URoIUoaJGrAigZTjTHECbTiSc7JujFCdWTu1l3ms7tm93bjC2KOzc6 RxqRqJrkDpGAb7i5zGW0Xg2+9P4ybt9xmqXwwFnnCcVwX6tHuyxzb0eBuDNX4BAynCqYlFBijye l+9uZh/I3DkG0lr6ZMeLSf9ummAQa39DpPBYKxZ3xG+/e+rktcI6DNTFDOooXOdQhfQUT3J+eqj FLUztxm2J/2Sukb8YK0GVJxW6vzPHEA1eLT29RVKgqzhHC051 X-Received: by 2002:a17:903:3c66:b0:2d8:d4cc:be64 with SMTP id d9443c01a7336-2daec73208cmr35406945ad.17.1788324193111; Tue, 01 Sep 2026 21:43:13 -0700 (PDT) X-Received: by 2002:a17:903:3c66:b0:2d8:d4cc:be64 with SMTP id d9443c01a7336-2daec73208cmr35406545ad.17.1788324192602; Tue, 01 Sep 2026 21:43:12 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Pierrick Bouvier Subject: [PULL 20/28] target/hexagon: read UTIMERLO/UTIMERHI from the global timer Date: Tue, 1 Sep 2026 21:42:23 -0700 Message-Id: <20260902044231.843004-21-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: dkuUrFQ1EOw2nRgOl1IqO2AJylkaDOVV X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfXwXq6goiToXhi NLVuRmvqCjY0M3g23I7G2Uru5zohuDNL/9jP38QEE2mYT40pn4vnjD+5ewrMbzXwrp9INbcMQYG VqL7IqrPb6gvUAcchBzP9zBWGyKgvOKEJ6QQAnTRbBEuY+wCHTT1hrV01yCugc10Q4pgU7EqXQB AWMN7OmbQRq279yNnJcOl6xja9dgAD2N72Xx0o6KyjKUtTYCYWR5WoDeGLMrWi7+rpQ2amjTsSm s32OU4Kn4+PxRAkHGdhiX1+bUWd2iG40hPkdTSyHBUuL6VOAM6BlNQc7/IeBB82p9qyxdcrPyWS euR3T4QaoSM1v0cRUJHl7KpWrcbQSviVrDhPQtzYXqwg/6VX1rX13GrFyXmCBJAKb/rVtXjqxy1 t1UFb5wQyokmD2P7CvcTqm58NAuXQOKBD673WZbaI23ua8Y+BSEjSY0fh/7gwJx/YyI0HmLryeB 53H8YNWv4UZTUbngHQA== X-Proofpoint-GUID: dkuUrFQ1EOw2nRgOl1IqO2AJylkaDOVV X-Authority-Analysis: v=2.4 cv=AufeGu9P c=1 sm=1 tr=0 ts=6a97a961 cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=q_fxtLUCAn1J2UUIEkUA:9 a=QEXdDO2ut3YA:10 a=1OuFwYUASf3TG4hYMiVC:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX94VbGJCixwhd y4evdpknRXYW8qFgLG5V1u/7qRPOcItrlm1OqSaK1qRIMDXQmffGhlpN4CDtIT4549UbJ2YRGxq FFB9n/8U4JxNes0JnRzOlSfOms9tZgQ= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 bulkscore=0 lowpriorityscore=0 impostorscore=0 phishscore=0 spamscore=0 adultscore=0 suspectscore=0 priorityscore=1501 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324236110154100 In system mode, route accesses to the qtimer-backed global TIMERLO/TIMERHI so guest reads see a live, monotonically increasing timer. In user mode we derive it from the host monotonic clock. Reviewed-by: Pierrick Bouvier Signed-off-by: Brian Cain --- target/hexagon/helper.h | 4 ++++ target/hexagon/genptr.c | 29 +++++++++++++++++++++++++++++ target/hexagon/op_helper.c | 19 +++++++++++++++++++ tests/tcg/hexagon/reg_mut.c | 11 ++++++++--- 4 files changed, 60 insertions(+), 3 deletions(-) diff --git a/target/hexagon/helper.h b/target/hexagon/helper.h index 78dc28ca9e5..e39afd623b5 100644 --- a/target/hexagon/helper.h +++ b/target/hexagon/helper.h @@ -113,6 +113,10 @@ DEF_HELPER_FLAGS_4(gvec_sabsdiff_w, TCG_CALL_NO_RWG, v= oid, ptr, ptr, ptr, i32) DEF_HELPER_FLAGS_4(gvec_uabsdiff_b, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, = i32) DEF_HELPER_FLAGS_4(gvec_uabsdiff_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, = i32) =20 +#if defined(CONFIG_USER_ONLY) +DEF_HELPER_FLAGS_0(utimer, TCG_CALL_NO_RWG, i64) +#endif + #if !defined(CONFIG_USER_ONLY) DEF_HELPER_3(raise_stack_overflow, void, env, i32, i32) DEF_HELPER_2(swi, void, env, i32) diff --git a/target/hexagon/genptr.c b/target/hexagon/genptr.c index 9330732c99b..1f109d44de8 100644 --- a/target/hexagon/genptr.c +++ b/target/hexagon/genptr.c @@ -411,6 +411,23 @@ static inline void gen_read_ctrl_reg(DisasContext *ctx= , const int reg_num, } else if (reg_num =3D=3D HEX_REG_QEMU_HVX_CNT) { tcg_gen_addi_tl(dest, hex_gpr[HEX_REG_QEMU_HVX_CNT], ctx->num_hvx_insns); +#ifndef CONFIG_USER_ONLY + } else if (reg_num =3D=3D HEX_REG_UTIMERLO) { + gen_helper_sreg_read(dest, tcg_env, + tcg_constant_i32(HEX_SREG_TIMERLO)); + } else if (reg_num =3D=3D HEX_REG_UTIMERHI) { + gen_helper_sreg_read(dest, tcg_env, + tcg_constant_i32(HEX_SREG_TIMERHI)); +#else + } else if (reg_num =3D=3D HEX_REG_UTIMERLO) { + TCGv_i64 utimer =3D tcg_temp_new_i64(); + gen_helper_utimer(utimer); + tcg_gen_extrl_i64_i32(dest, utimer); + } else if (reg_num =3D=3D HEX_REG_UTIMERHI) { + TCGv_i64 utimer =3D tcg_temp_new_i64(); + gen_helper_utimer(utimer); + tcg_gen_extrh_i64_i32(dest, utimer); +#endif } else { tcg_gen_mov_tl(dest, hex_gpr[reg_num]); } @@ -439,6 +456,18 @@ static inline void gen_read_ctrl_reg_pair(DisasContext= *ctx, const int reg_num, tcg_gen_addi_tl(hvx_cnt, hex_gpr[HEX_REG_QEMU_HVX_CNT], ctx->num_hvx_insns); tcg_gen_concat_i32_i64(dest, hvx_cnt, hex_gpr[reg_num + 1]); +#ifndef CONFIG_USER_ONLY + } else if (reg_num =3D=3D HEX_REG_UTIMERLO) { + TCGv lo =3D tcg_temp_new(); + TCGv hi =3D tcg_temp_new(); + gen_helper_sreg_read(lo, tcg_env, tcg_constant_i32(HEX_SREG_TIMERL= O)); + gen_helper_sreg_read(hi, tcg_env, tcg_constant_i32(HEX_SREG_TIMERH= I)); + tcg_gen_concat_i32_i64(dest, lo, hi); +#else + } else if (reg_num =3D=3D HEX_REG_UTIMERLO) { + /* One helper call, so the pair is a coherent 64-bit snapshot. */ + gen_helper_utimer(dest); +#endif } else { tcg_gen_concat_i32_i64(dest, hex_gpr[reg_num], diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index 2cea1927263..f9e66acf848 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -37,6 +37,9 @@ #include "cpu_helper.h" #include "tcg/tcg-gvec-desc.h" #include "translate.h" +#ifdef CONFIG_USER_ONLY +#include "qemu/timer.h" +#endif #ifndef CONFIG_USER_ONLY #include "hw/hexagon/hexagon_globalreg.h" #include "hex_mmu.h" @@ -46,6 +49,22 @@ #include "hexswi.h" #endif =20 +#ifdef CONFIG_USER_ONLY +/* + * User mode has no qtimer device backing TIMERLO/TIMERHI, so derive the + * user timer from the host monotonic clock at the qtimer's default 19.2MHz + * tick rate, masked to the qtimer's counter width. + */ +#define HEX_UTIMER_FREQ_HZ 19200000ULL +#define HEX_UTIMER_CNT_MASK 0x00ffffffffffffffULL + +uint64_t HELPER(utimer)(void) +{ + return muldiv64(get_clock(), HEX_UTIMER_FREQ_HZ, NANOSECONDS_PER_SECON= D) & + HEX_UTIMER_CNT_MASK; +} +#endif + #define SF_BIAS 127 #define SF_MANTBITS 23 =20 diff --git a/tests/tcg/hexagon/reg_mut.c b/tests/tcg/hexagon/reg_mut.c index c5a39e55100..9ce18f3ebe5 100644 --- a/tests/tcg/hexagon/reg_mut.c +++ b/tests/tcg/hexagon/reg_mut.c @@ -77,10 +77,10 @@ static inline void write_control_registers(void) check32(result, 0x00000000); =20 WRITE_REG_NOCLOBBER(result, "utimerlo", 0xffffffff); - check32(result, 0x00000000); + check32_ne(result, 0xffffffff); =20 WRITE_REG_NOCLOBBER(result, "utimerhi", 0xffffffff); - check32(result, 0x00000000); + check32_ne(result, 0xffffffff); =20 /* * PC is special. Setting it to these values @@ -106,8 +106,13 @@ static inline void write_control_register_pairs(void) WRITE_REG_NOCLOBBER(result, "c15:14", 0xffffffffffffffff); check64(result, 0x0000000000000000); =20 + /* + * c31:30 is UTIMERHI:UTIMERLO, a read-only free-running counter. The + * write must be discarded; the read-back is whatever the timer says, + * so only check that the written value did not stick. + */ WRITE_REG_NOCLOBBER(result, "c31:30", 0xffffffffffffffff); - check64(result, 0x0000000000000000); + check64_ne(result, 0xffffffffffffffff); =20 WRITE_REG_PAIR_ENCODED(result, "c9:8", (uint64_t) 0x0000000000000000, C9_8_EQ_R1_0); --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324243; cv=none; d=zohomail.com; s=zohoarc; b=EbhXvIJzthBCSFU6dRaCYfjh2NGJTYd2KNBj9AvUAafstt3llsIr92Vr1fdLBvVHP0oDOv1gKbPzkYjkdS/y6Ft9pGq7psi4VGbN2V0k0b3e13QcxBFqTpvdwa3sqlTEuI+ckxt/CCL4yva28FVeAaVcSia6koP8V0q4fgaPjx4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324243; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Mp/5RRXztuVwBrBM5ucpkys171jiW//e92taIfFAMLc=; b=Hn0Q0Uz4mqixI463ImVHsFlJJp9pHAcg1L1pd/pQhCqkHTNzb978Ac/OcoWkPeh/d8r5IPHQgNTixU+okgkYzkL+xOau4n6sSQQfGyF+KgorGrIaY1yMTNmP+UAh2rfg6LsUYZP2wWqY3plRUeif71Vb16jL6fEIBE3STlxLhwc= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324243078432.87644894077914; Tue, 1 Sep 2026 21:44:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1cor-0000T9-W3; Wed, 02 Sep 2026 00:43:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coq-0000LW-Im for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:28 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coo-0000NS-Fv for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:28 -0400 Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 681KTPHr2982984 for ; Wed, 2 Sep 2026 04:43:15 GMT Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ge35k25tw-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:43:15 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-38e54b6556aso950673a91.2 for ; Tue, 01 Sep 2026 21:43:14 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.43.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:43:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= Mp/5RRXztuVwBrBM5ucpkys171jiW//e92taIfFAMLc=; b=lyfI/7Ux7YWvmtcG 0iSZGRH7hlgx+U3t+hjrocGG9OYZd4Tece+FGdqFsrIyQLlMcmHXDEpmPbEtZSBn Vw8yXRyuRgYLdMM5AnDeVmT+paLzqjeLK7mkC9GJ+AUb+9SLUY0OilK1deIqr0NW A6lT/DsI9cByiubwEv9IamQH41xv8s5HhywIDH/GgLU2sp1n5nduRlt0gzge/sUz c2Ko2h0HEcUd2OKb/n48ofa/us3UTCYv0uXYvLwDA0pm9/Q7t4luEeRzg6a3tgxp NPicN5DCs8v2bRZvBBOk9XfkHb/vDI3/BuCj+T3iGUeL1PzwmAJyVKDw4+U55qFD IL7wzA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324194; x=1788928994; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=Mp/5RRXztuVwBrBM5ucpkys171jiW//e92taIfFAMLc=; b=OU1j5LO9p4ln19uffi/e5dUA4XTIpOyE+YmD7WApjrI19RyESA3dwTR6MphaWwffR+ gtzBNXDKGv4eiC/Jih1o5B1t4LcdjwoZckFDERZshmnM5k87ceP0nUIcn5Q3eLC+X23+ ZWTOifvlf7QguYGE+EZSJEyi3jts4BTCo5xkls5MMlcpAElBesnrI5k+d8AforlgGBmr k9xcOeBkid0SH11+rzLiDdl7BEm6sePimrPAk15Yo4BJ9Qnl0onJKjxFBrRmHxJXhFYr R8bEMPSfZfENOyBKYPt+a3KdHAAQxoczrppAtvUm36o9Q9MrOgFIgF2IATtCRFHJ8Nct uBkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324194; x=1788928994; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=Mp/5RRXztuVwBrBM5ucpkys171jiW//e92taIfFAMLc=; b=jKVbL1feo6m+wHjRe+0TvEfCWpOFoYNCOm5Yt2tuCtze71L+cWOvFvY+cF7xzYNEH/ 8lP8o1xHBYrXEIOSQSiTKN87bjfJUAgQn6/v6em/kHjNQ3/1FQ/vvMEWrehE1UOcYrsO LqgaMAhSwbNCRkVm2mJg3rWNCB8r0Z1dbqI+LkooBXdIKyOEt7C/ZU07hLBo40TpJRRL 9J/KaHoQRauLP2aRp4jS/ws4V/snctTZvpU0IFO3jWSo0VpBWXEJ6R/Gn/yxUxtHHlNi oI73OVPVNMYigeJhuD8hbsK/aLGq1cEzuLorE9X2J2E9ssaIQeAZp17DBHdsR40HweFE ZD1g== X-Gm-Message-State: AFuF++k1XxK8q28t0s16IB4A8aOJuwaZo5ZdryNbs/OGK4+5hLX3Psui 2YC2plhxzOD0NlL2sr44R1nLOTAYY4TzpNkBsaep1iRWrZCg2b7tnreHisBk+fjM/1u0lkldFbs AHsax7mwlnWXSycGCvuJWuUcgv3lL108RqnggjJ4uTWulGoce8AtE22WsKw3BRiEZ3A== X-Gm-Gg: AYBFou0tGAugeIDideXRBIEVJcnzwTAzp9wcuAu2pxgpvPWnIhJFzEbUD1uCAQe8Dd1 HuF7wcsqDvVilQ2N7hNxRESwMcJhhZQbtzV+Td19c5E5RsxLkBwRrK9qXQcJqKWbIUEyzzem7Vb wEmj62bFP2zUThgkDtYx5sRu8JjVX26QHG25VoAi5BmTBJlM8PwApGbTZiKehAHUgc7uwxLxUQS QkiNADa4AyRVifeYWne4/jOWZdMWs/kAs83/1BzGuv8Pj0vtmSaGE/HZEzWzz2CakB33OpNfcpY sJMdajdBaxSa7pKpMZvVKdgcxLIRVjwQq5fWgiLb/NC2l398hXb1corQEikCjjEQm5Xa3jSK+Ig Dz5vEr84Jm8iZxXYn+EPBMafBOVRanUTmJttdOY8XE7IXwWQl X-Received: by 2002:a17:90a:d44b:b0:395:4de4:92c7 with SMTP id 98e67ed59e1d1-39aedf22512mr3357072a91.3.1788324194293; Tue, 01 Sep 2026 21:43:14 -0700 (PDT) X-Received: by 2002:a17:90a:d44b:b0:395:4de4:92c7 with SMTP id 98e67ed59e1d1-39aedf22512mr3357029a91.3.1788324193863; Tue, 01 Sep 2026 21:43:13 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Pierrick Bouvier Subject: [PULL 21/28] target/hexagon: raise imprecise exception on multi-TLB match Date: Tue, 1 Sep 2026 21:42:24 -0700 Message-Id: <20260902044231.843004-22-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX7f3utPflLjnd ERhJeqmFyDDjO9Iti+k0Pw3tai68vadUTAT4yhU4Y3lfmx0adY0is3gPlbJ2pxh1R8/cKNbXDIh P4p0XIFxdsfA9UADKT63s8jGZejPX3F7/C0UhREaMc7VRl3VAAfwm6BES4m8oeTAfXEAiC5QzWe z/IbE+LSbYr/3zB0X7WG104gvSOinoTTsMapPHSEOW/9S3tY2atTWF9jgnSIkPXmZJux2n3/Zzd u/W6IWDRbKTqFaV/olOsM2JGu7rmzh3WoJugtLI3RHEs+xaU26UiPANLaOkrB9aKwuZqOvt8oR3 CdEZH3rvEi5GcM9Ehk2UbA2LaYbQwzOB2ptXfkhAjvAkIWpbauIHugXwyonOT3KvfBi4M5WWgRO wKGVFDQt3QHAlVAcT7aKZ5Pz6bbL1p/9Jd7Bk98luH+CLX7knw6SMaYYOKfx0F0vkTFT4ZrAP95 6u1soM2hzDCM5BHx9Mg== X-Proofpoint-GUID: qroOsYRVxEhbYw05Z2BjanjEO7LZdnfy X-Proofpoint-ORIG-GUID: qroOsYRVxEhbYw05Z2BjanjEO7LZdnfy X-Authority-Analysis: v=2.4 cv=VLrtWdPX c=1 sm=1 tr=0 ts=6a97a963 cx=c_pps a=RP+M6JBNLl+fLTcSJhASfg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=ibjyMvudXchfNAek6V4A:9 a=QEXdDO2ut3YA:10 a=iS9zxrgQBfv6-_F4QbHw:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX/egWbtvN4Yhx PxZGURgLNz3GphJWxfL8NFafek57HZf04pTI1BMt9TcdikmObjfOo5griLZkZZSnSz70AWBf+jm k9Qy1YTjaxg9/OMbUSJ88cGKXTkQfnw= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 lowpriorityscore=0 clxscore=1015 bulkscore=0 malwarescore=0 adultscore=0 priorityscore=1501 phishscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324244331154100 tlbp now records a pending imprecise exception (via env->imprecise_exceptio= n) when the lookup matches multiple entries, and the translator raises it after the tlbp packet. Implement the HEX_EVENT_IMPRECISE delivery path so the guest sees HEX_CAUSE_IMPRECISE_MULTI_TLB_MATCH instead of the exception being silently dropped. Reviewed-by: Pierrick Bouvier Signed-off-by: Brian Cain --- include/hw/hexagon/hexagon_tlb.h | 3 ++- target/hexagon/cpu.h | 1 + hw/hexagon/hexagon_tlb.c | 5 ++++- target/hexagon/hex_mmu.c | 5 ++++- target/hexagon/hexswi.c | 37 +++++++++++++++++++++++++++++--- target/hexagon/machine.c | 5 +++-- target/hexagon/translate.c | 29 +++++++++++++++++++++++++ 7 files changed, 77 insertions(+), 8 deletions(-) diff --git a/include/hw/hexagon/hexagon_tlb.h b/include/hw/hexagon/hexagon_= tlb.h index 760dc1ea811..67c0a56b79e 100644 --- a/include/hw/hexagon/hexagon_tlb.h +++ b/include/hw/hexagon/hexagon_tlb.h @@ -32,7 +32,8 @@ bool hexagon_tlb_find_match(HexagonTLBState *tlb, uint32_= t asid, int32_t *excp, int *cause_code, int mmu_idx); =20 uint32_t hexagon_tlb_lookup(HexagonTLBState *tlb, uint32_t asid, - uint32_t VA, int *cause_code); + uint32_t VA, uint32_t *imprecise_exception, + int *cause_code); =20 int hexagon_tlb_check_overlap(HexagonTLBState *tlb, uint64_t entry, uint64_t index); diff --git a/target/hexagon/cpu.h b/target/hexagon/cpu.h index c50fbb3f72a..ed5671abe5c 100644 --- a/target/hexagon/cpu.h +++ b/target/hexagon/cpu.h @@ -147,6 +147,7 @@ typedef struct CPUArchState { uint64_t t_cycle_count; #endif uint32_t next_PC; + uint32_t imprecise_exception; target_ulong new_value_usr; =20 MemLog mem_log_stores[STORES_MAX]; diff --git a/hw/hexagon/hexagon_tlb.c b/hw/hexagon/hexagon_tlb.c index b6d4aff389e..6539458f25f 100644 --- a/hw/hexagon/hexagon_tlb.c +++ b/hw/hexagon/hexagon_tlb.c @@ -319,15 +319,18 @@ bool hexagon_tlb_find_match(HexagonTLBState *tlb, uin= t32_t asid, } =20 uint32_t hexagon_tlb_lookup(HexagonTLBState *tlb, uint32_t asid, - uint32_t VA, int *cause_code) + uint32_t VA, uint32_t *imprecise_exception, + int *cause_code) { uint32_t not_found =3D 0x80000000; uint32_t idx =3D not_found; =20 + *imprecise_exception =3D 0; for (uint32_t i =3D 0; i < tlb->num_entries; i++) { uint64_t entry =3D tlb->entries[i]; if (hex_tlb_entry_match_noperm(entry, asid, VA)) { if (idx !=3D not_found) { + *imprecise_exception =3D HEX_EVENT_IMPRECISE; *cause_code =3D HEX_CAUSE_IMPRECISE_MULTI_TLB_MATCH; break; } diff --git a/target/hexagon/hex_mmu.c b/target/hexagon/hex_mmu.c index 81d64a6146c..de108f709c0 100644 --- a/target/hexagon/hex_mmu.c +++ b/target/hexagon/hex_mmu.c @@ -86,9 +86,12 @@ uint32_t hex_tlb_lookup(CPUHexagonState *env, uint32_t s= sr, uint32_t VA) { HexagonCPU *cpu =3D env_archcpu(env); uint8_t asid =3D GET_SSR_FIELD(SSR_ASID, ssr); + uint32_t imprecise_exception =3D 0; int cause_code =3D 0; =20 - uint32_t result =3D hexagon_tlb_lookup(cpu->tlb, asid, VA, &cause_code= ); + uint32_t result =3D hexagon_tlb_lookup(cpu->tlb, asid, VA, + &imprecise_exception, &cause_code= ); + env->imprecise_exception =3D imprecise_exception; if (cause_code) { env->cause_code =3D cause_code; } diff --git a/target/hexagon/hexswi.c b/target/hexagon/hexswi.c index 2ab4aaf39d7..75f0a9cc520 100644 --- a/target/hexagon/hexswi.c +++ b/target/hexagon/hexswi.c @@ -761,6 +761,7 @@ void hexagon_cpu_do_interrupt(CPUState *cs) =20 { CPUHexagonState *env =3D cpu_env(cs); + HexagonCPU *cpu =3D HEXAGON_CPU(cs); uint32_t ssr; =20 BQL_LOCK_GUARD(); @@ -775,7 +776,6 @@ void hexagon_cpu_do_interrupt(CPUState *cs) =20 ssr =3D env->t_sreg[HEX_SREG_SSR]; if (GET_SSR_FIELD(SSR_EX, ssr) =3D=3D 1) { - HexagonCPU *cpu =3D env_archcpu(env); if (cpu->globalregs) { hexagon_globalreg_write(cpu->globalregs, HEX_SREG_DIAG, env->cause_code, env->threadId); @@ -934,8 +934,39 @@ void hexagon_cpu_do_interrupt(CPUState *cs) break; =20 case HEX_EVENT_IMPRECISE: - qemu_log_mask(LOG_UNIMP, - "Imprecise exception: this case is not yet handled"); + if (get_exe_mode(env) =3D=3D HEX_EXE_MODE_WAIT) { + env->gpr[HEX_REG_PC] =3D env->wait_next_pc - 4; + clear_wait_mode(env); + } + switch (env->cause_code) { + case HEX_CAUSE_IMPRECISE_MULTI_TLB_MATCH: + hexagon_ssr_set_cause(env, env->cause_code); + set_addresses(env, 4, cs->exception_index); + if (cpu->globalregs) { + hexagon_globalreg_write(cpu->globalregs, HEX_SREG_DIAG, + (0x4 << 4) | (env->t_sreg[HEX_SREG_HTID] & 0xF), + env->threadId); + } + break; + + case HEX_CAUSE_IMPRECISE_NMI: + hexagon_ssr_set_cause(env, env->cause_code); + set_addresses(env, 4, cs->exception_index); + if (cpu->globalregs) { + hexagon_globalreg_write(cpu->globalregs, HEX_SREG_DIAG, + (0x3 << 4) | (env->t_sreg[HEX_SREG_HTID] & 0xF), + env->threadId); + } + break; + + default: + qemu_log_mask(LOG_GUEST_ERROR, + "Imprecise exception with unhandled cause 0x%x\n", + env->cause_code); + hexagon_ssr_set_cause(env, env->cause_code); + set_addresses(env, 4, cs->exception_index); + break; + } break; =20 default: diff --git a/target/hexagon/machine.c b/target/hexagon/machine.c index 2dd95466e7d..bf4646f4a8b 100644 --- a/target/hexagon/machine.c +++ b/target/hexagon/machine.c @@ -10,8 +10,8 @@ =20 const VMStateDescription vmstate_hexagon_cpu =3D { .name =3D "cpu", - .version_id =3D 1, - .minimum_version_id =3D 1, + .version_id =3D 2, + .minimum_version_id =3D 2, .fields =3D (const VMStateField[]) { VMSTATE_UINT32_ARRAY(env.gpr, HexagonCPU, TOTAL_PER_THREAD_REGS), VMSTATE_UINT32_ARRAY(env.pred, HexagonCPU, NUM_PREGS), @@ -26,6 +26,7 @@ const VMStateDescription vmstate_hexagon_cpu =3D { VMSTATE_UINT32(env.cause_code, HexagonCPU), VMSTATE_UINT32(env.wait_next_pc, HexagonCPU), VMSTATE_UINT64(env.t_cycle_count, HexagonCPU), + VMSTATE_UINT32(env.imprecise_exception, HexagonCPU), =20 VMSTATE_END_OF_LIST() }, diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c index 9d5402a9822..bbc2732e994 100644 --- a/target/hexagon/translate.c +++ b/target/hexagon/translate.c @@ -65,6 +65,7 @@ TCGv hex_llsc_val; TCGv_i64 hex_llsc_val_i64; #ifndef CONFIG_USER_ONLY TCGv_i64 hex_cycle_count; +TCGv hex_imprecise_exception; #endif TCGv hex_vstore_addr[VSTORES_MAX]; TCGv hex_vstore_size[VSTORES_MAX]; @@ -1056,6 +1057,28 @@ static void update_exec_counters(DisasContext *ctx) ctx->num_cycles +=3D PCYCLES_PER_PACKET; } =20 +#ifndef CONFIG_USER_ONLY +/* + * A tlbp instruction may detect multiple TLB matches and set a pending + * imprecise exception. Raise it after the packet that ran the tlbp. + */ +static void check_imprecise_exception(Packet *pkt) +{ + for (int i =3D 0; i < pkt->num_insns; i++) { + if (pkt->insn[i].opcode =3D=3D Y2_tlbp) { + TCGv PC =3D tcg_constant_tl(pkt->pc); + TCGLabel *label =3D gen_new_label(); + tcg_gen_brcondi_tl(TCG_COND_EQ, hex_imprecise_exception, + 0, label); + gen_helper_raise_exception(tcg_env, + hex_imprecise_exception, PC); + gen_set_label(label); + return; + } + } +} +#endif + static void gen_commit_packet(DisasContext *ctx) { /* @@ -1155,6 +1178,10 @@ static void gen_commit_packet(DisasContext *ctx) ctx->pkt.vhist_insn->generate(ctx); } =20 +#ifndef CONFIG_USER_ONLY + check_imprecise_exception(&ctx->pkt); +#endif + if (ctx->pkt_ends_tb || ctx->base.is_jmp =3D=3D DISAS_NORETURN) { gen_end_tb(ctx); } @@ -1362,6 +1389,8 @@ void hexagon_translate_init(void) #ifndef CONFIG_USER_ONLY hex_cycle_count =3D tcg_global_mem_new_i64(tcg_env, offsetof(CPUHexagonState, t_cycle_count), "t_cycle_count"); + hex_imprecise_exception =3D tcg_global_mem_new(tcg_env, + offsetof(CPUHexagonState, imprecise_exception), "imprecise_excepti= on"); #endif for (i =3D 0; i < STORES_MAX; i++) { snprintf(store_addr_names[i], NAME_LEN, "store_addr_%d", i); --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324306; cv=none; d=zohomail.com; s=zohoarc; b=E3f9cmeK1E2aLDtri82z/ytxzPrnwFNHBBtnrB/SzoJU+1YgD6082YqTLzgkd4ofuvmx6dvwuNL4VT6TB3RorFKFLTT7s4z14hvv702iOASLRXNNADM3oFiHv8kXs/v1T7CbVvmFdjoKuXx+UrAIcW6aupMlaCgvZq9RLPkyTI0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324306; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=U3aea8Mf3kNxJt1WMG3eSb2nZCP6zf0Clsb4yFbcvQ8=; b=aAMgmHhS2zA2JmOSMWlsk+mSEP+P6Yj+NmAVNdgNSq3/Nz4fHpcjieffs20pZhWMWOM5URsiz7LTlrXwfSSNKSKDD95i12fBJmBov8nuySn8nmFjoX1a3wu+nHJLXXxABeEgElDYoHbEM5uggPdmlhAPF/yxNCxFs7hTiBV0DLE= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324306937641.9824899126114; Tue, 1 Sep 2026 21:45:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1cou-0000dy-UG; Wed, 02 Sep 2026 00:43:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1cot-0000bY-Oh for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:31 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1cor-0000Nn-MJ for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:31 -0400 Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 681KTTH32983055 for ; Wed, 2 Sep 2026 04:43:16 GMT Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ge35k25u3-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:43:16 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-38e8fee6af3so861147a91.1 for ; Tue, 01 Sep 2026 21:43:16 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.43.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:43:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= U3aea8Mf3kNxJt1WMG3eSb2nZCP6zf0Clsb4yFbcvQ8=; b=ASQoKA7HWhn6uERE TWnXZbI2gRVCRJmwgCDRlZDuhIFPBuK8hgnNDaBwUG/ObvKfxucwfpa72F5Lo2m/ bIKUmSHBDdMRLSGk3dh4mQG/yREGYPg1gxkz0t3YE8kex8evdFk/1cOhsAiY3TfT KfTcoEakCw5+/knwFFB/nEYrj99eYU1kMvHYE/x833QmGgeljsXJ+hOpVYSVkWe9 uP6BTi5oSERIuKqhDCKg6LCTHgeqUWm5ZtXZYuyhd4J/E1uVGm3s/+llrJh5uans d0i7uFsxcJxYhtSYtY6KaMpWMv8QYXdDgFRdt6Ok9mKOUUZ1vjo0fXsf2dJK3KKl V655ew== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324196; x=1788928996; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=U3aea8Mf3kNxJt1WMG3eSb2nZCP6zf0Clsb4yFbcvQ8=; b=G1rv4b8Pl0hieatb/0BOrjKXWfJrGh4fmbb7hqKOTkiImyZzYL4vlHYRtvjW+kW5R0 cKUeDPEi6MH1I0MClW+MsYij8EOnFliFEQhlHFNwZ2Hde/8De3dUIuMErdWdulhLM5y9 DjOv6xhaQjvJeqDkilTP2bB1SdeCznMrfmEST8NyR3axarXrNPBQzpZHmcloFtmEtexl ibnBIBcRgiq9T5qbJc/O7mWlKwWs0vJkBua3VMiMDxs5q/G1irRW4ldAaCaCRN3YQBrT EEQj1zknQeolDrWIp3Gm5nSEKLFX7QjcKpkNaTekFlaWnsjS3DN9cvnGkZImwtB/gFQ9 FezA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324196; x=1788928996; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=U3aea8Mf3kNxJt1WMG3eSb2nZCP6zf0Clsb4yFbcvQ8=; b=CsVm556vto+iAh2zFByGqa2MWFoqRAQsKNwht5DrxwaLEo5uU+kIDlDMwzSHCEUDWm +l/PlScm5HApDMKbJ8WPxLFEYQybP2I31IRCzocW0vpW7UsM3J7JLdzn2VJdURUVv4Al wkBm3OaNXK+4E00DyDHJ1dk7Xvenv/q3aLIa3bL8Dz0XSPsvgYinOnjCzCTnY2mf62nO lGjoSr9bnKm7g0HJVgY8eCju8VMfetO/C503/Y0i6gUyZrbHos16TeVxvRZeRHOIWmIv RIJ940ifhj9OyxIc5LfWkqCCGip8rcmp25Qze3/jrZGXFra5Y5ZuECGaCVeZ/8iCHxlk M/1Q== X-Gm-Message-State: AFuF++mGxnSbFrX/EdTIKq5gTopCBrgV2yhVH8Yw5XKyxL+S3aUNBm/U sjujOcidmYpqfi9ID/Uilzp4I0V/MpPVNcIY5fh83GkluZlUT5ADDVQNHwO1KwBioXt1DV1+wwG PwPpJYfaA60AEb1mMIRSY0t+m7teAgtZF15+Bw82FKfzLiFm7QqCFMttxx9uQcQgi4w== X-Gm-Gg: AYBFou1ZStcezf0NgbtLbzuhNcPJtJub00RSNo1Bsu6PAej+8bE/CYsqRRF9WZSTemF UUws4nNJyzz3vdar5jWUZPoT6LMLTzdFAD8xSti1UV2QcO6GD73ZHGEB4i8cwJs/rkdB/e1a5/S EL6LKYYWlmwBHX4X404wqpD/YkuN1b0opmykQiVK1+HvMI6mr3/LvUP+MbijiYrrcmP9RC7mHdV 95+uhVPdWK+QsQet+MXu9RJ9LcHcDldCiqh197KbjjpZDawDRksu1TyhLrwg7Sov2mmsQWKgzc7 0kLd9hfMuJa4Z5OpXdMWiS3tWLLT2sWPPst7Ws06IeMALVUc0r1XEIdV4+49itVvboYMt2zrBCx vWiaS5KuomtUjG3oDBkDASsY3V1yDHH4tVvLqWZHQtSjHx/jK X-Received: by 2002:a17:90a:fc45:b0:38f:efed:5448 with SMTP id 98e67ed59e1d1-39aedf2014amr3228744a91.8.1788324195628; Tue, 01 Sep 2026 21:43:15 -0700 (PDT) X-Received: by 2002:a17:90a:fc45:b0:38f:efed:5448 with SMTP id 98e67ed59e1d1-39aedf2014amr3228689a91.8.1788324195107; Tue, 01 Sep 2026 21:43:15 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Pierrick Bouvier Subject: [PULL 22/28] target/hexagon: implement direct-to-guest interrupt delivery Date: Tue, 1 Sep 2026 21:42:25 -0700 Message-Id: <20260902044231.843004-23-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX6VLASWy3lY7f c47NaaN8ytsH0iJ1lV43XSUNTLH+Cz2ro7N4R4uk3tSgx+lkiC6nZWVLAE+s2UlGs/8Sq+5rJnX VlV1coDfrmIDGE6RW85zT1neRmX/bp2dLB9c8fYo0thxnBpVjQIYUCmuQri+0GbTz0T88Q+E9FX 1Sw65leTJSa6NW/zU0OiF04dyJoFOlOHLfgrNeTG8GN54pdIJuTJkA/nyU1B3YQJp25ITOUWqSE JrGm44NMrTVITj0+zSApZ/jAmbXJPgqQ4u6t9E5FRHhcN1kl+IsEW/SZ7HGsas/xTMrVB6EgITE XZbavmS4AjHl9O7vWvF5shZ7rwQ7BwD9ezGel1VAVpHL+SelqugPKCBErVBb8ohT7hSusUBQEvJ OYz1Xpz+/fFAVRkxuPSt+Wj2787b+RH8kJLuexk1Wn95ZgcbjO85S19TYXPBYK+lTj6BQg2f+YR 2DIFuXhSHV46wAhc3GQ== X-Proofpoint-GUID: Uu7_gpxIlZYyRImTJ4e7CdzwRTQ2qTHn X-Proofpoint-ORIG-GUID: Uu7_gpxIlZYyRImTJ4e7CdzwRTQ2qTHn X-Authority-Analysis: v=2.4 cv=VLrtWdPX c=1 sm=1 tr=0 ts=6a97a964 cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=Zk8ngpzFGPinGHXTi4kA:9 a=QEXdDO2ut3YA:10 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX4HRFaPr1g8+c 8rmtogwQFPfc3I2zs6TSI68fIkeiLVd3/wcMb8g3oKy+FuUreqib8osRnjFBN8aKIcYRL6PS12s U6UOowgPdxdLjNctXSrBx/0FenwJh/c= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 lowpriorityscore=0 clxscore=1015 bulkscore=0 malwarescore=0 adultscore=0 priorityscore=1501 phishscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324309150154100 Interrupts 3 through 5 are routed to guest mode when CCR:GIE and the matching CCR:VV bit are set. Enter through GEVB rather than EVB, record the pre-entry state in GSR and the return address in GELR, and read the vector ID from the l2vic. Reviewed-by: Pierrick Bouvier Signed-off-by: Brian Cain --- target/hexagon/reg_fields_def.h.inc | 7 +++ target/hexagon/cpu.c | 5 ++ target/hexagon/hex_interrupts.c | 91 ++++++++++++++++++++++++++--- 3 files changed, 96 insertions(+), 7 deletions(-) diff --git a/target/hexagon/reg_fields_def.h.inc b/target/hexagon/reg_field= s_def.h.inc index d2c706d56b5..29497fbcc4d 100644 --- a/target/hexagon/reg_fields_def.h.inc +++ b/target/hexagon/reg_fields_def.h.inc @@ -136,6 +136,13 @@ DEF_REG_FIELD(CCR_VV1, 29, 1) DEF_REG_FIELD(CCR_VV2, 30, 1) DEF_REG_FIELD(CCR_VV3, 31, 1) =20 +/* GSR fields */ +DEF_REG_FIELD(GSR_CAUSE, 0, 16) +DEF_REG_FIELD(GSR_CFI, 28, 1) +DEF_REG_FIELD(GSR_SS, 29, 1) +DEF_REG_FIELD(GSR_IE, 30, 1) +DEF_REG_FIELD(GSR_UM, 31, 1) + /* ISDB ST fields */ DEF_REG_FIELD(ISDBST_WAITRUN, 24, 8) DEF_REG_FIELD(ISDBST_ONOFF, 16, 8) diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index e4138df9472..0530ec3ca96 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -475,6 +475,11 @@ static void hexagon_cpu_realize(DeviceState *dev, Erro= r **errp) error_setg(errp, "hexagon cpu requires 'tlb' link property to be s= et"); return; } + if (!HEXAGON_CPU(dev)->l2vic) { + error_setg(errp, + "hexagon cpu requires 'l2vic' link property to be set"); + return; + } #endif =20 qemu_init_vcpu(cs); diff --git a/target/hexagon/hex_interrupts.c b/target/hexagon/hex_interrupt= s.c index 3534481da24..7dde1294b2e 100644 --- a/target/hexagon/hex_interrupts.c +++ b/target/hexagon/hex_interrupts.c @@ -11,6 +11,7 @@ #include "cpu_helper.h" #include "exec/cpu-interrupt.h" #include "hex_interrupts.h" +#include "hw/intc/hex-l2vic.h" #include "macros.h" #include "sys_macros.h" #include "system/cpus.h" @@ -215,19 +216,79 @@ static void restore_state(CPUHexagonState *env, bool = int_accepted) } } =20 +/* + * Direct-to-guest interrupts bypass the need for monitor-mode + * forwarding of interrupts into the guest OS. + */ +static bool int_should_dtg(CPUHexagonState *env, int int_num) +{ + uint32_t ccr =3D env->t_sreg[HEX_SREG_CCR]; + + switch (int_num) { + case 3: + if (!GET_FIELD(CCR_VV1, ccr)) { + return false; + } + break; + case 4: + if (!GET_FIELD(CCR_VV2, ccr)) { + return false; + } + break; + case 5: + if (!GET_FIELD(CCR_VV3, ccr)) { + return false; + } + break; + default: + return false; + } + + return GET_FIELD(CCR_GIE, ccr); +} + +static void guest_interrupt_entry(CPUHexagonState *env, uint32_t cause, + uint32_t event_pc) +{ + uint32_t old_ssr =3D env->t_sreg[HEX_SREG_SSR]; + uint32_t new_ssr =3D old_ssr; + uint32_t ccr =3D env->t_sreg[HEX_SREG_CCR]; + uint32_t gsr =3D 0; + + gsr =3D deposit32(gsr, reg_field_info[GSR_CAUSE].offset, + reg_field_info[GSR_CAUSE].width, cause); + gsr =3D deposit32(gsr, reg_field_info[GSR_SS].offset, + reg_field_info[GSR_SS].width, + GET_SSR_FIELD(SSR_SS, old_ssr)); + gsr =3D deposit32(gsr, reg_field_info[GSR_UM].offset, + reg_field_info[GSR_UM].width, + !GET_SSR_FIELD(SSR_GM, old_ssr)); + gsr =3D deposit32(gsr, reg_field_info[GSR_IE].offset, + reg_field_info[GSR_IE].width, + GET_FIELD(CCR_GIE, ccr)); + env->greg[HEX_GREG_GSR] =3D gsr; + + fSET_FIELD(new_ssr, SSR_SS, 0); + fSET_FIELD(new_ssr, SSR_GM, 1); + env->t_sreg[HEX_SREG_SSR] =3D new_ssr; + hexagon_modify_ssr(env, new_ssr, old_ssr); + + SET_SYSTEM_FIELD(env, HEX_SREG_CCR, CCR_GIE, 0); + env->greg[HEX_GREG_GELR] =3D event_pc; + env->gpr[HEX_REG_PC] =3D env->t_sreg[HEX_SREG_GEVB] | + (HEX_EVENT_INT0 << 2); +} + static void hex_accept_int(CPUHexagonState *env, int int_num) { CPUState *cs =3D env_cpu(env); HexagonCPU *cpu =3D env_archcpu(env); - uint32_t evb =3D - hexagon_globalreg_read(cpu->globalregs, HEX_SREG_EVB, - env->threadId); const int exe_mode =3D get_exe_mode(env); const bool in_wait_mode =3D exe_mode =3D=3D HEX_EXE_MODE_WAIT; + uint32_t elr; =20 set_ipend_bit(env, int_num, 0); set_iad_bit(env, int_num, 1); - set_ssr_ex_cause(env, 1, HEX_CAUSE_INT0 | int_num); cs->exception_index =3D HEX_EVENT_INT0 + int_num; env->cause_code =3D HEX_EVENT_INT0 + int_num; clear_pending_locks(env); @@ -235,15 +296,31 @@ static void hex_accept_int(CPUHexagonState *env, int = int_num) qemu_log_mask(CPU_LOG_INT, "%s: thread " TARGET_FMT_ld " resuming, exiting WAIT mode\n", __func__, env->threadId); - set_elr(env, env->wait_next_pc); + elr =3D env->wait_next_pc; clear_wait_mode(env); cs->halted =3D false; } else if (env->k0_lock_state =3D=3D HEX_LOCK_WAITING) { g_assert_not_reached(); } else { - set_elr(env, env->gpr[HEX_REG_PC]); + elr =3D env->gpr[HEX_REG_PC]; + } + + if (int_should_dtg(env, int_num)) { + int vic_group =3D int_num - 2; + uint32_t vid_packed =3D l2vic_read_vid(cpu->l2vic, vic_group / 2); + uint32_t vid =3D extract32(vid_packed, + (vic_group & 1) ? 16 : 0, 16); + + guest_interrupt_entry(env, vid, elr); + } else { + uint32_t evb =3D + hexagon_globalreg_read(cpu->globalregs, HEX_SREG_EVB, + env->threadId); + + set_ssr_ex_cause(env, 1, HEX_CAUSE_INT0 | int_num); + set_elr(env, elr); + env->gpr[HEX_REG_PC] =3D evb | (cs->exception_index << 2); } - env->gpr[HEX_REG_PC] =3D evb | (cs->exception_index << 2); if (get_ipend(env) =3D=3D 0) { restore_state(env, true); } --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324271; cv=none; d=zohomail.com; s=zohoarc; b=QvLOo0d7hZm/L5W8jbQclxmliuRqlsBfxUWt4fipECENIWCFP154P+Gwr/IW5ZrhMIzrbTiZ3Ujq0/OfhiX/oDXlhahJ0k+jJteh2xdkMzRcTN3+w1AG4DMeJ9dNfD2wiVqvXXXQXkc24h8LfO+Y7WBWWrCxntjwKuaoJzk+QvE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324271; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Et4ny1F1lzuIyJmBjDBu93nVnzwZJsOWaIOzX7PHa9c=; b=GT8VFEfEWuOrDVIO+dEdCymK38vMq8E+Y9/Ad4Jq5fL/O70pspePMQxVnPT2OkEBF9cqAUy1FbGt/DGt34f98iEJyvgViDekMbr8TZXWSg8XSerJIXydhIWHtQpijQ3aabhE+6RMe/VhC1HUvTJGqC6UWYBBQ7Xvdz9qxY7qn84= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324271215713.4862124944298; Tue, 1 Sep 2026 21:44:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1cow-0000gM-R7; Wed, 02 Sep 2026 00:43:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1cou-0000du-QV for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:32 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1cor-0000Ny-Mp for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:32 -0400 Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68202Fv71013362 for ; Wed, 2 Sep 2026 04:43:17 GMT Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ge8whgsm8-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:43:17 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-398fe469aa0so1060473a91.2 for ; Tue, 01 Sep 2026 21:43:17 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.43.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:43:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= Et4ny1F1lzuIyJmBjDBu93nVnzwZJsOWaIOzX7PHa9c=; b=VzChwmP2YXwpPHgX uqyKxRk3mCr1sD+t2clo7Zy4gnM+ljEUAhMdUbHKh2giIhs4Z0Tzbs9fSTwJKWxv DmmgcC7WE42Y3DIQ7Tj0OCfqjAscKV+TA/b349UW4hBw81f7rBsbIdsfltHILeVB uCIG59B3WKX9IG7fd5LokKBZXaxVXnqwxw+NOd5AuoK4FwcTySoXhsTJ9DczUaUn SYqm1aOlTIhQA4I5l+oYfN56wleTo41uglg39TYM8Gq3sd5C+Mdik4W/Rx6QoByD MiJtO7q2RWIisD9Y2msUbr4ePi6wgTEWeqeDezoOxrhG9/HfvzFhk9tJaVP7A4BO OlBqVA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324197; x=1788928997; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=Et4ny1F1lzuIyJmBjDBu93nVnzwZJsOWaIOzX7PHa9c=; b=DVfIJPcProQ4uoeJFEekdfSXPjY0pprDf5tbg0rPicSuUjMy12PJuiMWf9GarwJZ2Y dPDP9Seb/vwpGH1VI15xUWhCNKOfBPqrEp3q2qZk8yyK7/InFETyu6N/AaeztBl+IKuj pdGhgd7FK7F0x+381FZ3zN5QCnTs2CNALebqfqGEsLhQbHsAbG8jCwiBVzzeCl6gEFxd KO/lpdCoFvZ5P2cqyb+liyAeM5dx1T2lu1XdjNm1qc6BkzOYs1Sw0ul3dHjYRxEVBwXY a+k0oGlk0YojpvgDyPtHiZokEShIv+MfZ2F2oMleNSLu93aeJfdore5fTsoko5vAVPaV qcEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324197; x=1788928997; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=Et4ny1F1lzuIyJmBjDBu93nVnzwZJsOWaIOzX7PHa9c=; b=j5lnLjMse4mgvpJvgUMA8KfSebD+e6Vz7iBufH2ps/5gAzG4odsDI/zpiBro1AbqPR D71uuBQqzd+E6mnxoxaT4xmIDos2OnsfdgndcoZyJvRnc4EuoPMIzTWpwZH5Hy2grSh6 93IXsXp6PCQedxMa7je1TC/R+W4IcCioOwu+BgRMZ8QAmT/PTJPRoZS7p6qVc8Ka12xZ QUdQ1y5Q8rmG1zBBKcQZZ5urmrraD186luInG8okHzMzaV6bHImzD3eKsp/xmMBSb3kl mhe1rKERZBEKi040vVXpsiOK4Gj4aM/thQ5NlRpLc2al+niAh6I/XhhuG6zQ1dzcl9gl 4gZg== X-Gm-Message-State: AFuF++mAuq50XekEkocdc15BoQLxoOCnni5BAEV2rLuU++3r1zYmM+Xi 2ujsn2OwGfUNVnz+5sFnUTCghEqtykC53wXNLww2iH0vOg1Hcn5nQqp46eZY/9x29z3cEGcnkLR AL/CRClzw/y41047YTBPZhE6eEpd30WSAumHe7t1xbjnWuWydM4awq3eMFH7yLzES3A== X-Gm-Gg: AYBFou0FHvBiYYfpqLq1qc+qYTYMA9MkPq0HbkrTga+ThaZPMN7wMRzqkz/vti1twqD KIH7zKWcl53Q5TjvWPL/w8XCiVgzw5MkjrtmiYC5zovKDqDDUFPJFQSJWj4BLKzfY3XBzjJY+w1 0qHbWezGSuNQwQTmWU329/9TdXmDLKfqW8mlJVb5xRMEgZk2KlpDYzAZw9xuObSWmDOxqD6m7P+ /+vTY7UQmeKBDAOdmjHKy4UynAJ5sr5wTE7aT2VL9Dhy/eZgxQ+aJd7THEpCysJb1fOO+4WbdKJ /sa9JgQi1bkKjfqnq0NWm3E68xioJAKhGzfiydizMDGhjGTQFPSaiflGr7vnaYXZwYW9KeYG5tE E2FWwEorYQxK5N8VapnsOicvZkE0YcKy2BD58+Hp1e4S02Bg9 X-Received: by 2002:a17:90b:1e04:b0:38f:57f0:1f5d with SMTP id 98e67ed59e1d1-39aee16ffd9mr2318008a91.15.1788324196931; Tue, 01 Sep 2026 21:43:16 -0700 (PDT) X-Received: by 2002:a17:90b:1e04:b0:38f:57f0:1f5d with SMTP id 98e67ed59e1d1-39aee16ffd9mr2317972a91.15.1788324196468; Tue, 01 Sep 2026 21:43:16 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Pierrick Bouvier Subject: [PULL 23/28] target/hexagon: fix iassign{r, w} to cover all threads Date: Tue, 1 Sep 2026 21:42:26 -0700 Message-Id: <20260902044231.843004-24-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=fLkJG5ae c=1 sm=1 tr=0 ts=6a97a965 cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=1MU65uQV28RDXwrdXuMA:9 a=QEXdDO2ut3YA:10 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-ORIG-GUID: Yjps2WyK9adaAK7XgRJRQXJSXizJkoX- X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfXxvwj2/ethK+n Afcrzs7Qx8VnyidRmmBUz6lCYefrHZxBaUmrUZUd/WEpMU0ywU5OlsjIjfUT6LqPEfVlOX3pjgS bv4m4KVqbZS2Oi0ebBpyoI+Qtom1vDmzHnVME1sLJu4565TddSKg8peKNMd79chldRGicA8V46Y kTAU1YuygvyYdJOgkORy90V0r+xncIu1iwsJsHmEb0Geq+rgLntPxZEbaD+RFdQnEZAU1tVysFG Wg6XFP6TpDsjlq9pAnFFgI/Ut1Z/teL8UxlB7Bi/8Vpyjknlj9lmUJ2IeiHjcF1eF9LpRLBV6Aj wdFieKQqIfyLZjNddYtFZ4KAHseeApS4ECicHLnWLuKCOcmcAZfZmnXyeFnH4+RE1ZFuiz6weZl XCuyDdYdBt8jajI5bZReUjF43qN/l1nUX8/TKR9g5xqT7im6cwAHLYcQyjmrGvItRe08gpH6ASs xfZ1TJ5CvOxZQ03nWeg== X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX3CJchKdd1TtQ znaSYlI/KRoPtmEeWMX3wXqlklTY7diBXuC53LWorL5oi4TEM4HdXQlOWl3PGApFIVYz/esXT/o t7L8TX/GL2XVUxhDPbz0Dpx0IphSo5U= X-Proofpoint-GUID: Yjps2WyK9adaAK7XgRJRQXJSXizJkoX- X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 malwarescore=0 impostorscore=0 clxscore=1015 priorityscore=1501 spamscore=0 phishscore=0 lowpriorityscore=0 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324272113158500 iassignw/iassignr were filtering CPU_FOREACH by MODECTL_E, the thread-enabled mask. That mask reflects whether a thread has been started, not whether it exists, so IMASK writes/reads never reached threads that hadn't been started yet, leaving their IMASK stale or unreadable. Drop the MODECTL_E filtering and operate on every thread. Reviewed-by: Pierrick Bouvier Signed-off-by: Brian Cain --- target/hexagon/op_helper.c | 42 +++++++++----------------------------- 1 file changed, 10 insertions(+), 32 deletions(-) diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index f9e66acf848..2168c6361d9 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -1635,61 +1635,39 @@ void HELPER(cswi)(CPUHexagonState *env, uint32_t ma= sk) =20 void HELPER(iassignw)(CPUHexagonState *env, uint32_t src) { - uint32_t modectl; - uint32_t thread_enabled_mask; CPUState *cpu; - HexagonCPU *hex_cpu; =20 BQL_LOCK_GUARD(); - hex_cpu =3D env_archcpu(env); - modectl =3D hex_cpu->globalregs ? - hexagon_globalreg_read(hex_cpu->globalregs, HEX_SREG_MODECTL, - env->threadId) : 0; - thread_enabled_mask =3D GET_FIELD(MODECTL_E, modectl); =20 CPU_FOREACH(cpu) { CPUHexagonState *thread_env =3D &(HEXAGON_CPU(cpu)->env); - uint32_t thread_id_mask =3D 0x1 << thread_env->threadId; - if (thread_enabled_mask & thread_id_mask) { - uint32_t imask =3D thread_env->t_sreg[HEX_SREG_IMASK]; - uint32_t intbitpos =3D (src >> 16) & 0xF; - uint32_t val =3D (src >> thread_env->threadId) & 0x1; - imask =3D deposit32(imask, intbitpos, 1, val); - thread_env->t_sreg[HEX_SREG_IMASK] =3D imask; + uint32_t imask =3D thread_env->t_sreg[HEX_SREG_IMASK]; + uint32_t intbitpos =3D (src >> 16) & 0xF; + uint32_t val =3D (src >> thread_env->threadId) & 0x1; + imask =3D deposit32(imask, intbitpos, 1, val); + thread_env->t_sreg[HEX_SREG_IMASK] =3D imask; =20 - qemu_log_mask(CPU_LOG_INT, "%s: thread " TARGET_FMT_ld - ", new imask 0x%" PRIx32 "\n", __func__, - thread_env->threadId, imask); - } + qemu_log_mask(CPU_LOG_INT, "%s: thread " TARGET_FMT_ld + ", new imask 0x%" PRIx32 "\n", __func__, + thread_env->threadId, imask); } hex_interrupt_update(env); } =20 uint32_t HELPER(iassignr)(CPUHexagonState *env, uint32_t src) { - uint32_t modectl; - uint32_t thread_enabled_mask; uint32_t intbitpos; uint32_t dest_reg; CPUState *cpu; - HexagonCPU *hex_cpu; =20 BQL_LOCK_GUARD(); - hex_cpu =3D env_archcpu(env); - modectl =3D hex_cpu->globalregs ? - hexagon_globalreg_read(hex_cpu->globalregs, HEX_SREG_MODECTL, - env->threadId) : 0; - thread_enabled_mask =3D GET_FIELD(MODECTL_E, modectl); /* src fields are in same position as modectl, but mean different thin= gs */ intbitpos =3D GET_FIELD(MODECTL_W, src); dest_reg =3D 0; CPU_FOREACH(cpu) { CPUHexagonState *thread_env =3D &(HEXAGON_CPU(cpu)->env); - uint32_t thread_id_mask =3D 0x1 << thread_env->threadId; - if (thread_enabled_mask & thread_id_mask) { - uint32_t imask =3D thread_env->t_sreg[HEX_SREG_IMASK]; - dest_reg |=3D ((imask >> intbitpos) & 0x1) << thread_env->thre= adId; - } + uint32_t imask =3D thread_env->t_sreg[HEX_SREG_IMASK]; + dest_reg |=3D ((imask >> intbitpos) & 0x1) << thread_env->threadId; } =20 return dest_reg; --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324397; cv=none; d=zohomail.com; s=zohoarc; b=VsfyCS5nJJ3JMQd/a21zeOsRRkyCCPAKwpry47H4m0KCyAntdxLbh0GqO8+rUqBQjsoYRWHIPnoDgZdgWArnqocYNkQAcnfPcRUTFz/E3TA4KBywc12p++NqZZYRYb1TvImgNHZL8IWXa6wQqtcVasIVDFNujD5CVs8BMFYGQsw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324397; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=mqNoeHtdFOV/gb6ZNLRhsaJUt3UTdl0o5mgBjZ7nPM0=; b=UjLTyAF9tvKO2l0Mo66bt7chAXImnrfLYsSrvM6Gy0gBf44Wf1KIh7oxhrI3ZtctgttcxD9pqLxjGNOxvF7zWHj2m51UI+KXFnPtyiKjTBleqivrfxQD/5PSVFyAty4T9EJFa2dYnxOmGiukxDTkKYzYiBf/2JtkIX//qNn3OX8= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324397803760.668327028512; Tue, 1 Sep 2026 21:46:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1cox-0000gj-4V; Wed, 02 Sep 2026 00:43:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1cov-0000f9-KK for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:33 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1cot-0000QG-K9 for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:33 -0400 Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6824M1W12982864 for ; Wed, 2 Sep 2026 04:43:20 GMT Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ge35k25ua-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:43:19 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2d55d8cd938so10355725ad.1 for ; Tue, 01 Sep 2026 21:43:19 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.43.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:43:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= mqNoeHtdFOV/gb6ZNLRhsaJUt3UTdl0o5mgBjZ7nPM0=; b=KtkXiSNgft7x6kRB v20oXC932JSoYzDgc8qvuYPeBV7oCy21BjjunbhqbYDKGL8dzRvVK4ettMKP/NqR mbHb9mm3xo8oS799vWA4stoWcqifZ/TGyv2W8OdP6t0fKUcHlyEPjfdO/7NTFB8i supYOxSrxPlZjgzHyNDK3+JLVEv95DnYJkWMolcYm754BxRfRhBSt3OG1USyGXYZ ZDoxz/ct4/K84IbKQ2y4kcYCt+v2wlBn4h1evXgL/t+g3kXExPlUr7CbBhLReHZa 2wcvhNZ09zpMLtA9btW/eBA8yZ+KRRIPzwzdMX1mKX5w6xhxZEQ4PnWV80XnChEB wzJG5w== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324199; x=1788928999; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=mqNoeHtdFOV/gb6ZNLRhsaJUt3UTdl0o5mgBjZ7nPM0=; b=ZtlMvIUq5ULcIbDNQb9RaSwkU+x+ng3bDQlk2R3YxMyaLV896i3sKwD8UX5wNX6R7V t0ET43kldeASFprJhnV+2bW7j0Fo/giPLCgY7DQcVbu385uhemqnlNpJYxxhqvVSg2cK KB6+XZC2qo56uhQOVL+v/T9p43AQlt+jy3pwm3MQyKZ76tQg8bcTPcJzPffbA1kUJ7uE 89E32m6TbNQbEgXyyj9lNM6YEOrQtLpxDZUKti12RZZjtmD1qiUMM82w8Rok5IAbXegR xZqm5aOiY6bY8tufak3IG4qIM0xKwwIlf71imGHYVRcclBx5aMlgGkbH528XJ1WP2csw olfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324199; x=1788928999; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=mqNoeHtdFOV/gb6ZNLRhsaJUt3UTdl0o5mgBjZ7nPM0=; b=o8rO5JGGiZvA9XgNfklHbP4f/uAZcmq4ETaKHioFSQ3VryqoctojAFNuJa4vYwXqBb CbLdqxtFodEw+CTmowoTfZvnpzndwLF37ZfVKnmqJbB971RCQP61getTkRrQNBb40MZL i3OCIoh1LoxKwSfku/SPLqIziC3PVqTyymlISKc0yIoetrfyM+3Hvatz/7sMdFp2WzFo NejR78kkQ/Xu8MqQsqhWxS20G619BoYPALTn+85FZ898Dj7ATxHhut4d710QbXrFOIvV IxTFek5ZzcZwU2ZdmDTOlDtBt6aHCi5GFvadVtKq2NK7MaDpA+6mv2vHR4EjgbbbVKNQ VL6w== X-Gm-Message-State: AFuF++kwsHl6hZG1MUN1JlBlnupQRiFjCrgG5y6K1/GUBffjWFusLroT QCgGw/cXZkAGPCsbYawJdQCOmh/CiFNlUDskk6pgCmzel6EBFM2rxNN+0KNwuuI8cFj8Bnb4Ddk oabzeq02GW0Is2YQ9t0GsU7B1hBknnNSJo7fvw5I71LcDXuiDv1I6+siA6pE97uIgDA== X-Gm-Gg: AYBFou1W33ihW1tB4WKS6Reic+5QRhK/2TrJJE3yqSgk3Zv3Mun8y2IUy7qOMLns61c b5qYwtlOqiATkrdpaQKHyMrr4EVd4BzJX31EM4GyUZAq+Yq0+5TVY75Chyiu8LI2tZq1i6UB/ey 9Da2bNTjlr37V/foKiSFc95bO5VgJVWubXObgtMnXn02v0ASgiBUsDYL7uKRNGbI1UESX+edKeM tKzgKW5v3Ay93Tfxm98jNbw7p/oMlaa23727QqmWrY/1N+SFWU2nDTzEpxquYStYxtNOVt++yJD u11l0wgiwHQbdhoRc+DFsl2CcAExaFDvqCvuM66fgTSeZVp0p8aP3NLIA+rzHbT/wlATEuXWowl QputLFTj9jstrsIEnQEXbuvKKDIkXQ1Do3ObAanwjkmlQrxgr X-Received: by 2002:a17:903:2383:b0:2d9:51db:7eaa with SMTP id d9443c01a7336-2daec741025mr35898095ad.20.1788324199422; Tue, 01 Sep 2026 21:43:19 -0700 (PDT) X-Received: by 2002:a17:903:2383:b0:2d9:51db:7eaa with SMTP id d9443c01a7336-2daec741025mr35897515ad.20.1788324198977; Tue, 01 Sep 2026 21:43:18 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Pierrick Bouvier Subject: [PULL 24/28] tests/functional/hexagon: update to v0.2.12, +test_{interrupts, sys_regs} Date: Tue, 1 Sep 2026 21:42:27 -0700 Message-Id: <20260902044231.843004-25-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX4SXMa5JJdp7N 0fkvHER883LDvvZAsnW2pdGMZZ5rmiwAarce1SnMWQsWoQA9Ts2VW9t+KN++ShV72pmguZ12xjZ QwWvOYwr2CouYq7Vo4el6XbCX2LdS7ouovwYj/5MeBuuJPicHaSZR8dXqPbdqmj/SbpbAo4ADhN F0GoHmPUFlB/x+7vxLHnrVQxImGHsPqhdDqqNvHO+yFxH+D2qNs15MqFAKzq+/ECdBC0lPWoPII mYZkenRX9QvbddR20UuvUadkPAmc10hsv3ATaPdAhoqfSwERHzaLyta2twX1EfaicWwL4SogRkG QA1lN3ZDLrvjfbWMGBdjhfQAjLYBiShamvZKFLZpBdyzykxOTmw1i1BzwTkkc4iQrWQI0FGEO4/ vY+ShwNkvAtYbyVSdxm6A71TPHF80QgLbohBlyZbqa3KHbyxn9x870x6mG4AajTGg5ju6sjucj4 LGuUqpfUIAZcUzBXQeg== X-Proofpoint-GUID: DzUl-exWMCQD0p4Sih0OeIG0dx4J4PWv X-Proofpoint-ORIG-GUID: DzUl-exWMCQD0p4Sih0OeIG0dx4J4PWv X-Authority-Analysis: v=2.4 cv=VLrtWdPX c=1 sm=1 tr=0 ts=6a97a968 cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=5vFef2XoAAAA:20 a=EUspDBNiAAAA:8 a=zjiCbJeFjdgwON9hqt0A:9 a=QEXdDO2ut3YA:10 a=uG9DUKGECoFWVXl0Dc02:22 a=bA3UWDv6hWIuX7UZL3qL:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX/KipI9NQllsS 8JhEm/Wkc5+piex4IDzxhVPB4BIKH3EEjPI6G7ABVBUJ0zPgnTuf4T/rjZL6tfK3PJAp2xYfnEM 0RvqzgOKqwUBFtn1cWYKmyPddKTsSmI= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 lowpriorityscore=0 clxscore=1015 bulkscore=0 malwarescore=0 adultscore=0 priorityscore=1501 phishscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324398551158500 test_interrupts also now passes in full following the iassign{r,w} fix, so enable it alongside the other arch tests. Reviewed-by: Pierrick Bouvier Signed-off-by: Brian Cain --- tests/functional/hexagon/test_arch_tests.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tests/functional/hexagon/test_arch_tests.py b/tests/functional= /hexagon/test_arch_tests.py index 0834398c3b1..8e71386c186 100755 --- a/tests/functional/hexagon/test_arch_tests.py +++ b/tests/functional/hexagon/test_arch_tests.py @@ -21,8 +21,8 @@ class ArchTestsUart(QemuSystemTest): =20 ASSET_TARBALL =3D Asset( "https://github.com/qualcomm/qemu-hexagon-testing/releases/" - "download/v0.2.5/arch_tests_uart.tar.gz", - "edb4f37b877a3a72a0e10920477458a43b40045d34398fee8cb763fefd342f4f", + "download/v0.2.12/arch_tests_uart.tar.gz", + "871a339bf78cac0ebaf1b2509bfcd5b249ad8190be33e0cf848283b2f6915323", ) =20 def run_uart_test(self, test_name: str, @@ -58,6 +58,10 @@ def test_int_steering(self) -> None: """ self.run_uart_test("test_int_steering") =20 + def test_interrupts(self) -> None: + """Tests interrupt delivery.""" + self.run_uart_test("test_interrupts") + def test_cache(self) -> None: """Tests cache operations: dckill/ickill, l2kill, dczeroa, dccleaninva, cache disable/enable, barriers, and dcinva/dccleana. @@ -70,6 +74,10 @@ def test_l2vic(self) -> None: """ self.run_uart_test("test_l2vic") =20 + def test_sys_regs(self) -> None: + """Tests system registers.""" + self.run_uart_test("test_sys_regs") + def test_threads(self) -> None: """Tests hardware thread management: start/stop, MODECTL state, per-thread HTID, shared memory, wait/resume, STID priority, and --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324288; cv=none; d=zohomail.com; s=zohoarc; b=NGwCYxiIBxGIZeorVfd0ZsK2FMvHRfFuy0P0Tm3uqPhaV7xuVrOcyjhNiwtAN20JVuoI6kp2rmFW0o7Vaip3W0cYEyzC2RZtQKEC5Y3b9QPIvsf0wm/TLLu65V6jI3UhFNiDv9lR1YFzvBJ+m2EOF9QMY/T2obwXj2cgq7zN+sQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324288; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=BXCn2/DAlW7fSNEp3PbSrMHkPZjLL4S2LpEYhBFGmRY=; b=JP7x88P7swQO9SMQ9yhGFrnO+MOaLa4W6eP/vbpgqJ8Ev0FhkenetRW2TLH2FymMX8RYAtlEd70mw85a6RihuunvxUim4sfaxyY1k6VtkT15otGu6K0uIisss/Z+4022GrZyX5R5d2ANhpFBUaoXrxMUeFTo3/11A1UbOsq1l2U= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324288886682.0956630142377; Tue, 1 Sep 2026 21:44:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1coy-0000i2-C7; Wed, 02 Sep 2026 00:43:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1cow-0000fy-EB for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:34 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1cou-0000Qh-Me for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:34 -0400 Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 681KTL0b3108772 for ; Wed, 2 Sep 2026 04:43:21 GMT Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ge1wpan9m-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:43:21 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-cc1ca15334cso969778a12.1 for ; Tue, 01 Sep 2026 21:43:21 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.43.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:43:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= BXCn2/DAlW7fSNEp3PbSrMHkPZjLL4S2LpEYhBFGmRY=; b=civ8CBpbHHt3JeVO 715Ohzqhpg6o8hk3K5wuVG4r8b7wjryPB0SDO0Bk3uIWIbMF2CDduPsX03LcMPuu TOINFhLbRLk1F70BlOxu7LWQ+zNZhn0gnYaj1hVlDgEPIaDo5adsaPOb+KwN64Ng bcMvBhNoEb/GyWXhFBDeMG5F8Xi0lehtl1SZj/W7KhC8dB5Ejs9H9Y/yipOL1JTA KLzvJRsnlDeKKC26Mk8djZgDDnW+v3Ajo2JnaNyNLp8+94EPo0aDjaMZzBQUGX8k 9R7Nj9Ol4JfODWG19F47pWLaBMsa1eArYyaX5VWr+LTC8hUMp820veHhXO3BHDN5 omINwQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324201; x=1788929001; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=BXCn2/DAlW7fSNEp3PbSrMHkPZjLL4S2LpEYhBFGmRY=; b=fMb/iTea5ho+d1LKjNTkFqg0ZC4x8gM11wj+kQlD0m2ULoD/ASuregC40n6Satr7dI 2TkY5jLbdFAWsDdbe84koIWILLUcKK4TLgJPO5DLnCy+5wWGleAhqzqpAKNU5370wSDd fnEDhgr9hN7NFZrncLIFpRoo+yMnhTYdg43lj5m5JN7XD41e3asMdhtAXMg6Zi0QjlcS g6immO34mLRrfExPsHkXQHM3FhBUQg16ZG9DGcmFB2edkvhqquUBcyzOwFzltvgNbYYg RFUYNhc/ziz20oZCDgn069X5cBdaG/Z6gHcpr24QqssIEx08vkzDRoFBABxkKS0s7hrp 7KNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324201; x=1788929001; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=BXCn2/DAlW7fSNEp3PbSrMHkPZjLL4S2LpEYhBFGmRY=; b=Uc4ADeruMq1BMgqXe/fQSWwp7awJb0tj2FjLGrGG8TQYdrSK1v61nLPZlwxoeuznGx xhOhF+AQt031Vf9AjkNjebrrhNfcbIf+V0KuQqDDaYM2MQMqJDlOVZuyMdasgGzBa+bf qiGZ7dQDij6GHEQrzAH7eE/q6EekCbHZSIZW0V1DyahjXL5TC+Pv34GVimdru/MMTZ6E An7zq+sIg99Gunqv/PBIE5Fpk+v3RrvbEv5M9rFNoy6+y3Ii1EZKt0oDzI7EZP3iLbmw n4jMyTrDT43touD8L8YYRYHT5iJIC9OKGHp58enY5zQQtkBCZLITB3ljEkVvekveRfmi B27g== X-Gm-Message-State: AFuF++n16R5QDY88nlAvaJ+z7jzW65RSVKCtzWgnk64tWO6cSyQgyWiy NcO9FGrvCUozioobQcnnmZZltC28UYLzDVX+PeHUX/bMcRLvBzeT0R9gGoTW4zmTdsZrzfg3sca 2fIjCZ8zoUfdgs85vwllfTRHSUAGec22XSmp6obHtTGwrb59eRda0LLdqdHnO6dxKEQ== X-Gm-Gg: AYBFou0DV0RdCEIJ0qW1k6+YF9ZFajKHNe3zM9/kGdK2fILluWmZNrgCI3s+xYsy9CP E6ruErx8BpcBWaWMDBYGuRwOlKwWhfkQPUM3b+jBbBO3t0dR1jPAG01uYz/bZ9mjVtJr/gMPl48 lO9dVU9mXJTGE9JKJ1sT69JqcyQ9vI9nj13D54PxoOrU4JpnQyGcfqKEVW9IzwRGgZBQJxwbVvb Bz3jdnIiBLlXK9M2Q83kvmoRJRqzXus/lTjCFIie4lRIBhbXH8IUelvlbVIsuE+3+c7BET0bK+P tw0fu9La8wX6Dd7iRRkF2yRSGgTLCLTyFMOWxLLjL+uRIe9VdpTwDa/SCOrKHSc3CEdYhKk7b1p prCOd3528RpcmDXiYglXgjsJSYRbbYpP8z8awbrpq+xPxfii2 X-Received: by 2002:a17:90b:3949:b0:398:9c00:29ee with SMTP id 98e67ed59e1d1-39aee208a63mr3307734a91.22.1788324200636; Tue, 01 Sep 2026 21:43:20 -0700 (PDT) X-Received: by 2002:a17:90b:3949:b0:398:9c00:29ee with SMTP id 98e67ed59e1d1-39aee208a63mr3307686a91.22.1788324200200; Tue, 01 Sep 2026 21:43:20 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Pierrick Bouvier Subject: [PULL 25/28] target/hexagon: invalidate translated code for user icinva Date: Tue, 1 Sep 2026 21:42:28 -0700 Message-Id: <20260902044231.843004-26-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=F8JnsKhN c=1 sm=1 tr=0 ts=6a97a969 cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=ooCGj4RZbTp4S4j5W-YA:9 a=QEXdDO2ut3YA:10 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-GUID: eOCKQqqFCLjdVHa0B2aFHt_6DcmuhYoY X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX0bd6cBPP2R8X Z6XDGEC1Wpk76uk8xnn6fvNmqBzfBw/Ui7CzeTG1bA/S54x8Gl7/hl01JRKv2bOryiLW5fpREmi Fg2k2NVNQrtwXh93oD8/Uc40/bZE8GM= X-Proofpoint-ORIG-GUID: eOCKQqqFCLjdVHa0B2aFHt_6DcmuhYoY X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfXwJ/XAYExjTuN GxVdMi2KddrPQf6mNJREMZ6DiJRnUxUbNJurYh0I+HuFibSzMHWpvPAtnTsAHZWzZi5DngL0zyP WYuKdai0Ve5TPmVEd7+FqPlu9Fkmfmv/Nwl2zGDBveV8MW11TXP7TBEuwJKFjq7yx6OUn9OPfuF wZJQYB7GXYswnHLrlDOjyGij2g6ivvNmyHkxjUnClwFbCYbHYNlcarUqa+ATRTdOz8Snlq/Y/uY HCG4lPUoj7+OlsK2h5EkDX6k6pr3cd/ZZeHEE+3TkVbj7P+BvqfDbD0rzOnXbjXpWWpe7goVSt5 6cJpntttWejMtdH7quU/MWwGYM6wCSFiB0yP/NTfqBJyJkQTYZJ0TVuYtICTHmgxo4JL518rBcP 2vfjzuCT5itmeErUzpV6xTYBTqPxDd9LA3WYB6uFmmAW5VvEEPKz/b4kjQvx53QHsMI4Q99vzUG nLUs1CCyqAxGpFcUNHg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 priorityscore=1501 spamscore=0 lowpriorityscore=0 impostorscore=0 adultscore=0 malwarescore=0 suspectscore=0 clxscore=1015 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324290905154100 Route linux-user icinva through a helper that invalidates the addressed icache line under mmap_lock For system mode icinva has nothing left to do, so it stays a nop. Reviewed-by: Pierrick Bouvier Signed-off-by: Brian Cain --- target/hexagon/gen_tcg.h | 9 +++++++++ target/hexagon/helper.h | 1 + target/hexagon/op_helper.c | 15 +++++++++++++++ target/hexagon/translate.c | 3 +++ 4 files changed, 28 insertions(+) diff --git a/target/hexagon/gen_tcg.h b/target/hexagon/gen_tcg.h index 40e03781d36..1d25391282a 100644 --- a/target/hexagon/gen_tcg.h +++ b/target/hexagon/gen_tcg.h @@ -497,8 +497,17 @@ do { RsV =3D RsV; } while (0) #define fGEN_TCG_Y2_dccleana(SHORTCODE) \ do { RsV =3D RsV; } while (0) + +#ifdef CONFIG_USER_ONLY +#define fGEN_TCG_Y2_icinva(SHORTCODE) \ + gen_helper_insn_cache_op(tcg_env, RsV, \ + tcg_constant_tl(insn->slot), \ + tcg_constant_tl(ctx->mem_idx), \ + tcg_constant_tl(ctx->pkt.pc)) +#else #define fGEN_TCG_Y2_icinva(SHORTCODE) \ do { RsV =3D RsV; } while (0) +#endif =20 /* * allocframe(#uiV) diff --git a/target/hexagon/helper.h b/target/hexagon/helper.h index e39afd623b5..71c8da4c46d 100644 --- a/target/hexagon/helper.h +++ b/target/hexagon/helper.h @@ -115,6 +115,7 @@ DEF_HELPER_FLAGS_4(gvec_uabsdiff_h, TCG_CALL_NO_RWG, vo= id, ptr, ptr, ptr, i32) =20 #if defined(CONFIG_USER_ONLY) DEF_HELPER_FLAGS_0(utimer, TCG_CALL_NO_RWG, i64) +DEF_HELPER_5(insn_cache_op, void, env, i32, int, int, i32) #endif =20 #if !defined(CONFIG_USER_ONLY) diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index 2168c6361d9..71555a7ba36 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -23,6 +23,9 @@ #include "qemu/main-loop.h" #include "cpu.h" #include "exec/helper-proto.h" +#include "exec/mmap-lock.h" +#include "exec/target_page.h" +#include "exec/translation-block.h" #include "fpu/softfloat.h" #include "exec/cpu-interrupt.h" #include "internal.h" @@ -330,6 +333,18 @@ int32_t HELPER(vacsh_pred)(CPUHexagonState *env, return PeV; } =20 +#ifdef CONFIG_USER_ONLY +void HELPER(insn_cache_op)(CPUHexagonState *env, target_ulong RsV, + int slot, int mmu_idx, target_ulong PC) +{ + target_ulong start =3D RsV & ~31; + + mmap_lock(); + tb_invalidate_phys_range(env_cpu(env), start, start + 31); + mmap_unlock(); +} +#endif + int64_t HELPER(cabacdecbin_val)(int64_t RssV, int64_t RttV) { int64_t RddV =3D 0; diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c index bbc2732e994..be75e5fdeb8 100644 --- a/target/hexagon/translate.c +++ b/target/hexagon/translate.c @@ -354,6 +354,9 @@ static bool pkt_ends_tb(Packet *pkt) if (pkt->pkt_has_cof) { return true; } + if (check_for_attrib(pkt, A_ICFLUSHOP)) { + return true; + } #ifndef CONFIG_USER_ONLY /* System mode instructions that end TLB */ if (check_for_opcode(pkt, Y2_swi) || --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324312; cv=none; d=zohomail.com; s=zohoarc; b=XiKhHTFWKp8WM7XOyZFrT+6DUaJIOtMfwaDVOAiz2CpctzLouV9CX/Yn4JayXZ+IYXHnFN3ZDcYtegOQdMd3beWUiPZE5BD0Ux6HPL5LFb4WXv+vwSqWpJbPkmJVnBbuzLnFAEdYkBFLSHdlpgzzC1Qigi8aGaJyySG8CThfWhM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324312; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ikxjYEykn3U+5nMggEF2/LG7xjE5m6kGU2N4izonSg4=; b=BgkqOBeuYJ6w7uhumWN4/TK4BTuEITpEhiTrSVPdeQ4g9uNerAA6c8lMx6cxK5xh9Ys4SFQrgcE95fDKM6Zj+lB6u2s580rOqRnRn3HJXS9GCngIg7z5Je0XvB3LQAeGsodPZguUJTAErJPb+wM7tv1covAd4IpN/VpMdnayjug= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324312369477.11902725981247; Tue, 1 Sep 2026 21:45:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1cp1-0000mQ-1L; Wed, 02 Sep 2026 00:43:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coz-0000kT-5L for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:37 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1cow-0000Qs-AY for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:36 -0400 Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6824M1W22982864 for ; Wed, 2 Sep 2026 04:43:23 GMT Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ge35k25ue-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:43:22 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-398d292eac1so1241527a91.1 for ; Tue, 01 Sep 2026 21:43:22 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.43.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:43:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= ikxjYEykn3U+5nMggEF2/LG7xjE5m6kGU2N4izonSg4=; b=JcN8xgpiN1WUCpgt uktOA/uhhohdnHgMEg9E8PVClWyoNVjB9/NpYtSt8AWUr9PeAMKyQDiRtiwqbHQB QNDTc4QnIPoVdaSjQ4x+E/nyEq+K8NCBbySsExqA6HsAbliqGyvL0Z6MpqDD2xGy cRuriV6bfABtoDSqhypSEIsEHF7EFCYMUh/oYxmDTII3cyszAPcc2f2wSKL0RH6h zd2Ln/+gukV0EFzyXx1mAFkpcHj6Fz+82wfBryzZm2pth8k82H/XIiZe62O7EN3N TKsxNuOmRMul5axAJTOIcO2n5KAPDSogb8Jn1rObkCjlS2csbX6O5M8OxmJmAQaN XyLTsQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324202; x=1788929002; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=ikxjYEykn3U+5nMggEF2/LG7xjE5m6kGU2N4izonSg4=; b=heppa92C8L8O8NDwomtJRSQvwzi4ZTc5hnCvOjOftJPUT3MifC+jyWIj1K5XJYjKWO u17Wkea9FbWn9GCPTheAkBi+fzjShoKL2uiQ1/I9V6q6p04sC1TnuV2uH17nGZrZkTBq W1QJ5pU/oARKvo/WOABMuSFZnxbDwGqJwr4alrLsjEle4knqIkbBeYeuRnpR78CX8Xli 5TZwRWAPmNsMyH1NBSu4tnwEIPU9XRQa6FUB8jJXse3EmFabgGUBo6v5YVyOP8SX8Aj9 BQnvuIlHRXq9pR07wo9IKJS/2OVj36mgz2HhfxuyTBt+eSI3VO4sYGEvBBwqoD1L803/ ZSSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324202; x=1788929002; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=ikxjYEykn3U+5nMggEF2/LG7xjE5m6kGU2N4izonSg4=; b=i0I6ZXtPGOefFH4q61JlHJKhdeKYtba2P7CyYk+7n6VpGNCO8ZruWrqn7UdOuMNjlQ 5TjR4KtAr8BI9bpkIkPI6x6OjYvYDrkqlvwPSR+Ipm/qIuvNHjHMl058fPDJCvZOScL1 /nyTm9Mh8yyjNTUS0wPi4C7FqQ1+bDHkXU9dSL9l4a4Uu1cPMsYlJd7UcBx6TUM2VBFr CyQckCbIVzCAhZZHraUJVVlJTamHueToL73wkwBr2wn1neaU9Hh7pEnaEU55CCRJmJ4b 88+pTKpdC9Relg7YugVDZvGdZO7dz8M6SqhTKIEnJoigbSMLDYuD4YBovXZ6mjN87rR9 9pqQ== X-Gm-Message-State: AFuF++mfQZb1JSqCgWLBdlX4D7ifLgCUt2fHloik8sPBv5Zr/Wz7BHzI SzFFpmMvp5fPI6Kb+Z2znU4IrhuF6W+j4I6PnhaUW7JXSoWmkwtXrSa2YKFY0GL6sgD/nRhRF+c 7/b4PE9bk32cKk3aC3FFBYJ8xV1g8NaPr/L8mBcSiSOKX/a1NDk7azI9QI2jjQ4Bvwg== X-Gm-Gg: AYBFou0AMHTyV8ldQJ9MKwqFXzNo7m339MUignRbMRipwQ/W6pYsk8i63dMcc0WfSTT fPJFHc9c+DS/jm05uZzG9nJROrYlpaBxjxz6hkZrfOf2b0VDHqpjL6H5cwAB2JuwsIjE35fBrSR H8q+AbQzljLaoDa2BD1icI6IDPPNtM69/vxO94mnVzaIARjLCC8ycnUyaT1tuw3vgdsE7Qfqsin Eyqxrz1ivcfXcC/Y4V0cZcqV9t4Bcm9h1sb/+Ep7eGSFiXQAxmZfBKNPbUxkV+nKHTuUtqXV434 gAmw9SuBxt1cOYWFlfz3dongx9CXSS63d18secTnK3lr7PNyqIKwWjAu7f/Zkpe6qSQLVQfPk7k CkdHxoUNTg3tKsdbOpB/z3xYojpybZ2b8c/SuvhMZ3cinlpK/ X-Received: by 2002:a17:90b:560e:b0:396:40e6:f631 with SMTP id 98e67ed59e1d1-39aedf5da53mr3414198a91.3.1788324202228; Tue, 01 Sep 2026 21:43:22 -0700 (PDT) X-Received: by 2002:a17:90b:560e:b0:396:40e6:f631 with SMTP id 98e67ed59e1d1-39aedf5da53mr3414143a91.3.1788324201761; Tue, 01 Sep 2026 21:43:21 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Pierrick Bouvier Subject: [PULL 26/28] tests/tcg/hexagon: add icinva test Date: Tue, 1 Sep 2026 21:42:29 -0700 Message-Id: <20260902044231.843004-27-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX0M293JTm/0ic /6RM7qaSREXdkCs3TB7FQUDjz2OoJXNn4t183MMzpqBu1/71mPCzHaUlTW0UqOrzr0f827FjBlU gHX+0odn2Kk43YKrat6N/1faeRtAxpxFRk6IT/wM9mtQBgX/l0JoPFgvV7T6ah2e/KEPr7v9sNz Za13QuCcEpPFwqGrTHTFfOfpH6ifvilS+DL+NrCGH8iyH+ljD1YLPW/GT/ySKNC8tXmnt8VTNmq JLeaALgc/Oh4s4X7sKt4iwhxN1KXWvOjhGd4jmSU0YhM2JGiV9WnXgyA+hVxSjb357YK8HxmggG G/wn9TaSWxqzjXKoZk60C3+GPHCSw854gQfK1SmhNNBo0rJSx9J8DJ208LKQ+z8vUS3FBxH/aOP zAL4bD/QnMdKUSLjxAL+JvSRyQpOEKMNlFLvqxIhcejy26nmD2HQaoGL0pJCTy0YD0Byud2R+/r J490Up+V1ghrDkkqAIA== X-Proofpoint-GUID: C1s7VMrHE43CD12swDzWA4BZ-7hO8a1V X-Proofpoint-ORIG-GUID: C1s7VMrHE43CD12swDzWA4BZ-7hO8a1V X-Authority-Analysis: v=2.4 cv=VLrtWdPX c=1 sm=1 tr=0 ts=6a97a96a cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=7vJHg93iHWy1kEV8rwgA:9 a=QEXdDO2ut3YA:10 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX+nTgmvDbL+D/ /aIlT1klfC/PqBIK836Sgf4p51E1rZp/9AWGG+72aKcVYT4Zik2vYVl57/sJhovtH/Y+cjJV4pE GvzcXai+pmxAyUI9AuWSKJrP8GVCl24= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 lowpriorityscore=0 clxscore=1015 bulkscore=0 malwarescore=0 adultscore=0 priorityscore=1501 phishscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324314262158500 Reviewed-by: Pierrick Bouvier Signed-off-by: Brian Cain --- tests/tcg/hexagon/icinva.c | 70 +++++++++++++++++++++++++++++++ tests/tcg/hexagon/Makefile.target | 2 + 2 files changed, 72 insertions(+) create mode 100644 tests/tcg/hexagon/icinva.c diff --git a/tests/tcg/hexagon/icinva.c b/tests/tcg/hexagon/icinva.c new file mode 100644 index 00000000000..c75adec6779 --- /dev/null +++ b/tests/tcg/hexagon/icinva.c @@ -0,0 +1,70 @@ +/* + * Test that icinva ends the current translation block. + * + * icinva only invalidates the emulator's cached translation for a + * code range; it doesn't retroactively fix up code that has already + * been decoded as part of the still-executing translation block. If + * icinva doesn't force a new TB to start right after it, a packet + * patched via a store immediately before icinva (with no + * change-of-flow in between) still runs the stale decode baked into + * the current TB instead of the freshly-patched instruction. + * + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include +#include +#include + +int err; + +#include "hex_test.h" + +/* Encoding of "r0 =3D #99" */ +#define ICINVA_NEW_INSN 0x7800cc60 + +static uint32_t __attribute__((noinline)) test_icinva_smc(void) +{ + uint32_t result; + + /* + * r1 =3D address of the "patch_slot" packet below (1:) + * Overwrite it with the "r0 =3D #99" encoding, invalidate the + * icache for that address, then fall straight through into it + * with no intervening jump/call. + */ + asm volatile( + "r1 =3D ##1f\n" + "r2 =3D ##%[newinsn]\n" + "memw(r1) =3D r2\n" + "icinva(r1)\n" + "1:\n" + " r0 =3D #11\n" + "%[out] =3D r0\n" + : [out] "=3Dr"(result) + : [newinsn] "i"(ICINVA_NEW_INSN) + : "r0", "r1", "r2", "memory" + ); + + return result; +} + +int main(void) +{ + int pagesize =3D 4096; + uintptr_t page =3D (uintptr_t)test_icinva_smc & ~(pagesize - 1); + uint32_t result; + + if (mprotect((void *)page, 2 * pagesize, + PROT_READ | PROT_WRITE | PROT_EXEC) !=3D 0) { + perror("mprotect"); + return 1; + } + + result =3D test_icinva_smc(); + check32(result, 99); + + puts(err ? "FAIL" : "PASS"); + return err; +} diff --git a/tests/tcg/hexagon/Makefile.target b/tests/tcg/hexagon/Makefile= .target index 641f6bc10e7..f72bb8a6b45 100644 --- a/tests/tcg/hexagon/Makefile.target +++ b/tests/tcg/hexagon/Makefile.target @@ -61,6 +61,7 @@ HEX_TESTS +=3D multiple-writes HEX_TESTS +=3D privileged-insn HEX_TESTS +=3D unaligned_pc HEX_TESTS +=3D unaligned_data +HEX_TESTS +=3D icinva =20 HEX_TESTS +=3D test_abs HEX_TESTS +=3D test_bitcnt @@ -104,6 +105,7 @@ circ: circ.c hex_test.h dual_stores: dual_stores.c hex_test.h fpstuff: fpstuff.c hex_test.h hex_sigsegv: hex_sigsegv.c hex_test.h +icinva: icinva.c hex_test.h load_align: load_align.c hex_test.h load_unpack: load_unpack.c hex_test.h mem_noshuf_exception: mem_noshuf_exception.c hex_test.h --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324279; cv=none; d=zohomail.com; s=zohoarc; b=NTtuWxtC1L1KdS/evkIvkufM2cvamC0IeZSg5G2/uWSk/bnYVUynUKJ5zlY/AWMmXxlCJvef4Oeg9KRAlxWs/0jYZngTiMdtWZWEcYKsTJmdFyukUYUuhT5cx3cXjdTn801XEHGXmZa/ZRB/4zS1ClhjisMm2/rH/DdblVPVqOU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324279; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=x9QPyjjIHqOYjku0pp/AtcdU6VC0bKnTGUQZkq/9rU8=; b=c0xVx6ykQe+k1xRlwperpjWrai0wXHLZRQnzZQsIiA+d/nr8pTQIzbc+jsamUn2A9v6Ho8S7dXv07eiBZmV8+zouV2VWwnDSUbjY+stg309FfMJBTEzWL5F9On4BnPt48WvNJtRbDhdsL0ZdYZbJqkC+6ZA3p0K2V67VjEZ/m2U= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324279880487.79738062701915; Tue, 1 Sep 2026 21:44:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1cp0-0000m1-KA; Wed, 02 Sep 2026 00:43:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coz-0000kS-5F for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:37 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1cox-0000R3-Dd for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:36 -0400 Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6824NWK22468868 for ; Wed, 2 Sep 2026 04:43:24 GMT Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ge39cj39v-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:43:24 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-38dbf293831so1530845a91.3 for ; Tue, 01 Sep 2026 21:43:24 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.43.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:43:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:content-type:date:from :in-reply-to:message-id:mime-version:references:subject:to; s= qcppdkim1; bh=x9QPyjjIHqOYjku0pp/AtcdU6VC0bKnTGUQZkq/9rU8=; b=Ik mqQUDror/pASZGfcORNFW4zgGOE2CqeAkQt/jsOm0gplEG+dKK2s5/gCBDxibV50 r+rmcAPtViweGV2v17gx70wtxouEhEI4qhoezDtqC4/o9W4ujYm7CmRunxpthDVM jjeRhxanf/Uac3jMMJnM9tEp4cmSlHPglwoAEp25DaXR2J+uYb7IZ4/G4reno4wv is4eCQ9uA0QUiSOnQ9g48i4zrx/Q1BjHmkaRxp9dNlGsfPBBCD2/2oYQKY8zEDbg gJ6N6YJv1jLiD+F0sxGcyf5hIexnEak9hymOLmUvc/bZMyEac3WIVppcA8vn0GfU HhlVC1zCTK+kMM8cNnfw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324203; x=1788929003; darn=nongnu.org; h=content-transfer-encoding:content-type:content-type:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to:content-type; bh=x9QPyjjIHqOYjku0pp/AtcdU6VC0bKnTGUQZkq/9rU8=; b=ic6ULnYPbel/6KpT9sAWcIJHCAUiIcDs+FzPN72bJwvQBBQRHtXbBsW+TFpY6PtTLd XoFNVpnTczRmpbJd+CWCgVYsem73s/atWXSFbQWrE/0M04/+lau3mh+bQXlHCrfWlveo 499CriPUPATp+/9TKIjx9UjsJjtDeHeR/XCOdXKOBOYYlYH1S+uf099CRCYU1EBCQiDD g6GpWY3N6t1mHtaIEFj97iyCyU6Kwmf0VJLpQxhVhZi1PYW9OTmyCFhZorBj184Gf9hl JSwqDmmlERn8E9U6mcmu5BGNjzqNcE69SIcmUZtmcITezApf1jjMVzp+vA5RyVXTu4AB ZQcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324203; x=1788929003; h=content-transfer-encoding:content-type:content-type:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=x9QPyjjIHqOYjku0pp/AtcdU6VC0bKnTGUQZkq/9rU8=; b=cYAejJZQ8LSjKF2ZE1S2yuxzNwUG4zOrqEBWm4uOOs4/Hf6R5P1EZaPjLMWBu5c0x2 Jno0N2gmwVSlPyDLhwBiHaB4PZipZJayY4+JpsyMb48WjDcYogPYOUs/M7SFVmZE5Bw8 D223jW0iHHQUMKsrPS9YonO6MchV3/wxjuaxGP8LpgnyARM45lKFFy3GyoiulMITaX1E yu/AK3q522Jd8nLqwgwHCDcTq9+6ptOEMdNdsEP7zqpPN6NdplURZU2tcyFGztnuWYuG K0OnqtFYFYgUNVjWZd0ptK+3MfCmSWhpueyLxp4O6vIrwxBCr9Hs+IXo5vYE5Euz8Kw8 OJrA== X-Gm-Message-State: AFuF++lU5rSfeq09Oq3xIGuCopM6NNRT7Dq9b0jttmHPWBPU//aB28Z7 5uGyxq/hTmRYJpp9/4n2y/4spBIt6TKTAEbgSLA0hjx+gurhqzcxciuIlSomGhMBjPsp0HbwgWm 1b/iyFM6Hzk/z8WWchDu49UJC1jO4l7vc/nddo2K8odOCFcVQYIdMdXw8416YjXtVpg== X-Gm-Gg: AYBFou1M+blcySxgynolsIu/XSHXbVZ1oUMAV+B0tQ5CwWORHplCZFuemIl+g8hGnEF JkWdkKf3extwxNKL7LCn0tqHU4odO0I0UMNVikX+hCk97h/dPXZlaDx3LCUsiR3bxrvg9+uLwex KSOedSHg7MA9ytCn88fevOIt2m1Y7z5fFzYUF2FywUJRljEemabBNzYN3MFKakl2WNcfuuPyZVz s0Nh9rCuKsiTGIsRWQ6sn/5GAA9/l90b+Rp77q2thNYTgYbdNTYx5fuHfx7vCJxahFa+LduMkSA p+ui4B0phzwvR0jxY67IVLjGfXCXRpiKmWuJyoz2TBjhxRh/17Y6UFajDdKcHWnT4UFypqXwPi2 vviwSdU9NNS552AUIzF0M0xjr1ZMVW/GB9inZ4FD05/Jlw0z3 X-Received: by 2002:a17:90b:2cc8:b0:396:6344:3b63 with SMTP id 98e67ed59e1d1-39aedf8b4f9mr3366031a91.2.1788324203297; Tue, 01 Sep 2026 21:43:23 -0700 (PDT) X-Received: by 2002:a17:90b:2cc8:b0:396:6344:3b63 with SMTP id 98e67ed59e1d1-39aedf8b4f9mr3365985a91.2.1788324202875; Tue, 01 Sep 2026 21:43:22 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pierrick Bouvier Subject: [PULL 27/28] hw/hexagon: assign a distinct htid to each DSP machine CPU Date: Tue, 1 Sep 2026 21:42:30 -0700 Message-Id: <20260902044231.843004-28-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=T968ifKQ c=1 sm=1 tr=0 ts=6a97a96c cx=c_pps a=RP+M6JBNLl+fLTcSJhASfg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=2cblKrENZZ9LBr9VnxsA:9 a=QEXdDO2ut3YA:10 a=iS9zxrgQBfv6-_F4QbHw:22 X-Proofpoint-ORIG-GUID: rDhxiMZc3mzOpyTvwg_DVSVq7SFyrlBY X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX23nCUBOqkaDX 6ftD21ZSphAdXacj8CcFhwHR/zybCEq9f6qFX1RBkUgtytKt2kVLVm1cdZ7UhvOW5GFZfu4Ic02 UNB+d7jPKbgioAoZJiMqQvR23r+ralU= X-Proofpoint-GUID: rDhxiMZc3mzOpyTvwg_DVSVq7SFyrlBY X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX6nwnKClnma2S Nuy/nVCnotl07t1UX3PY9nIZ2V3q8djWVoiNT9qNXPb6GHtJgKeJo0VxdqaixjrcTLSzPKG2ziK UwAHgoR5dsFdxJvy1kuSHNZoVoSJ6epGQuCJDGN3gEhsFg9nu5DtTYy7prfJzv9WIE6XPOW19/S Y0HSJBX0Xo1AiTEhzm1AMUyDu3b9Ub3ydusa2/adOULIPhVrz+KbzoYC59xLcWbQ86dXW0+LsU+ hwn7YGXagUAOKOKd2zTBnxXNie7ETmwqo3jahWNhn1cs0PAwn57F8QwgwUpemP0KGBdrBmIHOJy lmaHZOuWp4hKoSSzV5IWV2V/7BeEkKa9uLsOx4LjVW/A+jaeVYVwbhRnxBrDMNcxz3FxCuJ4loM xzVx8igUWB/9rUdmeRslXMutqvwDw11EnwyNnFPVeKnUyDqpzcBo/oRt/jbypN4LgseE57He37u aLuleTln3egkXwyDFFA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 adultscore=0 clxscore=1015 phishscore=0 priorityscore=1501 impostorscore=0 bulkscore=0 spamscore=0 malwarescore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324280150158500 Content-Type: text/plain; charset="utf-8" The htid property defaults to 0 and hexagon_dsp.c never set it, so every CPU on the DSP machines came up as hardware thread 0. This bug was causing h2 test failures. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Brian Cain --- hw/hexagon/hexagon_dsp.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/hexagon/hexagon_dsp.c b/hw/hexagon/hexagon_dsp.c index 2198436a440..5b2b6e312b6 100644 --- a/hw/hexagon/hexagon_dsp.c +++ b/hw/hexagon/hexagon_dsp.c @@ -125,6 +125,8 @@ static void hexagon_common_init(MachineState *machine, = Rev_t rev, HexagonCPU *cpu =3D HEXAGON_CPU(object_new(machine->cpu_type)); qemu_register_reset(do_cpu_reset, cpu); =20 + qdev_prop_set_uint32(DEVICE(cpu), "htid", i); + /* * CPU #0 is the only CPU running at boot, others must be * explicitly enabled via start instruction. --=20 2.34.1 From nobody Sat Sep 26 20:50:52 2026 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=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1788324306; cv=none; d=zohomail.com; s=zohoarc; b=Tmnu+kwF6S4ib2p9uiRhymhXBNPL9IdFvEZvSKux5qYx5ZK8e8Q2ZlwEOIBdGGuePi5SW7/ZPaDhxJ6TzzoLcVLF0BvB1fgA3/K8SgZAok4NffMuFdag1SC6mJf6ORyoLv2OZNpgbPTpbYJzlZ9AWeQSP/ppLaXtt+u2unt4tuY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788324306; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=LAqQgUytRG77JHSI3ck1VNsfjBat8NVIaDYB4UNVp1c=; b=FsuSOB5bj7j9b64SzF84WBRKSrrrmJhanOboxjOZ2PsSuDuO/LjbJnuQkcEX/blejMyia6VcxLf1VK4pIDA+dgRcDLJnMih06smkrJ6vWFXZx8A017FAmhai1i7qpDh2y8xSDIcnyJw4VmCTkpHCkF+bRLsZSa9Yt6caFUyTE3I= 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788324306864443.74511963196073; Tue, 1 Sep 2026 21:45:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x1cp2-0000nt-Pw; Wed, 02 Sep 2026 00:43:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1cp0-0000mC-Q4 for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:38 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x1coz-0000RK-5r for qemu-devel@nongnu.org; Wed, 02 Sep 2026 00:43:38 -0400 Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 681KTDUQ3663784 for ; Wed, 2 Sep 2026 04:43:26 GMT Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ge37j24hv-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 02 Sep 2026 04:43:25 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2d7293f13c6so7944005ad.2 for ; Tue, 01 Sep 2026 21:43:25 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-32f079c33e9sm2933984eec.4.2026.09.01.21.43.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 21:43:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= LAqQgUytRG77JHSI3ck1VNsfjBat8NVIaDYB4UNVp1c=; b=O88gAtJsNvcZDVRQ kgk577s4OtmYxsd+W2/4Q+RL8iuLpxtwHSD1c25UeIGJH/Ku/5DIfTiHMg2pe+s2 CPGf+U2f0wAD9WTyByPDc87mIkJyVqZJ48P0xu7qGd4l+AbuvGB3xRGaxyCh0IQ0 SLYbLsZ1cr3B7nci5lpWHnb45uNvQr9iIWqpKcXse5Vj5tCVplFDWtopei1PQvG6 l1mJ9IhuzRHKovKLTQYsp/fYEt7KK9MDkThH33NMr0I/vcDzO4JlePG1beh5UFVJ AMQ52iwApC9wokKUti+GX6Ka4dT2l/n6o4FMYgEMXfE6eDZS434oztDDmPdq+Ebf 8lQoSA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788324205; x=1788929005; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=LAqQgUytRG77JHSI3ck1VNsfjBat8NVIaDYB4UNVp1c=; b=AVCMLKWLd4Wk7JerrJXQUKMVAKn9g5UzLBQbtCI3AyNwzd0s+VyiUv6vtcM90e3k/Q deFqXGLjxbNHguzJqcz8cflKJqM/AWKBv1Hmja+4uimnOASlE0m39frg8ujt9nm9u4S8 KHN/asn60joENyBcQSxR96ius3wtYNOSmW4PwFDk/x/0Iufr+LgBzhvql7ACgtj9gNgv dK6Q7U7fWvLPQ05psFXdUyskJbsG45gB2BXMarbBETRfXGp3BuHy0LTNHqohr3U3Gac0 16YuwZ0FA8yRVl5THqCg/0sXCgJyeudOeV+SW9HUifV4qa8UBzcHh67sFmPqv6+D17i2 tx5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788324205; x=1788929005; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=LAqQgUytRG77JHSI3ck1VNsfjBat8NVIaDYB4UNVp1c=; b=ri08nCn7ZDcqFl9WwC7X+2r3SuEhqwW0WSXKnXmxlCGjjXzw59g+iN22LaAX48xsTf iRaTFPzQ1zTZPG7zDcA57WPR2naagODMsGfh3nA5ypJhhWRM/5HSNtPc1M6XMbgKylJz K/rZDA71RsF93AQqtuMHgp5X/JJ9RrIqSRNO5YLZf0pPkNtEpQnmBGKf9r+coWsU5Y95 8wOHOC7nP8ShnMoeouU/nUlOIwhzY2sQIZvzyVBAMVFK05/7IkpX31AcuUZ9pg5t5IqU fRAnSS928xgEI2+viDBOvngjHy7U8cruiYMw/DDbwgSd3OntI0s3m+ZNXwLnHIjBGEgN y4PQ== X-Gm-Message-State: AFuF++n+uxfs9yOCynXeFXe1Irj3KAZPEihVMfrXZ4gfYm6BG1B4IZpE x3IUHzjLW/r3Aw7zFLP9n4NfXyGCfpfwteG0ZgW1bllOkhUJiUzUCQPDszX444cW+VNckxAxY1k 9q5dFaUB5jWW5g/L5C3HAfIyubixnBhVzNU34ghznXoD1vSYnGsmmhJjIm9RtNkFIvg== X-Gm-Gg: AYBFou0Sb7+oB3aAnqldIU+G6O823u//oQLlVEA8SQg4I32TeiYLLkBpYjSD9Nv9jtf mV7F72pltS2BVV7HP/5qLmxeSvhlhSI599invOeEnHLZjEOrY3/3Co/aGT3IZXTsBhayO/hF5oS HQwKf5fjkSTKB4KDMTf6fx2Dvvnei33b/hjr35/Xq0G+Rmk0lb0MI3EVbnPoghCmzz7EJZz9OJ7 SpOUQRokiAvLoGJdS6kMTnIBrPPrX12I3at93E3VMIFV4TFGd3tfwK6OjDWJh4xYmN6FXKu2Plc aHrOGUd1LHqRIW+4bJ1bKCIYmwd65eZHpzmEL4hVQvo2594WWopjRuxBncy1mXD0f+qsb0deKqT LihWuU/zkWo4AXL3jXhDJUPgbKQCbJIXudUZUbwCiLymXTEqw X-Received: by 2002:a17:902:e74b:b0:2d6:df31:5bd0 with SMTP id d9443c01a7336-2daec71798fmr25412135ad.10.1788324205029; Tue, 01 Sep 2026 21:43:25 -0700 (PDT) X-Received: by 2002:a17:902:e74b:b0:2d6:df31:5bd0 with SMTP id d9443c01a7336-2daec71798fmr25411525ad.10.1788324204469; Tue, 01 Sep 2026 21:43:24 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, richard.henderson@linaro.org Cc: brian.cain@oss.qualcomm.com, Pierrick Bouvier Subject: [PULL 28/28] hw/hexagon: decode an empty TLB size field as 4KB Date: Tue, 1 Sep 2026 21:42:31 -0700 Message-Id: <20260902044231.843004-29-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> References: <20260902044231.843004-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: b6uX5arIMhOAkNRpV9sR8T6EpmaVqSrk X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfXxLXfilPT9F6g i/EjQIZePQRfJyaJBGQP/L3B6Uhd8KQu00H/2pkoJrh4VlXsDvn6xSHTB5Q4wNEbtFe5uki78Co EChB+WV998WcualYZunkBIf3F6WEBT0= X-Proofpoint-ORIG-GUID: b6uX5arIMhOAkNRpV9sR8T6EpmaVqSrk X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAyMDA0MCBTYWx0ZWRfX7B63GnDwJc/K HS03AClNbywaL2xnvfvjXuPwZcho0u6xS5HAis7Gl3aDETOK6rqD7TrhNPnokfVIzbXRFctvnoS 0Jma10U+vGLyM5idkvSy6g2csHJoLigRlR6fCe0ICxTQDSvJDm3mfW+O/f5Iq8Go/2aSGfA6F+x dyPiQhztqxZavyl0eSwwnNOo6RpC9XC3q5NFXYmwHq57Ip1EPUVkXrYVKHdwuf1CalVj1asiWOA 4TXFSZ/KWeK5iSJazjY9/yl9wtDOo2zKwY/DLtufPGAjTEOfn8gIxR35OS/ReZpvMZGQHvzzlfP 56lexK1q/o4Zw7Lj5kr0SYgYdMFh28D3VwQFozTeBlkesSkminooB5LM5AsRa/fS3jhCoUplQ4o pk1dEAVDUUhdWR5cGaUlGG9uRmk3BpVsjKg/j61BOcEFgj9SuvgKs1Q8PxrBfmu9wWXlUONvzEU UieU2dgcKUbAxA7hlvw== X-Authority-Analysis: v=2.4 cv=PKg/P/qC c=1 sm=1 tr=0 ts=6a97a96d cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=41wnHuTSjj-I1xIrTVIA:9 a=QEXdDO2ut3YA:10 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_06,2026-09-01_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 impostorscore=0 phishscore=0 clxscore=1015 lowpriorityscore=0 bulkscore=0 spamscore=0 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609020040 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=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1788324309192154100 hex_tlb_pgsize_type() decoded a TLB entry's page size by scanning for the lowest set bit across the entry with ctz. A guest TLB write with an empty PPD[9:0] size field but any other bit set caused an assertion. Reviewed-by: Pierrick Bouvier Signed-off-by: Brian Cain --- hw/hexagon/hexagon_tlb.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/hw/hexagon/hexagon_tlb.c b/hw/hexagon/hexagon_tlb.c index 6539458f25f..d89e4161f11 100644 --- a/hw/hexagon/hexagon_tlb.c +++ b/hw/hexagon/hexagon_tlb.c @@ -69,8 +69,6 @@ static const char *pgsize_str[NUM_PGSIZE_TYPES] =3D { "1G", }; =20 -#define INVALID_MASK 0xffffffffLL - static const uint64_t encmask_2_mask[] =3D { 0x0fffLL, /* 4k, 0000 */ 0x3fffLL, /* 16k, 0001 */ @@ -82,19 +80,25 @@ static const uint64_t encmask_2_mask[] =3D { 0x3ffffffLL, /* 64m, 0111 */ 0xfffffffLL, /* 256m, 1000 */ 0x3fffffffLL, /* 1g, 1001 */ - INVALID_MASK, /* RSVD, 1010 */ }; =20 +/* + * The page size is encoded as the position of the lowest set bit of + * PPD[9:0]. Bits outside that field belong to the cacheability and + * permission fields and must not take part in the decode. An all-zero + * field denotes the smallest page, matching get_pgsize() in the reference + * simulator. + */ +#define PGSIZE_FIELD_MASK ((1 << NUM_PGSIZE_TYPES) - 1) + static inline tlb_pgsize_t hex_tlb_pgsize_type(uint64_t entry) { - if (entry =3D=3D 0) { - qemu_log_mask(CPU_LOG_MMU, "%s: Supplied TLB entry was 0!\n", - __func__); - return 0; + uint32_t field =3D GET_PTE_PPD(entry) & PGSIZE_FIELD_MASK; + + if (field =3D=3D 0) { + return PGSIZE_4K; } - tlb_pgsize_t size =3D ctz64(entry); - g_assert(size < NUM_PGSIZE_TYPES); - return size; + return ctz32(field); } =20 static inline uint64_t hex_tlb_page_size_bytes(uint64_t entry) --=20 2.34.1