From nobody Sat Jul 25 20:48:39 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=1783973291; cv=none; d=zohomail.com; s=zohoarc; b=BzO7eUzFl37ctMwumFsNHI/mZ0sour4PWhQSugVHphADoLXBiAe2t1i36TzFL/qtT/+YwA+1BQbsdpIgCMesJLiessWTMyoyWcYLs/1mbv6KoR8J+o6kz216DwMXUAZfnbwbLbwXM0ZPMrIDkomCUTFAMlSADV1+E2iZHF781HQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783973291; 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=yyvOufgw5vlYJMYqVC2VCpbtXOUSPRcyAI5xWwROQpw=; b=lO/WUYy76pwlH83INqYL/+JJWpbulbf5XQ+fzp4qlNSxPXIm/RQxMwjTyGzwhujcM/r8xauiIFoyNTeOi21PqPSRqXNdhcstCISOo5+jcT4SKPXX21TFcrA0Z6rT/wFb/FZIvAinYtV/XRzGBCeFthVBClz8zraemDbeiHP+fXo= 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 1783973291626367.2277195368531; Mon, 13 Jul 2026 13:08:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjMw9-0005fL-Tv; Mon, 13 Jul 2026 16:07:33 -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 1wjMw8-0005ey-Aw for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:32 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjMw6-0006PB-H9 for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:32 -0400 Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66DJ9PCE2256696 for ; Mon, 13 Jul 2026 20:07:29 GMT Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fcwk9tdw7-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 13 Jul 2026 20:07:29 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-38dc085b0a7so4609013a91.2 for ; Mon, 13 Jul 2026 13:07:29 -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-313cb804197sm24106543eec.13.2026.07.13.13.07.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 13:07:27 -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=yyvOufgw5vl YJMYqVC2VCpbtXOUSPRcyAI5xWwROQpw=; b=VK/P0F69Gnc2LiENh0UQv99N7W1 cccG/Hp/NQvG32qWW0/K0S5J1sTZZ5hnSeESGlxn1LwtFRasD6/DNsONZJbHGtI7 kAab4zh3pe/fw98SEavUj8lgmrjdAKX1YPnP3cYprVM+OvopZW0VzBgphGzcJFeY qi8118N0H1xmEXcHw7JhlVqHB+hg74sjQH7tW+yENLaEypZyE735fH7YGGnMgCKW 61tX6L65hYjjkEWSfGXMhTBPLvkP6eVxFcNVkxPr3IowRN5YvULgaGDE9vCfOiHx 0aGeUDJizoNwQkBvO4D/20ZdCguT6T1O0VEDP80dtFflO0ep3qWBdn29s3Q== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783973248; x=1784578048; 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=yyvOufgw5vlYJMYqVC2VCpbtXOUSPRcyAI5xWwROQpw=; b=HrEal+HtTN/q8GV8r/AbyoFJ7krK5rAStymnHvOLZ1enXnCem6qA7KipY22yTmfPxr Sq8vR/6OyyzSi+qJ0g04/XsQAh+ItG+spw8kiohiyoV0rzwYyAfYr+pm2JRkR2Y7Y/eF RxpWOTfQAtnHo+Q39OKcVJma3BlSWt+zvoSFbSwAW7cP583RAwXt80T63wsIJtW9FdQ1 OfdZq/qj3mf8krZgR9VsmCTjqOQuXWHT3ur07faXAXngNF5LYlUlywfThVrUdqUxxW+t Fi7M97xFfMiXuhqqY4x8+7ywEPYBKS2MyjdCPfPiSuESONxH+IG6LZUDJdGq2Zul9qxM p6gQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783973248; x=1784578048; 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=yyvOufgw5vlYJMYqVC2VCpbtXOUSPRcyAI5xWwROQpw=; b=gOoOOt8UJU2weCHWSqwBnYl2WnU+pJ/wjFudgwQbRGEYeW92k/EVvqAqpLbCxCk/ri q4H2Ek5OIXdkCLpQKuv6BBLLyqTWNYVjzgL79F82p0aJhuum/0TKH/5dgKnPskczUO3l IRWPrVaWHPUXyM0GTw3jQI7vaxVdaZ7Xle/kBO6aWvtd7cLCqKhpgJckf5F4U0x4Shjo Z0CTGFZbgySZAWrIcQtwqhI2wsb1VTIpEnSxGfObdFxgIiAcUfuwsb6NcT1yeQz38Mr+ FZhfBr5uJa7aMFhjqnK8dnY1nQzy6qqv5vMMAlB+IDduaZNFv51yhdzpeeYvYF5CaXXe 6Svw== X-Gm-Message-State: AOJu0YxbeDk9vRCDoPt2VkrsbaMHcAjpIsBkF93XmBlG1tGmVfaW4g+M DBEVzNzdiJJg3cO7DFT8YiYuXpjqT5hfF+y2MCFq/tZBE/xnJfHtfWw7uqbkgDpj8LuzRUzcAj1 8ZAx93mQznOYbUlB1Tai+u5v5X6WSVHa9ReIHqIwfDSdX4SbKCvDQFPNeG2wx6lnGx7Eh X-Gm-Gg: AfdE7cmiwnuRItwTsFk8V6gRu+bLMXkQ/gPGgWBDdGNyIh3fEasgKC2GDICG36W/9Ct dgo12X5BY+DwCpQuCU0JfQxiTt/Z7EWyV5F2A5Bf5zMjUbYcmn2VrlVYR+F1srgrdCyh+Xd99XN TMthbkOmTD99vjGN/fMf1pp0mvmkW+8f6CJkGKlgJtsSGwSI6Nn65XGgC3eNUZAFknaHlsDrDRj Iezc6JbSWgbt1zsFeqQxceOSdeUHBhUoN6hOZkP0o/MJPD90Kfap9L2LTw0xUIYH2Ks0I388+jE /0WdDHUSRGPYcqu5dIoBboVS/dKxv73m+WzCDWn1fOkcviNskp/nizTmtnbAjiBIiscbGq8Scfr IWAPT/YCqLhuI7akNEhze/5bg/IwqGVApeXAb95yP3VxmJh2yEdqD0otZmf+CcVlJI1cqRCHyJw == X-Received: by 2002:a17:90b:5111:b0:36d:66d4:270e with SMTP id 98e67ed59e1d1-38dc75d17admr9456266a91.5.1783973248248; Mon, 13 Jul 2026 13:07:28 -0700 (PDT) X-Received: by 2002:a17:90b:5111:b0:36d:66d4:270e with SMTP id 98e67ed59e1d1-38dc75d17admr9456244a91.5.1783973247724; Mon, 13 Jul 2026 13:07:27 -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 01/14] target/hexagon: fix get_phys_addr_debug with in-page offset Date: Mon, 13 Jul 2026 13:07:09 -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: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfX8HzAT/tJkJFM uF9a5rsVe3EesFa1tR9bE407zQinWns1FoZholapcHyWJNr/vaX1r3snWX40ycfc4GC6WZTOKhj uzRcl2YosKMnlyz0khxqSZjNcVW3i7wMM7fdRubN1rqeNsiFJ3mrPOjJzixbJbPMck4My0CptxZ aleMkbdpz7MWpQKYAVIDGekWR4Fa/Hi4SHLlrWbRqQT7i37JbO4IkPJGqxt5D7OhwgKlhFFuD6D R4vFuB+bcujw2b9db6agv266BPdL1EdBPq1hfC7AAjHxseeEOAu+qByCA+U4AsRWDnLilSVQ6kq z6I6+7Bp0IKj9T+SpBi4vrfFZBq276Pe/Zk4wSrb0WVW37RBCoRtLxe6gycyFLlpRy1G5MNg95H 5AOPFjU+rqsMC4jHJxhH0wpE9FLUyxNrO3J0x2wHzBPu7rs0rhsLTv+a3NihmTqY4L2DbrOXGxN cCF1GhpfyXVsR+EUSOQ== X-Proofpoint-ORIG-GUID: 4NkPJM1X4QNMkeN_gctGpGEnK7x-XjmH X-Authority-Analysis: v=2.4 cv=UMHt2ify c=1 sm=1 tr=0 ts=6a554581 cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=ERpe_kbT2-JOHJ70sIsA:9 a=mQ_c8vxmzFEMiUWkPHU9:22 X-Proofpoint-GUID: 4NkPJM1X4QNMkeN_gctGpGEnK7x-XjmH X-Proofpoint-Spam-Info: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfX8ZYOknA3PjYs kBlV8JOOLzIXSk8pGfjKtgCJNKJe1ppKiRKYlBcf56U2Gko2ZJ8M+1C3/CdgcuTQbgr9jte9snd Jf3t/RzAQGmSHpFWPhhzpmik9XSPahU= 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-13_05,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 impostorscore=0 spamscore=0 clxscore=1015 adultscore=0 malwarescore=0 lowpriorityscore=0 phishscore=0 suspectscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607130208 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.180.131; envelope-from=matheus.bernardino@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1783973292603158500 Content-Type: text/plain; charset="utf-8" As documented: * @get_phys_addr_debug: Callback for obtaining a physical address. * This must be able to handle a non-page-aligned address, and will * return the physical address corresponding to that address. When MMU is enabled, hexagon_cpu_get_phys_addr_debug() returns the physical address page-aligned, not corrected to reflect the exact byte the virtual addr maps to within the page. Let's fix that. The MMU-disabled case is already correct. This would break semihosting argument reads when it is added for Hexagon. Signed-off-by: Matheus Tavares Bernardino Reviewed-by: Brian Cain Reviewed-by: Pierrick Bouvier --- target/hexagon/cpu.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index 42d93e5da47..028cfe9edde 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -569,7 +569,9 @@ static hwaddr hexagon_cpu_get_phys_addr_debug(CPUState = *cs, vaddr addr) =20 if (get_physical_address(env, &phys_addr, &prot, &page_size, &excp, addr, 0, mmu_idx)) { + vaddr page_offset =3D addr & (TARGET_PAGE_SIZE - 1); find_qemu_subpage(&addr, &phys_addr, page_size); + phys_addr +=3D hexagon_cpu_mmu_enabled(env) ? page_offset : 0; return phys_addr; } =20 --=20 2.37.2 From nobody Sat Jul 25 20:48:39 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=1783973291; cv=none; d=zohomail.com; s=zohoarc; b=ea60kUaeDhk80m4M51zHgLw+ZaD0q/Le9/UMjwKfX7L2DYjHg8zeztWB6G+BkmRUh/XWh8IulbqNiEwcCKVdPkYTcYEFJ9d6oZ6WQtKjYBrB+3nW84rgJ+F9AVP7GUmOb8G1uKvzLUPRKFsizUX0I5BtbFMtciUIWnfCcGM/vPE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783973291; 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=La6u9P9hGx2XMRGIoiDTJ82+KI56tChJY1nT1bbhW/w=; b=K8a/vVySYdcqo9AhpHcWnPYyDZFHtjwPW8jvltgi997Hzixhqcll+GsxaFwSnXkFp5q8H75NU2587WaLnTxplsZRuxnB7ZucpHKWNaNQImKEs5cD0l6tktWOwY+T0pJ3JsifIFfyZAF8cUiQ+X6J6+0mKq4+9i0BeMnExJG6JDg= 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 1783973291725223.8680871660913; Mon, 13 Jul 2026 13:08:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjMwB-0005g1-GO; Mon, 13 Jul 2026 16:07:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjMw9-0005fE-M3 for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:33 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjMw7-0006PK-F2 for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:33 -0400 Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66DJ9NRS2256612 for ; Mon, 13 Jul 2026 20:07:30 GMT Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fcwk9tdwa-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 13 Jul 2026 20:07:30 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-38dad28e86eso542928a91.0 for ; Mon, 13 Jul 2026 13:07:30 -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-313cb804197sm24106543eec.13.2026.07.13.13.07.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 13:07:28 -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=La6u9P9hGx2 XMRGIoiDTJ82+KI56tChJY1nT1bbhW/w=; b=C7DEw4Y372/Up5fFb3+dQDXEtgd 0OtjesLMyAVpAyMFCYwvUEygzEhcVPIakgWugAvwa9TTObzW0bFipSbgSo/pNAvC +dXnJ5u6VZY+MLe6zDYSt5btDyOxZNe7FMd3BolMZtnrfcT/pIbF3f4rO25Mxmb7 Y1iaIwwFRU/QgIQLwNh1YyfzP4BO2EALGS/FSWJjbJChqkhFU1DHbTg5xhT46hA9 8dXcGQK8WUb4YOhgbY1lnmqg3MGDwk1EiAQLVMH997qgux+PdQ4nT84bZXuU8DhL N/ldikMEkJDYNThtFfeotpdp5QmP8r5kICOn6jiYVNZKcsYSuThj1AS81gA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783973249; x=1784578049; 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=La6u9P9hGx2XMRGIoiDTJ82+KI56tChJY1nT1bbhW/w=; b=YFlW3y3+3SWizWFEL2GmfBg59SS/TrZOyOdQ8bXJfqvxhDBZjGKBzXCiBkVBQ9nZkQ qOgSpFyS725UQblhbRC56Zm71NWpGlTfWme7tTpfKUj+pEyvjc+zhkpVt7y0CS9s0S3E isgMjppxUx7xiRfG+iw3mQv/QArHIrMngdKMooAFT0dJ+NYdZ8Yfvd9zKblXZgSaqp9b MSr3l1EuVpyaa6XLPVQ/YsRcBBUcOGzBoLJXyoEjKq7stD4O4WtblTJpy3DzN9Neoe7H 5SGad6BnVQKcnR4mPzqjoJgH9LfTKXaOtkKhkdqwxkARP0mV9yk4oy4git6SjnHStwJ+ TFwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783973249; x=1784578049; 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=La6u9P9hGx2XMRGIoiDTJ82+KI56tChJY1nT1bbhW/w=; b=dZUJWk8yFY4f7fniw3Y3CumE9zadhQO1pvxEZfaUCtHj3ltd4kr2ZEJvBuAf7UGGf+ CQBoL//JbJjQQA/N1AFQARse8OmHLCk5IkHfc2WBqJGUzotsZoKOhLL/+CEudPBtcFMg 3drlkjrhfyq8w45nhKgVyu+kQifHfB6qUKQlMfk7kT9eh8uLY8xa5jTEVS6+ofysXsbQ bBdOWvDhIEtH+d0QpzbD2Ub0HX79EBM5uUWnlYItHMeptxJIHDUQymiPkx7czz8sM38U JnVS8tyDbnOSmnSa9R4C34b9v6omQKTXimNTQIYJMrCZ3g4CAfsPZEjqMUQfGHB2GvyU M94A== X-Gm-Message-State: AOJu0YzAu3HPItIn4FAgIclm1ePN3TlD5IqmHCwnp5UWF7LTO2+4Eb/n FA6A1ExXvH/Yi+Yq1c8hk8Bj+9lN6mCjeUYevgSI3oYmMmW5c7k1YsVb+uch/l17gxBrqKZrAVl gvE89EhpCRDGc3XAXvLsrgDacHlyeUOrEU/yjI5IFE9AU/88uQ/P9DPjL/4v2BrmsXfFj X-Gm-Gg: AfdE7cn3vEsyLVfYfHSqG5aqNxe2enzeyavEckmdgZSAsc7d2e0TtaDOAyt6+QipwMf Nj6LuFWIJETxM7vlNTrk8+RutuyjYgM1HFPknwFV2Qn9xrHZnCYyFx81Dv/CXJ+HT2EA40cpbU5 FRTlZxFrl5f6kOpqZ/o/aHjyk8IOhE0VYbzdkUPKlug3HGmBW0p9oZrpQ01RTAzUDxoH6DaLNfH uaJZqzF1n/qgaaRbO0h/oE6xEA5g2CbAzKZ9W4AJgePm/dBYmXZLmc9Ng4ysNbjhU9TBfiWnPRU jIzFI+NMqtktiybF8YPIoyKSiXx0ETnr8M6eSXwowqF6JOJsyZEtWJCeWl+FV4HIH9+YEqD/s3H VSkbag6Ijq7RZKDXd6Xc3mCELWfAqGeQzxHmk/tqyJ0Yo/HBMCCQgJraNBEPXrN73no9N5JRuow == X-Received: by 2002:a17:90b:390f:b0:381:939e:adf0 with SMTP id 98e67ed59e1d1-38dc7752a8dmr9025336a91.31.1783973249351; Mon, 13 Jul 2026 13:07:29 -0700 (PDT) X-Received: by 2002:a17:90b:390f:b0:381:939e:adf0 with SMTP id 98e67ed59e1d1-38dc7752a8dmr9025314a91.31.1783973248925; Mon, 13 Jul 2026 13:07:28 -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 02/14] target/hexagon: fix PC advancement for non-COF TB terminators Date: Mon, 13 Jul 2026 13:07:10 -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: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfX1T1tsUZbWPhy 5T4HTHsE24sIyjYIA1RngjrlOklvB0nGiXOQYLDNtRirPiYjYqXn0VsBH3Qrs3+aEcJePVD4Bmf z2Modl1SCtUZRSziL9e758YO1oZxyjJXvpbJOiOilfNs/KS8mwuhtyuIK+GWC06OfC22F+1fxPs hQtDHBJmRfFwxbwxrpDcIG8B8eM8QfTYamLpsum9PvInGde1q6CvhSM2dacZ7MbPpOrBcMxfsge YSGNlmRNOqWXocaSzaPHhDypn0MPZXKYeA3ac9ZtYxwQH4vgSKF70bG+Mw4EIqrio0Wib1Pf1bX BiVspc3Dcg7isGWRXIrS9xBWJHwBsbVBoIRODUTp4kR5xhqiih1rDtCfAqfbAa310/Cp2pT6nEw Nlm65If4GULhqIIrQAmub6Z3WRf/RSbElMtfrb7zGE0rh4y3tQgSmtgFkr7aTDZyyQu31ivMEup 3imTixQTjhbnmBVAIVg== X-Proofpoint-ORIG-GUID: kr6NTeA2Q9DITxJOBlhuOldMZe1D10ke X-Authority-Analysis: v=2.4 cv=UMHt2ify c=1 sm=1 tr=0 ts=6a554582 cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=4a9di1UdVY1t8Q3xuf0A:9 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-GUID: kr6NTeA2Q9DITxJOBlhuOldMZe1D10ke X-Proofpoint-Spam-Info: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfXxyNotir1aRCe HiTgz3cjp7x5EF2Zae19nNCzDdDfpICf3Tq5eAM8iqJ8YZxL1aPyXJBYWyvEQeJMJO7l8rU3V+b kGB4CHi2ALpUnAb5zWOr9QTi0gl5nWE= 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-13_05,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 impostorscore=0 spamscore=0 clxscore=1015 adultscore=0 malwarescore=0 lowpriorityscore=0 phishscore=0 suspectscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607130208 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.180.131; envelope-from=matheus.bernardino@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1783973292619158500 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. Signed-off-by: Matheus Tavares Bernardino Reviewed-by: Pierrick Bouvier --- 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 77235916f4b..06e76a6ba34 100644 --- a/target/hexagon/translate.c +++ b/target/hexagon/translate.c @@ -210,6 +210,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(); } @@ -282,6 +288,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++) { @@ -291,6 +298,7 @@ static bool check_for_opcode(Packet *pkt, uint16_t opco= de) } return false; } +#endif =20 static bool need_slot_cancelled(Packet *pkt) { @@ -562,10 +570,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 20:48:39 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=1783973397; cv=none; d=zohomail.com; s=zohoarc; b=aNn+j5K+AUxZJxJpIv4gor6XdCCmt0+6a29wLW1cohuU4UvO5yKwesvAP7EL4HFZhqP5e9O7ZCJfCSTDv4LrRrFTVegjI9tCInCxXVWEFkgc8ykBq2Y//bFpuiFBTNZomv9qBBjUpz8DuJ9/D3w6CMS2rhBzjoN2GrExJDMvKJw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783973397; 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=8xGofNjm/bnpWgg3lP/oqijw7mdLM5SH/24RznCSq3I=; b=aArpCI07n05tEARUCTd1SkjbiL0vcoUJx7BgjFkVjvboClmzAx7Nx7sNH/XnZqXkayoDOdjPH7i7137gyKH28zFKw1bp6zt+5RT5mH/gLdR4E/FonaLv7v4oZhMyr+Xgzp7XFgwEsvNCI0itIdEyP6SVo9Z2VcbSUMz/PO6q/4E= 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 17839733970894.492772233768278; Mon, 13 Jul 2026 13:09:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjMwC-0005gW-Ld; Mon, 13 Jul 2026 16:07: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 1wjMwA-0005fi-Kf for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:34 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjMw8-0006Pa-Pm for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:34 -0400 Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66DJ9Y1U2356001 for ; Mon, 13 Jul 2026 20:07:32 GMT Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fcwu4tcqv-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 13 Jul 2026 20:07:31 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-38dbf293831so490646a91.3 for ; Mon, 13 Jul 2026 13:07:31 -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-313cb804197sm24106543eec.13.2026.07.13.13.07.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 13:07:29 -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=8xGofNjm/bn pWgg3lP/oqijw7mdLM5SH/24RznCSq3I=; b=UZa8nEJlTg1zhxb3W5byiu0tt/K KayTAB4eN8TlYlD+vp+4i6/TL/N2E2xcSrnHoS90zsZV2eNXXvSaBbqg6cu5dMTb 3soN+ZsneD2EpwflZsSLzQ4koHOmQDkuzqMLImgj6usY+/8U9XPxBeNSeK4dSy5c gu8xDT+tlORnbrS4SY5cwfSpcpw7xnYwWt3TB22CLnADzyF2KEDWzcAno0mAuNdX vVLumPaCsE74LXvz8+EMawIx6ntk2TTcG/xB15qsiq26pCtFDwXTzX4zbH8sLJP3 eo654wKJg/4nuaqWwIUQYLkdy/wTP2XzK50KDJGYarO9xwlsSvA6v/a5llg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783973251; x=1784578051; 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=8xGofNjm/bnpWgg3lP/oqijw7mdLM5SH/24RznCSq3I=; b=WF3Pvo/8AmTfNDhBSYxGOzGPdyTvQfOm/fDJtiM40ceJZC80tCgDatemvgVYWrsv8h CGauXw2xT8mKAazSF9+bxiiOJBGvUEItWkYTRLLgdlF9SmVrMf3+PVqrS1Ej0CUPVlB7 7Bl947Z7ykOd8H36bp2D1yLZxAnkw79QxRieOjvqPJf0oCSZghH8B4yiKqXXRYbyFpTu 6GsPSkBw+e8w0AWp9lbLIbnc00otD8w1yX/d9tlFvLtANIzkWbEJpSjVeDyLYgFY4r33 ERwrzq+yee0ZBRI2vtJPntnA44oG1aoTT7qke75PbNXWf24TXvNQ+JqbfacvgA/7dfog 351g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783973251; x=1784578051; 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=8xGofNjm/bnpWgg3lP/oqijw7mdLM5SH/24RznCSq3I=; b=A9sJURmpCZUP91ZJencARYRuV4bIg4a4YLjyF9uPshH3GmiMNs4hfupM/cvhY9Lvs7 cU7mlZ3pRl7a9A0IEmxRQ+myDblEMMXXxOIFCaL59hDm6HSGXElufSW4/CZGXqZRGwaI OxejOXaXJgi1PiVehGYZvr89H/T+CqHIAobMet/SVGbWTOFvIi82tbsene5nZ3KAa+qL e9SH2l5WTWH/SmUcwAjEdPDlPR89quuEE2Nwu4TjJ/SHVZSqvb39MaGIBtLZLjiiorSY ps+/JgH+MNutPRAKk/ugZFJ2i1l/5rk0pWuCN8FhwaQNHaXwcCKhy3sl7bxDFn1b5sOD VYMg== X-Gm-Message-State: AOJu0YyTJ1mYi3oo+dGfiTYCEc3RmivxXd7ee2R0tvOugc9nU+7a+DlO ee3ATTMl8WVfUk7GPpxmxbB6kHjVn2Q0frIhBMPPXhWE44piIsBnaRqZzZdkt7L48nAI5fwDSna kFtsCHKO1mYBygXI3Zlhs0LblbjqFPScMygL5D+FoQEVJ93kRREVs5hH6chh0xKwZSHVt X-Gm-Gg: AfdE7cnwlIZOc7byUDJZ2yJD8qBgtN4YD9AnbH4hLfvOYz82fEwAhkQiJpuvaMqjW5S LtrLVTbmbpmy6AUJqrY6FG4xNiTF/siH02q0Vo0AjkD3U8tdzoCIN1MAPrCyHDTEoCQ1V0Fkjli PHUaQYcamshWES41ryfzSpqgJ/GrV2JaXRndZ1QpQKSNJ7kIkQe5F6qMKZxQGCjkpYtZnFo3ptY weCVJncStSJKyOwCrFu9LcT+EwIZvgRm616C5nj4U7ayj4HhkiQIGZdJxIsgCsV07v2V77Q/r2+ k+cM/l2Axy8FNfTgm89MxGHpCIwPf4jYB+RcbXdcpVz5GYIDThfq8AXAYNF0YIsHycIc9vncVXG CtzvJ2Hi/yzYEwkNbekjvk1SblG8fWPryxHmu7Qsruil+YGV1u/1AvrDuHuXtBJ8TR00SesDwZg == X-Received: by 2002:a05:6300:2290:b0:3c0:9c1b:d0c1 with SMTP id adf61e73a8af0-3c110a535a4mr10458314637.76.1783973250771; Mon, 13 Jul 2026 13:07:30 -0700 (PDT) X-Received: by 2002:a05:6300:2290:b0:3c0:9c1b:d0c1 with SMTP id adf61e73a8af0-3c110a535a4mr10458290637.76.1783973250313; Mon, 13 Jul 2026 13:07:30 -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, Matheus Tavares Bernardino Subject: [PATCH 03/14] target/hexagon: add aux functions for guest mem load/store Date: Mon, 13 Jul 2026 13:07:11 -0700 Message-Id: <9cdc7c7f27a70257276119e485a55674bf5f2551.1783973054.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-Authority-Analysis: v=2.4 cv=FMErAeos c=1 sm=1 tr=0 ts=6a554583 cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=f3xLiZNeclign1bWSxgA:9 a=mQ_c8vxmzFEMiUWkPHU9:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfXy3bkwKi6ZyAB e4yCdWrv0Uf5Aj9RYNUBjMqeHxHCynfMebagSWfhYFzibckRehXnD9W+jvC48iQq2mtbjIE7hyO k2OtAtZWeu36ZtOHq+8jWI//pBTJxxA= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfX+/5p539FMO9t uxxQVAFginPRjcXX59oi5lb6MwUcdUuk6ZQ/syoRT+m1YK+LZQHjYO1vrYZRk1KDOWRXmtp1kxJ QRVbUPvtNoApvSH5+cjLC8nsdiaJVNtCexz8S1BfgxhrjU8xwkvz3qOkzfuf1+GMQWb+pXBSqxk 2n3GfExSp7PDrmoHedief2OFYdKTv07qoZ9c/BEmsn0y+KR29EQ6cBmGJcf+I0lWW9HVMj+y1OE 3lBW97TxVYbtaWgdhefQ/Sqf0f+h5/hRx9WinxDu4NEI4OCcloKnXLFHDx2eDUhFrX816W7x1L5 +YFQEhKr/HyC2DcBpN7QwKOFrneLtWGdNeNV1T6J/jY3Tj+N2HMPBeuefhI7AzL+czMHoz8Iyuf i4MTQjnHiWpwMNSElsfJbwlXfpokngohqtSwXVBvy0o2Al4EpRiIQCVaFtGtoZ2fPdMkPREekjG YbA+js6+fEjby1bKzjw== X-Proofpoint-ORIG-GUID: t3oAN8iYSdNy15a8PqK69p4sppclorKy X-Proofpoint-GUID: t3oAN8iYSdNy15a8PqK69p4sppclorKy 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-13_05,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 adultscore=0 bulkscore=0 malwarescore=0 impostorscore=0 suspectscore=0 priorityscore=1501 phishscore=0 spamscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607130208 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.180.131; envelope-from=matheus.bernardino@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1783973398916158501 Content-Type: text/plain; charset="utf-8" From: Matheus Tavares Bernardino Will be used for semihosting. Signed-off-by: Matheus Tavares Bernardino Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier --- 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..f6a31ecbab0 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_touch_memory(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..1ab2564e3dc 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_touch_memory(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 20:48:39 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=1783973291; cv=none; d=zohomail.com; s=zohoarc; b=Ml+6I09w7SV/R7LRdnV2dQ0qGBfb12+SxDQzKn8H5z9KQh8zgp1qfAo/3PfRyUNsF0nf06pNsitbastyYtAAKoTbMcEXMR1YRsGELUJcz9kkf2/p/z5fDXiMwmS//2EYU2SOGENPl3hGdxg+x671uFraBJ5zsAeUMDfpBil7Nj4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783973291; 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=SGMBdLRODLT/TzLWbmVvB4D6KzD8CyV9Ai+U3sjvkRE=; b=COe8CbSO7BbmNROucW41po7NdsuhBU+HwJE4R2GmrHyEaG/4xKwZmdgloOqIMCadz8Xr2zgowFhgqnwg6coRMSNIckN0sPO34eaibzNX/HjXWvye9D8x2SpwTbZ5Mdqye1GNbsJeUb3tV7b+KTrlAKcIDmh2C/5JYu/wX9Ufgoo= 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 1783973291626987.4744491943154; Mon, 13 Jul 2026 13:08:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjMwD-0005gn-3k; Mon, 13 Jul 2026 16:07: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 1wjMwB-0005g6-JO for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:35 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjMw9-0006Py-Sp for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:35 -0400 Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66DJ9NN82256614 for ; Mon, 13 Jul 2026 20:07:33 GMT Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fcwk9tdwh-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 13 Jul 2026 20:07:32 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-38dc4401dc7so239573a91.2 for ; Mon, 13 Jul 2026 13:07:32 -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-313cb804197sm24106543eec.13.2026.07.13.13.07.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 13:07:30 -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=SGMBdLRODLT /TzLWbmVvB4D6KzD8CyV9Ai+U3sjvkRE=; b=DYBq/emIGSbNveTI6w71nTEpYh1 k91b4uuIjJJZFSqH94/U+2uBuw6lqOfEXe8BEm3kC8lx70r1H2ox3ovvgL945Ppl sxW6Di6gnDaLSaqF95wcU3TBUA37HSAeh3CJz0hto2b7gyntAWuhb3MKg9B6jhjj Bs5e1sHSkDBBA2C5hBPBjR0w1rCKcYywtuE7nY565auLMQi/PK2nfCxAJO5cL/vV fC4I+/wmsczFYpz0Y3Rl8bVeV9vQVgysSnDgEpMa1o2mpH7xQnGRzQa6QRN0poVK jdCbjFkQPqvSRkqA/TqZHzkHlZtRza1cdC6fFUga7ZdbhrkJe3nTyqbk0jA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783973252; x=1784578052; 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=SGMBdLRODLT/TzLWbmVvB4D6KzD8CyV9Ai+U3sjvkRE=; b=ZKSDBEXoOXicADhOLP8P1TlwmiPhbZ6tFvQDc5xyAZqghFL7deN3pvnr5A5jCI6RSt dap777UDyytUeImfDH6646pgUEbY5uCadlraxE2jQ6EINXzUwKJvvqJkEMRF7c1stt57 MdTNLOiw3Q/v1BdORO3UjOMlQ5/jB6qBOLeKZqg6EqDreCXlqYUto8zyt1eg3KpWfaeK nm39ryT+hlC+g07HjkMbrWBnhz6AlIOR+5xbHV7TLTJOlqhJpoYqp9yFFFWjKlIO5Kv2 T08eCJZ8MRuwtckbEaYhzyFIwxfX34gttt6iQd72u9b1i4VrBOFOmo+dfJ2bMC9P4yx1 LDXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783973252; x=1784578052; 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=SGMBdLRODLT/TzLWbmVvB4D6KzD8CyV9Ai+U3sjvkRE=; b=DBUH2WVRgIRDzZlUea+eHVsHzMgsLiU+fSXur9NHw8si0LKJpHQFPtw4woI9zXnfsF LfeApnOOQS9e+RYhz8Klaldii+ygWErZP+1z57JLFa6s8/o/xX48/H7fp7ukcb5M4x0B llOsKnqH915r+sREdSUM/cwNdxcvP98FfUEHc2JpST2EgAxeTsCGgqsgwUYrPeuZtX+f KE6Xt9udcPO4tmZz7Tk7lNXgqAnW5d+fv14dX8rMmy3ug5E6Un4SVCbGptQ53/AJ++Yn HEljK2l/h5VjU1LahR7pjKAUNXLRnGtw64EUhUM/jECOetAxLakrrd6dxRKEnWXTG8kn LENg== X-Gm-Message-State: AOJu0YyB17uXEBBpos+fVaLY1K4rZT/Ru3ns2+RlUZad7u2sa7I4mybe rhno+3QXCKlbdz2Y/AgIZJMXTwpoW22y3EYKKHhkB0d6kUn4509OXSRthXPsngZb78ojoof8a5U nK6CjJvfIExdkrLBfbpdilSOzlXSZ/M37qFKPmNmcT1WSnBhoA34YHfMy0skktL2gAKsb X-Gm-Gg: AfdE7cnPQy2JFNjPv5zGFLCEtKf9KzspfW7k/BN/W/Vetn/T0/w/ee9PaC3DzOpRkXb gTIKDSevxqUAy+NPilTBcnZa1NAABE/AW374D/Hwt4TQTe0SS5nk30zeqmAMJ0gFiapEOVFT9ax aVUOKuZDS7lmw8XWQfAhUM5NalR/ecmf7Rbh15k9mUCTGjRBsNaesYGK/ndNwQo7OXIUKWM0gw8 kFc+en+2EUPUNlikeMBaLl0Tgw8TRhCtYXbvGEZwfITaE7HCeB0FU26nVFm5JKsaJ+TV93iqb3n MlYXoCoZrVB9gKKVeSg7ctvqfCxslegD44eIqC+g4d3F3t5FWWoqu0SS/jDpZKYBGBD06lBuKCJ Uu5MIF4zH7WVp8ajm7nzlk0ZiYIp+vXrhjI5iwpq98m8Y6SWGzgQTnvC4h0qlM5BRcj7zOapOVw == X-Received: by 2002:a17:90b:2cce:b0:38d:c834:2106 with SMTP id 98e67ed59e1d1-38dc834255bmr9318956a91.28.1783973251792; Mon, 13 Jul 2026 13:07:31 -0700 (PDT) X-Received: by 2002:a17:90b:2cce:b0:38d:c834:2106 with SMTP id 98e67ed59e1d1-38dc834255bmr9318938a91.28.1783973251372; Mon, 13 Jul 2026 13:07:31 -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 04/14] hexagon: cpu_helper: add reg reading/writing helpers Date: Mon, 13 Jul 2026 13:07:12 -0700 Message-Id: <636d47e381c5370c38c058f324c290c39265b10f.1783973054.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-Details-Enc: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfX9KEvm2cD21ii kDvHSBlkw4ODRWWOYiVDp+imdWmpa4Cj35hebkltGOGcYNfj26CfwBL0qWfl60A9BJngJO81jpU 29xcTPvZim6iU1G6y45gDaMCLzhR30DMPe7eAeS8rxApyU6CwmG0Y10d89X1mgcLkgCPtTG19FT xYikjCsqZ0j6kwRYUCenJVrDyt0VMhDrG96YMJ62qrhQmXjNVxVW6tPODBeO35i4XwrMyTNkeBt 5pyHz/ZE01xKZ5guRsOd9e6u3xldKq1SD1AVKPb+zlFVZ1EZWe5isYXi3O+Jy1xLxkMVwC/4RLW UE5MWNQRNc2KPO79rsoRPV6fegMeIaDWK+Bi8R+HWl0xK1lmUuOkKaXn33pumtfy6HwlQl7IQtK 5zDBjm87lhLTWpVOEygeMIGn8zUMyyXvgDCWWIBs9B7FP5Pc3kdkctPo1lfuxs65FjfeJYZXEKM flwIl2dmyxT53TWrVKw== X-Proofpoint-ORIG-GUID: QGi1EG4dnNelXx3_xxG6pNKOw3ycyd6M X-Authority-Analysis: v=2.4 cv=UMHt2ify c=1 sm=1 tr=0 ts=6a554584 cx=c_pps a=RP+M6JBNLl+fLTcSJhASfg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=nXchshz6agspm-bXmVMA:9 a=iS9zxrgQBfv6-_F4QbHw:22 X-Proofpoint-GUID: QGi1EG4dnNelXx3_xxG6pNKOw3ycyd6M X-Proofpoint-Spam-Info: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfX5VJRyG9OVwnQ VbCYJAMl4o8PhAlThLOAY+6dC54NwnHbGU8I2G+4Wbf+UGAesYhh2l1WH1IxOYTxz7ISBcrvSdn C3RkJRPkojHqv1IZ9wwtgSD54GFLOZw= 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-13_05,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 impostorscore=0 spamscore=0 clxscore=1015 adultscore=0 malwarescore=0 lowpriorityscore=0 phishscore=0 suspectscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607130208 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.180.131; envelope-from=matheus.bernardino@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1783973292586158500 Content-Type: text/plain; charset="utf-8" And adjust op_helper to use those. They will also be used on upcoming semihosting commits. Signed-off-by: Matheus Tavares Bernardino Reviewed-by: Pierrick Bouvier --- 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 f6a31ecbab0..af286dbe05a 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 1ab2564e3dc..ead0cf9d7ca 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 125952aee59..4859d8a484e 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -1839,28 +1839,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 20:48:39 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=1783973400; cv=none; d=zohomail.com; s=zohoarc; b=PM/K8S1usrvE/xPD+TY7swo2TmgD5JmEHlczfF+lUSEq8al2skz/mll6dKkZ/9qcowo88whQu+6gVyuqmDvZloHgXsN1/p2aaCcAra2wGPgRM/QdOGTSRg+EYC5y1edDSmoqCjvJwJtHu7CtxxxM2cc9QOi8PuxAjlnXovd5Kgo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783973400; 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=oigHGWTP6a+NaIv/poYxQToMY1Wet6qxAv59+TKTXw0=; b=PcFWda+amTVPzY8j7tDmPzgcNegnDYWFJ5zJVwJzC0yO8eaI0X1ip+KM9K7yPGtbX8+kscY3r5m4C17RBQuOChU7YBsl24s6rlTBs97bHZz/ko9ZpFe+qSLtQ7FBkALaJH5bEMoZHYWeo2U9ZKVKiq4TzFeUa5qsIQNO2gBurH8= 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 178397340080513.235746406052499; Mon, 13 Jul 2026 13:10:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjMwF-0005iR-Bb; Mon, 13 Jul 2026 16:07: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 1wjMwC-0005gY-UX for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:36 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjMwA-0006QN-S9 for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:36 -0400 Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66DJ9jXn2461288 for ; Mon, 13 Jul 2026 20:07:34 GMT Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fcwda2fj6-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 13 Jul 2026 20:07:33 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-38dc085b0a7so4609076a91.2 for ; Mon, 13 Jul 2026 13:07:33 -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-313cb804197sm24106543eec.13.2026.07.13.13.07.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 13:07:31 -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=oigHGWTP6a+ NaIv/poYxQToMY1Wet6qxAv59+TKTXw0=; b=jBDFYDJ30TAnCEUsfScPgdDYQjA 4rYKSY0/gPtI25a4qazT8NiWDmaCSNPJy7BDMAblQhLGYcS4jiu6mdxV9fWz675G rU3koRDPc0R15uVI9e299TPQDMCE32687MCjC5l+IG7RECbxBEIKLeLb5R48JjsX iJ4m7Nrc1w0GJ6yqpCpRFNA9Y/CYhRyhob93KLbC3B5BczdCzK0HEtC57ygvgQpA x8GgHHs69c2biRhO5owHbdeLmaZGW65sxC2OBYGr9TlNLyOOW8M+g3SAB8qo+bGv +t+QfJaD7T3fjpjvnJ8MhK0PXeZJS/DQtumzYiGcn2F4qX3NgKXs55jD0xA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783973253; x=1784578053; 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=oigHGWTP6a+NaIv/poYxQToMY1Wet6qxAv59+TKTXw0=; b=N7Ltw8/5eq0h8mC8ZOjN1xt8IaevJiB3XFauVr6qfspMcYxKGnJ88tSspgP/2YieiR 68kGd/kGXhDTF5zf/cl9wUGZOUOpvGQAspBCfbp3IwdNyie8+QwmgtntzZQwt+xg4uux JfW1IeZt0uqfr7W0nThhy+pNOooXU+V3EQsIPxaJqXmaHjmBW/XWudO5GcFOeyqGTGhg fAV0RjMiGbu0emg8BapdzZaiWcVMK8daaPvDb42guZZlPyK6O7inUkBOqu6BBUKRV4MQ AcyRla+BEk0Q7rd5lmrxrF7mFnfloLGBgZVxJujCw6Fcc+Tal7qlNKmW5kFveCQ5jcyA 9Wvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783973253; x=1784578053; 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=oigHGWTP6a+NaIv/poYxQToMY1Wet6qxAv59+TKTXw0=; b=UhGOE4LfpNMOdOQFEdxVRlx9XMx+WKwqqYC918XY/BA0taAk4BUBYGXUlsJqE+9jTZ Mv+LydHEcSKXvPbLQfF1U3DhTgFQDe9JB4jo3bqd3vdibU+VcPRI4LP0SwLsTMNejUC5 WPnphDqDLgSgcLo9u6XPfJFOG/zeS3A1YDwkXy02oSgKpPf0NkCqoCavMtyuAbrMABah EYCp7l7gwGeW0ArmRmVZ0L7OuPSAzqBdZrXfMFUpYAjQsI8yvmoLBQwi4sYlO5bHUNlG 2zhLfdbtCMsOP4lvJXP1ufSP+OnH9a6U2LQlFBH6tNFhaRsokVa+OP+ErSamsPU0uRl9 gvEA== X-Gm-Message-State: AOJu0YwiyjlODMUa4FCk6Bc4Y8VRDXqVlqphxZproNdlSXhdlGT5NqS2 ni1h79kb6Ugxvj0ZvzLslBjGBZWD3lm3tUTYxVt9lR5UMlPBtK5xsvUUcyvPBOFPhsEG/bv6GFO 0Td53gYo1YLM6hhZzGrykTFmNeKcOlGnJny2m8v/4l52V147eHUoFHcZzUdl8KW6C2usf X-Gm-Gg: AfdE7ckB25rUgQpDLElqoQi5DyNznFBek7EKSn3M0PIXwOqBESXIv9MKbVx0z5cw4vi 5nnJfZ5oRrzBfQWokiXVNDgJn7YURyldJ9asZsuOpkjR05DXQughe45AjmCygmNbX8Jcrj5EktW Oyai8GFcVAP/9fJQLS/XK0GR5YUZZAM5zUf8t2ExdUEUqjrMHYgqGGBHY2YVixX8bX737PsDPbH lYJ9NB/lfCEhU+FTAoDK5vfnPf421oUya5e0tRVYLPFdX8WXma3tqTSTQKR62eexhRkMxODMy9a 1LXYOt0LYHlVdUj79cXonmUL5ojOyDHRHlTG0DLLvQa83gLVTQ7UMXa//n6UyyZ3WIFa54EtgKX K0twNpHX1dp4xFC3xs3FaFcoRSsn4Io14H2s8RwbRxzGCGQLUEUOGRcRh1E0m7OJu9xaAN+JQxw == X-Received: by 2002:a17:90b:1fc4:b0:381:23d5:693f with SMTP id 98e67ed59e1d1-38dc777c375mr9978794a91.28.1783973252924; Mon, 13 Jul 2026 13:07:32 -0700 (PDT) X-Received: by 2002:a17:90b:1fc4:b0:381:23d5:693f with SMTP id 98e67ed59e1d1-38dc777c375mr9978763a91.28.1783973252505; Mon, 13 Jul 2026 13:07:32 -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?= , Peter Maydell , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , Chao Liu , qemu-arm@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH 05/14] semihosting: add callback to set error Date: Mon, 13 Jul 2026 13:07:13 -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: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfX2/3uIolBvtb8 oGEJH+B+Jd4LJ+nkj1sjTAGjvrMJd3ssG1uIsUBebdgfZ5fgQRjnkwN8bY4YC0/PwO7EWauGp0F IiIUe4GRRhDaICpRE8TosTLSEfBhAGg= X-Authority-Analysis: v=2.4 cv=cNbQdFeN c=1 sm=1 tr=0 ts=6a554585 cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=8ndNYmkutmpv_8xOvXsA:9 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-GUID: lwwHOwW1tTcYbBuwdrwHuSv__IcFeBDU X-Proofpoint-ORIG-GUID: lwwHOwW1tTcYbBuwdrwHuSv__IcFeBDU X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfX6Z+l5S6tknpI 3U9tkdmeXgD5W0NJNIg8guQPxCElBifUq3dT+XifoxISXEyn6chXTyOPKhS/t1dJ+9tjkJcJWPG MJz/NCMxhKIDDVFyhLKQlSN22gVT0T8Us+7E+aWmWqKQrDNxWUo2yCeDc3OYuzQVDs7ofXo3kfY BKuussXkxInqVjVGUhvdfyBhNxPnYnLkqBEDn76M5bb7DDpeFXtnZpI50lgjA7PJJIUSupIGIO5 TOyt5gP1JDEVixtOeRyZ8Mx8FXG0Sl7JRwI0IgoHFQzzINnHcJg84036jBHn02g+i7XUMWIP3Sq lCfhwlghxV+K5n2sD7VU3sItuePVPLYkM8akeL07sIx3HYIehMWQRPAn54eJt94QhpMNSOM7I2C hfQAj1BVUv9WTTt8EAbXGtuKQJgyofwGDW+KMCRr3Uk+xPyAoQeWN1EQZW7LHqVlBQ3e3LBzrk6 gJIZKoSQzbt2nZemF7A== 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-13_05,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 spamscore=0 suspectscore=0 impostorscore=0 phishscore=0 clxscore=1015 adultscore=0 malwarescore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607130208 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.180.131; envelope-from=matheus.bernardino@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1783973403075158500 Content-Type: text/plain; charset="utf-8" This is currently unused by existing semihosting targets, but it will be used by hexagon. Signed-off-by: Matheus Tavares Bernardino Signed-off-by: Brian Cain Reviewed-by: Daniel Henrique Barboza --- 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 20:48:39 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=1783973321; cv=none; d=zohomail.com; s=zohoarc; b=k+YElQgTcaSTm5h5gQEga4DNSMcJchtZuJGU2nuuH8bIxkzILyrsE8doX43ECOWv1JCpbWjCdnepFHVzlp+Aed7VmaB+MxHR4ubJSWkqpivA4R7LD8MkkMFF0CPxoN9oyI2Qxwra8KyWMtLNsLU+uDaVrYAtQuOf9JxniJ4KRS0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783973321; 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=LTrzTFdhnWgnel7SJyOcI5W7KPgZREsyRW5niRBi9o8=; b=Hf7lwrDhKuH69tsD5JPOqbcCqpmYOOft0gKy2y2oIMbbxwu0BupAq51Oe+XM59tfU6vUStgSo+h58VDoN/hZTUlciRw16kcYci7GOl/4xNKcs1X1nWdhGdbAZvUxK2Tryb4fZvRMZzjY26At1eT82ytB2uUh9bPPyxK3UaBMiKc= 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 1783973321768756.3597691218754; Mon, 13 Jul 2026 13:08:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjMwF-0005ij-Oz; Mon, 13 Jul 2026 16:07: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 1wjMwD-0005hQ-K4 for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:37 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjMwB-0006Qi-VA for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:37 -0400 Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66DJ9QcM2256804 for ; Mon, 13 Jul 2026 20:07:35 GMT Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fcwk9tdws-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 13 Jul 2026 20:07:34 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-38e04a53a7aso1237252a91.2 for ; Mon, 13 Jul 2026 13:07:34 -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-313cb804197sm24106543eec.13.2026.07.13.13.07.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 13:07:33 -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=LTrzTFdhnWg nel7SJyOcI5W7KPgZREsyRW5niRBi9o8=; b=ksx/g0yN0IiCF9LvZutEC7fQxC0 y+OlydMBN6BAnF0mGYpLOtfGre8P0UrjwngQ54rnOWLT1f7CdCLfsRLdxX+DoSMO XqKireTTJiIUJ3FPM6+rWg4Qjiu/Di5st0JgCsbHxRvyA2splmv/FYv1G18SMIrD /qMIRFun7UUrdKfYMy74IW7WkcfzdqJbEBlcTEu1/0moGxqeha4Kdq+J5LEkXvBi ERMwkvbdHyc/NWzU8QqJw0Vq61nCEeSqneC+k+r7o+wIPxBg1aOwe9/wvDP7as5T Mx6kMfcOXlJUm1gat5h8kxKBX9H9M7v6Fff2wWKZuAVArptE9EmpUpJu9tw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783973254; x=1784578054; 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=LTrzTFdhnWgnel7SJyOcI5W7KPgZREsyRW5niRBi9o8=; b=SpmLfw5gF91e9c6S1llGHm7z5uM6j4GD7N6qUj3WrE5CVNrAx6UecmWeDjRKtEm9TI BxyqRMzj29OqknJ8btmLR+YcqyRZQRwCsOVjLZEvxthE2LAkSIIieZRkxvWUz3Qg5n2h FaazqvP6/GGGKVJVGSCCEG7u13Y36fS2j0Vd5BdF1M5XW4sEiKwUyx+UEf0MXuSnTv9t Vk9h9vAQtPAUtXxvYjwlV8LlyxpnYv8hkYFJ0yM00IbUCR/B61i0Oc5AmjBLnyODkmlT REh978yJBHYSG+Btj5/Ne0xqBE4KKOdWZuMbpwxZme2Y7TUIJYMpCmRvEEZS2vJhUY77 pKHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783973254; x=1784578054; 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=LTrzTFdhnWgnel7SJyOcI5W7KPgZREsyRW5niRBi9o8=; b=kW/pdmeEEWEoEjYdhweeKIEJos6duZ+cs6M6QBlKi5rS/AKlwJyuCwRSuA3tTfXm4f tyQ9MM9xk0EPJG2XkaTVI+0dM7iUfN6uqN6hh5A9Wo9zysIekosBt8bSnT3FTkhRZLJ6 TrHiB9yIHUr7JLzT/6ZDgirVhyT7cRkqa4i5eR4Rggh9gD8FuG5C9RpurybEUx1y03j/ hYhVFUNZ06R+8YC/Jz0VQF6pmrO5yU5SL0g7r3U72gKaqfsY5fOXKJVBcFQJrXwv1cjA EMf7qLPpmHRkB28Ie2BpvNEbQH0ATYe1sAuH2wRgELUB4Z06/Bi6fHYi3iTy36GRyCjT TLWg== X-Gm-Message-State: AOJu0YyfdajtVgnCdSQ+9u0RuSDlADepgGLJg4sIlCvjoauaQV75CMd/ d5MGCfF4SgKRTN1dQ3VuH911s9J78M27TAkMaM1YAFLNNxjkcYeCXCMmgVcOb+BwbWssuDgth5A uPF4VmNnfGSLu1GGpLUZEVVHCkOYLFRbwO9hceWkZbLp03Y/K4w0z+/G5CHtJ0rQPVPWl X-Gm-Gg: AfdE7cmHa5NVlOMS1gKtsVWi6SZT6wcPLkSzkBVefK+W0BvnWqVlrdrNfPwKPMiBOE1 5HP3kFHVgl260gIdSKO+ok6NUSHHlS3J3b8W/WTNbCtSbULBtPxCFjt7WVGd0VgRc6v9lY1GQDZ e3tn52xBMVQcnZJpQe4ZAJDNuPV/90YYzLhaUFPCuMjDo9aDCPdGNRxWmYz4EFnWeTkjLWOOANb 6Y62TFM64Xzi7rDvt7g36AktiXW03VXBEl02SjSdL2+Gr+nfyj1pfA/KWz8nQDJV/FPMDdmr/Z7 vFK2nlklkMU4Psnc43+7X2xJEr4gInjcHL77aOd1k+kqQbduc20fVD4B8yPw+BPTph2wnKMFkUk /ViJuItoTV2rKoLt/ozo7vgEZd2d3SeMDPs3tZvoj4IMRCMozJ06TdwXolkH2RlrRkX5E3OHVXQ == X-Received: by 2002:a17:90b:1c91:b0:380:534f:58c2 with SMTP id 98e67ed59e1d1-38dc7b81c27mr8988482a91.30.1783973254041; Mon, 13 Jul 2026 13:07:34 -0700 (PDT) X-Received: by 2002:a17:90b:1c91:b0:380:534f:58c2 with SMTP id 98e67ed59e1d1-38dc7b81c27mr8988468a91.30.1783973253632; Mon, 13 Jul 2026 13:07:33 -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 06/14] semihosting: add APIs for chardev-aware guest fd routing Date: Mon, 13 Jul 2026 13:07:14 -0700 Message-Id: <726a21863495a931183c24519cec26026eb01b14.1783973054.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-Details-Enc: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfXx0POqa/TBicR Q23gEVXY2nDwOkBB/oSiT1ogZ9WafXeYSMSgPTEctFUOUqmlYrD6dCfpVcjIMx7/C10lCWRDlBi 8FCNQyNy3mDaYzNzU+F4pmEBHOgvuRgCAKMEp0tEzxZVBQ3eHBV8W7C8dq6TcW5JP0SEP2SRFxY haxCz3U9XEim5o5o1ay75PumCtJuw9p4DArsWM43ZI+fLA6G8Z7Jfa68sswKcrnNK21HMSW/lrd hU+Ilgprs3YFV84VYxn4SMOgnL27z39ZZOyTXXlbpFBwGWAQyZDhlEQ2SARxDRChu9EUTNRUDBB YeKe/RiqtwrH/vEodD7jJkGz1t7zj5l6SJ+z7Z2kolMe1+Ix+oxuuZWf9TF89C5H2loA/dVFhXq jgLQ6DXK9TdfLW5PDA8kBsgFBX4+QaJSJJMBPfHfuXtRuW84FIpIM/kA/Ee2r8oDWU3UZmtYigc d8z44mSQZnp8G275JMQ== X-Proofpoint-ORIG-GUID: xWPhXvkzcFkFJMcZ_oZxO8aUt786EZFw X-Authority-Analysis: v=2.4 cv=UMHt2ify c=1 sm=1 tr=0 ts=6a554586 cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=4trHgkiC9q-UxXHgwkcA:9 a=mQ_c8vxmzFEMiUWkPHU9:22 X-Proofpoint-GUID: xWPhXvkzcFkFJMcZ_oZxO8aUt786EZFw X-Proofpoint-Spam-Info: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfX7m9Iu+i6ohXs HeW7EWukq9DTs+VKvaqyGhq3a6cRfHPCCk35D9UVEwK17o/qfFW7g3OTEKYjLmHZW4p6A2eIO0F jWMH1tXTZhGnEGnei2sq7bokkqiSMFo= 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-13_05,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 impostorscore=0 spamscore=0 clxscore=1015 adultscore=0 malwarescore=0 lowpriorityscore=0 phishscore=0 suspectscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607130208 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.180.131; envelope-from=matheus.bernardino@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1783973322486158500 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 20:48:39 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=1783973319; cv=none; d=zohomail.com; s=zohoarc; b=MYl/YdHX0UD6NmpPpF/V83KowyjDmK03Asrf/YZVSP7HjdnblSYx+n0zggIn41yoxgcEIOIpUWCmwMsijFXfYzbJR0DOdFwbxzudbCuhdEfgh4afS1CckFFpdqDtuhBotWdPCFk2brmckYtRMV1h30JtADVR/qRrZ6DcN+5/+A8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783973319; 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=0RwOwWJ+1m4ksLHHFGRQQ2RntwVgVi7n4jRHu12AORw=; b=nMUBQqCHkoyXXW03H0dg34ZQ0NPGsJIXVx7Tw6yQe4g5XkYbXAn1RRyrIZyrFTSAAumQ0IsQr1QDzDGflvdbLGWC9FQXTTyovKOoV6a3y+9jonqDJlFXbo5p/FvPLmwdy211Ibnah5Dc8pARHPyx4rKzr6daQ9xdrWSFRuRtVPE= 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 1783973319741720.5657978895995; Mon, 13 Jul 2026 13:08:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjMwH-0005j2-7N; Mon, 13 Jul 2026 16:07:41 -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 1wjMwF-0005ii-Ma for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:39 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjMwD-0006RI-9G for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:39 -0400 Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66DJ9HaP2470645 for ; Mon, 13 Jul 2026 20:07:36 GMT Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fd44jrmen-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 13 Jul 2026 20:07:36 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-380b630c505so4278957a91.1 for ; Mon, 13 Jul 2026 13:07:36 -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-313cb804197sm24106543eec.13.2026.07.13.13.07.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 13:07:34 -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=0RwOwWJ+1m4 ksLHHFGRQQ2RntwVgVi7n4jRHu12AORw=; b=ZoRP7bS6EQteEuSOAlkgXxXFdgq ejv/8um3tJCadxzRgwhqaImxTlLcJ0MGei3/Bs83v6BJPtAKd5CAotqrDoa8baUA AK/9yoeYYl+FLWuUU2ACfHdzciFPDP883RGaj7pRrfwrtZD/HE4ivh6ILtkFz29W mJiG55D+wS8G6NA0a5YDNbesbq2X6GgQtOe9fe4jcswOS1W7/6ETHrogvtRfcHEQ tcMv6ZnRN0J7TtCaClOhb7fEP1SPLChLF1+1eGRIjOnzPwPHic6zNQtdSrf61Nrn fPjTBxH1iyV9uw4pfM2M5tuJ5TUD7fqw92kEvmZxKFoHfTcn0EdBCyumIag== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783973255; x=1784578055; 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=0RwOwWJ+1m4ksLHHFGRQQ2RntwVgVi7n4jRHu12AORw=; b=bYkkd8TUVeOgNIW38F/HZyAEbROeZt7MSJNx5kiMXtob6PmJH1GTJUTkAf2r7Swjjq lDXW4+ma+FDkBFiY5l8Q3A1YdmYyld/k1Vd+3kUoT8kHDbHwel4b+aRrlvsDS7paR9or 3cCEUnGXqyzllAhC9uWZap2UwN6iX1Smm78OiEgWfcMkVhYujCJIcLcPRbBBUrv3LnFB 8ssCngK7Ua/x/VnpkubUiB/1hHfaIzWS/vb9wUMBiiCr2heB5iSnZv1BPBftQ/SpT6Jk RleyLzeRZvbCoNI0kO+6MRvJA4YcgaFAMMB5ga8YGqhxoKWLHpII3826AOdk0YFxKrYW f7fA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783973255; x=1784578055; 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=0RwOwWJ+1m4ksLHHFGRQQ2RntwVgVi7n4jRHu12AORw=; b=MWsojBommnvYo3E6Wg0nuAflSDa7if+X9FPB7mqd0pz8WUUSwUdMNvF+qMu9xZP2FT UZxGINuZhl1DI0aZIWq6Q5yEoGDHJd/VXRW3IeS46cK8oIi7BPjB8oUm9uB56ideEk6s HqcAZ4kdY0i3kYYyhtrJGAKdAs47AQKk+7Z3rRD6lkZVNKTemBFlpHpYhmJltDHCv85h DdEQuNZHFT37QuRq3WfJeQ+LU61W1t5oWj1jIfp2wBYZKlT4Q2nMJTv8b+CNmnrx6TIU FLOAZoWxz1q2Ygfzn3e29PLIG9+0Ht6tjLWVrxF6Z6y2iQtGEp3Vn9pWAuUTGO/tkz3S QqOQ== X-Gm-Message-State: AOJu0YzG9Jm1yppxEfPnaSSLy2w0hrUwyKbbBG8XR4ctDWrj7PCsUDc0 Ow3TTXCYSCEKOpg8QGlUjUNyLyXRnNWEaJU10E1ad0HR7Wn94Dd/gcDbb56UoyeF3zxetaBmQOq /NeM+P8GSUCr6LWJhIkA9mIQKpxnC2WSQ99fzo59lQH352OoGhDc8MRPRhvjrFgbLYGCy X-Gm-Gg: AfdE7clh5xfveZwTFto7dU8r1Ybn6JZ/yTKPJY6j1gUySOX9ysm9pk9dhHA3MBtKxZt e54QKcsCxDIhduNqF0XhBH5uNzbJ522EAqTErYXWJB7gn5iqdoQpHbuH+oreZHvcVaooTplpHDc bvD2M1WmrPXbVmaNhGSw+6RHgyrUnlPFMxz4jlzWICGNTw1N0lRCrtXh0+mVus44/tq4ybQ8+MF qCu8VMmo7LZD6YswRcwoty4hYnSsqd3SoRSTR1h+60QcO4lkPCo7EquLod2ZAfigmlTVKVdK32Y pzEnRJ8FMkYQIxgNcZbZptJiXvCmEDt33z9ncMgCnZ6tZMrBDYG6C+TmyG5nTQ/wALO9WWHCWOE 3jDOnAiX+N51JmDAREHVgBT5/z633/K3QM4TycTDdkenyp5B7/+vvQm2fmsnx0xAqJIj05Iip1Q == X-Received: by 2002:a17:90b:2750:b0:37c:18e0:90dc with SMTP id 98e67ed59e1d1-38dc75ebea3mr9970799a91.16.1783973255192; Mon, 13 Jul 2026 13:07:35 -0700 (PDT) X-Received: by 2002:a17:90b:2750:b0:37c:18e0:90dc with SMTP id 98e67ed59e1d1-38dc75ebea3mr9970776a91.16.1783973254624; Mon, 13 Jul 2026 13:07:34 -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, Matheus Tavares Bernardino , Paolo Bonzini Subject: [PATCH 07/14] target/hexagon: add semihosting support Date: Mon, 13 Jul 2026 13:07:15 -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-GUID: lSqvMtweZ3ZrzzW7MIOiu6UfCOxUzsPm X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfXw2A7IphmuyBd La7p3mplyho5LjGoOU9Gsyp6w4/y62cAozWiBmQR97u4hLtbi0iRlhG//zRkxP417ZX0qSkEFtm Lpfkz0cr2N8sMtwk4fL+D3l3qW5uJ+BI4MRBj36wACQgVbPGVMkJlpFEIZ4TQfS7desARQNbE4Y 6otdzRQF2dE/Xx6uAkLAZVnUYm/2FPRQ3sHl4VrferbBZ566PGEp2aY+vd1N0Ze6WhbI16rjcmJ BQBG7MDI+JHinY2hKhXyZAYGF9Y0PFudDuyK1t2rKMXbh6Ej/Bn3zcfi7OuZahs/k2oRP9FCOkf w6vHQB77Uk9o8VzvC5SziOvGB5L4oSLX6oQqkmhSS97bGS/OODnaSopMbSoG0MvxWEelOEIDVO3 iCvEhVAgYHQlpaYdHatL4Pv9PCDF2KwTw8sEuS3ELRGkklaAJRpikACidGTgGM4YE2CNcFZcugT rSY1hrLKkBPQJFRZNwQ== X-Authority-Analysis: v=2.4 cv=XonK/1F9 c=1 sm=1 tr=0 ts=6a554588 cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=QDQZMBKZCXjBuAy7nZgA:9 a=mQ_c8vxmzFEMiUWkPHU9:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-ORIG-GUID: lSqvMtweZ3ZrzzW7MIOiu6UfCOxUzsPm X-Proofpoint-Spam-Info: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfX0In3SD/eQhqG sTIhaFp4efPBi5LKmbxH78otOQjcX82a3KxKO14dLdAvDqq13ilGVcDxAqPKmDFNxaMBNGfxzKj 8C47Gk/UdvWCTCcECL+Pxc9QDatpAMs= 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-13_05,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 clxscore=1015 impostorscore=0 malwarescore=0 priorityscore=1501 adultscore=0 phishscore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607130208 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.180.131; envelope-from=matheus.bernardino@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1783973321027158500 Content-Type: text/plain; charset="utf-8" From: Matheus Tavares Bernardino Baremetal Hexagon programs use trap0 #0 to invoke semihosting calls for I/O and process control. Wire up the arm-compatible semihosting framework for softmmu by enabling CONFIG_ARM_COMPATIBLE_SEMIHOSTING and routing trap0 to the semihosting handler. Signed-off-by: Matheus Tavares Bernardino Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier --- configs/targets/hexagon-softmmu.mak | 2 + hw/hexagon/hexagon_dsp.c | 2 + target/hexagon/common-semi-target.c | 51 +++++++++ target/hexagon/hexswi.c | 164 +++++++++++++++++++++++++++- hw/hexagon/Kconfig | 1 + qemu-options.hx | 8 +- target/hexagon/meson.build | 3 + 7 files changed, 224 insertions(+), 7 deletions(-) create mode 100644 target/hexagon/common-semi-target.c 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..ce9c85ad6aa 100644 --- a/target/hexagon/hexswi.c +++ b/target/hexagon/hexswi.c @@ -24,9 +24,168 @@ #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_touch_memory(env, addr, count, retaddr); +} + +static void sim_handle_trap0(CPUHexagonState *env) +{ + target_ulong what_swi, swi_info; + G_GNUC_UNUSED uintptr_t retaddr =3D 0; + 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: + arch_set_system_reg(env, HEX_SREG_MODECTL, 0); + qemu_system_shutdown_request(SHUTDOWN_CAUSE_GUEST_SHUTDOWN); + 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 +254,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 20:48:39 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=1783973291; cv=none; d=zohomail.com; s=zohoarc; b=A1x7+1hX3MU+M+pU1NG2GAPSWnPX+7+rWF3GIh9wAdgVGkbeGdhh8MhM5lIAdkXS3wLa2us06b3CEQjjY8H0ZTQ9JEJ6SQO7gCIsfu7BveaRcTj9Q9d7uwn/FfC4LoLkEwKqMCv8y0vH3GBNttMCf5zl807Wegvn9cimHqyyo2M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783973291; 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=KgoeEtREP982UVwDu1tBLv1m6zgILNescQnRy+9maew=; b=XdlranU2/g1Ij+Zwe2NOykjZQJ3AKjPtMm/sgCJ6kUj/ZfnnOYdXNY8HTsMf2KmsoeYNsUPWKxtp5XR/uRDaqeoEOVDrXmBjpSM7hmphQ2j0cl+Z4e0khL1+TbO7zVlIEFDA4rOsHuzLpjV+3rTFRpRYIVzyAM0IHnw67UQsfUg= 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 1783973291716891.901816634451; Mon, 13 Jul 2026 13:08:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjMwR-0005jw-75; Mon, 13 Jul 2026 16:07:51 -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 1wjMwP-0005ji-M6 for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:49 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjMwO-0006Rn-4f for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:49 -0400 Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66DJ9GFr2470620 for ; Mon, 13 Jul 2026 20:07:37 GMT Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fd44jrmer-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 13 Jul 2026 20:07:37 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-3811279d51aso403723a91.1 for ; Mon, 13 Jul 2026 13:07:36 -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-313cb804197sm24106543eec.13.2026.07.13.13.07.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 13:07:35 -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=KgoeEtREP98 2UVwDu1tBLv1m6zgILNescQnRy+9maew=; b=jyaWQxBc97rrHO0Unv5A+Y1D2xd WVtUuMM+haPWeS4q+a01IMu8tUG52uJ3tHJNzVBoviFPysqRmL5+UYASpi5Z58/J GMxRY2xZZ3yymgbOJqZMLFlgP7CkDsVofunjoIsoNuprJ0cNLvN31+5pkRlP5NhX su9aq0OLgd7O1Ag6OlZtiCKSgq2HeDQ4g0mokdTp2T1yvbxRquEuSqQo4+tIq86N xkLxkAcwTHLgVcHd2coTpEWqdWKVgMfS2T4/Jhfl+vqYXM5DmGbQZTnBJakrPbm3 Y5YjX9XFZ8WRyLgTQuq4TVQGgZmVbh9BsI2ZaiBbA6c8mccJkjZXMDuPKzg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783973256; x=1784578056; 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=KgoeEtREP982UVwDu1tBLv1m6zgILNescQnRy+9maew=; b=HDjXz0nmi4pESxZlj+Tb/QED1f2VQ2p/UYYDCk34C5vnpCG3hYhRBuY5kDF25bGIx0 uf8ddNyUv53rkiCv63/PgdeCnKbaWUlijeF2B3RmVfznS2HcWtC9K3LQXpnAnx1mvBu7 Ngs5DFF1KxT0vsB0zA9kQt54BUnmCtffOtPiMlhlIp7tIJ4AxYgvyCERUhN/H9+P/Sp6 Nkn3eAIfkzmg48C27W056Ab+NL2zPgcY7HL86ToYGqOKGWkURVYcpJEqb7fXLuvzIoHr j4lxKQH3FFDu0My6pN9ybwpeImy4LaDUhVwQxXXeSkD2O6Hr6vikWWvELiwxCK48Am8/ 8G3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783973256; x=1784578056; 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=KgoeEtREP982UVwDu1tBLv1m6zgILNescQnRy+9maew=; b=Fuk0qiwy5XqAiF50/lQiB3TBIv9+awPSplVtN5pUoyJ/R71CuPmbJqKRAZmnCGPqve +VqFmnRz05BJOWKnvr4P4vrBbbzbv7ZoyMaE8JXZahR1Sv4H+zb8D7yu+7HeUw1ZUlRu phv/voutMREOkX4gQsXLKFIsdPgEa1CuYbNeOFXawcGuQXctZb+QuQha2mvvH8NPEkdT N+ybmCW4w9WSHyJm0+1PtpJhgDatZSydSszakLrYd5khRM2oPQuOCzds2uYDrWNJQvKt 9tIVnVQbQXeIJiCxBj89r++gzO/eKQylXxf5TnbBB932clcyHbxHCq9yKTx+7Tkbaak6 guaA== X-Gm-Message-State: AOJu0YwuUZbHLY4sKx2nQm3KE4ub3vTts7J8+ssELc+4K/h89yPn8zvr MaTspyDNaNxvRlaBwsjgis0FqZiP+OXXp9qG9fdj/jjZPP+iT2bCYSa4OJEe2jZtv+IOHnakiVU PzbItWQ0TCCGflgAbRflfAXhtz2nh6bbGDib9u/Aa+uUjaBV9CVJeQ39QJ1ST1MhYV6Mx X-Gm-Gg: AfdE7cllmKxUf5pncz8PH43Y0w5hXgCDSAm0TnHdxuZjmO5WG2H9JVZymcCSaVjaS0K K/xASabZClJ8/4qMZTMc4o2xczdYRn/G39Oreck9SYlLy6xRnsSvl91DNd+g93Q+AQvnhjHfxjW l8MLg1oABzbKd+fSFULtcx2InVJ68jRNQEeMSOLeRaTc0QIJGDS9T0+ZvM3grg/5mPgkmltzMeC 74aCVjb6zen2ziOCAJHIh0AkaqkiRZu4bT6QvSALYZPq6Fl0hJZv7izATBAFpY32OM5qSWvcd3z /fc72025wd4rnylirH2h+53UePnnt1rSWedVe1KmIL2hnprEtvkf44JfRjIqCDLs8Kl/nHugI4V BIGevvEki325H9u0l7/0FRH6IHnD5Y7NxYP+iJPL0oNRCOP7zaSPIP+wpDjd0Cjz0gWtSDbg04w == X-Received: by 2002:a17:90b:4fcd:b0:381:792d:f993 with SMTP id 98e67ed59e1d1-38dc75d81f1mr9591499a91.17.1783973256235; Mon, 13 Jul 2026 13:07:36 -0700 (PDT) X-Received: by 2002:a17:90b:4fcd:b0:381:792d:f993 with SMTP id 98e67ed59e1d1-38dc75d81f1mr9591478a91.17.1783973255810; Mon, 13 Jul 2026 13:07:35 -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 08/14] semihosting: add ftruncate helper (to be used for hexagon) Date: Mon, 13 Jul 2026 13:07:16 -0700 Message-Id: <8f1099dc944079927f8709ec8156eb76c2c04f63.1783973054.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: XHO8sWcA00BsNmxXO8rQ_Z61tQb3Ir6i X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfX8OuBetH5cwcW tI+OcqaMhz5li6nMxOOqmP1mtgin7by4qhAfcZaFE4dvhKnE8xOlc82DsG9WO0tHJSSgoXBXWcm adbG2/OTjVEJtuuVRUrumipJlA/IdIwoOySHYVQEbBwpi/JcQSgDWWEYSlrV70NcfUW130mIaEl GgJqFPEGrsqVg48hCyt0B9dYZMcl4JYW7J2lkTujhrfEIkjm1hvCcU3eZzafJXmlJi3yLZ3yeKu 9aAKKv97rWx72J4pLyY6rhRcNQMmALoqo1zHk0EN9j3wl446QVg0OV+PGGZv1Z5ptQP+g3cejKF oCLmgG7D4iJNg+Fj9BeFdfz7nDRGXhsEsK+xU2VbXcMRRFwIrfx6PS0ky7oXIyE4AZG2MMsZ++2 91hqNz90qOAYLoJ4QtrP84qdSswV1rq4lHz/SwpliWE3yRopTS65/+qm1trH+lAsf77A/LZjXq7 nSu9s+LU+jCBHgw46rg== X-Authority-Analysis: v=2.4 cv=XonK/1F9 c=1 sm=1 tr=0 ts=6a554589 cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=H7u-uynIU280lupyLLIA:9 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-ORIG-GUID: XHO8sWcA00BsNmxXO8rQ_Z61tQb3Ir6i X-Proofpoint-Spam-Info: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfX10PmXcdKqZVF GsTLmRwpaXTtD8JTPxpeNZ7x/zSxbm3xlHk7Y+sTCu7MzNXTJmyckGATnMxnvaIKa5r5BWSDWvw pJ8yK4/IC+TyYET6qulkEaZIZK2BpBA= 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-13_05,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 clxscore=1015 impostorscore=0 malwarescore=0 priorityscore=1501 adultscore=0 phishscore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607130208 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.180.131; envelope-from=matheus.bernardino@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1783973292613158500 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: Matheus Tavares Bernardino Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier --- 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 20:48:39 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=1783973306; cv=none; d=zohomail.com; s=zohoarc; b=UtZgKWkZvfuIMrdU4KJPAOAUpRvMLkgGRM1CH9uS1jjFyWpeEP3Yk+v/SY4di7nzj2Ov7kavLz+ZieoIQwKXEoTQJllyaZQV/SUWt8duCTkPJtFlkjsu2M9RaP4T88+EQ3hICyl1Qn43VuL9B8OrHHS56H0O9F4WyfA12yjnFYY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783973306; 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=jYCiiKcRpdQH20AltIjtrmRVswxBEeBTUec3foZP/I8=; b=bOBKGCqHg5BBI6yqi7FyoecX9KvyW3NRJ1d7av2mStPHA1luJfi/0zzVf5baGwww1NraxXNek+8jXSCWsuIPS2P69ouTC1glCyzfhABTv9Shci4hmvDGANe31BVlsSU5iIKTy4a40EZgVfyXa0DSWAYNcWbRvms4wpy/33oQ1Gk= 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 1783973306370602.8355031527105; Mon, 13 Jul 2026 13:08:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjMwS-0005kg-ME; Mon, 13 Jul 2026 16:07:52 -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 1wjMwR-0005jx-AV for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:51 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjMwP-0006Rx-Aq for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:51 -0400 Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66DJ9Ygr2356009 for ; Mon, 13 Jul 2026 20:07:38 GMT Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fcwu4tcrc-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 13 Jul 2026 20:07:38 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-37fca5f21b1so288167a91.0 for ; Mon, 13 Jul 2026 13:07:38 -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-313cb804197sm24106543eec.13.2026.07.13.13.07.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 13:07:36 -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=jYCiiKcRpdQ H20AltIjtrmRVswxBEeBTUec3foZP/I8=; b=RL4aUFTdn1VHErPcGdgkAjznJvG zhV2OEVuFVuu6TvUgNPI+Fs23vOy05RMSCN/si4bzAcq0OEFkK6z+tYiGx+iETuh zpqpZ1W4bQoyUOh6O2Rae8ev5FdTnPdyQPgGbtAqR2flmZN0eDJRtoATgAGe9T5f GMy/Cb/14LGTz9NhFfJEZqjjl8+v8cDVhbjLHoba7UBP9MQX79mg6UjVe9zHhoPR 09ziuOG+C0uTq7QIb4Ido+iH4lh0RkK4b5Dqn2EL0F7D7EEb8OUa5vy1tbTV4Kc2 wP1F1Wl/dEnhRQ51FsXZIGBlgesCEwYFGiGQ2Ed/EmN2GR8LlPnH10giOMA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783973257; x=1784578057; 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=jYCiiKcRpdQH20AltIjtrmRVswxBEeBTUec3foZP/I8=; b=PMXGId/+3+TzN/Zm0jfcX/jlcrhoXj9ncUYhLUgTPxuH0DTJXfkp2h2QmR0CbpbKFK vYZ4BVcG1hDggVsqrCFZerjrGsguk75OlID1hzuCRmtf9gc0rTspe+NO3OUta+Nzg5ep 9u6nw79hw0IAf7DIstPslQabzggUc0NtPcK04lHVZQ6NDCraUZr7sunt7PMhXAzhIuCH veNjsxlrgz8leHGrqsBIXST20bilbu45zZLLPG9rU9CMbyLWo++RvJ7CBellZ3ScUpb5 TfGgz7TL8OJBj3AK63z/uHtzRyBCmGMrR2qbhwn8GuOdqlhkQ4XqxkKB1Toc6ohytbRA XfvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783973257; x=1784578057; 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=jYCiiKcRpdQH20AltIjtrmRVswxBEeBTUec3foZP/I8=; b=lPy0ML4fWTEZs8NlgDbpCxSJmEtBFFSNjiVFutF+KPclvv6Ox/d+EinMP1xvvqCQBM YfRQwp/zsrAmP0WDHxOfAR+QGzdxKi9SJpJiEGiL7FcSK+xJUB5gOYuJD0Len/jAJoNZ AT7pUm6KW8SdFM66hwd+KLp8+jR7C27IsdUSaZXL/KnhOp7Fwsu/KYqoSNvCJaZfMeSh TbJHpF5yiYbJJI+3lDQBZm9hgOxjHfW1a9UjVadamBUQSEld4tYh5eHvlyufGU7zCXN0 qWF7PpW8SWB286UgrontM01dcPZvRulgg6n26tZDop267dyBCXfrsbvsqI4Gp4y8pp+U IwEg== X-Gm-Message-State: AOJu0Yx70RK5y6GPq8qetj41gBtgazbpILuvPymZKA/Ulrqv8i0nLAU4 lrVtimKCzKah/j45G58F0icFPrw2t1asRBV5pnEpJOFdQXXJpW+Za3MTUDGloJlCufKNHiFYdKw tuuqqUaggJtfswUnM482Z/ZikdgVISWx/akWPvpcA0rMH8gjnbl4e6Bwflzf52ISvkkw/ X-Gm-Gg: AfdE7cky+sIMLoc+4+qwcJpDoNr3b1ylwHBhh4qyOaTBvdfWo+HSahk8KQJpndXHjqe 3TCLD25ntGs3EMT4wyiSEEgjriEDr5msyD1Pm98mUZdocjnAf6KhngVBEq0lMRZY6zaJS6te5i0 aElY9RXcn3zjVKVpYkAy4884LUqyIRi65jfqc1mIwSUHaRJbwD771Ntm9pjLDQvfMjbQuzP7z7P dWfmzQbeFYmckgegNYXk0A7iPFoQcOThsuyoLtHi36JrXpoDOdlPTVXNOT235MfRL7X+XOun5Y+ VGdYE3pS1oDupTQ6SBzp44Z36IeL4gPCQgxkEJ96KPrhC6byOQ5Zc4RUhHU/leYnvoZkH/fGXp4 Wi5P0SOZJmu0duyE+g7jX+uDtr2zIDzZjsSzwtxfpn5zwYyGmBUaaYt6HGJwwLyN4LgSbz+iN8Q == X-Received: by 2002:a17:90b:5108:b0:385:39ac:fe4b with SMTP id 98e67ed59e1d1-38d15c881d0mr17035075a91.17.1783973257226; Mon, 13 Jul 2026 13:07:37 -0700 (PDT) X-Received: by 2002:a17:90b:5108:b0:385:39ac:fe4b with SMTP id 98e67ed59e1d1-38d15c881d0mr17035056a91.17.1783973256737; Mon, 13 Jul 2026 13:07:36 -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 09/14] target/hexagon: add main arch-specific semihosting operations Date: Mon, 13 Jul 2026 13:07:17 -0700 Message-Id: <45fc870a747a670c26906d18909bc31fe816bd22.1783973054.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-Authority-Analysis: v=2.4 cv=FMErAeos c=1 sm=1 tr=0 ts=6a55458a cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=UwY7kZyrlkj7TMZqf0EA:9 a=mQ_c8vxmzFEMiUWkPHU9:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfX+1jvKfgG/wDe 13/+AgjBqzVo3h5W53xKLEz6Gg1d79FUrI6cdJEWraDHt5WBSD6rV77cLkZpTWsKUr3x13Aqc4B u9+yRucsG29fKU6KzKmN8WUrWDi7OOk= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfX12424cuysCoe UsXZG/mN3GmbrFTP8qwtPge8ZfxtNFUeTMHP6/nutYjrOwOQG9dqxaThXHxULK+Zsw6gjhKpfof zeXRW1vH54B6d4vLsxmoTu73Xu4TFgVsA7WXQo5MBqq/I2cBK6Cja2uZvKXxbN3SWOE6Pxh9QIy xrGlCx2gJ6DAOAdROevxeZMTkSKrhfibH3DjqTMUXPLP42CC3JHEtGDqUY6nxFXjsJdCRBVlzhK MG6mrYMWpRAHqP8pyvwYZapsYcVKfhTeS6QcegDyMVihjc/JZdqXPFf2KDESPeCiPRORoN0GAPN R3DGbqVdXB4gjajVcKVMJPV/KUVB48pUyeBf5MC/+lujmrOTy9292ttse7xAyurvJdH3sSL5d6X 5YyiSCut3eS7YidnP+XWuJqI4Q5qpDKS2JXS0waxiaKhletdyi5D/8E2lCJDN7ar9yfdCo1avhX 8tLTMmRIstuORDaZ3kw== X-Proofpoint-ORIG-GUID: uFs65Mw8NZrAwPwJQfUEa3FPz8RJMc-c X-Proofpoint-GUID: uFs65Mw8NZrAwPwJQfUEa3FPz8RJMc-c 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-13_05,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 adultscore=0 bulkscore=0 malwarescore=0 impostorscore=0 suspectscore=0 priorityscore=1501 phishscore=0 spamscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607130208 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.180.131; envelope-from=matheus.bernardino@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1783973308760158500 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: Matheus Tavares Bernardino Signed-off-by: Brian Cain --- include/semihosting/common-semi.h | 1 + semihosting/arm-compat-semi.c | 2 +- target/hexagon/hexswi.c | 293 +++++++++++++++++++++++++++++- 3 files changed, 294 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 ce9c85ad6aa..2c60e4d9e9f 100644 --- a/target/hexagon/hexswi.c +++ b/target/hexagon/hexswi.c @@ -119,6 +119,14 @@ static void do_preload(CPUHexagonState *env, target_ul= ong swi_info, bool load) hexagon_touch_memory(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; @@ -174,7 +182,290 @@ static void sim_handle_trap0(CPUHexagonState *env) qemu_system_shutdown_request(SHUTDOWN_CAUSE_GUEST_SHUTDOWN); break; =20 - /* TODO: implement other hexagon-specific semihosting calls */ +#ifndef _WIN32 + case HEX_SYS_OPEN: + { + char filename[BUFSIZ]; + target_ulong physicalFilenameAddr; + unsigned int filemode; + int length; + int real_openmode; + int ret, err =3D 0; + int i =3D 0; + static const unsigned int mode_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 + }; + + + hexagon_read_memory(env, swi_info, 4, &physicalFilenameAddr, retad= dr); + 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, physicalFilenameAddr + i, 1, &filenam= e[i], + retaddr); + i++; + } while (filename[i - 1]); + + /* convert ARM ANGEL filemode into host filemode */ + if (filemode < 14) { + real_openmode =3D mode_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 out 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: + { + /* + * 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; + struct stat st_buf; + uint8_t *st_bufptr =3D (uint8_t *)&sys_stat; + int rc, err =3D 0; + char filename[BUFSIZ]; + target_ulong physicalFilenameAddr; + target_ulong statBufferAddr; + hexagon_read_memory(env, swi_info, 4, &physicalFilenameAddr, retad= dr); + + if (what_swi =3D=3D HEX_SYS_STAT) { + int i =3D 0; + do { + hexagon_read_memory(env, physicalFilenameAddr + 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 physicalFilenameAddr; + 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; + 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; + } + 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; + +#endif /* ! _WIN32 */ =20 default: qemu_log_mask(LOG_GUEST_ERROR, --=20 2.37.2 From nobody Sat Jul 25 20:48:39 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=1783973370; cv=none; d=zohomail.com; s=zohoarc; b=YBgSJLVfQL1Y76y5nq+pO5w0RYt7sdEq42nUDZETuZco1Dty9Pa1wxzSOyEDrNleJSqQvrK8Es+BlAm0HKT8fzLBQyEgptbhRJ7PwWRGpFOt7qm/KeP4YYwuRcQQZgjy64mfyT4SqnrIrywN53tahl8tr1g6XGq8KvAqnF56fbU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783973370; 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=Yy8dOIOB+336SIHq6eUNR+XTxPZtumtAG2yz21hK1Sg=; b=Dqb0Gek7afqeLFMLx4UskkL25wP/h3VJXVUwYJpBx6236KYONq+OHY1LbHPS2B33Mj+CX9ATCqZ0PyDdSKJ39ffoNrKwnnvwLK/BtH1G3QkWx8ETx4QwqzCcDJpMgLCmo70Y8bZjf9goziKh19TodNrjaweEj8gbBDVx0Nzj3l4= 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 1783973370758111.82975077343508; Mon, 13 Jul 2026 13:09:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjMwT-0005kp-5v; Mon, 13 Jul 2026 16:07: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 1wjMwS-0005kK-1j for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:52 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjMwQ-0006SD-4q for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:51 -0400 Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66DJ9NuS2256630 for ; Mon, 13 Jul 2026 20:07:39 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 4fcwk9tdx2-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 13 Jul 2026 20:07:39 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-cab041eced3so3458866a12.1 for ; Mon, 13 Jul 2026 13:07:39 -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-313cb804197sm24106543eec.13.2026.07.13.13.07.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 13:07:37 -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=Yy8dOIOB+33 6SIHq6eUNR+XTxPZtumtAG2yz21hK1Sg=; b=T8fDh57Tf0TOwp6DL66RmmPIhIS xSxZpbIJfLgIbBHzQcc2h6dTHSbcn48FHsjWUIqxNfw2Ev+Fx5T96M0qHuwQWA+6 fsIThOigRzqZHZyha8rFoyHab4yuCbFfk4kr+s2/KUbBmcllVT/7gFmq9MibWCkW smKm3XdHdhnfaFUK6IZxu5L5yMQg0tkY3NtM22MlM2FUaF9XxyY6b0HzumP77Uw0 F/dC+hO86RAs9VfR3MrsLaFLJTgHZ/++IwZRyIQfdVDvI3JePnIAzn/pCt1CSgCD ginFaYwx9vWcrdmRZMqsF+Zf/1/iR0/u0aBmTNd9xbgtTAfDpASFbLvMA1Q== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783973258; x=1784578058; 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=Yy8dOIOB+336SIHq6eUNR+XTxPZtumtAG2yz21hK1Sg=; b=a+WCgull6kh47nW0tiRr45kXDWEhEGfqtAloJsMz+sBaQBWtn8KTcnd26rCbXZ3JAf w2dLQBRN32LDPKqjMV0Vg0eoGx1q/M11tt3hdpKMBiVIivzeKJJW1NRRaq692075eL9f oVT77Pgi+QM6jrbsPrTBN48FTjM6csU4YA5RWrZ+0kqyrTYBNpPt1uTnfTxvsc+mYBCk 8iqff8lyQy6C7vVpUjgQhjRp0FsC6LoqrMkcNbqUN9ZiWu3W/wEFOr6MFP2Pa8zDVKMG y5SZ226qSaufi0jTExyW5ToQOYbYumGXl04RFsAChmoh1mD4g/tGP6dvlzbBmE2ytSBJ Wo8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783973258; x=1784578058; 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=Yy8dOIOB+336SIHq6eUNR+XTxPZtumtAG2yz21hK1Sg=; b=QAJhoK0bUt6u199PaZbX+/z9So5VpAwj0v+g3CR4XsaEDU432pCFkQlLBW5cNFGeXt P10dPu1G0SXHAcIouxk3vgmJaTAJIh3iH/D3zLq0cuUexAhy3o5zg++kBVge8qOg8+eh mzWc/eQLC+ZpL01VpRqDBRp1VVEfwmhHNuNWLDI5TVETcpwfFg3YOKxcf/vVR01Pko9E 37wRE7MiC0h8mRUP7VuJAmQfTi57SHPS7ylwBQb4pDdosXrfYB5EwTT6yyYp/TY0EgVh e1/jbtqXkMKgZr+F3NchvZtIxO4TD8VmA3O6wiCPuJ4OUsGcSd7LicYG3SQfkBAXDSGN bTTQ== X-Gm-Message-State: AOJu0YwGCavGqmuolCOUF1FCGSykDTXArel5k5F0CY1DfMrwn4v/ho2r gxqdbtOXs6g0EIugBfswy6eUfS+qTXuooADccKqScZwRf021G1gvC3PRkOzgDO8QOkJRrpPPj1V sCqVGlGRGyvVYdku7DnKCZAMdhD63r+LlWLw6w3az9tYDD8tWiCB9M//Sl6bU4N1XnCX9 X-Gm-Gg: AfdE7ckura4+wsz76mGNb53Ms7KL0DUppYlvyuYXi/+2A9s/OxOtELaznBpZiQaxkU3 7UV0sSwVw95n+juutzyE3n/LsazfPXByNVJZIvRkdVgJo1o3J7eHU2s8ScTpqYwCsWOd3xKjTAs JSdLw2WJ4yhDyJwWJojieqUcP1tbPzBMUbgXMQymRF8/RNPUarBzz/D84ws/KC/1lcP6jJkWIXg KYbsXpmEf2Vv+5wu7yjWhgA9oT5BMAhY8TDEr3tTRb/EPn7Mn4GX9cpuhHkXtwgbL3HHvRvgB3Y 3ck+btqy7MIe3VLPVO3xzcDwKkNLT+qYJ/1pwP2kpV2pY4MaTkac7OeD4rKAgDlggWNFzNahwyQ qew8v7DZK9MbUSSU59/UB8TWvolD4I0Q3178A+0+0T6xrCcMCfk2elZO5DYzyi/iyyuO60UQSoQ == X-Received: by 2002:a17:90b:3903:b0:381:e73:3c2e with SMTP id 98e67ed59e1d1-38dc7758d29mr10010013a91.24.1783973258222; Mon, 13 Jul 2026 13:07:38 -0700 (PDT) X-Received: by 2002:a17:90b:3903:b0:381:e73:3c2e with SMTP id 98e67ed59e1d1-38dc7758d29mr10009979a91.24.1783973257780; Mon, 13 Jul 2026 13:07:37 -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, Matheus Tavares Bernardino Subject: [PATCH 10/14] target/hexagon: add COREDUMP semihosting operation Date: Mon, 13 Jul 2026 13:07:18 -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: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfX/kHee7AO5qMu MLJGJVYc/iFD2d/nc4klOTuex1O1fUMT+oog0NQZVKTI9l5wImT8EYPGJszxdcvI0FQ6T3aza9I 25gA2m6C/jiaQLWiWVMC380Z9GXwCRr6H8PJ1UzWKkigHCtmlTaJYuD1t5RXulpS+xv7jc30YLx PTbGRzHGu3SFhQjXDodblX3yrrbrWNpkwxfEqqVW/3k4tcTBrHJ0h8K/YPZeyxEoOAjedZqifm0 CdPCqbvMk3pVc9mFK6Web054ugxisP27ZprTw6T7E+JToqOVwm8u5xg/TOJjKT272Pi4O2NukN/ LvugAJ9gbYqJVeI8zhYHdcHNYLpwx6CJhnPz5wrOfgvkJBydEawnCXnARNtPKaQuVCXPN3WjTV9 eUY2zvoFPw4nRuRGwUv132CwAOQfZCWLRLWdlnysBLQrydxF6tk/sT9Ckorhtxr5QVcwkJ0DiO7 RU4lik/0dI+FzYQVEsQ== X-Proofpoint-ORIG-GUID: QNrQ7jBGpvuperOUj_xQRg2OhsjHiL2v X-Authority-Analysis: v=2.4 cv=UMHt2ify c=1 sm=1 tr=0 ts=6a55458b 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=yx91gb_oNiZeI1HMLzn7:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=BE4lvaXKYeXNScGiURoA:9 a=bFCP_H2QrGi7Okbo017w:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-GUID: QNrQ7jBGpvuperOUj_xQRg2OhsjHiL2v X-Proofpoint-Spam-Info: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfXxNXBtApU5Rcb hYw6fJbgcgfANlyAZ2BB7rs88igYpdGWpOZWXlFx7H0KeeRDGcQd0P9gmVlTsHB3UJDTiHnATdm lVQSQFZkZJahIyw2YZIPlkD4RgxkRUQ= 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-13_05,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 impostorscore=0 spamscore=0 clxscore=1015 adultscore=0 malwarescore=0 lowpriorityscore=0 phishscore=0 suspectscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607130208 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.180.131; envelope-from=matheus.bernardino@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1783973373020158500 Content-Type: text/plain; charset="utf-8" From: Matheus Tavares Bernardino Baremetal Hexagon programs invoke SYS_COREDUMP (0xCD) through semihosting to dump CPU state on a fatal exception. Implement the handler to decode the SSR cause field and print the full register file, matching hexagon-sim behavior. Signed-off-by: Matheus Tavares Bernardino Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier --- 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 028cfe9edde..8be4097ecdb 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 2c60e4d9e9f..7efd33d3533 100644 --- a/target/hexagon/hexswi.c +++ b/target/hexagon/hexswi.c @@ -127,6 +127,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; @@ -427,6 +566,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 20:48:39 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=1783973321; cv=none; d=zohomail.com; s=zohoarc; b=aNGei5NOzwukYL4Ws50nZkveQIR5HAtOLFQaxOSEULXGLAbALPTprfjhESQcl6xIqKIKXmNtfwDa9p6NAXU7GHb4ho2S3zk5jEv4wcYOcIY8yfSIfNj7S7p9MpES8R7XPGU5uKTyV2rY1AOZNtEdA/YOIBKTGtk7aywQxoc3iI8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783973321; 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=kPouZ7jjqZzFETADMqYWiMlz+iWC6Spoyk2i6x3PjoY=; b=Q1nvrlcb9W7bFrRVRZ8TCDWA8irn1bZULePkU6oi2a13l3umws/OWx0qhtv0xYWGQ07nLT5gbBsw6I+Vk+GI1kihCotOMTk2muPnss8mFq7w3M5Sf+a8pj5XUX1sV3wTbY7fAz84cl8rCy4O48BKLpSspLsYNRElkjeyxT0N0tA= 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 1783973321147115.3325146980419; Mon, 13 Jul 2026 13:08:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjMwU-0005lF-J5; Mon, 13 Jul 2026 16:07:54 -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 1wjMwS-0005ki-TD for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:52 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjMwR-0006SN-6L for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:52 -0400 Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66DJ9QVO2409517 for ; Mon, 13 Jul 2026 20:07:40 GMT Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fcuj030rm-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 13 Jul 2026 20:07:40 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-38e11baa66eso257374a91.2 for ; Mon, 13 Jul 2026 13:07:40 -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-313cb804197sm24106543eec.13.2026.07.13.13.07.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 13:07:38 -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=kPouZ7jjqZz FETADMqYWiMlz+iWC6Spoyk2i6x3PjoY=; b=nm3K7/ZBkJYC4YrrziNB5+H1eOR kQ2+npuvoxO1mwryAZpREG4/mwIlmKG10EBBExlA4t4Oog8Di5FlqHX1kjBpbGtN 778+xQmwzpm4T7QGJgw0W5HbCvWWwsrKQP+eFmZJRyaF0YX3A+q4/zj6KXRagLzD rBfHxvY80bHatxYg168VgVPWqDBXoqTj5oHp2vnzAYUPpfuZO3cEzJvsyJqUHZ+F SDpUBi1Mf3Uxi7VZAvZPlIniHdptkK+5puGjdwcmqK59obTlXzuaTc23NEPCb37O YvcnHMt3F95/+sqHwd1kNGE1KxH/rpzIIVp94E3Cje4TKIHIwbRLO8S3now== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783973259; x=1784578059; 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=kPouZ7jjqZzFETADMqYWiMlz+iWC6Spoyk2i6x3PjoY=; b=UCbBP0rTcrxpMdFatga1yHLoDiGVVBjIgvcYfQ2+f/om2oRgCsfNYpd249AlDpJdDA CybbhKKYCMN5KPmouUc26u62THWBCu3s2O+lHpfhDMq2BKtIoSGC3M3hKyIUPec44Dj+ rLHECsIBCdnvwCAoeziW73r9msCE0hdtfJ4yxQhyGRslyHXeGqwDOAq6jLjQqLHpMAUZ jrg3mPgSKSjCZ6amAyUY9RCs7XWGW/MBcsr+/Kx7Zo4UWWBx2MX3odsvNmD61VEqnLH4 0JLjsxDyCcDleCljuK4YiMA7g4ZY2iBoNIKPlMrQ9XEgHlesi1QrR/kapSaUxwvu01/s 90Sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783973259; x=1784578059; 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=kPouZ7jjqZzFETADMqYWiMlz+iWC6Spoyk2i6x3PjoY=; b=poEEdsDCa+JFt5ttAcxvriY4ZgYN3k5hrk0ZrMeYLld+FhhHL5tTkTv8T7Fpgd9tzP kkWTB719FNZx9PAT0CI69ysAyvYhc+YqVYheGTJo/JzOy2cun88I3JD+fpb6VcZF5I/4 N7Lvyp4eajZ+/3DA3PBh2DwJc5Tl+/fG9pmw5yVQaSDtNHPIh+NcF5bi6p7gDQK4UR2r h6OE1hKYvlOWaw7jLcrYwHRrqWKp7islHeeGzvyE+x8mhD51C9K3eH7KNO4GOfaWh2CA +o6b+xsXkBlATZoxI9ROm8JOgNgT8s25RtdDe1J70Wb26E042lXa4hriVmSC6p8ESk5O Nd6g== X-Gm-Message-State: AOJu0YxbdoXqvZrVqs0Prrd5B7BGIU21iKrcbH8+IATdBNgHFv0Ib72w uB+EbEoRJdCrx6A3oIISaik3CgP70m+/3Jx6LG283QBfH+/ekDsBD2nkBzV4j6QfznYwgT7crhg Jf4OwvBBA8D6tmrfShGUpEdHpZrLNeFWDmd6HME+aejGzMx0ASIUftOwbzLNzxbndyyC4 X-Gm-Gg: AfdE7clrG7H+U5OpYnpu555S9YBxiLsv4aSe/oOfXlMiDISXmMfxOIQnKROK1NkV30w u7rZ6sfXXOA/Lx/NPNupoaQ60J/ZQZ96KdUb9kfTsvTilzY16Zv8j16bR/MC2UqG0Zt6DQI0DTB 3CI4dxRlZ0kh/QrbnQA75DFgU8fJRGzX94t+oBGicZD2Ek/HdBtLwvLr+Z0gmr9VhNtC5RyHbNL wndDlL21CXTMTPIBu/Qo4iMVP7ikrjgd/K3C9QE9v73tnxgMKnxKaXob15fy+/Zi1vL6Px137nM Mp6D/wksw7/QdKyB+5bjxf8SFNs6BcHEaLrwRypJb2ShYuPl0hkKYI5geao4lIzLw8+Pqo8f0yr s90DTry01xqIN5UkjN83thkHjHXn5/Hp1DaCUR0q21Kzj8H/KuJh8aVp1jdZhOnbwK7uuhNnV8g == X-Received: by 2002:a17:90a:d88b:b0:381:528a:808c with SMTP id 98e67ed59e1d1-38dc75e3d4fmr9471495a91.12.1783973259139; Mon, 13 Jul 2026 13:07:39 -0700 (PDT) X-Received: by 2002:a17:90a:d88b:b0:381:528a:808c with SMTP id 98e67ed59e1d1-38dc75e3d4fmr9471473a91.12.1783973258712; Mon, 13 Jul 2026 13:07:38 -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, Matheus Tavares Bernardino Subject: [PATCH 11/14] target/hexagon: add OPEN/READ/CLOSE_DIR semihosting operations Date: Mon, 13 Jul 2026 13:07:19 -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: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfX40uWWM8phKRH 0XTLOpo9Pv5UqO+klglts6QwBvsGD2JxGgiIjpyRqnFP9jxYV29BKnlRF0oNB528g5mwpGPkz1D aqP9LewkyaozaT9BkrWA0Xb71eGVFz4= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfX3pKqHBjboulM FmEaTPjqpE46/0Zoca5eMwWi984U29n9C8uK040YPtKr4JdklB/W0W/RMZcTDGZE35rHeePR9kS 5TcdrRvEr5uj1c65AD1Oc4E2jYU9sA/HWGQoijdkE05+rR6B7yEjFROuDdNrv+njiE/PSsdWn0o cHsYbKEWoJjsFboRN4owkGlsXY4+JBG7i29HHnwN/TI66imnWjEjyVvGsQEqSz7BlZXrjL3R1l6 2wcyjJLTj6iBR9NfSKzCTsTfXCNAMnJ7UfvKN2o38MgHLnNWG/DgS+ADHmusLJkN1FpCRScItgN a/WrkcEONob/sy/lSBEMmmy7nMKOSG1p7mEqY6oD2M0Q3s8n1L41tUZEuY+eqfe8/NfXs8bSyeG e1cUmKi2RS8Op99GHGXBwk1UEujE9c6JHizfoebXMGzD/f/9eCHuWMrr/140NsweQeB1f/1PgOx tVNpLhuOdrYL6tu1cew== X-Proofpoint-ORIG-GUID: soco32gXQsbsNdCAD5_blJQIAHSfkXOM X-Authority-Analysis: v=2.4 cv=DbcnbPtW c=1 sm=1 tr=0 ts=6a55458c cx=c_pps a=RP+M6JBNLl+fLTcSJhASfg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=wKTLz1ccYnAIe_aMEg4A:9 a=iS9zxrgQBfv6-_F4QbHw:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-GUID: soco32gXQsbsNdCAD5_blJQIAHSfkXOM 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-13_05,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 impostorscore=0 malwarescore=0 priorityscore=1501 phishscore=0 suspectscore=0 bulkscore=0 adultscore=0 spamscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607130208 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.180.131; envelope-from=matheus.bernardino@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1783973322458158500 Content-Type: text/plain; charset="utf-8" From: Matheus Tavares Bernardino Baremetal Hexagon programs use semihosting to enumerate host directories via OPENDIR, READDIR, and CLOSEDIR calls. Track open directory handles per-CPU in a GList so that guest index values map back to host DIR pointers across calls. Signed-off-by: Matheus Tavares Bernardino Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier --- target/hexagon/cpu.h | 1 + hw/hexagon/hexagon_dsp.c | 5 +++ hw/hexagon/virt.c | 5 +++ target/hexagon/hexswi.c | 79 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 90 insertions(+) diff --git a/target/hexagon/cpu.h b/target/hexagon/cpu.h index 7694fd91fa8..536843584f4 100644 --- a/target/hexagon/cpu.h +++ b/target/hexagon/cpu.h @@ -144,6 +144,7 @@ typedef struct CPUArchState { uint32_t tlb_lock_count; uint32_t k0_lock_count; uint64_t t_cycle_count; + GList **g_dir_list; #endif uint32_t next_PC; target_ulong new_value_usr; diff --git a/hw/hexagon/hexagon_dsp.c b/hw/hexagon/hexagon_dsp.c index 315733cded3..be47daa0d82 100644 --- a/hw/hexagon/hexagon_dsp.c +++ b/hw/hexagon/hexagon_dsp.c @@ -147,6 +147,7 @@ static void hexagon_common_init(MachineState *machine, = Rev_t rev, =20 for (int i =3D 0; i < machine->smp.cpus; i++) { HexagonCPU *cpu =3D HEXAGON_CPU(object_new(machine->cpu_type)); + CPUHexagonState *env =3D &cpu->env; qemu_register_reset(do_cpu_reset, cpu); =20 /* @@ -156,6 +157,10 @@ static void hexagon_common_init(MachineState *machine,= Rev_t rev, qdev_prop_set_bit(DEVICE(cpu), "start-powered-off", (i !=3D 0)); if (i =3D=3D 0) { hexagon_init_bootstrap(dms, cpu); + env->g_dir_list =3D g_malloc0(sizeof(GList *)); + } else { + CPUHexagonState *env0 =3D cpu_env(qemu_get_cpu(0)); + env->g_dir_list =3D env0->g_dir_list; } object_property_set_link(OBJECT(cpu), "global-regs", OBJECT(glob_regs_dev), &error_fatal); diff --git a/hw/hexagon/virt.c b/hw/hexagon/virt.c index a3638998b87..62100c08277 100644 --- a/hw/hexagon/virt.c +++ b/hw/hexagon/virt.c @@ -283,10 +283,12 @@ static void virt_init(MachineState *ms) cpu0 =3D NULL; for (int i =3D 0; i < ms->smp.cpus; i++) { HexagonCPU *cpu =3D HEXAGON_CPU(object_new(ms->cpu_type)); + CPUHexagonState *env =3D &cpu->env; qemu_register_reset(do_cpu_reset, cpu); =20 if (i =3D=3D 0) { cpu0 =3D DEVICE(cpu); + env->g_dir_list =3D g_malloc0(sizeof(GList *)); if (ms->kernel_filename) { uint64_t entry =3D load_kernel(vms); qdev_prop_set_uint32(cpu0, "exec-start-addr", entry); @@ -294,6 +296,9 @@ static void virt_init(MachineState *ms) uint64_t entry =3D load_bios(vms); qdev_prop_set_uint32(cpu0, "exec-start-addr", entry); } + } else { + CPUHexagonState *env0 =3D cpu_env(qemu_get_cpu(0)); + env->g_dir_list =3D env0->g_dir_list; } qdev_prop_set_uint32(DEVICE(cpu), "htid", i); qdev_prop_set_bit(DEVICE(cpu), "start-powered-off", (i !=3D 0)); diff --git a/target/hexagon/hexswi.c b/target/hexagon/hexswi.c index 7efd33d3533..edadb40bed6 100644 --- a/target/hexagon/hexswi.c +++ b/target/hexagon/hexswi.c @@ -30,6 +30,9 @@ #include "semihosting/guestfd.h" #include "system/runstate.h" =20 +/* We start from 1 as 0 is used to signal an error from opendir() */ +static const int DIR_INDEX_OFFSET =3D 1; + /* non-arm-compatible semihosting calls */ #define HEXAGON_SPECIFIC_SWI_FLAGS \ DEF_SWI_FLAG(OPEN, 0x01) \ @@ -566,6 +569,82 @@ static void sim_handle_trap0(CPUHexagonState *env) } break; =20 + case HEX_SYS_OPENDIR: + { + DIR *dir; + char buf[BUFSIZ]; + int rc =3D 0, err =3D 0; + int i =3D 0; + + do { + hexagon_read_memory(env, swi_info + i, 1, &buf[i], retaddr); + i++; + } while ((i < BUFSIZ) && buf[i - 1]); + + dir =3D opendir(buf); + if (dir !=3D NULL) { + *env->g_dir_list =3D g_list_append(*env->g_dir_list, dir); + rc =3D g_list_index(*env->g_dir_list, dir) + DIR_INDEX_OFFSET; + } else { + err =3D errno; + } + common_semi_cb(cs, rc, rc !=3D 0 ? 0 : err); + break; + } + + case HEX_SYS_READDIR: + { + struct dirent *host_dir_entry =3D NULL; + int dir_index =3D swi_info - DIR_INDEX_OFFSET; + DIR *dir =3D g_list_nth_data(*env->g_dir_list, dir_index); + uint32_t rc =3D 0, err =3D 0; + + if (dir) { + errno =3D 0; + host_dir_entry =3D readdir(dir); + if (host_dir_entry =3D=3D NULL) { + err =3D errno; + } + } else { + err =3D EBADF; + } + + if (host_dir_entry) { + uint32_t guest_dir_entry =3D arch_get_thread_reg(env, HEX_REG_= R02); + hexagon_write_memory(env, guest_dir_entry, 4, host_dir_entry->= d_ino, + retaddr); + for (int i =3D 0; i < sizeof(host_dir_entry->d_name); i++) { + hexagon_write_memory(env, guest_dir_entry + 4 + i, 1, + host_dir_entry->d_name[i], retaddr); + if (!host_dir_entry->d_name[i]) { + break; + } + } + rc =3D guest_dir_entry; + } + common_semi_cb(cs, rc, err); + break; + } + + case HEX_SYS_CLOSEDIR: + { + DIR *dir; + int ret =3D -1, err =3D 0; + int dir_index =3D swi_info - DIR_INDEX_OFFSET; + + dir =3D g_list_nth_data(*env->g_dir_list, dir_index); + if (dir !=3D NULL) { + ret =3D closedir(dir); + if (ret !=3D 0) { + err =3D errno; + } + } else { + err =3D EBADF; + } + common_semi_cb(cs, ret, ret =3D=3D 0 ? 0 : err); + break; + } + case HEX_SYS_COREDUMP: coredump(env); break; --=20 2.37.2 From nobody Sat Jul 25 20:48:39 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=1783973403; cv=none; d=zohomail.com; s=zohoarc; b=YcLEjQUN+MxVjgl0phPJaQXi9CRydPlC6CVNaSACFSBD8rvgXogvn1CA2vPsKNWzN/Yb0KjoyJ5QPN23PiP1+eGzSNvaJheN1b9RgMy3DEqy46GitkyCsIBgt8FxEJWNMC84dgVVqyqFKbBCXYxuGt3kLdwx5zIseiGxaEayKLo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783973403; 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=YG3Zw7TAzJCSNyyFoInQs9SV0Ktc8Bw77k7ZPMPyDA4=; b=dxRf+CW0AbHL/N5+StmroyeUS6XT0BwvhcJxWBeeI+SqfOWFaviOT0bJXbUO9gq2S550r327/XuOoXyLCIAHopR3wswzQqp3ZtpS3kAAm2AtjbW6GoHjbN8/twmsxzXQ81JnVH4AFs36StFOc8uYFccBm9iZny9UaOB6cYhctJE= 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 1783973403401895.4753524711335; Mon, 13 Jul 2026 13:10:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjMwW-0005lt-43; Mon, 13 Jul 2026 16:07:56 -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 1wjMwU-0005l7-0i for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:54 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjMwS-0006Sb-9n for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:53 -0400 Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66DJ9R9W2409605 for ; Mon, 13 Jul 2026 20:07:41 GMT Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fcuj030rq-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 13 Jul 2026 20:07:41 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-384419c6c74so4800663a91.1 for ; Mon, 13 Jul 2026 13:07:41 -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-313cb804197sm24106543eec.13.2026.07.13.13.07.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 13:07:39 -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=YG3Zw7TAzJC SNyyFoInQs9SV0Ktc8Bw77k7ZPMPyDA4=; b=ILDXK0per57vxDL38nHhKTw0anj hdQoaLl4qEvWT/WL0ALEWDGYepw4oxV7xHu9C4jPg1/zslQ1lP2BcGgGye+3lw8S a31nLY+4XzVCIAy7MkuMOxvBb3KFJNGssYImkaLB5WK1LVHhzHZ92POGAXw4HDCZ mZXBSbyOnTwRWriMebu0J9TZIho2rB5jBELJNTKwjV4a34tg52BqPgR4ZaiWmYof XTHf+16mIsb3TWHjv50zQjJNkV6c80BConnDSj1GzH4KyBDvS7vLjjS3uCYMYbLl vxWtpugNbqTkdhnnb5LI9aFmj8+zLF9r3Tn/Gt0oOOsPx5L51DTYbuTbS8Q== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783973260; x=1784578060; 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=YG3Zw7TAzJCSNyyFoInQs9SV0Ktc8Bw77k7ZPMPyDA4=; b=M4rOwCQG0DsJh1e7438oDunXIrY5FxNGkFnT/AggJ/iS/Qd1XRufq7XWHsrry2BDy3 fosUBVl69C4M63G335y+tAPrdA9qIzYVlxlMLK6BdIBnNDKncj9VgCBx8bezTZoMtx6f W9Z88afbvxEH3+bfAiFs+2UUMZmzrtTH2hz31CNGwJM+95THFv4GhRZ1YQdmJaMmrs6P x2qrXpo6vA1FN06wKq+QWd9mkOhc95xOZwCkIaP25ZfuPEC+Akxzu/3/OIhluFrXOUbK G3/Bajqt5s8UHLzNgCScMjTqYsrurvmh/Zr+9R9bWdY7cDDwOr6KuOMr4B+1g4cyB3mP vtYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783973260; x=1784578060; 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=YG3Zw7TAzJCSNyyFoInQs9SV0Ktc8Bw77k7ZPMPyDA4=; b=jvZcZRCsSxVAJhwdWZaVIZJE4EIt5EKBJi3LHLsRxt2QxihLE0MHVDBpmPk4wyXMoe ebJHPZ0pGbiQ0Awy/BSXx1etuO/iJN4JpFYioDsxE2+I0jrjb3y6BitvWDrLm/JFJwMY FcpvlKJ89jKZU+NF5lPhnaUUXM1pnwrsW4T4F/2iEaCqh1BcyOp0ZnhCvpkRG/x67f6c AYo7Qf1EbYQbTALqlE9SVxvPU1OHyGCj9YI8ch3Ltls39onW8sDn7jIRMfVPhBgrTD5h TndM9tnOJO+RC9rrqpXLWpXIIGTgT4hTrBrNrHInG0seMN7fznCFiPl3yccJpADrWAEu YXOg== X-Gm-Message-State: AOJu0Yx0vG+Z1M96G8Mh6gzPtTLWG/OQn9+AISYgBEQVsYfZPymlWf8z erL8d4hH3avc6fMzHbPoe9DCocyXcI/rJWVVKRw0JP5Xb6pgPqyFHG9ttxctRVrKsufT/YeSIdK di6Myh3AP9RBttaA58G2uyEcLM0EtOGagfR3kSr71WjDW2b0LWepEmD/dJhaEkr0eEpse X-Gm-Gg: AfdE7cksi6UacVFgUL+G1xtn9RCKUXoNPsunmzGj/85cTqcIL7nBPISPnMAEHJgRbgO tW/3LaE2ILWHZnQyhQvNhz6OyGuoGNPyZyw/byYvfJxSjO5NpFEgmA7TBdmfK5Lb/eyAHCUBuiF 6dFfbBptYhq1QyLe9LGsKFrzqG2stQWC9rpcAVTuEIv2/BpznrJspVgRcvAyutcFyE3s8kvvMAU L9tF2M+/PoTenVoge4KqlTDZllBTvGtMEF/OTo0gzdl4oSJysC8/Ebu75stSxEjORGjR1VpF5eN s8cWMIlmzwTzsboL7TlksicVWUdf6k2Sj36CcRucUIXmkCDC0k6DnsTHEaLJGgXn+vb9XLhZ053 F/bPZVmNE0TS0lrrJjwpGRpbkcSH0IXfTFcf086UoSnzcjo2fopH+wjkmhWur8VujVrYxHAkfJA == X-Received: by 2002:a17:90b:2c83:b0:380:f34a:6ff1 with SMTP id 98e67ed59e1d1-38dc75eb657mr9291467a91.17.1783973260381; Mon, 13 Jul 2026 13:07:40 -0700 (PDT) X-Received: by 2002:a17:90b:2c83:b0:380:f34a:6ff1 with SMTP id 98e67ed59e1d1-38dc75eb657mr9291435a91.17.1783973259870; Mon, 13 Jul 2026 13:07:39 -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 12/14] target/hexagon: Add an errno mapping Date: Mon, 13 Jul 2026 13:07:20 -0700 Message-Id: <60a8f2decf0af0581a82f95edc0f58c5420042f6.1783973054.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: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfXwy/iYqx7DHR3 zXm775Wr9OZcNQEfumczy04/JX6BT1j+o6ZuYYuvHcqE9rdV3LtvlTEtRU9i61L61fJj5tIS83y TZiDu+l4c2DpDMXMDos5jezoCKO1LNc= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfX2zlRvif2v5et A0Q41s0BFFsLn/7s4E64MTneE/CM9q6KMyqVo9x8bBrxJ5OvSKAGcIhXH7AHs4BvnilkpshjP3X RGKjwFxZyfY2Qb3F8ZGPR5woJLNVIVO+NNcAS3Sf0Vx0DdJGkYozmw9UZ2ngxVOAMZIs6HPiKaA W4fqgx0+/5YPc4+bB+EWpI8EqC1zqLd/xgqkc0Bga2AVCqNJd17xMOeuO5JcgOXfsjAFlbRSK1I V1N+rtOHg6kTCPMj1cUU5cXDUTVptt64hGoe/E8NBOvoiywfuVktafuAc91kEEljQbE0zKGmjNI 7qlC48P032Bbyn2djAGE5NAGhkREqeVQVMiVn8rskIIZ0SLzCf4eeIcDZ9DyeB+fm8Y07OsOPd2 TQ1Zh2R7u1wGRo8as/rFsnraAuCQj1nOI090mL+2MWl6tqsuvF9C+V+IRBxK7N49NxXPw//1GZB v3B+h9KzHgpX6XmxhbQ== X-Proofpoint-ORIG-GUID: nV4fZ8lkj51Tr06_jo4VZL4msgtrLmSn X-Authority-Analysis: v=2.4 cv=DbcnbPtW c=1 sm=1 tr=0 ts=6a55458d cx=c_pps a=RP+M6JBNLl+fLTcSJhASfg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=PHjQTd04LRaCaomXAJMA:9 a=iS9zxrgQBfv6-_F4QbHw:22 X-Proofpoint-GUID: nV4fZ8lkj51Tr06_jo4VZL4msgtrLmSn 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-13_05,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 impostorscore=0 malwarescore=0 priorityscore=1501 phishscore=0 suspectscore=0 bulkscore=0 adultscore=0 spamscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607130208 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.180.131; envelope-from=matheus.bernardino@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1783973405068158500 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 Signed-off-by: Matheus Tavares Bernardino Reviewed-by: Pierrick Bouvier --- target/hexagon/hexswi.c | 81 +++++++++++++++++++++++++++++++++-------- 1 file changed, 66 insertions(+), 15 deletions(-) diff --git a/target/hexagon/hexswi.c b/target/hexagon/hexswi.c index edadb40bed6..81fe3d5046d 100644 --- a/target/hexagon/hexswi.c +++ b/target/hexagon/hexswi.c @@ -122,12 +122,63 @@ static void do_preload(CPUHexagonState *env, target_u= long swi_info, bool load) hexagon_touch_memory(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) @@ -360,7 +411,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 @@ -377,7 +428,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 @@ -396,7 +447,7 @@ static void sim_handle_trap0(CPUHexagonState *env) ret =3D guestfd; } } - common_semi_cb(cs, ret, err); + semi_cb(cs, ret, err); } break; =20 @@ -415,7 +466,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 @@ -496,7 +547,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 @@ -506,7 +557,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 @@ -530,7 +581,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 @@ -558,14 +609,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 @@ -588,7 +639,7 @@ static void sim_handle_trap0(CPUHexagonState *env) } else { err =3D errno; } - common_semi_cb(cs, rc, rc !=3D 0 ? 0 : err); + semi_cb(cs, rc, rc !=3D 0 ? 0 : err); break; } =20 @@ -622,7 +673,7 @@ static void sim_handle_trap0(CPUHexagonState *env) } rc =3D guest_dir_entry; } - common_semi_cb(cs, rc, err); + semi_cb(cs, rc, err); break; } =20 @@ -641,7 +692,7 @@ static void sim_handle_trap0(CPUHexagonState *env) } else { err =3D EBADF; } - common_semi_cb(cs, ret, ret =3D=3D 0 ? 0 : err); + semi_cb(cs, ret, ret =3D=3D 0 ? 0 : err); break; } =20 @@ -680,7 +731,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", @@ -693,7 +744,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 20:48:39 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=1783973345; cv=none; d=zohomail.com; s=zohoarc; b=BJmHZet2vukbpHX5eugjTEx3wNjFEOeSFrkE9uMQhfBsB51Bmq66kVdnee9sdUT2m/0A8VI5u58R1sEHWEvKERJYjtotULS4v6SrSRG2oeroEi2CP5G4o0W1vRp5pRCkGcqILokT78UZiK+vWQtfbGuC6WD0H8yCT93v6rpBJCw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783973345; 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=FrqABwceldd9k7KFygIJuTNC7prlCBF8KUlijNOImFU=; b=mTfmWsprfmdd1GFSQL5eixRIT7E0bmjrlJDcAlb6FTJUr9voOjH8rySWiLEOGbWsxtIhACRKboQNUDmHa58gHxUijFj8yrfsQWJ5vRR9YXSx2mSNO5MsbqCybHzIRxRGzD690hEJJC6ynpn8ZEn3sPjfP0GkEy8H2RzaXT205T4= 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 17839733456731008.1115993479318; Mon, 13 Jul 2026 13:09:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjMwW-0005mT-JR; Mon, 13 Jul 2026 16:07:56 -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 1wjMwU-0005lG-MD for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:54 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjMwT-0006Sp-93 for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:54 -0400 Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66DJ9Hjm2470641 for ; Mon, 13 Jul 2026 20:07:42 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 4fd44jrmf5-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 13 Jul 2026 20:07:42 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-c88e0d11a3fso169121a12.0 for ; Mon, 13 Jul 2026 13:07:42 -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-313cb804197sm24106543eec.13.2026.07.13.13.07.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 13:07:40 -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=FrqABwceldd 9k7KFygIJuTNC7prlCBF8KUlijNOImFU=; b=U4dFjO7WWVYyY5pR1XIEyR/TUKk 370Rc3myxK1gadcCFcZVqAyfITCm8EZ4jPYkjs7Ii95eyx1oXypFiTZ6rredb+Em NhNiatRev318b7a2h6yTPkHjKTUDjrTkP8K+xGXtQePAezK2OqtbpPs8mq+19ToL UtUveINwBfitNYpGIALuXc9n5kTCptMXVYqssDMdmxYs2RKM6+cldUF1+TRiS3Pc UqojWNwJcPHpexrvNQ3akj7/YyLnmkpdptMYhm89Q7ayCgJrpWkT5/KBEUqoIlvA XDYCsOdHR1zBEpeVllbdXqnfddjRqgGjLBXANaBYF55y0nqiSEnrwndrEDw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783973261; x=1784578061; 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=FrqABwceldd9k7KFygIJuTNC7prlCBF8KUlijNOImFU=; b=g7rlT0VtjbwGJtUt+CubePJiFpAofV3uRUpzkf8AXL1+V03g4A34uM0tfXrq6p3/W6 to0aS9DA9MOtUZnTHBm9X8Xld9cx+2dmw8j81gvNV4uHJr5HzwbiS3TEobPiT3XPf8ER EbPYUK8Hd5/3RMwRpyyY2H4wGBbW2vXhxAhwmko8oABKEy6v0y/8twxOMqrhsktE5Jfa akBRusy2uUXvVlLzPl9tNMJ0qxsnV7BICTSh4aWXgqMcPWkxavw+W0T6Qwn4fXivQGkF H2Gyi9zSe1TXqutbPMZzcqetL0oKD5SkWiD59KP5V0SnFv8Pz+lYRFVP98usWcT8w3bZ BOrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783973261; x=1784578061; 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=FrqABwceldd9k7KFygIJuTNC7prlCBF8KUlijNOImFU=; b=EnwFcvmq+9PwdJMN2YsCGDC2J+8FkvhnYgDrUoqvcQ/wlIe4cZBwDLuAj0RRHixu1w yAlLkXBkMB/2B/CAgwpY1z65WeEaGe0mA9iqvaTdDqIhjVjArKKr3vRDRZBUtpGQ3aQ0 CcjRw/y4KlhccrY3GuwBIHR09EzggFiOg4EeTm8XfSa0zpNDNkRd3YDNMfT9w9U5hO9Y O+sN4/C/SsSfEzyWPGz3pEnEM0EpV4YepgvAlLYieoFftcXFLv/mN6vpwQ6UDT1vbLnz 3aG1pNivd2maDVLH9gWpQIsUdHJd7618pz4FBgvmvgss5ms45OpWi7Wq6WvHOuD+95WA yfug== X-Gm-Message-State: AOJu0YwFXUIqic4IK0w0QmO6TxM3tN1oTvPEFsqx/cOaHwMK1NvMtSHt oaEtOKLKU74duVtMY1WbhYtxWxz0KcrVxwCfdwF76OyVLoMy6yq16+bDkFg/DE4c8ORlG/110zF LfzsqrR230FGabExAhra8mjOIXsypj0nqC9UFE6Z2seTAkNflk8PYE6Ai2V1Y0qCySGB9 X-Gm-Gg: AfdE7cmKEA17IrNb+BAwoE1wOnlHhKMC9aaKJ81kW4u7kfVcfRO5pV4tpuikJcgMtwT Jhx2JW0qxnA6M312keZ+6766CFWSU8XGeGhDDDniTmwmRpInh+sTritCTGdRToqqgCYD62JlSPb E68q/zDub/RGV7hmZA/8RuMuvKk3B3V9chaKwRxW3S94fFQF+EhPJ9wR4UHr1zroiEJ9Cr5Bxo2 XnoRV4H6USa7ZnDgUaq4djHGwjoQl7IzNrRpj+tM3anSP0zWjBsIJzCRdNZMrAyCqYsGDzXNgMx e0v1lEitlpAUZY8xYGDRd5etVwm+W9AjDWXeYcfhzg/iBP3IJRxVNJiDk1igaVWOyN7SuOVXhOg jtBHx1wL6rlEAHgnSlw3xOceYHaRlBOwCG3PDBsyulPwJbrjuK7JupSLDYinMnpvfty7n6lNsDQ == X-Received: by 2002:a17:90b:54c4:b0:37d:f7fe:4bbc with SMTP id 98e67ed59e1d1-38dc7779e2bmr10121682a91.21.1783973261392; Mon, 13 Jul 2026 13:07:41 -0700 (PDT) X-Received: by 2002:a17:90b:54c4:b0:37d:f7fe:4bbc with SMTP id 98e67ed59e1d1-38dc7779e2bmr10121654a91.21.1783973261002; Mon, 13 Jul 2026 13:07:41 -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 13/14] python/machine: support routing semihosting output to the test console Date: Mon, 13 Jul 2026 13:07:21 -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-GUID: RCGRrUrSSwle9jVJlJqSlPsxUEcxgZOi X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfXyhJ86qj7GjT2 QxWeKbfbVxhUOWy1rLq+/ZfeDZe9Mit4fr1UjgFW66aY1C8iVXWiHFW34rXzD69Jz9uENuW7yKr Gc1T97TQnZTHlNSkRcz4jRhcqp6ks5qSEYV1Fp+LBGXqTgyDlwSRxFRcXDQYgtNEh1w6RNooQsB ye4pgyDLWtk+DPPStTmCv1I0EwhN1s8KFpj8nlhsGFm9t8tw2nWmnM/RmH0y3VCpZMQzTTXePBY 6V4yjf9yTcmmGlpnMwZaEz+FmRLxZWcWuvq3ElFSu1E2gex+APNkONa4vDr1UwXmlgantI4TA+Z CYJN4Tlu/MZbcsDCbHT5PlTZo5/7VYJ2FPgkc2xhlRN2wtIT1WiywPW21qhkrgaZK4cOJTHRDPH yr5ofjJfXburn/OC/eCfkx0IS84sTIiyXa5VLnCaBy4+6bevuMbYMExXVWdADXQ+fm06ECOKKBN vmFH8M7adOtmfHRnzCw== X-Authority-Analysis: v=2.4 cv=XonK/1F9 c=1 sm=1 tr=0 ts=6a55458e 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=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=3vhqsrBKo-Q0muh1UiUA:9 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-ORIG-GUID: RCGRrUrSSwle9jVJlJqSlPsxUEcxgZOi X-Proofpoint-Spam-Info: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfX2M3ztfatPYR7 yKuSVJbIwh7Mgk+vio5XWLTrErUeTYrQ+7pV/l3QasnUjtOZP5Iu3Vr6lSaaiiaeYfjBbHVwVi9 NpBACCUIVXB/bNKrUR3jFWzYILTpEkI= 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-13_05,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 clxscore=1015 impostorscore=0 malwarescore=0 priorityscore=1501 adultscore=0 phishscore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607130208 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.180.131; envelope-from=matheus.bernardino@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1783973346723158500 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 Signed-off-by: Matheus Tavares Bernardino Reviewed-by: Pierrick Bouvier --- 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 20:48:39 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=1783973370; cv=none; d=zohomail.com; s=zohoarc; b=FGD3A/as4q+Mz5V0WRAbH8tcarraXTe7zk8CHZdkHzl2GWFWNNRL30D6G3bFnOQpeAhHiHgFu/PFnQI9BbTlrR2s6yjK7/k/DY56/BEd9gsHrC7yAYwF4LODzMNA/V69MCu02DzlEXHOKAcjmGefU3r7HxoNgBUb1Gi2brNpqnA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783973370; 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=oy22ab/xlCeat2wkPKsuZ5LNgXAzntyzHrFtr8M6THM=; b=TFivIYiq5kBl5TlrvT0MdufWyaQCV5FbpiTHJiCX6gu+Jkb8/2jMseYcKwxDhJ4GH9CyRpy5xamGxDu6O1grldK8MMNAO0p2vPVAeVQ0ePTlmduIy955cwbvbdhoLhZ3uuu0XoSGNjS1fG2YVlclFvAVHIvJb9IGRGVNOkxeMmY= 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 1783973370924459.1629079590716; Mon, 13 Jul 2026 13:09:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjMwY-0005mx-0c; Mon, 13 Jul 2026 16:07:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjMwW-0005m8-8F for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:56 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjMwU-0006Sv-Bx for qemu-devel@nongnu.org; Mon, 13 Jul 2026 16:07:55 -0400 Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66DJ9GJj2470611 for ; Mon, 13 Jul 2026 20:07:43 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 4fd44jrmf9-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 13 Jul 2026 20:07:43 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-c890bac374eso9022970a12.1 for ; Mon, 13 Jul 2026 13:07:43 -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-313cb804197sm24106543eec.13.2026.07.13.13.07.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 13:07:41 -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=oy22ab/xlCe at2wkPKsuZ5LNgXAzntyzHrFtr8M6THM=; b=lISCpM/ckY7zzdNFWhxLy4lbDV5 79cyJ8OhW7l3yi7DNpcyINziQ8hxmAnZTlz0r7Sr7KE6kmiNQpVLgNwAaGvPwbL2 yc8ziHoaArNJh4Lr3iIHilQc9shYN4bm0l2dQlg5EUsFjwIpck0oFVlnT2RvvmLN xtpkL5uDuL4HpokmewT3VnRzA6vhwPb/ixFuUJb8exl49NxNjtPTiAupYXqFvwH+ hThgPaJGMSVfuFsiVDEg2FZyQY2kqBuCvKaudenPNpIMHYQsUme7/J/kjbH8ue7T yT/5873G+PjHM7qe0Ef0TzH0s+gLOChvO7+BR9J/EnJrnjLLdFpI1gOTBRg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783973262; x=1784578062; 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=oy22ab/xlCeat2wkPKsuZ5LNgXAzntyzHrFtr8M6THM=; b=XDCJVvZis2us+QDd+Y6h73qyNnL62yP2IvZc7n9/kabe/QKv6aniEo47aBj/EKBadV 0W572Al+ykr66XJJa8vgg7I40486zLPFDadxS/KgRl+YuAIvVe/FTtmuULRrOTS43BmY 2qn7E33ASSm81NZFzS7KTozLWF8X4UDY+6JW1kasTbYOwyvq65LhhjarFJC4xcknoZnh xDA5KMWzro/w+KSpN1Mq3xZyQYSIdI3x9F/XOE+qVSr8u3ZZvOUyHS7bn8pE7mllR909 59TQ0tfpcOTFXjFlHZhz8Fy6WhJejrBtMSeDMu/4pyJYBuVI3rjY0g31fRlACTLra+Ea 8/Lw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783973262; x=1784578062; 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=oy22ab/xlCeat2wkPKsuZ5LNgXAzntyzHrFtr8M6THM=; b=VLFardiz/RAYRmFEFJ83sf2zi64fBcGeVA0LldBsmGjNCnwDtwGNpamF3nwBED3ObV ljSlv0oMUIJu/7igePyw7gCCU6+ZIwLfI/OpGNJK/STJZa3OIhp2o0KCrhaqbrgJ8UQK 0si/6abInM7Wj637jXAq8DxX1JAkRFFGJQm2JyMNb17xndkcs91AfA1Dy69FC0/0tdQY 6QFUJHzBxnueouCGnBATsZToWoGxiy5SvrdH1GrEPX8wLCjaEer9+CL3GtIkdLAlQp6s WFFCHCcn5AzYyoZu9nDJLq+agspCyBfzzyM7d6Lu6WgU53uW3eJjhgQnVFNYpkHmRtxR k5vg== X-Gm-Message-State: AOJu0YwbPgjxtgpc1Knsi2Jb2p9YLLqEyFp9e79GLAei5HuDqLMhjhLR rIesQfuFfRFtnv6NWcacEPOLTMW7zUR5mEVzlI7FCh8K2TwBGCwk1a5cG8i13ioyz+LUPGCZo4J 9tBI44MCAY8a2O0OZ7otZz+0wfua1f3DjrpVjEC9hMX9vo2fmF8GsDY6vRKIRc/I1iG6d X-Gm-Gg: AfdE7ckCCPD3KWHBczmZ1QWahUYw/3LEfc1z8CdM1zyapOyt3gHjGuW65pf98BUZEE6 oAm1B7sODf1kOR6Tnrus8CSAnDEjkrDIuVeQyK1c+NRAx6X6mkUQC89Di/+7IyrG9JOmEaX85qN 7Mq3WzD0oNwgs/c38+ra9Vg0of4VzeDK1CLEtkqt592KOL2RdpcWycy/rM+Z2mP5f7cPF4Ep7sq EBzgYTwSUmdxr9ciVe9GCWnB2YFibPfJXsDMz1IF4FwOFDKF1RzBL2Qs+oG3aZaEesd2qLHgBwz wkC6TCUf/T/G0ziiMJ9Ffz6hUVP+qfB2F1HSQHbtvvHSNEyNkjiYbGqJOlcXVS1xMRSzaH42AqF ReY//IdwtXkQdZ3VVT6wYxRgPdip6CZ3poHXw3u1zlTq+NGWzWK5PCEge9cdsrgwDBFh4IVN68g == X-Received: by 2002:a17:90b:3947:b0:38d:e28e:a639 with SMTP id 98e67ed59e1d1-38de28ec303mr6457042a91.24.1783973262500; Mon, 13 Jul 2026 13:07:42 -0700 (PDT) X-Received: by 2002:a17:90b:3947:b0:38d:e28e:a639 with SMTP id 98e67ed59e1d1-38de28ec303mr6457023a91.24.1783973262043; Mon, 13 Jul 2026 13:07:42 -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, Thomas Huth , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Subject: [PATCH 14/14] tests/functional: Add hexagon semihosting systests Date: Mon, 13 Jul 2026 13:07:22 -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-GUID: qZcxUOwxVwp7oTWXWQic1WbAk1ubIN1H X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfX5MSBd5XQmMk/ a+raieVZZtd5tUQ/Vx/kGr96pIBDJK/lB+qKqCyGSqnsP5WSIFDvCErIotC/52bj6j9MOQLe4E2 g0nyIYlFLW829cylGSiTYuSJltsNfYo3jSPtmqNzb8sDhVBRPF7qgAdzmZUBVdhgIMWTdmsEk+u 0jpET+srPV0kZ5AHBqnGjCUF9VeXrmmasfz62C0HWkCxvIBKGcGKoEynYEKd2FzLN+rKtyB1JBo EZJNlHqVEknuwIv9JyroxREwPPLJ5vMzLthg5UBKO4XDy/fTdNK0Ig7Zh8FQ2Cve2pHRQfGmxRz 5QzzaZmxlkJgUpm3oNU244rAI1hq6CqE6jU0Syog95fupNdKYh84uKm6xUp7ToGsQS2/P491HnI FqCR4an970SFm5h7+A+Fpa6rN98bDKA9eMn+EVroyf1fV+EROgnjGDbgfKhMVpP4FkTH5Dlw7VR iGXG3yqHGY3QrwpsQPw== X-Authority-Analysis: v=2.4 cv=XonK/1F9 c=1 sm=1 tr=0 ts=6a55458f 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=_glEPmIy2e8OvE2BGh3C:22 a=5vFef2XoAAAA:20 a=EUspDBNiAAAA:8 a=VJmjIbDfMbkIIiVV3KYA:9 a=_Vgx9l1VpLgwpw_dHYaR:22 a=bA3UWDv6hWIuX7UZL3qL:22 X-Proofpoint-ORIG-GUID: qZcxUOwxVwp7oTWXWQic1WbAk1ubIN1H X-Proofpoint-Spam-Info: AW1haW4tMjYwNzEzMDIwOCBTYWx0ZWRfX++CwaN2O51Z4 5U2dSP6uQYYKbSTMpuk23peAQH3Y+30TSZI3ikLSC0prdEtUJaStldeBjvokMGUe1TziRcOJgZB o5Ioy2WgIF35OEiWHrnhRg5h+k65O4Q= 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-13_05,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 clxscore=1015 impostorscore=0 malwarescore=0 priorityscore=1501 adultscore=0 phishscore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607130208 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.180.131; envelope-from=matheus.bernardino@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1783973373008158500 Content-Type: text/plain; charset="utf-8" From: Brian Cain Signed-off-by: Brian Cain Signed-off-by: Matheus Tavares Bernardino Reviewed-by: Pierrick Bouvier --- tests/functional/hexagon/meson.build | 9 ++ tests/functional/hexagon/test_systests.py | 133 ++++++++++++++++++++++ tests/functional/meson.build | 1 + 3 files changed, 143 insertions(+) create mode 100644 tests/functional/hexagon/meson.build create mode 100644 tests/functional/hexagon/test_systests.py diff --git a/tests/functional/hexagon/meson.build b/tests/functional/hexago= n/meson.build new file mode 100644 index 00000000000..6cd684b0df7 --- /dev/null +++ b/tests/functional/hexagon/meson.build @@ -0,0 +1,9 @@ +# SPDX-License-Identifier: GPL-2.0-or-later + +test_hexagon_timeouts =3D { + 'systests': 180, +} + +tests_hexagon_system_thorough =3D [ + 'systests', +] diff --git a/tests/functional/hexagon/test_systests.py b/tests/functional/h= exagon/test_systests.py new file mode 100644 index 00000000000..b20b9fc56cc --- /dev/null +++ b/tests/functional/hexagon/test_systests.py @@ -0,0 +1,133 @@ +#!/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 os.path.join( + "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.9/systests_standalone.tar.gz", + "db961ea3fcc389b478b3d5c2f3bac60bec87e7f3d7efef5e58a9ae8ee78d0e40", + ) + + def setUp(self): + super().setUp() + self.archive_extract(self.ASSET_TARBALL) + self.bin_dir =3D os.path.join(self.workdir, _TARBALL_BIN_PATH) + self._orig_cwd =3D os.getcwd() + os.chdir(self.workdir) + self.addCleanup(os.chdir, self._orig_cwd) + + def tearDown(self): + if hasattr(self, "_orig_cwd"): + os.chdir(self._orig_cwd) + super().tearDown() + + def binary(self, name): + """Return the full path to binary *name* inside bin_dir.""" + return os.path.join(self.bin_dir, name) + + 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.""" + with open(os.path.join(self.workdir, "dummy.so"), "w") as f: + f.write("valid\n") + self.run_exit_zero("fopen", "-append", "dummy.so") + + def test_ftrunc(self): + """ftrunc truncates _testfile_ftrunc from 6 bytes to 1 byte.""" + ftrunc_path =3D os.path.join(self.workdir, "_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") + self.assertEqual( + os.path.getsize(ftrunc_path), + 1, + "_testfile_ftrunc should be 1 byte after ftrunc", + ) + + def test_dirent(self): + """dirent lists a directory passed via --append; output must be + '. .. fileA fileB'.""" + dirent_dir =3D os.path.join(self.workdir, "_dirent_testdir") + os.makedirs(dirent_dir, exist_ok=3DTrue) + open(os.path.join(dirent_dir, "fileA"), "w").close() + open(os.path.join(dirent_dir, "fileB"), "w").close() + self.run_console_pattern( + "dirent", ". .. fileA fileB", "-append", "_dirent_testdir" + ) + + def test_access(self): + """access checks R_OK|W_OK on _testfile_access.""" + with open(os.path.join(self.workdir, "_testfile_access"), "w") as = f: + f.write("valid\n") + self.run_exit_zero("access") + + def test_semihost(self): + semihost_dir =3D os.path.join(self.workdir, "_semihost_dir") + os.makedirs(semihost_dir, exist_ok=3DTrue) + open(os.path.join(semihost_dir, "fileA"), "w").close() + open(os.path.join(semihost_dir, "fileB"), "w").close() + self.run_console_pattern("semihost", "PASS", "-append", "arg1", "a= rg2") + +if __name__ =3D=3D "__main__": + QemuSystemTest.main() diff --git a/tests/functional/meson.build b/tests/functional/meson.build index c158197c4b7..c7362dd00ef 100644 --- a/tests/functional/meson.build +++ b/tests/functional/meson.build @@ -14,6 +14,7 @@ subdir('aarch64') subdir('alpha') subdir('arm') subdir('avr') +subdir('hexagon') subdir('hppa') subdir('i386') subdir('loongarch64') --=20 2.37.2