From nobody Sat Apr 11 20:22:48 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=1775673819; cv=none; d=zohomail.com; s=zohoarc; b=k6/JJg9hYjJE1X/fNN1ZAnJqymn7FSMzKfBy4ZwOWvNRDxIQLPVRKrWNfACxoW9O3+U1vt2e1f/xJol63mwNXPOodOVs/ON6I8m5aOQB4fGYLw3T/6sd6nG1GJRh7R/ClLFTLTnJjvDl8mAT2+UP2c7x0b8iSlTM7LvEptCnqp0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775673819; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+DBy8cpz3t6fbfMdXgVv+lAhN/yuUk5Xigz3myWM3io=; b=AoLLSs2u1cjuv+Nu6oOn+6xsz2LHltvBbEWQ4Zt86XicwUP2vBz2S0Cc3OYsFQ63hvsHOpfVkqSC6asntWt2HXMPy3LXwuP4GDeenbqXsEOKkvVthXdGE0cx/fOP2i7xe2IHJiEFoue8tbsnYO6+tvYy49fkHx65vI6Hd//rM14= 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 lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1775673819875163.37348151878916; Wed, 8 Apr 2026 11:43:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wAXqL-0003Eq-Fl; Wed, 08 Apr 2026 14:41: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 1wAXqH-0002nR-MX for qemu-devel@nongnu.org; Wed, 08 Apr 2026 14:41:33 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wAKP4-0005br-Dq for qemu-devel@nongnu.org; Wed, 08 Apr 2026 00:20:37 -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 637J6brG071736 for ; Wed, 8 Apr 2026 04:20:33 GMT Received: from mail-dy1-f197.google.com (mail-dy1-f197.google.com [74.125.82.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dd7sx9dr0-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 08 Apr 2026 04:20:30 +0000 (GMT) Received: by mail-dy1-f197.google.com with SMTP id 5a478bee46e88-2c0f6593ef5so7962885eec.1 for ; Tue, 07 Apr 2026 21:20:30 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-12c14a371b1sm6480362c88.13.2026.04.07.21.20.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 21:20:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= +DBy8cpz3t6fbfMdXgVv+lAhN/yuUk5Xigz3myWM3io=; b=Z3vkoSvBlVJ9rhI8 yRu9UaGgDRubp+5xkCKX3xDiWvZJ6oqepVZOvr6vySDObwgMF+GEyyEtdMzQnY5c o6GGqRYxThNPC5iqgkwN4hr+KjPJhsiGIWOsS+3hS3VglMTh8Jw8X3N1olwVzozl /fQkC2IaWAn6scwb82zf5zkM+j+ynudtEtA11fPMPpfgsjI2pdAJzf4MAXfTOLgb cxUvZ6aAcs0gqE/OfwoQkst4RwsGdq37S6cb4/kTWvcW8s8RD9lS5WXVV+xsAhkH vXjQ1yhrXRpY8foUgTN/DW4uSVg99FU01DVNCFx9nKg+ukpHwu6MkGPfzPtVB/cJ ngSaXw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1775622029; x=1776226829; 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; bh=+DBy8cpz3t6fbfMdXgVv+lAhN/yuUk5Xigz3myWM3io=; b=E+JYgrsilYm8jZHBbHFzXxILWt20wP6ygJ9SK7GjHfoL8xvsJnPjbKyA+E0oR7JmTh vafIAjGsXFSDm2dCfGGyu0WBbM2BeIK0VqrEE0Sx9MzidC9XkaCLTD21k6K3d93dT4wz 1oqXazKmOmQNMfeiSYT73KoGdZnh67hrH7l49eAU7IsFH5a1VPz97CqfwhGhY+Iv+DRo qgiZsfSwoTFFr71lLGiI5LbrfTVi/vHr/tVaHJxemEbCM+K932CnRoudF4Vkw07DLyg0 J0zQ8Bb5D1+dXwndliJzY5D7qKq7yWfD6PE92xbY0ciNUnzsaP68/iM2UPWsXeq8oMBs i8vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775622029; x=1776226829; 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; bh=+DBy8cpz3t6fbfMdXgVv+lAhN/yuUk5Xigz3myWM3io=; b=KDbDfncoBeYEZbcmtMLLIJCqSmnNU7HafTxfdwN+/04iLySnAWvSqvrkaocAqdYRkQ f3DIz6Q2oAQSlCA4xC6KOO4U0OaTY/2+AVkkZ7ezb/tcN7SrvomA95MwcYos1esGjb9u kxIglGamEAn50vS+3jnAMrh1CiSdw2H/GYzQyOtWHrC89telWvjgkV0+Zdx10RPXSdnw t5hEo1ykB6gGeccdQq3GwJ0Fs9DGpy+2n4ZZGRlSG8yx4vAR6tr9hUvJlb9Lx7d5sqhk pOmAxHUKoaAtAv/WK+c4zMMGjPzjnU+DuhE1/Jd8NsL+fvPTwQ0DQ1mlTOHhawOhyBSz qtPA== X-Gm-Message-State: AOJu0Yx9A4xGAmPfQ+ZqAU+PRKD/8rHJqEScX2WTlkvakobmXwfOw2ub OW50AQeAZTj+cHuyW7ljOdlhwOmvIefQijFjkqtiO77tzvD/SBHnAtVPWIM43cIKHRCceMD7/YJ NhMK7HYvvif7JfQo9mjRPGiqz5QgwmYYmZPOSQuB8+b9sJsEX4E0x+3W6VmKhGRNb+g== X-Gm-Gg: AeBDievWJgGYbUNISdnfRolM9CVkzYQn7QeXL0Y2ko3j8kacgErkrHmG7Nt7bD5RhWM JDrI4tP22RvAynzgJCoKAiwE5hsCWVSh/pRiig/N+q2W0548BV/qGxOOveBDEwHqpREKcB6LeLI mBz+k5yaQakTU4xBVD10Y5/RoChFaAX84JjHJ0YdeEsQDeclGrZSc+ek4bEepTNnUTHbqRWOFrN E7bsbOn28mUXk7bjBaeqqO+JqI80/CElQx9835sk0oGVBQ2RViUd6cmEwO0SryLaqtJ6lBHk/60 2b0LtYOEJk4GG9TiFu8u8IwfxYIJ6KaWE4wBmHUsakGcs0C/pO8hXiCVcG6Rm7wKKy/hzx6TFgI 2vXuLzmC+eQDkcJj1P0RXuT/rNEbxUnLtdzAG3wfkG0DUzeai/I2W/oldcBSo+ZtVGuDZLQ== X-Received: by 2002:a05:7022:10d:b0:128:d967:4678 with SMTP id a92af1059eb24-12bfb74427cmr8926982c88.23.1775622028557; Tue, 07 Apr 2026 21:20:28 -0700 (PDT) X-Received: by 2002:a05:7022:10d:b0:128:d967:4678 with SMTP id a92af1059eb24-12bfb74427cmr8926971c88.23.1775622027951; Tue, 07 Apr 2026 21:20:27 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, philmd@linaro.org, ltaylorsimpson@gmail.com, matheus.bernardino@oss.qualcomm.com, marco.liebel@oss.qualcomm.com, quic_mburton@quicinc.com, sid.manning@oss.qualcomm.com, ale@rev.ng, anjo@rev.ng, Brian Cain Subject: [PATCH v4 20/28] target/hexagon: Add pkt_ends_tb to translation Date: Tue, 7 Apr 2026 21:19:45 -0700 Message-Id: <20260408041953.1899532-21-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260408041953.1899532-1-brian.cain@oss.qualcomm.com> References: <20260408041953.1899532-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=etfvCIpX c=1 sm=1 tr=0 ts=69d5d78e cx=c_pps a=Uww141gWH0fZj/3QKPojxA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=COk6AnOGAAAA:8 a=pGLkceISAAAA:8 a=EUspDBNiAAAA:8 a=PUAfe4L2FItr89aHCx8A:9 a=QEXdDO2ut3YA:10 a=PxkB5W3o20Ba91AHUih5:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-ORIG-GUID: 9CnVWTjHxX9pc4q4UV-kux8U2TPAn3dy X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDA4MDAzNSBTYWx0ZWRfXzVtnMOBPkQ73 MCMdLnlqYcOBKJj75WzE0dp3UUbqkehX6pZTqvpQ2C4g4B/M1LZgMZUysSlPdP/Pd83LfuFMhQ6 H1r6rLin1eiUiaGQV5xjPzLhYGg7ae6CyVMGwEfgnBOXabV510XGhojBUgZ3Otyy8WmcNKOjtIZ 2XU+xiCsDohb+D+hmsV4M9dWat6O/dJtJwqnhm7rkuHoscW72in6V2DSiWaZX8DNhNiEzhNgMjQ rfTn1yG7W1a4Ca1fhTQw+cFEcAoxkeq4S17XplSfAikIrgwb3MKZdpxkh8CGDmIqe4drxaIzeUM AQFUmYY+IL3DhzuKMyytRXC/H890XkcVt9XtslivH0YK92n1/RXM3pPrWlqusNF3q4tKXUZj3VB vgqqFFBlvu/ZHrE6XqxV1TMj/IAtoFYD4cm2xICR3ZAzS+uLPZc+B2RC932qQnnsWSEyz22aNVW 4GP9MDnzUfzPbGO8nfQ== X-Proofpoint-GUID: 9CnVWTjHxX9pc4q4UV-kux8U2TPAn3dy X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-08_02,2026-04-07_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 lowpriorityscore=0 phishscore=0 bulkscore=0 impostorscore=0 suspectscore=0 spamscore=0 clxscore=1015 malwarescore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604080035 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=lists.gnu.org; Received-SPF: pass client-ip=205.220.180.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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: 1775673822770154100 From: Brian Cain Reviewed-by: Taylor Simpson Signed-off-by: Brian Cain --- target/hexagon/translate.h | 1 - target/hexagon/translate.c | 101 ++++++++++++++++++++++++++++++++++++- 2 files changed, 99 insertions(+), 3 deletions(-) diff --git a/target/hexagon/translate.h b/target/hexagon/translate.h index 4e090565aac..82b327312ec 100644 --- a/target/hexagon/translate.h +++ b/target/hexagon/translate.h @@ -85,7 +85,6 @@ typedef struct DisasContext { TCGv branch_taken; TCGv dczero_addr; bool pcycle_enabled; - bool pkt_ends_tb; uint32_t num_cycles; } DisasContext; =20 diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c index 07829063868..6bba135f692 100644 --- a/target/hexagon/translate.c +++ b/target/hexagon/translate.c @@ -272,6 +272,16 @@ static bool check_for_attrib(Packet *pkt, int attrib) return false; } =20 +static bool check_for_opcode(Packet *pkt, uint16_t opcode) +{ + for (int i =3D 0; i < pkt->num_insns; i++) { + if (pkt->insn[i].opcode =3D=3D opcode) { + return true; + } + } + return false; +} + static bool need_slot_cancelled(Packet *pkt) { /* We only need slot_cancelled for conditional store instructions */ @@ -285,6 +295,90 @@ static bool need_slot_cancelled(Packet *pkt) return false; } =20 +#ifndef CONFIG_USER_ONLY +static bool sreg_write_ends_tb(int reg_num) +{ + return reg_num =3D=3D HEX_SREG_SSR || + reg_num =3D=3D HEX_SREG_STID || + reg_num =3D=3D HEX_SREG_IMASK || + reg_num =3D=3D HEX_SREG_IPENDAD || + reg_num =3D=3D HEX_SREG_BESTWAIT || + reg_num =3D=3D HEX_SREG_SCHEDCFG; +} + +static bool has_sreg_write_ends_tb(Packet const *pkt) +{ + for (int i =3D 0; i < pkt->num_insns; i++) { + Insn const *insn =3D &pkt->insn[i]; + uint16_t opcode =3D insn->opcode; + if (opcode =3D=3D Y2_tfrsrcr) { + /* Write to a single sreg */ + int reg_num =3D insn->regno[0]; + if (sreg_write_ends_tb(reg_num)) { + return true; + } + } else if (opcode =3D=3D Y4_tfrspcp) { + /* Write to a sreg pair */ + int reg_num =3D insn->regno[0]; + if (sreg_write_ends_tb(reg_num)) { + return true; + } + if (sreg_write_ends_tb(reg_num + 1)) { + return true; + } + } + } + return false; +} +#endif + +static bool pkt_ends_tb(Packet *pkt) +{ + if (pkt->pkt_has_cof) { + return true; + } +#ifndef CONFIG_USER_ONLY + /* System mode instructions that end TLB */ + if (check_for_opcode(pkt, Y2_swi) || + check_for_opcode(pkt, Y2_cswi) || + check_for_opcode(pkt, Y2_ciad) || + check_for_opcode(pkt, Y4_siad) || + check_for_opcode(pkt, Y2_wait) || + check_for_opcode(pkt, Y2_resume) || + check_for_opcode(pkt, Y2_iassignw) || + check_for_opcode(pkt, Y2_setimask) || + check_for_opcode(pkt, Y4_nmi) || + check_for_opcode(pkt, Y2_setprio) || + check_for_opcode(pkt, Y2_start) || + check_for_opcode(pkt, Y2_stop) || + check_for_opcode(pkt, Y2_k0lock) || + check_for_opcode(pkt, Y2_k0unlock) || + check_for_opcode(pkt, Y2_tlblock) || + check_for_opcode(pkt, Y2_tlbunlock) || + check_for_opcode(pkt, Y2_break) || + check_for_opcode(pkt, Y2_isync) || + check_for_opcode(pkt, Y2_syncht) || + check_for_opcode(pkt, Y2_tlbp) || + check_for_opcode(pkt, Y2_tlbw) || + check_for_opcode(pkt, Y5_ctlbw) || + check_for_opcode(pkt, Y5_tlbasidi)) { + return true; + } + + /* + * Check for sreg writes that would end the TB + */ + if (check_for_attrib(pkt, A_IMPLICIT_WRITES_SSR)) { + return true; + } + if (has_sreg_write_ends_tb(pkt)) { + return true; + } +#endif + return false; +} + + static bool need_next_PC(DisasContext *ctx) { Packet *pkt =3D ctx->pkt; @@ -447,7 +541,10 @@ static void analyze_packet(DisasContext *ctx) static void gen_start_packet(DisasContext *ctx) { Packet *pkt =3D ctx->pkt; - target_ulong next_PC =3D ctx->base.pc_next + pkt->encod_pkt_size_in_by= tes; + uint32_t 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; int i; =20 /* Clear out the disassembly context */ @@ -959,7 +1056,7 @@ static void gen_commit_packet(DisasContext *ctx) pkt->vhist_insn->generate(ctx); } =20 - if (pkt->pkt_has_cof) { + if (pkt_ends_tb(ctx->pkt) || ctx->base.is_jmp =3D=3D DISAS_NORETURN) { gen_end_tb(ctx); } } --=20 2.34.1