From nobody Sat Jul 25 10:43:18 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=1784569384; cv=none; d=zohomail.com; s=zohoarc; b=QOAJYN0TM25ix87YGmOuHz6+S93FxSm8cLxG5tiaXi1NC7IGGaxt1x6wMGDJmCIvs2hof5TRJEVjbr8z42nCd7soyQhLgv62QTibJvCG1vl4rP5W4JLOSdYVS2yON3I4QFRp01fshlMxb9XIqb5NqJnQ70p/lVin4XLqtLffGj8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784569384; h=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=PJWIDxUU/imwHlGNxMzQREqkn50uwXs1ISA8F2opnAg=; b=MWeLaBFgPPrZeaUKIMNp8mNFTNkgU6+SF5HfVr0pgr/Urb6BnCbG0hJ+KjsdomS7sWbBeCn6Ab7ZF6WITvAPCqNje4SqfexQoU9hTJS0j7WZhdugN4z9NrHEKF+fzErUppnPOmtUQ9rDJxuKWskfTGYAXb9L2FSPFwmQcWd5mG0= 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 1784569384840423.56658667261513; Mon, 20 Jul 2026 10:43:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wls0k-0000C6-9t; Mon, 20 Jul 2026 13:42: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 1wlrzS-000807-OA for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41: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 1wlrzQ-0002uK-PA for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41:18 -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 66KH6btu2785408 for ; Mon, 20 Jul 2026 17:41:14 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 4fhgs529ny-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 17:41:14 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2cceabd70f5so193470915ad.1 for ; Mon, 20 Jul 2026 10:41:13 -0700 (PDT) Received: from hu-mathbern-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3142a1dde81sm66281257eec.21.2026.07.20.10.41.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 10:41:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=PJWIDxUU/im wHlGNxMzQREqkn50uwXs1ISA8F2opnAg=; b=Hofb01Og6vA5muFwMR2rC+wpBD6 K+eqgCeC7SBo69qdmF0ZRSwnoH8na7JWPtuzIqk2yQC/ExtaxeU4f3a2Du+s3DG1 njeSuhZqXIHSOxURdpefx454t5BzDXe3ZPNGZneH+nLUIIuHSMjZx4dghNsecA8D Kqun+D9nch0kfqzL5Q4svD8xdmIrx7ZlOR5UQy5/doWur54Jstk+N1mGId6slpog DrDUC6UT51Fg7hXX7pUfxzvPQmgSRcS1IZ2ew5g91l7xdDIGBcbec6h+6dUo2NeG Z6hDwsaYCX4glmRevKK/vBCFfFJ1WP6PKYsYpvKtluhWMn9aCgyUmAdF5Bg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784569273; x=1785174073; darn=nongnu.org; h=content-transfer-encoding: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=PJWIDxUU/imwHlGNxMzQREqkn50uwXs1ISA8F2opnAg=; b=HikPifBvQf+RTspUgDidmkSDiG5mVT55XDBY5GHamUHZo1E7bLi+bujb86hMonGcxl EpZpBpbAddLCj8EYdn7z2Dk+/oB2HyXVRGmtIgdJqFd80FtYmO8FLxyJH54sJPt/vmd3 h/8VT6C3smMZIVWtluIBGxa73fJHiQv/VGZYa2IKCsj6Y1XoGdVEQYOKqDaoeVR1hP7S zNDwA5EnPQuFOyLoesSwk7WQ8ZbYv/GcMhMFzRsGBhWTO1CFJ2g8ActAaYZRO/Vy6eo0 O4vqfyTg7oBItrCpZsCeCA5+VZ99gBoIzsNtzjnl2xlu63GIEjqPl2LVWMKg+C1CC/6m wQKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784569273; x=1785174073; h=content-transfer-encoding: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=PJWIDxUU/imwHlGNxMzQREqkn50uwXs1ISA8F2opnAg=; b=RC4szFLzw2+2Ea2hjb2djo3sJJ9C5Cizb8qXXgePQYW+QbDFv10JZrk9rx5wPjmruP bykgOQRnsseabzdueQgzDfKFMCi0jF2O6khqz+47n3GaJeRgpEAkwTX/lXzAHs89xKf1 6s7iFrQfY5q8zSAQhwGZK9SvbMftHSk7SGXimBsiXkMjmR2VxAxzx9A00GTkHJ6GaEb5 FKWv5GuN04JRpt0s5RCPNbW0HaDi4tnE6NJQ1NqoRuqSLfVEEcfIn54XbwEqdemhAiP2 ClN1DsSl/Sj8Zc4eEigVbknP3iaKN/383TYN3/jsg8DsMG0PsFSwUpzudBrW2Y7/UM4P txLQ== X-Gm-Message-State: AOJu0Ywvpqnc+mtzTMXH4S5ihwGE7rpw6/IHQBN/N9i3J+PbgMDWJaKx d1Vtn/CMtlvbrdSOLlHgsfzJL3rwxm965+tWZXR5l/s9zhYOka3C0J3G2Ku02vX5KvYAM63rGB2 F25zHhI25wRtcINNrQqgx8iMtnYsgPQrThYhcdJ98x3LaxVEkSxThrQuCJpbMtAoFxQ== X-Gm-Gg: AR+sD12klow6CHF1RJEmgttLED1oPyuMTo2okhOb2LOxk/avLCeSWKjD+EFXMZ+q0Ci EnHZ2huZChL8ySowyH5JgqEBzGKOlJp4DL7UUATTAAseB8pXkP96a1ubcZbUBq+NrTuz8kh/ohM y/jPiK982TDKYqFA1hHoyMCVsYLlc+iiUY7o/5kcTi34fY5N7+vrneFf33nTCLSNops0VsLBoyx NyIq9BuZkNvJCEjTc0wi9Nw10Ec5OSnXTR3wU4rmjVs2LnEgrmR+D5EfI4yO4WWgzWkJy5sw8JC mJMK4SwMfsTRAY8qkCwKVfsQWAiz8rFGi56ycU1aWhg3IYIKmPWrjMKQxGBxmiAUPy9t+JIyPB+ CgHzeDyGwtwqT78oWl2aKlEqvOl1lCFcb1U9kcICiyug4hZ0YtCtOD35+vsq9wVU= X-Received: by 2002:a17:902:fda3:b0:2c9:c46b:1286 with SMTP id d9443c01a7336-2cf3499737amr174530405ad.34.1784569273206; Mon, 20 Jul 2026 10:41:13 -0700 (PDT) X-Received: by 2002:a17:902:fda3:b0:2c9:c46b:1286 with SMTP id d9443c01a7336-2cf3499737amr174530135ad.34.1784569272700; Mon, 20 Jul 2026 10:41:12 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, ale@rev.ng, anjo@rev.ng Subject: [PATCH v3 01/13] target/hexagon: fix improper assign of cause code to exception index Date: Mon, 20 Jul 2026 10:40:57 -0700 Message-Id: <4f4ec84cb852829097e7e2cd14de2acac01c15b9.1784568922.git.matheus.bernardino@oss.qualcomm.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfX5GgCL4SQ52Ga bjNi5LCfBXBfoJJxBuX4WlhQ937FUM7vfzfoBqgZi6+1XhXPXpjhRaAO2G4GFbqTO/DqTjMzvVR kQjz7QlT0f6gKuMJTVPP2sf5IXFzZiE= X-Proofpoint-GUID: jRjE6J7eBh9GWkM9Agrhv9o625qtOnN9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfX94KUaMnitZ8L yT05Bb+W4aDs70vi4dxYklQP4iYOjlewV1A5NGjTDUCNfGHPGngov0yvYhJijVoe6Y5VYs2PgJ3 pAkKDVtrXu4hzLXEE49DRDY1sEej9RaVOIE7eP6C7GjdPzle1dFw2kssUro1tVMRKoWg+af25Ow RVF3xpdV2B0pyyZpcBoeMWUqZfowekccCEF/EvW8TgNyfVZEZbNNyXkXvMSNGoR/wFvOrgGnFuh h/4kESgRC/yiL7LzUqluQU/nRzAX0kNqKKWpXhnCMxCoEuWAXN1keuZwcLRs07XOOPOL7DORS7V 2c0y6Dmb9C6RKlIwsLtNVrfALGXBVAfaZWOwnnk/tWoe1fJCiua+7i9zBDJ/sVx6KC5ik0u6vdB Hja3Li5SWzd/1IMI7vUmIiwHxGXQbdQukkc4baEQs7w+93l0e4JI1eWsjVQXwRsP8mHW82gxnko F7U8kPqNbDabtnjU08g== X-Authority-Analysis: v=2.4 cv=CpiPtH4D c=1 sm=1 tr=0 ts=6a5e5dba cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=gdgfPyyDDN4UGUr4234A:9 a=uG9DUKGECoFWVXl0Dc02:22 X-Proofpoint-ORIG-GUID: jRjE6J7eBh9GWkM9Agrhv9o625qtOnN9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-20_04,2026-07-20_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 priorityscore=1501 phishscore=0 spamscore=0 clxscore=1015 suspectscore=0 lowpriorityscore=0 impostorscore=0 adultscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200193 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=matheus.bernardino@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: 1784569385538158500 Content-Type: text/plain; charset="utf-8" hexagon_get_tb_cpu_state() detects a misaligned PC and raises an exception, but it passed HEX_CAUSE_PC_NOT_ALIGNED (a cause code) as the event argument to hexagon_raise_exception_err(), whose second parameter is the event index (it ends up in cs->exception_index). This causes an infinite reboot loop when we reache a misaligned PC. Similarly, gen_exception_decode_fail() is called with a cause code (HEX_CAUSE_INVALID_PACKET) but unconditionally routes it through gen_exception(), which treats its argument as an event index and stores it directly in cs->exception_index. Reviewed-by: Pierrick Bouvier Signed-off-by: Matheus Tavares Bernardino --- target/hexagon/cpu.c | 3 ++- target/hexagon/translate.c | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index 12d27ce1381..e6b2ac1939d 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -320,7 +320,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, (uint32_t)pc); } =20 #ifndef CONFIG_USER_ONLY diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c index 199b4f8c2ec..534b065caad 100644 --- a/target/hexagon/translate.c +++ b/target/hexagon/translate.c @@ -245,7 +245,11 @@ static void gen_exception_decode_fail(DisasContext *ct= x, int nwords, int excp) =20 gen_exec_counters(ctx); tcg_gen_movi_tl(hex_gpr[HEX_REG_PC], fail_pc); +#ifdef CONFIG_USER_ONLY gen_exception(excp, fail_pc); +#else + gen_precise_exception(excp, fail_pc); +#endif ctx->base.is_jmp =3D DISAS_NORETURN; ctx->base.pc_next =3D fail_pc; } --=20 2.37.2 From nobody Sat Jul 25 10:43:18 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=1784569356; cv=none; d=zohomail.com; s=zohoarc; b=E9sEdKk/hTXdn66Z5HEHxKnqNh9CZpRB2g334rx9hmYCb9TBAX8GIT6RrexXqzISwgeft5/n8T4D17sM8xqTchUIjNmkn8eZU5uVAY7Eo4d+TODgvi1HbAbD3GoejAHzjUFthzIuARO/ZX2pLwQqn/k81xTDlIpWtV+sskadkiA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784569356; h=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=QnMf7Oz5WE/3v9l+jo2BUBrK/b+AS4zs/d/5X9JacdQ=; b=TfUQuQ3Aa21z+aLbdb5m8k+JQjr3j4aeNCK9/m5XfFVc0XkWz1ldhGS+sf9oH58le+8vzyyfw5V0jP1mI+kmqNF5dcwxpWKtL2r1f4wHo32fiYZTc1mpfVgB7RIIqDGvyQGJdDlS2OiTiwBBQQbumfKNOQuyMsUjTzWi4yVj8q0= 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 1784569356863377.0476753397006; Mon, 20 Jul 2026 10:42:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wls0G-0008Gn-Bh; Mon, 20 Jul 2026 13:42:08 -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 1wlrzS-00080A-PN for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41: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 1wlrzQ-0002w8-Ub for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41:18 -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 66KH6bGT2785407 for ; Mon, 20 Jul 2026 17:41:15 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 4fhgs529p1-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 17:41:14 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2cccfa32670so133775455ad.2 for ; Mon, 20 Jul 2026 10:41:14 -0700 (PDT) Received: from hu-mathbern-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3142a1dde81sm66281257eec.21.2026.07.20.10.41.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 10:41:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=QnMf7Oz5WE/ 3v9l+jo2BUBrK/b+AS4zs/d/5X9JacdQ=; b=HyL3SSpbMdNdhp61p48gP56sceM lumtW3W9jluBvhqpSNWxbdDyIKkAasJqHCIvZXj4tg4iyHylIWh7vus1ThcHAd20 GvrSTC4cgE+KYjKK5yE2uLqfnAKusMlXIEuO6o5LpR80JgcQT8LcV1jFN5se4IxY QY/tMTlNXxJqTNycZDP8qWYZK9jFWKxqLD3fAuMZg6eu9EvPcVdlsjXDnEdOajcT GGwNpGYEmjhzMM0uaIKIMYXt0pyEMa4DtH/vYxYT0tH3tZElgykPYN1jW1PD174a LfVxMF27pIeVJHV4bjznBzezCoH+fz8xS3DdFkcx+2MTkLASREDxSlE2+NQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784569274; x=1785174074; darn=nongnu.org; h=content-transfer-encoding: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=QnMf7Oz5WE/3v9l+jo2BUBrK/b+AS4zs/d/5X9JacdQ=; b=B/kW8t5lF7aekoUjIHbT6bHhGhInWctChdNJVIb3b89S2YN8Yf3I+ANq5NgOacUv6d 4SmuZm1uKFm8OiNCXR6W+mHzNFIH0dV1dlEplBo9ymB1WkuoxzRLGpd9nXTU4gbEWKvD p19N5znXhav48yB+F60uPzz0UBeCW9xx1hIXOp+WBP5RNtioZoYSBQeKw4AYuvg9Y0a8 6GPSgEGtfKNoPgWqjFZhC/NQuTCDVvooLcDWtrPKnMexqXBg8A2+xFZ9ZP8bhLoChMkS Q/G1lMKMq5P8eI2tB8bwLET5XyAyco7MVHtAwqZ6fbKDTkJTLUrHfMdB4gG8ySqY5p0d uzig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784569274; x=1785174074; h=content-transfer-encoding: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=QnMf7Oz5WE/3v9l+jo2BUBrK/b+AS4zs/d/5X9JacdQ=; b=JA6lLaGP2w9n62k0Sz34tGQ0eBy2neo4lIRx2uvDAig/prJhKl5etWbpu8q+Rv3k32 B6saSAFbPsIrUJAIotP+SujI/9V4xzWnk996vfz7nUah4UaLrBDfUXZJgtNLiraIwmO7 q90sKh881HlrVtw8Ug2OAeQdoLe+ZDpzkRNWW/oW77z6jhbNCO6tLLP8tToU/A/jxJz5 qKKroCovNdQO2jjUghydLVvKSYXDXAzcc7Yzvy4Xmo5tI5SRgwduP1b1YefFly1wZXcQ 6RrnQ0HcVC9heRhbS59aQAw3ReRlQBCIiLfc82HSbUDygwz1fwwaovWqkd2rTS4JGlPz 08Uw== X-Gm-Message-State: AOJu0YyQzL7ZaM8yEpvqvD5YbfxZvNcIup4UxWSHAZOpqQFKEosLTchh els6YtI13s4kvuGrA30uHnQyeNZmhFbu+Y0DMaIc7eiTUU9h92pY6n+bhlqb46qRiWHKP2DjNWQ TKpPjHEaR306m4m0oY6yl38oUAl+f0PhE8KI57SM9siJ/OtMzu7bKkX4qu6d9U2xf8Q== X-Gm-Gg: AR+sD12WLLBn+l5PvrjfqoZ4pdLFlaOwmc/hZjxOQd7vNJ86boVXmYrnSQ5/PhIHfYo SQJc/qHIO+WdPMtFKo8PXWl2+LjlCmQ/3F4do5un9HWEWcn/O0BqjAVPJBADGx0lS+VsFJ0r4L/ 5PEog5KGb0Bm9fiVZH7SX+1yEsRfAuxO5S3Q5sz/uSUHaUFAZ9JGKk1kErj6nqLyPtiVyI+xQ7K JBWp47bEHAhQW+5q7klgx2bIUJ4be155e/fcDvkcOVsnc82z4QUrhN336p3pqhVK2wQFVOb3+RY ZalEnbxSBPCYa0Pkg2CDJl1ny/z9zQlVyD3oTf6jAyFAKGywYEJ2o0TnioEQ66adNztbouFuHNn SSrumDMyLta9PB2zx+hVkUooucTZZJXP/8kpbf+ahEZTOgyIypzduug8SQdRh9ZU= X-Received: by 2002:a17:902:dacb:b0:2ca:329:3da1 with SMTP id d9443c01a7336-2cf348abd80mr172240915ad.16.1784569274286; Mon, 20 Jul 2026 10:41:14 -0700 (PDT) X-Received: by 2002:a17:902:dacb:b0:2ca:329:3da1 with SMTP id d9443c01a7336-2cf348abd80mr172240585ad.16.1784569273626; Mon, 20 Jul 2026 10:41:13 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, ale@rev.ng, anjo@rev.ng Subject: [PATCH v3 02/13] target/hexagon: fix PC advancement for non-COF TB terminators Date: Mon, 20 Jul 2026 10:40:58 -0700 Message-Id: X-Mailer: git-send-email 2.37.2 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfX6ACIYigOhk0c kSiUudQwFF+y4JmetYHcvXEXg4LuesG74H3JQ1di2yyoQ7grpXnqb1/8QBhGUOjAfhOfQqIMgOH +J0Ov/W7OLx5WoQiJglmJmo9W+GBluk= X-Proofpoint-GUID: 85BmJ-kiJtWVPMcd1DMgHrvbQWTAk4oY X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfX8hWzDQFkPov0 3cUbem7vrSFHRv/m7pDC2HWQZ6pxCpInI5uhuW/UkGDIQi8u3upZN5ebhsa3d8Cv8nUKY1QLYRL ZOLlvlxfvyA0whKZpUIfCjFhBaR5ybZKJ2+l5GIoZpMyX4xTJCrYC4ltmtPuW4zmz/W0sh3jaaT ZXhXV7Ne1cMByGZ9Lu4wMrj3TpCwerELzj4UnFoULmdQRw6vNxRaIWsUcYQ7gt7rCNMYDJzOoAX cA58NqieGYjN3Q1lphfGF/FAyE1xs+XxTvvpTG9zgoDtFCc0vryeAQ6k/P99+8YSMYZGq78yYmf KYXdz3zQfF6F1lsVz923MYpz+2DDzjIIPy1lQDXs6a6cJ2j29dXxbXrRW0P+ltBJd1eM4ZROQqZ 2wIWZoR5b7+nj9f9HL2G8sKpgkZDrwdsglWcPdOZJt+7EBOaceg/PLG+Pyouq3t5SNM3zzvHiPS ahvul9CoCCUVDkxiJFQ== X-Authority-Analysis: v=2.4 cv=CpiPtH4D c=1 sm=1 tr=0 ts=6a5e5dba cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=4a9di1UdVY1t8Q3xuf0A:9 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-ORIG-GUID: 85BmJ-kiJtWVPMcd1DMgHrvbQWTAk4oY X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-20_04,2026-07-20_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 priorityscore=1501 phishscore=0 spamscore=0 clxscore=1015 suspectscore=0 lowpriorityscore=0 impostorscore=0 adultscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200193 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=matheus.bernardino@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: 1784569357457158501 Content-Type: text/plain; charset="utf-8" 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 --- 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 534b065caad..133d9f10ee8 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(); } @@ -293,6 +299,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++) { @@ -302,6 +309,7 @@ static bool check_for_opcode(Packet *pkt, uint16_t opco= de) } return false; } +#endif =20 static bool need_slot_cancelled(Packet *pkt) { @@ -581,10 +589,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.37.2 From nobody Sat Jul 25 10:43:18 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=1784569345; cv=none; d=zohomail.com; s=zohoarc; b=FIlBLYg7spvjD6fnsyAvseFnFrc+3i620vTSjk4cjcMf0ePk2jkKtHEv+WgM0pfMHpHTu4ziQf/RXXkF5KtzjYX8qX4VYiOL0HDPwOyUDkTsh9WtvHuytw7pMMtNDf5xR0TWOlYB4FBDOb2eaBifahU2BMyTdt8Om5DX7wX9lWE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784569345; h=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=EFswy5eh2CkNrk+N8UM9hmPqBP0xTdauqnFywLbP7Ck=; b=QvGNGGN1r9pMvtczYyYxn4tSBTCXR1xyDLh145t2wFSCTTZh6wq0JwS1ctVsufltgWjTkWi8bvfhq+uNpnRhdb/G4oA02WlVxT2HHM9aNiRI4D1KdLKanVM8eWJoXAbooBA9sIdYW3f7IgHx4EFzY3eeJAhQCysIr5cYc3KUL00= 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 1784569345831641.9019685926578; Mon, 20 Jul 2026 10:42:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wls01-0008DO-89; Mon, 20 Jul 2026 13:41:53 -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 1wlrzU-00080d-Dt for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41: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 1wlrzR-0002x7-FV for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41:20 -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 66KHBrWH3442633 for ; Mon, 20 Jul 2026 17:41:16 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 4fhqv5r46a-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 17:41:16 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2cee1ec30f2so95473905ad.3 for ; Mon, 20 Jul 2026 10:41:15 -0700 (PDT) Received: from hu-mathbern-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3142a1dde81sm66281257eec.21.2026.07.20.10.41.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 10:41:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=EFswy5eh2Ck Nrk+N8UM9hmPqBP0xTdauqnFywLbP7Ck=; b=cto2FXZH2DYC2XwINxLzJzJhoUS v+1them0LIR10scZEXETTWyPyHzUBd+AOUduek8ADFedfSAULsIErF8HbKn85ytt 84j1du9A9SvH2XUs3/Gllj3o1v1wz4yWbOWh0aE1FDwMozmKlxkroq7I/4rg1f9t v10TCQhPuf0VUikQWT9HU/g/dIwEgRG+rKUGqyiFdpn9mxsfACDmYKWa9cd0oNq8 VyrX6rSt8APyLyEBe7LrzXZIq7F1xRP4EOx8sQ9Z7DLTpA9GvV/lu7CXP/8dboFL 59tvrWndRxUka3PCD+wZs296JM80QQPPSv32n0whSA+GmeKC9bK5zMs9GRw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784569275; x=1785174075; darn=nongnu.org; h=content-transfer-encoding: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=EFswy5eh2CkNrk+N8UM9hmPqBP0xTdauqnFywLbP7Ck=; b=P+qAoZHqO9MMckEhapzEIUwlWpoTS8M9H+1bCA+bL0Kt14Nm/WEMGWf6zqf5YgE9vE BHuRDekXSVJJqx6YL7/TadUjJ2ANkzd2CirKjXCwVJrX03gw15urr19+qICYNBOAZa2W Etnms+d3xwwCXpCLPe+Fa5RaAdAVGZh1GVSNJhKGTpT2LpYrYKI2tlEpyBfn5np/0dfH iHj7FUydlFy6I/DpGamjq8Yk917LTtDFPdtQF5reMpuUcqbhjmQEVsWHjSh0K4KZjaxc nrieveylae7RcL5YUTSY/D3ujMadJYvv4GboAgw9TZxC0T8/PZDEvWGgl9DyVh7/KWVE KccA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784569275; x=1785174075; h=content-transfer-encoding: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=EFswy5eh2CkNrk+N8UM9hmPqBP0xTdauqnFywLbP7Ck=; b=J2gUWJ/tfrKM/jg0PAzlg4PpcI7hdLxtfJRKbR+IIiaY0I8sqiZZnKgsUtXMVJeDJa zXVMExL2ZMyQrDkVVlmNtiJutzYMf8n1xewi/DfSsW07X+ZG+YPEe6dYj6pkLzve0GYj ahKVEpZUcvJgMiPrOijV/pYq7TqPsEEcXg28ms0EkznwU8OA/feU1xhMNc50g33PMHAA Q7uGZHgIFYKWmvVIoNEnlkBhHSX1MAZRIjo4F9eCzA9KOoYploM8InkjkbYIFymL+TXo l4F6qaTyPq1n4DSiUjQKeNFW1u9/BBHJ2ml7knnU6iRVgLI8322NAYRWxvyqr9WUFkrk EBrw== X-Gm-Message-State: AOJu0YzIq4YKBhr5Qv0MIHvuvMzd0gNh62UAW+oClpSRdgdNHWBoBJaD Yh02+dIu7xbMBkRBaKec+txsy0Gw6fCsJ2R0sClVdDtUfir1pfNY8bCL2ri9/Yb/2NknDcjYC6H 8JPrFRq++RPQjQyQl0qwj9V74lB4tm7THyUSAchzL1vCDBbWDIuhIzYk/fvhplM4nzQ== X-Gm-Gg: AR+sD13rod4UHrDTudWtPzORtg28GobhDEeBhXKBj02XbYDiRcSJRxDtEtLgFJQqoCQ byZmf9HuQCr7/hp+35x5Nybvs10t3ByON5pT+15Em3Kts8qholf5iv1pMeKC8rvUwR8b+/+ZdTW Al3868HQIR9QRdfPBoFuvWJs7YvY8zAhrK+osZCZkBNmxFmD9GzgZMQhTijKej76R6QoZROAQTW hWiI1DopKm2esY7IWtmWk6H7TysdP8pJhirGgFErCEqxH4M3iJhy/gQnZvRbG/cke2to1jrwZzd JWdmt7NQaMi2/Bq8DiuTxBn9uOUV/IrDUfPYK8ZZRwZcRIcUMET0sDgXaqlkQmdWjpq0v/yOeAr CMd2XpVKQqzUpenSy5zvZBJuWxIrgh6OjlK2nNvSsEhK8/ozwSTadi0BzK8x5iYs= X-Received: by 2002:a17:903:1aa4:b0:2bf:27b2:4b80 with SMTP id d9443c01a7336-2cf34873e2dmr157903325ad.14.1784569275092; Mon, 20 Jul 2026 10:41:15 -0700 (PDT) X-Received: by 2002:a17:903:1aa4:b0:2bf:27b2:4b80 with SMTP id d9443c01a7336-2cf34873e2dmr157902905ad.14.1784569274430; Mon, 20 Jul 2026 10:41:14 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, ale@rev.ng, anjo@rev.ng Subject: [PATCH v3 03/13] target/hexagon: add aux functions for guest mem load/store Date: Mon, 20 Jul 2026 10:40:59 -0700 Message-Id: X-Mailer: git-send-email 2.37.2 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfX22MhPiEtpvPf LVFFrmpyy7WmYeElH2yT+aZ+MDfwOkaXVcfIBNhCJVklR1aNd9wcIR+Fd9chWue/qpmLiMh3V3E NCxt76UAZZXC+oYxBN53wScS8SxSvYMF8i0isjnu5d+4NNg8ke4xzliiQDKZrew2g8NMFJjtk8f hpTOurA0Nod7v3/2tW4TdpCOzr9kUCnTguyfd04rE4VuxeX8XoQ/2u5lEKJ/SBYwOshaCzl/0eP 8lXEkoI+WqmmTagQ9qQ4BuW2oXu0CdeKrydFzsQHxKSSqS2wrAOAFK6MOYayYsRhlKxma9UJqPy bgYdVHvWWCcZaByJTiqJI0ubPx8LSZ7ScEGYrMdFsB1Sq7asXCBHiLwC8cvP01onx8Gt0CfRs7w ZSE0ZK63QFCooKX/HjoRbmIx7wbEUb4dhoCsmM1Fhb2LWxewjoXGsZaSCmkj05jkoPoagJiU0zL CgaaxAGFBy/xa7PyekA== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfX4U2iQXFtJLj1 YlYo1f3/G9asXqqaKLKqQ8e+9EqGe9b8hgSzWk7VgwG4F9tURWviygWorFObZ3umZFWoHM5A25b IBE5Bmm66S9akpR4l09hTa2l9eMGznA= X-Authority-Analysis: v=2.4 cv=WNpPmHsR c=1 sm=1 tr=0 ts=6a5e5dbc cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=f3xLiZNeclign1bWSxgA:9 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-GUID: U6ppvrJ0Fl2zTupiFY0fZlshIQ1TUJdT X-Proofpoint-ORIG-GUID: U6ppvrJ0Fl2zTupiFY0fZlshIQ1TUJdT X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-20_04,2026-07-20_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 clxscore=1015 suspectscore=0 spamscore=0 malwarescore=0 priorityscore=1501 impostorscore=0 phishscore=0 bulkscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200193 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=matheus.bernardino@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: 1784569347649158500 Content-Type: text/plain; charset="utf-8" Will be used for semihosting. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier Signed-off-by: Matheus Tavares Bernardino --- target/hexagon/cpu_helper.h | 6 ++ target/hexagon/cpu_helper.c | 133 ++++++++++++++++++++++++++++++++++++ 2 files changed, 139 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..e981e11a35d 100644 --- a/target/hexagon/cpu_helper.c +++ b/target/hexagon/cpu_helper.c @@ -25,6 +25,139 @@ #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, unsigned char *dstbu= f, + int mmu_idx, uintptr_t retaddr) + { + /* handle small sizes */ + switch (byte_count) { + case 1: + *dstbuf =3D cpu_ldub_mmuidx_ra(env, addr, mmu_idx, retaddr); + return true; + + case 2: + if (QEMU_IS_ALIGNED(addr, 2)) { + *(unsigned short *)dstbuf =3D + cpu_lduw_le_mmuidx_ra(env, addr, mmu_idx, retaddr); + return true; + } + break; + + case 4: + if (QEMU_IS_ALIGNED(addr, 4)) { + *(uint32_t *)dstbuf =3D + cpu_ldl_le_mmuidx_ra(env, addr, mmu_idx, retaddr); + return true; + } + break; + + case 8: + if (QEMU_IS_ALIGNED(addr, 8)) { + *(uint64_t *)dstbuf =3D + cpu_ldq_le_mmuidx_ra(env, addr, mmu_idx, retaddr); + return true; + } + break; + + default: + /* larger request, handle elsewhere */ + return false; + } + + /* not aligned, copy bytes */ + for (int i =3D 0; i < byte_count; ++i) { + *dstbuf++ =3D cpu_ldub_mmuidx_ra(env, addr++, mmu_idx, retaddr); + } + return true; +} + +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); + if (!hexagon_read_memory_small(env, vaddr, size, retptr, mmu_idx, + retaddr)) { + 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, unsigned char *srcb= uf, + int mmu_idx, uintptr_t retaddr) +{ + /* handle small sizes */ + switch (byte_count) { + case 1: + cpu_stb_mmuidx_ra(env, addr, *srcbuf, mmu_idx, retaddr); + return true; + + case 2: + if (QEMU_IS_ALIGNED(addr, 2)) { + cpu_stw_le_mmuidx_ra(env, addr, *(uint16_t *)srcbuf, mmu_idx, = retaddr); + return true; + } + break; + + case 4: + if (QEMU_IS_ALIGNED(addr, 4)) { + cpu_stl_le_mmuidx_ra(env, addr, *(uint32_t *)srcbuf, mmu_idx, = retaddr); + return true; + } + break; + + case 8: + if (QEMU_IS_ALIGNED(addr, 8)) { + cpu_stq_le_mmuidx_ra(env, addr, *(uint64_t *)srcbuf, mmu_idx, = retaddr); + return true; + } + break; + + default: + /* larger request, handle elsewhere */ + return false; + } + + /* not aligned, copy bytes */ + for (int i =3D 0; i < byte_count; ++i) { + cpu_stb_mmuidx_ra(env, addr++, *srcbuf++, mmu_idx, retaddr); + } + + return true; +} + +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, (unsigned char *)&da= ta, + mmu_idx, retaddr)) { + 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.37.2 From nobody Sat Jul 25 10:43:18 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=1784569406; cv=none; d=zohomail.com; s=zohoarc; b=RQnYf2rQqy6we/+nmQU8TSWou4OkKurdbFiogPjTtCPtrhaAn7Pq26c/BG+jvYU7mtihcGPrtZ+lXHUdupivWV+viQ4FBFtxE/EsAPUksmJPWK+2Vw2nkKH7OXC/C8ZXKLTRfF3gltSzwXcywVlUNTkSJMX+MG9cVmARWYXQgRw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784569406; h=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=Ws4CN89UUGqWa/bbUghhSXHktZXUdVMHQTmzZsGomuo=; b=grz4PxrtaAFMc+Eh6w4oElMmz+EuJh2E9AoqDZ/LghR4EyolFE3tJ3msG9zEmyhB9N9gnoE++xUNDw4KzDH324K5if1j3hLJuBeStYpZhySubH0jZPR75HsPGG5nvPIY+VmZl8mBDhNXGlKeupq+78VH1qqG6KSquTrNVuHl10k= 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 1784569406790763.5288154268956; Mon, 20 Jul 2026 10:43:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wls0m-0000Dw-IQ; Mon, 20 Jul 2026 13:42: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 1wlrzU-00080c-BJ for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41: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 1wlrzS-0002xT-Cp for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41:20 -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 66KHBrj23442628 for ; Mon, 20 Jul 2026 17:41:17 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 4fhqv5r46b-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 17:41:16 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-cab3e9cd922so5419871a12.0 for ; Mon, 20 Jul 2026 10:41:16 -0700 (PDT) Received: from hu-mathbern-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3142a1dde81sm66281257eec.21.2026.07.20.10.41.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 10:41:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=Ws4CN89UUGq Wa/bbUghhSXHktZXUdVMHQTmzZsGomuo=; b=RoYvDfKCLFlSd3bxZR5fBSnQ3VR e4SYzXJE5rcxugeNcplP9NXChsHibFqsA0tix18fpgFn/krO0NBg5/DLyh7y1EY/ wM9dMcAr+qgtIXaociiaXigGxQxq4WvQKyLHlF8IcXGj0IebfXo2CrL/jz5wQRc7 7MRcMaTsBVUsERZrYIeillgTPlwdJEyCZoy6nMsIM5+G4koM7JbdwEe376Dgwoev Wlk+1QcqdS+4DMClqxOM7AlKi1KqnsoI8iAA5YYM4UBlnSUhItRxd2waWrv0/HCS 4XQ3F2LGC2JUPwrRMGrHZJpTURtTmljylvmWpoQdZ87sMZ3ESrRNxaSqsNQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784569276; x=1785174076; darn=nongnu.org; h=content-transfer-encoding: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=Ws4CN89UUGqWa/bbUghhSXHktZXUdVMHQTmzZsGomuo=; b=VEA7SPTELEXcUP9K7pOB3ryDoQ1jQXcZHsB5obDYJNAhi6C9EeDb3Acce0T3fhVw7b 944qL3/c8jHeKM+lQq1rISuwkpT5J/jdv/yXeVYCgcde1XMlJ4x5/DvSQ60kSdBYCYSI A/2etn3+rDgJCOaCIcFfi69mFve4rNyh0d98vygWRxHuSmwQbUYxz4jBOf35GCjtVoh2 KbH8DS+8+v6vUl1lJpvFHVTVVMWT6ELDODHgJh2u1EFS7bqHbUba1f0iKxv1AuYFHvKX LuR2PMxL6cmhFNWnl3Tr8DOrIwWrIhlignxxl4ufGPUkz6WRaSGRXRUU/rRJEMpjGQjZ xibg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784569276; x=1785174076; h=content-transfer-encoding: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=Ws4CN89UUGqWa/bbUghhSXHktZXUdVMHQTmzZsGomuo=; b=XHqGxfaqVbzEw+0+dW5BEoSnu1m4SD70OLr667SERU3AnJMko+pS8jvdZZhJt3H7Jt rYzqj5ZAlwSRUboPq1SQm/hWhTJacNZiRhqU/sBdmUIsVgUzmM6LLUlO/gBXJPb3A9vu m3i7LnJJEIpxfy6i/TEEYd85DZfj/4siYbEY/0QipB1/gVQof6DZ5lokJQnv8FTQrjV6 dVOo4fYMWs/coIOk6/qqKY6YNdOpqmK7gTSzTSkNp/X4E8oPkUT3WfnJ5jPIlwwSgKfd DLoCv0ZHNuQDHNbrdnqzyUT95S/tEusTbrQwPk4lPoPArTlh/2auzE+I8G5s0ygjtOv9 AZjw== X-Gm-Message-State: AOJu0YwNb2EJsJAcUlHnGREo+uwXKkSInt36IPSZkmYj4lnko0+NAq2X kCyetiphonv63QW0+hY8eUR/XjnuPcih4NzNtX2sSp9x8D1Ny4zRiUSIS9Pm2lctVNemL12h8WD yNRYPCr866vCD4xH/y8eeSZE77Gi/HQNIPnXzLgDDr9i94wKolYiS1BiBTavUvw4rLA== X-Gm-Gg: AfdE7ckzLHQgEIi8emDz8YDsfxH5SEJM3MC/lynrOGmwT8P7aPMO8xgAOUfembf9/8+ nDWFSDBL6tLTb4uF7R+a0EUHQIcuaO7zOaaK2mcLyE1OtdsPc49hPcZEpiWgNySeKaoL7jizhpJ 1YMSyjpWS9oT73efzy5Ui+uuhO6weIU3Za1s63SjU8a2asHFhjhE9rpwXGQtSE0Qe60MvKYBK/w yr9R67XcRBmRDeVQbbzsWi/lryVXHidSloRu8r0Qa48Y4FYP83LejA7vn6Lvh4+7nZIp5iOBJ+v TSWtUeleI2JKSUqODhJgy9abxZlPbhElCTKQVOb28uwNXsAb/FxQBOHqmZY2IvuRJ+pduRX3x6j zh9AUFEpmF2+KMERxa7t5yRAx09a7JhOP2mHMtzcItjGyhJjMuIf2lFUvQ+TrGTk= X-Received: by 2002:a05:6a21:511:b0:3bf:ab4b:2d34 with SMTP id adf61e73a8af0-3c3ad9dfdf7mr16508803637.53.1784569276019; Mon, 20 Jul 2026 10:41:16 -0700 (PDT) X-Received: by 2002:a05:6a21:511:b0:3bf:ab4b:2d34 with SMTP id adf61e73a8af0-3c3ad9dfdf7mr16508754637.53.1784569275322; Mon, 20 Jul 2026 10:41:15 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, ale@rev.ng, anjo@rev.ng Subject: [PATCH v3 04/13] hexagon: cpu_helper: add reg reading/writing helpers Date: Mon, 20 Jul 2026 10:41:00 -0700 Message-Id: X-Mailer: git-send-email 2.37.2 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfX1UdnW76+bLU2 55nhr+tDd3mtKjNm9InN2lkwN0ypkJy52fBTiRHawzDvyofyLPD6qweNHJCSBTowTFvr7UgU9o8 fMqLQ299sIYIjTqwlObBp4JglBLOKh+C4qrT7pY8la44OrEqWNQhS8TfHX5wPBL3GYmB3v5sMXo oeAFN7kmea6OBQywwl/HBt4W+l9uEI2/c4LjkFED49xBoEm/g+vt8A3BgaxKUURU53XK9PYOXgQ zERsBAvmYbfnNgHcM4ULW7P9nPmOwwJrlBfrFMPhZEB0ZawsYWLJAbiO+Jzsd47qUHgDxQ5WCN3 SUuuUxym0NY0DzlboxK3pyaaue5DXnHNiHG7lp7ZZiDMxxgWzDl8/OyD6+vOm/xRR4O+pfNgO1l /EdtOfwhcmyuLWONKTsFQJFLtIf64EnwV+mnBUgQ3eGfDBuicjZmCpeO8ueH8jCc2z+YK7A3iRq XXcGRkuxit0qek4GEzw== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfX6mySGdv0NgKw ZVSu57LMXiBPte09YtETkFkkJFx7vyqny+K2Cfm20j73NWa0oNSpI+a5SPNWfigdVQ5GoIOOhTg rOw/cy3kWFodkRSGjxFKEgTs9r6SqcA= X-Authority-Analysis: v=2.4 cv=WNpPmHsR c=1 sm=1 tr=0 ts=6a5e5dbc cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=nXchshz6agspm-bXmVMA:9 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-GUID: qxZb7qHxoiJwlL5IHTNDR9hiOblCBWPU X-Proofpoint-ORIG-GUID: qxZb7qHxoiJwlL5IHTNDR9hiOblCBWPU X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-20_04,2026-07-20_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 clxscore=1015 suspectscore=0 spamscore=0 malwarescore=0 priorityscore=1501 impostorscore=0 phishscore=0 bulkscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200193 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=matheus.bernardino@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: 1784569407619158500 Content-Type: text/plain; charset="utf-8" And adjust op_helper to use those. They will also be used on upcoming semihosting commits. Reviewed-by: Pierrick Bouvier Signed-off-by: Matheus Tavares Bernardino --- target/hexagon/cpu_helper.h | 18 +++++++++++++++++ target/hexagon/cpu_helper.c | 40 +++++++++++++++++++++++++++++++++++++ target/hexagon/op_helper.c | 18 ++--------------- 3 files changed, 60 insertions(+), 16 deletions(-) diff --git a/target/hexagon/cpu_helper.h b/target/hexagon/cpu_helper.h index ca2e13ab1d1..757a49fc4d4 100644 --- a/target/hexagon/cpu_helper.h +++ b/target/hexagon/cpu_helper.h @@ -7,6 +7,24 @@ #ifndef HEXAGON_CPU_HELPER_H #define HEXAGON_CPU_HELPER_H =20 +static inline void arch_set_thread_reg(CPUHexagonState *env, uint32_t reg, + uint32_t val) +{ + g_assert(reg < TOTAL_PER_THREAD_REGS); + env->gpr[reg] =3D val; +} + +static inline uint32_t arch_get_thread_reg(CPUHexagonState *env, uint32_t = reg) +{ + g_assert(reg < TOTAL_PER_THREAD_REGS); + return env->gpr[reg]; +} + +void arch_set_system_reg(CPUHexagonState *env, uint32_t reg, uint32_t val); +void arch_set_system_reg_masked(CPUHexagonState *env, uint32_t reg, + uint32_t val); +uint32_t arch_get_system_reg(CPUHexagonState *env, uint32_t reg); + 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, diff --git a/target/hexagon/cpu_helper.c b/target/hexagon/cpu_helper.c index e981e11a35d..98ce599571e 100644 --- a/target/hexagon/cpu_helper.c +++ b/target/hexagon/cpu_helper.c @@ -27,6 +27,46 @@ =20 #ifndef CONFIG_USER_ONLY =20 +uint32_t arch_get_system_reg(CPUHexagonState *env, uint32_t reg) +{ + if (reg =3D=3D HEX_SREG_PCYCLELO) { + return hexagon_get_sys_pcycle_count_low(env); + } else if (reg =3D=3D HEX_SREG_PCYCLEHI) { + return hexagon_get_sys_pcycle_count_high(env); + } + + g_assert(reg < NUM_SREGS); + if (reg < HEX_SREG_GLB_START) { + return env->t_sreg[reg]; + } else { + HexagonCPU *cpu =3D env_archcpu(env); + return hexagon_globalreg_read(cpu->globalregs, reg, env->threadId); + } +} + +void arch_set_system_reg(CPUHexagonState *env, uint32_t reg, uint32_t val) +{ + g_assert(reg < NUM_SREGS); + if (reg < HEX_SREG_GLB_START) { + env->t_sreg[reg] =3D val; + } else { + HexagonCPU *cpu =3D env_archcpu(env); + hexagon_globalreg_write(cpu->globalregs, reg, val, env->threadId); + } +} + +void arch_set_system_reg_masked(CPUHexagonState *env, uint32_t reg, + uint32_t val) +{ + g_assert(reg < NUM_SREGS); + if (reg < HEX_SREG_GLB_START) { + env->t_sreg[reg] =3D val; + } else { + HexagonCPU *cpu =3D env_archcpu(env); + hexagon_globalreg_write_masked(cpu->globalregs, reg, val); + } +} + static bool hexagon_read_memory_small(CPUHexagonState *env, target_ulong a= ddr, int byte_count, unsigned char *dstbu= f, int mmu_idx, uintptr_t retaddr) diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index 3ce223caba3..324a9632dd4 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -1846,28 +1846,14 @@ void HELPER(setimask)(CPUHexagonState *env, uint32_= t tid, uint32_t imask) void HELPER(sreg_write_masked)(CPUHexagonState *env, uint32_t reg, uint32_= t val) { BQL_LOCK_GUARD(); - if (reg < HEX_SREG_GLB_START) { - env->t_sreg[reg] =3D val; - } else { - HexagonCPU *cpu =3D env_archcpu(env); - if (cpu->globalregs) { - hexagon_globalreg_write_masked(cpu->globalregs, reg, val); - } - } + arch_set_system_reg_masked(env, reg, val); } =20 static inline QEMU_ALWAYS_INLINE uint32_t sreg_read(CPUHexagonState *env, uint32_t reg) { - HexagonCPU *cpu; - g_assert(bql_locked()); - if (reg < HEX_SREG_GLB_START) { - return env->t_sreg[reg]; - } - cpu =3D env_archcpu(env); - return cpu->globalregs ? - hexagon_globalreg_read(cpu->globalregs, reg, env->threadId) : 0; + return arch_get_system_reg(env, reg); } =20 uint32_t HELPER(sreg_read)(CPUHexagonState *env, uint32_t reg) --=20 2.37.2 From nobody Sat Jul 25 10:43:18 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=1784569403; cv=none; d=zohomail.com; s=zohoarc; b=UI8axYlGCLyf7sbMPUCNGtgm37YzL9GRlEZTPEOmw5g01FkV2m7oBjr3TWmuzgLY2fQdLNd+qDSoZ+TDPEbPGrkrH9P7QeYruzBpFWAUwIChunPAGpSbo2K+uJcPyRITuABfcs0U6IRQokxaTq8XD5ETFO0bpSIw8YWQf5IfsLI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784569403; h=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=7vL7GOvmzf4GR2lrP8sRDhksG+QOV9mtUHkgP8VS2iY=; b=IglErdYlL3cmCP1WxJQkt069MCIAZPrQ+OPXXXm0gPBcz3dhScalgVC4VGXHIjBykx82zVjgFgNYa6cSvQKmnkvcAnxNRgZv3vDYceAujqlTBQdyMFC1QfQVsiOfHVZFFwOJAY/PMqVQw9GjvFfLXjIj2haB/Dqe0aEwMdacyz0= 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 1784569403223766.3799073591352; Mon, 20 Jul 2026 10:43:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wls0i-0000Ag-S6; Mon, 20 Jul 2026 13:42: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 1wlrzW-00081O-OQ for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41: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 1wlrzS-0002y3-V0 for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41:21 -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 66KH6cPZ2962635 for ; Mon, 20 Jul 2026 17:41:17 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 4fhh5y277t-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 17:41:17 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2cce14a21faso65730455ad.0 for ; Mon, 20 Jul 2026 10:41:17 -0700 (PDT) Received: from hu-mathbern-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3142a1dde81sm66281257eec.21.2026.07.20.10.41.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 10:41:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=7vL7GOvmzf4 GR2lrP8sRDhksG+QOV9mtUHkgP8VS2iY=; b=VTUwSvS6F5zf0/9qr2Z+H/aZIpG MWXR38btjp2IiKWOSbaQ2ALGX6v4gFILEOZQhoeNQIvIIqDxcoS64PqZpF9iRFM0 scW8CYASkt5tpVcGVrWo9UrfkWU7R38Uycv5ELxr9djS6RCivZLX8OwRA+UuIeZM EdyA7E6c569Ji67jJHIy+aNsF28L6Uc4mJIGP6Fj2NuNa1mmrDpvRLVB0YlsWVtY +grqRY322cIw+eCFzhADqsDaX5G8eHr4nBWSXnqJo/sE8RbIjsmOmD008TYrERb6 njRI5ynxJcKvCFkpei95+m5wFNkx3YbRgvXiy6XeRr7ai//oDmio/0MFWVQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784569277; x=1785174077; darn=nongnu.org; h=content-transfer-encoding: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=7vL7GOvmzf4GR2lrP8sRDhksG+QOV9mtUHkgP8VS2iY=; b=L3mIpjbJ66qRYxok561vF+IRApIIc4GGk+yIdjEqpwsePecRZRm7dd6upylpwBfzR1 aKDiVDJpKn5NN/CTrgbWlN2IhobEv28Bj1HYW7kthYBn0/K9zMyb+PojlY5DMMl0mnKr fEShLP8aHgjfEVzesd+9IKT249OJKf8LcY6+AQbzVAiuiM3lnca8I5zxPOixpU+6UcTH 4RTIFEgwIFFvD6T5/eFxU1jgqscaq5N8sIS1hTDaWNWW8gp4k0pbFStxdpRCEOvnw6VS ZlnmbEjTt2dBd8crVIq2r+XHtr8oqW2X9VVHn2KTDs7AccZIevfUrIBiU0JiSLMkjRQo xwyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784569277; x=1785174077; h=content-transfer-encoding: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=7vL7GOvmzf4GR2lrP8sRDhksG+QOV9mtUHkgP8VS2iY=; b=aVFm4xNskmsknAt2TyBjB3m9NxvsKAO3HbH4W8qT/w2Oidu6OoKZ+QHv2I44qfM0E8 gzvcUhlXuSc4FjJ8FoO2Kk/K68eCt2sYIszvlnVs8Ud9q2i/4EnNvbtw5lMw4K6eZFaL OV0se9QMLTLlZiTDlDpPZst+qSW2T7f+AalQfxz1+fUAZfe71Y1fjfOSMYB2b+8SeKCE LUMIATME9zBT7CkhjXCqbQ1Qly9aaBgSUVz4Sty0dWVJzjlbNS+SlfiBBzT3HfPFj8Tn /GeD9+CftcIok+7qGeQvx0cjpEbSxxnqov4y0RNLjML9PcyCdSlExR3y/JScLA0+DVWG 93Og== X-Gm-Message-State: AOJu0YydyvLhLhrEiCQT5cj2PDuVWxId0ophjprT6X02lToh11qsZKG2 GsTnjWzN9LUpxunVXv9DDoso/tfHVIqbDDELoe2zj1Vz3dSHyOqCJMiHTN8RuCytCNOfMNK6fub vN/l4tCVKwM7sUjiQNgzFdObnHIPx0/C3yJF8LBzqtRkrEXDIRL0Om60hJypc1pIbAg== X-Gm-Gg: AR+sD11UE3MhHtj1+BKXxQAYepCGyQ7KUNkLzmVzxQ1rQ3o/FrM1wCajUtdUeEM/NGs e4VTMxFV6WhbifiE0zwgoNoDgDhgdTSOU7FiYqpCsB5GmYvaFaiWrbfywxyAv5up2P0I2IJ/+BD X+8gSNo/ZIs/FFragYc81bwpp5380/WODSG8WJACKrLBA/KcAYgPJVVqDIvNwsopzITwnG7946d wAN+lv1ckjE8g3r0mUkxuMoDTkNF03UEITCtOcE3eNTp7b7aEkw0U+LGLEAS3X6sGGpdiOhYZEd e4b/4SDaWccUou1UCzgkRzSAGDZmi9YLvOV48ryKKgzOgNM77JdjkXkDUT9l4le0+H076+LpUa8 iQ/ncApHwRGvLfo1nGiVXkLMAC2acPjsyo1W+krZfikjFWzV6s/sQTcbE9WNngZg= X-Received: by 2002:a17:903:3810:b0:2c9:fc0d:165b with SMTP id d9443c01a7336-2cf1f544ef8mr200545725ad.23.1784569276823; Mon, 20 Jul 2026 10:41:16 -0700 (PDT) X-Received: by 2002:a17:903:3810:b0:2c9:fc0d:165b with SMTP id d9443c01a7336-2cf1f544ef8mr200545385ad.23.1784569276370; Mon, 20 Jul 2026 10:41:16 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, ale@rev.ng, anjo@rev.ng, =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [PATCH v3 05/13] semihosting: add APIs for chardev-aware guest fd routing Date: Mon, 20 Jul 2026 10:41:01 -0700 Message-Id: X-Mailer: git-send-email 2.37.2 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfX6dPeJikh+Nu3 XCINkRrNsqNn3y7msibSQT6Q62MoUoKNdHmNDUXOzY5qhr2ML8GfuZb+M6Q4gkMOPj5EyHXWz4r w8ZBwq/Uek6LxHOjdEvE8/wmdg0EDZQ= X-Proofpoint-GUID: XaJiSHFVrkUtVZHDD7-A3o65HAYwESEx X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfXw6Pzkiv2e++E 8YaYu9i/Qpk01gKt6f4yUq6AgxaJpHRwU0VzkxJKyk6egpJDVmiLHzcyLBKX8tjJuqp18gqFt6k PyGRcO80iw5NWrSx7KbAXMfA9ZlW0tqcf64NuhqUay467sxKhsW22ffoGgIYZvGLMXNRaE3HP9V EVD1ifbdklVwFey3K6l+Ld/R799U/ymlkeh2H6tjW5p/tJtESydJIfNXRbNxDQCQxW9I5ccqbw6 dAuyIAHvVJxONzTtf2tLCJXpTXTiNDvgqzGLyjScHr8wYTlHoxob8kwsZn8eepaF2cayiW+Y3GG XowipdmSDhemrKtllPpGdfgg+IArnrZAZQGZ5jtVQpJvs/Trj2Vih9SHmwj9iM+JUxXbdVLFUXg ERUdFHMR4CNFLl6mry/FF+XkqykGhgLcnyW00qLMwHnqEXJMnQ/SD+Cy5U+Q2k16sO2Uc8XJzq5 aWgkQmeGF3K+AUjr61Q== X-Proofpoint-ORIG-GUID: XaJiSHFVrkUtVZHDD7-A3o65HAYwESEx X-Authority-Analysis: v=2.4 cv=f/x4wuyM c=1 sm=1 tr=0 ts=6a5e5dbd cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=4trHgkiC9q-UxXHgwkcA:9 a=uG9DUKGECoFWVXl0Dc02:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-20_04,2026-07-20_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 bulkscore=0 priorityscore=1501 clxscore=1015 adultscore=0 malwarescore=0 impostorscore=0 lowpriorityscore=0 spamscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200193 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=matheus.bernardino@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: 1784569403617158500 Content-Type: text/plain; charset="utf-8" From: Brian Cain 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. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier --- 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.37.2 From nobody Sat Jul 25 10:43:18 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=1784569353; cv=none; d=zohomail.com; s=zohoarc; b=gO3bB25DSAypNrL4tcZIbO47heQZ0lzwOOkrVpnQ6M0Ux6rYixmVi8PONWUaMvxhusulxL+LHDGJ+YaQxZzHuXzluZ7ngHrG02wWoHGcKgLV8bFH9mflklyaz2BSjWJZw+LX1w/e85pb/u/nG1RUs9nmT6Cfq9w25oVCQXBiPJc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784569353; h=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=2OJRRCmADXE01Dx5EKXd0WPcwnmtWnKChRhNUdIjxw0=; b=RBUSJdt7uqBoAVqcaIJ2qJoECwl9tzZVixNKZcirhYoyunEI00SRIhh5GCmnv4eJpCKudoku9xL9zj403QdhKAWyfV3XC9PrO6lWVrE2SUZgsMgr3cZ6QL6nlEsnxE69aIx8jhn+loCELOYG2mjbhRAlM9RYC/6kyE0E7vnnG34= 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 178456935316313.553719130352874; Mon, 20 Jul 2026 10:42:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wls0I-0008JF-PB; Mon, 20 Jul 2026 13:42:13 -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 1wlrzW-00081K-NE for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41: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 1wlrzU-0002yZ-8N for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41:21 -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 66KH6hLW3299100 for ; Mon, 20 Jul 2026 17:41:19 GMT Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fhfvxjm13-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 17:41:18 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-cab048cdb3eso11601004a12.0 for ; Mon, 20 Jul 2026 10:41:18 -0700 (PDT) Received: from hu-mathbern-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3142a1dde81sm66281257eec.21.2026.07.20.10.41.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 10:41:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=2OJRRCmADXE 01Dx5EKXd0WPcwnmtWnKChRhNUdIjxw0=; b=Wgzw3CPu8hPr1tu2ByO1o3S61lk xcTKCnraVPG6U+733od8Kwm55fkTzwRJaulcv+RXEJ54iBkilV/e1GIilFtRMTNg eqYJQJGf8LcUY+rWcrRWxpCX1eJ8JIsiqK9QMSLDeMUF71wMWi3RrgEzyVAnn4ke 2kfwQ3DfEuZRDx4yKjaepnfFGzozX6eZmuKH+M/DFpivEb77o953SU/w0QKzgvMJ itR1MHSvhFdi13Q6/JJUckY4CDKHrWLYPM5swouHiufj81hGVVs2avdDOGsM5Mvw R0TeFJZS4na1hfIj8K+FMAOPLwbUtMj7UennqaQeLV8KCcNQSoHQJXXPf6w== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784569278; x=1785174078; darn=nongnu.org; h=content-transfer-encoding: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=2OJRRCmADXE01Dx5EKXd0WPcwnmtWnKChRhNUdIjxw0=; b=bubsj8GdDX6dGM//TTcBSzHrUVZTcSDikqzA7MPv92790t33cdxNarhYMvsGySrRX1 y893T/SUOamE1TRD+9/HIeNFN3TwvFZ2+Xu9HOHcbGHBJ/dyu89umcqqB5QtGw335k5v bKXTV59ZgCULnMbkb4JxiiEEAjqdSoIrQjePFoViAIpUt0GCVcQyHX1BHYt3g4GOqFNO zhbD10CWQ8+iraNuLlYqy5G9XuyvoGBw++qjVnlSaeS0/AMTf6X49mMt273rBBtnG5Kt YJGDr6HAt4V1277PMnwQVLTtjJu3LkCYkIlj20Y4vCFPUfIfhQXsH4EOd4ECtNEUSflz MA5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784569278; x=1785174078; h=content-transfer-encoding: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=2OJRRCmADXE01Dx5EKXd0WPcwnmtWnKChRhNUdIjxw0=; b=rpyx9DRX2Yv02BTUCfADdl0VifJoG5fY2ECXVnRk+RK1JlPMELfc8nnPb4awKvaHKF /09v3CvkVfRfcCF4mm3Y3Zg4OZYzva3XuPcovshuDg4AaJVk1SVHuBnx2EDFaFR9PC0+ 5xReh6mrcODYcTBODVQm3f+a9zuiUlqL4v6CMdl9zXkNMRHIuU/LgidgZ33KnWR1STts 3dXAUAELLdhw18tmfgzH/UJNAFIJedes4vEnpa3ME3TdAGD4xO2YDTGpOzgkpau5NoOl PmZ4aNxbkaS+luZamPHzlUth6L4MaNp7ON1izZPczJNXDpg3oxkOWbOf2hIWHlQ+KjOq 5ITA== X-Gm-Message-State: AOJu0YyVkbuKtTLvQVOfYBUF+5sXvdcVG8C25oPhpAYYXvp8ijAT1EVX GUQEgYZayxhHz15rIpV1d3CFlUhaLPFqzZqXmx8MimCzYh45tcOItZbddKZzG4cPyuA/2qx/A1a KZYjfhmnFxwbLSSVxf4lYXQaHKEjqy8NjISHAakoW9cryXt1KWwPZfaMe20gfBgwGWQ== X-Gm-Gg: AfdE7cm5L/Fu1bIPY1MQLvPB3XmmUC/MWqBaOSX+zP8Ocf4/EsKXS78eAdD5CRNJsUD sPS3Uwa9Nox+sCNs/+NJHYtTy6dPEdoCo8GbX3LJqpc7cr3IxXDpwtQ0hbrpOCZoCJxgXKDvOEM 0e8xNEDNBsggcsDUxPwoWiWcEQfTbjjh5IQShfVIQY2qHjOByaqJDmlE39FjkIYvsdoF38KW8S+ BVMbEtbOAZbIniKNxxOJibxOpKVIs/od7D4YPXLl6BTEgSJ2vs1ur+FIHyH52/iz+kbaTxc6VK5 q7eFC1rIdfrAE3OkKWAYsSbwhjJCGrhWp/AImJ3tD77Mf3WvScBDlfkFK3Xs9o68ZRg6u0kRn7W HkfOjhRyJN4seidkZB/HHhOnxsh9giz7jzPpuiXQS5Bm50U1E87nJYr2GYbTQLCY= X-Received: by 2002:a05:6a20:7487:b0:3bf:6c05:ab with SMTP id adf61e73a8af0-3c3ad9d632bmr16175223637.58.1784569277927; Mon, 20 Jul 2026 10:41:17 -0700 (PDT) X-Received: by 2002:a05:6a20:7487:b0:3bf:6c05:ab with SMTP id adf61e73a8af0-3c3ad9d632bmr16175174637.58.1784569277414; Mon, 20 Jul 2026 10:41:17 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, ale@rev.ng, anjo@rev.ng, 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, qemu-riscv@nongnu.org Subject: [PATCH v3 06/13] semihosting: add callback to set error Date: Mon, 20 Jul 2026 10:41:02 -0700 Message-Id: X-Mailer: git-send-email 2.37.2 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=HKLz0Itv c=1 sm=1 tr=0 ts=6a5e5dbe cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=8ndNYmkutmpv_8xOvXsA:9 a=x9snwWr2DeNwDh03kgHS:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfXwWI90VIM1Blj H03NcJW1ZiIXTsTVb7KFJVnKRWJeyBqK8NKML+yCKdRRBOys0TYVnTMLXpTm9StiH0Sd+eB5/Zk wqROqcgbltDjk4gaYmlP0NSPykoXXE4= X-Proofpoint-GUID: a2NYoMGdutkh5Osr6QYyaDFbgM09sRvM X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfX+eznsoZj+PcJ FvqiKIjm8Znf4EEumCe8hgvHDAGI6uwme0FGN2W0wl3p1Ny8ziKK30SNNsLqmBimQh+yOqgI5Sf UbsYzkzxIi14DUXdyBl6ettwXqUqL2y4ExlSkH1TQLjLlhT/kepoJKzkFU5tmXT6z14A4W4u9nq +rrUHJ9kCBkHvdWz+5siJhcaCMBLCMChZwncTlGB9h/nO+ddTxFjGVJC1hOcPL4eNj7Z4apge2/ ob7UDCJf7Kct4D2ySF0p9BJRjId2u1C8t6nMn9K4ckasZv3uEQjoqMM768ajeZHBnqP5LOQaTjE XNPclxvGg7koeWwB+7g5f4SvZfbTTpo0L/hu/idv7qZGHOkCfx7BdsQo0gIJpm7xKthxmrtzhmQ h6/FOXWBKMQsHVPIeOdobXSmPa/RCpJGSL4nwT3GrQ0FgWQjzPsOBnkVVnVZgIdH4F2vlhBJXJx 2Bjr0LjxanC+FsLxiyA== X-Proofpoint-ORIG-GUID: a2NYoMGdutkh5Osr6QYyaDFbgM09sRvM X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-20_04,2026-07-20_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 impostorscore=0 clxscore=1015 malwarescore=0 bulkscore=0 spamscore=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200193 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=matheus.bernardino@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: 1784569353622158500 Content-Type: text/plain; charset="utf-8" This is currently unused by existing semihosting targets, but it will be used by hexagon in the following commit. Signed-off-by: Brian Cain Reviewed-by: Daniel Henrique Barboza Signed-off-by: Matheus Tavares Bernardino --- 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.37.2 From nobody Sat Jul 25 10:43:18 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=1784569371; cv=none; d=zohomail.com; s=zohoarc; b=LBcuGn7ATsYI5tx9j47ObbMZj9Dh+NTdQbqWNjKxmyOpkbTHCM6yxaaxnRG9s0zFBXn/9WwUUldBYyuJzwdZpXaRtxn03h03dD0Oxwo1yzymiIDzFIlh0Grpt0/lFyvkDnVTKvx8tRH6oQ8C2dxEnWEp8MtMo7D/ltbgbdR00s0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784569371; h=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=BCYOiadnGjUUFryrrLR3H2gTm87745gbU+ecKPFs27s=; b=gfPbN1PYxSeZuubeGXkRSar5FHvFk7vDIrpfnqlboXvX10NMwvBjxOluYPL89gM9aWFmhwWRXo5pBDZHi3UaeupqwwsHwhJ5nboAOtES1z/QcM9kOY15O+6oGWJ/foKo4Tr0MkvxVtyj6a0jSl6dj8fyeXRbqBEo8lOfVy4MPNU= 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 1784569371277778.9418723848208; Mon, 20 Jul 2026 10:42:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wls0Y-0008PH-Vj; Mon, 20 Jul 2026 13:42: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 1wlrzZ-00082t-3C for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41: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 1wlrzW-0002yz-EV for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41:24 -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 66KH6XVU2962537 for ; Mon, 20 Jul 2026 17:41:20 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 4fhh5y2780-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 17:41:20 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2ce7dfd33ffso128875655ad.0 for ; Mon, 20 Jul 2026 10:41:19 -0700 (PDT) Received: from hu-mathbern-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3142a1dde81sm66281257eec.21.2026.07.20.10.41.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 10:41:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=BCYOiadnGjU UFryrrLR3H2gTm87745gbU+ecKPFs27s=; b=FtH1lo/4yVHDh7haOkVXeyGm20y HH516/4HyPFhP7BejAPx3TQPbuRbQ851fPr0DO9lR6xfLfVRBezNwpmVoTLPfl8S gYv06XH5Ecrz6DNPMFxMAZr5Y0nuWoI+aA0dUBavv2eqbwuUv1K047x/9DPlFTs5 f1D70Q0h9zzjttq6xtTUDfGt9K0+14FZpLKBUlZq813tsLQocrGypcyBbw24be79 rj2QfmNZOZeXJxE2ivtfpJ5Zv056hSOujw5slSGchsMz6h2bfcYWflN2wmVD+n6J 001bUjqRuIPlZzmxjLwc0NgsWPbgvsz7dyaYu6JfTeBsfnRP6mPeCB5/BJg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784569279; x=1785174079; darn=nongnu.org; h=content-transfer-encoding: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=BCYOiadnGjUUFryrrLR3H2gTm87745gbU+ecKPFs27s=; b=WZ9YLXlNafkyzerTAVtEE9dE2Pug1d2297AXgVP3e5YZ+UY0A0J2LhoXaaWEDKjYHC Eh9CwqydJRSlCRdNYNAzvOPizp/Ga3PeH4H/7Kml0h8BEtKh9r6DLaowNWHZCoiHLUGK rLk5qWJH56zerngisQPQv6KCi1Mzsp4zTBYopPruDHKVntvGuHAWJjrQoTuXr1M1/g59 KfsFJlRV1ySY5aC/vAX8YdcfPFTckJOqq4J1OA5hQwhAmlNQM1JLRlwjBTrC1+0htDby 8dzqY+UmOwpHV//nMQ47fQ7TSbaIIpLxxljPqHbvaJyXFoPqjnyhr+q40Lune314DN/a J0Xg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784569279; x=1785174079; h=content-transfer-encoding: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=BCYOiadnGjUUFryrrLR3H2gTm87745gbU+ecKPFs27s=; b=H7xcFgrj+HMGQd6DJ+RE8NK4A2QFbI216KGg37gEwazFXna1etOhm92LgjvRSNY8IT S8uoXnZLnVl8hEgTicN3bxl9w5DKcJZTIu1iJYh5vJH0striwLj02rq+zS66VJeIXfZf DGrp/HlUp5X+hqWUJrEsqvPWr29dCz0j42MutxR9R9OY3jYwY1b/RfBCgPink4C1SSi/ ZzrYzBabWErUy3ha0Je/ehy75nTTLvYX5FtR2dvAE00cNGC1MzyQypffNjrCEtaE1f/9 Z7fQnsJAC3up4BaBodWMEkSQW98mgQD3QZ9z1iR4GFmcj40W7rCYJ4MVcNZoVMhzn9mS hYQA== X-Gm-Message-State: AOJu0YxJ0nM13V/nfLlKW/pAUdJmlCIueXWDRvDrWNPW+ry91ulOJTx3 azPVCZHK/Ktlb8nYqNO/9EGJb5+tEpLiR9av/Bst8t+ToAgBdnAqj0v8qsNPD0DAIjBd4VUHmw1 PIhuun5lQAMB5zrlfRxoNumXkWGhA2yiNV9GIoyQ0aiiNHPEPoTWjFoEzU57rdghBzg== X-Gm-Gg: AfdE7cnZa1OsMn4b2lgk6GpE+Wf1Yv8iuj/C1kNs9BbmJ6SATPomQQAh7GQNOM5ona9 dWcA6QlhYPZ2OOrZGwP0QTFZf0jF5vnw0YSmo9v8Jzsh5sLAs6jXaBst8942Tn116WyAVdpcSeI Tps1+m807/35QGeloYntri87YOPM3bGdQCigZTAaF0+LOISe0IWh7SS4SpQ4tP8ENwBVNrBqyjq H/pWb8+mvZFV0IhZLbyahvZGXlref0EAnWjXxSGU2enAa9mnagvdQoHKc7QP5PLNn7ZjOabXif3 b+tNakj8gnpAD3PZIHoq/No+i/6WKlwC586kHeiZZGUf3z1AV6xV97xtD3neTw2Xi7ETzJQMOZw +enpfiPhbuX+QuLKeTxyj85VyrFTYpsg1uQPFbo3I8acUOw/L5T0pxS15FBOzTtE= X-Received: by 2002:a05:6a21:1506:b0:3bf:a0e5:99a0 with SMTP id adf61e73a8af0-3c3ad95b5fcmr16595098637.47.1784569279037; Mon, 20 Jul 2026 10:41:19 -0700 (PDT) X-Received: by 2002:a05:6a21:1506:b0:3bf:a0e5:99a0 with SMTP id adf61e73a8af0-3c3ad95b5fcmr16595075637.47.1784569278507; Mon, 20 Jul 2026 10:41:18 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, ale@rev.ng, anjo@rev.ng, Paolo Bonzini Subject: [PATCH v3 07/13] target/hexagon: add semihosting support Date: Mon, 20 Jul 2026 10:41:03 -0700 Message-Id: <0c46c3d9cf8215dc9249a8a583bad3eacad47639.1784568922.git.matheus.bernardino@oss.qualcomm.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfX3tvAxT4AcCNA xSkd9iLT4IAqvBh8+lgkKV+IoUaw4FCgq5+6zB4RSaLXnBDC8uA7FmqyDYOmMg5WpmmGrjSeKYE hHe7WvJxDoO33MI8QcKyGLHcFb7OiDU= X-Proofpoint-GUID: T1N1Sxj53I3gYGbcTb7hzIXWm2lI4pHA X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfXzwbQUzCwXMOn N3s4KTu0ujUBxTqClk1LL/Y2Y3oy0njFj4kaWVIeYpke7jl+p7BlUt1o6leGexEc27mzNd7NCBh kq9dkf3e+Wh6CpUM5Pnx0scP3y5kHnwyREHtQl6J6abamt53kJAcUdjIFszetcfhSnfjVVWNve6 AOs5Fg5gMeJu9gQ5UnMHj0aib1RqecMA0Zr7ZCakCSJG/C+6E3rDg6tNiHAmGlPPmjfTu2EBxsn QaaYgn33O3Nj7wanT3jWf8J1lJiDqrjN3WqfCq0iA7Nh8PvK5If8VrSdUs243gmLcPwsFJqKxP6 98v/gZR3KTbtoVWeVAIAaphRtrF1JrpErVxClgrrqAaot0wnrP9H8bx2Gry1GicJ2qVuNZ+qYHY raOjJog8DlpWXp2NhQ6NYOpcKC4Cdj0B1hQ/2Uedxzw4HVZngRZ8ynEnkM9wTpdXGKtjoyfj/gf 2aWSkmaaa429VAE+dsA== X-Proofpoint-ORIG-GUID: T1N1Sxj53I3gYGbcTb7hzIXWm2lI4pHA X-Authority-Analysis: v=2.4 cv=f/x4wuyM c=1 sm=1 tr=0 ts=6a5e5dc0 cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=9cnYKv1u39FlQambOaYA:9 a=1OuFwYUASf3TG4hYMiVC:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-20_04,2026-07-20_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 bulkscore=0 priorityscore=1501 clxscore=1015 adultscore=0 malwarescore=0 impostorscore=0 lowpriorityscore=0 spamscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200193 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=matheus.bernardino@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: 1784569373626158500 Content-Type: text/plain; charset="utf-8" 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. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier Signed-off-by: Matheus Tavares Bernardino --- 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 | 167 +++++++++++++++++++++++++++- hw/hexagon/Kconfig | 1 + qemu-options.hx | 8 +- target/hexagon/meson.build | 3 + 8 files changed, 232 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 aa493993229..315733cded3 100644 --- a/hw/hexagon/hexagon_dsp.c +++ b/hw/hexagon/hexagon_dsp.c @@ -27,6 +27,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 @@ -178,6 +179,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..9a7720514bb --- /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 arch_get_thread_reg(env, HEX_REG_R00 + argno); +} + +void common_semi_set_ret(CPUState *cs, uint64_t ret) +{ + CPUHexagonState *env =3D cpu_env(cs); + arch_set_thread_reg(env, HEX_REG_R00, ret); +} + +void common_semi_set_err(CPUState *cs, int err) +{ + CPUHexagonState *env =3D cpu_env(cs); + arch_set_thread_reg(env, HEX_REG_R01, 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 arch_get_thread_reg(env, 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..2aedd8368e2 100644 --- a/target/hexagon/hexswi.c +++ b/target/hexagon/hexswi.c @@ -24,9 +24,171 @@ #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 + +#define DEF_SWI_FLAG(name, val) HEX_SYS_ ##name =3D val, +enum hex_swi_flag { + HEXAGON_SPECIFIC_SWI_FLAGS +}; +#undef DEF_SWI_FLAG + +#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 arch_get_thread_reg(env, HEX_REG_R00); + swi_info =3D arch_get_thread_reg(env, 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)arch_get_thread_reg(env, 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 arch_get_thread_reg(env, HEX_REG_R02); + arch_set_system_reg(env, HEX_SREG_MODECTL, 0); + gdb_exit(ret); + exit(ret); + } + break; + + /* TODO: implement other hexagon-specific semihosting calls */ + + default: + qemu_log_mask(LOG_GUEST_ERROR, + "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 +257,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 52065ab3b22..3a8ff17812b 100644 --- a/hw/hexagon/Kconfig +++ b/hw/hexagon/Kconfig @@ -2,6 +2,7 @@ config HEX_DSP bool default y depends on HEXAGON + select ARM_COMPATIBLE_SEMIHOSTING =20 config HEX_VIRT bool diff --git a/qemu-options.hx b/qemu-options.hx index 34970fffc94..56f42b02c8a 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -5507,7 +5507,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). @@ -5523,11 +5523,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 59cb09c1070..69f01bd2f70 100644 --- a/target/hexagon/meson.build +++ b/target/hexagon/meson.build @@ -262,6 +262,9 @@ hexagon_softmmu_ss.add(files( 'machine.c', )) =20 +hexagon_softmmu_ss.add(when: 'CONFIG_ARM_COMPATIBLE_SEMIHOSTING', + if_true: files('common-semi-target.c')) + # # Step 4.5 # We use flex/bison based idef-parser to generate TCG code for a lot --=20 2.37.2 From nobody Sat Jul 25 10:43:18 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=1784569369; cv=none; d=zohomail.com; s=zohoarc; b=K4eMv+4ahZx1ehWKqPkFFYWu0Y77SyBI8nOPCBbNxRhJNUx+n83C0IPMtNltGVFFa7VDa1U50TQOnPG7o9KeMraFy5NMfsMhyjvqth6jTEu1pXTiywOPgc7M0cbWl0VUvP0rfQPMfiNazPMHup6WpjEMq4uLI2kVZCMoxEH6kGY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784569369; h=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=JUjDZ1DHGvR7qgizW3604RGsuA6SIWco7PEugKqVXNI=; b=aRybZujQWai9bpuAEphM6eG+xcpYCvJoYtuKL36rqWrxUk8WXH/G10FrYrA8JgBNkH5vnfYb1TsVwdx6b4RtT9ORGt/rI3VR2CxEuaZ1DN0RbqUFQYMswV3SVU9TPj4Ysi4a9s3dwsSQqR9pkCBonh52AFCGP+3PKUx9MOyeBfc= 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 1784569368810117.41248090499141; Mon, 20 Jul 2026 10:42:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wls0j-0000Bk-PF; Mon, 20 Jul 2026 13:42:37 -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 1wlrzl-00089F-RQ for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41:41 -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 1wlrzg-0002z7-Ez for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41:36 -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 66KHBrjB137362 for ; Mon, 20 Jul 2026 17:41:21 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 4fhqv5r4ae-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 17:41:20 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2cea6a46766so158448345ad.0 for ; Mon, 20 Jul 2026 10:41:20 -0700 (PDT) Received: from hu-mathbern-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3142a1dde81sm66281257eec.21.2026.07.20.10.41.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 10:41:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=JUjDZ1DHGvR 7qgizW3604RGsuA6SIWco7PEugKqVXNI=; b=mglw7ErTMbSXHHEqzQZbNo9Ygax 3Uu4FtfQwdy5jbfcVVdUWA72qAAudK3dtCHX3usXAZCS6ld5yl1Ceyn1Z4QUolq8 RHVeZgkf25q++D70a2swMF/lJGaLP03uv0go6uNkfwklwPQ2gTkzhurld5VIs7NF avlFuNan1d7l+c8uAmRFscnxFNOT9b8OFKH95eqhUFlP19AV+tu6AddcaHKIOMCa eF1uebwZyJxzhBTsOeDQ0i3juPnixLST0IL47m5FHRPmbqQ126x1C94MVD1WnvxV d6544D105H4fUDNNOW5nt1GCgBQSOHFxq4JUMYTmGxfcukGgvj931/vC9qQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784569280; x=1785174080; darn=nongnu.org; h=content-transfer-encoding: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=JUjDZ1DHGvR7qgizW3604RGsuA6SIWco7PEugKqVXNI=; b=AEDjXr/tBUTGrND4rLUIVSlAB/BmqbzAbsLqSoinOqMc0o5FyjOB1lJqtDqJwvjWBV jiIasJJak93sNcxge73oWN7OCqFNbqGf9prWmL7Ucc3zJSvMEX0VLJmM5aiyh6gaer0f ymy9l8uoLTDkgdhtmFlCbF54i6OPYHLw14Ua2nRJETZ5lcJwyHDUmYVjf53hWZXrS2kd nLNrP6fDyBD+9i/C1sW1e367p9xz3P0IjEQxElNDAKIo+ft8XKasRN9/ICIsRMsgE4mJ m0Q+Hc/CtYT1OUmo5g4rVbWWSHLs+Rv6pO9grIvUjtGuqCDiJQKpqHlgMvwVDg9fC7lD eXVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784569280; x=1785174080; h=content-transfer-encoding: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=JUjDZ1DHGvR7qgizW3604RGsuA6SIWco7PEugKqVXNI=; b=mVST03CdixB/NTdC9E0zzBpeadImxB1Qbe6zufPO+dP6rQOhD78sfPQJZmBqXQ0sxL vLxDUqyGe9yTL7q/gZa3edszAA8kyx2Oy+i0bMik9tX3oY13zJP66YqEsetqTvDB+/+d 1Bo6tP4mAhmAVP2aCnky3S2RdvmK6BTXq9M2iS77+qf2D+fzOxLMULDVs6Cn5VUEO8/Z RV7QSKECW/Msk03Gf7Q3BDR7nF6WvgSrrLOxhelxSuN8cUe17RBWp3by04ULwJQNoeC5 D5WcVcVVbi3C4afz0mQJsbAZlx0pEKJoMDkJnKIffSFYb7lWkMVUsrXz+Yr/3VhHQ/AO b3Fg== X-Gm-Message-State: AOJu0YxoNJndxENu5t+yDezjkazROReYyaDtpo6ItR3854COxAOgytBE E9DtcbRW9+3DFVm93lQD/jwNhwBHMHd52oO6AHfh4W6QJHID/o6Y83wE0d4EhFXRchIJDC4c5LV HG0KcUKTCN2dc5y/zKk3028j8b/v0ogK0rnhol5/VgPoWp6/iIYL08y8mNzkX7D7Kfg== X-Gm-Gg: AR+sD1027M7kCejwJRwDeGO1zA6Dhvc8AUh5bSENiCTapnfXUwUin9i82nYb610FXj3 ukqH557l6jh06DuCV+Jxtm/Ksdcgd9R8x2mbk9PwvDR1fSeJpuPSStyEGNiDVFTgsePT4sTxWK3 naOFicTedQ9aUKEPdWltUZJS9mG3G6zovVla2NsDziriQNadTHU87/EjC7i+dZluETN9PuNSyTr j5VHOHqFjEFmvAasntUT9S74wl6IIIOp+bclhvQd/QthCyA12HE2+lBIl267yWxUXaS/nCtdVgs XjXaEhHPvafbeVQeyy31dHQPXi0woGoBbtS/r2rSKYoOW0CdVJeE/wvtn9hvTsnVIS7EzR/k6mi +puPGXZKFGn+eLvjkYRobA7GU2dIoh4C6QM3i1NIxHzhCLv+tvfGYDj4qKiKJNB4= X-Received: by 2002:a17:903:2f87:b0:2ce:d1dc:1e1 with SMTP id d9443c01a7336-2cf34a49502mr163584035ad.39.1784569280006; Mon, 20 Jul 2026 10:41:20 -0700 (PDT) X-Received: by 2002:a17:903:2f87:b0:2ce:d1dc:1e1 with SMTP id d9443c01a7336-2cf34a49502mr163583645ad.39.1784569279513; Mon, 20 Jul 2026 10:41:19 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, ale@rev.ng, anjo@rev.ng, =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [PATCH v3 08/13] semihosting: add ftruncate helper (to be used for hexagon) Date: Mon, 20 Jul 2026 10:41:04 -0700 Message-Id: <6bff530121c1e53b49328253c04027ebf1cc1abf.1784568922.git.matheus.bernardino@oss.qualcomm.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: Zsln_5cKxtCWGau3Vdi52JI_EeE-JZI9 X-Proofpoint-ORIG-GUID: Zsln_5cKxtCWGau3Vdi52JI_EeE-JZI9 X-Authority-Analysis: v=2.4 cv=e+U2j6p/ c=1 sm=1 tr=0 ts=6a5e5dc0 cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=H7u-uynIU280lupyLLIA:9 a=1OuFwYUASf3TG4hYMiVC:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfX0a2ccQ4r3bE7 TqJke8IBv7z1tgOSKv9HFM8FNh/FhaPxSoa4AbS4w3pU/TdfhUbPLtqkJIozvSchmedfSU4rE52 uOrxPRDAqVaJAmcRcwTgbsQ8FvdCV5E= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfX1ffASkxMVMfn o8wCZgvxz8hU4mf60gszqMdH45Bc1i4jV51KSRW99Z00S95cNWUf9jXGhBaJsvkHvJdHaV58Ooh r5+et8NH/JL/1Stj+k8xAem7l1mN8l2Iw53rg9S0P8AM2lJeGMqzy/l0Jv5Z0WAcvyCFn50SwIn J4TDEtgoLeBCj4s63mVPhmETI3pcP6IQaxumbnICj7vEnUzFZFs0CA20cu6TF16skLqp6YKo1/f cCbe56paPs/kO7KF97LH+w4TmAMs45fXj5rUkmfzdRYcQ0QC+g08IlzOolQrhyv449ya/JB21l8 36DLErvk6hz+kYUvtN9EJnezthwiykoPIUgVY7KjlQnHrZclV7doCMW+/pDvIy5JEjzalQCrlcP +Dyb9wk6dS3bC3xQF+L9p9v0Akl4m9vVuMBNLK60FmzM+NX2HDJvgWLeJH/NYgjXv90o/lJ5suR ZQU+PNyx9Ag4n/1Bt/g== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-20_04,2026-07-20_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 bulkscore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 impostorscore=0 phishscore=0 clxscore=1015 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200193 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=matheus.bernardino@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: 1784569369462158500 Content-Type: text/plain; charset="utf-8" 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. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier Signed-off-by: Matheus Tavares Bernardino --- 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.37.2 From nobody Sat Jul 25 10:43:18 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=1784569364; cv=none; d=zohomail.com; s=zohoarc; b=TkD0zIZJ0ruORAC2KCdL7vxVDHzpOTUn36z+3+22kJ1XlOw870qeozFq6zke2+kfvAJ+ABYbuI/1TtBGQ1BpAj7L1y+OEiqxJ4tHT/Irtn5jwUOBwCot6Beb+ZbgiMzy5d5CXHpe+YdYWEpvog4B41RcAXjojYTqroz8q1Oo5c0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784569364; h=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=8yGLavqPdzoBm+AFfkOFjMf1alM1ifVWOczbfo/b9vk=; b=gwG05WK1rbUL0vqBw7bj83pBNHnj3ezkpDC6RipT6b+ismb9yPUr75QJZsjrGUiLz9cenlz91n4gBzOaZKckwT0yFR2fgUZ1FpGi+MgXC1e5w11/i5Bst5pKifiqUBiaJ6rTx4bcJ/pOIr5VOWfYDWU/aANpllWduk/D31DOm7M= 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 1784569364034939.295386273945; Mon, 20 Jul 2026 10:42:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wls0i-0000AA-DX; Mon, 20 Jul 2026 13:42: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 1wlrzn-00089J-2e for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41:41 -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 1wlrzi-0002zH-5o for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41:38 -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 66KH6TTf2962253 for ; Mon, 20 Jul 2026 17:41:22 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 4fhh5y2784-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 17:41:21 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2cc5faecf01so204167245ad.1 for ; Mon, 20 Jul 2026 10:41:21 -0700 (PDT) Received: from hu-mathbern-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3142a1dde81sm66281257eec.21.2026.07.20.10.41.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 10:41:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=8yGLavqPdzo Bm+AFfkOFjMf1alM1ifVWOczbfo/b9vk=; b=eU+hk5Jop9wimjJOUVj6VqsQGK7 gyswszkCxZB/QtRqAF/tm2jG3e7hcVT4Wvrgvkavs1rhS67K62EhXsaMhSpp/DzE qC/c5BJKFwm86saBPAsIHyhv9jkvHX0DJXG5KF38oIj9TcyAeBUa6et/thUBKjgL ne/oCKOkgZAMONfQ5jJ5oQvKACTnq7tJGohzeENi8paUVEOBgTV9ZGJCLdIgm7Q0 u/LuJpCsSDcbHRgeOh1KXHBBigSMDnFuSJyjDW5Yh9HUi1105jUQgHfWlikpySCx bv3ko+JnhLQRcskkTXSrPAlsynNods8vXSZ/wpCM+e2YCy64+wuNbPwTa6Q== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784569281; x=1785174081; darn=nongnu.org; h=content-transfer-encoding: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=8yGLavqPdzoBm+AFfkOFjMf1alM1ifVWOczbfo/b9vk=; b=NYcoGaI3lhnQ6zwjtMlroMSWw0HNCB++TttPC0LWNAXBi02geCVtGQpqopwBH4s1mV rA45iVgdaQ7rcLdLnL4xlYLuxX5mmrKQIHvsiE9uIj/gkPmvY9jdi7Jz9PfU0t1LlujD w60yoF1fpdzXUz9RHTQMZaQP3y10HVapcSSgIViMohWsuR/HieNGizC2M4b6KVAN5xJD QxFb51JXduvALyUPEjlBVsHNx1LUvuNRy1nAv//XEsUlUgJZbdH3ZGdrkp21Q46WBGej cdx+91u1Pkd251aCqmpLNH27Jk85fvWsxMf+l0OBmq+34cWSUFL57evQp+RFbaRvI8Vj ELfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784569281; x=1785174081; h=content-transfer-encoding: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=8yGLavqPdzoBm+AFfkOFjMf1alM1ifVWOczbfo/b9vk=; b=aj4lx+A4xAamvwmoDRg+Ot3Ecv+68HATH3rlkoyC3KGh8hmWJr9irC/01/EHN6EqXc w37uFsW0uCT9t33f+g7Gaj0efA9fMIAMTy3O70jgg1gCz2XhH6l7BMkPQMGlC2WOApGk y6s4Ow9usJkErVp5W0DIyJ1eC54vVhXPUOGvZH02UdA5uz1PN80l8rb9Yd8LA1iKXxiQ Qmhmip6y1a8NcQ88nKRvqVzU2g3fPQFpdlIi4HOsZys/Qx1Fg1F2FOMk6do6riOK/gx+ FbHR7LZNsOfHRe5trPhMvkHXmAHu9cEQAHZHmmaMfk1cLKI5/2PB5u4S44+gWCQPv0Tn w2aw== X-Gm-Message-State: AOJu0YyDO2Pmr31nN3xnRRPoXVHgZO1COjvcv36aTl+4jZgE3Xg3E9PB IS8FtSYQMW2xTgHROIVMgt5lXndEGfMll9G3TX7gY6B8/Gfr96di1wqCiCc8GrloSjHwRbcUIKd az/BxV34YeKNA4elWk0l9zT2xkSPSYEfFFApuSilwKh3BwZce1K/eZQROdJn6o51f8A== X-Gm-Gg: AfdE7clD7qupX3llnZ/2bH+Xy668eFgh6e8i95cY5EKI4BiHTUIZ93NbjBBaG/p5JzB beuoi79vjqgjuPqAlatdWfVfe2lu7BZOmADGTIRKpAWFmcXyF5v4LkbQKwKfJhHGrzVDwOtBW/a 0Dpm9MZlL9ce7QLqte5NK219ZUvIyt8i89ZBuC2Iew3CbonnNoeHNATMZWbArGoWBHW62PxAtL7 0cltoxq5XmPD3qJ0bEo41JmtdN3o+iV5PGSeFNg0iSIN3gCpzXy67gRDORJ9uAOeAKYrfz8nklL g9RZVXH3BKXaXjZ/JXZ9Ylsdy9WSNgy2wVfpDGN7oJUI6FibiqSO49b9FQSDOt+978eXtwLxXAL rriDWVWAg+oIryzeuFJmXjPIrAg87QDA81hte6G5uwOboA2NzpFXKZ2RD3PZZXgM= X-Received: by 2002:a05:6a21:9206:b0:3b3:1c7b:ffb with SMTP id adf61e73a8af0-3c3ad808bc9mr15386560637.34.1784569281055; Mon, 20 Jul 2026 10:41:21 -0700 (PDT) X-Received: by 2002:a05:6a21:9206:b0:3b3:1c7b:ffb with SMTP id adf61e73a8af0-3c3ad808bc9mr15386520637.34.1784569280441; Mon, 20 Jul 2026 10:41:20 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, ale@rev.ng, anjo@rev.ng, =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [PATCH v3 09/13] target/hexagon: add main arch-specific semihosting operations Date: Mon, 20 Jul 2026 10:41:05 -0700 Message-Id: <96776c988e48b04a59a146fb62a934389a73a4a2.1784568922.git.matheus.bernardino@oss.qualcomm.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfX1YQHbjAY95YG qpamrlIjmPJGCrvMDokSzw7qKuJRMIOQbrx7po9C3JI0RSzPeOMoK+0UEuKSsshfK1qj+4kg2BX 3Xb1wPgrDnmLSFCkRLN0P5/qY20Vtz8= X-Proofpoint-GUID: Fpejw1Ec0neFxa9H3DkWJmo_xvrbN0Z1 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfX2rT+1+/tXAkD U6Tzy97YrwV7D85FEa1VFAIG6j3yuRSeiHNjhtuFR0n51ZxUVxddzrDwXpC9i+f5tcrNmf4ftDV UAvbLSCXusxA/h4b8oaEH9pgeQZCBnXGVsalNxRjP8E7QkNyWUOZN+8n38uJ7iD930qsQWZPL2Q YNPcHmMvDvckgu66kzbi64IsX4UTgAWOCRefq223LeMwGh6W6OYrrgEpu69tXH10/0yUj65U2Jb 74NfoErl/pICq3duMgQLqS0I6IqlsoYsJANzY3HXNAOCufQ45OYKnJF9szjy02Nb/gtXULbCywW 6hU9/e/B8rgaDNP1KbMkz1Gd5zdEPePjJBR2/rGwGNx0USd11dAFWiaCz01NOddLzWkBXuOJ//Q Fxga1AT32VvvAYssIYV2MRhVvgXs9c+6MwRcnsMFXZPCIGVuezEOHV16aFDY8bVZuQjdeDTIvrE ezSEj0ObkAvBwQiFTug== X-Proofpoint-ORIG-GUID: Fpejw1Ec0neFxa9H3DkWJmo_xvrbN0Z1 X-Authority-Analysis: v=2.4 cv=f/x4wuyM c=1 sm=1 tr=0 ts=6a5e5dc2 cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=UwY7kZyrlkj7TMZqf0EA:9 a=1OuFwYUASf3TG4hYMiVC:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-20_04,2026-07-20_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 bulkscore=0 priorityscore=1501 clxscore=1015 adultscore=0 malwarescore=0 impostorscore=0 lowpriorityscore=0 spamscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200193 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=matheus.bernardino@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: 1784569365507158500 Content-Type: text/plain; charset="utf-8" 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. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier Signed-off-by: Matheus Tavares Bernardino --- include/semihosting/common-semi.h | 1 + semihosting/arm-compat-semi.c | 2 +- target/hexagon/hexswi.c | 298 +++++++++++++++++++++++++++++- 3 files changed, 299 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 2aedd8368e2..6efc00fedf9 100644 --- a/target/hexagon/hexswi.c +++ b/target/hexagon/hexswi.c @@ -85,6 +85,41 @@ static inline bool is_hexagon_specific_swi_flag(enum hex= _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; @@ -119,10 +154,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(); @@ -177,7 +221,259 @@ 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, &filen= ame[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 st_buf.st_dev; + sys_stat.ino =3D st_buf.st_ino; + sys_stat.mode =3D st_buf.st_mode; + sys_stat.nlink =3D (uint32_t) st_buf.st_nlink; + sys_stat.rdev =3D st_buf.st_rdev; + sys_stat.size =3D (uint32_t) st_buf.st_size; +#if defined(__linux__) + sys_stat.atime =3D (uint32_t) st_buf.st_atim.tv_sec; + sys_stat.mtime =3D (uint32_t) st_buf.st_mtim.tv_sec; + sys_stat.ctime =3D (uint32_t) st_buf.st_ctim.tv_sec; +#elif defined(_WIN32) + sys_stat.atime =3D st_buf.st_atime; + sys_stat.mtime =3D st_buf.st_mtime; + sys_stat.ctime =3D st_buf.st_ctime; +#endif + } + 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: + { + arch_set_thread_reg(env, HEX_REG_R00, 0); + arch_set_thread_reg(env, HEX_REG_R01, 0); + break; + } + + case HEX_SYS_READ_PCYCLES: + { + arch_set_thread_reg(env, HEX_REG_R00, + arch_get_system_reg(env, HEX_SREG_PCYCLELO)); + arch_set_thread_reg(env, HEX_REG_R01, + arch_get_system_reg(env, HEX_SREG_PCYCLEHI)); + 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_GUEST_ERROR, --=20 2.37.2 From nobody Sat Jul 25 10:43:18 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=1784569382; cv=none; d=zohomail.com; s=zohoarc; b=WNcrlNunBfrpK0P6gweYBjfXMbKCAQrMWsFro1xT99kZPANqfASIaWZ2jwrnikEXREEzoNRveiWUc4btDq/6WJ1cSrWWDvmSv7lRdIHEjvFDBvDvfAAz1x+AX+Zv+luf/SBmU0GJDhX3NbFC4prbVYq692mrcJKlRopWcMGEBpA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784569382; h=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=+JQO3gJq64K7yjfgP+3bGDs4aJPdFowBy20sViujbAw=; b=JoZcNofwNDPTMO3vt6h4Nx9b3At9I1BHW984lisJIA4emfdvRgS2cGQIMs53aT2zYSTbLFq1wAJ0KPCA6WkFUegfj14X1pp6Uc+owHniiXNedT2wMVp0KXnAc2mWwMhbkMjbqzDILCIuctaGpTZY+9SOejNpMpzArqvaHir6Ess= 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 1784569382510905.5425612004092; Mon, 20 Jul 2026 10:43:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wls0k-0000CH-F8; Mon, 20 Jul 2026 13:42: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 1wlrzl-00089G-Rb for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41:41 -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 1wlrzi-0002zY-AP for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41:37 -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 66KHBrjH137364 for ; Mon, 20 Jul 2026 17:41:22 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 4fhqv5r4ak-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 17:41:22 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-cb6dd278512so1447358a12.3 for ; Mon, 20 Jul 2026 10:41:22 -0700 (PDT) Received: from hu-mathbern-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3142a1dde81sm66281257eec.21.2026.07.20.10.41.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 10:41:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=+JQO3gJq64K 7yjfgP+3bGDs4aJPdFowBy20sViujbAw=; b=FQq/daqjLyAeOyrhn6/JgGW9P4S inDawB86Y0LXtyBtDtip4cxU4/lmwYYSStrhnaO7aOAzc43X47m9lswi9phDhIUl LfswS0sTL801qU1hHHD38GfZ1HAu2RXE7dFogTEk960zC8j2BvdQIFBnYZ0k7byY HcWfWHAg2QHyQMX8pnXzM5IszqhGiTBp7vqc34EVs1M16gJ00GD475CkarV7TLX7 Y7bph6a/tv7GPdagargnYuWTmJQDnBAcCp1KmkY4oxbE3nHxpo3bYrFu//QuBEc7 akCRJ2XFCYZEev0mlASNSXAnNlJdSQ2vi+iC2/KR11I2oBbIH/wIyWvDhRg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784569282; x=1785174082; darn=nongnu.org; h=content-transfer-encoding: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=+JQO3gJq64K7yjfgP+3bGDs4aJPdFowBy20sViujbAw=; b=ZkKm2Q136vyY59qluTrZiOhYU6XLtZ8BgVZTgapDhB1gIChrgE1tMr4K+saRA//WeF NVP7blbV2jLYf8zqBdLMfI5gLbT8mAmzLqEvsO+Ayr5neW5V1XXtPUyh4nRs9GIR/44W LykM6skNxHoNkzAsI+eb+kPOAzQA+ARyaUkkpQoWvekyFh1fuqaALJb4SDOuHeZbGUtU FFPadrjWTBKKIKTWcL7WefDh8MShdj7noBSHGbnVhy2AaA+4IBMFhYFChgamlSZtGbwW CU05IXhc4/5VvGnt8e0bkg2YJoxw9ryklQKz/GNmXMbLscAyKYgNYib1PRQ1hl7P9m9Q pqvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784569282; x=1785174082; h=content-transfer-encoding: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=+JQO3gJq64K7yjfgP+3bGDs4aJPdFowBy20sViujbAw=; b=OL7vy+ICHsrnOXprNneEe1HicEFM5Ti/hUZES9zW1weMVs6T7vaL1WMTyZSoQZfQ9q GeBYzUf/kSse6UmEgZDTWc7UlRjgJwjgs+5RibqdqsvVU6/t65ak1mK7zxlXfNIy3I7e a8/WQP6utB/N/LBywPqOIs1is8vU7tnv7eWBjozWssqUthAQ5WfYMnNrt+3axycssPvt 9/wZDx1cHNe4wktKOB/9zay5ebwmdSAolXyj0HG+U3GvFqMoVaQVjTDSuK7BXEqJFOi4 /03LNGCYYcxi7imlFC7ZcMytW651kBJeJD5NliHK6zNXCAlWL7YNOzvXVXPFIKEwu+Sw WSHw== X-Gm-Message-State: AOJu0Yzk/mNfWiQgqArRJdsZQzM0pM5f9sNpcOyIREmb3godKng16+Pk P83HtOsRLasdBnKHAof8K53KqGAlEfdiyJCVRVN+P0BBMZJULsCRSCjXO5LKqOuxJNOVrIu6G+Z tcPZ226aqicJibjaddzrRHWgEnj7avrO4PC52qmnnfrwzOsWb8KrX8b9Bz6Ia1rIXyQ== X-Gm-Gg: AfdE7clPvDALjxWXghE0BW27WK1v1OZzigYTa0RFBoN6FEM1IoSg1JRonZLQtYLZsdy U+7HvqbsVdkGJMOSp1/iOnv6ZtgHR9n62xrz8f73q5rNez3HXpzHShwo3F5Ro+lq9TWxIhUjE4m lHzxqSnrwFU9iDiO3bBDrBKmrqA5HHec/V38bC9z2DupUbhpEMoX6kmQW+5kZQZ2YfO96KMYMFV wyuhJ0KsSjcM/E5xAnpAz4hDkqINgAm80dS+b/e+7ZSxRMJNnsL0JYiDtQaVXu1ruvqsoQkgPVU 8cIYBr1gKqkKTC09Zzow0V4m0qJQ1KlU7jEZFcZ5tyWNf/N3JLsckDNCvt7rMunVX5UAYbBaXLs MIHRGQZ3dsYCQyRtdL5KI3UJFSlB2I5pXSVeKddazUwqHZut2fpLUeT1JobmO4z4= X-Received: by 2002:a05:6a21:9206:b0:3bf:c28f:8afc with SMTP id adf61e73a8af0-3c3ad3bad5cmr15437656637.0.1784569281918; Mon, 20 Jul 2026 10:41:21 -0700 (PDT) X-Received: by 2002:a05:6a21:9206:b0:3bf:c28f:8afc with SMTP id adf61e73a8af0-3c3ad3bad5cmr15437632637.0.1784569281443; Mon, 20 Jul 2026 10:41:21 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, ale@rev.ng, anjo@rev.ng Subject: [PATCH v3 10/13] target/hexagon: add COREDUMP semihosting operation Date: Mon, 20 Jul 2026 10:41:06 -0700 Message-Id: <9ac447d68310b348423a416a7aeb1490e2cccc5d.1784568922.git.matheus.bernardino@oss.qualcomm.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: crUOOec6ejZTn1RXXFqeUbpW_-pimR1J X-Proofpoint-ORIG-GUID: crUOOec6ejZTn1RXXFqeUbpW_-pimR1J X-Authority-Analysis: v=2.4 cv=e+U2j6p/ c=1 sm=1 tr=0 ts=6a5e5dc2 cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=BE4lvaXKYeXNScGiURoA:9 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfX8bHd1gldO0Bc 3Z9ZluXm+sktlNME38WGovmkQYX4x/sGf4tfgUCSGOvKRsxiXokCchue2a0JtCc22ytfGdB9HkL SHOJkc1OaEA78vGrlndsmFe9MXWZOLY= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfX33qgEkob3TO3 17dh83dZ+h1zPWFGk7TWbxTSRJIvXwNIcuXnUlYpjBDAz3B2ctBydeOBA/MonVbTPkJqYBZ288s E6paJWaBsmsfe4Ahom0Swrf7zCmFkVF7Yb+AJ/TU/d5OKIhB2NhtfbaHzND+A7AlX23ppvUdkon FVoWxQke2XyfuZWw/86H/iZ4+PuWCmwQg+qX7JfhHMkzRSdilNv/jPByA7epRL9NMjoj1pja05+ nrKk69rlHBP34gfL4k5X0un++LzUYusjtQcVrDBKp07q4ZnXeyAFf9+9bshdK5eVRAp/sL7Xhj3 sDdResqEbl6Jr1Dgo1ujRiipY2UO+oXZ/k5jwb8ouDbsc+2f9dC6cGric9/z9aXFc9+Cy116gYr kJnaf9fyB1AysMsALB3ImBzbGgLZdZqsEEG86sl3k54ZToaxMqFtwVkQ6EtemIM6JVZ26piVuJd BrSNTg0vlokfDyDWNxA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-20_04,2026-07-20_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 bulkscore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 impostorscore=0 phishscore=0 clxscore=1015 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200193 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=matheus.bernardino@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: 1784569383618158500 Content-Type: text/plain; charset="utf-8" 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. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier Signed-off-by: Matheus Tavares Bernardino --- target/hexagon/internal.h | 1 + target/hexagon/cpu.c | 2 +- target/hexagon/hexswi.c | 143 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 145 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 e6b2ac1939d..06c378c5e02 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -232,7 +232,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 6efc00fedf9..564a11e557a 100644 --- a/target/hexagon/hexswi.c +++ b/target/hexagon/hexswi.c @@ -162,6 +162,145 @@ 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 arch_get_system_reg(env, 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, + arch_get_system_reg(env, HEX_SREG_BADVA)); + break; + case HEX_CAUSE_MISALIGNED_STORE: + fprintf(f, "0x%x, Misaligned Store @ 0x%" PRIx32, + HEX_CAUSE_MISALIGNED_STORE, + arch_get_system_reg(env, 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, + arch_get_system_reg(env, 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, + arch_get_system_reg(env, 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, + arch_get_system_reg(env, 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, + arch_get_system_reg(env, HEX_SREG_BADVA)); + break; + case HEX_CAUSE_COPROC_LDST: + fprintf(f, "0x%x, Coprocessor VMEM address error @ 0x%" PRIx32, + HEX_CAUSE_COPROC_LDST, + arch_get_system_reg(env, 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; @@ -437,6 +576,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.37.2 From nobody Sat Jul 25 10:43:18 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=1784569384; cv=none; d=zohomail.com; s=zohoarc; b=ICuncwJi2ulLWE3a3qsBX6l2rdUTCfRpVb6wuwp5ez+QLi2lb5k5/70V0zaZTlRrlVdQxiw/Ci2vljAeytZbPu5RIoL2E8RwQi/nTQOmmxWIxPt5zvpP+NM48a0qY4Bx7OVpru/drmgcaNgUBloURtKHRjwhH6SamF8DyiL1084= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784569384; h=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=CunPOXKSfTCaWhaA7nZo0IlDNiZNdo3O1C5GCRZUKPE=; b=LGWMNJDPSUBJ2CyWbRwQkg0iaXl3hOT9EHGC9O/0msk42nNQkgb6D9LmSiq71VWAxW685UlfITzPdc1+vidq8QW7bLnf6DOKggDLR/gTnaQ1IJVWlgSwuul4UfhDt/uf5/u4223peWw6TuFijWxUJyuVbhhu+5Hfg6xNp57Ila8= 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 1784569384504145.82837967123703; Mon, 20 Jul 2026 10:43:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wls0l-0000CR-0Y; Mon, 20 Jul 2026 13:42: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 1wlrzm-00089I-LQ for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41:41 -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 1wlrzk-0002ze-5N for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41:38 -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 66KH6ooW3044465 for ; Mon, 20 Jul 2026 17:41:24 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 4fhgs028qy-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 17:41:23 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-c85798977dcso12272882a12.0 for ; Mon, 20 Jul 2026 10:41:23 -0700 (PDT) Received: from hu-mathbern-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3142a1dde81sm66281257eec.21.2026.07.20.10.41.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 10:41:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=CunPOXKSfTC aWhaA7nZo0IlDNiZNdo3O1C5GCRZUKPE=; b=dBWVgafj3teb2xNfyddvcov/zfB 2wSsmtI1uy0nzuZc09oC4w1Ahkl3xBdXYuZUkOqaqb/74x8eOwrB5Hy09antrpjW FMVGaQrLsvyyzVhND61svRxvgE6g+8ASJdehlqr2RX1tAeBnQSqEm+Eie2rmE0QE CpfcYm8d50u4nJiI3p7AVL9cx3z2TI4YHyuziW5dFh+MPq8iBFXVexTOmEV7PvqU 20H4OSxCxQnCTyU3QtdPzcHvha4D0tJdAy76sKe//RmxammS45860j5UGL6tVPz4 3mMgSUNNgkqno0IbXOv3/SNzjVNqYX8SsNnfAZeOHsGBR4UVE15r+TaYVng== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784569283; x=1785174083; darn=nongnu.org; h=content-transfer-encoding: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=CunPOXKSfTCaWhaA7nZo0IlDNiZNdo3O1C5GCRZUKPE=; b=Mu0D8+hFgKNsTYHkaLOtN6SMRx6iH0urNYWdFO77WvLDzKg+ELARE5Xj1dWccw25hU F8mEBB/Fq96s0dIK2VtsXMJBeE+HWfhnINUw43jz/iIrYhb1ZBkI7Ub/SjwVaCD/g7gH 6uXRSgZDYmIZDG+C+j/VB/fAlaRKSPUYtiaaHBZgn1IOmgxjYR8+n097o7pzcKvthpma lgaFNv1phMaHwwJNdHBKrGqn+7KR/EQ++lGCzVW2Iak64sRyceCMTFHcXHyAxJaw9L09 MxX1mmE6UiKrQPbFwD4E5c0N9aM2r3mfnCZnpD76mLuOPdc5MM4iciltGtb/xLRuQrP9 Isig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784569283; x=1785174083; h=content-transfer-encoding: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=CunPOXKSfTCaWhaA7nZo0IlDNiZNdo3O1C5GCRZUKPE=; b=KZl3eUsMghsEzWpHEaZAriHBHsDyV6f3H5HU3IbHeLGKdVqnxj2haMs4PBWaPpZpb5 jIY2ETxBHMfoQR++/GSHq5cmzsJbtLgvBv7OpAf1qwA56mQlrfLEi8JZi+7PBq7m475E cVgeVEo1NlA9QmT/AclpZwycuDPy73YgTXeI7Ft3B89GgTJzOR2v7YV9kL2yrH2NWdxu FssdR8/NZJETERlrOHNOAF/G4yfK6KBQsniRD1AXKbWwbi8PdgpdYECPWVn0QZ+SJvKZ xx4knX5+dMuUjvWKNq94oR9sgcBMF7wAN+aT/PFQkvgRb2d4k1LXJpow6AZB6Hsf6ero 6aoQ== X-Gm-Message-State: AOJu0YwGn4xySzZgl4zGV6qI598DpBSoyKMgfV5tI2IqPKfGRVDBRuIp l/Y1M3ckdl4BOf5lxSifgK9350IBMXWER6EyIUrtccO2Tw2+2CXER97upDBKJqTTnnyLN92zTgC 6BNR68XrvaQgSJ03MROtJeVweOVLPbzYW3xbfK1wkRCBFsPU/tXrXBdv8IE4RMErDRw== X-Gm-Gg: AfdE7cnCHeZfx83vvhwaQcFm+WMkgTtf0lw/mtK+ChJ00cfJOANeGcD4givwGvdEuX2 UUf9PCDSgC0F+fMpKamk8dONdW5Ni+aqcnlgEQJwAZ0OQYsFdegJaCZgGgeAyVGBxRQQ0PioH7u d3f5TZOs2oONDs/HNu3mg+XMsKT4XiJdmZoE4nIenaLdpw0XZxOCukCb4GDey4G3Pnqvmh5KA+F xNVpi1CIFSYodlwbqN+bZfHL0/4WFs83QSOPshXu0COPUeZ/0fyxoXt88kmSIT8r5BCA99UyMjJ Cte7wHf72lPjYeC06WVSH/33TQj4HEUL+NRn+4YJNsgo2XIkRBZo8sY1gaEtQZ33+sjiv7jX+Xi 7g+A2R+FkVDkE86savHIfilK4nJmTseTUaLbKAZI0/F+LNBP1O9lCKM/lFPi6kqU= X-Received: by 2002:a05:6a21:7a45:b0:3bf:6fb1:ce0d with SMTP id adf61e73a8af0-3c3ad66b702mr18554813637.21.1784569282977; Mon, 20 Jul 2026 10:41:22 -0700 (PDT) X-Received: by 2002:a05:6a21:7a45:b0:3bf:6fb1:ce0d with SMTP id adf61e73a8af0-3c3ad66b702mr18554763637.21.1784569282420; Mon, 20 Jul 2026 10:41:22 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, ale@rev.ng, anjo@rev.ng Subject: [PATCH v3 11/13] target/hexagon: Add an errno mapping Date: Mon, 20 Jul 2026 10:41:07 -0700 Message-Id: X-Mailer: git-send-email 2.37.2 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfX1aKGLP7J7FoI 7zqYf29JtAe+nyCPPiC4glyvnc3bQCyoSe5AQGeIiclsfObJhauvcTMFiWJubt0Ymgn6qDjCAH3 9PYvqogmdr8vNdo6Cfvw6jhGmeQbzHs= X-Proofpoint-ORIG-GUID: 6bPchdwGTZ5ki6zdjq_v4fh2jLRnZCSK X-Authority-Analysis: v=2.4 cv=DMS/JSNb c=1 sm=1 tr=0 ts=6a5e5dc3 cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=fCHUY30PoOJQLmHUSpQA:9 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-GUID: 6bPchdwGTZ5ki6zdjq_v4fh2jLRnZCSK X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfX9hyBqRh7lPr9 aU7NKQEEjKpFDyGHTDPfGPEGvnVeGhb0BFINgKfOoBZEAXy9jyTphPPz/GmskZFDUc2MGBnFzYo yhkqA0PDeMesjqIZNhJtMp2zEWzkYS7TqvA+tBRW4eyfd3pdKQ+5jDPCncBUCtvqBCt1Fdte6Z8 l/vDgQlBhc9NZX95kFxG8KTgMgMe768YXAC+xtEsG/c32nnb3JfxcS9aYdikXu+bcoJT6c1w3Z7 MlJRE7iGps4nCE1rANI8KLbTk5JydongxX6dMYj7OVe2ekQof36pB5gp3T+bhNuhJqCvltHiNgC mYorLMSXZ2y5NfcC2aUHgoOozI86n+QDh9DZb2DTCxz17daKjGWUvOM/u7gAbooRnu39W80iQQl 2MXxaYLpxYn9GFSTolS8o5ake3HbfTcvCFyHgi6ow0DgLd7MQgpB4BykNPSYLi5596QUy3J01RU I5PGb9fuIOdAxYX8Ehg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-20_04,2026-07-20_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 impostorscore=0 priorityscore=1501 spamscore=0 bulkscore=0 lowpriorityscore=0 clxscore=1015 phishscore=0 malwarescore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200193 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=matheus.bernardino@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: 1784569385600158500 Content-Type: text/plain; charset="utf-8" From: Brian Cain 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. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier Signed-off-by: Matheus Tavares Bernardino --- target/hexagon/hexswi.c | 75 ++++++++++++++++++++++++++++++++++------- 1 file changed, 63 insertions(+), 12 deletions(-) diff --git a/target/hexagon/hexswi.c b/target/hexagon/hexswi.c index 564a11e557a..d93789e39c7 100644 --- a/target/hexagon/hexswi.c +++ b/target/hexagon/hexswi.c @@ -154,12 +154,63 @@ 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 */ +#define HEX_EINVAL 22 +#define HEX_ERRNOS \ + HEX_ERRNO(EPERM, 1) \ + HEX_ERRNO(ENOENT, 2) \ + HEX_ERRNO(EINTR, 4) \ + HEX_ERRNO(EIO, 5) \ + HEX_ERRNO(ENXIO, 6) \ + HEX_ERRNO(EBADF, 9) \ + HEX_ERRNO(EAGAIN, 11) \ + HEX_ERRNO(ENOMEM, 12) \ + HEX_ERRNO(EACCES, 13) \ + HEX_ERRNO(EFAULT, 14) \ + HEX_ERRNO(EBUSY, 16) \ + HEX_ERRNO(EEXIST, 17) \ + HEX_ERRNO(EXDEV, 18) \ + HEX_ERRNO(ENODEV, 19) \ + HEX_ERRNO(ENOTDIR, 20) \ + HEX_ERRNO(EISDIR, 21) \ + HEX_ERRNO(EINVAL, HEX_EINVAL) \ + HEX_ERRNO(ENFILE, 23) \ + HEX_ERRNO(EMFILE, 24) \ + HEX_ERRNO(ENOTTY, 25) \ + HEX_ERRNO(ETXTBSY, 26) \ + HEX_ERRNO(EFBIG, 27) \ + HEX_ERRNO(ENOSPC, 28) \ + HEX_ERRNO(ESPIPE, 29) \ + HEX_ERRNO(EROFS, 30) \ + HEX_ERRNO(EMLINK, 31) \ + HEX_ERRNO(EPIPE, 32) \ + HEX_ERRNO(ERANGE, 34) \ + HEX_ERRNO(ENAMETOOLONG, 36) \ + HEX_ERRNO(ENOSYS, 38) \ + HEX_ERRNO(ELOOP, 40) \ + HEX_ERRNO(EOVERFLOW, 75) + +/* Map host errno to hexagon semihosting errno */ +static void semi_cb(CPUState *cs, uint64_t ret, int err) +{ +#define HEX_ERRNO(NAME, CODE) case NAME: err =3D CODE; break; + switch (err) { + case 0: + break; + HEX_ERRNOS + default: + err =3D HEX_EINVAL; + break; + } + common_semi_cb(cs, ret, 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) @@ -378,7 +429,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 @@ -395,7 +446,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 @@ -414,7 +465,7 @@ static void sim_handle_trap0(CPUHexagonState *env) ret =3D guestfd; } } - common_semi_cb(cs, ret, err); + semi_cb(cs, ret, err); } break; =20 @@ -433,7 +484,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 @@ -503,7 +554,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 @@ -513,7 +564,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 @@ -537,7 +588,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 @@ -565,14 +616,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 @@ -611,7 +662,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", @@ -622,7 +673,7 @@ static void sim_handle_trap0(CPUHexagonState *env) qemu_log_mask(LOG_GUEST_ERROR, "unknown swi request: 0x%" PRIx32 "\n", (uint32_t)what_swi); - common_semi_cb(cs, -1, ENOSYS); + semi_cb(cs, -1, ENOSYS); } } =20 --=20 2.37.2 From nobody Sat Jul 25 10:43:18 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=1784569420; cv=none; d=zohomail.com; s=zohoarc; b=K/Y0E3JWyU9Mb5DCBd+OKfEZKHa4caiZRFFs1qYeNAsqgKUC+o029QW40/addj30N62dOgcwx3J2Wc3SqJZGUjtE21zNkDHvkidN5PVfH6jDXK0UoLug87dM9Dvqg/6Flmr4JCAAyOXERtk7Iza4pNyNCnTYUZkunyW4NEluCGE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784569420; h=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=HRRIAmfrPYRcVqXdfY5buNPRm9g4xMiYI2HH29jTpLA=; b=G7a0pO2Z5DwJYNLmijcWjFHltMhNvXMrPv6s/LlvCotg6+NPVVAcuP9gKmA2zrGJQ0W6HiODzXROZnRwM82IKZSECQVHEVtIMe5WsZO4uZ0CAkgi/U6rmTtv9UKwHxE1OACfZkAktrXdJASBkkyY7gdUauMkQ3W+s7kD1KdKejs= 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 1784569420624868.9498895056093; Mon, 20 Jul 2026 10:43:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wls0j-0000B6-9R; Mon, 20 Jul 2026 13:42:37 -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 1wlrzm-00089H-He for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41:41 -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 1wlrzk-0002zl-5Z for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41:38 -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 66KH6cPb2962635 for ; Mon, 20 Jul 2026 17:41:24 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 4fhh5y2789-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 17:41:24 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-ca7c1e22995so15705917a12.3 for ; Mon, 20 Jul 2026 10:41:24 -0700 (PDT) Received: from hu-mathbern-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3142a1dde81sm66281257eec.21.2026.07.20.10.41.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 10:41:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=HRRIAmfrPYR cVqXdfY5buNPRm9g4xMiYI2HH29jTpLA=; b=SjOxo6N+njiYHcNo7WBhueaXdY5 Qpjn9M1w3/Ppo/C1KhNvPCPWJpKQuTcHawz9obiMuC+gTA7eeumv/xt+0FLYy9j4 iQxg8ggIhaYzYpm6A+sHups7D3Gg5TmOipNnz/ImLt2f/LMM/vZzbiP9pjolqVRV elevoFfY2hTrrS97XiUUSMeewKU9lfm0vLXBWkNvtzo/nc0H5EZ2FwUnEOaUhCQg 5wz2K8zo+51Y4ennzKrKyipv2W7UgK4O1/cQtauRPecc+3sWqoGyQJqn3V3B/YOg snwg2Ni3C0WaKK521Btlids1aAhAwmQbD9zum5I64+B48ZmtKwuLbVfd1MQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784569284; x=1785174084; darn=nongnu.org; h=content-transfer-encoding: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=HRRIAmfrPYRcVqXdfY5buNPRm9g4xMiYI2HH29jTpLA=; b=CrW61kIB4GkquY3Po8kVuzMAAGTqTR9J7amLs8fh9REUiqP2IJ+pv2jyrLuS5L0PiZ oed7Qh9UgP5rKwtP2ltOimpF+tCAkP8Qyxdc3tAu23iJBWTIyb6Mm5XpslSnzBzSgZ3e 3HlbzRL9VPIGcm3N7IRXsfBhNEelM92WLMYpzBT1Y2MYvluPRIBVvIBgZu3haWI/F7VL GZX5M4loQw5XzS/H0wMfWsvLjK/BSXfA3UI7CqUdu6g4xFD6CzKmAjYZ3VFqujEyF5/A V9pSunYEBOGglddt3IZ9UwuilH6Tyfh2WjpQfXP3DH6egCLfbgpug92I27D+EvHVGVjM ibJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784569284; x=1785174084; h=content-transfer-encoding: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=HRRIAmfrPYRcVqXdfY5buNPRm9g4xMiYI2HH29jTpLA=; b=OI3XHFaXChvjkDFW8peEMBS41Q6GydkBSCZx1nTCROL9rGbSUj2+iuP2BiveoLjtiJ OInR8bl0GGTB5zXEnoacROmgROceyvBJZdpBrQBGmIleLT2svlTnFK2FGztQtPprhk8J 6o0vf/C5LyWxHeYoShzawY2Q6HUb6gPfTCarUNDCirOgrCUG+PjRLQCg9wBtnTVj3+ri 8hLohS1ic7iiUNMhmSvC60k6KLsjVI+mVEtPTRj91sDi28o8Jhu4YnVcGxYdQ10ziBUS 5VKKBBfB+V9DE0H0yTu+YItpXKQoNDN5loMnzqwrV0fRtBcJ9GkpDpaqTOawHoprHnrX hKHA== X-Gm-Message-State: AOJu0YyVazIRYPo5rlJ0WrC7wBL9VGG1Fjtr9Q3OEJqxdNPpi4jREH06 T+hbOUNhwiOKvm3EJzc8CDfP1RRgyc3/ONP2tt+JqJ0YovzMyYVfzeB79R6BRm+Jy8HS8NViViI VB/fL2Y+AFdizbClFyyXgd2xMu4zYmGZgp2bl37S7N3kkq5B3kY0Mi8ppGm8/A1Dx9g== X-Gm-Gg: AfdE7ckE81vx6nPIuv6JIaOLn9pf20Kzrn0QoVESUCESjNYXczNV2vXnapun/A4XLX1 gLW4WwzLLguXUEwrU6sbU1D/boLzAqmphUw+7hWxKmZdZ1ppVE+Ciy9BLDr89NhA7AZCq8KRzzw vkE9iktjDffKBSAa2Ue0TFpYvmZd+lrKv1hlcfTAfEq9Z0IpFam5bYHWV94iUjC4lE+EbdPUJhI b/Tj7LcfC7i3HGgvbUtsr4xtz0oktE1V48WYd88k99tF3Gny6UFyl/k2VUMboNOmLsUPf3yiuO0 GGbtacHsJJ+4hHIHiHw5g0Nqw1LHKpOux4NjkdqgEZmZyibmPa4aCJfH13mV6BXByfln83ndoLw ynaw5MIGn+znE0qZpJFcijaqNi7WleV11YEWXZvzxBx3imN3eqQefJwZr+porcMg= X-Received: by 2002:a05:6a21:9d84:b0:3c3:a5e4:9141 with SMTP id adf61e73a8af0-3c3ad66b6c2mr16011414637.18.1784569283809; Mon, 20 Jul 2026 10:41:23 -0700 (PDT) X-Received: by 2002:a05:6a21:9d84:b0:3c3:a5e4:9141 with SMTP id adf61e73a8af0-3c3ad66b6c2mr16011383637.18.1784569283357; Mon, 20 Jul 2026 10:41:23 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, ale@rev.ng, anjo@rev.ng, John Snow , Cleber Rosa Subject: [PATCH v3 12/13] python/machine: support routing semihosting output to the test console Date: Mon, 20 Jul 2026 10:41:08 -0700 Message-Id: <6d1f197c4ac837afab013a4de43b64dc9e3ffbcf.1784568922.git.matheus.bernardino@oss.qualcomm.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfX1OM0OINq+XX5 F4K3pgeJqwY5/Xfi9M6Hepv0BpSTMUhzmjemFmuh4KH65JqW+T/VkbfeyWigCtx3sb5znoEy1T6 1sd9bLzZO99nW9FmNPAV/T9x10iK4Fk= X-Proofpoint-GUID: O15Eb54bpzxgPW2aA1u7xOUOm2Y3phCQ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfXxV36Q54Qi9RB Dmargrjy4LEDwMFz/D00qxjLOOP6Z9TKAI/o6iEQgWPnEdqoDp0b+AS/8R2rrgZakdy8u0SrjWF 3rPxJPyW/5yI06WGbpGe/nOTqz00o49V2IHKvm5b3CcdnzDVbQzfgmAGxWkwrvM1m0NihqgOcaB Fhkbfyow9uZUqHQjlKW2DpVD3zenjaK55G6fqsuXcZFMOLboppSmRuD9HY5BZoR75ZhSNygRrzo Le97+Ax8N9WCvsbDyuLYsVqq2l1Zmo+Fj5aPzktLrIBpY54yXSwP2tUtRDDgFAN87eja4lbZJyh lNkreWxBnqIIBOWAF0Lm8ptvCwzZitUsST6V4rdmstGz5DWX4JXFuvi2e2uS2V8qsFVYjhldaUX Qcs4wc89VY+QUgfN9d5p2P2ddtvsBY9F9EEmU1YeNMJYzvlKGqXlgA2Ss2W/xLPbVu30IvOJgq+ 868qhSiYJgVplDYbdqw== X-Proofpoint-ORIG-GUID: O15Eb54bpzxgPW2aA1u7xOUOm2Y3phCQ X-Authority-Analysis: v=2.4 cv=f/x4wuyM c=1 sm=1 tr=0 ts=6a5e5dc4 cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=3vhqsrBKo-Q0muh1UiUA:9 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-20_04,2026-07-20_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 bulkscore=0 priorityscore=1501 clxscore=1015 adultscore=0 malwarescore=0 impostorscore=0 lowpriorityscore=0 spamscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200193 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=matheus.bernardino@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: 1784569421708158500 Content-Type: text/plain; charset="utf-8" From: Brian Cain The hexagon semihosting systests will wait for output on the semihosting console. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier Signed-off-by: Matheus Tavares Bernardino --- 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.37.2 From nobody Sat Jul 25 10:43:18 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=1784569361; cv=none; d=zohomail.com; s=zohoarc; b=Fe3m5GQJ285MzpP3CAhQTfHUO5uhOBorrnD4jjN11sS0ppXpD6wk9EgBMrHp+XokwTqYr6LAUx9iAXigqmlPvxTJtOWxW9bG0SdEV2wmvuttPA4BzwUTN+g35uhyp+gzlGP1kde9nbW1JlAFvD0/o/FTT50w4zjCjyuo9wLYdU8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784569361; h=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=0w6tx+8j8t4kqbTNNIJcJZtiimEXu2ymCdfEox6WgE0=; b=ELfE8XzbQhNr6SdAYLWNheWcaL3RALH23VNbXGQ6ZdMYGpiUTWdzWKTuGIhKccBQemWHFjwrOzwgSyAfNREISXhAtUgGy6Ww5EWmllmVlZxyHnLEEmBLm9FC6eEorwzox9DG+tFGgXQbMEA1xDcTJJE3n/Z2LnqrW1E0YPL5mH0= 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 1784569361469358.83418336543934; Mon, 20 Jul 2026 10:42:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wls0i-0000Au-Vs; Mon, 20 Jul 2026 13:42:37 -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 1wlrzo-00089P-4L for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41:41 -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 1wlrzm-0002zr-42 for qemu-devel@nongnu.org; Mon, 20 Jul 2026 13:41:39 -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 66KHBqIn137357 for ; Mon, 20 Jul 2026 17:41:25 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 4fhqv5r4ar-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 17:41:25 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-cbb467e56aaso97987a12.1 for ; Mon, 20 Jul 2026 10:41:25 -0700 (PDT) Received: from hu-mathbern-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3142a1dde81sm66281257eec.21.2026.07.20.10.41.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 10:41:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=0w6tx+8j8t4 kqbTNNIJcJZtiimEXu2ymCdfEox6WgE0=; b=D105omONb6d17qo+oIzbwCYiTKl CLelYfIClyEGSG1qM2gTWlb6kT4GFR3b1nNxPgyTXuaMfXnqPgdkDQi2QKd+DnbJ iOOnC9k8d1Mt8EN2PTJhgMmf15NW4lmdv/bRkmuH8pw6VFbGRheHoumNTSWIpnzz sVIPVPJLSNw6YFAjPZnJxt8ouHfVK5mvO5pD6gCxn7SU+2X4W+Ya0w3AvaEYReWq Q80EHke1B7uRw14V9E3VHO+W+nfXojhAxGQ/bGDRGSQT5mTD1QsTAWzUVjpbK2Bi ZuMm1Ze/nlbNKjqjbut+lwwTIEqt3USheDqDyWlLzoavmdmgPvbeJadR7mA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784569285; x=1785174085; darn=nongnu.org; h=content-transfer-encoding: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=0w6tx+8j8t4kqbTNNIJcJZtiimEXu2ymCdfEox6WgE0=; b=RiP/N/Dmhwyr37OSTnrShtQ2tWtl9Tt9/GRV63zAynD5f5Zisw4H9OvL8MLKPQk6nd JdD10vbhcposL6m9U85daF5jKITHqBW6x9vP2kqvWf40WrscTSwHFm01kWTNUIo4nVD4 yhbamqXo4tviuUqeMRlM6R78N+LC6k8r/90qDjV6L132X4x+GaUOkm8AUXolgC9Y5CqM yvbQpmVdFJVMqM7+W2jCWflWgA+PBMXZWdDsdh4F4FTat+aviZPifL9p0npAQBxhpbMw awzQ/mWiNwcZM5PPFYKY4ubx9QOnOZRoo/guISCnRPrpFrGpNtTnrAEpDnV1hsQMtIEz L0Jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784569285; x=1785174085; h=content-transfer-encoding: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=0w6tx+8j8t4kqbTNNIJcJZtiimEXu2ymCdfEox6WgE0=; b=D2JQjYwQXh7Qw2dzw7dk6RQ/QAt+i2zgIW5ig0myeOMvIcsM4mWHZLixIS7enplheO /8/TGcG8OwSt8qJLjT1t0N9QX9+hFJJuG7vedejtMs1G83L+IPEhLy8eSF2uLblAGP38 vCrjoO2RdgSfaCXjFU/yA9rwhpC8INas4J2YpGzrs48ihZV8xMGWccFWiOPe4SfyEOBQ KP8zX87kzVv2fRHqUZzarioCn28kaPcaQcnnHsONlST3WkDrMwLNMe9YO8/be4DPpW9Z S/A30Hq6gSeImkmQKFFQDKgo7Lc35i13WAyPmwjwwSkoByqBBeMZOL/Sw6cG+HPeSIsG Cy4w== X-Gm-Message-State: AOJu0YysR1zeOKsl4nTMxcwKFv+a/WKHyOZYMsj8EqHGHNRHQoYdu9xY 25B8mdOxG6vSj8zHpEWTIMd6OROQvenW/LaMdr074kKnqrDGJ+smxBSDQHvZUv7Fajo198R64dX GYfQozhaMz4rPji/ojwBI2j1rqBYPvuw4WhiKM+n5UEquzNidUX67aYF5bnqnZLTveQ== X-Gm-Gg: AfdE7clcuBX1VW/mQdiiUxvLi6P+2iWC1Iwaz7jDHvZhFf1bACNTiN7POyOU/As7Q2y na7NSA2xsCPdKiAMyFT1UtAq0J/x9R6DhgqBALYGw2JqtIWZxi6xki8qYA7HFwXXUXuQfADml/I qMK8GvSkhmqHJkz0NCAiMxZIJc/tEvtp8lmKMRKmtJCm8PsWKrekKyi4FENFrNzcYWb+GKVxidg czXc2sRGtng/Nx4U2urk98l421p1+oXwUP8GfmR7LeaQg7JpwmcP86nfQw9QW1uug+ewditN5HF RoOieyj+wBuiYhQU6qaTnqu+jgUBAboaeKZSBpasdBqcba9Cb3mLopHPNd2qep5kvIfqC88cM35 ztztd3PMaJc11fHcUfUx6xUj/N11zdpGSpwQCqHVyemUsc8LlG88441WmpLzQMLY= X-Received: by 2002:a05:6a21:1519:b0:3bf:6c08:4ebb with SMTP id adf61e73a8af0-3c3ad8b2a79mr16926439637.48.1784569284693; Mon, 20 Jul 2026 10:41:24 -0700 (PDT) X-Received: by 2002:a05:6a21:1519:b0:3bf:6c08:4ebb with SMTP id adf61e73a8af0-3c3ad8b2a79mr16926407637.48.1784569284220; Mon, 20 Jul 2026 10:41:24 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, ale@rev.ng, anjo@rev.ng Subject: [PATCH v3 13/13] tests/functional: Add hexagon semihosting systests Date: Mon, 20 Jul 2026 10:41:09 -0700 Message-Id: <4299b53256dfab6d43bc9c591797b50710b8af6e.1784568922.git.matheus.bernardino@oss.qualcomm.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: 4IdllDx6XKwbhLl5cnUtD6l6-dtSkYk2 X-Proofpoint-ORIG-GUID: 4IdllDx6XKwbhLl5cnUtD6l6-dtSkYk2 X-Authority-Analysis: v=2.4 cv=e+U2j6p/ c=1 sm=1 tr=0 ts=6a5e5dc5 cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=5vFef2XoAAAA:20 a=EUspDBNiAAAA:8 a=CTwKznjAqPD_lkGzSfAA:9 a=bFCP_H2QrGi7Okbo017w:22 a=bA3UWDv6hWIuX7UZL3qL:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfX+bNKkUZml6NK mP3Aick+TViB+F3OnEDRJbYFNscUqG2D3o2sLuOLcZkYC0h1lHuNVlPFTy2YWlWG0xAggof3ihT GI2HR052F+Uh65Ha2klWirBbdTPxjeU= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDE5MyBTYWx0ZWRfX8xYwfWM3Ox9K BULcJM4Tf/OC5JELLqq8s9KjPAaDXY8hf/xydhh0Tx7x/Mr8YwTC5nF2okMsXEMMoM/dUHfq51X MAIzFOMW/0PAPmI9Npy2mWFtXBSG54sejo1wGoLtFDh1h1/PyvNnUBCg1UFBCVwrJhAUPjw8+7n SY2PiGobFNKc7aRDEqJdVefjDABg4RtV8HDc1tZ2zWt2ztvx/wNh9RZtrpQ6YqdjN+QefR6t3Qh MA6hY7dVKqUfs0NVVZLrhlhpQKBEXisRNxaHfP7lFxlQf1PDqnFxw7L4CqEfYQV5ZzeyxOempck gSDOljUyVAxToNVZte7iZRpVKgdETTP1yZlGjd1vxFM0Uc4oqoh2MpIubJurCY/TT+z28wVvDc2 4fNHn/EGwLAwE7mLTRQhtM8wbjFm6V6VpXVGxaZHpbZNlIwoRetksndQvFRy4/SwyG5Xx7atA/r LRy4Vde7YGBW/dWHWcQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-20_04,2026-07-20_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 bulkscore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 impostorscore=0 phishscore=0 clxscore=1015 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200193 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=matheus.bernardino@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: 1784569363551158500 Content-Type: text/plain; charset="utf-8" From: Brian Cain Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier Signed-off-by: Matheus Tavares Bernardino --- tests/functional/hexagon/meson.build | 5 + tests/functional/hexagon/test_systests.py | 110 ++++++++++++++++++++++ 2 files changed, 115 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..8977aece43d --- /dev/null +++ b/tests/functional/hexagon/test_systests.py @@ -0,0 +1,110 @@ +#!/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): + """Return the full path to binary *name* inside bin dir.""" + 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= "): + """Launch *binary_name* and assert it exits with code 0. + + :param binary_name: name of the binary inside bin dir. + :param extra_args: optional pairs of (flag, value) strings passed + to set_vm_arg(), e.g. ('-append', 'myarg'). + :param machine: QEMU machine type (default "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"): + """Launch *binary_name* and wait for *pattern* on the semihosting = console. + + :param binary_name: name of the binary inside bin dir. + :param pattern: string pattern to wait for via wait_for_console_pa= ttern. + :param extra_args: optional pairs of (flag, value) strings passed + to set_vm_arg(), e.g. ('-append', 'myarg'). + :param machine: QEMU machine type (default "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.37.2