{"id":2221146,"url":"http://patchwork.ozlabs.org/api/1.0/covers/2221146/?format=json","project":{"id":14,"url":"http://patchwork.ozlabs.org/api/1.0/projects/14/?format=json","name":"QEMU Development","link_name":"qemu-devel","list_id":"qemu-devel.nongnu.org","list_email":"qemu-devel@nongnu.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20260408041953.1899532-1-brian.cain@oss.qualcomm.com>","date":"2026-04-08T04:19:25","name":"[v4,00/28] Hexagon system emulation - Part 2/3","submitter":{"id":89839,"url":"http://patchwork.ozlabs.org/api/1.0/people/89839/?format=json","name":"Brian Cain","email":"brian.cain@oss.qualcomm.com"},"series":[{"id":499179,"url":"http://patchwork.ozlabs.org/api/1.0/series/499179/?format=json","date":"2026-04-08T04:19:31","name":"Hexagon system emulation - Part 2/3","version":4,"mbox":"http://patchwork.ozlabs.org/series/499179/mbox/"}],"headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.a=rsa-sha256\n header.s=qcppdkim1 header.b=RVxWCm0Y;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.a=rsa-sha256 header.s=google header.b=V45bwrEs;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4frY1q6k8Vz1xy1\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 09 Apr 2026 05:25:35 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wAYTA-00078k-5T; Wed, 08 Apr 2026 15:21:44 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <brian.cain@oss.qualcomm.com>)\n id 1wAY4c-0006SR-Nm\n for qemu-devel@nongnu.org; Wed, 08 Apr 2026 14:56:22 -0400","from mx0a-0031df01.pphosted.com ([205.220.168.131])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <brian.cain@oss.qualcomm.com>)\n id 1wAKOl-0005Yf-46\n for qemu-devel@nongnu.org; Wed, 08 Apr 2026 00:20:17 -0400","from pps.filterd (m0279862.ppops.net [127.0.0.1])\n by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 6381FKkX1796828\n for <qemu-devel@nongnu.org>; Wed, 8 Apr 2026 04:20:11 GMT","from mail-dl1-f70.google.com (mail-dl1-f70.google.com\n [74.125.82.70])\n by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dd51da8ur-1\n (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n for <qemu-devel@nongnu.org>; Wed, 08 Apr 2026 04:20:10 +0000 (GMT)","by mail-dl1-f70.google.com with SMTP id\n a92af1059eb24-1279caef718so9082655c88.1\n for <qemu-devel@nongnu.org>; Tue, 07 Apr 2026 21:20:10 -0700 (PDT)","from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com.\n [129.46.96.20]) by smtp.gmail.com with ESMTPSA id\n a92af1059eb24-12c14a371b1sm6480362c88.13.2026.04.07.21.20.07\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Tue, 07 Apr 2026 21:20:08 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n cc:content-transfer-encoding:content-type:date:from:message-id\n :mime-version:subject:to; s=qcppdkim1; bh=U9YtuCo6FuZI/CcKOOjvfv\n 0l3ElZbJzzhbgDdvj+HqQ=; b=RVxWCm0Y34HZg6dDxXo+138VeFHPZeHLagvQ7x\n Gz7WDjvNHk7+718xTLXo8H26jPup5g1y7znUqLhGLTDI1V7HdnYgLfXGClnKb79O\n 5baWX9qtNwtv6qBm7a8o+E2XY9JdrEUUZxkhT5eX4JwayN27jAgo7//RJJuQllLV\n RZAre4z3TiN3FcuKHBYfTA88vkovJ3hqpkSSe28GzONHPMSPw3blWP5QikVE9omb\n rFmSV5vF8QKpvgn2gTQVzN2Ze5P0CSmxGf/tfcGMJcXltLRVirlGaN0/CnBJSoIS\n EJomVSgAGd+lvAkQwEIdHUvw6Ab9bYfo/svSzpbPkKtLYCpA==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=oss.qualcomm.com; s=google; t=1775622009; x=1776226809; darn=nongnu.org;\n h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n :to:from:from:to:cc:subject:date:message-id:reply-to;\n bh=U9YtuCo6FuZI/CcKOOjvfv0l3ElZbJzzhbgDdvj+HqQ=;\n b=V45bwrEsUxnZ7zr4bW1HGXbPoAfRJJQ/lMDp8yv5kfsOhrdnnccGVdUlOBqf9Jybbx\n U493/HdBkkXbc94mfcgSDwh/61+1drdHPeYbCwy8zJjlzYsOUve4Ek6/IknIgNQQV6ed\n zY5GMuGX5y9MDcaYgAvT+ZVl7LKmVNo9DS1157QJE60M7C5jHwsi//cKLaL4mXvFV/39\n tpWljrT4IioVClOKzcj5Yrd2c6NcOryr0fyQc3ydcUtuU1ig7CgW93tR7xosHPgkGF/Q\n yFQCW7aloogta2aVcvyzFW2o3pvo4is7lxiZzdIkPeNmQ9qcExdhqE+VNat/MKhbGL0D\n oF7Q=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775622009; x=1776226809;\n h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=U9YtuCo6FuZI/CcKOOjvfv0l3ElZbJzzhbgDdvj+HqQ=;\n b=gkad6pGM1guxm0vyYeyVzRJC6eErRC4B1V9JRhn2izMI/NF1QWR/AHSboe4AUO8dJG\n 3be3n68TDBooGThTsWTpTBhRmRCxWJt08Fl4v9CCg0xhXaY/toq6tAdrg2+DN2w4cuHr\n Ou4YKal0JNo53DO+3WvjcpUtFb/lV+9GfhtmcIrPYwBTqea3fQlF8X6deYtD8UGU3njH\n wms1LG0C4K1B1uFsBT+A/koAyMZnurORPzoeo++q28Hu0mgymwuG4scNVqhkkUzHHFUy\n N+HkxDlnaN9SGrm0hSD77wrbUP0UjUJ5Ls0SOJywELZuCVITnN96NH1BHC8xTm0WnHB9\n xoIA==","X-Gm-Message-State":"AOJu0YwD6zhYnyO+wrs57yYnyiYhiYUfr+u/N4Vj3Vk8Vl4zD2ztf8ba\n iYLAlC+Bk8RKmO7CvbCFfvMLn9hzqmTeAciAr/lXn36BCgbPHnds28hJn+It2n6rIu48Qtm4oat\n 0+bO4O8oirc26RS8NijWTBV4LiTzDHu5Cz7XTKCip2Q/hZL1lkqZnd2hY7K01M4FeTg==","X-Gm-Gg":"AeBDieulVBa1unMmCwQKamJfdp/d4HjjYaGrFAkciBvdMDSqyGn747hFcdvKtQgpLtT\n 00VEr7+A8nK+UV2v1+cNGYj03L0b8vf9fkTVUvaLykSZZ8DL5DehWPXSZdlmXK9qhNcl8hF89AL\n JlMiAqS3BWVrsn9d1CGGLMR6/IT24MreSNTKnOOI9Sfvrsr+Ix2n20fZDFpvBk7ndYLWaZ0NsgB\n qLo2V2uzLbZS+H6vZxCeVw2XxtoW/7i0BmyskIpu09N8H/Tt5GL9+Smfugzz3Sxajv+pj525ukF\n rHKd085Wkx4JRC1LXIPEQ3MVeacLEpWR5ruylQZDLrvrHsJjDLQPAk7HWJfGYYBF3zeQkK4/hug\n Ndf7S+QTVTT38ZKfyondDqBVZV1iBVVjZ8ObmmVktWgKKlLC1REGiKRpQ6RqIsrGs0IJo3A==","X-Received":["by 2002:a05:7022:929:b0:127:380e:ff5a with SMTP id\n a92af1059eb24-12bfb73e31emr9753765c88.17.1775622009199;\n Tue, 07 Apr 2026 21:20:09 -0700 (PDT)","by 2002:a05:7022:929:b0:127:380e:ff5a with SMTP id\n a92af1059eb24-12bfb73e31emr9753744c88.17.1775622008539;\n Tue, 07 Apr 2026 21:20:08 -0700 (PDT)"],"From":"Brian Cain <brian.cain@oss.qualcomm.com>","To":"qemu-devel@nongnu.org","Cc":"brian.cain@oss.qualcomm.com, philmd@linaro.org, ltaylorsimpson@gmail.com,\n matheus.bernardino@oss.qualcomm.com, marco.liebel@oss.qualcomm.com,\n quic_mburton@quicinc.com, sid.manning@oss.qualcomm.com, ale@rev.ng,\n anjo@rev.ng","Subject":"[PATCH v4 00/28] Hexagon system emulation - Part 2/3","Date":"Tue,  7 Apr 2026 21:19:25 -0700","Message-Id":"<20260408041953.1899532-1-brian.cain@oss.qualcomm.com>","X-Mailer":"git-send-email 2.34.1","MIME-Version":"1.0","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","X-Proofpoint-ORIG-GUID":"lhzzNcwYFnR4Z7nKoyGgvmT-ZERtuVWk","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwNDA4MDAzNSBTYWx0ZWRfX73QV1z985EXH\n 4nG81tTxUGuElC0tCLzCKRJETITt6TIqnez3cAOEAsXu1ejOYDei+voCTe7GgocRfRZ4zVLIkGn\n xg+h23dpr/ss3pEagIVJouwtlTfIg9rs8S/XPGCXMLfUA/RpiKTXNX/92WOiOYHNcIqp2kAP1Jy\n YMOro2W4X0Rc7GHNLqPtzr5f1e8Xrezp01G4IJwFfsJ8kDc8IQXS8Cli50D5meHJB3Yv6W7sOPO\n 8r/VB9tQNsjl4nfbjjJoPj63irn1wb1PvITAhjrrXYaa6jTZa4hlymg9dNsPNsywkzdsu9OQYzg\n ETUnacnzCSyibf9106R4cXP9Xq4EZ+eAEsZuWCmwoiKVialTn1h7fYwBCP2d6//oDWWNVj0/ymi\n Fmt/TAUXcPIhKoPEtN64hfzy/+nHPq267D7auWz1I+re1sFoFvwM27z/CjklUgxThmlj+CWRgB/\n oV7tY1HuMeCcv0GtY+A==","X-Authority-Analysis":"v=2.4 cv=AcaB2XXG c=1 sm=1 tr=0 ts=69d5d77a cx=c_pps\n a=SvEPeNj+VMjHSW//kvnxuw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17\n a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10\n a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22\n a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=Ft1SjsLI0j10gtFiCOkA:9 a=QEXdDO2ut3YA:10\n a=Kq8ClHjjuc5pcCNDwlU0:22","X-Proofpoint-GUID":"lhzzNcwYFnR4Z7nKoyGgvmT-ZERtuVWk","X-Proofpoint-Virus-Version":"vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-04-08_02,2026-04-07_05,2025-10-01_01","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n lowpriorityscore=0 adultscore=0 priorityscore=1501 bulkscore=0 malwarescore=0\n phishscore=0 impostorscore=0 spamscore=0 clxscore=1015 suspectscore=0\n classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0\n reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604080035","Received-SPF":"pass client-ip=205.220.168.131;\n envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com","X-Spam_score_int":"-27","X-Spam_score":"-2.8","X-Spam_bar":"--","X-Spam_report":"(-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001,\n RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001,\n 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 <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"},"content":"This is Part 2 of the Hexagon system emulation series.  It adds the\nruntime helpers, CPU operations, and translation support needed for\nfull-system emulation of the Hexagon DSP.\n\nThis includes:\n - Software interrupt (SWI) and interrupt handling\n - TLB fill and permission checking\n - System register read/write support in TCG\n - Implicit sysreg writes and translation-block termination\n - Stack overflow exception support\n - Thread scheduling helpers (setprio, resched, resume)\n - k0 lock/unlock for kernel mode\n - idef-parser support for fFRAMECHECK\n - TCG overrides for system transfer instructions\n\nBased on Part 1 v6.\n\nChanges since v3:\n - Rebased onto Part 1 v6\n - Fixed idef-parser fFRAMECHECK implementation (Taylor)\n - Removed pkt_ends_tb from DisasContext, call pkt_ends_tb() directly (Taylor)\n - Changed t_sreg_new_value sizing from NUM_SREGS to\n   HEX_SREG_GLB_START (Taylor)\n - Removed unnecessary tcg_gen_mov_tl sreg pre-copy in\n   gen_start_packet(); no sreg writes are predicated (Taylor)\n - Added continue after STID/IMASK/IPENDAD writeback in\n   gen_sreg_writes() to avoid redundant writeback (Taylor)\n - Moved hexagon_greg_read() declaration to correct commit (Taylor)\n - Fixed set_enable_mask/clear_enable_mask return type consistency (Taylor)\n - Added early return for globalregs==false in set_enable_mask and\n   set_wait_mode (Taylor)\n - Fixed bare %x/%d format specifiers across multiple files, using\n   PRIx32/PRIu32/TARGET_FMT_lx as appropriate (Taylor)\n - Fixed mid-block variable declarations (C89 style)\n - Removed invalid PRM section references from setprio/resched\n   commit message (Taylor)\n - Renamed \"Add TLB, k0 {un,}lock\" to \"Add k0 {un,}lock\" (Taylor)\n - Moved cycle counter/pcycle/modify_ssr commits to Part 1\n - All cycle counter code properly guarded by\n   ifndef CONFIG_USER_ONLY (Taylor)\n\nPrevious versions:\n - v3: https://lore.kernel.org/qemu-devel/20260311040758.1068731-1-brian.cain@oss.qualcomm.com/\n - v2: https://lore.kernel.org/qemu-devel/20250902034847.1948010-1-brian.cain@oss.qualcomm.com/\n - v1: https://lore.kernel.org/qemu-devel/20250301052845.1012069-1-brian.cain@oss.qualcomm.com/\n\nBrian Cain (26):\n  target/hexagon: Implement {c,}swi helpers\n  target/hexagon: Implement iassign{r,w} helpers\n  target/hexagon: Implement start/stop helpers, soft reset\n  target/hexagon: Implement {g,s}etimask helpers\n  target/hexagon: Implement wait helper\n  target/hexagon: Implement get_exe_mode()\n  target/hexagon: Implement hex_tlb_entry_get_perm()\n  target/hexagon: Implement software interrupt\n  target/hexagon: Implement stack overflow exception\n  target/hexagon: Implement exec_interrupt, set_irq\n  target/hexagon: Implement hexagon_tlb_fill()\n  target/hexagon: Implement siad inst\n  target/hexagon: Implement hexagon_resume_threads()\n  target/hexagon: Implement setprio, resched\n  target/hexagon: Add sysemu_ops, cpu_get_phys_page_debug()\n  target/hexagon: extend hexagon_cpu_mmu_index() for sysemu\n  target/hexagon: Decode trap1, rte as COF\n  target/hexagon: Implement modify_ssr, resched, pending_interrupt\n  target/hexagon: Add pkt_ends_tb to translation\n  target/hexagon: Add next_PC, {s,g}reg writes\n  target/hexagon: Add implicit sysreg writes\n  target/hexagon: Define system, guest reg names\n  target/hexagon: Add k0 {un,}lock\n  target/hexagon: Add PC to raise_exception, use fTRAP() helper\n  target/hexagon: Add TCG overrides for transfer insts\n  target/hexagon: Add support for loadw_phys\n\nMatheus Tavares Bernardino (2):\n  target/hexagon: add simple cpu_exec_reset and pointer_wrap\n  target/hexagon: Add guest reg reading functionality\n\n target/hexagon/cpu.h                        |  11 +\n target/hexagon/cpu_helper.h                 |   8 +\n target/hexagon/gen_tcg.h                    |   7 -\n target/hexagon/gen_tcg_sys.h                |  25 ++\n target/hexagon/helper.h                     |   6 +-\n target/hexagon/hexswi.h                     |  17 +\n target/hexagon/idef-parser/parser-helpers.h |   2 +\n target/hexagon/internal.h                   |   4 +\n target/hexagon/macros.h                     |   3 -\n target/hexagon/sys_macros.h                 |   7 +\n target/hexagon/translate.h                  |   5 +-\n target/hexagon/reg_fields_def.h.inc         |  11 +\n linux-user/hexagon/cpu_loop.c               |   7 +\n target/hexagon/cpu.c                        | 360 ++++++++++++++-\n target/hexagon/decode.c                     |  14 +\n target/hexagon/genptr.c                     |  18 +-\n target/hexagon/hexswi.c                     | 267 +++++++++++\n target/hexagon/idef-parser/parser-helpers.c |   9 +\n target/hexagon/op_helper.c                  | 462 +++++++++++++++++++-\n target/hexagon/translate.c                  | 225 +++++++++-\n target/hexagon/hex_common.py                |   3 +\n target/hexagon/idef-parser/idef-parser.y    |   3 +\n target/hexagon/imported/encode_pp.def       |   1 +\n target/hexagon/imported/ldst.idef           |   3 +\n 24 files changed, 1425 insertions(+), 53 deletions(-)\n create mode 100644 target/hexagon/hexswi.h\n create mode 100644 target/hexagon/hexswi.c"}