From nobody Sat Sep 26 21:35:35 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=1787587138; cv=none; d=zohomail.com; s=zohoarc; b=TxywnPKdGs0qRZfIec+nNc/OynMe008r/pKdtChNo0qEkgfLFBrrR8o707LHIiSPz3FddMZruNVJe5aRoIIxVvwuov32iwtLoB11AFgK19Unwb7N3w0rLE702eOaoP98l7O+9q37ndkEaGYj9iONnlv8PF09iiystrztPaTNzHo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787587138; 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=7E1UnthV/su2TSgv9f4eQlHMCEu4/TPOkROxWe+ZpM0=; b=APp/SuQmBcAuvVCZKgo/i5S5xGMm8fje91nqvbs/rCFtVn58aRH6lkIIokH5Zoq9USmQs6b4mQqCY/2lh2efdmYhKcBgxwZMHCmNadoQKwdVcyV28tgX/Y+RiCDXMojcMaJW7xkJmnLd3L7vEihMzJiJwSAzjHUINrZhy/hUf3Q= 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 1787587138693243.03447376982888; Mon, 24 Aug 2026 08:58:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wyX4L-00058a-Tf; Mon, 24 Aug 2026 11:58:42 -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 1wyX4F-00055p-79 for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58: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 1wyX4B-0001jF-S5 for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58:34 -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 67OFn1gw2261384 for ; Mon, 24 Aug 2026 15:58:28 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 4g8huf22jh-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 24 Aug 2026 15:58:28 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-388b404eaa4so5723081a91.0 for ; Mon, 24 Aug 2026 08:58:28 -0700 (PDT) Received: from hu-mathbern-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14186183c0esm41152935c88.12.2026.08.24.08.58.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 08:58:26 -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=7E1UnthV/su 2TSgv9f4eQlHMCEu4/TPOkROxWe+ZpM0=; b=l9A23p2zS+2haGzmR1XKqUGqKS3 Z3PU4fw9aKxoKRinoljwfFC3j17XMVowsm0IBSnEeMbr1twf9luC0Y51lZUypYiR ui9yGtGakrMKmozCFCPHVhBeuVJQOZrFiAaIlLstV0HLDflENR9E7MWnte7SRzG6 NbbuwU0QqZgK/SEfeB9yHTsnTvHOEpzcGa0w63FfmIxkaCVWQPm7dMdVmK1WkBbS fudIsMq4ri3KZFHetJ7LlZU8gkZRHJr9pUST29U2GyR2s+iqIgSCwFff1j4/A6P7 7H+s2rQh39xEDXf/26QUuo7/DTVp0qbbvE83Qw4k/3HKU8mo+An376vGT8A== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787587107; x=1788191907; 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=7E1UnthV/su2TSgv9f4eQlHMCEu4/TPOkROxWe+ZpM0=; b=X8JLJVecGCap5wZwdM5kaU29LE2TgSvV5OUXmy6qzBzLTOEtLiLW8+ixBNpwXbjf09 +DfOGt2vbwlD28fMN44oka3CF7/LBbI/9vVImi0y6eBso1udPhUrCKC0b8fE584/T9vj yLH8ueWtBW4/SmPRioIOAOOV/QU5kUqyOflvqu4pAi0BgxGu+UIa9dzfQGEa8p/szf/W uN1zbvSkPt9ZCF+PK2eFr5Rf/pDAL9fFwGXFu2dl8ymQPYNM5MXKJL2ctDvxVb/q68mn HaSWTCRcHcYexxZzvVQz0pA8HckT08FTijjzmEzMpxIoJAMoL1B80Qg/IVa3jWk0Pdc0 iBZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787587107; x=1788191907; 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=7E1UnthV/su2TSgv9f4eQlHMCEu4/TPOkROxWe+ZpM0=; b=I+qcnzUMYkha70tKQRu8BpFmBGKBRBDrpRTVo7YmcLWFAtHIb5BhvJ3v2e0OjRGKLC vin0MuvzSsChayUG5undMF09fv1l6jtCHB7hvRv26Yx1YlrB5QXTaqygcw8VEj+sKP1+ ijZE+eseNoHV8s524tF0Q2zmP9DBxFwQA+2MRK5VwAbb9w3Tl2aPNE1o6mIaGP5yG0HM IU/27k0iSzPDCd1XKz3yfeF3QDFtZmSeYJj/OGFKOiKtwVQpSB4Vzgz/7II/Xww7k9jr 7WYFTy5VG2P3qfYou+fTBIGPOv9wXWAJEoFg/LPEXicbAZmGvssAV1FVj6o6rmcZBVLY ON7A== X-Gm-Message-State: AFuF++mviLpllZlCia7kz99/cGg1CqYKntWT+HvW1KcSZaP5bUW9e8FS Cfy7IoKsE3kXhPXIGYFyIu/RkUWcqv/Efp2BWFtdaBHih1Hdy3i4/fmIk/OkJXDLyBYYymKyyxE /QD79hDq7UMJ+PelZ1+7Btlsm4YyULvrLQsWM8RKIhLGC4ajLwtJk7Fuvrkpe4bzqknHT X-Gm-Gg: AR+sD12OdiCiJ/bcOScGf+fC0T1aSWXq/op3iR1P3acADzgmCtBe/oPuSbEDRar64cH QhMmDF/1sAZG4qSUzBMBqLeDQayxDOhI76KKROb5bwLgxgC+ApJ26hJnsA2OTd7QnBKxL32R+Fo zu4QwRO6+iHGDjUYDK99Bw5vTVNeMqvzw/yA3dA323g5206GSSWlT7Zq3M9Mwmq4NtE/VGFH5r3 vuqDV0gve/EAupSAgVFpelGnZcAo8bV/ehuqyNOtn4VOETa+fSaMiHUinu/7sp793TqTJZqQWFe yS06b21s3sEOb9tFrz/VO7FENTvQQz/H9YeJwOpcSICW7ZUzowqlCZCS8gUrk/TavmlshOol2/L w9riZQlfLvyfAuHXJi4+hPhlNRIABXGP7K4xcseVOnMyq0IQxkF4eq/N1V63ey+8= X-Received: by 2002:a17:90b:580d:b0:38f:5869:387b with SMTP id 98e67ed59e1d1-395df24e757mr38169915a91.9.1787587107261; Mon, 24 Aug 2026 08:58:27 -0700 (PDT) X-Received: by 2002:a17:90b:580d:b0:38f:5869:387b with SMTP id 98e67ed59e1d1-395df24e757mr38169831a91.9.1787587106821; Mon, 24 Aug 2026 08:58:26 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: ale@rev.ng, anjo@rev.ng, brian.cain@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com Subject: [PATCH v4 01/14] disas/hexagon: honour target byte order when printing instructions Date: Mon, 24 Aug 2026 08:58:10 -0700 Message-Id: <16f730778fcbb7c287416aa246367c1d0244b267.1787586642.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: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfXw7soMc0arIQO tN/n3vZmrqYrtGZdD/w/2t5WamDgsBfAl0jpXi5NLoMOGdv+cYche9A4EjgS9h5JWphPU+C943a b6cA8WZtRE6d8/aWwl4JwldwqF26ay0= X-Authority-Analysis: v=2.4 cv=Wac8rUhX c=1 sm=1 tr=0 ts=6a8c6a24 cx=c_pps a=RP+M6JBNLl+fLTcSJhASfg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=Y0R2AH0urpkzOH2ra7cA:9 a=iS9zxrgQBfv6-_F4QbHw:22 X-Proofpoint-ORIG-GUID: LmUhrh2mZAEEDykwG6YlDhjNptm-ynqa X-Proofpoint-GUID: LmUhrh2mZAEEDykwG6YlDhjNptm-ynqa X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfXzkRmdjJy7W/R pK6ezgsoxq5klMaA4iw7W5aEu38vkw1VgteMQCge336mcuidT8JyLD1T+l8HwPXR0jYejrYZk5/ ote6IdJ29LtRUUeLW6tKQCknW254u6v+ovawHOHmQcjE9BzHaXkiBiXNhMoEEz6k4KfO7vlEysy KKg3S4reqo0IB1GQzfUPDjHMz97lG9Cfl1ql/m88lIVNHUMzg0dTS8C1+npfmoRQ0nLvAxmK3Ax cip++FxiexGO1FIFh/TmaMoi+YW2ohZoEP/lTcnCWL2JKzh82366FK52pcXdX39fOnknDNeu+Jf 30r3foscAHifALkedImPI9qjIvAJvUJHGD+gCY8C9vEqPo46d/LYPMxtL/O57puVTS0FP2R33ib lcScnkdhXJFTewRDrv3Jp611CbKfhS5y59wdK71jR3f3ve3WRa6UsZl5pEd8mYC1tmEaKPsyoYe oAA06+TthtoCYCIV64w== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-24_05,2026-08-24_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 suspectscore=0 impostorscore=0 adultscore=0 priorityscore=1501 bulkscore=0 lowpriorityscore=0 phishscore=0 malwarescore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608240134 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: 1787587140081158500 Content-Type: text/plain; charset="utf-8" print_insn_hexagon() read each instruction word as a host-order integer, thus getting them inverted on a big-endian host. Instead, read into a byte buffer and convert with ldl_le_p(). Signed-off-by: Matheus Tavares Bernardino Reviewed-by: Pierrick Bouvier --- disas/hexagon.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/disas/hexagon.c b/disas/hexagon.c index e2d3804606..62e0cba661 100644 --- a/disas/hexagon.c +++ b/disas/hexagon.c @@ -20,6 +20,7 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/bswap.h" #include "disas/dis-asm.h" #include "target/hexagon/cpu_bits.h" =20 @@ -37,9 +38,9 @@ int print_insn_hexagon(bfd_vma memaddr, struct disassembl= e_info *info) int i, len; =20 for (i =3D 0; i < PACKET_WORDS_MAX && !found_end; i++) { + bfd_byte insn[sizeof(uint32_t)]; int status =3D (*info->read_memory_func)(memaddr + i * sizeof(uint= 32_t), - (bfd_byte *)&words[i], - sizeof(uint32_t), info); + insn, sizeof(uint32_t), inf= o); if (status) { if (i > 0) { break; @@ -47,6 +48,7 @@ int print_insn_hexagon(bfd_vma memaddr, struct disassembl= e_info *info) (*info->memory_error_func)(status, memaddr, info); return status; } + words[i] =3D ldl_le_p(insn); if (is_packet_end(words[i])) { found_end =3D true; } --=20 2.37.2 From nobody Sat Sep 26 21:35:35 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=1787587140; cv=none; d=zohomail.com; s=zohoarc; b=FNBP1oWyVUPKm5cklRDiXHKLSb5yToHaLpZUBHT5iYXRtmPv77MIfUaNLxEdQ2pcJgdNLyiiEYhZfX5ks9wvtfEFWqJNzgzvVowoe1C3uRlm8oo2tMFb3W4XYtQ8WNyuAo7RalyOazymIBRJf18LWM6fIKDEBwvWrvm+KIcRvlk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787587140; 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=qQgXh0AjQZOC2+5toV72FGuXY8Sp2e1KTPKXdcHqZWE=; b=XTREopWzteWlGsJXWvCarrv2hMrfpChKm22ED/T5RcutDS6cqiYpRUeB8Pqtj1FyVHTNlSfv2RehrPomerRHp/P9VEnnLuky70OEjPaHDW2Qhm5QfY1Lgg8/aUcC60Y2q5oDKFB2O+0BRDYEoDNMPU40UZahcZ+slHXNWV7/kh4= 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 1787587140430262.6603204750363; Mon, 24 Aug 2026 08:59:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wyX4H-00056p-9d; Mon, 24 Aug 2026 11:58: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 1wyX4F-00055r-9t for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58: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 1wyX4C-0001jW-3G for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58:35 -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 67OFmuqo3329504 for ; Mon, 24 Aug 2026 15:58:30 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 4g8j7r1xxw-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 24 Aug 2026 15:58:30 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-395543dc382so4390816a91.0 for ; Mon, 24 Aug 2026 08:58: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 a92af1059eb24-14186183c0esm41152935c88.12.2026.08.24.08.58.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 08:58: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=qQgXh0AjQZO C2+5toV72FGuXY8Sp2e1KTPKXdcHqZWE=; b=F4MYeTnnOGIz5Sc8uQj8dLleTjL AHjyVtkDPoHg9BXFjkKj3A72PL1JTVnxPwtmOXVLpwQEQtB87NDDl21Oy/difhbF 1tA5GrC+1KfS1qSdX0FTmoEc7orFHZMpi7Wy5BB+FwahP7bNCpIvfFFg6GLp/3e2 Ca5ciO1+/AGVzwYkpDyW+6R5ZSYfed2gVPNFX5YfW56OknHKf+xSoa2SDo0hEoVy NPmOg/TXdohBuu7JtpeModYnLMCtE+314o3bEMg/822jg4p5V+VEzpcmqGEHgg3x i+TFh1wHNu4gsKQ9aBLvvGwSUmc4ok0/GPG6N09f6Eeml24bqEEBkLa0Dsw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787587109; x=1788191909; 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=qQgXh0AjQZOC2+5toV72FGuXY8Sp2e1KTPKXdcHqZWE=; b=LWwIRFM1BxxrodrEZLWtStHL4dDTGocWIDlKKnSlYJ0io0KOqJ6My58OO7WhorS7Ed YDSUNvQlWQWoupRMAxIxJAe3ArMRuhpu0Rv5xJsSKbvUWASD4yh0e1q/wX9v3pJrydnS L0irD/tXkNCfJ4IQZC0Dj6rp+M4Zs44Eax4zVaSxMwOmDhCqI729zR71eUQZWA6ivacV 2CqhGFIHlSay7csTEVu6ybgtXiQCwmxtRmUwv+zVDC7/VURi2kDgOK+duDKSAEgdZQkd dV1o8DJOqiHnO/jwwXaxEJ7x2dpxn/prkKARpeKjg6spdn+CUJHdYY2HlKtpMFwPiUxi whLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787587109; x=1788191909; 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=qQgXh0AjQZOC2+5toV72FGuXY8Sp2e1KTPKXdcHqZWE=; b=bBKjf/aOHM3o08DOqCQzBs1YBtB42OX6lyho5/cYzHXxCiO1Ww0WcyZ3C5i4DHjW9x g5Zq4K9+FzwKQ/HDglPGbFSrhB9knjdHY/W4C/8GLSVqX5s9AS2l79XCctemdgdBc8Ip wuLYtqILbgVgMHkiM0iW2KmhyeePifgBP0f1c52nVAZi8nBwhy0HHFUqlSoxE/P+PNN7 xHIpX3cG+JKb1TovqnC8b/RzpJodxDR9fWYs9s4A8tkir2we0jX7LhKRQmDT11RDJGA+ ZkFxouPYFbg6qVj9J+iKOlEZkoe+LwfMDrqGPvdaTjadFzWFaLwqumJMC3719ILyE3Ew PCqQ== X-Gm-Message-State: AFuF++ketGSMNiax96dYXqbLGNey2hD0pn+Kz7ARMthYoi+2gYdKIWaq scDtAtZz1vm0t1NRGLAQW2mP/CIBcvFtfXwqhNiqckOtAjJO1wgWqelH1nlgPZCS059eGp1U2iY RGipP8NcCd1riD5LksX6a+CeE2JuaxYU+HMhknFAOSA0cIPsTuNLbiwHNRYyxf0KqIGxG X-Gm-Gg: AR+sD100CBj/jNvWfZUZWWh1w5D2NDhRwufhqFDEroHJI1TTKR3hZ4jv+fJ5zqONUST HMh3GsOyEqbnHXcYUjHNocgIglhvQcqL7UbMMPwKsUNrwQ9svRA2l37sHq9oS+lWNV+wBEtBwP6 mw9hcOxkaZvZcOtuk7/qUB8PnHlfCmwjwfEDv7jxjRTR0flFGt+XbvQPjLFiy4cBVXOHMZjxaHJ KYG/qxCrEgMMRzs4rBcP6DFSGn49/ApDrBfukVxe+TmYNOadp3OdDDjBkI6n6kQfyaAyw61uoK8 0/+16LQFASb9g3/sbLj4+WzWEYIrQvXlNn6pm1zc9qVpz39He5URnpNSZoiZ4TzDEhWv7PONX5s ES+3kgxF5OFr1uRGVlTHrGSny4YiTn0Hr/CiBV0rRVlONt62voUy775rkOzhluoY= X-Received: by 2002:a17:90b:53d0:b0:38e:bbf1:de3f with SMTP id 98e67ed59e1d1-395c359a74bmr49036823a91.12.1787587109522; Mon, 24 Aug 2026 08:58:29 -0700 (PDT) X-Received: by 2002:a17:90b:53d0:b0:38e:bbf1:de3f with SMTP id 98e67ed59e1d1-395c359a74bmr49036737a91.12.1787587109082; Mon, 24 Aug 2026 08:58:29 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: ale@rev.ng, anjo@rev.ng, brian.cain@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com Subject: [PATCH v4 02/14] target/hexagon: fix store-conditional on big-endian hosts Date: Mon, 24 Aug 2026 08:58:11 -0700 Message-Id: <4fc8afeddfd0dabc6c50688b24901ebab1867b12.1787586642.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: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfX0GjK5ULb+8th bpJM1I+n0pX1QrdElXHy1fv0EkYKkHz9OvgtA3Wn7sK84KpEwWfilLkmydQoFBuuN9UjuyhO8+3 M9PppIf1qR2otXFSms/ElUH1vLEPqOxkhjQRBHpKtpNxCyvhytJAxuGwtHq4mMR3ibmPlp4CIpE oMoNwG+Y+v5t9PxaifbmDkMvvoMXFTqzTqvSWtVje1MliV6CYzxOP2edWvKHMdg8x14WiTL+vh5 WzcArlJrXpx4b4RaLECMAwUDFLY+daZD4PqsuquLLygZDs7CuMCkiH0+SmKpB48106OTmWvlYYH aClaPfnpFo7QtWHJ60IuknhKMFB3ccZRqqWZPzbCPA2Jvl1xin7a/2wxX8VkjLG+qMCsrbp6p+p LjuKwB6gfrxJgM5WJ27O3OESqgzbs25qnTcTMWzMP/xBjicdUwtdZ6xRGJ6P3pSYkRl1Zb618ML gDmKn/nxi3p5iO1Gkow== X-Proofpoint-Spam-Info: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfXxogvkkXiTnAc L2j01tF+teke/V9TkGMC1DrMiZeBibqgQsKOyn/ru7aqV0REAYV0PL2IxijY/Xbp+slh94UdBK8 aPccxvOT0D5uMKHDeaCc3qVtVBPYlIA= X-Proofpoint-GUID: HyoUYe_eriqVkujDZ0cYHUmC2ALLPFrA X-Authority-Analysis: v=2.4 cv=IL8yzAvG c=1 sm=1 tr=0 ts=6a8c6a26 cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=leud2LzcgvzU7ZSISvAA:9 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-ORIG-GUID: HyoUYe_eriqVkujDZ0cYHUmC2ALLPFrA X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-24_05,2026-08-24_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 malwarescore=0 phishscore=0 priorityscore=1501 suspectscore=0 spamscore=0 bulkscore=0 lowpriorityscore=0 clxscore=1015 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608240134 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: 1787587142220158500 Content-Type: text/plain; charset="utf-8" gen_load_locked4u() and gen_load_locked8u() read guest memory with an explicit MO_LE, but gen_store_conditional4() and gen_store_conditional8() are missing that, so we wrongly access guest memory in host byte order. Signed-off-by: Matheus Tavares Bernardino Reviewed-by: Pierrick Bouvier --- target/hexagon/genptr.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/hexagon/genptr.c b/target/hexagon/genptr.c index 2a98b13b71..9330732c99 100644 --- a/target/hexagon/genptr.c +++ b/target/hexagon/genptr.c @@ -576,7 +576,7 @@ static inline void gen_store_conditional4(DisasContext = *ctx, zero =3D tcg_constant_tl(0); tmp =3D tcg_temp_new(); tcg_gen_atomic_cmpxchg_tl(tmp, hex_llsc_addr, hex_llsc_val, src, - ctx->mem_idx, MO_32 | MO_ALIGN); + ctx->mem_idx, MO_LE | MO_32 | MO_ALIGN); tcg_gen_movcond_tl(TCG_COND_EQ, pred, tmp, hex_llsc_val, one, zero); tcg_gen_br(done); @@ -601,7 +601,7 @@ static inline void gen_store_conditional8(DisasContext = *ctx, zero =3D tcg_constant_i64(0); tmp =3D tcg_temp_new_i64(); tcg_gen_atomic_cmpxchg_i64(tmp, hex_llsc_addr, hex_llsc_val_i64, src, - ctx->mem_idx, MO_64 | MO_ALIGN); + ctx->mem_idx, MO_LE | MO_64 | MO_ALIGN); tcg_gen_movcond_i64(TCG_COND_EQ, tmp, tmp, hex_llsc_val_i64, one, zero); tcg_gen_extrl_i64_i32(pred, tmp); --=20 2.37.2 From nobody Sat Sep 26 21:35:35 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=1787587145; cv=none; d=zohomail.com; s=zohoarc; b=NZGplTmThr0rAI55C8cEiWFpz6zcYOjKmFnhhbeBr+MuVfAAyjXHGe22kHNxeV9PwLWCfZl18xtyewChfvH19wSazypCVSoVXpy0CufHIAEuVN3DCo+rIkQiErJHEohqcFlAlxpSaCojK/ryJcOQmBgw3PQDw40LHdHX8d9TbkA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787587145; 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=Y6grNUJeZCcHgbN6QFALJG1WXFdzATJpfntYR9G55hs=; b=lhWZAiEP/usvL/7HLhPLAVhOSBibuPz9CpBs96dsoZd1EssaQX62X4aPC/eGcWcAYoEaNtF37hxYOiNbUFNLOWRbixMsLo0iOqXzQ3+wn6wXFSkLT6pG9zywT3Yt1K9dPGoQxsMzIF9Ibvo27shwAzH+xjgbC2+90pQbo4O3EUE= 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 1787587145062406.150673933931; Mon, 24 Aug 2026 08:59:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wyX4N-00058s-D3; Mon, 24 Aug 2026 11:58:43 -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 1wyX4F-00055s-Jf for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58: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 1wyX4C-0001jg-K5 for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58:35 -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 67OFn2dv3450323 for ; Mon, 24 Aug 2026 15:58:31 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 4g8pkdgpqj-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 24 Aug 2026 15:58:31 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-3823dcc1647so1449693a91.3 for ; Mon, 24 Aug 2026 08:58: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 a92af1059eb24-14186183c0esm41152935c88.12.2026.08.24.08.58.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 08:58: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=Y6grNUJeZCc HgbN6QFALJG1WXFdzATJpfntYR9G55hs=; b=HUIVT0vbHU/n54Ko5Y6y8JI07yS CXn0fGVUzZlArpZvBqW/UPhqkl6OuS7nrfXk/ohZs9Y7zeKtC2Q12lT0bf7hW2DZ Zm7X9t3pPmtV7P+z6eDy9zEy45nZIim7vKj3WslP3AS/t5slkXKNq9Iqk9/fX15V k1J41v6mmGeNPXhwdN2CSbmBlyMnW6/dzKa3CIYcgFFywmq++1RVuXfDUb0vx6sJ zfcKvXTpSr0gb6HV90EDuKhGOEjJxIuNnNJGSwjkPcI+jJVTVwnp9pAkEmHnRzCp LxnhEmsI7Wllpe+sOUL+vwG8ntTKkeEg5eQcgLaxySxkNUirbWx7b2tVzXA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787587110; x=1788191910; 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=Y6grNUJeZCcHgbN6QFALJG1WXFdzATJpfntYR9G55hs=; b=WEJS99g5yXBTbBQbG47bYEFwJ1LK+XJdTl5FxikIrC0wLQuhhN5JtIRu1L9nBTYspO ZmyvwXikEegKMvxfxiTOrEJ3dntQ1knc18uHIu04IbPvaRorzXUHDfizA4kVw91CrRjN a7AINoWFBvufu7bx2TMukUn9EyksS8R4m9o9vIn928PiJdogiWRca3LTcjLQXCPwN4We BhFmNBimPiTYRGsneupUCEnMSyy4csEWDRb8pXCMrycNnMD2zbDoxdI+nvgFZ6zXNtua gxdenQKEFiNFd3Mt2i8NwaVMhB8kon7EOEM4at4J0LCT+R/DfkVW7P38IjJGksdA8Bc9 IacQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787587110; x=1788191910; 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=Y6grNUJeZCcHgbN6QFALJG1WXFdzATJpfntYR9G55hs=; b=MvAWhXcJgUTA6E+94SEFZm0t+l/z/m83lTXjfIEOA2iDjmk7RVk8OMuwxOew4Ud7oo COr/kgW3ePkaQedF8eDnSeACvTU9wVOvE2WphUK+gwq+2/f/djgHx63Md1tSSeGXnBJC gJg7NCkMEgdd2t2ocRNGzzUI9trYmQbesVs1wQwcgM0r/7evv4dn3b+OF1148SbS0otQ JUhyKHDO0KlbQSX1JJZCwkKC0ohMZCZb8sYzlSwKokKQjMmZJA8QTIvfto+f7yepvuVB 3rhug71YahBOwNBH7p4uhJ+JlxJyNXUnk0czhXOp7EQHaIMg72u5fVXpEsoOlp87xQJf erdQ== X-Gm-Message-State: AFuF++lpjLo9Vl1xVp4jcXGOXTfCe6AbI9B4r8hhJ4qvHdYPMh4VD4w6 vQ/2BVdIs1XvEsnt5rXdXLr1/pcHTCI7yN2AGxIZVmUEk3dmn/EiOORhYe1eVVfQ/gkhtDpM9gi UygZ7izhq91o5LSKHrAlCytmA9ZOWH04//ZTkGdD8QI4hdoInsdROb2sN/Kvbn3wRCLRO X-Gm-Gg: AR+sD10fp8yTNcNK4asLH6os8CDeqnBGlaWmrqpMelYngGf70LU/XQwhczf3FH2H8QH O7Lzba6+RdimjnCKv9LOlBnX3FY/fZP1wUWFZZttwyLM5kerPkfHR2YdN+0WD6HHcuhmtxwWGR2 TPgLMxVL5mD15sTleJhxMA0gCHIU0zg9pn0QGsMuo4euOuasdqd65lO3xLdV/MMEoPcZ4de1OK/ IWzn4VwNImiC+II4r0Ys5dvSL8Ircff/VC+YcqUtGuiJtKX90gPkC6zrE2DendDBodr3Z68QPRg uRIHzP+tcNT0PI5+UijfL+g0+ycLY2ssv66x3T3EcqkCQgcf/pi+/a8LcS76HPFFaAjFDg5SuWQ K3rL4MgzaEPRamCMFh6WIhrur6YK18NQOzDuOF46rxkbc7kuUBw+E7SpkpXX4Z0U= X-Received: by 2002:a17:90b:1d8e:b0:38e:7f1b:efa with SMTP id 98e67ed59e1d1-395df24f741mr30536309a91.11.1787587110481; Mon, 24 Aug 2026 08:58:30 -0700 (PDT) X-Received: by 2002:a17:90b:1d8e:b0:38e:7f1b:efa with SMTP id 98e67ed59e1d1-395df24f741mr30536173a91.11.1787587109906; Mon, 24 Aug 2026 08:58:29 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: ale@rev.ng, anjo@rev.ng, brian.cain@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com Subject: [PATCH v4 03/14] target/hexagon: fix improper assign of cause code to exception index Date: Mon, 24 Aug 2026 08:58:12 -0700 Message-Id: <5403f0e70b2746e55e716359dc93c2f936a52c11.1787586642.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: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfX1/PoFbTxCfmw eIVZy29XRKHEk4CC2+91oSa0KKr9Jyn6EX3TQQWns+pYORZWzCOdwBGA2uxXVG3B8cQBHgTlQ+b 87+ODuwnqq9ednyq72fP274MzkgxyiI= X-Proofpoint-ORIG-GUID: b_rvxnoCXmh3Dni0SOlefWROBRnkjQka X-Proofpoint-GUID: b_rvxnoCXmh3Dni0SOlefWROBRnkjQka X-Authority-Analysis: v=2.4 cv=Kq19H2WN c=1 sm=1 tr=0 ts=6a8c6a27 cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=P_00z6N83E2WU_Jz4wUA:9 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfXz9Ho6h8C3yOh JWL2XXPlpKKHUiZ26XnF/FRGKE81bC/Hh/fETtgMl/tvIYyDIAn/nhvT53TeYragYLM98aopQTp DafDY3jfCn0G9gzTIDsrJ6k81XYspwb25r61hciCW8kVwd7l3zcxdr1ct+tV8dTUCjzhrrZDeri 2fZni2FVMIhPu172fis+JGEuZO/paksoECW4zuNi1Fht5hlTw0mAdPAuCqIWSWYJJqrfzgSfD2Y FRgMaNAN4Ue+7OYtpGpVkF0Ov5Sy7812aKalHSL+5eIvey8zJKSBTJH6g6vRDPmSYm00aEOTMXI c9+Oc5nXCFCjq6Rx/6UQZnDWFygH7v8pAqr096r6lSB0dMGoEcQBmzBWdOoWmzyWcyygUb2C258 i1wYfxgZkl9M1CjfdQ7ZwKHXyVHaqQlZpwSwj+sKzDIUJ+JMdo+LVsFi8/WmokhrDQLhsRQvVWl EEZRswtdGXRp6VX2iAA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-24_05,2026-08-24_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 phishscore=0 bulkscore=0 clxscore=1015 adultscore=0 spamscore=0 priorityscore=1501 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-2608240134 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: 1787587146195158500 Content-Type: text/plain; charset="utf-8" hexagon_get_tb_cpu_state() detects a misaligned PC and raises an exception, but it passed HEX_CAUSE_PC_NOT_ALIGNED (a cause code) as the event argument to hexagon_raise_exception_err(), whose second parameter is the event index (it ends up in cs->exception_index). This causes an infinite reboot loop when we reache a misaligned PC. Similarly, gen_exception_decode_fail() is called with a cause code (HEX_CAUSE_INVALID_PACKET) but unconditionally routes it through gen_exception(), which treats its argument as an event index and stores it directly in cs->exception_index. Reviewed-by: Pierrick Bouvier Signed-off-by: Matheus Tavares Bernardino --- linux-user/hexagon/cpu_loop.c | 5 +---- target/hexagon/cpu.c | 3 ++- target/hexagon/translate.c | 4 ++++ 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/linux-user/hexagon/cpu_loop.c b/linux-user/hexagon/cpu_loop.c index d7f73439db..d46b922479 100644 --- a/linux-user/hexagon/cpu_loop.c +++ b/linux-user/hexagon/cpu_loop.c @@ -78,6 +78,7 @@ void cpu_loop(CPUHexagonState *env) break; case HEX_CAUSE_MISALIGNED_LOAD: case HEX_CAUSE_MISALIGNED_STORE: + case HEX_CAUSE_PC_NOT_ALIGNED: force_sig_fault(TARGET_SIGBUS, TARGET_BUS_ADRALN, env->gpr[HEX_REG_PC]); break; @@ -88,10 +89,6 @@ void cpu_loop(CPUHexagonState *env) exit(EXIT_FAILURE); } break; - case HEX_CAUSE_PC_NOT_ALIGNED: - force_sig_fault(TARGET_SIGBUS, TARGET_BUS_ADRALN, - env->gpr[HEX_REG_R31]); - break; case HEX_CAUSE_INVALID_PACKET: case HEX_CAUSE_REG_WRITE_CONFLICT: force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPC, diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index 7067e5b70f..134fbb2cfa 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -323,7 +323,8 @@ static TCGTBCPUState hexagon_get_tb_cpu_state(CPUState = *cs) hex_flags =3D FIELD_DP32(hex_flags, TB_FLAGS, IS_TIGHT_LOOP, 1); } if (pc & PCALIGN_MASK) { - hexagon_raise_exception_err(env, HEX_CAUSE_PC_NOT_ALIGNED, 0); + env->cause_code =3D HEX_CAUSE_PC_NOT_ALIGNED; + hexagon_raise_exception_err(env, HEX_EVENT_PRECISE, (uint32_t)pc); } =20 #ifndef CONFIG_USER_ONLY diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c index 06a8159d28..29821ffe3d 100644 --- a/target/hexagon/translate.c +++ b/target/hexagon/translate.c @@ -245,7 +245,11 @@ static void gen_exception_decode_fail(DisasContext *ct= x, int nwords, int excp) =20 gen_exec_counters(ctx); tcg_gen_movi_tl(hex_gpr[HEX_REG_PC], fail_pc); +#ifdef CONFIG_USER_ONLY gen_exception(excp, fail_pc); +#else + gen_precise_exception(excp, fail_pc); +#endif ctx->base.is_jmp =3D DISAS_NORETURN; ctx->base.pc_next =3D fail_pc; } --=20 2.37.2 From nobody Sat Sep 26 21:35:35 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=1787587187; cv=none; d=zohomail.com; s=zohoarc; b=N+Oik5v4c0+tDXnyPr7/veJqaWn0XGl4f0u2PWiKlAaPJQG6wYy81jNNn77UOareX0Zrxu2626xgHJOGbfavWcC0MArl79Z8PzbvfJ7gR5i/+dlT4W9+VjE2/beW1OG677Xe59PWFPqUNJX4JqQUx03HUgQzUwdxnpKIi/v6ptM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787587187; 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=hqHcOSCT89R/6W399hvoyl5mlR8IRVQVtP0aWYvMCCw=; b=boolzz3AOu/um1Jtz/2+zKi3do9UxYk7Ydf/p9HZ4dZFghKuKMuurYteoV755hE/7nw55hWO3eWSTGa+ol20AEi1WnWrpkU/1j7q2HEQAR/sjxKgf+uhoF/AlL7bHWMA2PKmfEXSf9k/E0hPcXR1kJShVs5DRu57rvgoR7PVQu8= 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 1787587187836417.9232735845985; Mon, 24 Aug 2026 08:59:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wyX4N-00058t-GN; Mon, 24 Aug 2026 11:58:43 -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 1wyX4G-00056N-NX for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58: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 1wyX4E-0001jo-Gy for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58:36 -0400 Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67OFmqdt3234833 for ; Mon, 24 Aug 2026 15:58:32 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 4g8gqnab11-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 24 Aug 2026 15:58:32 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-38dd87656d3so4814262a91.2 for ; Mon, 24 Aug 2026 08:58: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 a92af1059eb24-14186183c0esm41152935c88.12.2026.08.24.08.58.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 08:58: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=hqHcOSCT89R /6W399hvoyl5mlR8IRVQVtP0aWYvMCCw=; b=X4mZmvAtOv9jR3Q34EqnTl+UB0Q vUEuCX0D18LSSMi/CdgoY/CswXeX9up/QPfMEQxnlGgyEdmgh1kpWFGzCG5MnsOD lnFwijrVKrvyX019uWJFQp6bmve43telby2QmaIRr4+a4bHJuVUoUW4jZ3JVV0ZT HXk3M2/9axcXRCTd4bnRv+JkVDllqPyrSacIZqoaiRw1u3TuuZS4x1uw3L/znjZD h89Ga2uYv09MQy/AJlIsiKFYYFBMgDxr6TNL+lgnubojjSrIq0scYmNHtmeaxG9g TBTHuKJyuW7NwLEktX3HbpLKJ8gBD2NrL2PNSf2sGI9gPtzRJDGZZPQFntA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787587111; x=1788191911; 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=hqHcOSCT89R/6W399hvoyl5mlR8IRVQVtP0aWYvMCCw=; b=SZ/AVdP92C76PTLgMJsFAnDPnXd2wT2aofXJFW4rXnSxbJ5ct+073wzQOFK+NFNLpz enC3IpC32mGTjdeZQG6WE5cct++zfd1N+2sSUkqVebgM9ypRcCELw/4aq0h8fxo1soLj RCUYElXO/q1XNf8G7SlpSxTT+nimNAaCIfg1ZWDUmXM5pMTqnGwJIBCAF+NlCcP0etcp YFh6HAIfWSGyCYajhEFt4kLbPOGr5YHddaV1J6fYWZzU0CkRY1s8fwPo92cFTH38UA4/ h53nSbwDKM5iKN4A9IEa2rNBziLG0u7h9lLLdaVifSys6HvnMG5d8y3aOszjjOflwRuL Xzpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787587111; x=1788191911; 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=hqHcOSCT89R/6W399hvoyl5mlR8IRVQVtP0aWYvMCCw=; b=afA8knJ0qZnADnFEEa/Tl00acIQRK4Mn0UeyfBg0GCb7MGlNVqmzKsfjNl0lNXajet t1Jdrt7r0ssj743dF+trijbv/FkwtZLEEC9zykajZnuTsz4yTv/C7W/ef+Qn5oNBlAE1 jdbel1a1hXnzdFc75NmuYToc3J174hsu+I5+G4noeA+0I2//TySP8aAN0qSuIgyDBjBX jSH15kvsX5/9NFrINGie7MwvOR205iQsHeAVOlHvmwpCqyNWuMT+ep2G9yT3b6+I8wVy q+jaMzdX3hqnzVq4BHHe6hKgHmGTb1TQT/4oWg42Ikm48IAos1+wA10A/bKguE2sAEn6 MLxg== X-Gm-Message-State: AFuF++mhcinAJsJCOW18A+axMYkbWCUYNrCsmyXLb4wHm4KBwkk1x1FL jT3cvrylKNtlHhxGapkBO1/diL4AFtY/KAUuO4UQNcKcQHQiu9laPXTvWvVKzfWdDpw7rQ2noCR tHv02zLqwlLKt+GW7VG5rattRLQ/8yZPQHDphAyKF6olo6Tigi6dWjHV0npF6wXzZXQRJ X-Gm-Gg: AR+sD10Q2D2vCrts7lyuc1Nrm3j8EjFJ9Mvd4VKXhYMdFqi+Xh/jgz2ITsBD2sLyvoP aYubmDoSYWGP/3B7qmMrXyWyiUYEBZfm6YvbwUsfb9gMI466+qiaPB8sz3IAZCyJ7Q7p+C4K/fJ MC2PYYRFtkxLoufGv/Fsn8VwLre3A6RkuTTLMrwQUxQBOIdNY/7NXf8Grd3rhLAsQOvM8TOz6+m j7zYfK/Ko5f6ANMa5lq3cY6cBvpuoR/bznJyKAbE81UupqNjJVME9ycLwY1Q+BjUjP+LalpQxc4 Hjy0XVtxmj8P/n6qSv0OKpsieThRDSzS3rz8K0GCzulFTQxa3WAMGpk99uky1SvIjwIH7vltryN zzwBs0lrI1UOeYdsJmNS1OkGTUyugH3ddpYCeiyksi0ZcsMmEvxDmxdoskTMnW1g= X-Received: by 2002:a17:90b:280a:b0:38e:bfe:81e9 with SMTP id 98e67ed59e1d1-395dee56103mr39855331a91.1.1787587111118; Mon, 24 Aug 2026 08:58:31 -0700 (PDT) X-Received: by 2002:a17:90b:280a:b0:38e:bfe:81e9 with SMTP id 98e67ed59e1d1-395dee56103mr39855248a91.1.1787587110683; Mon, 24 Aug 2026 08:58:30 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: ale@rev.ng, anjo@rev.ng, brian.cain@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com Subject: [PATCH v4 04/14] target/hexagon: fix PC advancement for non-COF TB terminators Date: Mon, 24 Aug 2026 08:58: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: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfXyDjdBPdanJ8C 85RMgRgd0IxOHAfbDSeA4CSt5NvAvx5UWTvIFK3JB6A1UaKjKNKbbRLHzrAI1u+DROSF/ZFP0GJ IQMVu6sWCaYm7NDdaH5J43lQUPdRuhI= X-Proofpoint-GUID: Yt7bdE-qoWKdOSAtfBwVyRDaZ5Bh7gA7 X-Authority-Analysis: v=2.4 cv=fqXsol4f c=1 sm=1 tr=0 ts=6a8c6a28 cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=4a9di1UdVY1t8Q3xuf0A:9 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfX8GFCD9QQ9I61 MQdwJGV7S4p1gS4BRUMag2GgqQk0wZ27KZNT5rhKoRpnL7251WzTBdz+s8276eU0SxUg/SD6I9a YMqoiOi/JQzNze9hJLhuAeLv4vyULi5v2jfs0IHb3Nh46ML+kujZU9YoXk3FqZJBp9PUtiYFiIn LqhY/KX1AOl8pteT/8ef+P9sJkyFOWo1fbj6sQ1mn50ECvLqWDWU7IGguS5eL11YRmvaAKfmlVv 6Rr/xbAHA32LW34L1fS6Q8jfYCTG8neesjyqSQyJmEDOplY2vE46AfdmkGa4tCqHwmzug0HSnrV 96Lh9hRCubYBSKmNCzEIobCRYPFHHbnokY4fTVIjnFr3rp8i9QIR14T1uJFgIx0OwhqOaQHzaKI Uw9ACdLo5ocmwOrah4WNmQLcJG7JmipvWn9gk3/rEtdSNZVF4sRPiwizN40PCf9LOhwNwnZfNvO Nx1MAkLOvT2wPpcS/sw== X-Proofpoint-ORIG-GUID: Yt7bdE-qoWKdOSAtfBwVyRDaZ5Bh7gA7 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-24_05,2026-08-24_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 impostorscore=0 phishscore=0 clxscore=1015 spamscore=0 lowpriorityscore=0 suspectscore=0 malwarescore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608240134 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: 1787587190176158500 Content-Type: text/plain; charset="utf-8" Some packets end a translation block without a change-of-flow. These do not update the PC during commit, so gen_end_tb() leaves hex_gpr[HEX_REG_PC] pointing at the same packet and the block gets re-entered forever. Set PC explicitly to next_PC in that gen_end_tb() branch to fix execution of next blocks. Note that gen_start_packet() used to have a special case for tlblock/k0lock, setting ctx->next_PC to the packet's own address. This relies on the tlblock/k0lock helpers to properly advance the PC, which is never done (only env->next_PC is updated, but that never reaches hex_gpr[HEX_REG_PC]). Drop the special case so these packets advance to the following packet like any other non-COF TB terminator. Reviewed-by: Pierrick Bouvier Signed-off-by: Matheus Tavares Bernardino --- target/hexagon/translate.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c index 29821ffe3d..da058fe976 100644 --- a/target/hexagon/translate.c +++ b/target/hexagon/translate.c @@ -217,6 +217,12 @@ static void gen_end_tb(DisasContext *ctx) gen_goto_tb(ctx, 0, ctx->base.tb->pc, true); gen_set_label(skip); gen_goto_tb(ctx, 1, ctx->next_PC, false); + } else if (!ctx->pkt.pkt_has_cof) { + /* + * Packet with no deferred COF that still ends the TB. PC is + * not updated during commit, so set it explicitly to next_PC. + */ + gen_goto_tb(ctx, 0, ctx->next_PC, true); } else { tcg_gen_lookup_and_goto_ptr(); } @@ -293,6 +299,7 @@ static bool check_for_attrib(Packet *pkt, int attrib) return false; } =20 +#ifndef CONFIG_USER_ONLY static bool check_for_opcode(Packet *pkt, uint16_t opcode) { for (int i =3D 0; i < pkt->num_insns; i++) { @@ -302,6 +309,7 @@ static bool check_for_opcode(Packet *pkt, uint16_t opco= de) } return false; } +#endif =20 static bool need_slot_cancelled(Packet *pkt) { @@ -581,10 +589,7 @@ static void analyze_packet(DisasContext *ctx) static void gen_start_packet(DisasContext *ctx) { Packet *pkt =3D &ctx->pkt; - target_ulong next_PC =3D (check_for_opcode(pkt, Y2_k0lock) || - check_for_opcode(pkt, Y2_tlblock)) ? - ctx->base.pc_next : - ctx->base.pc_next + pkt->encod_pkt_size_in_= bytes; + target_ulong next_PC =3D ctx->base.pc_next + pkt->encod_pkt_size_in_by= tes; int i; =20 /* Clear out the disassembly context */ --=20 2.37.2 From nobody Sat Sep 26 21:35:35 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=1787587151; cv=none; d=zohomail.com; s=zohoarc; b=TBtjSCCXBa5xkI4gFWDY8W06qdUthf8WmFc3hDOwTjNeYMlEhJCoE1qdpSqrTquy7D5eSBbQEk9hdEDuISwWBA/my504aYEBx3E/mt18KmtKiDGeq44OQ2Z5P1rNQH1t7DzVo1oz+/3woc2cmm3xFbhyNRvExABK6f2K39Rwm5w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787587151; 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=5hCU05udzNvUXZyM5XD3pkdh+cnubiv19BnjcGI8PnI=; b=B2qqdwNdV4e8w2rUVOMFAG4NrPy3MGBc4rVjBl5hR5azbSzV3Cbuvk/heCUaA5Pe3SwJt0PqqBkGrqjTVAK4Lsd1YyyvXlXHezv5cA9JRg4E9oaoEi5+ZYjQRCehnmxAqelO/orUdi6uAxw7+snqETfDrPNw17gz/byXOGXAnds= 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 1787587151683470.97482699249736; Mon, 24 Aug 2026 08:59:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wyX4K-00057r-KO; Mon, 24 Aug 2026 11:58: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 1wyX4H-00056w-4H for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58: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 1wyX4E-0001k7-U0 for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58:36 -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 67OFnG5i3329819 for ; Mon, 24 Aug 2026 15:58: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 4g8j7r1xy5-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 24 Aug 2026 15:58:33 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-38e6d253330so43866a91.1 for ; Mon, 24 Aug 2026 08:58: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 a92af1059eb24-14186183c0esm41152935c88.12.2026.08.24.08.58.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 08:58: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=5hCU05udzNv UXZyM5XD3pkdh+cnubiv19BnjcGI8PnI=; b=khttfH57kqmxEiEpiaIASXSd8mZ QGRfcYGIZZn23go2M7flJESTn9P5oKMFsZ2Cr4aFKgivR75ieat7V98P5tIvNu5Y c+KPFCLYOyNy+dprjgIo7vyrKLX+UM06QnpnZhhCEZam1lF53mvqkEBfXkjd2J36 dVUCVav72SXfL1sDT9I4TI3iMtk5vieHrDmN1wI/xqPRAwqsShTcNALEkcdkNT2F T5Gf679ibKyxJsxuui9R4rMogJAytL5r1srUQSdV8xpIaxLkmqS/xd7P4nVgTZRz 6qNZPNfhoW6eZhgN9coB1byKd7jvJ4svw4JDjRzyTTo7Yvvye4R34KE1PoQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787587113; x=1788191913; 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=5hCU05udzNvUXZyM5XD3pkdh+cnubiv19BnjcGI8PnI=; b=kMysPg0XfL+eEnGljWWOyKqrIXWQEej3EHaD7v6eq8ZGhUvModrvogMbQ1LChlAne8 jTJXwNsuLpuueyvIhZ9SctURtjaUewlHVMgdbDbgKjG/XxdnBNs2am1hoQuyhkR/tu+0 Bea8T8Dzdoqfoy3Zyp51gW1N9G6h5tfKJ0AyR1B3PGb3EgM/rMwlYkhftexq6JkwD8wP 7awHe7HxxWKWNzeM6juJbGaftVjp7KfBfOOJml2P//9wfY4hr2tubqG8c8FAPNv0LSzB dt9scH4MmoZvYS9btIw97E+FgfGEFMkAZoVkur/sYs5MmRrU6t4pH5mVSdi4uSaHyoMq XJiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787587113; x=1788191913; 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=5hCU05udzNvUXZyM5XD3pkdh+cnubiv19BnjcGI8PnI=; b=kUEysKzScqcKDcVlGn2Vjx4isBi2jD7tp4DrlWTLN//u5928WV4Gvc639l/cey8CJs jt5XTZuZ/qf45dwNsldeIM60xh7kFUpBmLc94VrLWunLrUOyL6EUzbydGKVLVfw2Tyt8 bFX28DUNL7N3MuZI2GAnxNtYZovEPVgIXkKbt1Yq7E5YEIBQoE5APD/JGFXcY9RdVyCr 3ivEqtPIg2N8kLpjHtM4W4Nw3vXxt7FeRgS5ltMgfdjFe65mnNWS4qM7/dkrlKWC8qk/ HIHLIU3CmFhnLbbmy5fmKG3nB0e8jZncg9f6j2JH4k7c0nMEdOj4IvgYp6DAxEEDI/gb /YIQ== X-Gm-Message-State: AFuF++nywnPpfMTBlERLnRBTmX+Qsp3DGxNPr1JUo+XBZVO61sntLCbJ la/367kG+dsvweQhD5xGzianPwy1JxDqmKfvvHTnzZZNatfbDu4xN0jC9rnLrV31L4cAps1GCZy vCX6knduGjVxnL8SYFG5k/zW1H5oqqNJCL7y8jC3HOlc2Ry51BtHTcK/HrsgLYr+CkQ== X-Gm-Gg: AR+sD10HL8gmhji6btAlCWoOLgEgh07hVZSIvQs4n6k+d339LZWWolLYTQPqWfzeZnv WpOgjst3EsEiXhYuzGxemF1flAVpTco4+/CezyVhFwhqvmbAebJcZefNyANkgE3LOjG3RNGmEcu UAhbPAKJe6GuYwesdfWWkya2/undgofTEVB51t6tSXvaMspCCiAh2FRmNQbz9HF5SIS1xmEW/Ln Cxs74qt57mjDULsD7gLI4heXcGD3AKHtpefFC63vpKp/gA+RFIoBPK2+KT9e9+lIDrG7hpGl9qT ix3ySIy7KqpNag2V23HERUqaX5oJt2DU8fMeSJipPtW9jZ4wtklQmGLSlJZgDxDshFV/JclgjYP h5KSuSHEQX8bX0XeB+J/QaRPEJmWggZSNcVHah7iyS3geU9N3R51CqQxLwI6Tt9c= X-Received: by 2002:a17:90b:5890:b0:36d:b12b:f57d with SMTP id 98e67ed59e1d1-39645a56cc1mr237222a91.12.1787587112968; Mon, 24 Aug 2026 08:58:32 -0700 (PDT) X-Received: by 2002:a17:90b:5890:b0:36d:b12b:f57d with SMTP id 98e67ed59e1d1-39645a56cc1mr237089a91.12.1787587112195; Mon, 24 Aug 2026 08:58:32 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: ale@rev.ng, anjo@rev.ng, brian.cain@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com Subject: [PATCH v4 05/14] target/hexagon: add aux functions for guest mem load/store Date: Mon, 24 Aug 2026 08:58:14 -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: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfX+XIDjXLseT1A 6AH65/Uv+CRwu4nm3XhiwdLnIwZaYQ7u9+HYJ4d4qpYQUZ0PkNo9pUdNNlGg9fqmEIGN1/cVO8d hvCFEAwCg42QGkCFXODNJcFkJxTAte6GutqaWxkPQ5cGMheJIJblpTqMxNzsezMN78h0nfA1Z8N PbtFeuy89EpckU8VAxasIoIILyLRhP8YXYhWmbM0T5TUA7BC5a9+igQwAHDXhRi8d8H3BHZCHtw 7+ukjHpHOMhMmLm5Q39qxQymIdZcbtkM5M03lG9PWlQkZJ9xsdNJXWarUzKrOl7mHQDGdpaB14G trGsHL5i9qhZUA8wCwERHLuZnpDygxKGNwvE/vrVULoINgw9+6RitBOwrZ2a0L1NEKkh5WCmKpR 95Ah+Uj+lExxfW16eA/8OngSjMeTMpBk2R64IqqwENGQdFjokss6SZDrbRq0se9ZQdPJC/mZPhQ bMNdgstKu94fRIk0miQ== X-Proofpoint-Spam-Info: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfXz2XNmu4mcaYN 3ks3Lqj8olb4u3xfpFyTcz105bvwMK9m3BJGCanL34uS8SyAbmADUMCbUzfHLnv9WBfYuWhye/3 zMm/9n9T92vq8I448EWnkVWX0vpNDew= X-Proofpoint-GUID: xh0Mje3IDt21BKjdd0ZWwHnGzjWVLWQr X-Authority-Analysis: v=2.4 cv=IL8yzAvG c=1 sm=1 tr=0 ts=6a8c6a2a cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=-4NnfYh-EZONJb1VZs8A:9 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-ORIG-GUID: xh0Mje3IDt21BKjdd0ZWwHnGzjWVLWQr X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-24_05,2026-08-24_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 malwarescore=0 phishscore=0 priorityscore=1501 suspectscore=0 spamscore=0 bulkscore=0 lowpriorityscore=0 clxscore=1015 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608240134 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: 1787587152061158500 Content-Type: text/plain; charset="utf-8" Will be used for semihosting. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier Signed-off-by: Matheus Tavares Bernardino --- target/hexagon/cpu_helper.c | 100 ++++++++++++++++++++++++++++++++++++ target/hexagon/cpu_helper.h | 6 +++ 2 files changed, 106 insertions(+) diff --git a/target/hexagon/cpu_helper.c b/target/hexagon/cpu_helper.c index 64c5746c6d..fab9a9d7b1 100644 --- a/target/hexagon/cpu_helper.c +++ b/target/hexagon/cpu_helper.c @@ -25,6 +25,106 @@ #include "sys_macros.h" #include "arch.h" =20 +#ifndef CONFIG_USER_ONLY + +static bool hexagon_read_memory_small(CPUHexagonState *env, target_ulong a= ddr, + int byte_count, uint64_t *data, + int mmu_idx, uintptr_t retaddr) + { + /* handle small sizes */ + switch (byte_count) { + case 1: + *data =3D cpu_ldub_mmuidx_ra(env, addr, mmu_idx, retaddr); + return true; + + case 2: + *data =3D cpu_lduw_le_mmuidx_ra(env, addr, mmu_idx, retaddr); + return true; + + case 4: + *data =3D cpu_ldl_le_mmuidx_ra(env, addr, mmu_idx, retaddr); + return true; + + case 8: + *data =3D cpu_ldq_le_mmuidx_ra(env, addr, mmu_idx, retaddr); + return true; + + default: + /* larger request, handle elsewhere */ + return false; + } +} + +void hexagon_read_memory(CPUHexagonState *env, target_ulong vaddr, int siz= e, + void *retptr, uintptr_t retaddr) +{ + BQL_LOCK_GUARD(); + CPUState *cs =3D env_cpu(env); + unsigned mmu_idx =3D cpu_mmu_index(cs, false); + uint64_t data; + if (hexagon_read_memory_small(env, vaddr, size, &data, mmu_idx, retadd= r)) { + stn_he_p(retptr, size, data); + } else { + cpu_abort(cs, "%s: ERROR: bad size =3D %d!\n", __func__, size); + } +} + +static bool hexagon_write_memory_small(CPUHexagonState *env, target_ulong = addr, + int byte_count, uint64_t data, + int mmu_idx, uintptr_t retaddr) +{ + /* handle small sizes */ + switch (byte_count) { + case 1: + cpu_stb_mmuidx_ra(env, addr, (uint8_t)data, mmu_idx, retaddr); + return true; + + case 2: + cpu_stw_le_mmuidx_ra(env, addr, (uint16_t)data, mmu_idx, retaddr); + return true; + + case 4: + cpu_stl_le_mmuidx_ra(env, addr, (uint32_t)data, mmu_idx, retaddr); + return true; + + case 8: + cpu_stq_le_mmuidx_ra(env, addr, (uint64_t)data, mmu_idx, retaddr); + return true; + + default: + /* larger request, handle elsewhere */ + return false; + } +} + +void hexagon_write_memory(CPUHexagonState *env, target_ulong vaddr, + int size, uint64_t data, uintptr_t retaddr) +{ + CPUState *cs =3D env_cpu(env); + unsigned mmu_idx =3D cpu_mmu_index(cs, false); + if (!hexagon_write_memory_small(env, vaddr, size, data, mmu_idx, retad= dr)) { + cpu_abort(cs, "%s: ERROR: bad size =3D %d!\n", __func__, size); + } +} + +static inline uint32_t page_start(uint32_t addr) +{ + uint32_t page_align =3D ~(TARGET_PAGE_SIZE - 1); + return addr & page_align; +} + +void hexagon_peek_memory_range(CPUHexagonState *env, uint32_t start_addr, + uint32_t length, uintptr_t retaddr) +{ + unsigned int warm; + uint32_t first =3D page_start(start_addr); + uint32_t last =3D page_start(start_addr + length - 1); + for (uint32_t page =3D first; page <=3D last; page +=3D TARGET_PAGE_SI= ZE) { + hexagon_read_memory(env, page, 1, &warm, retaddr); + } +} + +#endif =20 uint32_t hexagon_get_pmu_counter(CPUHexagonState *cur_env, int index) { diff --git a/target/hexagon/cpu_helper.h b/target/hexagon/cpu_helper.h index d176750315..ca2e13ab1d 100644 --- a/target/hexagon/cpu_helper.h +++ b/target/hexagon/cpu_helper.h @@ -7,6 +7,12 @@ #ifndef HEXAGON_CPU_HELPER_H #define HEXAGON_CPU_HELPER_H =20 +void hexagon_read_memory(CPUHexagonState *env, target_ulong vaddr, int siz= e, + void *retptr, uintptr_t retaddr); +void hexagon_write_memory(CPUHexagonState *env, target_ulong vaddr, + int size, uint64_t data, uintptr_t retaddr); +void hexagon_peek_memory_range(CPUHexagonState *env, uint32_t start_addr, + uint32_t length, uintptr_t retaddr); uint32_t hexagon_get_pmu_counter(CPUHexagonState *cur_env, int index); void hexagon_modify_ssr(CPUHexagonState *env, uint32_t new, uint32_t old); int get_cpu_mode(CPUHexagonState *env); --=20 2.37.2 From nobody Sat Sep 26 21:35:35 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=1787587155; cv=none; d=zohomail.com; s=zohoarc; b=iPU1VQjYvc+P4Y2xnQtApeV/8Pvk40lypcumnchuo8AmxzCnuOg9bzrG/rAHVeloNikILCwJaeZYXWviwbLURUujn7hpXKslF5nPMWbu++SoxROI7PYbH0XqHSZ7XhxnbcPcVdudONKcVmeh0ZMhpciDU37TdvTRtvglxOO3GQM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787587155; 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=C71ZqtJEtpy9h/1ghTM05rDegvSURFCI0x+7CkYcLYM=; b=OfjdFPNcoAWHNc7EVTEqRiKMsyajLSU2kFgzZe6Msut9GADHxaf8vLsdKMI+9tzBY9+e1vl2bUeRWYBojZQ2UXqM/b11hxUgZzMPQfXW2HncbhqsE3d12XO1OJEzH39fjCBrKHk8WzeD2vMJp56T24wTB12aK0dLGh2XXmULt4U= 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 1787587155362563.9856002859295; Mon, 24 Aug 2026 08:59:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wyX4S-0005AU-E5; Mon, 24 Aug 2026 11:58:48 -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 1wyX4I-00057f-J3 for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58:38 -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 1wyX4F-0001ki-ML for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58:38 -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 67OFnMnF2956446 for ; Mon, 24 Aug 2026 15:58:34 GMT Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g8gdsjg3p-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 24 Aug 2026 15:58:34 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-8487eb67173so6261439b3a.2 for ; Mon, 24 Aug 2026 08:58: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 a92af1059eb24-14186183c0esm41152935c88.12.2026.08.24.08.58.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 08:58:32 -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=C71ZqtJEtpy 9h/1ghTM05rDegvSURFCI0x+7CkYcLYM=; b=W0p2eAafMnJi2lQxMH3tEoGw3Yr FCnVL2rH40FhHLlBBGq3gkU42zVA6VAkv4I36bEJRtLptF7SX39/FjaBmI7r5Wkm IkMIa76DKgpeYeY//CGPmVrnNHSWq/8MebeDPBFU4GjzO5zAZ2UF3J1mgMhZYNsc d/V1cXYXjak7vsA5qrg4FtTfuOjwq8UiB40BDlE4eLX/ipDynlsBeLxr6mj3oBSa 1eJBKtGlrLdIuPW8gaXz5XhJkPqWWjYUXtVSMfbdfEdnUmPBaDCp9v8kr7LXjMUw GIud574BQ1h8fyy8UeQJZKIjBCv48JkCgy6TQiKSKodmeZaqMC+7AseAvUQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787587114; x=1788191914; 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=C71ZqtJEtpy9h/1ghTM05rDegvSURFCI0x+7CkYcLYM=; b=ZyaP3EgLHGntcEI8dtnwAmF4Pe1ELgoFa1wJMhwrMaOqajJktfGvng5IzjirenEmqB Ykvcmlk+8QWCUIa8VV5MIxzll5fjgg4kXUI9C5yQqufxI7prERbhofoe2FpfL7OtfrDb GkiHUuls+jf7v0tF1BC+B0QRdncbsFL/KRKQUXPlHhApraF/9KWtRcBPZbDsUgWfrWoO GZCGUZfIYFVZ42748gCRKHoM/VI8nQGlwAk7bTbrc0O0Em2Cf3s2xY2Y+SqwYzE/Og4o EvUPcdCX5CbLKQbdXXtvzbjDNK0c2R59e6aNCjrZ34L1iwNeGpjZPbHXhLJXMWD4hW/1 r+7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787587114; x=1788191914; 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=C71ZqtJEtpy9h/1ghTM05rDegvSURFCI0x+7CkYcLYM=; b=ZhQMZv7XExd3i4+zvSvHCgdHsiFGroZlZP9eIL3WcKutCuFMHkxV97GAx/taOdOr1n f+fAfcLCbipQEAtv0Wc/XRI5VjpCkMhrapneuD6UYMvip315lt+WgjuLBX6nKJ0qDgkA +1Ruif4/inpEoYUsq/1MiAb20vseUl1P+htEpOKsrzaeFpH5o2+OJONYeMsaSilDkYB2 09rKWgU7kmfeGl6TuZYFsBJwYTKYPF6fM2ez48HEvgv/l8We37DvTTNz9v6V0+z0lQ4+ H8NGHhcl7Ku5RUjNvs9NIgZHmxWDhkFowBE47zDzm78V8bDrj++stXL625xO4wesDzzd nylQ== X-Gm-Message-State: AFuF++kdLGvMx/OTqVNo6MhJkEtyNfeDp/NgY/21h6Pj1tPzA2VqZKXo 9ztYFjUp5HcbSWZhRD2LaNahipTVj5sUms6cC5idcDam5Or8UMrZKH0BTU+rOg/P+zLw/eXqo11 Hb3OyQyvrLxDwHZFQPB21T5DJsqME6tCZEAtg6kpYeTjocvaYDHOfW8gYKI52Bem38ebL X-Gm-Gg: AR+sD10R3yYIwPgRvTZtnl9BMOLqigkL94oOvKmB6nMt4NgT6yHhFOVSNsxmW1m+JJK kKj6rHl5H+5mttwST9Mp0CgErNm3pjb3V6Y+b6jmCoXcHle/jGQOKl4EHj/Vv7lyJRM3XyKGKkp /0xVIh7ntfqzjNZRvCj6V7fwii/vwAOxMTw/bDJEJj3LJHtPgikovesmxMGVJeZd6MyPw7PQF/5 BLRfbnxJy5bHmp3Sj3yBrJPT/L6wjksiW0H3tIaii/ypUPXWFmsoGxtv1+SaOeGyIjLN3kX2COm 8tF2heyG9w/cn9Z6elFjpdllrJ7ShPaEqk91f4z7R5BOT78NUmjoHQ2g2OXY/4a+pry5R0YvwXZ VqW0fY5MGL0qzNeUjA8W6xyn94zlG5BfdMkMcX2PqgOqXfzNmP3MbHI6ki3fyTCY= X-Received: by 2002:a05:6a21:138f:b0:3c1:fbf:1e2e with SMTP id adf61e73a8af0-3cd3008bf4bmr45472632637.10.1787587113665; Mon, 24 Aug 2026 08:58:33 -0700 (PDT) X-Received: by 2002:a05:6a21:138f:b0:3c1:fbf:1e2e with SMTP id adf61e73a8af0-3cd3008bf4bmr45472540637.10.1787587113210; Mon, 24 Aug 2026 08:58:33 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: ale@rev.ng, anjo@rev.ng, brian.cain@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com Subject: [PATCH v4 06/14] semihosting: add APIs for chardev-aware guest fd routing Date: Mon, 24 Aug 2026 08:58:15 -0700 Message-Id: <47eb2ef70ddac371aa403ea94a516cb795983189.1787586642.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: zulK3WsdcmynmdS_4ChbEqICYlZ8Xbzd X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfX3Ecvw+g/+1e+ 1qsmL59SnALmkJGic9QN9hvh0H5RQpjL2QdzpOeGhG08eaZxnmRADoPbvsY75dllQNJEhZGMGkg rV9OAj2uX8it1KdC0/YpZRhsAtPpQEoHzQobDicyl1pLZHRgFJ4Y43fmwb4tGmPLhLSclIobtA6 gP3L1TjmoVbcCCiqTSVczpt+JWIkyEvNZuGJLrfPAkyU+dCxRfxdcwyM1dBX4bcVsfp/JArDgkh eNuBCXJJYyjFCuRmCzrThTvAFTxkKx9Lr3gr4yOHIvfhIh1WTPBHQEIArpArOKlrMen2HOIOWow Uo8ybfmlrDIdnln6+5f7imzhrYo3EryaAFmLl47ez/NA8AQS+MvrKMfCV6cSRVpRBSvu+jZ95dK O1kd2Za4SFdVE3AJ9Obiut9zb5xUk4P/PlBtSIGA5idJQxKUPZxKt9iZ1DYbDgqzWjwOs9ZJ8b3 c6vHyUfgDR3A+lnvZgA== X-Authority-Analysis: v=2.4 cv=Fqo1OWrq c=1 sm=1 tr=0 ts=6a8c6a2a cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=4trHgkiC9q-UxXHgwkcA:9 a=OpyuDcXvxspvyRM73sMx:22 X-Proofpoint-ORIG-GUID: zulK3WsdcmynmdS_4ChbEqICYlZ8Xbzd X-Proofpoint-Spam-Info: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfX0QhM9p7KNvxk /DkQIds9xtRV64akL2d+bebg3hK28CvlaG2WqkvQ8ozQeUZV7f+kqH8pHTGNoC6Zi4mfQG6q37V PRvs7IBgI8opYMN/hV7cx9bKRabECX4= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-24_05,2026-08-24_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 malwarescore=0 adultscore=0 lowpriorityscore=0 suspectscore=0 impostorscore=0 phishscore=0 spamscore=0 clxscore=1015 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608240134 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: 1787587156247158500 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 1c12e178ee..d5f149e208 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 a7ea1041ea..76ca0fcf1a 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 91e5d50d50..9d78683356 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 e8f236c690..8b5770bab0 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 Sep 26 21:35:35 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=1787587192; cv=none; d=zohomail.com; s=zohoarc; b=Jys4jGctK+DIXanuSqgXdg91uIiqk5hHQRIVj3W0Hn9LfkuTan8yLAqQ2aNQhReYPw3G9vX6yBrV2bqWvbawyGmJGcQ/8p5emfvdXxwG59iIKp5EWqp1mkwVOT5xPydZ/v0VMJZtDDIwntIqGNYH91pmtUtzXnV7iBQXqVYrn1o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787587192; 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=nnFxmkUXSduWUIyum6POa3vyphYaCWoT2qAoNMjzXm0=; b=Nj2dfHjzd2cjx34eoksUDQj93bUA2yMrj8YwbpwLfl4nwrC5JgYcmhZ+iMeceLM6x0FghUYEMSfm+3XQbqq1Gxqu9pEccAJwpnJ/08WYmJmj9cSRyE+2+5V8E9NTtjQUolLqQVmPM4SeMgr8vDNVB12uHWcqPbEItcIwhNGvPZw= 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 1787587192460527.8125044235494; Mon, 24 Aug 2026 08:59:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wyX4O-00058u-1G; Mon, 24 Aug 2026 11:58:44 -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 1wyX4J-00057m-D0 for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58: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 1wyX4G-0001l3-6t for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58:39 -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 67OFnBtL3329769 for ; Mon, 24 Aug 2026 15:58:35 GMT Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g8j7r1xy8-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 24 Aug 2026 15:58:35 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2ccb6823efcso29703495ad.0 for ; Mon, 24 Aug 2026 08:58:35 -0700 (PDT) Received: from hu-mathbern-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14186183c0esm41152935c88.12.2026.08.24.08.58.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 08:58: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=nnFxmkUXSdu WUIyum6POa3vyphYaCWoT2qAoNMjzXm0=; b=kvGaP3sBbR86PNlWtGtYwS8JyeG 81aPe7lUINkqDI4YPMfJo4NHvcVfyg8qLlnLDAQcOkDE4LR18HATbERk/dBFe7It YlddhXM8cViEWaMheHsf7cZUVkjIIZlwKSl8KPieC1Gl2wNpOn1kqo0TcGMlrnpe wDPEsRu2Mvu8e0NZP1hJEI5nuX9E8uafgbn/GTLfAyLnTUIxLE3w53M+ovtpKs8l 5Kk/1Z4gJzhP2NjQCbzYbreRq6KtrLdagZw8mCMIVvi7Lw5M+WcQTa2ONMIFa7Dj 5p1ny3o+9BQA6SsICKLfXeOo6l7pV9vUV0LvlsMhydzD9SNZ+Qdj7re3g7Q== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787587114; x=1788191914; 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=nnFxmkUXSduWUIyum6POa3vyphYaCWoT2qAoNMjzXm0=; b=LeoI487j+lVMkgBBbgwx9x/25tNvAmVjrFAAmgHy+asqWGoTNiaTv0OZdO2oO7vB/V wdBKpG7GO6smG0Z9MuLy5dPsF0ZQceM7xlez+4n5lnC/uci9oNh3P06gjnyvhxfTHE2j OLDEW7HicYYMjfjAx7zG7s0arPq3JJIFz1j8d+VeXBgrOtr0t4BbMZsPA27OzAytpXca 1vBa7WrXPeV52OqDnxZtU/oizy9oThYOoKwkMbvjdu8VXwfmImKbuLAaSQtJZ/zkiNJd 2OCDVBd01x++Ieh8CAeBXhKhELQtGVXc+Oj61s92R605Gcccym0WgQKcltBc9SZ5xYAx wr2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787587114; x=1788191914; 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=nnFxmkUXSduWUIyum6POa3vyphYaCWoT2qAoNMjzXm0=; b=btTSH+GE0hei7ODNCO45sPbDZezyXHjhliqUjP/kEVE6agc+I6iQeIXIkISESSSNuA hBPHw9erWxJOaODOFDu2wAmSn9qm5+LqngwjGrhhfm5dT8d80rvWRPE617/W39mqhA3G N3L/bJYs9VsQA9wyRnYz+XlTQ7iQH9wWxF0kFZwf24jA2IQO8X8lR7bMTBM7HrI+H7A7 fXo037F6XtezDc8pgPHN4OxZecro4kINJmcFAIMRl3mLggCMRQtT3YTkcxx3iy9sr8mX DSZD8keGevIKmLWEEAa6t4pxkKWXUoColFaCc/mCokTV1P04DxD5KIk3VHmuoPcEYonA LUDQ== X-Gm-Message-State: AFuF++n1YkjPJ8LGMADQxinXXy/ZKtP/hKnlx0eFhAVyB18wCuhmkjfg DaIZiV1Vtm7JF+GmVYs/Qi+ifmkeNCnRuzYgy/sBW923T2QiHL0SqBAtEwuhyqWVcpSUDNcUsHb pwvHdf27bgw5JEev4Mdvy29CD3fByn+0mfEABOj5y8k3wJ8kaQUvKOefleyXZaspPvY81 X-Gm-Gg: AR+sD122MdL8x0hz2xFr4/ZSXvRd+iD/87lgPIQofpTPaG0dcnW2pQXojWzPC4s5dpS RUgCbeZ1442IE2/X8fg1PI9RPNb7l5uCtr1sGq+6424oHUyrsyk3dpEto5c3UyjpxJ6a848ATMt PniC9pSQ74JEaDgF71Oc102cny0glOvh5vjR4qwNKnKD4ZI4kU9+4SabbDnXZqSdb3al9exY/xb C3WNA9hQdoeU4VMGO23BMrnK4Q62wH1oQm1Y1Iv2qDmwLuecUz8D6zUtB/UdZ6EZAGIpgboTkIG 9EJE/d1PBFqMSGUuVZ69nCmZ8XBKnVXX115OrmwDPJi3/LMuhTFvMNcWDuS9jpNzNW0/ReziOmH XMzYrQQ6r1/iUwnDdP0sBWzVtQkeFSbABARFJft9vYSafj3JbQzDDsYpynNAdHKo= X-Received: by 2002:a05:6a20:2d0b:b0:3cc:51ff:c2e7 with SMTP id adf61e73a8af0-3cd4bbdbd2emr37029127637.10.1787587114256; Mon, 24 Aug 2026 08:58:34 -0700 (PDT) X-Received: by 2002:a05:6a20:2d0b:b0:3cc:51ff:c2e7 with SMTP id adf61e73a8af0-3cd4bbdbd2emr37029028637.10.1787587113852; Mon, 24 Aug 2026 08:58:33 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: ale@rev.ng, anjo@rev.ng, brian.cain@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com, Daniel Henrique Barboza Subject: [PATCH v4 07/14] semihosting: add callback to set error Date: Mon, 24 Aug 2026 08:58:16 -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: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfX6KpYXHaZhc0k QbJZg1pXrWAQOrMFbwjoZ3EgSQn5OhMjRteaUIA0cXcceBu3ZrvxmeBm+DOCqZ4myOVugcDUZZi 17ovIXKChgXKHJ3fv2Ffke6KxSBDdc8jv22yBpjUfGvnX0ZDEgVA1i4geh1Sjh84FYpmPqEi+Mi fEJzldHz5EZhEK+SQsSEqFQkoN4iHJFxr6TyxCBs3SX1gmqkkG1vS/pH86rMCymgLpVRwpgDvc9 pJFDdaZvzlgNmcy24aVyKghMXIgo5WZntJw1jG3owIH8B4r0QNDPwJ1H0hFhAq9dxnXuMYKjJ1U 7Q9BK98Az/7ZPJ0YkkMkdRq7VDD043sgIG0fIcuyn5A6YnZLXcoaoWUO1H94poES15xlRSDFo23 /bPYOeE+MI//2+GJEM7rP83Ot7HcvsDJOWKq2NRuGU0AGiuimpNdll5a/xZmRj1P41eq3uIeGB2 47cVUdB2TI8pip/nzEQ== X-Proofpoint-Spam-Info: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfXzjnHRk+Rd04z zEPgQDhXW1/JlP/kZTNswu4Eyk070VVENpveKCChFmRWmWV74rN/XcEKa4Tgq1Fvzy0R6wvOjVe Z3x6nJEDkBsYZuK6jQmRlJsZWTgUhU8= X-Proofpoint-GUID: slCNRGvfEn_rWOpiS10XSrQe_evIdYhu X-Authority-Analysis: v=2.4 cv=IL8yzAvG c=1 sm=1 tr=0 ts=6a8c6a2b cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=8ndNYmkutmpv_8xOvXsA:9 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-ORIG-GUID: slCNRGvfEn_rWOpiS10XSrQe_evIdYhu X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-24_05,2026-08-24_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 malwarescore=0 phishscore=0 priorityscore=1501 suspectscore=0 spamscore=0 bulkscore=0 lowpriorityscore=0 clxscore=1015 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608240134 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: 1787587194166158500 Content-Type: text/plain; charset="utf-8" This is currently unused by existing semihosting targets, but it will be used by hexagon in the following commit. Signed-off-by: Brian Cain Reviewed-by: Daniel Henrique Barboza Signed-off-by: Matheus Tavares Bernardino --- include/semihosting/common-semi.h | 1 + semihosting/arm-compat-semi.c | 1 + target/arm/common-semi-target.c | 4 ++++ target/riscv/common-semi-target.c | 4 ++++ 4 files changed, 10 insertions(+) diff --git a/include/semihosting/common-semi.h b/include/semihosting/common= -semi.h index aa511a46f4..a11905ef4e 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 5e5f181b90..c54753f696 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 2b77ce9c17..38d52deb3d 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 aeaeb88d53..38a00e160c 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 Sep 26 21:35:35 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=1787587176; cv=none; d=zohomail.com; s=zohoarc; b=JJcH7CaQ8U+UP8bRkBcBBNayQWo4TcyJmb6swkzV/pMOcWoCSIECdCbddFXCN7ZRRwuzcI1boOyDG1qnk++m0M5/TGumwAO3Qtm6WDuYs4T6v9U14x5OnxlWaaAZbXrTdfsilh8JBgYqxE84pquM8f1y/VzvZ4mYQzVt0Ul+8sw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787587176; 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=/8CYFYfa9H1v1FCwMzUwBVeaTtmLH8lkoQDGrh7ZyBg=; b=I9g1P4cxuDavC6y4YyniA18bGJTM16DV8bC6OG31j2290Db9K5QMCGkTu6eiQG9hIy9VvV47T3cANVc+LwGqHfguglbxQ6gYohYcq/hrSQYgt5rlXo5pHLaUiwuglaTwmHmvxJgysusI7E6wN5kIDdz1NSct0vvGiKz9Mlhgh8Y= 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 1787587175993738.374255233113; Mon, 24 Aug 2026 08:59:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wyX4P-00059E-C9; Mon, 24 Aug 2026 11:58:45 -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 1wyX4K-000588-MF for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58:41 -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 1wyX4H-0001le-Fv for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58:40 -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 67OFnO4R3329989 for ; Mon, 24 Aug 2026 15:58:36 GMT Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g8j7r1xyb-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 24 Aug 2026 15:58:36 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-cbb20f82a0eso2709558a12.0 for ; Mon, 24 Aug 2026 08:58: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 a92af1059eb24-14186183c0esm41152935c88.12.2026.08.24.08.58.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 08:58: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=/8CYFYfa9H1 v1FCwMzUwBVeaTtmLH8lkoQDGrh7ZyBg=; b=huDvGo6sbeT36lQBKsZH/4lz5PF V8A4xOI2jdRdFsORLUxtrgH+uQb8lMk5wKMogUKvBxZNxvzKISx6k8rRmbXnHQNI H5ZUVJxXK3AthlHapTuJO2jpwUrW546prNqjuNdR/OXRdhMwVYMB8SuVv6tFQ/ya SazkMbWOfgY/ldDtSxo9XlAJ31SauWmpgX9Zma9ZNCXG0urOK+bwTlDTrkMzNBV8 wYXbnElEOeyNlGoKJwGvxWg076qKNLwHZg1oFiP+Wk4gvsWXkKpFux6PtV36nrOw JfZ00micDJHQrr/0+JDzvULzPlNIydk+MeOkdG1YKIgCQLIhRkGBfKu49TQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787587115; x=1788191915; 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=/8CYFYfa9H1v1FCwMzUwBVeaTtmLH8lkoQDGrh7ZyBg=; b=DL2UPsklOSfeeiholfXvUaRIclDJW8SEgcKqqOfWDfKePzxmt7HuWTbzDCKbQ5uWo5 ULACHPPiQjKCAD32LV/2wdaIHjk4LPq5M/er0heFt/UwYhFRdANa9uwNMQpBp56W3Yf6 7OM1FbxVLTz+990ZiSj0RO562+MdcxDpf2YroqqPEkiMBsoDnD/RIaPQtckqm7NkUPy6 6LvEd6a+uU5PDg3yg9AgdBeRVUGXEA08j0hjF0l4PQgDHR6EBjcNuZQlbJkEybNMB2GL M3DpkKInrfAwn2qjF8iG4E/04aUDlqPhFIjsoX3cLKCb9N0MAtu9+TFWiEB88K+r9R5S BVaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787587115; x=1788191915; 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=/8CYFYfa9H1v1FCwMzUwBVeaTtmLH8lkoQDGrh7ZyBg=; b=Rjixmk9WcKKmt3Pii+kW2b3vFFtuNca8ecglrX1mEo1LUlNs6Hy5PpsLMxDMq4hzrT /MyU2CW4WvfWnDN7dBgIkm0KjlvIpIXBA/emqpmHkdh3fjaYu58lbe5lnNAR5+0m0Kbw ShFp1ZULXRj/wCR7GfunOqQQyZ5o7moQiU0SpiCMEV5cVtMuIN+a7W5fxFiGgBH4XO7s 9buP+9tVrRsytuMLilWNb3JZNo7RkyL8ORollZuUBpY51WeNFkA5rFBloYRatxLeS0XC 6kU1WSc0uO5lLE7hrvkqzqrLFf4CZdiWj45z+ueqbCwzMiQ1VoGCAg50IxWxfUSanzY6 TSjQ== X-Gm-Message-State: AFuF++niilv70PAZcBZ1raStjF5H1sPJTL3IIjWiq/zg3o2IKVFDzeXV EkhO8hA4Miixe8KCRGqzYPO7uN/ozLqPfs3eaIb7IDwARSifzBsOz98LQiFzfGufRiDvLxkiqvU hZsQq+MQN89tMSM8kflYgukc1sLO7YBVIZGrqhpzP+XmBO1IXnN4CJsw1yfIKe/01ZzsV X-Gm-Gg: AR+sD137O2u/3N0zbgfPtH8JE01tVjvI+D4d6C7JQogoTsWS792cM2XBNVZzHXQ0TWb XJpI5EwR6zssI+mS+Pljg9WKUjJSouehauzCJZKsHTh+/ekFCowShFdtJtfMRkTtgeba1mzU5m+ wr3A7wVD6Dd/mN2DdadbRAlNSmazmQCywhtnsIKz6ZL4SKd0V4kXSF4KUxypfGAOVZrX7AQ1wjc XVtKmXCqbq8OQ3XfztJEzz6kiu592ET5R5mfJHV6IgoQ9fZdLgTwlw+k4mOXSOkihrZOOXFeUuY r+Flk666ouHSFyuPTG3H7EBtbaThRbhcXmqNA4oJK6nDFd5khfbs7D/7vGomQNMDmXNZdsX5OXk OTsu9Q0ofnoC4Xw0tQhpzQeP4rvW/UEw9lOTVL+odl7ck74qqYLPAXzPKMQKQXiY= X-Received: by 2002:a05:6a21:6010:b0:3c3:f371:1ea9 with SMTP id adf61e73a8af0-3cd3009ca00mr52445739637.10.1787587115272; Mon, 24 Aug 2026 08:58:35 -0700 (PDT) X-Received: by 2002:a05:6a21:6010:b0:3c3:f371:1ea9 with SMTP id adf61e73a8af0-3cd3009ca00mr52445636637.10.1787587114770; Mon, 24 Aug 2026 08:58:34 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: ale@rev.ng, anjo@rev.ng, brian.cain@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com Subject: [PATCH v4 08/14] target/hexagon: add semihosting support Date: Mon, 24 Aug 2026 08:58:17 -0700 Message-Id: <7529648c7810ff5fbe7770ea9087b6e399e277a7.1787586642.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: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfX/s25MaRNGaaV StLYBz9oaQOp5sxY7R4tSUSp0LHL7bQdhv96tcNbLlCrqQ+VJJ1PF9cufc2kp9ghvqVxU5XxoAX 8uXZUbg4mFiO5uRYsF+R3O9qmSi4QlHlmRk1k/ty6CwTEMApO0s+Yy/4s9mM31Oko5eV2ThYoY1 NVRu3CiGZRXnjjjPtgfumgAOYmAeq5ywp2UUjHXfOg6qiTZYux7FHk55EYqd9u7XGP2204sE0MZ pzA/AFwjWpm08729ZgKU2p9ZVUB0V5RjHChbg4zDUpnh0Omwewc6J0HfF2JLbJEpHsH32uCgs+q zYklxIFBkZo9Q/KlI2P4zgvdRuJC9OJ8R6CnDyCDwIjLGjt0mXFHH0AMf/0DWy9QekRfAFzUFA8 oM1XU2JLKSYvMRiYPKAkiACos2yukDD54Y6uIXhA9SKsgteZxS8P2zZquTMf+nNv3JaQalPrMT2 ive+WmNz75mTegDwwfQ== X-Proofpoint-Spam-Info: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfX0cVL99C1IMUN gJpvY25E6nMlflBRyhVDESkhhi5dz/bo7n5ycFV8J+N69xxUcuUDbi9HJ1H7RSPO0xZLIbTGP/5 kj8bgX4SatFDQtM6NNXwq5caDtpt0oQ= X-Proofpoint-GUID: dT21YrmESwbcVtl2Z0tUwr3uG-dxBcc- X-Authority-Analysis: v=2.4 cv=IL8yzAvG c=1 sm=1 tr=0 ts=6a8c6a2c cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=9cnYKv1u39FlQambOaYA:9 a=x9snwWr2DeNwDh03kgHS:22 X-Proofpoint-ORIG-GUID: dT21YrmESwbcVtl2Z0tUwr3uG-dxBcc- X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-24_05,2026-08-24_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 malwarescore=0 phishscore=0 priorityscore=1501 suspectscore=0 spamscore=0 bulkscore=0 lowpriorityscore=0 clxscore=1015 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608240134 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: 1787587178250158500 Content-Type: text/plain; charset="utf-8" Baremetal Hexagon programs use trap0 #0 to invoke semihosting calls for I/O and process control. Wire up the arm-compatible semihosting framework for softmmu by enabling CONFIG_ARM_COMPATIBLE_SEMIHOSTING and routing trap0 to the semihosting handler. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier Reviewed-by: Brian Cain Signed-off-by: Matheus Tavares Bernardino --- configs/targets/hexagon-softmmu.mak | 2 + docs/system/target-hexagon.rst | 8 +- hw/hexagon/Kconfig | 1 + hw/hexagon/hexagon_dsp.c | 2 + qemu-options.hx | 8 +- target/hexagon/common-semi-target.c | 51 +++++++++ target/hexagon/hexswi.c | 167 +++++++++++++++++++++++++++- target/hexagon/meson.build | 1 + 8 files changed, 230 insertions(+), 10 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 a77c100f0c..6cbdc64be5 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/docs/system/target-hexagon.rst b/docs/system/target-hexagon.rst index 416b8f7be7..a9f8c29810 100644 --- a/docs/system/target-hexagon.rst +++ b/docs/system/target-hexagon.rst @@ -91,9 +91,11 @@ Semihosting ----------- Hexagon supports a semihosting interface similar to other architectures'. The ``trap0`` instruction can activate these semihosting calls so that the -guest software can access the host console and filesystem. Semihosting -is not yet implemented in QEMU hexagon. - +guest software can access the host console and filesystem. Read the +`Hexagon Semihosting Specification +`__ +for details. Semihosting is enabled by default on hexagon-sim-compatible +machines. This can be further configured through ``-semihosting-config``. =20 Hexagon Features =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D diff --git a/hw/hexagon/Kconfig b/hw/hexagon/Kconfig index 83b2763d1e..bb8a254fd2 100644 --- a/hw/hexagon/Kconfig +++ b/hw/hexagon/Kconfig @@ -5,6 +5,7 @@ config HEX_DSP select CPU_CLUSTER select HEX_L2VIC select HEX_QTIMER + select ARM_COMPATIBLE_SEMIHOSTING =20 config HEX_VIRT bool diff --git a/hw/hexagon/hexagon_dsp.c b/hw/hexagon/hexagon_dsp.c index 20306c28e7..2198436a44 100644 --- a/hw/hexagon/hexagon_dsp.c +++ b/hw/hexagon/hexagon_dsp.c @@ -26,6 +26,7 @@ #include "target/hexagon/internal.h" #include "system/physmem.h" #include "system/reset.h" +#include "semihosting/semihost.h" =20 #include "machine_cfg_v66g_1024.h.inc" =20 @@ -153,6 +154,7 @@ static void init_mc(MachineClass *mc) mc->no_serial =3D 1; mc->is_default =3D false; mc->max_cpus =3D 8; + qemu_semihosting_enable(); } =20 /* ----------------------------------------------------------------- */ diff --git a/qemu-options.hx b/qemu-options.hx index 34970fffc9..56f42b02c8 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/common-semi-target.c b/target/hexagon/common-se= mi-target.c new file mode 100644 index 0000000000..210d33e54e --- /dev/null +++ b/target/hexagon/common-semi-target.c @@ -0,0 +1,51 @@ +/* + * Target-specific parts of semihosting/arm-compat-semi.c. + * + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "cpu.h" +#include "cpu_helper.h" +#include "semihosting/common-semi.h" + +uint64_t common_semi_arg(CPUState *cs, int argno) +{ + CPUHexagonState *env =3D cpu_env(cs); + return env->gpr[HEX_REG_R00 + argno]; +} + +void common_semi_set_ret(CPUState *cs, uint64_t ret) +{ + CPUHexagonState *env =3D cpu_env(cs); + env->gpr[HEX_REG_R00] =3D ret; +} + +void common_semi_set_err(CPUState *cs, int err) +{ + CPUHexagonState *env =3D cpu_env(cs); + env->gpr[HEX_REG_R01] =3D err; +} + +bool common_semi_sys_exit_is_extended(CPUState *cs) +{ + return false; +} + +bool is_64bit_semihosting(CPUArchState *env) +{ + return false; +} + +uint64_t common_semi_stack_bottom(CPUState *cs) +{ + CPUHexagonState *env =3D cpu_env(cs); + return env->gpr[HEX_REG_SP]; +} + +bool common_semi_has_synccache(CPUArchState *env) +{ + return false; +} diff --git a/target/hexagon/hexswi.c b/target/hexagon/hexswi.c index 43c373ea2e..a5d56fb844 100644 --- a/target/hexagon/hexswi.c +++ b/target/hexagon/hexswi.c @@ -24,9 +24,171 @@ #error "This file is only used in system emulation" #endif =20 +#include "semihosting/common-semi.h" +#include "semihosting/console.h" +#include "semihosting/syscalls.h" +#include "semihosting/guestfd.h" +#include "system/runstate.h" + +/* non-arm-compatible semihosting calls */ +#define HEXAGON_SPECIFIC_SWI_FLAGS \ + DEF_SWI_FLAG(OPEN, 0x01) \ + DEF_SWI_FLAG(ISTTY, 0x09) \ + DEF_SWI_FLAG(HEAPINFO, 0x16) \ + DEF_SWI_FLAG(EXCEPTION, 0x18) \ + DEF_SWI_FLAG(SEEK, 0x0A) \ + DEF_SWI_FLAG(READ_CYCLES, 0x40) \ + DEF_SWI_FLAG(PROF_ON, 0x41) \ + DEF_SWI_FLAG(PROF_OFF, 0x42) \ + DEF_SWI_FLAG(WRITECREG, 0x43) \ + DEF_SWI_FLAG(READ_TCYCLES, 0x44) \ + DEF_SWI_FLAG(LOG_EVENT, 0x45) \ + DEF_SWI_FLAG(REDRAW, 0x46) \ + DEF_SWI_FLAG(READ_ICOUNT, 0x47) \ + DEF_SWI_FLAG(PROF_STATSRESET, 0x48) \ + DEF_SWI_FLAG(DUMP_PMU_STATS, 0x4a) \ + DEF_SWI_FLAG(READ_PCYCLES, 0x52) \ + DEF_SWI_FLAG(COREDUMP, 0xCD) \ + DEF_SWI_FLAG(FTELL, 0x100) \ + DEF_SWI_FLAG(FSTAT, 0x101) \ + DEF_SWI_FLAG(STAT, 0x103) \ + DEF_SWI_FLAG(GETCWD, 0x104) \ + DEF_SWI_FLAG(ACCESS, 0x105) \ + DEF_SWI_FLAG(OPENDIR, 0x180) \ + DEF_SWI_FLAG(CLOSEDIR, 0x181) \ + DEF_SWI_FLAG(READDIR, 0x182) \ + DEF_SWI_FLAG(EXEC, 0x185) \ + DEF_SWI_FLAG(FTRUNC, 0x186) + +/* + * We use the arm-compatible semihosting routines for these ones, but we do + * need some hexagon-specific preprocessing. + */ +#define HEX_SYS_WRITE 0x05 +#define HEX_SYS_READ 0x06 +#define HEX_SYS_READC 0x07 + +#define DEF_SWI_FLAG(name, val) HEX_SYS_ ##name =3D val, +enum hex_swi_flag { + HEXAGON_SPECIFIC_SWI_FLAGS +}; +#undef DEF_SWI_FLAG + +#define DEF_SWI_FLAG(_, val) case val: +static inline bool is_hexagon_specific_swi_flag(enum hex_swi_flag what_swi) +{ + switch (what_swi) { + HEXAGON_SPECIFIC_SWI_FLAGS + return true; + } + return false; +} +#undef DEF_SWI_FLAG + +static void init_semihosting_guestfds(void) +{ + static gsize initialized; + + if (g_once_init_enter(&initialized)) { + if (qemu_semihosting_console_has_chardev()) { + alloc_guestfd(); + console_guestfd(0); + alloc_guestfd(); + console_guestfd(1); + alloc_guestfd(); + console_guestfd(2); + } else { + alloc_guestfd(); + associate_guestfd(0, 0); + alloc_guestfd(); + associate_guestfd(1, 1); + alloc_guestfd(); + associate_guestfd(2, 2); + } + g_once_init_leave(&initialized, 1); + } +} + +static void do_preload(CPUHexagonState *env, target_ulong swi_info, bool l= oad) +{ + uint32_t addr, count; + uintptr_t retaddr =3D 0; + + hexagon_read_memory(env, swi_info + 4, 4, &addr, retaddr); + hexagon_read_memory(env, swi_info + 8, 4, &count, retaddr); + hexagon_peek_memory_range(env, addr, count, retaddr); +} + +static void sim_handle_trap0(CPUHexagonState *env) +{ + target_ulong what_swi, swi_info; + CPUState *cs =3D env_cpu(env); + + g_assert(bql_locked()); + init_semihosting_guestfds(); + + what_swi =3D env->gpr[HEX_REG_R00]; + swi_info =3D env->gpr[HEX_REG_R01]; + + qemu_log_mask(CPU_LOG_INT, + "sim_handle_trap0: swi=3D0x%" PRIx32 + " info=3D0x%" PRIx32 " PC=3D0x%" PRIx32 + " thread=3D%" PRId32 "\n", + (uint32_t)what_swi, (uint32_t)swi_info, + (uint32_t)env->gpr[HEX_REG_PC], + (uint32_t)env->threadId); + + if (!is_hexagon_specific_swi_flag(what_swi)) { + if (what_swi =3D=3D HEX_SYS_READ || what_swi =3D=3D HEX_SYS_READC = || + what_swi =3D=3D HEX_SYS_WRITE) { + /* + * Avoid page faults if the buffer is not in memory yet. + * NOTE: Counterintuitive, but a WRITE must be able to LOAD fr= om + * the input address. The contents of that buffer will be + * directed to the SWI interface. + */ + do_preload(env, swi_info, (what_swi =3D=3D HEX_SYS_WRITE)); + } + /* + * ARM-compat semihosting SWI numbers are all <=3D 0x31. + * If R0 holds a value outside that range (e.g. guest code + * executing trap0(#0) with an arbitrary R0), treat it as an + * unrecognized request rather than forwarding to + * do_common_semihosting() which would abort. + */ + if (what_swi > 0x31) { + qemu_log_mask(LOG_UNIMP, + "trap0(#0): unrecognized request in r0: " + "0x" TARGET_FMT_lx "\n", what_swi); + return; + } + do_common_semihosting(cs); + return; + } + + switch (what_swi) { + + case HEX_SYS_EXCEPTION: + { + uint32_t ret =3D env->gpr[HEX_REG_R02]; + env->gpr[HEX_SREG_MODECTL] =3D 0; + gdb_exit(ret); + exit(ret); + } + break; + + /* TODO: implement other hexagon-specific semihosting calls */ + + default: + qemu_log_mask(LOG_UNIMP, + "unknown swi request: 0x%" PRIx32 "\n", + (uint32_t)what_swi); + common_semi_cb(cs, -1, ENOSYS); + } +} + static void set_addresses(CPUHexagonState *env, uint32_t pc_offset, uint32_t exception_index) - { HexagonCPU *cpu =3D env_archcpu(env); uint32_t evb =3D cpu->globalregs ? @@ -95,8 +257,7 @@ void hexagon_cpu_do_interrupt(CPUState *cs) switch (cs->exception_index) { case HEX_EVENT_TRAP0: if (env->cause_code =3D=3D 0) { - qemu_log_mask(LOG_UNIMP, - "trap0 is unhandled, no semihosting available\n"= ); + sim_handle_trap0(env); } =20 hexagon_ssr_set_cause(env, env->cause_code); diff --git a/target/hexagon/meson.build b/target/hexagon/meson.build index 4c921eee73..09620de332 100644 --- a/target/hexagon/meson.build +++ b/target/hexagon/meson.build @@ -261,6 +261,7 @@ hexagon_softmmu_ss.add(files( 'hex_interrupts.c', 'hexswi.c', 'machine.c', + 'common-semi-target.c', )) =20 # --=20 2.37.2 From nobody Sat Sep 26 21:35:35 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=1787587222; cv=none; d=zohomail.com; s=zohoarc; b=l3EaCID0NQbxE/gDrtq/wKnMMkNgFD5tdkZRuI6ehWt147rThEYNFndlkBqPTXLT+2+ULrTOKwaTJ9GVyoXfPFX3Brbnt0OKnMfzreRfM0Adnj5XpPC//uGpUH8jS43+5L32ONzkMjmaJRf9AIaVS5uYtxBCTnIuIXpYlEmzVlQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787587222; 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=LPhEBKq1x4e/BOddVE3zuRODvz5LnOso+2gMy+UCqFc=; b=BT5IT47lETu5WZ3kw6CF+NF0pk4GvrM/BVQ/kOkOLsBZPd9GnPLUjiL4uQahiWNQYpRT7xUV3CpZ/ngNRjtKqBJf7wvU/qEk0I+zGd+Vb3kBpFXnYElboIRkGNsxJLOeMzYwG9l+QMZCiXxyVlNYVqp9y6gbXUmdW8uSc1U+KIw= 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 1787587222680873.3574086966364; Mon, 24 Aug 2026 09:00:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wyX4Q-00059l-3e; Mon, 24 Aug 2026 11:58:48 -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 1wyX4J-00057y-VK for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58:40 -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 1wyX4I-0001lq-3p for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58:39 -0400 Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67OFmqdu3234833 for ; Mon, 24 Aug 2026 15:58:37 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 4g8gqnab19-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 24 Aug 2026 15:58:36 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-39512608fb1so9143531a91.1 for ; Mon, 24 Aug 2026 08:58: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 a92af1059eb24-14186183c0esm41152935c88.12.2026.08.24.08.58.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 08:58: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=LPhEBKq1x4e /BOddVE3zuRODvz5LnOso+2gMy+UCqFc=; b=gA5ShNXpoUH+fY4l04zJKnwwxVX QSPCU4Ym+holri0inYj7x1G9k35kihQrWu4cBWBeni7Q2LC7o6oB8oa5eUh25jL2 Tejm0f9Wk1CaZz41G8iCZTq5b+5p75JxtQuralwHuiEk9h7lwk6Z90CIkA1bhUI1 bes970V6TmQp0Lz9sgCInWBC8UFj/P/ISzuzlEKFBxS/gI2co+8ue33nx4RwTCMa AV4eteD0ecNBivd5H7MXa4cLuvGAryrTm44P014dc1FX7AQIzNbCrFFqxZq500sf 7V3F3k8TF7fgqTbR9Ugl8XQ+/gKnvZyKCa3ZZ+4Fu/L14mtMCEm5JMoc9Dg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787587116; x=1788191916; 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=LPhEBKq1x4e/BOddVE3zuRODvz5LnOso+2gMy+UCqFc=; b=Zb4Bodza5iuinQ7y40D4gdR7OqF4l+D9JaUMog3MWweN2itL9LObr8ycmJhuOVbOQ6 OreI0+yfj7nrjw+ynUF8clBuL58u1E7VaFBY47ZraGjzTu+c2htAYktlrX+DCuaAoz2x Cw7ERQZKWTs9gKTrP3N89NRnz3z/YAoz3jaa0uFFBSqBf8DDDbwJNaUCMFul+HxH4Pmw M8b4u2JDTM8w6o3ZssVQRJWmGykPp1U3tC0cY8eQFyXsZqH2OeM0HvbuiJG3RG1RNZNU X/+9ZwESKdm71DKmJy94q2KRL41wujvXeimGPqBtVs945sPs6zZY4XD0fsV6H673hsfY TmcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787587116; x=1788191916; 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=LPhEBKq1x4e/BOddVE3zuRODvz5LnOso+2gMy+UCqFc=; b=e6s6Vi2MmIxUbOjk901u1omY1JMUci3WQBFOAfI7LAHcGgmZtUyH+93g93pRvmRb0Y iE3IdwWiHOhER9vdwQrCMzpMvokV3wCXjiDABP8vPEy+wliQVgBhK+ER5ZLKeoPX2+4b Zfl3Aa0mXoLiOTSjN0HFMGPHhlshnBnBtTOAOdCmH4hW7I/LgDeHYRpWESq47d4v/2hm pTmbaF71veWt9AeuVsZNQJRqdqYNZAUYRwIU/wByhVjjavvecvPbClFgzh70of9VXvUv NtyaME0jhTpe/oHghZsDgq6ktuEJifqvJGX/eeOib+9KN4E+VtkNaArcV6N8ji9MPx9P kIQg== X-Gm-Message-State: AFuF++lszVJnl7X/HDMT1dyl/PZEqNP48/8EbMKs/hEtDB+nGlpZ+AKn k3NDpuSO2Xh87CbjLX7/njc5cSbYro1S9XinAu9WQGXA5UFkCS/7GHlzL7X8iXVDTtv9AS8OFtQ KgZ11bVBvONO4fujwTI6wcbRAegzGujIR3oTp3qfvusdTW9VKDaAfdUP/jqwyA3p8aw== X-Gm-Gg: AR+sD12DS5Op1pKaT8FIXVpJzgnSkcW+QTH0wwNL+6JKQRTvwg/TpZQ9hQukyOdisex RZMLMFtPaMVgZDLzFox6MmYxVyHnULtvp2NGsnWczP0HlvJfS/bddryESu8yBcFWKtsXf+M6V6+ 06nSDf0vOcytFl1xQqKLJWiOig0BkMRkJJZX8qBZ01Bi6a/Yqd0LMJCMdoQ5yCHJZiYolASctVD YFbeI8ATPckI6fwqnnumNrwR9ahyJU0AQcbnNXaEnDl1PA/QGITvj7bYFw8eVjfWXUP6qxSzIuK XtzezuvTHbFBsUxTKFDaqspUjJvyUfwdD0lWLEDElNfgXNJsHkauptRngLtiUdpzL2rR7P1uH/m uRnLhLi2sKebg4qiqg5vsGlzLt8/vcx+3MyhrtB7iaIjR3x7qTRNJHSCK75Gj6Sw= X-Received: by 2002:a17:90b:3b4d:b0:38d:ef48:b04 with SMTP id 98e67ed59e1d1-395c39b1750mr46325353a91.10.1787587115970; Mon, 24 Aug 2026 08:58:35 -0700 (PDT) X-Received: by 2002:a17:90b:3b4d:b0:38d:ef48:b04 with SMTP id 98e67ed59e1d1-395c39b1750mr46325254a91.10.1787587115471; Mon, 24 Aug 2026 08:58:35 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: ale@rev.ng, anjo@rev.ng, brian.cain@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com Subject: [PATCH v4 09/14] semihosting: add ftruncate helper (to be used for hexagon) Date: Mon, 24 Aug 2026 08:58:18 -0700 Message-Id: <2b36fa49933ab9e8df729a2794826a6368d53182.1787586642.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: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfX+W47Bs3IGkf/ M2gyoY+TTmdGMgWrJd5R/TUKKt1M66+oCBKRF1uq0IusRyuGS0DbfKsePO1xinnRYiUhXh+P1yI AvMIk+bd9ccSLrhD9oyZlqO5QyJcVAI= X-Proofpoint-GUID: -A8Vt1q8Ci0ZeCr9-C9IU-z5fvLVm8iH X-Authority-Analysis: v=2.4 cv=fqXsol4f c=1 sm=1 tr=0 ts=6a8c6a2d cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=H7u-uynIU280lupyLLIA:9 a=mQ_c8vxmzFEMiUWkPHU9:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfX7CWDrn0z4L24 q7Kszb49gymXw2d8Wxh2A88PAKrb2Jj6eaIfbsjJUq6TwFOKFu1Ov0S5nk4NUxkOeKoVjGr/p0b n6W2s495tHNyDtQL+TL1IDe/mtel5C5V7Xn4fDztXsbsZmxEQ9gZaLI6ZIk8dTTb/0CBPiy9xgN PeU1Fn+kiI1BE+uFVlE+A7SxDDYSy803EacTVpqENSZUxyg+z9pVlzxwvnAHhDs508v+5S1tu1H fPF5e4V7dNVeoEpYrVp5ZGn5RpQSsj5aaiJiZnZGSm2BqmS/zlxA8cffLO9720w+PQ9nQ6QGvDV oy9SU0ZLHcu4cSVgKgP11zD1xk70sww6aSRNLsb/b0ID/eEc6laDC/k+scNATkaSvml54hFqR16 DPO0YwVqic9x28zP7WksemmQI2DELLt2RLaK2OSRwncFjyYxYrEfQsc7C/dOsimDuXlmot9H8wi fcM8aDmSHE4yTyuQJKA== X-Proofpoint-ORIG-GUID: -A8Vt1q8Ci0ZeCr9-C9IU-z5fvLVm8iH X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-24_05,2026-08-24_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 impostorscore=0 phishscore=0 clxscore=1015 spamscore=0 lowpriorityscore=0 suspectscore=0 malwarescore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608240134 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: 1787587224798158500 Content-Type: text/plain; charset="utf-8" The common semihosting syscall layer has no ftruncate helper, but the Hexagon semihosting ABI includes an FTRUNC operation. Add semihost_sys_ftruncate() so that Hexagon can delegate to it rather than calling ftruncate directly. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier Signed-off-by: Matheus Tavares Bernardino --- include/semihosting/syscalls.h | 2 ++ semihosting/syscalls.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/include/semihosting/syscalls.h b/include/semihosting/syscalls.h index 03aa45b7bb..3919ab64c7 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 20f155f869..0456db0bef 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 Sep 26 21:35:35 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=1787587185; cv=none; d=zohomail.com; s=zohoarc; b=EHO9c6Nm8OjilK4Thm6CB1qxtOofFoWWh/bxPzdnxfUqZJzt7ozWDcl3WI2pwIoOmFesIAKnophhy53q4Wgmk+JAvmPatZQZBhwwZtK1Zcnm87OWtO0tShBEHkz6nV+/5cEfYbf1jTr30L+gi7TmG7oLmpZd+az/+hbLuRXAmhA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787587185; 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=hCQy0mHnaVbDAwTpeZiwfNJ0h2z/hVkXsuta5kPZ9Fc=; b=fs0EZQrh2HQd6QTzXkBytExVWPgZxyaJphla/K9pwO4YlLHL34qIeQJGFYtd2RojSckJo++SeV6pGWPg/RO/udPvz76VOH6LC8Jhl4pZyFcpYdgETDIa1hxGC4sNMcthszrw9oFe0T5oHnk7tjpxOWUYunYHRfPkrtosXUTdcCA= 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 1787587185564743.1628149695748; Mon, 24 Aug 2026 08:59:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wyX4b-0005Fc-04; Mon, 24 Aug 2026 11:58:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wyX4X-0005EI-Qi for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58:53 -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 1wyX4S-0001mF-VO for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58:52 -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 67OFnFZc3329816 for ; Mon, 24 Aug 2026 15:58:38 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 4g8j7r1xyf-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 24 Aug 2026 15:58:37 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-38e25e4b41cso4084603a91.0 for ; Mon, 24 Aug 2026 08:58:37 -0700 (PDT) Received: from hu-mathbern-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14186183c0esm41152935c88.12.2026.08.24.08.58.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 08:58: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=hCQy0mHnaVb DAwTpeZiwfNJ0h2z/hVkXsuta5kPZ9Fc=; b=p3kRXEqbJY82VRi6L4U1Rsm3lz3 w7VFXdawZ2SQOVloMV+eTa5q8FNO/w96Oj9FHZThTvGQ7NpQ7825UlgvH55JYyrH CPi1j5HpwiQUAJs8xJPaQbCrC0xqOrylb+VR/+Ylm4TQyin8ZXP7vIdqagoVif4Z dTRdQwLSx1zkfXFpNBJIIN6+brNZ9RaDEEh7F09kv114UtntBn9Rcj6I7s6Za/+q DA38PEd7FuVsxnyUpaT1Dtje8oiTPTedmPN9lXC7iEhDgf9/xOaRglLwbQEyyoM3 QIu+rihL6qrTsgqeisnbfWzdIM11gsxqTlAEKdYqh4NCeJVFMDsIq/1AGgQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787587117; x=1788191917; 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=hCQy0mHnaVbDAwTpeZiwfNJ0h2z/hVkXsuta5kPZ9Fc=; b=cP0eoiMUQWPyt1cyfCEWQPaPFA2YsTtdZnVydW3ZEbMKZ+ZUvPe3P7PRdC8w+n9JKr oc6WPhbD0VdGPQnmNLmyJbDDA5lzXJ5/OSjPCp8OL7r5xPJwXv6oU+Q3e/Up6wfn+Rm4 GEms7b5reAMKEGtIejnzNxmjPFbY9WML+2qf2CG9+lqx71607OJBSjviqmlgFYTwHzZv JWbazsR+fUaZdm1/53u3L93F2hYz0pAe6p/2HNigkqMiv5wSYTNkyL7hwveHRFR5XvV6 /zjwgjcGWAbx2+q2zC9pZXCK+FJuSl9buyEs82YL23tgNp/tmqAObWpaFZYXLFZ4KRSL 4XZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787587117; x=1788191917; 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=hCQy0mHnaVbDAwTpeZiwfNJ0h2z/hVkXsuta5kPZ9Fc=; b=OrkHazznR2W7Ub+5yAXfls5SgBy09fjstfImJcx7PHIFF5cAAW1VYmtseXB4OiBpyV hDJD3wbICEoLCPsBu8R+sjar+f2QFzfDIPweHA/F04NIMefvb9DNwCNXOKlwYyE6kXB5 nRsyUgNrTjopVMnn/r0p1vPKKlOzKXV+dFSqo5HVRjIVZDj7MT0wM0pPo62qZMQhft2q OrV3LjDp8JVfHKwGplrfVKSqplDcio3dK11q6V+FUVm14AVs5T3+PQm/ssdBeZct22fw uz1AAkkBe5ksyC3IIoTP7knSkwFH6BsPG4bAcbm9qATLIGHtJt3NN97mD+EzyKWve6DU tfwA== X-Gm-Message-State: AFuF++noyQENIYfQpH+N0law/tRyCvDZjVP3xrtYFrVBd/MNzRnz7q1L 2MvR150uek4PS+xo2mFvO97iin6ZVkYKpHA8zOpQc2vz++5X8HFnxvbjOqaYcxWyw6KuRTfUF0S aaQJb8Ikq9TXV7kDQwBZrVDnskDzFe/2k+BYLQMRxVzPA1vR3UxqqOh/8XfhpdBvHAEZD X-Gm-Gg: AR+sD11OGVRFOx8nRYXqxu8TyPuxvzEWZNdPVkCT7m0i7+xOGgWgJ3LUS7rgpg7H+jp Q5jq1DuwuuP7pan+HpU243cC9KhId5uIgx0H1EIJrd6Uq2QYGmllPXff1QkTDfxHUtgvE75wdAl nPmP/1bUz8M4zBS+zkXzFBO6f5UpstD5uByMcSg547VT0uSmeJ+pepBEkwCny6LdxyAA1PyDpsD Ff6/6BSILbfBRSlzG4OO4AuRllM1d65YaF3YSsKO3hy5069yRPzYTVSZfp0Nz4BCca51JPC0K2E E35V2WL8erRAkXnOJGU9JFIxpRy7gFYhkcu44t4xQB25ltsgbUiQ0lFNzmfGh9MTgvuyAhBdXqI b3acr5OIv/wATiBl7WAEBovK5DSoBae80yZRtJwiOPWKb5GXACMk8fVlRGOVbDWs= X-Received: by 2002:a17:90b:1f8d:b0:38c:a59b:5189 with SMTP id 98e67ed59e1d1-395df67778fmr36780353a91.15.1787587116824; Mon, 24 Aug 2026 08:58:36 -0700 (PDT) X-Received: by 2002:a17:90b:1f8d:b0:38c:a59b:5189 with SMTP id 98e67ed59e1d1-395df67778fmr36780250a91.15.1787587116256; Mon, 24 Aug 2026 08:58:36 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: ale@rev.ng, anjo@rev.ng, brian.cain@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com Subject: [PATCH v4 10/14] target/hexagon: add main arch-specific semihosting operations Date: Mon, 24 Aug 2026 08:58: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-Details-Enc: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfXwGAT8p/ERuHv 0k7HzzmQBoJcmpy8WHweT7ESNvqr4iWES9zedF4jrqDGRsZwwQgyfflcCoTykqOuZBp2e35bDDe EVFl87L6qfsOHAi181RdCImjeIpK4qq/V3Ar7NKDI7x4HkBFyVvQLIO70V2YliKJD8MoFh1VDRi HJepH79so9FINypzn6Caplk1PeKrDeda07LQN+mg3ybwvjQhwjgh/o1EIHkpArluhPvRb6r2g77 Cr8uWyML8CGs4HsjNfGkvOc8nsWwQC7gAfRqKsAHg6eb5OSzT/MFTNY21dVwEANN34M20OX3wjf xorXmgrudZCZBkHxAXIE27gVAc+Dmt83Dl72vg7fD5XSsr65/utSE13NFJZ0aouy7lhw+0GH83N NW29c0NwO97C4rfqlX6C/nHeuzcarcgaJ0trPv/tvpVZJOiAFPlD84MSDY0hqgiGhdtI8y9Jbsg z0lHnoc9lRWOzIYs3Gg== X-Proofpoint-Spam-Info: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfXymvAAfE8C7+1 GMu+Lg2EENJnpEsiVhuY/abVjvMxUqH4UTRGUAmqn5ElqNFVNo+VU0FhoFUXAne4BVXSkRhDhNG 7h1qwtyebuS0DZ3gdm/touOlkmu+E4g= X-Proofpoint-GUID: rsYfgFw5VCG5Crwb7UggZ4Z8GuPTDnIg X-Authority-Analysis: v=2.4 cv=IL8yzAvG c=1 sm=1 tr=0 ts=6a8c6a2d cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=UwY7kZyrlkj7TMZqf0EA:9 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-ORIG-GUID: rsYfgFw5VCG5Crwb7UggZ4Z8GuPTDnIg X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-24_05,2026-08-24_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 malwarescore=0 phishscore=0 priorityscore=1501 suspectscore=0 spamscore=0 bulkscore=0 lowpriorityscore=0 clxscore=1015 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608240134 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: 1787587186264158500 Content-Type: text/plain; charset="utf-8" The Hexagon semihosting ABI extends the arm-compatible set with operations like OPEN, WRITECREG, WRITE0, ISTTY, STAT, FSTAT, FTELL, SEEK, FTRUNC, ACCESS, and GETCWD. Implement these trap0 handlers so that baremetal programs using the standard Hexagon simulator ABI can perform file I/O when running on qemu-system-hexagon. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier Reviewed-by: Brian Cain Signed-off-by: Matheus Tavares Bernardino --- include/semihosting/common-semi.h | 1 + semihosting/arm-compat-semi.c | 2 +- target/hexagon/hexswi.c | 290 +++++++++++++++++++++++++++++- 3 files changed, 291 insertions(+), 2 deletions(-) diff --git a/include/semihosting/common-semi.h b/include/semihosting/common= -semi.h index a11905ef4e..1e7699d7bb 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 c54753f696..b930a02864 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 a5d56fb844..fe588d9489 100644 --- a/target/hexagon/hexswi.c +++ b/target/hexagon/hexswi.c @@ -85,6 +85,41 @@ static inline bool is_hexagon_specific_swi_flag(enum hex= _swi_flag what_swi) } #undef DEF_SWI_FLAG =20 +static const unsigned int angel_to_host_filemode_table[] =3D { + O_RDONLY, + O_RDONLY | O_BINARY, + O_RDWR, + O_RDWR | O_BINARY, + O_WRONLY | O_CREAT | O_TRUNC, + O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, + O_RDWR | O_CREAT | O_TRUNC, + O_RDWR | O_CREAT | O_TRUNC | O_BINARY, + O_WRONLY | O_APPEND | O_CREAT, + O_WRONLY | O_APPEND | O_CREAT | O_BINARY, + O_RDWR | O_APPEND | O_CREAT, + O_RDWR | O_APPEND | O_CREAT | O_BINARY, + O_RDWR | O_CREAT, + O_RDWR | O_CREAT | O_EXCL +}; + +/* + * This must match the caller's definition, it would be in the + * caller's angel.h or equivalent header. + */ +struct __SYS_STAT { + uint64_t dev; + uint64_t ino; + uint32_t mode; + uint32_t nlink; + uint64_t rdev; + uint32_t size; + uint32_t __pad1; + uint32_t atime; + uint32_t mtime; + uint32_t ctime; + uint32_t __pad2; +} sys_stat; + static void init_semihosting_guestfds(void) { static gsize initialized; @@ -119,10 +154,19 @@ static void do_preload(CPUHexagonState *env, target_u= long swi_info, bool load) hexagon_peek_memory_range(env, addr, count, retaddr); } =20 +static void common_semi_ftell_cb(CPUState *cs, uint64_t ret, int err) +{ + if (err) { + ret =3D -1; + } + common_semi_cb(cs, ret, err); +} + static void sim_handle_trap0(CPUHexagonState *env) { target_ulong what_swi, swi_info; CPUState *cs =3D env_cpu(env); + uintptr_t retaddr =3D 0; =20 g_assert(bql_locked()); init_semihosting_guestfds(); @@ -177,7 +221,251 @@ static void sim_handle_trap0(CPUHexagonState *env) } break; =20 - /* TODO: implement other hexagon-specific semihosting calls */ + case HEX_SYS_OPEN: + { + char filename[BUFSIZ]; + target_ulong physical_filename_addr; + unsigned int filemode; + int length; + int real_openmode; + int ret, err =3D 0; + int i =3D 0; + + hexagon_read_memory(env, swi_info, 4, &physical_filename_addr, ret= addr); + hexagon_read_memory(env, swi_info + 4, 4, &filemode, retaddr); + hexagon_read_memory(env, swi_info + 8, 4, &length, retaddr); + + if (length >=3D BUFSIZ) { + qemu_log_mask(LOG_GUEST_ERROR, + "%s: filename too large (%d)\n", + __func__, length); + common_semi_cb(cs, -1, ENAMETOOLONG); + break; + } + + do { + hexagon_read_memory(env, physical_filename_addr + i, 1, &filen= ame[i], + retaddr); + i++; + } while (filename[i - 1]); + + /* convert ARM ANGEL filemode into host filemode */ + if (filemode < ARRAY_SIZE(angel_to_host_filemode_table)) { + real_openmode =3D angel_to_host_filemode_table[filemode]; + } else { + qemu_log_mask(LOG_GUEST_ERROR, + "%s: invalid OPEN mode: %u\n", + __func__, filemode); + common_semi_cb(cs, -1, EINVAL); + break; + } + + if (strcmp(filename, ":tt") =3D=3D 0 && + qemu_semihosting_console_has_chardev()) { + ret =3D alloc_guestfd(); + console_guestfd(ret); + } else { + ret =3D open(filename, real_openmode | O_BINARY, 0644); + + if (ret =3D=3D -1) { + err =3D errno; + } else { + int guestfd =3D alloc_guestfd(); + associate_guestfd(guestfd, ret); + ret =3D guestfd; + } + } + common_semi_cb(cs, ret, err); + } + break; + + case HEX_SYS_WRITECREG: + { + char c =3D swi_info; + qemu_semihosting_console_write(&c, 1); + } + break; + + /* + * Hexagon's SYS_ISTTY is a bit different than arm's: we do not return= -1 + * on error, neither errno. So we override with our own implementation. + */ + case HEX_SYS_ISTTY: + { + int fd; + hexagon_read_memory(env, swi_info, 4, &fd, retaddr); + common_semi_cb(cs, isatty(fd), 0); + } + break; + + case HEX_SYS_SEEK: + { + int fd; + target_ulong off; + hexagon_read_memory(env, swi_info, 4, &fd, retaddr); + hexagon_read_memory(env, swi_info + 4, 4, &off, retaddr); + semihost_sys_lseek(env_cpu(env), common_semi_ftell_cb, fd, off, + GDB_SEEK_SET); + } + break; + + case HEX_SYS_STAT: + case HEX_SYS_FSTAT: + { + struct stat st_buf; + uint8_t *st_bufptr =3D (uint8_t *)&sys_stat; + int rc, err =3D 0; + char filename[BUFSIZ]; + target_ulong physical_filename_addr; + target_ulong statBufferAddr; + hexagon_read_memory(env, swi_info, 4, &physical_filename_addr, ret= addr); + + if (what_swi =3D=3D HEX_SYS_STAT) { + int i =3D 0; + do { + hexagon_read_memory(env, physical_filename_addr + i, 1, + &filename[i], retaddr); + i++; + } while ((i < BUFSIZ) && filename[i - 1]); + rc =3D stat(filename, &st_buf); + err =3D errno; + } else { + int fd =3D physical_filename_addr; + GuestFD *gf =3D get_guestfd(fd); + if (!gf || gf->type !=3D GuestFDHost) { + qemu_log_mask(LOG_UNIMP, + "fstat semihosting only implemented" + " for native mode\n"); + g_assert_not_reached(); + } + rc =3D fstat(gf->hostfd, &st_buf); + err =3D errno; + } + if (rc =3D=3D 0) { + sys_stat.dev =3D cpu_to_le64(st_buf.st_dev); + sys_stat.ino =3D cpu_to_le64(st_buf.st_ino); + sys_stat.mode =3D cpu_to_le32(st_buf.st_mode); + sys_stat.nlink =3D cpu_to_le32((uint32_t) st_buf.st_nlink); + sys_stat.rdev =3D cpu_to_le64(st_buf.st_rdev); + sys_stat.size =3D cpu_to_le32((uint32_t) st_buf.st_size); + sys_stat.atime =3D cpu_to_le32(st_buf.st_atime); + sys_stat.mtime =3D cpu_to_le32(st_buf.st_mtime); + sys_stat.ctime =3D cpu_to_le32(st_buf.st_ctime); + } + hexagon_read_memory(env, swi_info + 4, 4, &statBufferAddr, retaddr= ); + + for (int i =3D 0; i < sizeof(sys_stat); i++) { + hexagon_write_memory(env, statBufferAddr + i, 1, st_bufptr[i], + retaddr); + } + common_semi_cb(cs, rc, rc =3D=3D 0 ? 0 : err); + } + break; + + case HEX_SYS_FTRUNC: + { + int fd; + off_t size_limit; + hexagon_read_memory(env, swi_info, 4, &fd, retaddr); + hexagon_read_memory(env, swi_info + 4, 8, &size_limit, retaddr); + semihost_sys_ftruncate(cs, common_semi_cb, fd, size_limit); + } + break; + + case HEX_SYS_ACCESS: + { + char filename[BUFSIZ]; + uint32_t FileNameAddr; + uint32_t BufferMode; + int rc; + + int i =3D 0; + + hexagon_read_memory(env, swi_info, 4, &FileNameAddr, retaddr); + do { + hexagon_read_memory(env, FileNameAddr + i, 1, &filename[i], + retaddr); + i++; + } while ((i < BUFSIZ) && (filename[i - 1])); + filename[i] =3D 0; + + hexagon_read_memory(env, swi_info + 4, 4, &BufferMode, retaddr); + + rc =3D access(filename, BufferMode); + common_semi_cb(cs, rc, rc =3D=3D 0 ? 0 : errno); + } + break; + + case HEX_SYS_GETCWD: + { + char cwdPtr[PATH_MAX]; + uint32_t BufferAddr; + uint32_t BufferSize; + uint32_t rc =3D 0, err =3D 0; + + hexagon_read_memory(env, swi_info, 4, &BufferAddr, retaddr); + hexagon_read_memory(env, swi_info + 4, 4, &BufferSize, retaddr); + + if (!getcwd(cwdPtr, PATH_MAX)) { + err =3D errno; + } else { + size_t cwd_size =3D strlen(cwdPtr); + if (cwd_size > BufferSize) { + err =3D ERANGE; + } else { + for (int i =3D 0; i < cwd_size; i++) { + hexagon_write_memory(env, BufferAddr + i, 1, + (uint64_t)cwdPtr[i], retaddr); + } + rc =3D BufferAddr; + } + } + common_semi_cb(cs, rc, rc !=3D 0 ? 0 : err); + break; + } + + case HEX_SYS_EXEC: + { + qemu_log_mask(LOG_UNIMP, "SYS_EXEC is deprecated\n"); + common_semi_cb(cs, -1, ENOSYS); + } + break; + + case HEX_SYS_FTELL: + { + int fd; + hexagon_read_memory(env, swi_info, 4, &fd, retaddr); + semihost_sys_lseek(cs, common_semi_ftell_cb, fd, 0, GDB_SEEK_CUR); + } + break; + + case HEX_SYS_READ_CYCLES: + case HEX_SYS_READ_TCYCLES: + case HEX_SYS_READ_ICOUNT: + { + env->gpr[HEX_REG_R00] =3D 0; + env->gpr[HEX_REG_R01] =3D 0; + break; + } + + case HEX_SYS_READ_PCYCLES: + { + env->gpr[HEX_REG_R00] =3D hexagon_get_sys_pcycle_count_low(env); + env->gpr[HEX_REG_R01] =3D hexagon_get_sys_pcycle_count_high(env); + break; + } + + case HEX_SYS_PROF_ON: + case HEX_SYS_PROF_OFF: + case HEX_SYS_PROF_STATSRESET: + case HEX_SYS_DUMP_PMU_STATS: + case HEX_SYS_HEAPINFO: + common_semi_cb(cs, -1, ENOSYS); + qemu_log_mask(LOG_UNIMP, + "SWI call %" PRIx32 + " is unimplemented in QEMU\n", + (uint32_t)what_swi); + break; =20 default: qemu_log_mask(LOG_UNIMP, --=20 2.37.2 From nobody Sat Sep 26 21:35:35 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=1787587190; cv=none; d=zohomail.com; s=zohoarc; b=MuY2FYYwVRNruJ7mJGn6hYYHk7aQJ3LHseg+pJ9DjD70wIhqd1RZz0UNLJvRQQfxoFXX6iQ9vgnPJU5fVYvfmoc51R83s3JN0420/H6bTeuJhlRhwEI2pTE4q/FRVhB7E89edgAL2v+6FpSwq2G5WqfRM9Pm4Kr5qhJxcZ9XrpY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787587190; 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=5Q3vSgaRBArgnEpEaaVnRHY3RuijklXgIkOH4pqcrtk=; b=JYNXOAABUp5y/oor7takFldN9t0R3fS2Bx2MKyiLmaPFbFVpqYjMI6jmVEcoqZjzW0m2NBgCm8qEmyZUakbwJt34pUzgulyn5UTyCQSHr28vC+7TQkpsu6T/CRnDHgNtzRxaG1gOteNK27pLLL16yo6oRt8QFgfNYWB5n6zWUE4= 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 1787587190330679.7912517449051; Mon, 24 Aug 2026 08:59:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wyX4a-0005F2-H1; Mon, 24 Aug 2026 11:58: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 1wyX4X-0005EJ-Qk for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58:53 -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 1wyX4U-0001mm-4w for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58:52 -0400 Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67OFn4hB3235077 for ; Mon, 24 Aug 2026 15:58:39 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 4g8gqnab1g-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 24 Aug 2026 15:58:38 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-388b404eaa4so5723332a91.0 for ; Mon, 24 Aug 2026 08:58: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 a92af1059eb24-14186183c0esm41152935c88.12.2026.08.24.08.58.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 08:58: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=5Q3vSgaRBAr gnEpEaaVnRHY3RuijklXgIkOH4pqcrtk=; b=ePcsD1Vl73CrqndNzk3gn9OupDv DtPY5aT1CGKQfnElmoacHzP+OnoK2TZTOMhdcg4/juo1aaCfBHlZ1Yo7UEmSWykK fqWp/vNuAcDxOoDpBP9+sxUHOmdhPx1Uk97wF6B2wBCiQUuTu+NS0DLBUFUnsgKj ONfOj7cZYPH0klKdOTSFIgpjORnmkc6incomsHK4pAuwwJvnNjzMDVjuOJiQKpiG ztK9JLA1W2P5YC+QSpglGmJmXiivqvunwKVuSClUIKZ0UEXHrSo+Xm+aUYH6bBZW uVE9KYNKTUoiMRvtveWc2Nwu7Hlsz1jdsdnqZHVqrUXH2FmqBsVW7JE1JWg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787587118; x=1788191918; 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=5Q3vSgaRBArgnEpEaaVnRHY3RuijklXgIkOH4pqcrtk=; b=RwOjJXMiAGFpHR8N3aR48YDZaF2cL+zY0RzyGnrfhXI5g3r+QDZvMSzqicX5hy9xHL /rR+GCn2mOTYCG9jpfygaIgGhMHtwPd6P0Kp/9AG20GTYcEnQ3UEpDGqv2wCYhvgPycG htI7YMrqjV2WT32WrT14Dmh2LjK2YJPjTegi3nlpbwn7AFPf1/X9paXnuaGVoDeam2Tf L1E07A5TDq3z5gWCg9yOZs0iVXbDPlIdpdhbkw8YxSP1lFeSrXAc04gMDfIbyov2HhCg 1/LMCs48oGgtyg/uanWZkDbpIv9Y9cAMwnBQRwFEWtnSzoqczrZP6wXoqVNqGs056jTB SfCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787587118; x=1788191918; 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=5Q3vSgaRBArgnEpEaaVnRHY3RuijklXgIkOH4pqcrtk=; b=tSM5qqepKrSMa4DqzhThND/2K7wbt6Q6en1j8kd5ZIQ5Ha4BNgLJXza2WHksPhgCr1 eqCf8EKRhrWtkM/8b5YOYdzns0Jr8rSHjDP+EK+yJeR2Z+jv4q4q60wd7HIpjFDXTxqW LQy2PTFXHiQEzColGNwoOPI/RZ+414jVtI5FgTHlrpH5htXZTKsxX8gS7vX+QoU9Lc3K REURYWdsp0Q6HaRYEj6gd3ypFyNMqvZJ80c51GKCXG99sv1bSXyfMbdMTAjluSYx6gQ0 lO0gw6RirZ38Msw83NC9xrjpSrxpTKhusgCF4NkdmMlNqUKm+nE43TcTm63CPnbNgQgj Herw== X-Gm-Message-State: AFuF++mE/4EsgyWrNujY4TlIvOFx9vtDK+EmtkSSTATmB2tPD3AWkq7y JTHxvSciOEcaOaDKssN5HxRWAYcimBdHFT2yJMXdkifwCkQlPPxyfzmZn10e280A2SCPtRDCLCR 92AxjB6FHdlHp8+vYkbi8vIniEgCjOkka0RWROyn1uSICT9HD8ad1j4LYrFtFd8IgOAx7 X-Gm-Gg: AR+sD133Ua0+6L4q/d1xTgnAm1fX+ZLb8VePQBULpRizoYHCHvJZMgajmOELxc2crBn PNaiGb+IsfX/iH+zpK5/bzR1ge4E839nCv5tJtIOQmnmZ1aqa6d8VL6r8kusA+J/TRYJn97L0GA /a1SkMGrBqtSfvwamOEPdodHVKNU5xJGkkGf57OtYXucFXjka1g84q6jqQRvJDacK+J8KBoabh5 SgTjiw22odizYovAS//e8tmVqBuNAK7hbQF01nyeVPjalHLI6zRG3j00hMavIQLWAWEAuQbYiAs 8xWvtY5F4XaQigL+96s1FNUHZQbnZJerhB4y3KyL5iuR3yFuiqaHzj+1X5xtCNjVIH0jBIfHz4S 7z7bcd6jemdqFbIg00ff+MYQcT/RAl3GMaiXlUtOG44qo9AJ6dYWBWIkXhki7xMY= X-Received: by 2002:a17:90b:3911:b0:38e:2860:253f with SMTP id 98e67ed59e1d1-395df2926d9mr33657376a91.12.1787587117925; Mon, 24 Aug 2026 08:58:37 -0700 (PDT) X-Received: by 2002:a17:90b:3911:b0:38e:2860:253f with SMTP id 98e67ed59e1d1-395df2926d9mr33657262a91.12.1787587117423; Mon, 24 Aug 2026 08:58:37 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: ale@rev.ng, anjo@rev.ng, brian.cain@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com Subject: [PATCH v4 11/14] target/hexagon: add COREDUMP semihosting operation Date: Mon, 24 Aug 2026 08:58:20 -0700 Message-Id: <0664a4a5a9f85a4d61a03f5159f0a76bd2c9e0f3.1787586642.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: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfX2B3F15iBcQjJ 8DeTuKXPP7WcGmxX2lA/XuAOQnMRKxuPkVR/98rUcjUnGMbOSNL1Ks9jth7RKcXMLURWCgiO6fK 2PQlWQU6EImxLmoSxAAzBospLdfB54I= X-Proofpoint-GUID: K7ISaOc_vWkH1vrpcwroAWbj_kjyCrI0 X-Authority-Analysis: v=2.4 cv=fqXsol4f c=1 sm=1 tr=0 ts=6a8c6a2e cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=BE4lvaXKYeXNScGiURoA:9 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfX/VU6Q+KAVgI6 MhG6l471eKXhAAR9Uxhd+bOalY+VwtSt++Smw3YBGKSCJTiEadQAsQ9Q8juabq89TEmQscP9dwK 3+JvLrn9sT256x/FAPFPq6uNuIyc2/8/PhcnFfJ+U9XZeIbwc9jb60Us2Cvb3JpifU6v/zQ3Rna eHfy7mm9kTBBFMLaA1FNKFt1CwlJLi8iEc7ZTBt8MNmvbofpwb9XMYg11noQMM+2H4VhZBvmMAJ avBcW34suBrtyqNfEqHvLd4VpSOVXkcM47jcc8HF2VYR2/9kwY7o4xnqg7CJJeorfMx2Asc2Ue4 X1sUMLcZV7YWjQgRoTauaSsbwz8qTvhFeD6Ab346n5sMTXLeirtN8gi4kSXyUL+KFCSKjG8KW9m SQbRbTy2WGCKrwqSR9aC0ZyJmcNNM4V4BvAWOb+yyme7SCRNkSs6qsl1uwG3eyLUBAx+5ifMjfp vXvj/UNI3ENudR6nA/A== X-Proofpoint-ORIG-GUID: K7ISaOc_vWkH1vrpcwroAWbj_kjyCrI0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-24_05,2026-08-24_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 impostorscore=0 phishscore=0 clxscore=1015 spamscore=0 lowpriorityscore=0 suspectscore=0 malwarescore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608240134 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: 1787587192192158500 Content-Type: text/plain; charset="utf-8" Baremetal Hexagon programs invoke SYS_COREDUMP (0xCD) through semihosting to dump CPU state on a fatal exception. Implement the handler to decode the SSR cause field and print the full register file, matching hexagon-sim behavior. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier Signed-off-by: Matheus Tavares Bernardino --- target/hexagon/cpu.c | 2 +- target/hexagon/hexswi.c | 136 ++++++++++++++++++++++++++++++++++++++ target/hexagon/internal.h | 1 + 3 files changed, 138 insertions(+), 1 deletion(-) diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index 134fbb2cfa..acb1715a4d 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -235,7 +235,7 @@ void hexagon_debug_qreg(CPUHexagonState *env, int regnu= m) print_qreg(stdout, env, regnum, false); } =20 -static void hexagon_dump(CPUHexagonState *env, FILE *f, int flags) +void hexagon_dump(CPUHexagonState *env, FILE *f, int flags) { HexagonCPU *cpu =3D env_archcpu(env); =20 diff --git a/target/hexagon/hexswi.c b/target/hexagon/hexswi.c index fe588d9489..5e7f655a41 100644 --- a/target/hexagon/hexswi.c +++ b/target/hexagon/hexswi.c @@ -162,6 +162,138 @@ static void common_semi_ftell_cb(CPUState *cs, uint64= _t ret, int err) common_semi_cb(cs, ret, err); } =20 +static void coredump(CPUHexagonState *env) +{ + uint32_t ssr =3D env->t_sreg[HEX_SREG_SSR]; + FILE *f =3D qemu_log_trylock(); + + if (!f) { + return; + } + + fprintf(f, "CRASH!\n"); + fprintf(f, "I think the exception was: "); + switch (GET_SSR_FIELD(SSR_CAUSE, ssr)) { + case 0x43: + fprintf(f, "0x43, NMI"); + break; + case 0x42: + fprintf(f, "0x42, Data abort"); + break; + case 0x44: + fprintf(f, "0x44, Multi TLB match"); + break; + case HEX_CAUSE_BIU_PRECISE: + fprintf(f, "0x%x, Bus Error (Precise BIU error)", + HEX_CAUSE_BIU_PRECISE); + break; + case HEX_CAUSE_DOUBLE_EXCEPT: + fprintf(f, "0x%x, Exception observed when EX =3D 1" + " (double exception)", + HEX_CAUSE_DOUBLE_EXCEPT); + break; + case HEX_CAUSE_FETCH_NO_XPAGE: + fprintf(f, "0x%x, Privilege violation: User/Guest mode execute" + " to page with no execute permissions", + HEX_CAUSE_FETCH_NO_XPAGE); + break; + case HEX_CAUSE_FETCH_NO_UPAGE: + fprintf(f, "0x%x, Privilege violation: " + "User mode execute to page with no user permissions", + HEX_CAUSE_FETCH_NO_UPAGE); + break; + case HEX_CAUSE_INVALID_PACKET: + fprintf(f, "0x%x, Invalid packet", + HEX_CAUSE_INVALID_PACKET); + break; + case HEX_CAUSE_PRIV_USER_NO_GINSN: + fprintf(f, "0x%x, Privilege violation:" + " guest mode insn in user mode", + HEX_CAUSE_PRIV_USER_NO_GINSN); + break; + case HEX_CAUSE_PRIV_USER_NO_SINSN: + fprintf(f, "0x%x, Privilege violation: " + "monitor mode insn in user/guest mode", + HEX_CAUSE_PRIV_USER_NO_SINSN); + break; + case HEX_CAUSE_REG_WRITE_CONFLICT: + fprintf(f, "0x%x, Multiple writes to same register", + HEX_CAUSE_REG_WRITE_CONFLICT); + break; + case HEX_CAUSE_PC_NOT_ALIGNED: + fprintf(f, "0x%x, PC not aligned", + HEX_CAUSE_PC_NOT_ALIGNED); + break; + case HEX_CAUSE_MISALIGNED_LOAD: + fprintf(f, "0x%x, Misaligned Load @ 0x%" PRIx32, + HEX_CAUSE_MISALIGNED_LOAD, env->t_sreg[HEX_SREG_BADVA]); + break; + case HEX_CAUSE_MISALIGNED_STORE: + fprintf(f, "0x%x, Misaligned Store @ 0x%" PRIx32, + HEX_CAUSE_MISALIGNED_STORE, env->t_sreg[HEX_SREG_BADVA]); + break; + case HEX_CAUSE_PRIV_NO_READ: + fprintf(f, "0x%x, Privilege violation: " + "user/guest read permission @ 0x%" PRIx32, + HEX_CAUSE_PRIV_NO_READ, env->t_sreg[HEX_SREG_BADVA]); + break; + case HEX_CAUSE_PRIV_NO_WRITE: + fprintf(f, "0x%x, Privilege violation: " + "user/guest write permission @ 0x%" PRIx32, + HEX_CAUSE_PRIV_NO_WRITE, env->t_sreg[HEX_SREG_BADVA]); + break; + case HEX_CAUSE_PRIV_NO_UREAD: + fprintf(f, "0x%x, Privilege violation:" + " user read permission @ 0x%" PRIx32, + HEX_CAUSE_PRIV_NO_UREAD, env->t_sreg[HEX_SREG_BADVA]); + break; + case HEX_CAUSE_PRIV_NO_UWRITE: + fprintf(f, "0x%x, Privilege violation:" + " user write permission @ 0x%" PRIx32, + HEX_CAUSE_PRIV_NO_UWRITE, env->t_sreg[HEX_SREG_BADVA]); + break; + case HEX_CAUSE_COPROC_LDST: + fprintf(f, "0x%x, Coprocessor VMEM address error @ 0x%" PRIx32, + HEX_CAUSE_COPROC_LDST, env->t_sreg[HEX_SREG_BADVA]); + break; + case HEX_CAUSE_STACK_LIMIT: + fprintf(f, "0x%x, Stack limit check error", + HEX_CAUSE_STACK_LIMIT); + break; + case HEX_CAUSE_FPTRAP_CAUSE_BADFLOAT: + fprintf(f, "0x%x, Floating-Point: Execution of Floating-Point " + "instruction resulted in exception", + HEX_CAUSE_FPTRAP_CAUSE_BADFLOAT); + break; + case HEX_CAUSE_NO_COPROC_ENABLE: + fprintf(f, "0x%x, Illegal Execution of Coprocessor Instruction", + HEX_CAUSE_NO_COPROC_ENABLE); + break; + case HEX_CAUSE_NO_COPROC2_ENABLE: + fprintf(f, "0x%x, Illegal Execution of Secondary" + " Coprocessor Instruction", + HEX_CAUSE_NO_COPROC2_ENABLE); + break; + case HEX_CAUSE_UNSUPPORTED_HVX_64B: + fprintf(f, "0x%x, Unsupported Execution of" + " Coprocessor Instruction with 64bits Mode On", + HEX_CAUSE_UNSUPPORTED_HVX_64B); + break; + case HEX_CAUSE_VWCTRL_WINDOW_MISS: + fprintf(f, "0x%x, Thread accessing a region" + " outside VWCTRL window", + HEX_CAUSE_VWCTRL_WINDOW_MISS); + break; + default: + fprintf(f, "unknown cause 0x%" PRIx32, + GET_SSR_FIELD(SSR_CAUSE, ssr)); + break; + } + fprintf(f, "\nRegister Dump:\n"); + hexagon_dump(env, f, 0); + qemu_log_unlock(f); +} + static void sim_handle_trap0(CPUHexagonState *env) { target_ulong what_swi, swi_info; @@ -431,6 +563,10 @@ static void sim_handle_trap0(CPUHexagonState *env) } break; =20 + case HEX_SYS_COREDUMP: + coredump(env); + break; + case HEX_SYS_FTELL: { int fd; diff --git a/target/hexagon/internal.h b/target/hexagon/internal.h index 00b37aea7a..05d1129916 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 --=20 2.37.2 From nobody Sat Sep 26 21:35:35 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=1787587206; cv=none; d=zohomail.com; s=zohoarc; b=LKiumWCRxgtofpIFLlLfQxE6W9s7ovAOF40CNGy3pOWQ3PgK9qEPzN/6ly2EYVJ/Su5QWTMn+aB2l09t1vZm3vc3UiWs5iEAtD8ojW4JI8/HoafDOBL8jL/ptNj8Wme85k8kC1rqL8opSC7nMeeL7rXMMCK21v2i6nEQsNXJv0M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787587206; 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=9VP2vzmVYnR6y2Yhag3ZqdM+ahnS/XbdmwVSsgRHoMY=; b=fJQK3PvgZ+rpgw72MdaJHB9ra4kA970Ot3eCwitsmgIL/S1MR8GDHlcAVLZeOeKrq9D+nHSxMopgN3cEtqw7rCEYD7E1thEMokGumYbk1hPgOKgVtv8t4f1FGkorfPvjJHlA+4asQVYfOYMFeBFga8USVruTMGoYOz8EDcFv3m4= 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 1787587206412775.9365517565408; Mon, 24 Aug 2026 09:00:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wyX4b-0005Fj-EK; Mon, 24 Aug 2026 11:58:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wyX4Y-0005EZ-8D for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58: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 1wyX4V-0001n6-18 for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58:53 -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 67OFncW33785230 for ; Mon, 24 Aug 2026 15:58:40 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 4g8hjgt4tx-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 24 Aug 2026 15:58:39 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-38dbf293831so9019a91.3 for ; Mon, 24 Aug 2026 08:58: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 a92af1059eb24-14186183c0esm41152935c88.12.2026.08.24.08.58.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 08:58: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=9VP2vzmVYnR 6y2Yhag3ZqdM+ahnS/XbdmwVSsgRHoMY=; b=WX7MVh+DNftDLD9etPKo8z2SWsc txub7+7sCcCLeprO8zXGpb3J6YAz5/Dqi468b7PItov3z9YuXGgkceg63Zhm2DIr M+jyi4Oz7G68GqSx6bBYZ8r0p7NKRYvEMF9BdarCNQFpbnwW+fIXo6sZbf5dnTk5 ADBQ/9ERIGP/8E2t2QgGwGsHThkeiFPH77wdjkbwGJqYH6djUNOcr1IQh9xNY+nK iG/TU/u/GUaq1YdC3PF0QYd6njnf2OKB+LykU/8VAqtkqGJuzzrHZ0K7YGIPc3Wn AMzwBvifcJAt0Pd0jik0oinrAMJatwMCDbkJoYLPIyKFv3CngoawWJYRZgw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787587119; x=1788191919; 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=9VP2vzmVYnR6y2Yhag3ZqdM+ahnS/XbdmwVSsgRHoMY=; b=dunkNEMw48ke6bhHYnuLDXmW9TilKXYOos0gixC6XoFaGE5kLSWLvFd03XfL+VM5K6 jXkG0t9qXkt+xjzyMsaJxO2fOuZ63h+arAr8ZY6lXo72nyVsW61w1TpRR1pVG7yKGCJS MT44PJaT88e3Vhc7ntrQeyejulArEMGMgxBsp9UHaC3m4uwIK1Q6lIiMvkf7o3MPU/bs 7av8XlKGssiavcyfg1pYy+b9JMczSbIY8JqBoEOe93sXCU/m+1Jzvo4j1548FgnKrIWQ vvFgYohkGAzcjimRa0zoNCRmwudiINz9yXROz0klM61K/8+eIYecytY4DsUaMDeeukaN bPfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787587119; x=1788191919; 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=9VP2vzmVYnR6y2Yhag3ZqdM+ahnS/XbdmwVSsgRHoMY=; b=B+yGGXnXgPe1LEADKYONrfc1OGBiSS4yZWzhaahcsNA2CR3igah+56s+8Xk8MD+nbS 4OBKBfDBTaQ3g4cPDSZjs9dBj6y/lO5Gvt6PB+6q2yeEDlo1DLhN5ZPPJfmyvhmHe1wi aK2rGwetD5ayTsbLhjZ6DylcVs9g2y068b2AnS4Bw3eJ6uyRXGt6jclfeP0XbhOU0LOI HnMpb2d0gMei2LWl9D1K9VEIgeCSd7Bh9RTJ/1IBVwbCxIFIR0Df1l5fe+JoAoSZU84d I1d18es5NpYWNMq55OCj2fCf9/fgBCsBeQ4DQWEugLKEOH730She0GBDjjGf9m6RWwVx /owg== X-Gm-Message-State: AFuF++lkR6iPFT1dUWSy75DxeFy5mStpR3JgLbPcNf2Z7bGO95bstnLZ uPBSIsRw+PiFz0k6sqCWbqM+NncnYHJFZtvOUj8AdGu5yQhIK2wjEW5dYyhYaXTNZrQhglZebie 9xsHDueB+eu5ulwkRvlOcXieokvB4AVWQd+gIbfyAtiVsIc+jhFK+J9FdGyPAu7UOF7rH X-Gm-Gg: AR+sD13z3uAsf0wobMW8sZKqSTtqaNHP0AzRek8qoHx6TrUw4z4Y7kgPPy+vwUBL9YR yJ3KKbonxsYsUcikLXbDkwPUTSbjRCMpfycjKziUs4iabaLhdV+QhfdFkWRvMUQSWF7Uiq+eH9J cuwH62NXkIK0Dt2/A/nrZ9nWZ1xqmWvjXyP3r0ZFVGoooD3cYwkzwsQ0o+aqL5UjEATx2EzZhW3 M25CVS6AgKXCAX6TreUgQnMh67jwJpK+pu2w4rKyTLfzINECgzvuCYSvMwA9ADJsoiz2jDoQaf0 UDm4V63h+SOCL0H54/sRw1OQ7o21CKpy0b/UIut2EpOIiTTrBLxAo3Q6un844fkfx2Tr4WnwTb/ aA6i/BEvwLGeRaiVhYv9KzyQrqcRGun7Ay+Jgr2UEpjP+i2EkRWFCYHq81idsDyE= X-Received: by 2002:a17:90b:5846:b0:38e:49c0:75a7 with SMTP id 98e67ed59e1d1-395c3718ee4mr53863897a91.8.1787587118783; Mon, 24 Aug 2026 08:58:38 -0700 (PDT) X-Received: by 2002:a17:90b:5846:b0:38e:49c0:75a7 with SMTP id 98e67ed59e1d1-395c3718ee4mr53863789a91.8.1787587118315; Mon, 24 Aug 2026 08:58:38 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: ale@rev.ng, anjo@rev.ng, brian.cain@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com Subject: [PATCH v4 12/14] target/hexagon: Add an errno mapping Date: Mon, 24 Aug 2026 08:58:21 -0700 Message-Id: <71b686df7f3a63cf5812b3b05808b9c34e975f65.1787586642.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: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfX0TvSySUppiuR Y8B/mFtdy6Kph5HZ6Y5ZQtRmilnUYrJKtuq5gzqLCsILqcF2sUx9gDaLo5pnEAZocF93hsixNdB 9o7UUSqanitV5WjoJZIoC6MKEP3YtgQ= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfXxBsMG73fUfFB zjyiSm5PDGOqbgw+fkdZabrLVXPq7X/mljpPxxDT9z5zcFa+0qUrL1WkmUcsl+B3tVkZyjkHt05 r6H3m6F3sBjjRYhoIBvm5qcDi76gZ8MbXntN7xGmCogocCGPCLkxJDZkCGTDuwKeNk0hoVWIneJ M9xkt5B8rmt0mdP4CQrpT4TizIl76LiTsXjX6h/cIN9Iy3RkCLXNnywD6EHPnohvssvQ+UP6nHT thG3F+Z1Ud7Dq5ZfckgAKTdEtgaEMeAumoA80D78puFbszFKPCybomSj5JfhgkocvDoZ0ZSxdxV eVRf8aRnlgOw68gJYw+PIWSIgwAwNrE6Uo1YfVKV20PzzF992pjVp3aUAbSHuayFmRL+CmT846I /zkN+3rqzMi5rDg67wjW/Th5NiWeJWMUpzX9Y8zn7hXmi43lzCkJG/i4R1oQhAU4SwW6DsaywXX XudvaEjLbIupJmm4VXw== X-Proofpoint-ORIG-GUID: Filicwn2uhDT_U6TBx_4nwTb4zrJbBiQ X-Authority-Analysis: v=2.4 cv=CoCPtH4D c=1 sm=1 tr=0 ts=6a8c6a2f cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=JV9Q9KcNIqeBpUAahVgA:9 a=mQ_c8vxmzFEMiUWkPHU9:22 X-Proofpoint-GUID: Filicwn2uhDT_U6TBx_4nwTb4zrJbBiQ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-24_05,2026-08-24_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 priorityscore=1501 malwarescore=0 phishscore=0 bulkscore=0 adultscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608240134 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: 1787587208481158500 Content-Type: text/plain; charset="utf-8" From: Brian Cain The Hexagon semihosting ABI defines its own errno values which may differ from the host's. Translate host errno to the Hexagon-specific values before returning results to the guest so that baremetal programs see the expected error codes. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier Signed-off-by: Matheus Tavares Bernardino --- target/hexagon/hexswi.c | 105 +++++++++++++++++++++++++++++++++++----- 1 file changed, 93 insertions(+), 12 deletions(-) diff --git a/target/hexagon/hexswi.c b/target/hexagon/hexswi.c index 5e7f655a41..a50ab22554 100644 --- a/target/hexagon/hexswi.c +++ b/target/hexagon/hexswi.c @@ -154,12 +154,93 @@ static void do_preload(CPUHexagonState *env, target_u= long swi_info, bool load) hexagon_peek_memory_range(env, addr, count, retaddr); } =20 +/* Hexagon semihosting errno values */ +enum { + TARGET_EPERM =3D 1, + TARGET_ENOENT =3D 2, + TARGET_EINTR =3D 4, + TARGET_EIO =3D 5, + TARGET_ENXIO =3D 6, + TARGET_EBADF =3D 9, + TARGET_EAGAIN =3D 11, + TARGET_ENOMEM =3D 12, + TARGET_EACCES =3D 13, + TARGET_EFAULT =3D 14, + TARGET_EBUSY =3D 16, + TARGET_EEXIST =3D 17, + TARGET_EXDEV =3D 18, + TARGET_ENODEV =3D 19, + TARGET_ENOTDIR =3D 20, + TARGET_EISDIR =3D 21, + TARGET_EINVAL =3D 22, + TARGET_ENFILE =3D 23, + TARGET_EMFILE =3D 24, + TARGET_ENOTTY =3D 25, + TARGET_ETXTBSY =3D 26, + TARGET_EFBIG =3D 27, + TARGET_ENOSPC =3D 28, + TARGET_ESPIPE =3D 29, + TARGET_EROFS =3D 30, + TARGET_EMLINK =3D 31, + TARGET_EPIPE =3D 32, + TARGET_ERANGE =3D 34, + TARGET_ENAMETOOLONG =3D 36, + TARGET_ENOSYS =3D 38, + TARGET_ELOOP =3D 40, + TARGET_EOVERFLOW =3D 75, +}; + +/* Map host errno to hexagon semihosting errno */ +static uint32_t errno_h2g(uint32_t err) { + switch (err) { + case 0: return 0; + case EPERM: return TARGET_EPERM; + case ENOENT: return TARGET_ENOENT; + case EINTR: return TARGET_EINTR; + case EIO: return TARGET_EIO; + case ENXIO: return TARGET_ENXIO; + case EBADF: return TARGET_EBADF; + case EAGAIN: return TARGET_EAGAIN; + case ENOMEM: return TARGET_ENOMEM; + case EACCES: return TARGET_EACCES; + case EFAULT: return TARGET_EFAULT; + case EBUSY: return TARGET_EBUSY; + case EEXIST: return TARGET_EEXIST; + case EXDEV: return TARGET_EXDEV; + case ENODEV: return TARGET_ENODEV; + case ENOTDIR: return TARGET_ENOTDIR; + case EISDIR: return TARGET_EISDIR; + case EINVAL: return TARGET_EINVAL; + case ENFILE: return TARGET_ENFILE; + case EMFILE: return TARGET_EMFILE; + case ENOTTY: return TARGET_ENOTTY; + case ETXTBSY: return TARGET_ETXTBSY; + case EFBIG: return TARGET_EFBIG; + case ENOSPC: return TARGET_ENOSPC; + case ESPIPE: return TARGET_ESPIPE; + case EROFS: return TARGET_EROFS; + case EMLINK: return TARGET_EMLINK; + case EPIPE: return TARGET_EPIPE; + case ERANGE: return TARGET_ERANGE; + case ENAMETOOLONG: return TARGET_ENAMETOOLONG; + case ENOSYS: return TARGET_ENOSYS; + case ELOOP: return TARGET_ELOOP; + case EOVERFLOW: return TARGET_EOVERFLOW; + } + return TARGET_EINVAL; +} + +static void semi_cb(CPUState *cs, uint64_t ret, int err) +{ + common_semi_cb(cs, ret, errno_h2g(err)); +} + static void common_semi_ftell_cb(CPUState *cs, uint64_t ret, int err) { if (err) { ret =3D -1; } - common_semi_cb(cs, ret, err); + semi_cb(cs, ret, err); } =20 static void coredump(CPUHexagonState *env) @@ -371,7 +452,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 @@ -388,7 +469,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 @@ -407,7 +488,7 @@ static void sim_handle_trap0(CPUHexagonState *env) ret =3D guestfd; } } - common_semi_cb(cs, ret, err); + semi_cb(cs, ret, err); } break; =20 @@ -426,7 +507,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 @@ -490,7 +571,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 @@ -500,7 +581,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 @@ -524,7 +605,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 @@ -552,14 +633,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 @@ -596,7 +677,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", @@ -607,7 +688,7 @@ static void sim_handle_trap0(CPUHexagonState *env) qemu_log_mask(LOG_UNIMP, "unknown swi request: 0x%" PRIx32 "\n", (uint32_t)what_swi); - common_semi_cb(cs, -1, ENOSYS); + semi_cb(cs, -1, ENOSYS); } } =20 --=20 2.37.2 From nobody Sat Sep 26 21:35:35 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=1787587168; cv=none; d=zohomail.com; s=zohoarc; b=f/VH/JlJGkLGhhJzyHqd/n6YztQs4Yez2JtVxh7zhNfP1IkkFWldBUl3iw/u6hKHv1D421EBD+ZPFJsaYeJBiCmjBMSuq25sJerUXX2ywd6mVrDOsvpLyk40GPCUKTPt2H4/BlPIhhXBbDTOO+xn6t0ltZuVAq/t8HvAh6vPZmU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787587168; 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=UDeojLsNz6nZHUk7ltxgu8zRajFPrf17pQGtap9RkYY=; b=b3au5lAwixP3mhpJr89U3ch88j1nO35NX/h2c17xnm+ZMVqKkJGJm+ag0uvwt5Y+e+WwAXVmU6icaZWP6G0ux93gbzXdCqfRFcfkpBE+qhdGK+XDUZh8h5ZPUDeQR6et0kRsnkYXQEzb6Rw9rOzyaWS/8tvN/kFM/BPlUKeyvCI= 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 1787587168836861.5974681977247; Mon, 24 Aug 2026 08:59:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wyX4e-0005R4-6X; Mon, 24 Aug 2026 11:59:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wyX4Z-0005Eu-PI for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58:55 -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 1wyX4V-0001nK-V5 for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58:54 -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 67OFn11G3329650 for ; Mon, 24 Aug 2026 15:58:41 GMT Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g8j7r1xyr-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 24 Aug 2026 15:58:40 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-cbedfa3898aso3425249a12.3 for ; Mon, 24 Aug 2026 08:58: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 a92af1059eb24-14186183c0esm41152935c88.12.2026.08.24.08.58.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 08:58: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=UDeojLsNz6n ZHUk7ltxgu8zRajFPrf17pQGtap9RkYY=; b=eriQaQSCfJ00y1KEqhjX61ytAns xXQF6bPupdNgEpOyZI6Ie4LOCT0Bhl8AmZIPv27+J69yIqVp6P1+B5jSNOzGLlup NI9zqmlvd2RmDqt2kyt40GsSLCKyxtSyvw9ak4gUFbnW9nFY2ROZaUIqFQiA6r1Q Uk07TcB0yxCRPuhQRHb4+qm0KpvmqYYlxn+Opr1UnLdbFr6tYgkXoY9VVOvyMCFJ /QOlCZsG3gb338uIHUzVgS6iwBOitq5EV1k0W+2wKLU2cgrBXmJzu8c6UdYQZzow IlWse1QFX36Rv3kC0Bq/oXAiSrhI/MfZGNLgxxVhki3StTXvGlKvz4XABGg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787587120; x=1788191920; 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=UDeojLsNz6nZHUk7ltxgu8zRajFPrf17pQGtap9RkYY=; b=ZwGZWTqBt6ADOR73dgN/3L4WwmzP++lMpamhv5ml8vohx5maQ8IcK5vSA1C+MTTaD1 mWbF8/bq1BN6j47Tzj4pRZQY2V3y0uggHtz1/YIuk34D4KZDgY28jIAhNHIU5iy+1XJN UkfPIJGe0rb6RkDhucnjudzv/1srDuPMrP7Mvg9hGj0aw6ADb/faee/S9Z4qN+vIeU/F NJ12wISUPJG86mfXZEwl0pFVlLelICDIU/5Ik0tJ77d6VTkPBsEqAXobXDx2p2v37Pgw PsiozwqddGUKsBMK5tH/6shum7f2FgBJV8sGP6nh/9c4K5oEKp3o0JfTzp5SCqLUWiz2 pucw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787587120; x=1788191920; 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=UDeojLsNz6nZHUk7ltxgu8zRajFPrf17pQGtap9RkYY=; b=IE/se6ULaIIkObXGq3DDB3sCSIzR4Zpz9/I4M3h5M+XSKT37ErAt2vys9tfxWImmOP V3iGU5dMEd38I5GNvwpTDXV6bWBQAFvQ4cF7PZx7sz56GrFKeBJ8XFRS2Lhz5A3gnNzz 2EQQjhJP+L++YY7XFROGupVgOf0hnB+Jwu8SWJna1qEdBC+G4Cazg3mW2+tx16SzZY07 qAvWwu1zLtBWvcLzeLnfBmH2A3Hu28eUzElQSbnYadviS+kYUkRZqeFD/1vT6XQeZSgS 3yeeLAT/ulmSVFIE2XhxZwvunCOgsP6cftGD4H6FGJAu6kxLHACgm1+Lr0nfQ/xI1Pel pfzg== X-Gm-Message-State: AFuF++m7p0Cses829DGVYKyFrH69AvIz9DqZis5/MJCEfBImdT2RCd8c XGVALU7F8OYWdgLQsVLIZuXl0ciPE4EJ836fgkGA4ZwuKt4D/ECobs+ZAxgs99kgT8Jtc8KGcTl SDmDHvuxzinv4uUVfFq/UhZqjViYasQ/S2VvEPYVutSnbJktU0Yw4IUvT6v2s9ADgSdYG X-Gm-Gg: AR+sD11qagKf+QYQgZ41bHLeFzsrnc6UXBHYRC2Ton79gwlqWbZpgTHNSUygXmLw8ln n5iMfWmrn/WbrcDtvmz3J3qFWByIj4M+yj+QT+BaKLYt3u4g5urrRQ2va9Lh400scFcDHrJhpXO +IqJp3MiEP8JAP9qlJTJg5sJxxXCfTGYlJzCyiPydFnI/VcWjh0S/mJ6waC5izbc5JA+mJx/jUT k+VUCFOlCfanXyBMSTRP+ZgFTOhH+vhihjsUirJXRpHilXbAYJilVA9MgTP6v0zL1wmnJ8uJsvV C/g1/3MvuVQ77V8WnOGFlmwOqa+RIS17oGPli7qAxibhJ/cPwUGiiu9uZy72bxdaIUOfu/FUTeg t+y0tojLTP3mHueOGGaCdbPljHBBx5nLqYZlhX2lUcXryNmypP3H1LLw88SI49N0= X-Received: by 2002:a05:6a20:12d3:b0:3c3:7cd0:fc27 with SMTP id adf61e73a8af0-3cd2fd4d795mr50484953637.3.1787587120014; Mon, 24 Aug 2026 08:58:40 -0700 (PDT) X-Received: by 2002:a05:6a20:12d3:b0:3c3:7cd0:fc27 with SMTP id adf61e73a8af0-3cd2fd4d795mr50484805637.3.1787587119581; Mon, 24 Aug 2026 08:58:39 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: ale@rev.ng, anjo@rev.ng, brian.cain@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com Subject: [PATCH v4 13/14] python/machine: support routing semihosting output to the test console Date: Mon, 24 Aug 2026 08:58: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-Spam-Details-Enc: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfX12LDdz9uykFK IiYzrSyVOVPlkahQG+gw4x1r87M/kUN9CJ2OWsyZVIsF0ZszUxfzIFtKE+Tc5+ZUGwH8gH8Tz8g I3K1IokBtTI5udYLrxKVDDJJph/l2kBkx443jppf/3RV2djJ9qxbnUkZim1n46dKW8F6+h2VQjW NgJ0jg9fnRw21cyActKYBHJK9ArvVHIF9ds+Cagykl0WDFONyapEIZnW1iyk8YmBP6mprKwT7AW nC5sndYPSugAwZjRPNaf8Zr65xpWVETDtURXaFseMVNrRrLm5E/nyoSLHBDkXxz+xDQFtxI4MWj zvQWp/J6wLdQUuM89ocuefqyw6JBn4lkgjPQOy1RwY8eixQZOQd6FUC4BXosx381Mb9as+g+OM3 f24Gv2i9Ml5lqQsnrXbwU/QZdOpkThIYkWXeFVB5iNVLj/IzFh/RcvnE9ldVoMuYIIKwQCAV9NW 9Sx3PqgZwufcy05cjpQ== X-Proofpoint-Spam-Info: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfX10xcG8HEUeKM 7JkB53r9xMKLCQivO6CH1t3RTfoKBqXlIsMH94/iCSu8o3tOmbL9Ir+lhOW8ETp5v8JvwK0SgLv yEoerR3JDW5m6qaSR7OmerwHqzDtC+I= X-Proofpoint-GUID: LOxrXTYDXd1B4QzYEczpcsARatg8rc1n X-Authority-Analysis: v=2.4 cv=IL8yzAvG c=1 sm=1 tr=0 ts=6a8c6a30 cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=3vhqsrBKo-Q0muh1UiUA:9 a=x9snwWr2DeNwDh03kgHS:22 X-Proofpoint-ORIG-GUID: LOxrXTYDXd1B4QzYEczpcsARatg8rc1n X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-24_05,2026-08-24_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 malwarescore=0 phishscore=0 priorityscore=1501 suspectscore=0 spamscore=0 bulkscore=0 lowpriorityscore=0 clxscore=1015 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608240134 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: 1787587170230158500 Content-Type: text/plain; charset="utf-8" From: Brian Cain The hexagon semihosting systests will wait for output on the semihosting console. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier Signed-off-by: Matheus Tavares Bernardino --- python/qemu/machine/machine.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/python/qemu/machine/machine.py b/python/qemu/machine/machine.py index bfb59d4c0b..3937506555 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 Sep 26 21:35:35 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=1787587201; cv=none; d=zohomail.com; s=zohoarc; b=khusmTsKudbbcfG49v/6MeGIZAA/3+53NZmpAvU9F22XGLg8OH9KSGT2e5Hqu/VQCT5QiOhm2XlGcgKac+gxoPVY3JVuE5/gtC5jcC0Pk3LQBt0laGYC9XKuQh9VJDswoiDu/tac17om18XxQ93rh+AqL12zNf+MkuUyyQhPG6s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787587201; 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=exF0SEsRCLhWmVNU1hzf4y3Jm9bo7VDGn1o53kagov8=; b=V2Alh53+75ez2SshJ8NQH7tAEM2M67j40o16d/Y5BZqskBjnZqpDCRothNRGnWtNjW+0mccovGdvZ2HA6xTe3rtx6M84NtAbAUyRjYUX53mUM6iqbNE8UIhuefPPPhQWt/axZxlFsQ/BE89XKZqq068ulvI1p5Iy72matgcUsrE= 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 1787587201404723.2872977901408; Mon, 24 Aug 2026 09:00:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wyX4c-0005HH-9l; Mon, 24 Aug 2026 11:58: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 1wyX4Z-0005Ew-Qr for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58: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 1wyX4W-0001nd-TL for qemu-devel@nongnu.org; Mon, 24 Aug 2026 11:58:55 -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 67OFne033785261 for ; Mon, 24 Aug 2026 15:58:42 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 4g8hjgt4u6-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 24 Aug 2026 15:58:41 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-38e6d253330so44044a91.1 for ; Mon, 24 Aug 2026 08:58: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 a92af1059eb24-14186183c0esm41152935c88.12.2026.08.24.08.58.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 08:58: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=exF0SEsRCLh WmVNU1hzf4y3Jm9bo7VDGn1o53kagov8=; b=Sv2Ac0BczXEzcz4ibtoQ7fEkgWU vt22JDm/mDP356raMck/pTqEaDJfEEXS7EcYoRvGHO5he+LUIW1Q+w84lOsum4/v zmW4oJ2b1qgXy3GDWjl/DXokcMhlnyX86l9SgxF2akRWBcSGUFb+BodOZSxgxzVx zpqLhMc0pSCrxzVf4T8sK1te5xo4clC+0xTj5hCly/OxsIlcygdmZyr+kPC8Eyn3 4YHZCggl4JBufRupAZ/Geys2GKsNEy87C3eNTOerbCqyOBXrxtZhNKMG1GjHqczn j6w2oWp+2wkghoy1zlAElja85TUnDYfKeiYT2JLtQgoDnx2uiW7maESE7pg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787587121; x=1788191921; 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=exF0SEsRCLhWmVNU1hzf4y3Jm9bo7VDGn1o53kagov8=; b=Tteh2IUfGWJSuNoxM2R7DZf73DfA6f4JcyODTWcrq6TGzb8TVLq9IoCzFEH0U4lvme rbU/2x6AbfEqYc2+HFeifp57jQbdJ5VwAr2bdCpXc+O24TkJVwtLrYgEI/tXK3+jxXef 944UL4g9mHKJw16irhhUcmOoByDSJLpkwN7Gmi/R0R6ZfcYAyYTW2gvJ2c80a5vWzu6I 8fSHQYbYhGTkgGCIQOudI3PKyaS1W62DKmQWv+3qcY3FuLoWGtzdgDAmVRgXJPJoaeSL U/1frFivhTY1Z78Zsrpj9rkDXaBa4yqcbQuCYkXm2FHxrXYXSDBa/bmB/hLgpPvD0u2/ jUqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787587121; x=1788191921; 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=exF0SEsRCLhWmVNU1hzf4y3Jm9bo7VDGn1o53kagov8=; b=F14X+n5ZEiYM+bH+ukuVj+Ud37R9+078tHCRoggEGaZi96QJNSUNAjwhXVosiKyEEJ JvjzOS4WNDYsJM8w7y9yKlxPN91SyhMdh0t/meJdbKbwSK8jTyUWzt/AA+yYea28BtUO Ga7L+fkSI3WAu8q+MEO3j6699hxSlII3t1K53KNdQ2Yur/P3zY9MbBrvwCFjUSq1Qtc8 crNCc6DM5N+9Gw6edLFxpfc6bE+qrFxMn7TkCQDeDKCuZmIRJ1Au6ABZUxUgHumZ6Fzu MK6elo1nNeNt57JJpzXwlqsNmbyFRMcrMfJm54n/svwVSMeBBEEViFv7PKkxT+bDiMOW RWVA== X-Gm-Message-State: AFuF++mxtx05hzUF3R9Svon0G7xTaTbEhf+JRpF9UyKo0P+00mKCo4wu iQzOzxy7xmZEk1RDcRRbdqSaNupCRsXLkKC8T4/9ivGKFj70AxePKW4QbyA55zZpdOzYD0Ahaim XTDoMOCAzfff/nWvDB2JeIeaHub/D7M6YZSjzwUpPqQ1h5Ya0y0eEvNVso5oYN1wevQ== X-Gm-Gg: AR+sD11WcRO292KlzdOpO76VLKDUQoCcARdm1puQY/lLlO+jZk00Xl23klx9sZYlxyj SISjaYmQidH28GLB+AOfBxIM/EMQRkvD+qqmakho/cLzgB8PyjMqMsUSVvVnf7GgnCUa45Q9vw/ BdbKo3F0+wlrcQhXOXElUuyxp6Mxb9bKc1docC8CcHMUJqcOR5MX5DFMRVji0XryTBJqVEicsri kJnXW+IYhXDExIigG/pPDTseJ9QrSJsQ7zlBXR6TnwPNh+ZLJG/8a8fKe0eUbbqiQHqeBuaCJuA II3yx7skwdyUAkKRAspT3mJ3MQGC3cSh5U2YCetwpClQ/GJddGWaa2G9QpBS5gfT9iuI/xugT8p brQk+n1NeLNjf2ZbpDJrisluJBzqqNG8QDuRqp9tmZNlIilPXWxv8XdCKIDAByOs= X-Received: by 2002:a17:90b:3844:b0:37f:a913:1554 with SMTP id 98e67ed59e1d1-39645acc458mr152860a91.16.1787587120947; Mon, 24 Aug 2026 08:58:40 -0700 (PDT) X-Received: by 2002:a17:90b:3844:b0:37f:a913:1554 with SMTP id 98e67ed59e1d1-39645acc458mr152813a91.16.1787587120493; Mon, 24 Aug 2026 08:58:40 -0700 (PDT) From: Matheus Tavares Bernardino To: qemu-devel@nongnu.org Cc: ale@rev.ng, anjo@rev.ng, brian.cain@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, philmd@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com Subject: [PATCH v4 14/14] tests/functional: Add hexagon semihosting systests Date: Mon, 24 Aug 2026 08:58:23 -0700 Message-Id: <0aab35393dcbd5e3e6d19d92287a9af558679460.1787586642.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: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfXxH2b4Oc6aPaV NugjtFi706x9i1w6uANz7pAAxCnpf//GeJHukghwiYqYDuE3gzRsXqpO05kl4SxWa/ARcDYaU5M DPF8XS14FmV4LPgZ7pTQ5oSFJk6GYP8= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODI0MDEzNCBTYWx0ZWRfX/hwsBE0VSGCu XhnJ4PaQC3djkMl3PXvBgObaW3W/Hi77D/00hr1uoIkvpRy+zex6aGucWEO14Hmt+lLkdNWFpxF Kc+ZmxZ0gufBKFlkEumNDMa3OdQQMT3OG4QTr29ZllRpx50+15A1Nq/1TOWO2Rf/JNCXgRrD/Lm cKnGprC2DRufCKEkfJwu8KmcF14rZWdk1sStShSgRQ1eSzU0Lm/72rcrEOS4fUJGKHalGlufYAH +jhv+jiQyzAFSPiRCnaKCWvChiJtuNVMIbs2Gq6T1++fEFkuSz7SpKGq9oELTS+1PbIj9oYf+S9 fmEBsfT3ubA4Zm975QkQZiNMaGfBBHVnSmt0SDy8TqNT3/X09H6jAYfG9jYkt6bvSaRrm2/KVcQ bKpbYPEiJbI5Xkj3vO6EC0XMdyjgjL+7hdQ3dfcvGs3nsGg+RNQifmavxfot9nGAPiFwXlVQ/k8 HKvLUSw5oqLYUwfkMmQ== X-Proofpoint-ORIG-GUID: e27GiykFtvn3FsJ320BLEenfsrJCab8_ X-Authority-Analysis: v=2.4 cv=CoCPtH4D c=1 sm=1 tr=0 ts=6a8c6a31 cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=5vFef2XoAAAA:20 a=EUspDBNiAAAA:8 a=gC5wIKLFQIU-z-kLmxwA:9 a=mQ_c8vxmzFEMiUWkPHU9:22 a=bA3UWDv6hWIuX7UZL3qL:22 X-Proofpoint-GUID: e27GiykFtvn3FsJ320BLEenfsrJCab8_ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-24_05,2026-08-24_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 priorityscore=1501 malwarescore=0 phishscore=0 bulkscore=0 adultscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608240134 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: 1787587202226158500 Content-Type: text/plain; charset="utf-8" From: Brian Cain Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier Signed-off-by: Matheus Tavares Bernardino --- tests/functional/hexagon/meson.build | 5 ++ tests/functional/hexagon/test_systests.py | 94 +++++++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100755 tests/functional/hexagon/test_systests.py diff --git a/tests/functional/hexagon/meson.build b/tests/functional/hexago= n/meson.build index 2b5a1a8f26..44053e6467 100644 --- a/tests/functional/hexagon/meson.build +++ b/tests/functional/hexagon/meson.build @@ -2,4 +2,9 @@ =20 tests_hexagon_system_thorough =3D [ 'arch_tests', + 'systests', ] + +test_hexagon_timeouts =3D { + 'systests': 180, +} diff --git a/tests/functional/hexagon/test_systests.py b/tests/functional/h= exagon/test_systests.py new file mode 100755 index 0000000000..f36e015f50 --- /dev/null +++ b/tests/functional/hexagon/test_systests.py @@ -0,0 +1,94 @@ +#!/usr/bin/env python3 +# +# Copyright(c) Qualcomm Innovation Center, Inc. All Rights Reserved. +# SPDX-License-Identifier: GPL-2.0-or-later + +import os +import re +import time +import unittest + +from qemu_test import QemuSystemTest, Asset, wait_for_console_pattern + + +_TARBALL_BIN_PATH =3D ( + "systests_standalone_package", + "StandaloneSysTests_6.4.0.2_v68", + "bin", +) + +class SysTestsStandaloneTests(QemuSystemTest): + SYSTEST_TIMEOUT_SEC =3D 30 + + ASSET_TARBALL =3D Asset( + "https://github.com/qualcomm/qemu-hexagon-testing/releases/downloa= d/v0.2.11/systests_standalone.tar.gz", + "b5777aa65245de7710a7a08d717953c1362be7c8b60d9014c9fee8b17610ad1c", + ) + + def setUp(self): + super().setUp() + self.archive_extract(self.ASSET_TARBALL) + + def binary(self, name): + path =3D self.scratch_file(*_TARBALL_BIN_PATH, name) + self.assertTrue(os.path.exists(path)) + return path + + def run_exit_zero(self, binary_name, *extra_args, machine=3D"V66G_1024= "): + self.set_machine(machine) + self.set_vm_arg("-display", "none") + self.set_vm_arg("-kernel", self.binary(binary_name)) + for flag, value in zip(extra_args[::2], extra_args[1::2]): + self.set_vm_arg(flag, value) + self.vm.launch() + self.vm.wait(timeout=3D60.0) + self.assertEqual(self.vm.exitcode(), 0, + f"Test {binary_name} exited with " + f"code {self.vm.exitcode()}, expected 0") + + def run_console_pattern(self, binary_name, pattern, *extra_args, + machine=3D"V66G_1024"): + self.set_machine(machine) + self.set_vm_arg("-display", "none") + self.set_vm_arg("-kernel", self.binary(binary_name)) + for flag, value in zip(extra_args[::2], extra_args[1::2]): + self.set_vm_arg(flag, value) + self.vm.set_console(semihosting=3DTrue) + self.vm.launch() + try: + wait_for_console_pattern(self, pattern) + finally: + self.vm.kill() + + def test_fopen(self): + """fopen reads a file passed via --append and verifies its content= s.""" + import tempfile + # The fopen binary has a short cmdline buffer; use a short path. + dummy =3D os.path.join(tempfile.gettempdir(), "qemu_fopen_test.so") + with open(dummy, "w") as f: + f.write("valid\n") + self.run_exit_zero("fopen", "-append", dummy) + + def test_ftrunc(self): + """ftrunc truncates _testfile_ftrunc from 6 bytes to 1 byte.""" + ftrunc_path =3D self.scratch_file("_testfile_ftrunc") + with open(ftrunc_path, "w") as f: + f.write("valid\n") + # Sleep 1 s so mtime change is observable + time.sleep(1) + self.run_exit_zero("ftrunc", "-append", ftrunc_path) + self.assertEqual(os.path.getsize(ftrunc_path), 1, + "_testfile_ftrunc should be 1 byte after ftrunc") + + def test_access(self): + """access checks R_OK|W_OK on _testfile_access.""" + testfile =3D self.scratch_file("_testfile_access") + with open(testfile, "w") as f: + f.write("valid\n") + self.run_exit_zero("access", "-append", testfile) + + def test_semihost(self): + self.run_console_pattern("semihost", "PASS", "-append", "arg1", "a= rg2") + +if __name__ =3D=3D "__main__": + QemuSystemTest.main() --=20 2.37.2