From patchwork Sat Mar 1 05:28:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997317 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 69215C021B8 for ; Sat, 1 Mar 2025 05:29:36 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPG-0007sS-JP; Sat, 01 Mar 2025 00:28:58 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPE-0007mj-2e for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:28:56 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPC-0008Lv-3a for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:28:55 -0500 Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5213Yl0K030346 for ; Sat, 1 Mar 2025 05:28:53 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:content-type:date:from :in-reply-to:message-id:mime-version:references:subject:to; s= qcppdkim1; bh=/VDPdjihxfsv3fo+p2wMagsyK5muYv1fGLIlWipDUm0=; b=He tG6mB2q1hOLve+k68yewBmpAR85xHe/9LdyuWS2OL5heEs7Ylq2LDADbiStzPmzT NyONF90WE19OGo0QNUpxz+Ie7ZCV2CzyY5A7Xy3BBVt8gazwQ58l5J5KoqKzCP2h wLexrGKbuQxxXRq7MrqeeirruXXz+3EuZiij4F5Bt76B7t3XfAnu5sLYPWG403YE xdvrsSAJ+v09iU++4xyz9PotdcJRUdFlU/K04SxIVH7K5nv3V7GnaTUeagALZvS2 wQt1z7L5ZZ+8I1t8DKDjsLJ7fNGm2LCTFFQuCuEv2vki29TZyv3sfUIMthJtQVo4 Zwk5QwObIvTT0feyZv1g== 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 453tf0g5c2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:28:52 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-2feb5cd04a0so3858865a91.2 for ; Fri, 28 Feb 2025 21:28:52 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806932; x=1741411732; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/VDPdjihxfsv3fo+p2wMagsyK5muYv1fGLIlWipDUm0=; b=VDbqp4G53SvIiFnbBc8Y6lNb0sZcrSDMvg/R7BBlYBGwYntdvmNX8COcJekRyV6TzS SqCu+dyzc9CbW7HI+O/MWnI2DpFDfIwR1m4PA3FzWUVIf3zkoKcxEgL+AcuaqRHj2whP Nulck1v3XNszPClFG5S4jx4Mc8rCZJDUivYlofuZLTJuT2VwZjHJBhftb+joqsaGay7P qINFW1ylpSryZc88oKyk5Pd0lWwq22VeRa+FHQJbr/uhEly8UCDhxQKTs62bPozcf1nH vD49A5KgdfPjBysyPrli232aa3zeQkcXNTYkFQtv3vmKKRqYROl0NdQU2JBxg/TSNg0k gLGQ== X-Gm-Message-State: AOJu0YxfzFFeyAZCv9WitZtG0C4pNUS0KKPbXK+9KoWfNLGsz1ZKECEw cwCaedshVUD/f1doADjbfVyZvrnfkYxV+m3XyrtFVbHvgWjpomxf1xpV3ZIoe/sD4maFTRmWZ7b hl1ZLwUQVJZcpIuWEDjdMhX2/X2IUBbayA1O8f/FX2Yd0uPQR+6EooKfsdOnmbw== X-Gm-Gg: ASbGncuSYskbOFID7sWGB1EKj3WNDl/QR0URVUr3BbiV4VL4XTmGI9f+ROWqOoB12xO Vs/MUApL/EUmj7wrM8fA6PjlBWiI55Ixsxe8z1NCV8uIH+TT3YtBS1A91nox38JbERj0iHYifAl Mp/lZttkm+788Pd7UsaMMhSP780vXXbLTMSU/l3pzuRAf9MKhF6CFcipPNqbMMLWPHQYr/AD9kQ iMJKarziEWz4V0xwMh/zhoE4hnoCWh1EQ/Xzx4tgD2H577ac8Zz3hTwoH8ka9/KFH7li3XIgNP2 9dnw5M8uqGGca2RUdvfNOXHd4eYwLRu0yUPcFU1PkSYconNfMN5xaxPwJoYL2wNh X-Received: by 2002:a17:90a:d446:b0:2fc:ec7c:d371 with SMTP id 98e67ed59e1d1-2febab2e610mr9096330a91.3.1740806931825; Fri, 28 Feb 2025 21:28:51 -0800 (PST) X-Google-Smtp-Source: AGHT+IGXErzSCDTbH9da1o5muzHOm1Aa6rzxQlgyxy1a/91Ga3vm+1GoZmYuhk9o0kgkItfHSXH4XQ== X-Received: by 2002:a17:90a:d446:b0:2fc:ec7c:d371 with SMTP id 98e67ed59e1d1-2febab2e610mr9096304a91.3.1740806931457; Fri, 28 Feb 2025 21:28:51 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.28.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:28:51 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 01/39] target/hexagon: Implement ciad helper Date: Fri, 28 Feb 2025 21:28:07 -0800 Message-Id: <20250301052845.1012069-2-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: wL8W2aFsZrMTAMyH41w9XS42X5Jz5wP8 X-Proofpoint-ORIG-GUID: wL8W2aFsZrMTAMyH41w9XS42X5Jz5wP8 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 suspectscore=0 malwarescore=0 lowpriorityscore=0 mlxlogscore=608 phishscore=0 adultscore=0 spamscore=0 clxscore=1015 mlxscore=0 bulkscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain ciad is the clear interrupt auto disable instruction. This instruction is defined in the Qualcomm Hexagon V71 Programmer's Reference Manual - https://docs.qualcomm.com/bundle/publicresource/80-N2040-51_REV_AB_Hexagon_V71_ProgrammerS_Reference_Manual.pdf See ยง11.9.2 SYSTEM MONITOR. Signed-off-by: Brian Cain --- target/hexagon/op_helper.c | 39 ++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index fd9caafefc..b28a18adf6 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -34,6 +34,11 @@ #include "op_helper.h" #include "cpu_helper.h" #include "translate.h" +#ifndef CONFIG_USER_ONLY +#include "hex_mmu.h" +#include "hw/intc/l2vic.h" +#include "hex_interrupts.h" +#endif #define SF_BIAS 127 #define SF_MANTBITS 23 @@ -1338,9 +1343,36 @@ void HELPER(vwhist128qm)(CPUHexagonState *env, int32_t uiV) } #ifndef CONFIG_USER_ONLY +static void hexagon_set_vid(CPUHexagonState *env, uint32_t offset, int val) +{ + g_assert((offset == L2VIC_VID_0) || (offset == L2VIC_VID_1)); + CPUState *cs = env_cpu(env); + HexagonCPU *cpu = HEXAGON_CPU(cs); + const hwaddr pend_mem = cpu->l2vic_base_addr + offset; + cpu_physical_memory_write(pend_mem, &val, sizeof(val)); +} + +static void hexagon_clear_last_irq(CPUHexagonState *env, uint32_t offset) +{ + /* + * currently only l2vic is the only attached it uses vid0, remove + * the assert below if anther is added + */ + hexagon_set_vid(env, offset, L2VIC_CIAD_INSTRUCTION); +} + void HELPER(ciad)(CPUHexagonState *env, uint32_t mask) { - g_assert_not_reached(); + uint32_t ipendad; + uint32_t iad; + + BQL_LOCK_GUARD(); + ipendad = READ_SREG(HEX_SREG_IPENDAD); + iad = fGET_FIELD(ipendad, IPENDAD_IAD); + fSET_FIELD(ipendad, IPENDAD_IAD, iad & ~(mask)); + arch_set_system_reg(env, HEX_SREG_IPENDAD, ipendad); + hexagon_clear_last_irq(env, L2VIC_VID_0); + hex_interrupt_update(env); } void HELPER(siad)(CPUHexagonState *env, uint32_t mask) @@ -1416,11 +1448,6 @@ static void modify_syscfg(CPUHexagonState *env, uint32_t val) g_assert_not_reached(); } -static void hexagon_set_vid(CPUHexagonState *env, uint32_t offset, int val) -{ - g_assert_not_reached(); -} - static uint32_t hexagon_find_last_irq(CPUHexagonState *env, uint32_t vid) { g_assert_not_reached(); From patchwork Sat Mar 1 05:28:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997371 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D0D51C021B8 for ; Sat, 1 Mar 2025 05:37:47 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPI-0007vo-3b; Sat, 01 Mar 2025 00:29:00 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPF-0007oQ-4i for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:28:57 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPD-0008M7-Fr for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:28:56 -0500 Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5213GfWT005267 for ; Sat, 1 Mar 2025 05:28:54 GMT 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= kqTjuWP5/kn2hFISQcAJ8a0zTcK2MErShBDBky8zYfg=; b=f/FOnXbsuiaKFzRs Hv2POuZn54GkzrbzqBICNH3iIVX2EerKMRMcsgv5EGz7itUV8zjinFtuRYx9nIBL 5fKymCi/6gitDp52ukbErm/GyqznMIHs7Nh6dbU3ywanb2EVQiNb7PDVG8WpL9/2 B1kAFB4mgriZMCeYVCYcTwMuSDgmTSVBcvyYFou2+3hzyUPpipEXm4Ehz4OJbQfA N9Qgn9yw02+xIMHjJBExDiZR9I2IEu0eHUWes0XjrtW6PB5a5A8z5JjNYkXYs27H qkRXnAPenjlDHDp+QoYoDS5WXIJyJeODqKlOREKoxP8NK2Xhk0i0P4CBzEENcucm 0jrX4g== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 453t6k06fr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:28:54 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2235667c974so69529305ad.0 for ; Fri, 28 Feb 2025 21:28:53 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806933; x=1741411733; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kqTjuWP5/kn2hFISQcAJ8a0zTcK2MErShBDBky8zYfg=; b=rnIvAee4UsnjX5H4GA4jZFYm/taGsbe1GFIuLkoy49W/k1QzfxeWYADKENyBM7WZFt ivwhwNuRSoZEiNk28fHzNKX0iUR+xhFkNlhZi0tOY1egKuxky3ubLW5cAkSGiVZ7JvTP Hd+E5OqwUvJgD0nVfdq2oLYuBD4cjB1mnHmCejceHVmAP9+uYApysrKSfXtMZhR7JKAB Adxg7J3g+otb71OSAavIyUrMf4z2nVMgEC+zsikzhHp8658/nGdExj9xGtvzo6OGlEqw pmDP1VtOQxmJAavVGyFvWkTihSGGRZo6dT2L+09ZER7GpXEAzuLRv4ICy1PaSPNLgERE A85A== X-Gm-Message-State: AOJu0Yx6K5Vrw1w26VG56tVcNnwaKe99ZAjXprrhYh3Rl5dRukI4BNtH RHd+zxvyFBvqpP3kiyBClHCiFge8ena7e4kpD2+YOunqN2oCnhDuNKCTEWhUO5Yaoy+khHXuGlQ SKsFnSoyoh8TIfl50ckvfxtbk4bT77k4Hw7m9c27JXo5UOIsgUYvgzF9encDTng== X-Gm-Gg: ASbGncvXuu+ol6YNCzSUIsUGbOFF2c9l1qY9Qn/DC1FsuqsZPJjOwW1A12ME0i0Vix+ lAa25BdoEZrt9UcaikMY7cUJHjmtJ8hBCiKbTQB2I98NA2/d9wfw4+/6o2CzufbkaNa6VWFz4tf zkd6LLln2wd1ltrMm8lYw3kbJ5QvzUCwnBKTA9jNkMCBPyisT0N/BSRWFDgPruQA1UpTOvAT3Ir wL226cpDQRxGhUvK9fTDIALX7qZsHwvjh0+Hl+9i7d41BtRBgGjGnFKThnUcfoQ4P+dXC7xDxIs WqM+mQr/OjjK7WG6v5cHA/nN5mrmjYiyRs+/kGZ+Q42vY5M4YpR/A0m6nVXC8usM X-Received: by 2002:a17:902:d503:b0:21f:3616:1c7b with SMTP id d9443c01a7336-223690e1c4emr111735895ad.29.1740806932957; Fri, 28 Feb 2025 21:28:52 -0800 (PST) X-Google-Smtp-Source: AGHT+IHYFKwL7vXS0s+USC/rSN0G8aIkhH/5/v15sQ0LN2SGU99iOWAIrWbZpBqqmb+3d/pyxFkJlg== X-Received: by 2002:a17:902:d503:b0:21f:3616:1c7b with SMTP id d9443c01a7336-223690e1c4emr111735685ad.29.1740806932595; Fri, 28 Feb 2025 21:28:52 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.28.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:28:52 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 02/39] target/hexagon: Implement {c,}swi helpers Date: Fri, 28 Feb 2025 21:28:08 -0800 Message-Id: <20250301052845.1012069-3-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: IO17Okmaa1Vr5coQ6VzDTx8Pd490sD82 X-Proofpoint-ORIG-GUID: IO17Okmaa1Vr5coQ6VzDTx8Pd490sD82 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 impostorscore=0 priorityscore=1501 bulkscore=0 mlxlogscore=476 mlxscore=0 lowpriorityscore=0 clxscore=1015 spamscore=0 malwarescore=0 adultscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain {c,}swi are the "software interrupt"/"Cancel pending interrupts" instructions. Signed-off-by: Brian Cain --- target/hexagon/op_helper.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index b28a18adf6..fed5cc2715 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -1382,12 +1382,14 @@ void HELPER(siad)(CPUHexagonState *env, uint32_t mask) void HELPER(swi)(CPUHexagonState *env, uint32_t mask) { - g_assert_not_reached(); + BQL_LOCK_GUARD(); + hex_raise_interrupts(env, mask, CPU_INTERRUPT_SWI); } void HELPER(cswi)(CPUHexagonState *env, uint32_t mask) { - g_assert_not_reached(); + BQL_LOCK_GUARD(); + hex_clear_interrupts(env, mask, CPU_INTERRUPT_SWI); } void HELPER(iassignw)(CPUHexagonState *env, uint32_t src) From patchwork Sat Mar 1 05:28:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997313 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7047AC282CD for ; Sat, 1 Mar 2025 05:29:21 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPJ-0007yM-Lz; Sat, 01 Mar 2025 00:29:01 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPG-0007qP-68 for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:28:58 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPE-0008MM-IA for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:28:57 -0500 Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5213YXod030222 for ; Sat, 1 Mar 2025 05:28:55 GMT 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= Q6tvz5dyJK9M2bYfP4Va0345pL/Ta6URQpUynRhKtnA=; b=WCgFoyKFJy8qlaNC WxymUZkaUQiWNd3vx5cY4q05Im47LCWP00lMzJgymKFK0/SDHM8rr2yIJkUhZ7Rx F+c/vttI8erVCu4yDzqXZxHTrkWsV5EIIgqLWVPFJFLNw9jwj6lxkXVWawWWb1GS 31O3qfgdiJH1ZxwF+xllft/HGGUxug2w2bqZ4BAE/Fa1MOPNgrk03mGJz5OPdY8Z xTsccCfB/Vw1MB2Hs0UZaWObUYo5BsmGD8vhV52et1eYIHIUsnFN4A2WIKQyf9NS FEz+3qYgaI8RY3TiQ0IKIwYwOBPg1pP8VosqiPlZX/cnapyAF64sg9KkIGv4+5bf IF4Tug== 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 453tf0g5c8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:28:55 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-2feda472a4aso461528a91.1 for ; Fri, 28 Feb 2025 21:28:55 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806934; x=1741411734; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Q6tvz5dyJK9M2bYfP4Va0345pL/Ta6URQpUynRhKtnA=; b=lSY6KhxHCXrHKqq2d857bfK4pBMs53mXOrkyzSbl2llsaG1Q+VNLeN05nJjz7BoLBN Dqxi7xQpfbt8CGW/ictHcVLVrAvQniMhafXYzRsHl5bbnj/+Omet+SN20CGPPVTgb4Yh 9L8sI/zUshF5lVDhFlBOnHqj1JEIvzQ3oC0F7QWKRuPVNL+2n28HI8N7mEmv6Qaj2IWZ vWWZQgtPH+VdIOBKZhVJhHuF6ukx0W/2/KTJ3bwMZVMFhI1c3NfKU+4tcORt3r8odewN IoQPvBKWl6BfkoQUuXKC//m9XqZB7Ax0KmhxzBEINRonP2J11Hc4Y1TRwwIWaD0D8Ojs JSOg== X-Gm-Message-State: AOJu0Yz+vOk+EtOs9nRdJqsZGLIRIabSSfRHzIJRs20hlQDVdigvKixp BFLMtwSeAt1r6IwCgyqXw5aT/89UNhP7bcbJNVCdSPOvmLfxhuWCxtZnEzvRmueRtKGJMcuqOLK 6RNxewmeOHX5e0Cqk1xFhBkEZBoYx9kpcjO+GjE1feTfaqmgL2h0zo5n4gcw0Tw== X-Gm-Gg: ASbGncso7Cw6zFLOqN9fBrVj0mzP91wGBL7yYb81NA47ayHp5+hMXjvbdmNY2tuCSVS o50ve5e9cthD+9C8MtfhJqIIsgg/e12zQglekJ6IUZXGf4vBlarmC5z62uT0i1JR0GoVFt1DSfB 5bO12kX5RU35w7h8PRNYjW4x8HgNK7guXaGm+cNMMei19JdAdh/Kh6R3EaADl4bDWjKgZctAPrJ RLzg50PlH1ZsWzleGUP+vIac5ZX0mSzs3gCwSB6BEDlTXkMyAJszHAI888JVU3OZcikidGyFpZ7 Wa3/TXp0FSzyBzqHseapCVuZpxLkRu+ld8r69N4OnVnZj4C0Jl6Ypm3QLBPyaAcb X-Received: by 2002:a17:90b:35ce:b0:2fe:9ff7:a053 with SMTP id 98e67ed59e1d1-2febabcb0d3mr7724099a91.23.1740806934095; Fri, 28 Feb 2025 21:28:54 -0800 (PST) X-Google-Smtp-Source: AGHT+IEQ+bTPvkJjdUgo0abY3wmlOqazZ0EKa8bt6bpjkfx+RztUU7EBy2ii5DEt1Hgy7BZptQ5FBg== X-Received: by 2002:a17:90b:35ce:b0:2fe:9ff7:a053 with SMTP id 98e67ed59e1d1-2febabcb0d3mr7724075a91.23.1740806933773; Fri, 28 Feb 2025 21:28:53 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.28.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:28:53 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 03/39] target/hexagon: Implement iassign{r,w} helpers Date: Fri, 28 Feb 2025 21:28:09 -0800 Message-Id: <20250301052845.1012069-4-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: PLcTqxeiPuQiJYAsITK6IbvJq_TXu305 X-Proofpoint-ORIG-GUID: PLcTqxeiPuQiJYAsITK6IbvJq_TXu305 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 suspectscore=0 malwarescore=0 lowpriorityscore=0 mlxlogscore=659 phishscore=0 adultscore=0 spamscore=0 clxscore=1015 mlxscore=0 bulkscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain iassign{r,w} are the "Interrupt to thread assignment {read,write}" instructions. Signed-off-by: Brian Cain --- target/hexagon/op_helper.c | 48 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index fed5cc2715..ded6c80d62 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -1394,12 +1394,56 @@ void HELPER(cswi)(CPUHexagonState *env, uint32_t mask) void HELPER(iassignw)(CPUHexagonState *env, uint32_t src) { - g_assert_not_reached(); + uint32_t modectl; + uint32_t thread_enabled_mask; + CPUState *cpu; + + BQL_LOCK_GUARD(); + modectl = arch_get_system_reg(env, HEX_SREG_MODECTL); + thread_enabled_mask = GET_FIELD(MODECTL_E, modectl); + + CPU_FOREACH(cpu) { + CPUHexagonState *thread_env = &(HEXAGON_CPU(cpu)->env); + uint32_t thread_id_mask = 0x1 << thread_env->threadId; + if (thread_enabled_mask & thread_id_mask) { + uint32_t imask = arch_get_system_reg(thread_env, HEX_SREG_IMASK); + uint32_t intbitpos = (src >> 16) & 0xF; + uint32_t val = (src >> thread_env->threadId) & 0x1; + imask = deposit32(imask, intbitpos, 1, val); + arch_set_system_reg(thread_env, HEX_SREG_IMASK, imask); + + qemu_log_mask(CPU_LOG_INT, "%s: thread " TARGET_FMT_ld + ", new imask 0x%" PRIx32 "\n", __func__, + thread_env->threadId, imask); + } + } + hex_interrupt_update(env); } uint32_t HELPER(iassignr)(CPUHexagonState *env, uint32_t src) { - g_assert_not_reached(); + uint32_t modectl; + uint32_t thread_enabled_mask; + uint32_t intbitpos; + uint32_t dest_reg; + CPUState *cpu; + + BQL_LOCK_GUARD(); + modectl = arch_get_system_reg(env, HEX_SREG_MODECTL); + thread_enabled_mask = GET_FIELD(MODECTL_E, modectl); + /* src fields are in same position as modectl, but mean different things */ + intbitpos = GET_FIELD(MODECTL_W, src); + dest_reg = 0; + CPU_FOREACH(cpu) { + CPUHexagonState *thread_env = &(HEXAGON_CPU(cpu)->env); + uint32_t thread_id_mask = 0x1 << thread_env->threadId; + if (thread_enabled_mask & thread_id_mask) { + uint32_t imask = arch_get_system_reg(thread_env, HEX_SREG_IMASK); + dest_reg |= ((imask >> intbitpos) & 0x1) << thread_env->threadId; + } + } + + return dest_reg; } void HELPER(start)(CPUHexagonState *env, uint32_t imask) From patchwork Sat Mar 1 05:28:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997360 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0A33EC282D0 for ; Sat, 1 Mar 2025 05:35:39 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPM-00085w-Gz; Sat, 01 Mar 2025 00:29:04 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPI-0007wx-Ne for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:00 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPG-0008Mt-N8 for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:00 -0500 Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5213Gj0m005367 for ; Sat, 1 Mar 2025 05:28:57 GMT 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= Kfj7rgBRedK2eywmpRNkmC73n51mR+oPvK7+Aq7iGb4=; b=cdHjGoYWrb+vod8c Xb4iQ6ctPqXMH1i+LEh69PkY9EK9tQPVyr/qYBp9Wc+w3aaXDy0OZxhyHSb2YB0s 1ISJAmokBYH5DOg7wXwr9YQmtUzihKqVOq/3oVJ1CwdRJD0bVeF9qONVH38mxzu3 cJWfWgufrlDf9KtdhdOWJ1d7+Jaso0xVWb+dof0X6X/BDInXPifCuGgbrRBI7tXz UYEJA++zNKq/AzP6NnTAa8jAslYOVMlJ+/90W7126EW2M7yZrDOsjLDbgPOw3vLy MMbEo4cKrV+3sPqSHQMnDnFqRPm8oMZyb5CL9mit+Bf6V0isrgUkfnsM1fhg66Wc GwpqYQ== 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 453t6k06g0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:28:57 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-2fec7e82f6fso1859797a91.1 for ; Fri, 28 Feb 2025 21:28:57 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806936; x=1741411736; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Kfj7rgBRedK2eywmpRNkmC73n51mR+oPvK7+Aq7iGb4=; b=YVlO9AZ6hNgD7F0CmKXtt6m54zMgFWnhnK6ysy7Hxf9gM7lKpmNctbVsZHwqa3994G dsZqka4ACAlqpB1YgsSflfObZfSbteoKEFgQuvepZATdTJJADYZst0RKv2q+Sma2SrwE Sa80++c4IKwFEQQG7ebaQyEPNrq+h00Lr00alUQieAe+luuLNy49LAyj+c1/XmSt0nka MAhKVoKNxlljVvVarEymZGLPfNbvyBor3fBZTBWA7gUAzkiGHk892Pd1LTonuJdIQ4k+ oKaCA8cCmOx3oX5e5ywCqee6mDXF5QTXvWIraZEPJOSNVieae+gWoPzUoDQoeYvakK9I obOA== X-Gm-Message-State: AOJu0YzCxQh6Xd5qj68Wx2D9YRP3r3bnWU6sKITFuYGfzplX6/z7aIL1 205c0ZUrAWD5bainWB65t+7mfAOswe9ZkdYM2YU8mU2vZif/KokZyjwf33z1uCBvX3BRKdInAa1 628oL6wHxdRiSNr43TY+/7bedeE3diYHdtkMOLsNnC0a2rmQBVn2Lyc7VKXfIzA== X-Gm-Gg: ASbGncvlLW1VGxgK+q7vBZHKzEKLHqgLqDVKqYrKeBpjhm1894EJdhmFT5pD13mwiHG PylphfyTKKUDFK0njTvN9LRlMXcVCnqyuKwKqgQZ1qKvBqWWH1ZmiymM+j5D402DLbzY8jwx49k +Em/ecPYW88/6nCfgVniptUeuiKAk83A+GwRTmhTi8PXFM3+dY7mcR/cgINRgaryzK5K09aRea6 w5codaP39Gh0hcRpb5HRIqgPJKAcrNKFIhlEW3gFBLxB2CRSNMuwF9abl932oL3sVmHizK5D0b+ MK2z/Hbj/nAbvuGPRiqydtphpF5Ha6/fEjI24cwmbX6Z0av952Kr549EWwTcORw7 X-Received: by 2002:a17:90b:1d91:b0:2f6:d266:f462 with SMTP id 98e67ed59e1d1-2febabdcca6mr9433373a91.35.1740806936312; Fri, 28 Feb 2025 21:28:56 -0800 (PST) X-Google-Smtp-Source: AGHT+IFGAV36CBGuCS5QcfuCJEtypZy4H1nZCk74uVHfkZAscjK0P6bZFfvNNXFcQ7vueBQ05AMIRg== X-Received: by 2002:a17:90b:1d91:b0:2f6:d266:f462 with SMTP id 98e67ed59e1d1-2febabdcca6mr9433341a91.35.1740806935899; Fri, 28 Feb 2025 21:28:55 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.28.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:28:55 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 04/39] target/hexagon: Implement start/stop helpers Date: Fri, 28 Feb 2025 21:28:10 -0800 Message-Id: <20250301052845.1012069-5-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: rUAK5u8PCOcGJbolaO1797P9bDNIlO1y X-Proofpoint-ORIG-GUID: rUAK5u8PCOcGJbolaO1797P9bDNIlO1y X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 impostorscore=0 priorityscore=1501 bulkscore=0 mlxlogscore=859 mlxscore=0 lowpriorityscore=0 clxscore=1015 spamscore=0 malwarescore=0 adultscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/cpu.h | 3 ++ target/hexagon/cpu_bits.h | 1 + target/hexagon/cpu_helper.h | 3 ++ target/hexagon/cpu.c | 14 +++++- target/hexagon/cpu_helper.c | 94 +++++++++++++++++++++++++++++++++++++ target/hexagon/op_helper.c | 4 +- 6 files changed, 116 insertions(+), 3 deletions(-) diff --git a/target/hexagon/cpu.h b/target/hexagon/cpu.h index 894219fd20..1549c4f1f0 100644 --- a/target/hexagon/cpu.h +++ b/target/hexagon/cpu.h @@ -41,6 +41,7 @@ typedef struct CPUHexagonTLBContext CPUHexagonTLBContext; #define REG_WRITES_MAX 32 #define PRED_WRITES_MAX 5 /* 4 insns + endloop */ #define VSTORES_MAX 2 +#define VECTOR_UNIT_MAX 8 #ifndef CONFIG_USER_ONLY #define CPU_INTERRUPT_SWI CPU_INTERRUPT_TGT_INT_0 @@ -178,6 +179,7 @@ struct ArchCPU { #ifndef CONFIG_USER_ONLY uint32_t num_tlbs; uint32_t l2vic_base_addr; + uint32_t hvx_contexts; #endif }; @@ -194,6 +196,7 @@ G_NORETURN void hexagon_raise_exception_err(CPUHexagonState *env, uint32_t hexagon_greg_read(CPUHexagonState *env, uint32_t reg); uint32_t hexagon_sreg_read(CPUHexagonState *env, uint32_t reg); void hexagon_gdb_sreg_write(CPUHexagonState *env, uint32_t reg, uint32_t val); +void hexagon_cpu_soft_reset(CPUHexagonState *env); #endif #include "exec/cpu-all.h" diff --git a/target/hexagon/cpu_bits.h b/target/hexagon/cpu_bits.h index b559a7ba88..610094a759 100644 --- a/target/hexagon/cpu_bits.h +++ b/target/hexagon/cpu_bits.h @@ -52,6 +52,7 @@ enum hex_event { enum hex_cause { HEX_CAUSE_NONE = -1, + HEX_CAUSE_RESET = 0x000, HEX_CAUSE_TRAP0 = 0x172, HEX_CAUSE_FETCH_NO_UPAGE = 0x012, HEX_CAUSE_INVALID_PACKET = 0x015, diff --git a/target/hexagon/cpu_helper.h b/target/hexagon/cpu_helper.h index 6f0c6697ad..95a0cc0788 100644 --- a/target/hexagon/cpu_helper.h +++ b/target/hexagon/cpu_helper.h @@ -17,6 +17,9 @@ void hexagon_set_sys_pcycle_count_high(CPUHexagonState *env, uint32_t); void hexagon_modify_ssr(CPUHexagonState *env, uint32_t new, uint32_t old); int get_exe_mode(CPUHexagonState *env); void clear_wait_mode(CPUHexagonState *env); +void hexagon_ssr_set_cause(CPUHexagonState *env, uint32_t cause); +void hexagon_start_threads(CPUHexagonState *env, uint32_t mask); +void hexagon_stop_thread(CPUHexagonState *env); static inline void arch_set_thread_reg(CPUHexagonState *env, uint32_t reg, uint32_t val) diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index cb56b929cf..84a96a194b 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -32,6 +32,7 @@ #ifndef CONFIG_USER_ONLY #include "sys_macros.h" +#include "qemu/main-loop.h" #endif static void hexagon_v66_cpu_init(Object *obj) { } @@ -61,6 +62,7 @@ static const Property hexagon_cpu_properties[] = { DEFINE_PROP_UINT32("jtlb-entries", HexagonCPU, num_tlbs, MAX_TLB_ENTRIES), DEFINE_PROP_UINT32("l2vic-base-addr", HexagonCPU, l2vic_base_addr, 0xffffffffULL), + DEFINE_PROP_UINT32("hvx-contexts", HexagonCPU, hvx_contexts, 0), #endif DEFINE_PROP_BOOL("lldb-compat", HexagonCPU, lldb_compat, false), DEFINE_PROP_UNSIGNED("lldb-stack-adjust", HexagonCPU, lldb_stack_adjust, 0, @@ -295,9 +297,18 @@ static void mmu_reset(CPUHexagonState *env) memset(env->hex_tlb, 0, sizeof(*env->hex_tlb)); } } + +void hexagon_cpu_soft_reset(CPUHexagonState *env) +{ + BQL_LOCK_GUARD(); + arch_set_system_reg(env, HEX_SREG_SSR, 0); + hexagon_ssr_set_cause(env, HEX_CAUSE_RESET); + + target_ulong evb = arch_get_system_reg(env, HEX_SREG_EVB); + arch_set_thread_reg(env, HEX_REG_PC, evb); +} #endif - static void hexagon_cpu_reset_hold(Object *obj, ResetType type) { CPUState *cs = CPU(obj); @@ -327,6 +338,7 @@ static void hexagon_cpu_reset_hold(Object *obj, ResetType type) } mmu_reset(env); arch_set_system_reg(env, HEX_SREG_HTID, cs->cpu_index); + hexagon_cpu_soft_reset(env); memset(env->t_sreg, 0, sizeof(target_ulong) * NUM_SREGS); memset(env->greg, 0, sizeof(target_ulong) * NUM_GREGS); env->threadId = cs->cpu_index; diff --git a/target/hexagon/cpu_helper.c b/target/hexagon/cpu_helper.c index 9373e491d6..e151c6335a 100644 --- a/target/hexagon/cpu_helper.c +++ b/target/hexagon/cpu_helper.c @@ -84,8 +84,102 @@ void clear_wait_mode(CPUHexagonState *env) SET_SYSTEM_FIELD(env, HEX_SREG_MODECTL, MODECTL_W, thread_wait_mask); } +void hexagon_ssr_set_cause(CPUHexagonState *env, uint32_t cause) +{ + g_assert(bql_locked()); + + const uint32_t old = arch_get_system_reg(env, HEX_SREG_SSR); + SET_SYSTEM_FIELD(env, HEX_SREG_SSR, SSR_EX, 1); + SET_SYSTEM_FIELD(env, HEX_SREG_SSR, SSR_CAUSE, cause); + const uint32_t new = arch_get_system_reg(env, HEX_SREG_SSR); + + hexagon_modify_ssr(env, new, old); +} + + int get_exe_mode(CPUHexagonState *env) { g_assert_not_reached(); } + +static void set_enable_mask(CPUHexagonState *env) +{ + g_assert(bql_locked()); + + const uint32_t modectl = arch_get_system_reg(env, HEX_SREG_MODECTL); + uint32_t thread_enabled_mask = GET_FIELD(MODECTL_E, modectl); + thread_enabled_mask |= 0x1 << env->threadId; + SET_SYSTEM_FIELD(env, HEX_SREG_MODECTL, MODECTL_E, thread_enabled_mask); +} + +static uint32_t clear_enable_mask(CPUHexagonState *env) +{ + g_assert(bql_locked()); + + const uint32_t modectl = arch_get_system_reg(env, HEX_SREG_MODECTL); + uint32_t thread_enabled_mask = GET_FIELD(MODECTL_E, modectl); + thread_enabled_mask &= ~(0x1 << env->threadId); + SET_SYSTEM_FIELD(env, HEX_SREG_MODECTL, MODECTL_E, thread_enabled_mask); + return thread_enabled_mask; +} +static void do_start_thread(CPUState *cs, run_on_cpu_data tbd) +{ + BQL_LOCK_GUARD(); + + CPUHexagonState *env = cpu_env(cs); + + hexagon_cpu_soft_reset(env); + + set_enable_mask(env); + + cs->halted = 0; + cs->exception_index = HEX_EVENT_NONE; + cpu_resume(cs); +} + +void hexagon_start_threads(CPUHexagonState *current_env, uint32_t mask) +{ + CPUState *cs; + CPU_FOREACH(cs) { + CPUHexagonState *env = cpu_env(cs); + if (!(mask & (0x1 << env->threadId))) { + continue; + } + + if (current_env->threadId != env->threadId) { + async_safe_run_on_cpu(cs, do_start_thread, RUN_ON_CPU_NULL); + } + } +} + +/* + * When we have all threads stopped, the return + * value to the shell is register 2 from thread 0. + */ +static target_ulong get_thread0_r2(void) +{ + CPUState *cs; + CPU_FOREACH(cs) { + CPUHexagonState *thread = cpu_env(cs); + if (thread->threadId == 0) { + return thread->gpr[2]; + } + } + g_assert_not_reached(); +} + +void hexagon_stop_thread(CPUHexagonState *env) + +{ + BQL_LOCK_GUARD(); + + uint32_t thread_enabled_mask = clear_enable_mask(env); + CPUState *cs = env_cpu(env); + cpu_interrupt(cs, CPU_INTERRUPT_HALT); + if (!thread_enabled_mask) { + /* All threads are stopped, exit */ + exit(get_thread0_r2()); + } +} + #endif diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index ded6c80d62..9f79b1a20c 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -1448,12 +1448,12 @@ uint32_t HELPER(iassignr)(CPUHexagonState *env, uint32_t src) void HELPER(start)(CPUHexagonState *env, uint32_t imask) { - g_assert_not_reached(); + hexagon_start_threads(env, imask); } void HELPER(stop)(CPUHexagonState *env) { - g_assert_not_reached(); + hexagon_stop_thread(env); } void HELPER(wait)(CPUHexagonState *env, target_ulong PC) From patchwork Sat Mar 1 05:28:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997324 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 52C6FC282D0 for ; Sat, 1 Mar 2025 05:30:23 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPM-000861-I8; Sat, 01 Mar 2025 00:29:05 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPJ-0007yg-Tm for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:01 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPI-0008N3-2U for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:01 -0500 Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5214Bom5027112 for ; Sat, 1 Mar 2025 05:28:58 GMT 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= kYy1GlhvnXUoK9Bc3kcNAPJXZk5CcLweWy3RyoizGTs=; b=Mo1GQW3eaXQLLvKr SD0QEzdSbkVHSQZ/lGwcgAp19E7vXRaVG55sSlkivSWX+h70t8mfNE3fNC5QmLfN hK/dUTu0GGlf3BPn6R2cjeagRcmmBZAYqVOnVmXD43v3oSkYxQavBAdKayBjC5Bf d+Bjm/9aS+YBHPB1fS2z+/0oliw293KQnk0x0zAG5iSAohgX/OOOC5CH4q+aa8dd ykCQFAMlW+r1hOzA8JCCJf1Lc/CskRrmUdOCe+SylhppkSr2UUcZbAg6mhMqpXyC T4XkCJ6aD8J2lDUqH4IvOcMbhjAODiCBzz0lOPNZ/cFEDHzXdRKmIzDDbh3Dc8Le TGHlMQ== 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 453u0d0374-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:28:58 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-2fed20dd70cso1135213a91.1 for ; Fri, 28 Feb 2025 21:28:58 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806937; x=1741411737; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kYy1GlhvnXUoK9Bc3kcNAPJXZk5CcLweWy3RyoizGTs=; b=NzeOWnjpXxOA4sW0LFLKWaal7siIO9Uf6us7Kt8sJigS/AUvEOzI8WBbqB2TMW9L8Q JVZV/uLcIkmkrxHjkqrEG/w7dSHqN9TMKZzR/cT6dEPh5YNpdO7iYOwlUPxnqfGOKpRX Lcki1t5BDiDqI4e4aJvwOVM+GV94jCK4tAhObifFvKbeOZLSKHNQOlu7/snqtOdCE0dc /xIGghoAAq8SoefTvuDUJzfJL9NpdQsfhvrxrnmnqgEtcPA7s8/adONJHPjgle064uwh mLjL69mJ4vjQ+jMITsGao703qWE25enUacLmvy384EQjbNjeiyeSM+UZs+1reUAI5KGR cEqA== X-Gm-Message-State: AOJu0YxrTPbFRXCq9zv2qwYQwGLE7xN8jTVaQcPubweTzAU6hb+Fm7Za UzSLNzM+TPGkvgfUFnrqsq0NkfFSxwbNO26ihI/Zn4HW4pESx22UUaQAewG8kUrU55diDmbRvV8 vMRGRhYLp84XOF2VLWW7gU4T6vcSB8Lf+0t56BVW153/GEb7u5w5G6R3gJARsNA== X-Gm-Gg: ASbGnctimwH2HbhlPECxqYS9jaU5sNsbpBfDHBFuMgCgbCTQKltA9ru+1MdUV2tBy3q Z8bxm2TiKhjJ5qAYT76jhZET4SnljqRWgglWeMJKxfLcVatXTEld5kJOnSfBC39MnKqRqgERYfG LQ9DrspIyt2W2Me+VfKBQgRTvjsMM41JwGW8ZmDKi83vRgGhdtQxysGeMPx3ziZ2k7FyYQv03I2 wvL+CQ8jWzlYwHzLWiErkFzblsGRLShyTGE6rFHLcMdwC6g82K5atP2aUL5mx65NsT+jlxEsnmE fcWbwhYWu+RZrbbLDjvNVmSQ2Ca7uom7RV1l2Z+PB4RNvqQF/skT50WjcGmCBrP6 X-Received: by 2002:a17:90b:2f8d:b0:2ee:48bf:7dc3 with SMTP id 98e67ed59e1d1-2febab7862fmr10632221a91.15.1740806937378; Fri, 28 Feb 2025 21:28:57 -0800 (PST) X-Google-Smtp-Source: AGHT+IHI0mU2PUSnbCokGJHBDFf7KjOyAUkz/fAcXQgRgb5x+Gfn/ikzAw2EPbiKBsiZRQU7FaebXg== X-Received: by 2002:a17:90b:2f8d:b0:2ee:48bf:7dc3 with SMTP id 98e67ed59e1d1-2febab7862fmr10632186a91.15.1740806937012; Fri, 28 Feb 2025 21:28:57 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.28.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:28:56 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 05/39] target/hexagon: Implement modify SSR Date: Fri, 28 Feb 2025 21:28:11 -0800 Message-Id: <20250301052845.1012069-6-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: HiKTON7Pi42VSIvnlSRjUW1oxfnuFQC5 X-Proofpoint-GUID: HiKTON7Pi42VSIvnlSRjUW1oxfnuFQC5 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 adultscore=0 phishscore=0 malwarescore=0 spamscore=0 mlxscore=0 suspectscore=0 clxscore=1015 bulkscore=0 priorityscore=1501 mlxlogscore=648 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain The per-vCPU System Status Register controls many modal behaviors of the system architecture. When the SSR is updated, we trigger the necessary effects for interrupts, privilege/MMU, and HVX context mapping. Signed-off-by: Brian Cain --- target/hexagon/cpu_helper.c | 100 +++++++++++++++++++++++++++++++++++- 1 file changed, 99 insertions(+), 1 deletion(-) diff --git a/target/hexagon/cpu_helper.c b/target/hexagon/cpu_helper.c index e151c6335a..3e2364a7b0 100644 --- a/target/hexagon/cpu_helper.c +++ b/target/hexagon/cpu_helper.c @@ -14,6 +14,8 @@ #else #include "hw/boards.h" #include "hw/hexagon/hexagon.h" +#include "hex_interrupts.h" +#include "hex_mmu.h" #endif #include "exec/exec-all.h" #include "exec/cpu_ldst.h" @@ -69,9 +71,105 @@ void hexagon_set_sys_pcycle_count(CPUHexagonState *env, uint64_t cycles) g_assert_not_reached(); } +static MMVector VRegs[VECTOR_UNIT_MAX][NUM_VREGS]; +static MMQReg QRegs[VECTOR_UNIT_MAX][NUM_QREGS]; + +/* + * EXT_CONTEXTS + * SSR.XA 2 4 6 8 + * 000 HVX Context 0 HVX Context 0 HVX Context 0 HVX Context 0 + * 001 HVX Context 1 HVX Context 1 HVX Context 1 HVX Context 1 + * 010 HVX Context 0 HVX Context 2 HVX Context 2 HVX Context 2 + * 011 HVX Context 1 HVX Context 3 HVX Context 3 HVX Context 3 + * 100 HVX Context 0 HVX Context 0 HVX Context 4 HVX Context 4 + * 101 HVX Context 1 HVX Context 1 HVX Context 5 HVX Context 5 + * 110 HVX Context 0 HVX Context 2 HVX Context 2 HVX Context 6 + * 111 HVX Context 1 HVX Context 3 HVX Context 3 HVX Context 7 + */ +static int parse_context_idx(CPUHexagonState *env, uint8_t XA) +{ + int ret; + HexagonCPU *cpu = env_archcpu(env); + if (cpu->hvx_contexts == 6 && XA >= 6) { + ret = XA - 6 + 2; + } else { + ret = XA % cpu->hvx_contexts; + } + g_assert(ret >= 0 && ret < VECTOR_UNIT_MAX); + return ret; +} + +static void check_overcommitted_hvx(CPUHexagonState *env, uint32_t ssr) +{ + if (!GET_FIELD(SSR_XE, ssr)) { + return; + } + + uint8_t XA = GET_SSR_FIELD(SSR_XA, ssr); + + CPUState *cs; + CPU_FOREACH(cs) { + CPUHexagonState *env_ = cpu_env(cs); + if (env_ == env) { + continue; + } + /* Check if another thread has the XE bit set and same XA */ + uint32_t ssr_ = arch_get_system_reg(env_, HEX_SREG_SSR); + if (GET_SSR_FIELD(SSR_XE2, ssr_) && GET_FIELD(SSR_XA, ssr_) == XA) { + qemu_log_mask(LOG_GUEST_ERROR, + "setting SSR.XA '%d' on thread %d but thread" + " %d has same extension active\n", XA, env->threadId, + env_->threadId); + } + } +} + void hexagon_modify_ssr(CPUHexagonState *env, uint32_t new, uint32_t old) { - g_assert_not_reached(); + g_assert(bql_locked()); + + bool old_EX = GET_SSR_FIELD(SSR_EX, old); + bool old_UM = GET_SSR_FIELD(SSR_UM, old); + bool old_GM = GET_SSR_FIELD(SSR_GM, old); + bool old_IE = GET_SSR_FIELD(SSR_IE, old); + uint8_t old_XA = GET_SSR_FIELD(SSR_XA, old); + bool new_EX = GET_SSR_FIELD(SSR_EX, new); + bool new_UM = GET_SSR_FIELD(SSR_UM, new); + bool new_GM = GET_SSR_FIELD(SSR_GM, new); + bool new_IE = GET_SSR_FIELD(SSR_IE, new); + uint8_t new_XA = GET_SSR_FIELD(SSR_XA, new); + + if ((old_EX != new_EX) || + (old_UM != new_UM) || + (old_GM != new_GM)) { + hex_mmu_mode_change(env); + } + + uint8_t old_asid = GET_SSR_FIELD(SSR_ASID, old); + uint8_t new_asid = GET_SSR_FIELD(SSR_ASID, new); + if (new_asid != old_asid) { + CPUState *cs = env_cpu(env); + tlb_flush(cs); + } + + if (old_XA != new_XA) { + int old_unit = parse_context_idx(env, old_XA); + int new_unit = parse_context_idx(env, new_XA); + + /* Ownership exchange */ + memcpy(VRegs[old_unit], env->VRegs, sizeof(env->VRegs)); + memcpy(QRegs[old_unit], env->QRegs, sizeof(env->QRegs)); + memcpy(env->VRegs, VRegs[new_unit], sizeof(env->VRegs)); + memcpy(env->QRegs, QRegs[new_unit], sizeof(env->QRegs)); + + check_overcommitted_hvx(env, new); + } + + /* See if the interrupts have been enabled or we have exited EX mode */ + if ((new_IE && !old_IE) || + (!new_EX && old_EX)) { + hex_interrupt_update(env); + } } void clear_wait_mode(CPUHexagonState *env) From patchwork Sat Mar 1 05:28:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997318 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7ADFAC282CD for ; Sat, 1 Mar 2025 05:29:38 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPN-00088I-V2; Sat, 01 Mar 2025 00:29:05 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPK-00083D-JY for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:02 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPI-0008ND-Tb for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:02 -0500 Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5213Gngf005403 for ; Sat, 1 Mar 2025 05:28:59 GMT 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= /i+ZUfqaP8JGue0A2xzcyNC25I/nrXf6rB9YDXOFk7s=; b=GvTohUWMZ5DFYNAg YD5hPVE0L1//XWlTEpWhH+tgFcnLZQnu8iym6ApSsN/MfGM/gGFdJR4hTcgMVZLg SRfHquHFIyM3RwiKhnwLopNXhv/GanCWEaEQDUuuDRiX3VFYmeC6Y44OhcNy0L0y 1Rb32ROvF8pxH8ewUiFxhkqcs0dOiXWH+bDgxII8gSlNOaMpvXFIQe3ijLJ6rCqK 5wWoqSItMYOkLCPxqSbM/VSUE0BCXbTV5mFNFM+NtheMHT6q9KDWat7dz3phmckV /kbYkuQyDITgMU8rLoaK9u9rd9GNoc+XCOMvKvex8vkp5S9gRaBoQSWtYPABVprh doiK0g== 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 453t6k06g6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:28:59 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-2feb8d29740so3586795a91.1 for ; Fri, 28 Feb 2025 21:28:59 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806938; x=1741411738; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/i+ZUfqaP8JGue0A2xzcyNC25I/nrXf6rB9YDXOFk7s=; b=vOUeKB9rOobB0mvSU400xBjjM2qh2g/iRqagjBfsiMSWDAqkI4UxUqR94IJh4iQteh IVnHGwAZ4HH2MiKqpLhxFpD29UeQPLbiCQa+2bEZQtI9b/iMaJ05KpXe9RYhD6qQUgLA HhyHFfjdXlJuzYADhxb/e8iS0dINRsPwyWEtZdn+wjwmbLXkqSItoG+w6DXzBmTBuHnj 3NVOyIR67hRq1G8j70I8Uxc22i8HJpUqPFrrOdDEBkrbVSXU1RfXVcPTtCjerVqjDMC5 hLAn5WrhVOKe/ZR+rYmKv1+sYmS0XG9AGlqdWyMOJNMqW699HvvAvMn5LVL1LbWimJ6S QgiA== X-Gm-Message-State: AOJu0Yz+fvEy9pV5DQXpIwdimPaq6pfqvvHAbRrUGg5dHVbLXgyDCzdK 9zggJVbUNgxggldxPFLc+dmy71J74/EbwpbQSL2vy6iHb9JwirqZ4jYakv69KAnvNZJQpli9RX/ jaVDpU5spkMgdBEIszDIXeiHmftSVBX8bbx2LiBrLuF8VLjoRqRqYXjgAHccr1A== X-Gm-Gg: ASbGncuoblb2jO3r4a1alGsJDh3ANDY2xN36JjH5ZwAAbT/tnSCSKxtfUxqSGkD6xA7 LL8J7+rEFwseiHlkxPgbRdbigs9ciAQL052ATUeIIlm6wrQW04huvif4j4IGHkOqbxUhbpdYNgB Mo/qoWGO/ocQP2SgL+6yao9r99ULS/t6sKRcThn7Vg1DYnrVtF6u78U9Hcd5a34pwVrHWRScZtm OLNTKAurAqmKVgQFQDZL6f90HrMVmy1pkjf5L579xHyrngNl3a/3j7+5b1M1mIhC9uXZOW28vDe tMRau3iR10xyTcnM/Ev848TLPS6Wq7BtxvU96OhXqrLF+kEVMgKV3dwbIqEKLZbV X-Received: by 2002:a17:90b:4f44:b0:2fe:7f40:420a with SMTP id 98e67ed59e1d1-2febab799f7mr10788751a91.17.1740806938616; Fri, 28 Feb 2025 21:28:58 -0800 (PST) X-Google-Smtp-Source: AGHT+IH72kiKGN4dHuERv/u6L5H0eIF3oOIwgmpqzEVp5xfeok9+rQlarJqlcsYi/8jSZj9Lh5K7Gw== X-Received: by 2002:a17:90b:4f44:b0:2fe:7f40:420a with SMTP id 98e67ed59e1d1-2febab799f7mr10788714a91.17.1740806938177; Fri, 28 Feb 2025 21:28:58 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.28.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:28:57 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 06/39] target/hexagon: Implement {g,s}etimask helpers Date: Fri, 28 Feb 2025 21:28:12 -0800 Message-Id: <20250301052845.1012069-7-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: g7LLqfxHv0OfgXE0G344E7L4yWVyGOzq X-Proofpoint-ORIG-GUID: g7LLqfxHv0OfgXE0G344E7L4yWVyGOzq X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 impostorscore=0 priorityscore=1501 bulkscore=0 mlxlogscore=452 mlxscore=0 lowpriorityscore=0 clxscore=1015 spamscore=0 malwarescore=0 adultscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/op_helper.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index 9f79b1a20c..83088cfaa3 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -1468,12 +1468,39 @@ void HELPER(resume)(CPUHexagonState *env, uint32_t mask) uint32_t HELPER(getimask)(CPUHexagonState *env, uint32_t tid) { - g_assert_not_reached(); + CPUState *cs; + CPU_FOREACH(cs) { + HexagonCPU *found_cpu = HEXAGON_CPU(cs); + CPUHexagonState *found_env = &found_cpu->env; + if (found_env->threadId == tid) { + target_ulong imask = arch_get_system_reg(found_env, HEX_SREG_IMASK); + qemu_log_mask(CPU_LOG_INT, "%s: tid %d imask = 0x%x\n", + __func__, env->threadId, + (unsigned)GET_FIELD(IMASK_MASK, imask)); + return GET_FIELD(IMASK_MASK, imask); + } + } + return 0; } void HELPER(setimask)(CPUHexagonState *env, uint32_t pred, uint32_t imask) { - g_assert_not_reached(); + CPUState *cs; + + BQL_LOCK_GUARD(); + CPU_FOREACH(cs) { + HexagonCPU *found_cpu = HEXAGON_CPU(cs); + CPUHexagonState *found_env = &found_cpu->env; + + if (pred == found_env->threadId) { + SET_SYSTEM_FIELD(found_env, HEX_SREG_IMASK, IMASK_MASK, imask); + qemu_log_mask(CPU_LOG_INT, "%s: tid %d imask 0x%x\n", + __func__, found_env->threadId, imask); + hex_interrupt_update(env); + return; + } + } + hex_interrupt_update(env); } static bool handle_pmu_sreg_write(CPUHexagonState *env, uint32_t reg, From patchwork Sat Mar 1 05:28:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997365 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 9BC62C282CD for ; Sat, 1 Mar 2025 05:37:09 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPO-000896-Ix; Sat, 01 Mar 2025 00:29:06 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPL-000854-P0 for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:03 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPK-0008NQ-0L for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:03 -0500 Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5213GeKw005263 for ; Sat, 1 Mar 2025 05:29:00 GMT 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= QFSoontmVCCySoOSie+0xcFF7RoQ0IalOma5sYMMR0A=; b=YvxX3sZj4BjRpN/Z ApufCcLTABKLOFWPgnMBn/DdgfC3NdVcjqbWhAXTe8XswVwZzG7IlEiTHq64os36 g0YlpYDbpbe7KmFpNd0SNLCWJMoCt61Ho0kZ1FkoiTLsCd9X3h4e43HlDki062JE SwPYN393Qe870RP6Zhi5dgf273cU55oWzd+QLbL6JLN2DmugO60sQ8OT6//PgitY mSgn3RpGtR5tHqHo9AFQEzkSnMdwXlXsSliVAIac6vbrIz/3cJb+DTEgVFOlDhmN CybOJh9HYpfmznUo7VOXbdQYW8uPhrSMuDXCQF7wApF7GrdPvKJeq8LKXMAg0IHX 8B1rug== 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 453t6k06ga-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:00 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-2fec1f46678so4137225a91.1 for ; Fri, 28 Feb 2025 21:29:00 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806940; x=1741411740; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QFSoontmVCCySoOSie+0xcFF7RoQ0IalOma5sYMMR0A=; b=nFdT2g86JgD26gHVdB/UJgVlnWJOkVVriZa6avkvo5yajTt2kx19aqCfQC2rL1kR7j UT6qGTwZRIub3L5F6skZMTq5g7f7CmXXLvTqWAgY8VhNSdATahrqKZOPR6dIv4UPr5J0 vTeEPJKjVO11pd2DP95YR7uDXfI+Vgt1bPgNBCkkUPezMtE0sQSySSirK4Wier6N23Xl X/otBTPtaqKv/dxG4dKJW7yGHUMFhVp7PP2rqJsfBdrQSsTOUfT/L4zzchlRVXHBC9K6 dxKc580VLiy6vXwqsYcAOqrhl+bupLebENdTszlGrUKh45pr7/82mJSw/KonmH+1/bSP DbdQ== X-Gm-Message-State: AOJu0YzZQjmkitfsUgrERWUWH7Yy/Qte59VHxKT2IkittnyBRlvpmNFY QP90/P17XOFPnzoLbbictgAbMHSceEUu062sOVN1JMOvrZbXjCgpAJaioN61+RNiGlIe4WgtIlx W5E4k8DJDc73zdoFwLzJ8NoCkv9ibeAU+liHpnacYFevH39Zf3h8bu0PYGGS9Qg== X-Gm-Gg: ASbGncve7yYHbjwAKtQ4eDEOfACUTlVfJ1C7vWH6TC8h1+UE9ELeraPA/A7ytV809os zUMUL+wQKePR9OxJrSfT+zt98Fdmw8HdDqbCSPaVe4D0yAbLG4L9mGxzFwnuBepuT5UWRxiEMUg ZK0In92CES1kyHdpUUQlAHR4tSEPQrTQjj+Kn70xc8hTfW0/Zf97IYaojiPTh/JtplQ2S7sBE7T 3AYNxMX4/R2iamKy6JU4yq3nOrnRGrUPt0azTN8Pqd5APeAagJ8307RHNOjapMnm2hVo1rWMSuw bKeQK81yFfSqQTB+bTdVXh8cIQvezIYNxoaQCtavOdhqTun0goKUmzIaJdhjEUjW X-Received: by 2002:a17:90b:574c:b0:2fa:b84:b304 with SMTP id 98e67ed59e1d1-2febabdc1fdmr8513277a91.22.1740806939686; Fri, 28 Feb 2025 21:28:59 -0800 (PST) X-Google-Smtp-Source: AGHT+IFQuXj9UdjyTDBH6ICsvQeAJpuC85RoMbElyOXaLOhTD46Hsxk5kchQG9BB8a5U4K0sFEr7PA== X-Received: by 2002:a17:90b:574c:b0:2fa:b84:b304 with SMTP id 98e67ed59e1d1-2febabdc1fdmr8513251a91.22.1740806939361; Fri, 28 Feb 2025 21:28:59 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.28.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:28:59 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 07/39] target/hexagon: Implement wait helper Date: Fri, 28 Feb 2025 21:28:13 -0800 Message-Id: <20250301052845.1012069-8-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: mmAFumv3Vn_p9hGQ2lLSVyaNSfTN4avr X-Proofpoint-ORIG-GUID: mmAFumv3Vn_p9hGQ2lLSVyaNSfTN4avr X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 impostorscore=0 priorityscore=1501 bulkscore=0 mlxlogscore=882 mlxscore=0 lowpriorityscore=0 clxscore=1015 spamscore=0 malwarescore=0 adultscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/cpu_helper.h | 1 + target/hexagon/cpu_helper.c | 40 +++++++++++++++++++++++++++++++++++++ target/hexagon/op_helper.c | 6 +++++- 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/target/hexagon/cpu_helper.h b/target/hexagon/cpu_helper.h index 95a0cc0788..e8d89d8526 100644 --- a/target/hexagon/cpu_helper.h +++ b/target/hexagon/cpu_helper.h @@ -20,6 +20,7 @@ void clear_wait_mode(CPUHexagonState *env); void hexagon_ssr_set_cause(CPUHexagonState *env, uint32_t cause); void hexagon_start_threads(CPUHexagonState *env, uint32_t mask); void hexagon_stop_thread(CPUHexagonState *env); +void hexagon_wait_thread(CPUHexagonState *env, target_ulong PC); static inline void arch_set_thread_reg(CPUHexagonState *env, uint32_t reg, uint32_t val) diff --git a/target/hexagon/cpu_helper.c b/target/hexagon/cpu_helper.c index 3e2364a7b0..e64568b9fc 100644 --- a/target/hexagon/cpu_helper.c +++ b/target/hexagon/cpu_helper.c @@ -71,6 +71,46 @@ void hexagon_set_sys_pcycle_count(CPUHexagonState *env, uint64_t cycles) g_assert_not_reached(); } +static void set_wait_mode(CPUHexagonState *env) +{ + g_assert(bql_locked()); + + const uint32_t modectl = arch_get_system_reg(env, HEX_SREG_MODECTL); + uint32_t thread_wait_mask = GET_FIELD(MODECTL_W, modectl); + thread_wait_mask |= 0x1 << env->threadId; + SET_SYSTEM_FIELD(env, HEX_SREG_MODECTL, MODECTL_W, thread_wait_mask); +} + +void hexagon_wait_thread(CPUHexagonState *env, target_ulong PC) +{ + g_assert(bql_locked()); + + if (qemu_loglevel_mask(LOG_GUEST_ERROR) && + (env->k0_lock_state != HEX_LOCK_UNLOCKED || + env->tlb_lock_state != HEX_LOCK_UNLOCKED)) { + qemu_log("WARNING: executing wait() with acquired lock" + "may lead to deadlock\n"); + } + g_assert(get_exe_mode(env) != HEX_EXE_MODE_WAIT); + + CPUState *cs = env_cpu(env); + /* + * The addtion of cpu_has_work is borrowed from arm's wfi helper + * and is critical for our stability + */ + if ((cs->exception_index != HEX_EVENT_NONE) || + (cpu_has_work(cs))) { + qemu_log_mask(CPU_LOG_INT, + "%s: thread %d skipping WAIT mode, have some work\n", + __func__, env->threadId); + return; + } + set_wait_mode(env); + env->wait_next_pc = PC + 4; + + cpu_interrupt(cs, CPU_INTERRUPT_HALT); +} + static MMVector VRegs[VECTOR_UNIT_MAX][NUM_VREGS]; static MMQReg QRegs[VECTOR_UNIT_MAX][NUM_QREGS]; diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index 83088cfaa3..03bed11f6e 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -1458,7 +1458,11 @@ void HELPER(stop)(CPUHexagonState *env) void HELPER(wait)(CPUHexagonState *env, target_ulong PC) { - g_assert_not_reached(); + BQL_LOCK_GUARD(); + + if (!fIN_DEBUG_MODE(env->threadId)) { + hexagon_wait_thread(env, PC); + } } void HELPER(resume)(CPUHexagonState *env, uint32_t mask) From patchwork Sat Mar 1 05:28:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997372 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 06187C282D0 for ; Sat, 1 Mar 2025 05:37:48 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPO-00089A-OT; Sat, 01 Mar 2025 00:29:06 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPM-00086l-SA for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:05 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPL-0008Nb-53 for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:04 -0500 Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5214E6Do030641 for ; Sat, 1 Mar 2025 05:29:02 GMT 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= eiekoLL7gr5td0wkXCBh/rRbE+ZSV6VcR92m6VgCUw0=; b=ARrmYGTnLvHYLr3e ejQljD+0yUfsE6E2RD9CmyOFoFyTqA4joF8kQMvt9Fg7gfQhpEW2tur6WSU5syRI x67J6AXM9ls0X21F1kt4hKxM/5/lI//cxFLUX8AbRv1Mwb7UEhSK4l2Bcy88p/Eu bJI5tm5gBd6rrrD5XomfjtMrmlMn/tmfMDulX3TC6WHCQauuQvkWEL1MI79E+fld mzpsE8A1owMe6zVvmC2wQmqqHUeXiRcKHL4U5u5YRs0Z64izMZ35XYJ6LddOZZOI Tp6lWYqTpDO96orc4EdwF3rtpeBDHu4sLZJNF71JyQ6bk0o13dtvDaXr/r9Vk05b takCPg== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 453u0d037a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:01 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-22334230880so39443325ad.1 for ; Fri, 28 Feb 2025 21:29:01 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806941; x=1741411741; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=eiekoLL7gr5td0wkXCBh/rRbE+ZSV6VcR92m6VgCUw0=; b=vRH0qgUd5sDnz1NXj2NwOGnZccRkwxFxId110qYz5/BbxUwCFlwvLYg2tS1QYhY5Z/ WVZBH1agrjK4bRM6TuSx9rqgA3A0xefIfdeikOvT1i79pEwn5WQ18n4crbC00TRO7xXQ DNFfCrH1eW+LIuGqfB0BPsaJK0ePT+9hhi2I/CAwpkSO7jRRE3bHSvEbNpu3XsCA8uSM Z387nx9NHJHHG6YVMaLDGozw0lAwoIyyqtfQDiIdiEpKkB2KIuRs7cWQEfPU6VWaGRpX U2Uewv6M4j3aWH8SDeLR8OUXRZD2d/56Ab9yvup1ANK5cd2SaZuga4qjSvptNA5RZHz7 thrw== X-Gm-Message-State: AOJu0Yw1AV+8quomQk+NwN/wzDVk32moPRzB3CbjYKIsbCpELFmkrm6H JBbDyyv8Kd9ptUWaVFQ2oEibKMN+ks6dlsmYGGHM2/xnkGB63FVTG/EvMtQ7f/k36y34AycIVC5 9eqYL7ZPsctvcm1hYZ3bxRAg2AERrB4hFC6ZvCkv0j9/13yAXQtjak8UvQqi3Tg== X-Gm-Gg: ASbGnct0tO9jKcvSjO9xDQGd3BqVaHThrU14sj4od3yuaSPCpVovPDpmwyZmhIHJoL1 Yi3V6+jWWiEfDMkE1cvsGbWkPcJFqLK4ve+c8GzEOZqXm6KYypMltTem3310j2+qrc5h2+aYmdt eZIEjUi+kWNMcmytTCHTpnvZ25mJaFCp/I2TspImSHsfInS6uR/1IbdQFZ5m/qpq73n50eusId6 l211SBkJ2w9TQRlxNjxQhGM3qP7fcKPLpfWTrh4Ly1cUP3whI8EQOAe+sNkIrLdsmt0BA71326Y oMOm9pqmTe/ECFK32kdll1LwEBTv/Et1huPPmNoUJr0THd13Mymv789EIld764wi X-Received: by 2002:a17:903:230c:b0:223:7006:4db2 with SMTP id d9443c01a7336-22370064ea3mr67165225ad.31.1740806940831; Fri, 28 Feb 2025 21:29:00 -0800 (PST) X-Google-Smtp-Source: AGHT+IHZ+7DXIXcMC+zzf3hwna0fyMOTGjC75mvJdEnNCgzRN7ydyvCA1BpoBJtJneugJ//CM4ql/g== X-Received: by 2002:a17:903:230c:b0:223:7006:4db2 with SMTP id d9443c01a7336-22370064ea3mr67165085ad.31.1740806940498; Fri, 28 Feb 2025 21:29:00 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.28.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:00 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 08/39] target/hexagon: Implement get_exe_mode() Date: Fri, 28 Feb 2025 21:28:14 -0800 Message-Id: <20250301052845.1012069-9-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: 7IW3aro-KkTnC6zlSiOZJqTEoA9la8DF X-Proofpoint-GUID: 7IW3aro-KkTnC6zlSiOZJqTEoA9la8DF X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 adultscore=0 phishscore=0 malwarescore=0 spamscore=0 mlxscore=0 suspectscore=0 clxscore=1015 bulkscore=0 priorityscore=1501 mlxlogscore=671 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/reg_fields_def.h.inc | 11 +++++++++++ target/hexagon/cpu_helper.c | 24 ++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/target/hexagon/reg_fields_def.h.inc b/target/hexagon/reg_fields_def.h.inc index 156a3514e7..50b8c26f8b 100644 --- a/target/hexagon/reg_fields_def.h.inc +++ b/target/hexagon/reg_fields_def.h.inc @@ -135,3 +135,14 @@ DEF_REG_FIELD(CCR_GRE, 27, 1) DEF_REG_FIELD(CCR_VV1, 29, 1) DEF_REG_FIELD(CCR_VV2, 30, 1) DEF_REG_FIELD(CCR_VV3, 31, 1) + +/* ISDB ST fields */ +DEF_REG_FIELD(ISDBST_WAITRUN, 24, 8) +DEF_REG_FIELD(ISDBST_ONOFF, 16, 8) +DEF_REG_FIELD(ISDBST_DEBUGMODE, 8, 8) +DEF_REG_FIELD(ISDBST_STUFFSTATUS, 5, 1) +DEF_REG_FIELD(ISDBST_CMDSTATUS, 4, 1) +DEF_REG_FIELD(ISDBST_PROCMODE, 3, 1) +DEF_REG_FIELD(ISDBST_MBXINSTATUS, 2, 1) +DEF_REG_FIELD(ISDBST_MBXOUTSTATUS, 1, 1) +DEF_REG_FIELD(ISDBST_READY, 0, 1) diff --git a/target/hexagon/cpu_helper.c b/target/hexagon/cpu_helper.c index e64568b9fc..e0dd120cd4 100644 --- a/target/hexagon/cpu_helper.c +++ b/target/hexagon/cpu_helper.c @@ -237,6 +237,30 @@ void hexagon_ssr_set_cause(CPUHexagonState *env, uint32_t cause) int get_exe_mode(CPUHexagonState *env) { + g_assert(bql_locked()); + + target_ulong modectl = arch_get_system_reg(env, HEX_SREG_MODECTL); + uint32_t thread_enabled_mask = GET_FIELD(MODECTL_E, modectl); + bool E_bit = thread_enabled_mask & (0x1 << env->threadId); + uint32_t thread_wait_mask = GET_FIELD(MODECTL_W, modectl); + bool W_bit = thread_wait_mask & (0x1 << env->threadId); + target_ulong isdbst = arch_get_system_reg(env, HEX_SREG_ISDBST); + uint32_t debugmode = GET_FIELD(ISDBST_DEBUGMODE, isdbst); + bool D_bit = debugmode & (0x1 << env->threadId); + + /* Figure 4-2 */ + if (!D_bit && !W_bit && !E_bit) { + return HEX_EXE_MODE_OFF; + } + if (!D_bit && !W_bit && E_bit) { + return HEX_EXE_MODE_RUN; + } + if (!D_bit && W_bit && E_bit) { + return HEX_EXE_MODE_WAIT; + } + if (D_bit && !W_bit && E_bit) { + return HEX_EXE_MODE_DEBUG; + } g_assert_not_reached(); } From patchwork Sat Mar 1 05:28:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997352 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B7E1AC021B8 for ; Sat, 1 Mar 2025 05:35:03 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPQ-0008CH-1U; Sat, 01 Mar 2025 00:29:08 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPO-00088r-BF for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:06 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPM-0008Nx-Pf for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:06 -0500 Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5213MTlM026432 for ; Sat, 1 Mar 2025 05:29:03 GMT 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= TTGw28iruESNeRODIQhTUu056yp02YTfEP0NCHtOlZI=; b=iJY+f5e0TpDccfAF 7rRRFQkibp3sx1cuyL2JP2gZWXZFFkEDoeTJPYrPL8vOUt4a71wh2wAjzVh898DL TNge47hLTfPp4VmIu6TKPr2Y2LKPE78x9so83Mj8tlo2V2tIeF4KgFYu0O6IsCYc c8syW5UHMAJLokqQCPdVKsHePigrDATkLjSVlqR0r5qtOGgxk/WIg8c94exFL/EE Fiu75rHsWBDuWMVTC/WNFDBBTJ1GgkWQNlN/xFsjiT9rIQ0Jrxg5i2gP7U/5Mvi9 lGSWIlTwL4asjQbrg0SmBXdk2FK2HxVokNLunRmQJrBB4UxHdfKkIzvhAlJAj8t0 5yf4SQ== 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 453t9905q3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:03 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-2fc404aaed5so9487338a91.3 for ; Fri, 28 Feb 2025 21:29:03 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806942; x=1741411742; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TTGw28iruESNeRODIQhTUu056yp02YTfEP0NCHtOlZI=; b=xUcU/6UDzsFpEg7OQB0HS24hAs6UNUvjx18joSXmuBXSjSufjoQK826V2w2RifSxfR biW/1otFuVir4uZCBVlPeO8RZF/BZPPCIgDlMQbgBvV69ijVg8EPEaF3LaxXi0cd5KNJ 4kN6vjJ1zw1adPnWEsM0Zon9Qa610UhAXWg/AfEUvaGCj5UP9oQQ98jaiG1jd8dER3RQ y2VdfLxZ9wmALuefAhi6BRRLLor5sZaxY2/KbEkXZQ7cW21ooGNqkU7G5xtIBRn6taPS S6GnMb0b3CqD8valVY3KCfvswuOCJOyHKOEElFHT9xZGSBtp3JPXSGzVS18Yn2eTfGtO XZdw== X-Gm-Message-State: AOJu0YxNOtmQ00EMr4YiLkh2/GX1Q8ja3uaNAMJsEFXJ1JqnLLc6bFu6 /DJQMZgzVWxJ/IYrb2lZhaRSCEECvXUEUPcU4/iulopO1+l+yN9v8/7GoecAeQ1KtgeBQxfm1/s RD1fRb5/5LBIvTKs+ZNzCwrGmNMSWh9e4csgt/di3OVg7HbAiPOJbpTRsx/UgqA== X-Gm-Gg: ASbGncuiz+rS1ItBLB1xEpfiJX7ubqLHfBHdAehG42QGNYFy+3NPTWieOK/7LpXC1Qd wV8j33osXBH0qY/7aeN7h4wGYknqHdPTakfHJzTd6ndKDyUy776v1CPQVyiRtqFagdIKaqhKZtF DPtjnWoGRGrVaLL0wgMjZEf2glkuhJzRXJ19Onz4G/fsN2S4dBhz6jiDr18wFZswHAwR3qZfr3o 8mO9kFXvyULTsbBIZj89P8epNclIIWMSl7xRoG7ipQz6LIcbm8tdxigQrDyRH6NcyZCg/Zn18bv 5HlYInS9hi2vXJNWh1U9JfP+ywQTcCYtrV6JAHSf6nJRtRK8FlW7wB+VXjQWr/vy X-Received: by 2002:a17:90b:5745:b0:2f2:a664:df1a with SMTP id 98e67ed59e1d1-2febab2e065mr10604902a91.2.1740806942420; Fri, 28 Feb 2025 21:29:02 -0800 (PST) X-Google-Smtp-Source: AGHT+IF7mS9BqJ7YzmMdEnYti5Xbra4mLjHQdMOSyVdty0HCMoZycthCklUyMpQJVrxlDMubPqxERA== X-Received: by 2002:a17:90b:5745:b0:2f2:a664:df1a with SMTP id 98e67ed59e1d1-2febab2e065mr10604889a91.2.1740806942114; Fri, 28 Feb 2025 21:29:02 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:01 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 09/39] target/hexagon: Implement arch_get_system_reg() Date: Fri, 28 Feb 2025 21:28:15 -0800 Message-Id: <20250301052845.1012069-10-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: sB0APoBaHOC9ZJ2F8Erp6YgtNMnpVB2L X-Proofpoint-GUID: sB0APoBaHOC9ZJ2F8Erp6YgtNMnpVB2L X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 mlxlogscore=548 mlxscore=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 clxscore=1015 spamscore=0 adultscore=0 impostorscore=0 malwarescore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/cpu_helper.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/target/hexagon/cpu_helper.c b/target/hexagon/cpu_helper.c index e0dd120cd4..0b0802bfb9 100644 --- a/target/hexagon/cpu_helper.c +++ b/target/hexagon/cpu_helper.c @@ -36,7 +36,14 @@ uint32_t hexagon_get_pmu_counter(CPUHexagonState *cur_env, int index) uint32_t arch_get_system_reg(CPUHexagonState *env, uint32_t reg) { - g_assert_not_reached(); + if (reg == HEX_SREG_PCYCLELO) { + return hexagon_get_sys_pcycle_count_low(env); + } else if (reg == HEX_SREG_PCYCLEHI) { + return hexagon_get_sys_pcycle_count_high(env); + } + + g_assert(reg < NUM_SREGS); + return reg < HEX_SREG_GLB_START ? env->t_sreg[reg] : env->g_sreg[reg]; } uint64_t hexagon_get_sys_pcycle_count(CPUHexagonState *env) From patchwork Sat Mar 1 05:28:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997336 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1BC29C282D0 for ; Sat, 1 Mar 2025 05:32:04 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPR-0008GI-PM; Sat, 01 Mar 2025 00:29:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPP-0008Bw-L9 for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:07 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPN-0008OG-Sc for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:07 -0500 Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5213YXof030222 for ; Sat, 1 Mar 2025 05:29:04 GMT 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= re5D2KJqUvhVHf1xOvqQmsUG78ul/CjshFNorVWxI4c=; b=pLntmXz2ywHxsK4z yxo0cRykGdyYKkDR8vKcUpG6Lsl7vrDDAe1EqTpupIUqXI9h/T7PSAq/zE0FXsI7 RTmPtrbHwIpaUxiSw9/tuJX1JPccdFZF9WTDBH9NxhbxH5bPk8hBK/TthOqtPxrY TwQ08hy99lmwR4FO4ySQaXM/fTnQfNNmcU7DRZJ8SrijTPGqNOJRSjYSNO0mKBwm IxYnpvO00kYjIX/C7DRtBZRwFrZvShecSiZhJYWWWQPiwR7XHnbe1vZiWkodjN+q zQlw55OHozsfdaaJ9itqj4xr6hBDcMcCCsPSu8hunxo2Zb6hflVfbUSaDLwGHCAD /TFuig== 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 453tf0g5cq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:04 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-2fed0f307ccso1246044a91.0 for ; Fri, 28 Feb 2025 21:29:04 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806943; x=1741411743; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=re5D2KJqUvhVHf1xOvqQmsUG78ul/CjshFNorVWxI4c=; b=NHCAcVebMl7MSn/ly5keHe6ebJxMrBP3b6mZqF8juExQcIxeWpIwYffSNA5uOpf4sO 42zitTmhesTwpLwuibdQ6vicI1qGqH9/k2Z0YCUPy+NQTMpzBgu1CKMkOL906afBMA6c o5gHfitoGFCzC2Vwss3TYl4LoXik7e1nxmcL0OBGDsKYxa4ebdBI5tSk+lgyAT9N2No+ obktgCsJFW1tdYW0LlJYu6UuMWTWS6mtKXoZIJqii/FDy+r0+vY3eBpk69nqjgsBG3rj xhVXmWJFeXgLMc2BFNs2oDhhMlv/Xi9gay3WJNehi9DdUlu13y1EckdXNms0SuVroSh+ xG+g== X-Gm-Message-State: AOJu0Yx7EoJmYh0tMktWKEQ6tyNdebhhv50mmZ91tkW+q3oPWrE6QDoW TxE7tkQFTDtughvTjwl4DLcTUhfXDBjQxfP7YpMMhqRTO6nffFfXhFc6kmPjcEJuJa/n4kC+nmu aSPbwbZ6ziwpo13tcguxaUzPHUc2CU8n+yCnMKdhRVL+YXhH0vnp1ZfNt6Pu+rQ== X-Gm-Gg: ASbGnctD2B99lSN9uhqrUWjFGP/n3ua5xgodreAdePaRdTjTSc0JZxYu5oKJGLGc1xd P2vIF8qnJF3OKQXj2n3D8blmV7xt4DJe1icVvaUDsvwwGNZCKCEnJMuCN9Vl0/Jzse5XLEuFhEd Muf2Q/Gola3L/kh80LUquPFi6maOiAfTarXIqQhTIPtz7GIai6cQWyvaOakMS0VcHodWwDZZGjw WxgXwuDqW63iRJ+L1Vq4MKL7x7GiwN4+o+ba8yAefBnzcpzSpUUJ+ITcIwO5a1y2ZlLiQrLwupH OYR0UJ5xWbWLdWjB+VqraiLuPE+fIzW0WLFut6rPpRfor5jMJswiKLjsZPa/EbTD X-Received: by 2002:a17:90b:3e84:b0:2ee:8031:cdbc with SMTP id 98e67ed59e1d1-2febac046a6mr7735585a91.23.1740806943550; Fri, 28 Feb 2025 21:29:03 -0800 (PST) X-Google-Smtp-Source: AGHT+IHkT1/KYmVXi+7t1NmGb62EsUbFVofWUpcD6dWMYzcUbo3c7NpGO+oKPDmQKaccquEzqbnNww== X-Received: by 2002:a17:90b:3e84:b0:2ee:8031:cdbc with SMTP id 98e67ed59e1d1-2febac046a6mr7735565a91.23.1740806943206; Fri, 28 Feb 2025 21:29:03 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:02 -0800 (PST) To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 10/39] target/hexagon: Implement arch_{s, g}et_{thread, system}_reg() Date: Fri, 28 Feb 2025 21:28:16 -0800 Message-Id: <20250301052845.1012069-11-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: Gh2Rd7d79JLjXu2ydOA0LMBCavIoLt7M X-Proofpoint-ORIG-GUID: Gh2Rd7d79JLjXu2ydOA0LMBCavIoLt7M X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 suspectscore=0 malwarescore=0 lowpriorityscore=0 mlxlogscore=688 phishscore=0 adultscore=0 spamscore=0 clxscore=1015 mlxscore=0 bulkscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Brian Cain X-Patchwork-Original-From: Brian Cain via From: Brian Cain Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/cpu_helper.h | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/target/hexagon/cpu_helper.h b/target/hexagon/cpu_helper.h index e8d89d8526..1cdf4f8dd0 100644 --- a/target/hexagon/cpu_helper.h +++ b/target/hexagon/cpu_helper.h @@ -26,20 +26,27 @@ static inline void arch_set_thread_reg(CPUHexagonState *env, uint32_t reg, uint32_t val) { g_assert(reg < TOTAL_PER_THREAD_REGS); - g_assert_not_reached(); + env->gpr[reg] = val; } static inline uint32_t arch_get_thread_reg(CPUHexagonState *env, uint32_t reg) { g_assert(reg < TOTAL_PER_THREAD_REGS); - g_assert_not_reached(); + return env->gpr[reg]; } +#ifndef CONFIG_USER_ONLY static inline void arch_set_system_reg(CPUHexagonState *env, uint32_t reg, uint32_t val) { - g_assert_not_reached(); + g_assert(reg < NUM_SREGS); + if (reg < HEX_SREG_GLB_START) { + env->t_sreg[reg] = val; + } else { + env->g_sreg[reg] = val; + } } +#endif uint32_t arch_get_system_reg(CPUHexagonState *env, uint32_t reg); From patchwork Sat Mar 1 05:28:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997370 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C23CBC282CD for ; Sat, 1 Mar 2025 05:37:36 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPd-0000gJ-Ct; Sat, 01 Mar 2025 00:29:21 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPa-0000Wg-Uy for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:19 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPZ-0008Oc-51 for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:18 -0500 Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5213MR3O026429 for ; Sat, 1 Mar 2025 05:29:06 GMT 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= HtBGTN8h1V9BaLrO3MkP7qMtLGloXFEPLkdd3zfdKyc=; b=N30fSf0mnoDuceGI mtkPYn5YovCMMecElRnkgOQMRw4j3Bjfj2pMS1JoSBCssHBbcXzbqCtbnNon7EHo h1R86L4mE6XBgwkTmJLHvqgY9evmMDnfNmb2HK5p4Hkai6eR5YnuTkGAHgQ0vBy6 8l2VyozNBMGLTPxVbhr60DWR5UuP8ylrckT72672LnPRX4747PZWd3JuYOwZIrNg 7DYrnon++XEwcqheutdlRwIQ40lEV9BOo6jrtT2bYqwyOkK+VHzBbICsKAfMGh99 xGgOn5gMh1/t7jgy1Hx8mmtA0vh7PWl/ivBho8gSsoheHgHmwgEBtkE0+hW2eb5o Y3zs2w== Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 453t9905qc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:05 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-223551ee0a3so62226975ad.1 for ; Fri, 28 Feb 2025 21:29:05 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806945; x=1741411745; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HtBGTN8h1V9BaLrO3MkP7qMtLGloXFEPLkdd3zfdKyc=; b=scfL98pUdGG6n35IUrJDSR+kf9qGupY+3R2R6JgxbMouYyrNP+/ez6+qiv98PUHDd7 oiqB9nXRqjG1YYamLe3ABrACTmwuXnmsJJFjfCgBdpZeLDYmUQAM6DuWZMBU/UEH5yDM y5MkgtVhZXxtnO1VZWcvWaT3GEL0d+4/PxKKhzBQHCCswOJHMp69KG0vgax5Fd0WyqGh O0Kfaj2U+Ad2wqx/XpTJrJAkaFj3GgwBmenqnUj4SnoX8Bs+EG1bTzKLCpskn3m3pRw5 LRwliLS5xKvBxHjXe/rz7LvZrGxwi2bh1KcV/LFeV+e6K2Uc5SdcJIQ3sveDxxPjompE TWGA== X-Gm-Message-State: AOJu0YzLudCCifnSJ98PKCMPU85En79YduPITHPJBR+E6HHBKEhYdcEi icHSn/YXhmDQfc638mStaLirmWw7kzZqGNE4se7D3Lr3+P4Mvo+0jYvqW/HQWEky2zWJ1c9bI2m Y3EEaZ9aCr/FbbQq3JrbiY/p6Guf378EeKTU3tWaRYz0hWCBQsWFBZptLWx4LZA== X-Gm-Gg: ASbGncvyloh60FONoV7cSBS2hC2/Lvqx+/hUHzmPMuTZPCBIxfNYvS3SKuBERy5Xa9R GtcO+wAPcV3fCgH9Drp5fIDCHGEtw0uhtz7YzMw8ffW/4m2Sc6FVQEIxZyA9qZzwJBny6gHW7Vm LSyUABjYZg7rT/CkwkoQqB8qkf1+1rlvelDgOY52aYKSH4TCZgOwslPkPyvIZvjqNQeVhXQGtWq fLAVgF3qEDwkLzYWHclCrrv17SH12hVH07RtvsFGLCdxe0S6UsWht6VR9rAeuNAQEVrz5WCR1UZ mQFQchDNtACVBvJWmNxfu/+voBf4+JignuSVbbvjUrln4io18NkzmlaAyHk2c3PI X-Received: by 2002:a17:902:ec91:b0:220:e5be:29c7 with SMTP id d9443c01a7336-22369207a01mr90721055ad.39.1740806944751; Fri, 28 Feb 2025 21:29:04 -0800 (PST) X-Google-Smtp-Source: AGHT+IE0JmxUTufO2QZXiTnJ7oXrrzI/OpJerq96cWG/PasxKBEzlJKJjvC9cULavQ9ENbXQxhWj9Q== X-Received: by 2002:a17:902:ec91:b0:220:e5be:29c7 with SMTP id d9443c01a7336-22369207a01mr90720745ad.39.1740806944354; Fri, 28 Feb 2025 21:29:04 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:04 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 11/39] target/hexagon: Add representation to count cycles Date: Fri, 28 Feb 2025 21:28:17 -0800 Message-Id: <20250301052845.1012069-12-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: Bh_tzz09n2quIJ65z2U253K6-YARHKqF X-Proofpoint-GUID: Bh_tzz09n2quIJ65z2U253K6-YARHKqF X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 mlxlogscore=851 mlxscore=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 clxscore=1015 spamscore=0 adultscore=0 impostorscore=0 malwarescore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain The PCYCLE register can be enabled to indicate accumulated clock cycles. Signed-off-by: Brian Cain --- target/hexagon/cpu.h | 3 ++- target/hexagon/cpu.c | 3 +++ target/hexagon/machine.c | 25 ++++++++++++++++++++++++- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/target/hexagon/cpu.h b/target/hexagon/cpu.h index 1549c4f1f0..4b9c9873dc 100644 --- a/target/hexagon/cpu.h +++ b/target/hexagon/cpu.h @@ -113,7 +113,8 @@ typedef struct CPUArchState { target_ulong stack_start; uint8_t slot_cancelled; - + uint64_t t_cycle_count; + uint64_t *g_pcycle_base; #ifndef CONFIG_USER_ONLY /* Some system registers are per thread and some are global. */ target_ulong t_sreg[NUM_SREGS]; diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index 84a96a194b..89a051b41d 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -335,6 +335,7 @@ static void hexagon_cpu_reset_hold(Object *obj, ResetType type) if (cs->cpu_index == 0) { arch_set_system_reg(env, HEX_SREG_MODECTL, 0x1); + *(env->g_pcycle_base) = 0; } mmu_reset(env); arch_set_system_reg(env, HEX_SREG_HTID, cs->cpu_index); @@ -396,10 +397,12 @@ static void hexagon_cpu_realize(DeviceState *dev, Error **errp) #ifndef CONFIG_USER_ONLY if (cs->cpu_index == 0) { env->g_sreg = g_new0(target_ulong, NUM_SREGS); + env->g_pcycle_base = g_malloc0(sizeof(*env->g_pcycle_base)); } else { CPUState *cpu0 = qemu_get_cpu(0); CPUHexagonState *env0 = cpu_env(cpu0); env->g_sreg = env0->g_sreg; + env->g_pcycle_base = env0->g_pcycle_base; } #endif diff --git a/target/hexagon/machine.c b/target/hexagon/machine.c index fcdbacf9fd..4baa22d51f 100644 --- a/target/hexagon/machine.c +++ b/target/hexagon/machine.c @@ -9,6 +9,27 @@ #include "cpu.h" #include "hex_mmu.h" +static int get_u64_ptr(QEMUFile *f, void *pv, size_t size, + const VMStateField *field) +{ + uint64_t *p = pv; + *p = qemu_get_be64(f); + return 0; +} + +static int put_u64_ptr(QEMUFile *f, void *pv, size_t size, + const VMStateField *field, JSONWriter *vmdesc) +{ + qemu_put_be64(f, *((uint64_t *)pv)); + return 0; +} + +const VMStateInfo vmstate_info_uint64_ptr = { + .name = "uint64_t_pointer", + .get = get_u64_ptr, + .put = put_u64_ptr, +}; + static int get_hex_tlb_ptr(QEMUFile *f, void *pv, size_t size, const VMStateField *field) { @@ -35,7 +56,6 @@ const VMStateInfo vmstate_info_hex_tlb_ptr = { .put = put_hex_tlb_ptr, }; - const VMStateDescription vmstate_hexagon_cpu = { .name = "cpu", .version_id = 0, @@ -56,6 +76,9 @@ const VMStateDescription vmstate_hexagon_cpu = { VMSTATE_UINTTL(env.wait_next_pc, HexagonCPU), VMSTATE_POINTER(env.hex_tlb, HexagonCPU, 0, vmstate_info_hex_tlb_ptr, CPUHexagonTLBContext *), + VMSTATE_UINT64(env.t_cycle_count, HexagonCPU), + VMSTATE_POINTER(env.g_pcycle_base, HexagonCPU, 0, + vmstate_info_uint64_ptr, uint64_t *), VMSTATE_END_OF_LIST() }, From patchwork Sat Mar 1 05:28:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997319 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1215CC021B8 for ; Sat, 1 Mar 2025 05:29:55 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPe-0000jP-FC; Sat, 01 Mar 2025 00:29:22 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPc-0000bs-Ha for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:20 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPa-0008Ot-Fq for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:20 -0500 Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5214m84F020607 for ; Sat, 1 Mar 2025 05:29:07 GMT 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= /n+EaFwkZ7IlhLae7S0UmP+Ji3oIvPR2YtYG47CF0/o=; b=FT4eP1H8E5yQIONU LNvdEgdB5tEopxBk7K0BWv7DKskXaKbJbwrc3JAsV/ozN23ljCVAQneGhXZw+Ho4 jpNlQr01hHgczkP8yB0QTR4kZiDMgeZNJ0BwgIk4e8+SIWucbctBnuIpKcwt237D WbOBHwqA2wJU9z8YK951P5FMkg6FUwLOr8lWSnqaecmC49Rty+T4p40uVjbSrGOf 4g3+h+LuWvu45KPrho7bE+UPP1gV0A3wH+i9Wxhj7jJS3xwUdPkIraJWfNegTraS n9uz25hPkgAndw1s3sn2gVHLdbvPkcD1s6eT8vXpboIwqrdmy3EbShY5cpknY22v D7bfmQ== 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 453uh701xg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:07 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-2fec3e38b60so2178444a91.0 for ; Fri, 28 Feb 2025 21:29:07 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806946; x=1741411746; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/n+EaFwkZ7IlhLae7S0UmP+Ji3oIvPR2YtYG47CF0/o=; b=hTldZjrKPXWc3JvtjhfJTTMUZ1yCkWkAavY7O0gozeq61nKTDRbyqG8yb0LSpKw7BX bFq68k7Uu1d6qb3WL/Q5195g0SIsfelMmsygHnGOuK/yeeZoiP+mdt8T2oTs8xHYHvzi t39hoktv3Lsr5hTDlup9upN18+gbtgxNw8qm07AyorCWwXKybx3CsbJ+7jXCDxFsD74m GjDPGflJU+lFmozDQ3LxyBZdpHx3FbmNISaiqtC1lNIbfYqPcanePb580WXH5sH3iuOE Yvt02ysrDSYLLit4/HZdDgOVzlMiZNU40HtRbIy/WBYtozsNkiAPw1YprLlID8rkFf/c hcxg== X-Gm-Message-State: AOJu0YxEQQgMZOkxEePJgkoTb8YphwzOaJtuxiNoyBTx//2sd0wJ/7ab e1+GAxQKXnAYhFWww/32BFi3arwgUPcF+sptAWFgbSMzvPUREaXine4nD1eMmr6pDZih3nqkbgx UNigJSYunR+mM38A5HH8Sk6W+Y6OC/oFZ24D6XCuVqQ4T0izp7YtTrSFlj1W9NQ== X-Gm-Gg: ASbGnctm/cdF8EB4SuGrMKM70TG07LqmL6QFT+6Y2N+S7zsOy64VBK1Cb2RLIYIFl1I yOU2LKIGvqTVjnvyecFbfKftZBy28XiSSq6Ka7MGvWbQRbNt6+E+1iLwsGos/l4753Q+0I+26oP iqkcAZFrvPJOsa4/HVe/01wDDy8KwCukLq0clS7t+Ue/52zdK1D8T9zzSxcVn+tnAeDqOZ33FUL 2Wx735P2qe6JLPh4hI/ngLJBet92I3a4xWbkCNr8fKKJIKuPBkdrA495ms+NHtqrnBRbKczCi/g AdASnsQgdNKToiWfGT0yWuBY7gTMRvwY22QkpXNRwgUn1egFiBKS1Z5rg062fUGf X-Received: by 2002:a17:90b:2b46:b0:2f9:9ddd:689b with SMTP id 98e67ed59e1d1-2febabcf44emr8356109a91.22.1740806945966; Fri, 28 Feb 2025 21:29:05 -0800 (PST) X-Google-Smtp-Source: AGHT+IG6Rr1M6ngFnhdnZSEyCyO6U/HX2yD36rq+KaaoGzjd8V5ovJT06Q/bAwYst/KvZZfGUuEa5A== X-Received: by 2002:a17:90b:2b46:b0:2f9:9ddd:689b with SMTP id 98e67ed59e1d1-2febabcf44emr8356087a91.22.1740806945576; Fri, 28 Feb 2025 21:29:05 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:05 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 12/39] target/hexagon: Add implementation of cycle counters Date: Fri, 28 Feb 2025 21:28:18 -0800 Message-Id: <20250301052845.1012069-13-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: CdIUT5LGPF60G32cgMXUN4ij_T0UP2UP X-Proofpoint-ORIG-GUID: CdIUT5LGPF60G32cgMXUN4ij_T0UP2UP X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 suspectscore=0 lowpriorityscore=0 phishscore=0 impostorscore=0 clxscore=1015 priorityscore=1501 adultscore=0 mlxscore=0 spamscore=0 malwarescore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Co-authored-by: Sid Manning Signed-off-by: Brian Cain --- target/hexagon/cpu.h | 25 ++++++++++++++++++++++--- target/hexagon/translate.h | 2 ++ target/hexagon/cpu_helper.c | 12 +++++++++--- target/hexagon/translate.c | 27 +++++++++++++++++++++++++++ 4 files changed, 60 insertions(+), 6 deletions(-) diff --git a/target/hexagon/cpu.h b/target/hexagon/cpu.h index 4b9c9873dc..7e2ea838c5 100644 --- a/target/hexagon/cpu.h +++ b/target/hexagon/cpu.h @@ -27,11 +27,15 @@ #include "cpu-qom.h" #include "exec/cpu-defs.h" +#include "exec/cpu-common.h" #include "hex_regs.h" #include "mmvec/mmvec.h" #include "hw/registerfields.h" +#ifndef CONFIG_USER_ONLY +#include "reg_fields.h" typedef struct CPUHexagonTLBContext CPUHexagonTLBContext; +#endif #define NUM_PREGS 4 #define TOTAL_PER_THREAD_REGS 64 @@ -188,6 +192,7 @@ struct ArchCPU { FIELD(TB_FLAGS, IS_TIGHT_LOOP, 0, 1) FIELD(TB_FLAGS, MMU_INDEX, 1, 3) +FIELD(TB_FLAGS, PCYCLE_ENABLED, 4, 1) G_NORETURN void hexagon_raise_exception_err(CPUHexagonState *env, uint32_t exception, @@ -201,6 +206,11 @@ void hexagon_cpu_soft_reset(CPUHexagonState *env); #endif #include "exec/cpu-all.h" + +#ifndef CONFIG_USER_ONLY +#include "cpu_helper.h" +#endif + static inline void cpu_get_tb_cpu_state(CPUHexagonState *env, vaddr *pc, uint64_t *cs_base, uint32_t *flags) { @@ -210,16 +220,27 @@ static inline void cpu_get_tb_cpu_state(CPUHexagonState *env, vaddr *pc, if (*pc == env->gpr[HEX_REG_SA0]) { hex_flags = FIELD_DP32(hex_flags, TB_FLAGS, IS_TIGHT_LOOP, 1); } - *flags = hex_flags; if (*pc & PCALIGN_MASK) { hexagon_raise_exception_err(env, HEX_CAUSE_PC_NOT_ALIGNED, 0); } #ifndef CONFIG_USER_ONLY + target_ulong syscfg = arch_get_system_reg(env, HEX_SREG_SYSCFG); + + bool pcycle_enabled = extract32(syscfg, + reg_field_info[SYSCFG_PCYCLEEN].offset, + reg_field_info[SYSCFG_PCYCLEEN].width); + hex_flags = FIELD_DP32(hex_flags, TB_FLAGS, MMU_INDEX, cpu_mmu_index(env_cpu(env), false)); + + if (pcycle_enabled) { + hex_flags = FIELD_DP32(hex_flags, TB_FLAGS, PCYCLE_ENABLED, 1); + } #else + hex_flags = FIELD_DP32(hex_flags, TB_FLAGS, PCYCLE_ENABLED, true); hex_flags = FIELD_DP32(hex_flags, TB_FLAGS, MMU_INDEX, MMU_USER_IDX); #endif + *flags = hex_flags; } typedef HexagonCPU ArchCPU; @@ -228,6 +249,4 @@ void hexagon_translate_init(void); void hexagon_translate_code(CPUState *cs, TranslationBlock *tb, int *max_insns, vaddr pc, void *host_pc); -#include "exec/cpu-all.h" - #endif /* HEXAGON_CPU_H */ diff --git a/target/hexagon/translate.h b/target/hexagon/translate.h index 0eaa3db03e..9bc4b3ce8b 100644 --- a/target/hexagon/translate.h +++ b/target/hexagon/translate.h @@ -83,6 +83,8 @@ typedef struct DisasContext { TCGv new_pred_value[NUM_PREGS]; TCGv branch_taken; TCGv dczero_addr; + bool pcycle_enabled; + uint32_t num_cycles; } DisasContext; bool is_gather_store_insn(DisasContext *ctx); diff --git a/target/hexagon/cpu_helper.c b/target/hexagon/cpu_helper.c index 0b0802bfb9..1d9b9f8bef 100644 --- a/target/hexagon/cpu_helper.c +++ b/target/hexagon/cpu_helper.c @@ -48,17 +48,23 @@ uint32_t arch_get_system_reg(CPUHexagonState *env, uint32_t reg) uint64_t hexagon_get_sys_pcycle_count(CPUHexagonState *env) { - g_assert_not_reached(); + uint64_t cycles = 0; + CPUState *cs; + CPU_FOREACH(cs) { + CPUHexagonState *env_ = cpu_env(cs); + cycles += env_->t_cycle_count; + } + return *(env->g_pcycle_base) + cycles; } uint32_t hexagon_get_sys_pcycle_count_high(CPUHexagonState *env) { - g_assert_not_reached(); + return hexagon_get_sys_pcycle_count(env) >> 32; } uint32_t hexagon_get_sys_pcycle_count_low(CPUHexagonState *env) { - g_assert_not_reached(); + return extract64(hexagon_get_sys_pcycle_count(env), 0, 32); } void hexagon_set_sys_pcycle_count_high(CPUHexagonState *env, diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c index 9119e42ff7..060df6e5eb 100644 --- a/target/hexagon/translate.c +++ b/target/hexagon/translate.c @@ -57,6 +57,7 @@ TCGv_i64 hex_store_val64[STORES_MAX]; TCGv hex_llsc_addr; TCGv hex_llsc_val; TCGv_i64 hex_llsc_val_i64; +TCGv_i64 hex_cycle_count; TCGv hex_vstore_addr[VSTORES_MAX]; TCGv hex_vstore_size[VSTORES_MAX]; TCGv hex_vstore_pending[VSTORES_MAX]; @@ -125,6 +126,22 @@ static void gen_exception_raw(int excp) gen_helper_raise_exception(tcg_env, tcg_constant_i32(excp)); } +#ifndef CONFIG_USER_ONLY +static inline void gen_precise_exception(int excp, target_ulong PC) +{ + tcg_gen_movi_tl(hex_cause_code, excp); + gen_exception(HEX_EVENT_PRECISE, PC); +} + +static inline void gen_pcycle_counters(DisasContext *ctx) +{ + if (ctx->pcycle_enabled) { + tcg_gen_addi_i64(hex_cycle_count, hex_cycle_count, ctx->num_cycles); + ctx->num_cycles = 0; + } +} +#endif + static void gen_exec_counters(DisasContext *ctx) { tcg_gen_addi_tl(hex_gpr[HEX_REG_QEMU_PKT_CNT], @@ -133,6 +150,10 @@ static void gen_exec_counters(DisasContext *ctx) hex_gpr[HEX_REG_QEMU_INSN_CNT], ctx->num_insns); tcg_gen_addi_tl(hex_gpr[HEX_REG_QEMU_HVX_CNT], hex_gpr[HEX_REG_QEMU_HVX_CNT], ctx->num_hvx_insns); + +#ifndef CONFIG_USER_ONLY + gen_pcycle_counters(ctx); +#endif } static bool use_goto_tb(DisasContext *ctx, target_ulong dest) @@ -785,6 +806,7 @@ static void gen_commit_hvx(DisasContext *ctx) } } +static const int PCYCLES_PER_PACKET = 3; static void update_exec_counters(DisasContext *ctx) { Packet *pkt = ctx->pkt; @@ -804,6 +826,7 @@ static void update_exec_counters(DisasContext *ctx) } ctx->num_packets++; + ctx->num_cycles += PCYCLES_PER_PACKET; ctx->num_insns += num_real_insns; ctx->num_hvx_insns += num_hvx_insns; } @@ -946,11 +969,13 @@ static void hexagon_tr_init_disas_context(DisasContextBase *dcbase, ctx->mem_idx = FIELD_EX32(hex_flags, TB_FLAGS, MMU_INDEX); ctx->num_packets = 0; + ctx->num_cycles = 0; ctx->num_insns = 0; ctx->num_hvx_insns = 0; ctx->branch_cond = TCG_COND_NEVER; ctx->is_tight_loop = FIELD_EX32(hex_flags, TB_FLAGS, IS_TIGHT_LOOP); ctx->short_circuit = hex_cpu->short_circuit; + ctx->pcycle_enabled = FIELD_EX32(hex_flags, TB_FLAGS, PCYCLE_ENABLED); } static void hexagon_tr_tb_start(DisasContextBase *db, CPUState *cpu) @@ -1077,6 +1102,8 @@ void hexagon_translate_init(void) offsetof(CPUHexagonState, llsc_val), "llsc_val"); hex_llsc_val_i64 = tcg_global_mem_new_i64(tcg_env, offsetof(CPUHexagonState, llsc_val_i64), "llsc_val_i64"); + hex_cycle_count = tcg_global_mem_new_i64(tcg_env, + offsetof(CPUHexagonState, t_cycle_count), "t_cycle_count"); for (i = 0; i < STORES_MAX; i++) { snprintf(store_addr_names[i], NAME_LEN, "store_addr_%d", i); hex_store_addr[i] = tcg_global_mem_new(tcg_env, From patchwork Sat Mar 1 05:28:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997347 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 88E9BC282CD for ; Sat, 1 Mar 2025 05:34:34 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPf-0000km-4i; Sat, 01 Mar 2025 00:29:23 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPd-0000i1-Rr for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:22 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPb-0008P6-CM for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:21 -0500 Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5214Bom7027112 for ; Sat, 1 Mar 2025 05:29:08 GMT 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= 9H2JfNRmmuuWCm2TVDdMCermZwoCDf412NpA/UH3RyQ=; b=B2EDfir2W+bdsTrO GxY/CBfdZZ7e9ZeWhRH2JYjO18bmgwlIZ6obi+4xCm7pFEScZXU1dCz3aNx8cLV4 lP8z4WmyJ7OoN+mc3fRVUOpv+pPCh4vQxTdFTE0mmSHEeGRY6QhuqdR6vexEIQwx MztTxe80KE0Mh1oJcRuu/funIDefM6RMuGiLgjjJQT6ufVF591rPW+l/T0ocVDuo hjNA0GU/6mbk4fqHzrBz9B/I/T9AOAJpKwyUj1Hkg1/UBe0Km5aPHdOQezHZRXn3 2ox1NXvzl2GS1YV9ZjRso1+YSXWALCUl1snr/hMt6o+q7cc57FZ5jXrHQcfQ63nk m0tkSQ== 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 453u0d037q-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:08 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-2fec3e38b60so2178452a91.0 for ; Fri, 28 Feb 2025 21:29:08 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806947; x=1741411747; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9H2JfNRmmuuWCm2TVDdMCermZwoCDf412NpA/UH3RyQ=; b=lMjl9vgaBHmauIOdkVQJi4eWO9dguBsAShVcUwLMIW1y6+7mIuTBZ/Bo1Ya5J3DuG4 /OnAnBwOFhryLbLispCOxrbKYuJp7zrbK18oSvTOVRPImAw2BL9+q9NtdEa6FnpikPw6 /zUO51D8QMJrcyQo8prK3XRmpBLx7MLuE6QjlrVYaVxxz+FdQk6IkKDKGOR3ngyLN+Yr IPSPbKQfP9x6Zo39mAEd+ZWyM/4qPD49M9NmZbw2lKOMVhuCyj2Ob4CzVxpW13B9kfn+ sDqWnrRYGW6etS8NoVtVATeWgaSjIR4aZkQhcMva0PY7+SG5Hu6y0Yfdmk8OsGK6lKdr fkDA== X-Gm-Message-State: AOJu0YypthXt1QkBiV9Cm61NyusVwmpqdtAxe4iXYq2D8J5hCsxFxXxy HDS9neQUaAy1kJX8xVAc7eXkgJaNlup1SCPNDxANPvAN63AjEwGZ6P84XCBOS/L0fp8IB8mw4AH JKEuMYgKQVrf4UtUjlAV0a6s8/2LXKt/3hdF2HtUCyzpzL9hZ30iK60ZBPCU1Ow== X-Gm-Gg: ASbGncuap8+bQ0pZfw/FqFwT0nMlE8PHqwL7aL+SzbdXNESv/+cLfo11HH3bGPsLv+I oChg6peZKycfk6oGZbShJY5qWrQCd3oPaFk86UiAipg+FDzboU1u6+W1uy8997tz6exI32BmR/B Xuetk3m6rnwJKWDVI0rRmxkx5wI6oGys19yXkXGfjKPY6632ocpS3tlY/zrrrhtUByZZiLbzgfu AaTKQwwsh42XhJSxhGWOAuTBebavUtIJZn6nt6yuxO8SJvuIA2syZ74xWZIggVXj7+RNTcdPzdR R53C/lFWIFraVqp99WQB8+qFnX9yYdob3vvxAEXq/OBmI/Cb8gVvCezlGMt7wFBK X-Received: by 2002:a17:90b:3f50:b0:2ee:af31:a7bd with SMTP id 98e67ed59e1d1-2febab2bdcbmr9121452a91.5.1740806947127; Fri, 28 Feb 2025 21:29:07 -0800 (PST) X-Google-Smtp-Source: AGHT+IFwFEpdGle6h21DnBPZTxIoFxVC7S2+nEs/vgJiVDgoMd2J4A5fIPdz1Klg92rYWsZpstT0QQ== X-Received: by 2002:a17:90b:3f50:b0:2ee:af31:a7bd with SMTP id 98e67ed59e1d1-2febab2bdcbmr9121432a91.5.1740806946767; Fri, 28 Feb 2025 21:29:06 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:06 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 13/39] target/hexagon: Implement modify_syscfg() Date: Fri, 28 Feb 2025 21:28:19 -0800 Message-Id: <20250301052845.1012069-14-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: uj1R6gyFZCTR2gpfeZuv6rtG4ZxFKpWD X-Proofpoint-GUID: uj1R6gyFZCTR2gpfeZuv6rtG4ZxFKpWD X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 adultscore=0 phishscore=0 malwarescore=0 spamscore=0 mlxscore=0 suspectscore=0 clxscore=1015 bulkscore=0 priorityscore=1501 mlxlogscore=556 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/op_helper.c | 51 +++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index 03bed11f6e..42805d0f1d 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -1522,7 +1522,56 @@ static bool handle_pmu_sreg_write(CPUHexagonState *env, uint32_t reg, static void modify_syscfg(CPUHexagonState *env, uint32_t val) { - g_assert_not_reached(); + g_assert(bql_locked()); + + uint32_t old; + uint32_t syscfg_read_only_mask = 0x80001c00; + uint32_t syscfg = arch_get_system_reg(env, HEX_SREG_SYSCFG); + + /* clear read-only bits if they are set in the new value. */ + val &= ~syscfg_read_only_mask; + /* if read-only are currently set in syscfg keep them set. */ + val |= (syscfg & syscfg_read_only_mask); + + uint32_t tmp = val; + old = arch_get_system_reg(env, HEX_SREG_SYSCFG); + arch_set_system_reg(env, HEX_SREG_SYSCFG, tmp); + + /* Check for change in MMU enable */ + target_ulong old_mmu_enable = GET_SYSCFG_FIELD(SYSCFG_MMUEN, old); + uint8_t old_en = GET_SYSCFG_FIELD(SYSCFG_PCYCLEEN, old); + uint8_t old_gie = GET_SYSCFG_FIELD(SYSCFG_GIE, old); + target_ulong new_mmu_enable = + GET_SYSCFG_FIELD(SYSCFG_MMUEN, val); + if (new_mmu_enable && !old_mmu_enable) { + hex_mmu_on(env); + } else if (!new_mmu_enable && old_mmu_enable) { + hex_mmu_off(env); + } + + /* Changing pcycle enable from 0 to 1 resets the counters */ + uint8_t new_en = GET_SYSCFG_FIELD(SYSCFG_PCYCLEEN, val); + CPUState *cs; + if (old_en == 0 && new_en == 1) { + CPU_FOREACH(cs) { + CPUHexagonState *_env = cpu_env(cs); + _env->t_cycle_count = 0; + } + } + + /* See if global interrupts are turned on */ + uint8_t new_gie = GET_SYSCFG_FIELD(SYSCFG_GIE, val); + if (!old_gie && new_gie) { + qemu_log_mask(CPU_LOG_INT, "%s: global interrupts enabled\n", __func__); + hex_interrupt_update(env); + } + + if (qemu_loglevel_mask(LOG_UNIMP)) { + int new_v2x = GET_SYSCFG_FIELD(SYSCFG_V2X, val); + if (!new_v2x) { + qemu_log("HVX: 64 byte vector length is unsupported\n"); + } + } } static uint32_t hexagon_find_last_irq(CPUHexagonState *env, uint32_t vid) From patchwork Sat Mar 1 05:28:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997345 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id AC985C282CD for ; Sat, 1 Mar 2025 05:34:16 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPh-0000og-60; Sat, 01 Mar 2025 00:29:25 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPf-0000kn-3v for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:23 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPd-0008PA-4p for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:22 -0500 Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5214dhpS027225 for ; Sat, 1 Mar 2025 05:29:09 GMT 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= anJeR7JBHMCNo7CO2Pbad57KBKIBbqcgLbQHoEN9g9U=; b=HNJSoNOgfAJm7G1y 6UCHDgDJbmZX0RMT74jl85nSxpq+JeHHN7J4XX1fQRzHrj3tsMn4mnog4GoPKFGT inKTa6teM7nUgtgocqWZOCAnv7PEvf43QStmmrB/LiXFSJRStfmCNKmynZY+Vgs2 JOzapRyPcAymnABzR1tbqj58YdIKlA0Be4j12nuZOV+lhMotrIAA2iGqE+UE9vAr UeSVmaebumnKeety0dJQswlHxVyEFbllZpMeJrfFoIsyM+X7D04f5bd9FahsF7JJ DDG4T0iWrPKYl42y9WSfQDfuw1m/whCAy+JyMQOzAXPquW4U9f+CL8aRswA85L1x 4wdlMw== 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 453udgr29d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:09 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-2fe86c01f5cso5848678a91.1 for ; Fri, 28 Feb 2025 21:29:09 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806948; x=1741411748; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=anJeR7JBHMCNo7CO2Pbad57KBKIBbqcgLbQHoEN9g9U=; b=RwWljId/O7bUupoel79yFr02Ui0ukRwwq3632lAF9Sz4fBkbj+LnFPN/3kGSBmUTTc 7aOkPCAINhhWWTNSLhzZV739hjVMnzWP9ZOyKc4TVPIqnyHndN3kV9twdW3JzIOCzOOK 7HS3W1QOVF3r0tljdfFFundviJK+voSZ+2W0L8vvubwRYNi4tGKIlEaW1UUiaDqkiUb3 AHacRkBRl3xPKaxcprXtWMTj1FjC40JeY+9ElFjgwXQ8Xr7ouoNofX4f/d7TgoYIWXe/ SJYP0yvLYhjeS9qUsF+ut3JACFfDnCOW1qD+x7QYd2qZcCka7zvMS37LZl0k5rHnwJK2 dmDA== X-Gm-Message-State: AOJu0YwYvd+0GfuC8rVJ3+eClsg+hG/9jn8yZ80hqf3vj4o5g8mhhWQJ 4lojTujUMXD7Clk7ZP7hNt6kefjIUo/SxBbBw9V7BXsCv9hBXSvNc2qcJ9n6eqErM1RiqMb9CwB H375T9vVLpvYwTPNoixVUSJ6QBfKyDdMx7aL6LelNriqFkgxXJdDQNva8swEE6Q== X-Gm-Gg: ASbGncusgSHf07kWlY6pL/3Q5Yr/uCaqaqKLAu+Z8mp/827TXLieGHAssGO/TS3q0eI GgzQD3bpEij5YAbbgQrBczYuUBQ35t1fs/L2TrPvqvwDXTCHvbbPLMddauMRolZtBiaHxUQuJ9o rqk/J7BjsvM54sOJIlHEHm8vThJRzSk6U33h5i2N8ve/zwtstmat8awEnwLDoSsUuJK2y4k1nrR iqknlQaio7TkV+WvpdX2vKhWBzVxLMWttPnHfYMwflEfL7Js/z5sVyG51uxDna062TBuywSGT7e sSAbUWgt1jlnGtUZ3c60h0mbsn66Q6/6hTehtF6lmeHhKFuwhzOX9ThKMI4vtt6W X-Received: by 2002:a17:90b:3ec4:b0:2ee:db8a:29f0 with SMTP id 98e67ed59e1d1-2febabdc25emr10069540a91.27.1740806948359; Fri, 28 Feb 2025 21:29:08 -0800 (PST) X-Google-Smtp-Source: AGHT+IHhBoRbn0TaX82jSkSdrOypGGKOLeiN5oqsPCurFYnt2tKeEQDFb5pFvPuE6L2sJDZnAFnAlg== X-Received: by 2002:a17:90b:3ec4:b0:2ee:db8a:29f0 with SMTP id 98e67ed59e1d1-2febabdc25emr10069523a91.27.1740806947984; Fri, 28 Feb 2025 21:29:07 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:07 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 14/39] target/hexagon: Add system event, cause codes Date: Fri, 28 Feb 2025 21:28:20 -0800 Message-Id: <20250301052845.1012069-15-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: 2gBj5wTYkcSDgkdH0B9CcHEtkjtePtG6 X-Proofpoint-ORIG-GUID: 2gBj5wTYkcSDgkdH0B9CcHEtkjtePtG6 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 clxscore=1015 lowpriorityscore=0 malwarescore=0 mlxscore=0 suspectscore=0 bulkscore=0 impostorscore=0 mlxlogscore=999 priorityscore=1501 phishscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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, UPPERCASE_50_75=0.008 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/cpu.h | 10 ++++++- target/hexagon/cpu_bits.h | 55 ++++++++++++++++++++++++++++----------- 2 files changed, 49 insertions(+), 16 deletions(-) diff --git a/target/hexagon/cpu.h b/target/hexagon/cpu.h index 7e2ea838c5..dabee310c5 100644 --- a/target/hexagon/cpu.h +++ b/target/hexagon/cpu.h @@ -67,6 +67,15 @@ typedef struct CPUHexagonTLBContext CPUHexagonTLBContext; #define MMU_GUEST_IDX 1 #define MMU_KERNEL_IDX 2 +#define HEXAGON_CPU_IRQ_0 0 +#define HEXAGON_CPU_IRQ_1 1 +#define HEXAGON_CPU_IRQ_2 2 +#define HEXAGON_CPU_IRQ_3 3 +#define HEXAGON_CPU_IRQ_4 4 +#define HEXAGON_CPU_IRQ_5 5 +#define HEXAGON_CPU_IRQ_6 6 +#define HEXAGON_CPU_IRQ_7 7 + typedef enum { HEX_LOCK_UNLOCKED = 0, HEX_LOCK_WAITING = 1, @@ -75,7 +84,6 @@ typedef enum { } hex_lock_state_t; #endif - #define CPU_RESOLVING_TYPE TYPE_HEXAGON_CPU typedef struct { diff --git a/target/hexagon/cpu_bits.h b/target/hexagon/cpu_bits.h index 610094a759..c7cc426ec8 100644 --- a/target/hexagon/cpu_bits.h +++ b/target/hexagon/cpu_bits.h @@ -24,14 +24,16 @@ #define PCALIGN_MASK (PCALIGN - 1) enum hex_event { - HEX_EVENT_NONE = -1, - HEX_EVENT_TRAP0 = 0x008, - HEX_EVENT_FETCH_NO_UPAGE = 0x012, - HEX_EVENT_INVALID_PACKET = 0x015, - HEX_EVENT_INVALID_OPCODE = 0x015, - HEX_EVENT_PC_NOT_ALIGNED = 0x01e, - HEX_EVENT_PRIV_NO_UREAD = 0x024, - HEX_EVENT_PRIV_NO_UWRITE = 0x025, + HEX_EVENT_NONE = -1, + HEX_EVENT_RESET = 0x0, + HEX_EVENT_IMPRECISE = 0x1, + HEX_EVENT_PRECISE = 0x2, + HEX_EVENT_TLB_MISS_X = 0x4, + HEX_EVENT_TLB_MISS_RW = 0x6, + HEX_EVENT_TRAP0 = 0x8, + HEX_EVENT_TRAP1 = 0x9, + HEX_EVENT_FPTRAP = 0xb, + HEX_EVENT_DEBUG = 0xc, HEX_EVENT_INT0 = 0x10, HEX_EVENT_INT1 = 0x11, HEX_EVENT_INT2 = 0x12, @@ -53,15 +55,38 @@ enum hex_event { enum hex_cause { HEX_CAUSE_NONE = -1, HEX_CAUSE_RESET = 0x000, - HEX_CAUSE_TRAP0 = 0x172, - HEX_CAUSE_FETCH_NO_UPAGE = 0x012, - HEX_CAUSE_INVALID_PACKET = 0x015, - HEX_CAUSE_INVALID_OPCODE = 0x015, - HEX_CAUSE_PC_NOT_ALIGNED = 0x01e, - HEX_CAUSE_PRIV_NO_UREAD = 0x024, - HEX_CAUSE_PRIV_NO_UWRITE = 0x025, + HEX_CAUSE_BIU_PRECISE = 0x001, + HEX_CAUSE_UNSUPORTED_HVX_64B = 0x002, /* QEMU-specific */ + HEX_CAUSE_DOUBLE_EXCEPT = 0x003, + HEX_CAUSE_TRAP0 = 0x008, + HEX_CAUSE_TRAP1 = 0x009, + HEX_CAUSE_FETCH_NO_XPAGE = 0x011, + HEX_CAUSE_FETCH_NO_UPAGE = 0x012, + HEX_CAUSE_INVALID_PACKET = 0x015, + HEX_CAUSE_INVALID_OPCODE = 0x015, + HEX_CAUSE_NO_COPROC_ENABLE = 0x016, + HEX_CAUSE_NO_COPROC2_ENABLE = 0x018, HEX_CAUSE_PRIV_USER_NO_GINSN = 0x01a, HEX_CAUSE_PRIV_USER_NO_SINSN = 0x01b, + HEX_CAUSE_REG_WRITE_CONFLICT = 0x01d, + HEX_CAUSE_PC_NOT_ALIGNED = 0x01e, + HEX_CAUSE_MISALIGNED_LOAD = 0x020, + HEX_CAUSE_MISALIGNED_STORE = 0x021, + HEX_CAUSE_PRIV_NO_READ = 0x022, + HEX_CAUSE_PRIV_NO_WRITE = 0x023, + HEX_CAUSE_PRIV_NO_UREAD = 0x024, + HEX_CAUSE_PRIV_NO_UWRITE = 0x025, + HEX_CAUSE_COPROC_LDST = 0x026, + HEX_CAUSE_STACK_LIMIT = 0x027, + HEX_CAUSE_VWCTRL_WINDOW_MISS = 0x029, + HEX_CAUSE_IMPRECISE_NMI = 0x043, + HEX_CAUSE_IMPRECISE_MULTI_TLB_MATCH = 0x044, + HEX_CAUSE_TLBMISSX_CAUSE_NORMAL = 0x060, + HEX_CAUSE_TLBMISSX_CAUSE_NEXTPAGE = 0x061, + HEX_CAUSE_TLBMISSRW_CAUSE_READ = 0x070, + HEX_CAUSE_TLBMISSRW_CAUSE_WRITE = 0x071, + HEX_CAUSE_DEBUG_SINGLESTEP = 0x80, + HEX_CAUSE_FPTRAP_CAUSE_BADFLOAT = 0x0bf, HEX_CAUSE_INT0 = 0x0c0, HEX_CAUSE_INT1 = 0x0c1, HEX_CAUSE_INT2 = 0x0c2, From patchwork Sat Mar 1 05:28:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997333 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 52787C282D0 for ; Sat, 1 Mar 2025 05:31:20 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPi-0000ri-0W; Sat, 01 Mar 2025 00:29:26 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPf-0000l2-NS for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:23 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPd-0008PE-SR for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:23 -0500 Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5214DGGR028872 for ; Sat, 1 Mar 2025 05:29:10 GMT 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= 6timqBMz4KxPy2CR39IpmlzkIAUMgIT59Nv79S8ijMw=; b=iGDiHaplYuUnr7UP UQM4nRIG+ZHq50HShHdQLitrxweK5giBqNcpWpSvfNtxiKwCtVrtoCoTP2hbFKNB ixnbxr0/vSPHe4rpf0gSLvPFfx8eTBL3MzMiWbg91ioHr+wOHTjR0EAE+ouqRQZ1 nPcWYruNY8sxx1z9owcjpCQ+V/8hpww3cInzVnDItaaT58S/JIJ1xt8HBIBsFnIC Zh/hRyiRzei6X+lCKIG0+LQpnmnftzROP8bfc+4QnePc7g3g0KiyV3OLRqPbrNSH PjVgs8mtHTGPpOnyVfTt9sZ+Tqspo8gSsqjzOTIfvoiAfCzL8fIzHHCfBCx5RdDl Lmb0JA== Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 453u0d037t-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:10 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2236b6fb4a6so51304705ad.2 for ; Fri, 28 Feb 2025 21:29:10 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806949; x=1741411749; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6timqBMz4KxPy2CR39IpmlzkIAUMgIT59Nv79S8ijMw=; b=jaIEoVxwUbdk49KmPqx4qyZZpED9hQiwmH54Ypx7TTqjj5JFMaOZK5ahm+IotjAyB4 tskYnW5TXzRdppoBuIZbhuNRrNAvVfC4R4r5KEFLV97RefOaJaEgikybjXPAoLdqs7zD 1K7ISWjUQepDg7UUr9JHKIp++yG/0qRbB+5GlfUCPdR4Hr+MIzX8Gyy2BGNCvcweVtg1 EOCd9uExojhh5BvgpX6SeWyCYxdeY2w/f00hpV4gDpiTGsv4FRN0oZvhoEgZ8RFEn8Ji 6OZfozdY/CU/y+C9jnm6Pvjtrt2FFvX4qpgdJoTslGpoulsaqpsAT9gUsSVcIaSJJL26 wapA== X-Gm-Message-State: AOJu0YxnzTCoQVqGzYNiYGvsNg6QYP2iHE75+gbBRf3SqWbWyXaBX1FQ oe/dMlkuLeq7IRkgwuduT5TAon4XO2scwfSMaPvv15CnJI8icSW1t2eaqlx27GOFnF2549CAjo+ 1p+0vTjgRulOu8yjWssoOGwuExzAoUPOYORvyberMN6+zMk75zcAsOsevFZqNqg== X-Gm-Gg: ASbGnctZQD8s5oqwxGTuwGpyhBTPf98iB0wqj83pdA6tXMScZ9o0cmR06QhMG/E35xR 0jjp7kimjPC1WcdrK+haS52T77u4VqogFxbIpLasrHCbJeSW+b57AB2MwpUZYzpxea+cbBwwaqK sMP/68DcQivr6rOuXl6HPh49WGEMTskjq/fxahFqB95dJEdqj9Co9Pv+um/1yjMWOMY5zDUsEQB 4cFw9tdC1nXndxmuHsbtF+rhv9Q/IkoWi+Byh8SGIkFV2Skpk8dJYR1PHnU3StXYC30//YmakoU XfX73ZLhxd4SZYS0hbSIXYYhqGkeA1nXPHTPz02iOhzqIF0O3zxgnpF125j9rfmq X-Received: by 2002:a17:902:e5ca:b0:223:894e:4376 with SMTP id d9443c01a7336-223894e454dmr7332995ad.43.1740806949470; Fri, 28 Feb 2025 21:29:09 -0800 (PST) X-Google-Smtp-Source: AGHT+IGThqOuHniMTJ4OntSK2Z7Dt9bKeT+hDxYnq96XG2r9kdpSgL+gGel7kIQMM8KqeAC7Q4mmsA== X-Received: by 2002:a17:902:e5ca:b0:223:894e:4376 with SMTP id d9443c01a7336-223894e454dmr7332785ad.43.1740806949094; Fri, 28 Feb 2025 21:29:09 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:08 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 15/39] target/hexagon: Implement hex_tlb_entry_get_perm() Date: Fri, 28 Feb 2025 21:28:21 -0800 Message-Id: <20250301052845.1012069-16-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: GacH1j3EX-pQPth-4m9VxYK-ywxa4IlA X-Proofpoint-GUID: GacH1j3EX-pQPth-4m9VxYK-ywxa4IlA X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 adultscore=0 phishscore=0 malwarescore=0 spamscore=0 mlxscore=0 suspectscore=0 clxscore=1015 bulkscore=0 priorityscore=1501 mlxlogscore=881 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/hex_mmu.c | 54 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/target/hexagon/hex_mmu.c b/target/hexagon/hex_mmu.c index 54c4ba2dbf..d2297c036d 100644 --- a/target/hexagon/hex_mmu.c +++ b/target/hexagon/hex_mmu.c @@ -267,7 +267,59 @@ static inline void hex_tlb_entry_get_perm(CPUHexagonState *env, uint64_t entry, int mmu_idx, int *prot, int32_t *excp) { - g_assert_not_reached(); + bool perm_x = GET_TLB_FIELD(entry, PTE_X); + bool perm_w = GET_TLB_FIELD(entry, PTE_W); + bool perm_r = GET_TLB_FIELD(entry, PTE_R); + bool perm_u = GET_TLB_FIELD(entry, PTE_U); + bool user_idx = mmu_idx == MMU_USER_IDX; + + if (mmu_idx == MMU_KERNEL_IDX) { + *prot = PAGE_VALID | PAGE_READ | PAGE_WRITE | PAGE_EXEC; + return; + } + + *prot = PAGE_VALID; + switch (access_type) { + case MMU_INST_FETCH: + if (user_idx && !perm_u) { + *excp = HEX_EVENT_PRECISE; + env->cause_code = HEX_CAUSE_FETCH_NO_UPAGE; + } else if (!perm_x) { + *excp = HEX_EVENT_PRECISE; + env->cause_code = HEX_CAUSE_FETCH_NO_XPAGE; + } + break; + case MMU_DATA_LOAD: + if (user_idx && !perm_u) { + *excp = HEX_EVENT_PRECISE; + env->cause_code = HEX_CAUSE_PRIV_NO_UREAD; + } else if (!perm_r) { + *excp = HEX_EVENT_PRECISE; + env->cause_code = HEX_CAUSE_PRIV_NO_READ; + } + break; + case MMU_DATA_STORE: + if (user_idx && !perm_u) { + *excp = HEX_EVENT_PRECISE; + env->cause_code = HEX_CAUSE_PRIV_NO_UWRITE; + } else if (!perm_w) { + *excp = HEX_EVENT_PRECISE; + env->cause_code = HEX_CAUSE_PRIV_NO_WRITE; + } + break; + } + + if (!user_idx || perm_u) { + if (perm_x) { + *prot |= PAGE_EXEC; + } + if (perm_r) { + *prot |= PAGE_READ; + } + if (perm_w) { + *prot |= PAGE_WRITE; + } + } } static inline bool hex_tlb_entry_match(CPUHexagonState *env, uint64_t entry, From patchwork Sat Mar 1 05:28:22 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997321 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 35576C021B8 for ; Sat, 1 Mar 2025 05:30:08 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPk-000119-NU; Sat, 01 Mar 2025 00:29:28 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPg-0000mH-Q8 for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:24 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPf-0008PJ-4t for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:24 -0500 Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5214o36Z023030 for ; Sat, 1 Mar 2025 05:29:12 GMT 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= VtSlR5f388w5C7mOSJea5wLDSl+4cWCfeCRwHMbp/80=; b=ohz1gmtX7qINYiuA aOiBjzD5oJrmjA9aicOihQ1Wx2usyQ96WslZ2A5vxbtQmMiZB+A2aHkKTgWQhYPF ZozocLzz+uEPjUPHMVDGIfWWH6pKvlyqlEHrmG0SDmGUazEn4K5yQq5DBcOUkiaQ tSx7v7NPDdB0RSLcqo4iaIgBy5otDczsX0b6Ku1Ea7MoMSYmM4CEfJw4+1aZHx8n SpJPyQ3JvZ2xwQkOKztgJLgjodoHkwXm0zw8+ipcDyPgjVWxkAiBjOkiI/RX227v 4KZ1+7qq7LpVDIuScwg7pGdXOa4a9OUDB5zjTxxEl5wnQo+BXteh23ayYDXFwJpx F/CMlw== 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 453uh701xs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:11 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-2feda472a6eso476594a91.0 for ; Fri, 28 Feb 2025 21:29:11 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806951; x=1741411751; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VtSlR5f388w5C7mOSJea5wLDSl+4cWCfeCRwHMbp/80=; b=AabsZLNENsMleOB0IXzRBtyvpivWur242THibtbCjy0k5/FQEnFbTzifs/3j5ZfBR1 2Z6+XHsnlCob555CwoF9Y8rzNlm2craA0wtMOUjkJL38KIE0+BYJ6p8BkeLccHnJLGld wGQjmHuOoUdxiRBWfpf9u93oJnt1UCbHKn9P7c0Oqwq6X0Um03XFw1BYmtmhaKttAjW1 P1A58DWl8bqiyHD1hrPu7jKNN0KwOJlWv0loBjrX5PW57qC9iSjkSu1EFYgLr1MZ9XqL dLiadin3dXCI/mpS5Ueoi0g5hP0EDOUsw+bp+in8YrhYS9F1QxMnQ7Tew8dbe7sFD9vS NWpg== X-Gm-Message-State: AOJu0YyOdZ/Fo8E7kBwQAazNjZUdhb4SKp1JGprhpz/l8RmpQ6ERrZkF 90MFkfGZCZSXyw7p/c2uDF9up61K9H8OznXy/Y2FrA2WV6g8A4Y6Bt94GHlCOmDiWfjNHdAKFKP g81NfJd6yTUnF3lTVZ1NYaT6RuGIYwoVoUPYx9GulNR2hmL6Kfmiody6oGnd5xw== X-Gm-Gg: ASbGncv1LZoVTOxlYmxXN+sFXM5N9gyJZrGh1Eo0EZhmESZxvLGPnRsbIrbmFSg6WBC pD4b5l8nqTAGYTNS75u/EtFUSFWc8F0N/k5OQtkKWfRcTJyACl1IffrfonGBByKlo0Xj4rxEWgg tEcOKBLLWezrTAJuB8bw9PfWEuRr9UFmh9VnHdNJaPrbNLwlT0PXyhnI7Q5AFdYb1eEaeYZ/YTb TUEOhYqMk4w9UHFHVG1y1zcsOVcDjd+n11t68LHcCH7DwbBp4fW+3he/zkpjz+gnvCUxpm5Hxlb fuQGAjj/K9Ne4B194BKF1ebH6kzEbOmiqZfNBEp+RDdfdvfFd3qmPJ5CQTzA1jiD X-Received: by 2002:a17:90b:1d10:b0:2f5:747:cbd with SMTP id 98e67ed59e1d1-2febab787cbmr11261042a91.18.1740806950661; Fri, 28 Feb 2025 21:29:10 -0800 (PST) X-Google-Smtp-Source: AGHT+IEM0JTBXEVUCzmthe2Lzxmd3V5i576mO3yr48zt/46U4sHr/2hQFrvNdNvOjxBUizjA1dFPow== X-Received: by 2002:a17:90b:1d10:b0:2f5:747:cbd with SMTP id 98e67ed59e1d1-2febab787cbmr11261017a91.18.1740806950301; Fri, 28 Feb 2025 21:29:10 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:10 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 16/39] target/hexagon: Implement hex_tlb_lookup_by_asid() Date: Fri, 28 Feb 2025 21:28:22 -0800 Message-Id: <20250301052845.1012069-17-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: yu8PN7QYwjkeooYUnyRLiFVTD7DMFNl2 X-Proofpoint-ORIG-GUID: yu8PN7QYwjkeooYUnyRLiFVTD7DMFNl2 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 suspectscore=0 lowpriorityscore=0 phishscore=0 impostorscore=0 clxscore=1015 priorityscore=1501 adultscore=0 mlxscore=0 spamscore=0 malwarescore=0 mlxlogscore=571 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/hex_mmu.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/target/hexagon/hex_mmu.c b/target/hexagon/hex_mmu.c index d2297c036d..07ad8e9616 100644 --- a/target/hexagon/hex_mmu.c +++ b/target/hexagon/hex_mmu.c @@ -362,7 +362,31 @@ bool hex_tlb_find_match(CPUHexagonState *env, target_ulong VA, static uint32_t hex_tlb_lookup_by_asid(CPUHexagonState *env, uint32_t asid, uint32_t VA) { - g_assert_not_reached(); + uint32_t not_found = 0x80000000; + uint32_t idx = not_found; + int i; + + HexagonCPU *cpu = env_archcpu(env); + for (i = 0; i < cpu->num_tlbs; i++) { + uint64_t entry = env->hex_tlb->entries[i]; + if (hex_tlb_entry_match_noperm(entry, asid, VA)) { + if (idx != not_found) { + env->cause_code = HEX_CAUSE_IMPRECISE_MULTI_TLB_MATCH; + break; + } + idx = i; + } + } + + if (idx == not_found) { + qemu_log_mask(CPU_LOG_MMU, "%s: 0x%x, 0x%08x => NOT FOUND\n", + __func__, asid, VA); + } else { + qemu_log_mask(CPU_LOG_MMU, "%s: 0x%x, 0x%08x => %d\n", + __func__, asid, VA, idx); + } + + return idx; } /* Called from tlbp instruction */ From patchwork Sat Mar 1 05:28:23 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997361 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3F121C021B8 for ; Sat, 1 Mar 2025 05:35:42 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPm-00016e-DN; Sat, 01 Mar 2025 00:29:30 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPj-0000yZ-As for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:27 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPg-0008PS-Jh for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:26 -0500 Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5213YXoj030222 for ; Sat, 1 Mar 2025 05:29:13 GMT 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= 4WPJcl6XUAdqKjphGDJJkpHEkpnj/vHIpKcKP8TtYfI=; b=nm87qSvV3SJ2XSpx 74KINokQyUlXL/w6CRRXM2Nyw0LMvNCQDx0aLY7usRp4IoAcmEn1AyOtWdJweaQZ gPym/JjTFfBo7zc/Tc7bNPGC5quvovV8qiJX3IfXFPurtbaqOkaTICeWgeLq2Drr Fe1p/3uERV0j/WOO9C2MxdhzzzoYR5bxW1y0pkoY4VUN1oL255c45Dxohkza3/as LlSie89cIreTF9A/gmOnbN3xpVvqZonxggXebLsUWmsvm0Q8+8U/my2/lzesIzLO xTb0PF5kbzrndpqHsgw53imQzrT3+nrmcwWnCU6uXbXYQvsivxHC7dOfGRj8WSX1 YiMdMA== 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 453tf0g5d8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:12 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-21f6cb3097bso75821675ad.3 for ; Fri, 28 Feb 2025 21:29:12 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806952; x=1741411752; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4WPJcl6XUAdqKjphGDJJkpHEkpnj/vHIpKcKP8TtYfI=; b=XRhKhnBYiMq0TjhZtP5VY0cYxoV6Jrg9qVQ+Ncq+VKgzWt07mYhLsUHo5jQTw4E6x4 XcB8EI2SbqQfYCgNsVOCUb0QU7Qzj8BlaCGnTRlGKjefxMs8E/1ZuFlZPlYyLjzDMuAJ oiGm6p7zHQhL/19uOrehgDVOkExGfWnKZ/dVL6jLN5YC8ZTnVFX8RCY/d2aGU0kLvvA3 PWGkHN7YRc2yUBoNY3QluVWCM5sfZ3qFydy/acC3Fo3p+bn++A7AKJWtnNbnmSgJaECx VL5FNoBLVnG87prBLcKmJ7wSiyFK2d5P3gKI1hHFI0qmsFrYkPQdG07OOcnB83jE6Xb5 VW3g== X-Gm-Message-State: AOJu0YzzQdab9f7xE9ZSr7JE5o9Ya0rCzYc0Rkg///FcIe8LMr2ZeHKO h7tGgHE6e2gTglybEd6VxxO8fN6kL1aJaa1gHqdVtpYPKqTbKD34fA5JvdZfd3XdjIjHYc+Esgf DkWK7+drSNA20vdOJErfA+rqVTvpTzg+RxwGx7/OVKACBD5WIiLejH//0u9Xyzg== X-Gm-Gg: ASbGnctdugTtCEVaMSSy0sJD7FP7xr0n33bV/YCpQXjOGkAWxO990XDoPZi8xOuUkEW HIMZb5fR9r3leG18Pm6X3S19qOWq/L7yyvz9ZWOZmnKu/No6muaGt1diYdbUIRTMVar9XnV1m/j fZIkWkx1BkMQV/6tSCA5RhPh6p+rT2v2vGz3QmOpuc6wswjOXi+d8wcXihIXE+b3lddChSxZY9J 2ooyWrzA0sUlkGzMBiqCwkdsA/AaUtHjB+oR8fPQb+qa/CJG2v2YM6N2mnUiZ8gcBdUgq4StlA3 wNxZgJjaNQE/hlPHgw12d13hdhhuV1oqOwVg4wnI1sVdriiDfWtv241dUbSUE/9c X-Received: by 2002:a17:902:c951:b0:221:283:5884 with SMTP id d9443c01a7336-22368fc9535mr100578415ad.29.1740806951934; Fri, 28 Feb 2025 21:29:11 -0800 (PST) X-Google-Smtp-Source: AGHT+IGpGcLnBs+04+o/jsa0LIdEbmo0iLWjiLQsqB+18hY+8IWRE/g04yDjoVHnslio8U++s7Z51Q== X-Received: by 2002:a17:902:c951:b0:221:283:5884 with SMTP id d9443c01a7336-22368fc9535mr100578075ad.29.1740806951547; Fri, 28 Feb 2025 21:29:11 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:11 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain , Mike Lambert Subject: [PATCH 17/39] target/hexagon: Implement software interrupt Date: Fri, 28 Feb 2025 21:28:23 -0800 Message-Id: <20250301052845.1012069-18-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: vcAAFbhGENBJ3XozErHOQ79_rgLhfAJ5 X-Proofpoint-ORIG-GUID: vcAAFbhGENBJ3XozErHOQ79_rgLhfAJ5 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 suspectscore=0 malwarescore=0 lowpriorityscore=0 mlxlogscore=999 phishscore=0 adultscore=0 spamscore=0 clxscore=1015 mlxscore=0 bulkscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Co-authored-by: Mike Lambert Signed-off-by: Brian Cain --- target/hexagon/cpu.h | 1 - target/hexagon/hexswi.h | 17 +++ target/hexagon/cpu.c | 2 + target/hexagon/hexswi.c | 258 +++++++++++++++++++++++++++++++++++++ target/hexagon/op_helper.c | 1 + 5 files changed, 278 insertions(+), 1 deletion(-) create mode 100644 target/hexagon/hexswi.h create mode 100644 target/hexagon/hexswi.c diff --git a/target/hexagon/cpu.h b/target/hexagon/cpu.h index dabee310c5..045581d7be 100644 --- a/target/hexagon/cpu.h +++ b/target/hexagon/cpu.h @@ -256,5 +256,4 @@ typedef HexagonCPU ArchCPU; void hexagon_translate_init(void); void hexagon_translate_code(CPUState *cs, TranslationBlock *tb, int *max_insns, vaddr pc, void *host_pc); - #endif /* HEXAGON_CPU_H */ diff --git a/target/hexagon/hexswi.h b/target/hexagon/hexswi.h new file mode 100644 index 0000000000..5d232cb06c --- /dev/null +++ b/target/hexagon/hexswi.h @@ -0,0 +1,17 @@ +/* + * Copyright(c) 2025 Qualcomm Innovation Center, Inc. All Rights Reserved. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef HEXSWI_H +#define HEXSWI_H + + +#include "cpu.h" + +void hexagon_cpu_do_interrupt(CPUState *cpu); +void register_trap_exception(CPUHexagonState *env, int type, int imm, + target_ulong PC); + +#endif /* HEXSWI_H */ diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index 89a051b41d..843be8221f 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -33,6 +33,8 @@ #ifndef CONFIG_USER_ONLY #include "sys_macros.h" #include "qemu/main-loop.h" +#include "hex_interrupts.h" +#include "hexswi.h" #endif static void hexagon_v66_cpu_init(Object *obj) { } diff --git a/target/hexagon/hexswi.c b/target/hexagon/hexswi.c new file mode 100644 index 0000000000..5fcf9b2be9 --- /dev/null +++ b/target/hexagon/hexswi.c @@ -0,0 +1,258 @@ +/* + * Copyright(c) 2019-2025 Qualcomm Innovation Center, Inc. All Rights Reserved. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "cpu.h" +#ifdef CONFIG_USER_ONLY +#include "exec/helper-proto.h" +#include "qemu.h" +#endif +#include "exec/cpu_ldst.h" +#include "exec/exec-all.h" +#include "qemu/log.h" +#include "qemu/main-loop.h" +#include "arch.h" +#include "internal.h" +#include "macros.h" +#include "sys_macros.h" +#include "tcg/tcg-op.h" +#ifndef CONFIG_USER_ONLY +#include "hex_mmu.h" +#include "hexswi.h" +#endif + +#ifndef CONFIG_USER_ONLY + + +static void set_addresses(CPUHexagonState *env, target_ulong pc_offset, + target_ulong exception_index) + +{ + arch_set_system_reg(env, HEX_SREG_ELR, + arch_get_thread_reg(env, HEX_REG_PC) + pc_offset); + arch_set_thread_reg(env, HEX_REG_PC, + arch_get_system_reg(env, HEX_SREG_EVB) | + (exception_index << 2)); +} + +static const char *event_name[] = { + [HEX_EVENT_RESET] = "HEX_EVENT_RESET", + [HEX_EVENT_IMPRECISE] = "HEX_EVENT_IMPRECISE", + [HEX_EVENT_TLB_MISS_X] = "HEX_EVENT_TLB_MISS_X", + [HEX_EVENT_TLB_MISS_RW] = "HEX_EVENT_TLB_MISS_RW", + [HEX_EVENT_TRAP0] = "HEX_EVENT_TRAP0", + [HEX_EVENT_TRAP1] = "HEX_EVENT_TRAP1", + [HEX_EVENT_FPTRAP] = "HEX_EVENT_FPTRAP", + [HEX_EVENT_DEBUG] = "HEX_EVENT_DEBUG", + [HEX_EVENT_INT0] = "HEX_EVENT_INT0", + [HEX_EVENT_INT1] = "HEX_EVENT_INT1", + [HEX_EVENT_INT2] = "HEX_EVENT_INT2", + [HEX_EVENT_INT3] = "HEX_EVENT_INT3", + [HEX_EVENT_INT4] = "HEX_EVENT_INT4", + [HEX_EVENT_INT5] = "HEX_EVENT_INT5", + [HEX_EVENT_INT6] = "HEX_EVENT_INT6", + [HEX_EVENT_INT7] = "HEX_EVENT_INT7", + [HEX_EVENT_INT8] = "HEX_EVENT_INT8", + [HEX_EVENT_INT9] = "HEX_EVENT_INT9", + [HEX_EVENT_INTA] = "HEX_EVENT_INTA", + [HEX_EVENT_INTB] = "HEX_EVENT_INTB", + [HEX_EVENT_INTC] = "HEX_EVENT_INTC", + [HEX_EVENT_INTD] = "HEX_EVENT_INTD", + [HEX_EVENT_INTE] = "HEX_EVENT_INTE", + [HEX_EVENT_INTF] = "HEX_EVENT_INTF" +}; + +void hexagon_cpu_do_interrupt(CPUState *cs) + +{ + CPUHexagonState *env = cpu_env(cs); + BQL_LOCK_GUARD(); + + qemu_log_mask(CPU_LOG_INT, "\t%s: event 0x%x:%s, cause 0x%x(%d)\n", + __func__, cs->exception_index, + event_name[cs->exception_index], env->cause_code, + env->cause_code); + + env->llsc_addr = ~0; + + uint32_t ssr = arch_get_system_reg(env, HEX_SREG_SSR); + if (GET_SSR_FIELD(SSR_EX, ssr) == 1) { + arch_set_system_reg(env, HEX_SREG_DIAG, env->cause_code); + env->cause_code = HEX_CAUSE_DOUBLE_EXCEPT; + cs->exception_index = HEX_EVENT_PRECISE; + } + + switch (cs->exception_index) { + case HEX_EVENT_TRAP0: + if (env->cause_code == 0) { + qemu_log_mask(LOG_UNIMP, + "trap0 is unhandled, no semihosting available\n"); + } + + hexagon_ssr_set_cause(env, env->cause_code); + set_addresses(env, 4, cs->exception_index); + break; + + case HEX_EVENT_TRAP1: + hexagon_ssr_set_cause(env, env->cause_code); + set_addresses(env, 4, cs->exception_index); + break; + + case HEX_EVENT_TLB_MISS_X: + switch (env->cause_code) { + case HEX_CAUSE_TLBMISSX_CAUSE_NORMAL: + case HEX_CAUSE_TLBMISSX_CAUSE_NEXTPAGE: + qemu_log_mask(CPU_LOG_MMU, + "TLB miss EX exception (0x%x) caught: " + "Cause code (0x%x) " + "TID = 0x%" PRIx32 ", PC = 0x%" PRIx32 + ", BADVA = 0x%" PRIx32 "\n", + cs->exception_index, env->cause_code, env->threadId, + arch_get_thread_reg(env, HEX_REG_PC), + arch_get_system_reg(env, HEX_SREG_BADVA)); + + hexagon_ssr_set_cause(env, env->cause_code); + set_addresses(env, 0, cs->exception_index); + break; + + default: + cpu_abort(cs, + "1:Hexagon exception %d/0x%x: " + "Unknown cause code %d/0x%x\n", + cs->exception_index, cs->exception_index, env->cause_code, + env->cause_code); + break; + } + break; + + case HEX_EVENT_TLB_MISS_RW: + switch (env->cause_code) { + case HEX_CAUSE_TLBMISSRW_CAUSE_READ: + case HEX_CAUSE_TLBMISSRW_CAUSE_WRITE: + qemu_log_mask(CPU_LOG_MMU, + "TLB miss RW exception (0x%x) caught: " + "Cause code (0x%x) " + "TID = 0x%" PRIx32 ", PC = 0x%" PRIx32 + ", BADVA = 0x%" PRIx32 "\n", + cs->exception_index, env->cause_code, env->threadId, + env->gpr[HEX_REG_PC], + arch_get_system_reg(env, HEX_SREG_BADVA)); + + hexagon_ssr_set_cause(env, env->cause_code); + set_addresses(env, 0, cs->exception_index); + /* env->sreg[HEX_SREG_BADVA] is set when the exception is raised */ + break; + + default: + cpu_abort(cs, + "2:Hexagon exception %d/0x%x: " + "Unknown cause code %d/0x%x\n", + cs->exception_index, cs->exception_index, env->cause_code, + env->cause_code); + break; + } + break; + + case HEX_EVENT_FPTRAP: + hexagon_ssr_set_cause(env, env->cause_code); + arch_set_thread_reg(env, HEX_REG_PC, + arch_get_system_reg(env, HEX_SREG_EVB) | + (cs->exception_index << 2)); + break; + + case HEX_EVENT_DEBUG: + hexagon_ssr_set_cause(env, env->cause_code); + set_addresses(env, 0, cs->exception_index); + qemu_log_mask(LOG_UNIMP, "single-step exception is not handled\n"); + break; + + case HEX_EVENT_PRECISE: + switch (env->cause_code) { + case HEX_CAUSE_FETCH_NO_XPAGE: + case HEX_CAUSE_FETCH_NO_UPAGE: + case HEX_CAUSE_PRIV_NO_READ: + case HEX_CAUSE_PRIV_NO_UREAD: + case HEX_CAUSE_PRIV_NO_WRITE: + case HEX_CAUSE_PRIV_NO_UWRITE: + case HEX_CAUSE_MISALIGNED_LOAD: + case HEX_CAUSE_MISALIGNED_STORE: + case HEX_CAUSE_PC_NOT_ALIGNED: + qemu_log_mask(CPU_LOG_MMU, + "MMU permission exception (0x%x) caught: " + "Cause code (0x%x) " + "TID = 0x%" PRIx32 ", PC = 0x%" PRIx32 + ", BADVA = 0x%" PRIx32 "\n", + cs->exception_index, env->cause_code, env->threadId, + env->gpr[HEX_REG_PC], + arch_get_system_reg(env, HEX_SREG_BADVA)); + + + hexagon_ssr_set_cause(env, env->cause_code); + set_addresses(env, 0, cs->exception_index); + /* env->sreg[HEX_SREG_BADVA] is set when the exception is raised */ + break; + + case HEX_CAUSE_DOUBLE_EXCEPT: + case HEX_CAUSE_PRIV_USER_NO_SINSN: + case HEX_CAUSE_PRIV_USER_NO_GINSN: + case HEX_CAUSE_INVALID_OPCODE: + case HEX_CAUSE_NO_COPROC_ENABLE: + case HEX_CAUSE_NO_COPROC2_ENABLE: + case HEX_CAUSE_UNSUPORTED_HVX_64B: + case HEX_CAUSE_REG_WRITE_CONFLICT: + case HEX_CAUSE_VWCTRL_WINDOW_MISS: + hexagon_ssr_set_cause(env, env->cause_code); + set_addresses(env, 0, cs->exception_index); + break; + + case HEX_CAUSE_COPROC_LDST: + hexagon_ssr_set_cause(env, env->cause_code); + set_addresses(env, 0, cs->exception_index); + break; + + case HEX_CAUSE_STACK_LIMIT: + hexagon_ssr_set_cause(env, env->cause_code); + set_addresses(env, 0, cs->exception_index); + break; + + default: + cpu_abort(cs, + "3:Hexagon exception %d/0x%x: " + "Unknown cause code %d/0x%x\n", + cs->exception_index, cs->exception_index, env->cause_code, + env->cause_code); + break; + } + break; + + case HEX_EVENT_IMPRECISE: + qemu_log_mask(LOG_UNIMP, + "Imprecise exception: this case is not yet handled"); + break; + + default: + qemu_log_mask(LOG_UNIMP, + "Hexagon Unsupported exception 0x%x/0x%x\n", + cs->exception_index, env->cause_code); + break; + } + + cs->exception_index = HEX_EVENT_NONE; +} + +void register_trap_exception(CPUHexagonState *env, int traptype, int imm, + target_ulong PC) +{ + CPUState *cs = env_cpu(env); + + cs->exception_index = (traptype == 0) ? HEX_EVENT_TRAP0 : HEX_EVENT_TRAP1; + ASSERT_DIRECT_TO_GUEST_UNSET(env, cs->exception_index); + + env->cause_code = imm; + env->gpr[HEX_REG_PC] = PC; + cpu_loop_exit(cs); +} +#endif diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index 42805d0f1d..687e7f45c2 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -38,6 +38,7 @@ #include "hex_mmu.h" #include "hw/intc/l2vic.h" #include "hex_interrupts.h" +#include "hexswi.h" #endif #define SF_BIAS 127 From patchwork Sat Mar 1 05:28:24 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997353 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1CE46C021B8 for ; Sat, 1 Mar 2025 05:35:09 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPx-0002F3-F8; Sat, 01 Mar 2025 00:29:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPl-00013S-1I for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:29 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPh-0008PX-Du for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:28 -0500 Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5214o36a023030 for ; Sat, 1 Mar 2025 05:29:14 GMT 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= Cro+9dSEynAsUdlc2d1xxFC9RibUn7LDydh+snlHwEU=; b=pc71sBrXnxhqMJpD VRjYrXUcBVNLHg+szKiaHUoLjVC7XmbED1CuLWme1TqPB8a9vM5GJqkyBQq6i1zA rP4JLrOHAAof4fb0BzxKZFgNfCGkGd42m5R6sJoNC8WkaSh5chTQImYpTNZVgtUI b3uQ4xaGV1TOBNie6UJBBRgZwswsi9cCm9w+/IgwVPFVtn3uOom1K7hHl7eI4AOl LUCBvfMdbVoMWI3lA0/qF0amDJawCUBsnQJ/FAtlyRm/c5PgglQuLOmHlLhPx8MO zZxnDXGi3jaSS0RydH2VbTqwU1SnDB9hrxw0ri+qJsTfEPxmGCkfdbetJHZqnjJJ gcFdkA== 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 453uh701xx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:14 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-2fec3e38c2dso3566442a91.2 for ; Fri, 28 Feb 2025 21:29:14 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806953; x=1741411753; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Cro+9dSEynAsUdlc2d1xxFC9RibUn7LDydh+snlHwEU=; b=PZbaPHlGX9ic+3sAClrK0Cgk2FceT3lB84VnDvSn8YwKfAiOjuuOLvbYbqx1KHT9as yWYtFxaHoW6ZMzBfniZVD04ZY6UgjqOMhzVr/4ea2ESnKimGcWpq2YLDmOXvujBWxtVu uCHSm0Q9I2d4Cj5+e0ziX0Zegax+PsEwz42i03dySNik93wUdmdqArZpxoBGklZ5UnHf 29URCf4J7Ap0dv/Z3MHFuDWRzgQjBLypkZGuOWZ1jySyUnTb08mmWpsJzJPvRwDgrbor nIPB86C3/ORmFZ9jLWh0rPA5U+8S1eNuB7whAFRQZL+X4mB7GPpwL7t3iyCImWsMkBNV xtQg== X-Gm-Message-State: AOJu0YymmbGk8rCqw0DCot5Ht6kYh/n5SZ6QI6qMykRqDY5VjBy3lNB7 98YY/W5/DIpKjcYYjkHtRZCQBbpoxUA++Mw599rvXiy2UNFt5oObfeA3WwHB9LgCPiW1cj0rcvU n1jMp47oOv+lOJppQ5iN0iJ8iCgHseyO3y8Azq1KIWEn/UO7b9BpbAJQcNwkgKg== X-Gm-Gg: ASbGnctbm9J3ZNYIJsfAUk5bgevH5jQBQXjRCc8WxxpvdfQIM5IxjWz3qPqxMyMkdR4 5HZExi7IdhV2jBizQ6v4v2gTDpeXw5GvAdPrtSf0IDh/XTTdhdKQYoT+2ZVA6yBup9B5FGOWNgn PM+EG4lkfSZHJUV+w4oZscekDvvdp/8+k1iZsX50fdnhbmSeIx9fM+9LFvJZoY8RpZxEPzMfhvn c8pSGi2lnJJKDPXWAGrrPUHWuXP/TQVLS/lJF3fKTt9BQ1R7kQMMm9eKsp0hWB/j7VKXXnRbZQG Twqi0VCq9dkOsT4YwzO+T7MVmdit3Q3epLr3KK1p1e93Qj/PGKaSjdsMyzdnUtcw X-Received: by 2002:a17:90b:4c11:b0:2ee:db1a:2e3c with SMTP id 98e67ed59e1d1-2febab2eed3mr9322542a91.1.1740806953079; Fri, 28 Feb 2025 21:29:13 -0800 (PST) X-Google-Smtp-Source: AGHT+IFeXbLV6sIZSMrvpiaStPg77h1Wefhvrh/Vnvz6lEyY90/Pziy7XdXXlS5GzckNJtlh3S7TwQ== X-Received: by 2002:a17:90b:4c11:b0:2ee:db1a:2e3c with SMTP id 98e67ed59e1d1-2febab2eed3mr9322516a91.1.1740806952707; Fri, 28 Feb 2025 21:29:12 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:12 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 18/39] target/hexagon: Implement exec_interrupt, set_irq Date: Fri, 28 Feb 2025 21:28:24 -0800 Message-Id: <20250301052845.1012069-19-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: v8IhRoPzkKyXxSbjeCqQ1tB2teQDxivj X-Proofpoint-ORIG-GUID: v8IhRoPzkKyXxSbjeCqQ1tB2teQDxivj X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 suspectscore=0 lowpriorityscore=0 phishscore=0 impostorscore=0 clxscore=1015 priorityscore=1501 adultscore=0 mlxscore=0 spamscore=0 malwarescore=0 mlxlogscore=934 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/cpu.h | 5 +++ target/hexagon/cpu.c | 73 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) diff --git a/target/hexagon/cpu.h b/target/hexagon/cpu.h index 045581d7be..d28c1249f3 100644 --- a/target/hexagon/cpu.h +++ b/target/hexagon/cpu.h @@ -207,6 +207,11 @@ G_NORETURN void hexagon_raise_exception_err(CPUHexagonState *env, uintptr_t pc); #ifndef CONFIG_USER_ONLY +/* + * @return true if the @a thread_env hardware thread is + * not stopped. + */ +bool hexagon_thread_is_enabled(CPUHexagonState *thread_env); uint32_t hexagon_greg_read(CPUHexagonState *env, uint32_t reg); uint32_t hexagon_sreg_read(CPUHexagonState *env, uint32_t reg); void hexagon_gdb_sreg_write(CPUHexagonState *env, uint32_t reg, uint32_t val); diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index 843be8221f..e9f24581a6 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -31,6 +31,7 @@ #include "hex_mmu.h" #ifndef CONFIG_USER_ONLY +#include "macros.h" #include "sys_macros.h" #include "qemu/main-loop.h" #include "hex_interrupts.h" @@ -278,9 +279,28 @@ static void hexagon_cpu_synchronize_from_tb(CPUState *cs, cpu_env(cs)->gpr[HEX_REG_PC] = tb->pc; } +#ifndef CONFIG_USER_ONLY +bool hexagon_thread_is_enabled(CPUHexagonState *env) +{ + target_ulong modectl = arch_get_system_reg(env, HEX_SREG_MODECTL); + uint32_t thread_enabled_mask = GET_FIELD(MODECTL_E, modectl); + bool E_bit = thread_enabled_mask & (0x1 << env->threadId); + + return E_bit; +} +#endif + static bool hexagon_cpu_has_work(CPUState *cs) { +#ifndef CONFIG_USER_ONLY + CPUHexagonState *env = cpu_env(cs); + + return hexagon_thread_is_enabled(env) && + (cs->interrupt_request & (CPU_INTERRUPT_HARD | CPU_INTERRUPT_SWI + | CPU_INTERRUPT_K0_UNLOCK | CPU_INTERRUPT_TLB_UNLOCK)); +#else return true; +#endif } static void hexagon_restore_state_to_opc(CPUState *cs, @@ -411,19 +431,72 @@ static void hexagon_cpu_realize(DeviceState *dev, Error **errp) mcc->parent_realize(dev, errp); } +#if !defined(CONFIG_USER_ONLY) +static void hexagon_cpu_set_irq(void *opaque, int irq, int level) +{ + HexagonCPU *cpu = HEXAGON_CPU(opaque); + CPUState *cs = CPU(cpu); + CPUHexagonState *env = cpu_env(cs); + + switch (irq) { + case HEXAGON_CPU_IRQ_0 ... HEXAGON_CPU_IRQ_7: + qemu_log_mask(CPU_LOG_INT, "%s: irq %d, level %d\n", + __func__, irq, level); + if (level) { + hex_raise_interrupts(env, 1 << irq, CPU_INTERRUPT_HARD); + } + break; + default: + g_assert_not_reached(); + } +} +#endif + + static void hexagon_cpu_init(Object *obj) { +#if !defined(CONFIG_USER_ONLY) + HexagonCPU *cpu = HEXAGON_CPU(obj); + qdev_init_gpio_in(DEVICE(cpu), hexagon_cpu_set_irq, 8); +#endif } #include "hw/core/tcg-cpu-ops.h" +#ifndef CONFIG_USER_ONLY + +static bool hexagon_cpu_exec_interrupt(CPUState *cs, int interrupt_request) +{ + CPUHexagonState *env = cpu_env(cs); + if (interrupt_request & CPU_INTERRUPT_TLB_UNLOCK) { + cs->halted = false; + cpu_reset_interrupt(cs, CPU_INTERRUPT_TLB_UNLOCK); + return true; + } + if (interrupt_request & CPU_INTERRUPT_K0_UNLOCK) { + cs->halted = false; + cpu_reset_interrupt(cs, CPU_INTERRUPT_K0_UNLOCK); + return true; + } + if (interrupt_request & (CPU_INTERRUPT_HARD | CPU_INTERRUPT_SWI)) { + return hex_check_interrupts(env); + } + return false; +} + +#endif + static const TCGCPUOps hexagon_tcg_ops = { .initialize = hexagon_translate_init, .translate_code = hexagon_translate_code, .synchronize_from_tb = hexagon_cpu_synchronize_from_tb, .restore_state_to_opc = hexagon_restore_state_to_opc, +#if !defined(CONFIG_USER_ONLY) + .cpu_exec_interrupt = hexagon_cpu_exec_interrupt, +#endif /* !CONFIG_USER_ONLY */ }; + static void hexagon_cpu_class_init(ObjectClass *c, void *data) { HexagonCPUClass *mcc = HEXAGON_CPU_CLASS(c); From patchwork Sat Mar 1 05:28:25 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997340 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2F849C021B8 for ; Sat, 1 Mar 2025 05:33:58 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPp-0001O4-JO; Sat, 01 Mar 2025 00:29:33 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPm-0001Ba-Oo for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:31 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPj-0008Pc-8Z for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:30 -0500 Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5214Ct6D028231 for ; Sat, 1 Mar 2025 05:29:16 GMT 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= 0YJTxVBSMmsE//Za1WMVRl8+wmXuZ9fnpS9TM7gTV5A=; b=ba+QgS7X14JDWIkl QwxHHPflXg4BGsF+clXkbqjqBzjYkmgrSN3aWe9UVag1LbJrj1DEqN/2kN8hW5eL rEOA9NC2pn+nG5YRG/mUI02OyxGT0e5K/BVWQoukFk76JzOGC+3pSm+zDIO7V6yp OfAX4fcVTa05SosfD7GlLjwtypz6JowCoL6v0C0DZXoOvXH+tCWctiiqd02aCjZ2 VFrEVRDcpDmULGY+EBQDcv+9Me9wb3zeTku6GetE55c/YOTkSdjt9rYw3D5NdSci InU0K1/A8t4cXLZ1IH/6iXFTh3gO/0WGdPbikDF8n5cA1K9BJXGivOpeHALjh54I 6vyNxQ== 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 453u0d0387-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:15 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-2f81a0d0a18so5942660a91.3 for ; Fri, 28 Feb 2025 21:29:15 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806955; x=1741411755; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0YJTxVBSMmsE//Za1WMVRl8+wmXuZ9fnpS9TM7gTV5A=; b=BxHqNJ33UHb+gomKPRWhd5md/gIqnSH1Yib4q4al1aDlun9ntJKBget16MY2YaZonH 0c5P3KnR8z/O3SJ97Qh3vJPTOgghHzvfrw44dCThZrHFXnmm4tRnpTny1vSNAIhMdjGz PExml7fnOx4TLAebmra99jmhT+eZbTUHgNL3OAr2xyRe2y3CvqWXPegoUl4Xm7lkhdCp 8ubGY5JBcMRUJkUHTCxME3IrBXmqyrrfQ0YPNc6pY2RzSg//KmDXexp0LYoolZGKqWjb rc3yrvLQOauNIZodnUBIm2fGAQqoGRv/cGluShDrdUy39eKRWv/g+xnSg8H3FAHW/F9s pEqA== X-Gm-Message-State: AOJu0YyvqG5eWxmlBxuCMjm6C85dTJRp3OgeBda2I8ImYzu07Dlt/kYM /ldVdzx5H7dCRu8ZEdXzvjirjMwmuSOqRgdKAt8/Ulbsw4BYb3WgXjKX6rywWIQ5ywkV9k0+g90 3uhHvgpoTr+ETUgJHIeOb8fh3vUETCdNzx5sQXFhNY8WGr1HXHfVHWtZAR/1iUQ== X-Gm-Gg: ASbGnctQAQPN1i5+L01azWLZD7TEAtnORKeuuekqj5bIRsxXcsdRenD3slrOp5UOKX8 X9ITs20WPy+Pe67nyBnv0fB9P3ERC9orvfCJAxMCvSIQTPe8r6ZznuXWbrJhNcJVg/FT/cB61wN DB+o3mlZgjMMqyAEJxJS2Zvdo2od482P5BKqASbLRzuybkDbBqMQsQqQ3kBevEGumJPpWa/Oi7X 4BSP/tcmXBca9bRxITwhCdnIgJWdZtwELtHW6/k6uDtAcVFaBDyUR9u6d79KBNHV0pfLXjhoQBR MBHlWjUyLyOP+uNA4N80pxFh1t06lGAu4In2ndB98z8IJd1uBCyagwn9gcnpEAI1 X-Received: by 2002:a17:90b:4b87:b0:2ee:e961:303d with SMTP id 98e67ed59e1d1-2febabe29f9mr9564753a91.35.1740806954751; Fri, 28 Feb 2025 21:29:14 -0800 (PST) X-Google-Smtp-Source: AGHT+IEeQNii6fN8IiXw93ln6CqwnFnpKcMy/3lgcIgjF8rYLuYqIzVj9iZMdBW6bKw1SGw7iaCKbw== X-Received: by 2002:a17:90b:4b87:b0:2ee:e961:303d with SMTP id 98e67ed59e1d1-2febabe29f9mr9564725a91.35.1740806954338; Fri, 28 Feb 2025 21:29:14 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:14 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 19/39] target/hexagon: Implement hexagon_tlb_fill() Date: Fri, 28 Feb 2025 21:28:25 -0800 Message-Id: <20250301052845.1012069-20-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: MpDy4-FI5am2Ld5FkgbQWN8rWEmYeHmc X-Proofpoint-GUID: MpDy4-FI5am2Ld5FkgbQWN8rWEmYeHmc X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 adultscore=0 phishscore=0 malwarescore=0 spamscore=0 mlxscore=0 suspectscore=0 clxscore=1015 bulkscore=0 priorityscore=1501 mlxlogscore=957 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/cpu.c | 133 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 132 insertions(+), 1 deletion(-) diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index e9f24581a6..a548d575a7 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -463,7 +463,137 @@ static void hexagon_cpu_init(Object *obj) #include "hw/core/tcg-cpu-ops.h" -#ifndef CONFIG_USER_ONLY +#if !defined(CONFIG_USER_ONLY) +static bool get_physical_address(CPUHexagonState *env, hwaddr *phys, int *prot, + int *size, int32_t *excp, target_ulong address, + MMUAccessType access_type, int mmu_idx) + +{ + if (hexagon_cpu_mmu_enabled(env)) { + return hex_tlb_find_match(env, address, access_type, phys, prot, size, + excp, mmu_idx); + } else { + *phys = address & 0xFFFFFFFF; + *prot = PAGE_VALID | PAGE_READ | PAGE_WRITE | PAGE_EXEC; + *size = TARGET_PAGE_SIZE; + return true; + } +} + +/* qemu seems to only want to know about TARGET_PAGE_SIZE pages */ +static void find_qemu_subpage(vaddr *addr, hwaddr *phys, int page_size) +{ + vaddr page_start = *addr & ~((vaddr)(page_size - 1)); + vaddr offset = ((*addr - page_start) / TARGET_PAGE_SIZE) * TARGET_PAGE_SIZE; + *addr = page_start + offset; + *phys += offset; +} + + +#define INVALID_BADVA 0xbadabada + +static void set_badva_regs(CPUHexagonState *env, target_ulong VA, int slot, + MMUAccessType access_type) +{ + arch_set_system_reg(env, HEX_SREG_BADVA, VA); + + if (access_type == MMU_INST_FETCH || slot == 0) { + arch_set_system_reg(env, HEX_SREG_BADVA0, VA); + arch_set_system_reg(env, HEX_SREG_BADVA1, INVALID_BADVA); + SET_SSR_FIELD(env, SSR_V0, 1); + SET_SSR_FIELD(env, SSR_V1, 0); + SET_SSR_FIELD(env, SSR_BVS, 0); + } else if (slot == 1) { + arch_set_system_reg(env, HEX_SREG_BADVA0, INVALID_BADVA); + arch_set_system_reg(env, HEX_SREG_BADVA1, VA); + SET_SSR_FIELD(env, SSR_V0, 0); + SET_SSR_FIELD(env, SSR_V1, 1); + SET_SSR_FIELD(env, SSR_BVS, 1); + } else { + g_assert_not_reached(); + } +} + +static void raise_tlbmiss_exception(CPUState *cs, target_ulong VA, int slot, + MMUAccessType access_type) +{ + CPUHexagonState *env = cpu_env(cs); + + set_badva_regs(env, VA, slot, access_type); + + switch (access_type) { + case MMU_INST_FETCH: + cs->exception_index = HEX_EVENT_TLB_MISS_X; + if ((VA & ~TARGET_PAGE_MASK) == 0) { + env->cause_code = HEX_CAUSE_TLBMISSX_CAUSE_NEXTPAGE; + } else { + env->cause_code = HEX_CAUSE_TLBMISSX_CAUSE_NORMAL; + } + break; + case MMU_DATA_LOAD: + cs->exception_index = HEX_EVENT_TLB_MISS_RW; + env->cause_code = HEX_CAUSE_TLBMISSRW_CAUSE_READ; + break; + case MMU_DATA_STORE: + cs->exception_index = HEX_EVENT_TLB_MISS_RW; + env->cause_code = HEX_CAUSE_TLBMISSRW_CAUSE_WRITE; + break; + } +} + +static void raise_perm_exception(CPUState *cs, target_ulong VA, int slot, + MMUAccessType access_type, int32_t excp) +{ + CPUHexagonState *env = cpu_env(cs); + + set_badva_regs(env, VA, slot, access_type); + cs->exception_index = excp; +} + +static const char *access_type_names[] = { "MMU_DATA_LOAD ", "MMU_DATA_STORE", + "MMU_INST_FETCH" }; + +static const char *mmu_idx_names[] = { "MMU_USER_IDX", "MMU_GUEST_IDX", + "MMU_KERNEL_IDX" }; + +static bool hexagon_tlb_fill(CPUState *cs, vaddr address, int size, + MMUAccessType access_type, int mmu_idx, bool probe, + uintptr_t retaddr) +{ + CPUHexagonState *env = cpu_env(cs); + static int slot = 0 /* This is always zero for now */; + hwaddr phys; + int prot = 0; + int page_size = 0; + int32_t excp = 0; + bool ret = 0; + + qemu_log_mask( + CPU_LOG_MMU, + "%s: tid = 0x%x, pc = 0x%08" PRIx32 ", vaddr = 0x%08" VADDR_PRIx + ", size = %d, %s,\tprobe = %d, %s\n", + __func__, env->threadId, env->gpr[HEX_REG_PC], address, size, + access_type_names[access_type], probe, mmu_idx_names[mmu_idx]); + ret = get_physical_address(env, &phys, &prot, &page_size, &excp, address, + access_type, mmu_idx); + if (ret) { + if (!excp) { + find_qemu_subpage(&address, &phys, page_size); + tlb_set_page(cs, address, phys, prot, mmu_idx, TARGET_PAGE_SIZE); + return ret; + } else { + raise_perm_exception(cs, address, slot, access_type, excp); + do_raise_exception(env, cs->exception_index, env->gpr[HEX_REG_PC], + retaddr); + } + } + if (probe) { + return false; + } + raise_tlbmiss_exception(cs, address, slot, access_type); + do_raise_exception(env, cs->exception_index, env->gpr[HEX_REG_PC], retaddr); +} + static bool hexagon_cpu_exec_interrupt(CPUState *cs, int interrupt_request) { @@ -493,6 +623,7 @@ static const TCGCPUOps hexagon_tcg_ops = { .restore_state_to_opc = hexagon_restore_state_to_opc, #if !defined(CONFIG_USER_ONLY) .cpu_exec_interrupt = hexagon_cpu_exec_interrupt, + .tlb_fill = hexagon_tlb_fill, #endif /* !CONFIG_USER_ONLY */ }; From patchwork Sat Mar 1 05:28:26 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997356 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 9D4EDC282CD for ; Sat, 1 Mar 2025 05:35:28 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPo-0001LS-PB; Sat, 01 Mar 2025 00:29:33 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPm-0001Bb-Q7 for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:31 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPk-0008Pg-4R for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:30 -0500 Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5213MR3S026429 for ; Sat, 1 Mar 2025 05:29:17 GMT 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= mfB0EeKRtw26M5FNaa9ijXS/lZpdTLSQs/8nX4DbdCY=; b=LuXyX4XVPmwkz5Iq gObBoJlUew59cZysncXkHORZl/xNb0jmz6FLFHSh43rhHMdEgOCsPPMvs1oLBRu3 3/aEpb7vlvGNVsfH9UvpScxpWC2VWKV84DFN5Qs12muGmp04xqFe5Y2B5+ArKmOw qi8ynMZlyYt+etnQ4nbsDP/0B2x261XH4NldEX/DA2rEkEe8HCIwMW1QEIkF5N1k nxjnrGWEVuSy7aEgLLC9STnBLqxmWhTxyJivYWy58tcVCC9GXdS9G6LbRvXAUQTz h+PLixOuArNyaR94qIc8WkU2wYeQ6UIpFsObSI6wfXG/RIodAkC76AdCf8kXZzGT OPNyNw== 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 453t9905rg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:16 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-2fe8de1297eso5818599a91.0 for ; Fri, 28 Feb 2025 21:29:16 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806956; x=1741411756; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mfB0EeKRtw26M5FNaa9ijXS/lZpdTLSQs/8nX4DbdCY=; b=bF/17LT71NctG/Thy1CGZN1EjOCwAieZQCYlOXcuhn0M9Ab7hmEOkV/PH+lgNvf7TQ oIY/GBT8nYB/ZGbHgB4sR8XwV7d7UEzhpYBVklJ+XFAMKoT59uykynV1t1jIA1qrCMWv G5SWPQODY0HzenPeOl609yWZTFiYBmNp1hFMgwkfhYRg5onqUiwlGUnz5vUhoJksmntx ljCLkM6feoY1jaex7dYo7jhg0/023OxbS7chqrmbcBfERXiZr/bMLU8TxKpW1EsBW+vO VX7FNAcW1LYtmtTgJCiGy8NBXRivLUZI8Jf26P0xzUFDLHq9TW9FKlkfF4ivcxVI90Pu emLw== X-Gm-Message-State: AOJu0YwvIpZwC4LA6UF5Qm9vvniyUGjaBlQSRo3yTJe50fTFLoCM/vn6 L8breo43dbtYgxgInrOqiDpr1gS3QW1ocFEXVSLwsgMOeiT57lPzywYyNEw/fXSKm52rLXLjvwI T96nmJH3VY1QI7vqdrnSWdsesJomFINsvkvgfhaHNAAkiYWCtNlkxnswpcfVdOQ== X-Gm-Gg: ASbGncshRWVEX5b93FLVuBV5Gp1qIk9g1WxhLGflTR86UOtixAFC0m0tWPxF3Wd3izP rBJZLBEUqhm/uPlx59aOLiqGvx2MWqBfKu2R9tDmg6OSt1DTqM8xg+/mjR2GB4NMYZQPC4tp6vP Zi/5JORvmdxWRA/JXOk63VAmOij8yEh+vHDFmuBV5JmtYW5yOy1SJqYJo7/mNNFzJ1DUid7ibuE j44r7JmU2GXY5FyuVO3J44JuYDfiSLSDnB8tHo1ec7AHnF5/y3aJDbMy76hTCexAxZKR77+5aeR KZOzq9YGGtlUNhXpSJHS1gtSxWYSyp98IdBmrFeE4cjK83NdLnFiwIa6xBZ9cAAB X-Received: by 2002:a17:90a:ec86:b0:2fa:562c:c1cf with SMTP id 98e67ed59e1d1-2fea12683d9mr16744219a91.1.1740806955910; Fri, 28 Feb 2025 21:29:15 -0800 (PST) X-Google-Smtp-Source: AGHT+IEM0c/Va/LvuaBluLZn3X6d4Tfo6FzPCf1yn791KCrOYGs+bpLxRumfEdRTazkPs3CxSSPfEQ== X-Received: by 2002:a17:90a:ec86:b0:2fa:562c:c1cf with SMTP id 98e67ed59e1d1-2fea12683d9mr16744197a91.1.1740806955547; Fri, 28 Feb 2025 21:29:15 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:15 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 20/39] target/hexagon: Implement siad inst Date: Fri, 28 Feb 2025 21:28:26 -0800 Message-Id: <20250301052845.1012069-21-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: E4b8Znse9Ueex9CD00m0kjqaxp4mLEhX X-Proofpoint-GUID: E4b8Znse9Ueex9CD00m0kjqaxp4mLEhX X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 mlxlogscore=380 mlxscore=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 clxscore=1015 spamscore=0 adultscore=0 impostorscore=0 malwarescore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain siad is the 'Set interrupt auto disable' instruction. Signed-off-by: Brian Cain --- target/hexagon/op_helper.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index 687e7f45c2..118f112487 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -1378,7 +1378,15 @@ void HELPER(ciad)(CPUHexagonState *env, uint32_t mask) void HELPER(siad)(CPUHexagonState *env, uint32_t mask) { - g_assert_not_reached(); + uint32_t ipendad; + uint32_t iad; + + BQL_LOCK_GUARD(); + ipendad = READ_SREG(HEX_SREG_IPENDAD); + iad = fGET_FIELD(ipendad, IPENDAD_IAD); + fSET_FIELD(ipendad, IPENDAD_IAD, iad | mask); + arch_set_system_reg(env, HEX_SREG_IPENDAD, ipendad); + hex_interrupt_update(env); } void HELPER(swi)(CPUHexagonState *env, uint32_t mask) From patchwork Sat Mar 1 05:28:27 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997364 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 6EEB2C021B8 for ; Sat, 1 Mar 2025 05:36:55 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPq-0001XR-V4; Sat, 01 Mar 2025 00:29:35 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPo-0001L3-Ek for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:32 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPl-0008Pq-EF for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:32 -0500 Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5214m84I020607 for ; Sat, 1 Mar 2025 05:29:18 GMT 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= XD3ZkXuKWVFY8OJZhC6pipt+n+lknNaJrmpDhRmf/Ns=; b=bLbHpYCSRQdIYzGx 87GIDzJlz7dMCdmqUDzL2dohul2aMEtFhIiaczLXh8Qv7yE5f3qmU6t64lxmnlG5 +TDFRK/AarNGdpeZ1o6DUhvdkAojGsjo8lh+8zlzNR71ls7dIWpdRiWPblkjk+IY lmo8hgGZaK2vEQOVLIN09pOJ/dN68ai3VyA6DVju3CDcbgXX4zfdRoL0RiLWBN62 PxHzhgy3PTgEy8XckHe6ri9LSiGeIH+2iuqyncxopiOalJpbK7DzbMc2loh0hvCB UygpI6rGVH9kZBuKxkLoP3COzLYmzI4RJPwseFxd4nZNP4V1UfhgIqDAFCC87OnI fZq1lQ== 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 453uh701yd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:18 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-2fe8de1297eso5818619a91.0 for ; Fri, 28 Feb 2025 21:29:18 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806957; x=1741411757; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XD3ZkXuKWVFY8OJZhC6pipt+n+lknNaJrmpDhRmf/Ns=; b=BZ/s5ySpWx7qkelhPCcPs006Asz8m3qsRe1jF3E8T+LtkW8lz0rNhykOuXpCU78rxF 5TeMw11yXg+gJKbwPQ0gIMXaQ6IJfuoCIwm569v98UbOlAau5qNdLePMhmaQxjNJqp9u lSZKyo/skeuxTH348hfBPWbwHkn71mIi8DB0IYBM2X6dJyZi9qsDlwXD2VpocPx/faXI CHV8sQjAnByX4pSAUBUw7rH+CsJtinQ7eHue09ekrh4Tw0nYQfxVElckVFm/gSUSflTT MmrRp1oVuIHjskxrn+tTTAEAX+M2YA28XR/aIHoxCe+k5qaiDInx0zIKWYGecU3M7YBV XY3A== X-Gm-Message-State: AOJu0YxUOZmPiUMRRFcUvGFxew7lfVPEIg0fpDF40NcuF5BE/XvZNJx2 qYD8tMwepo/26i0RXUsOsCRGfFwAi335U77mIzy5Jqzt7nTuDaT7QCrW0TJVF5wR7FaCqN4rCMh NsgYxzXJUEqL6jfQYdLrYPaMEn+9BVqyl9WdKHW/y84MdhPe9jgN/i689N2xMMg== X-Gm-Gg: ASbGncubXwMKLxAGtXQtza+24X/MKPWATZ+/iwLFd1cvWv9QOQwAzVpbEEiyes5BvTE GFq7tUCPTjQBmSg3mO+tUKdrL9KhO8MCRRyWBLePmsXs8GTkUoSuTwDl2qSLSIUYPer1RseFpC6 DPly/9nRVoB6peMAf8J5NopFIITd+l44Te3+jWcjekxkLh4esxrMGYYA4/pZfoNjFhLFjUIY6XB biJpkdJiEEIsknxHXiRl+0sCLoOJCiuW18sfUuP4rtuLWmjsYpYjcCuiLJyKUWNe7RbqzHEgOfY 4MA98gYL5IfExhJVlN51AATdmJrGbJ2P7zoI8ilXyP7kgSKKyY/745KSctmtI//b X-Received: by 2002:a17:90b:3dc6:b0:2ef:ad48:7175 with SMTP id 98e67ed59e1d1-2fea1364c29mr17044885a91.15.1740806957148; Fri, 28 Feb 2025 21:29:17 -0800 (PST) X-Google-Smtp-Source: AGHT+IFwktZbLVBpkDXekZBn/IvL54R0bM8JJgcI3UnmqfiN6Cib5kgUwjuxwhtMGQRaPNloKLHezQ== X-Received: by 2002:a17:90b:3dc6:b0:2ef:ad48:7175 with SMTP id 98e67ed59e1d1-2fea1364c29mr17044856a91.15.1740806956781; Fri, 28 Feb 2025 21:29:16 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:16 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 21/39] target/hexagon: Implement hexagon_resume_threads() Date: Fri, 28 Feb 2025 21:28:27 -0800 Message-Id: <20250301052845.1012069-22-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: ouXOlrykH_dEXYcbcy6Cmj6Z8L5NcDDK X-Proofpoint-ORIG-GUID: ouXOlrykH_dEXYcbcy6Cmj6Z8L5NcDDK X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 suspectscore=0 lowpriorityscore=0 phishscore=0 impostorscore=0 clxscore=1015 priorityscore=1501 adultscore=0 mlxscore=0 spamscore=0 malwarescore=0 mlxlogscore=613 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/cpu.h | 1 + target/hexagon/cpu_helper.h | 1 + target/hexagon/cpu_helper.c | 37 +++++++++++++++++++++++++++++++++++++ target/hexagon/op_helper.c | 3 ++- 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/target/hexagon/cpu.h b/target/hexagon/cpu.h index d28c1249f3..baa48ec051 100644 --- a/target/hexagon/cpu.h +++ b/target/hexagon/cpu.h @@ -45,6 +45,7 @@ typedef struct CPUHexagonTLBContext CPUHexagonTLBContext; #define REG_WRITES_MAX 32 #define PRED_WRITES_MAX 5 /* 4 insns + endloop */ #define VSTORES_MAX 2 +#define THREADS_MAX 8 #define VECTOR_UNIT_MAX 8 #ifndef CONFIG_USER_ONLY diff --git a/target/hexagon/cpu_helper.h b/target/hexagon/cpu_helper.h index 1cdf4f8dd0..0723485e79 100644 --- a/target/hexagon/cpu_helper.h +++ b/target/hexagon/cpu_helper.h @@ -21,6 +21,7 @@ void hexagon_ssr_set_cause(CPUHexagonState *env, uint32_t cause); void hexagon_start_threads(CPUHexagonState *env, uint32_t mask); void hexagon_stop_thread(CPUHexagonState *env); void hexagon_wait_thread(CPUHexagonState *env, target_ulong PC); +void hexagon_resume_threads(CPUHexagonState *env, uint32_t mask); static inline void arch_set_thread_reg(CPUHexagonState *env, uint32_t reg, uint32_t val) diff --git a/target/hexagon/cpu_helper.c b/target/hexagon/cpu_helper.c index 1d9b9f8bef..cc1a896542 100644 --- a/target/hexagon/cpu_helper.c +++ b/target/hexagon/cpu_helper.c @@ -124,6 +124,43 @@ void hexagon_wait_thread(CPUHexagonState *env, target_ulong PC) cpu_interrupt(cs, CPU_INTERRUPT_HALT); } +static void hexagon_resume_thread(CPUHexagonState *env) +{ + CPUState *cs = env_cpu(env); + clear_wait_mode(env); + /* + * The wait instruction keeps the PC pointing to itself + * so that it has an opportunity to check for interrupts. + * + * When we come out of wait mode, adjust the PC to the + * next executable instruction. + */ + env->gpr[HEX_REG_PC] = env->wait_next_pc; + cs = env_cpu(env); + ASSERT_DIRECT_TO_GUEST_UNSET(env, cs->exception_index); + cs->halted = false; + cs->exception_index = HEX_EVENT_NONE; + qemu_cpu_kick(cs); +} + +void hexagon_resume_threads(CPUHexagonState *current_env, uint32_t mask) +{ + CPUState *cs; + CPUHexagonState *env; + + g_assert(bql_locked()); + CPU_FOREACH(cs) { + env = cpu_env(cs); + g_assert(env->threadId < THREADS_MAX); + if ((mask & (0x1 << env->threadId))) { + if (get_exe_mode(env) == HEX_EXE_MODE_WAIT) { + hexagon_resume_thread(env); + } + } + } +} + + static MMVector VRegs[VECTOR_UNIT_MAX][NUM_VREGS]; static MMQReg QRegs[VECTOR_UNIT_MAX][NUM_QREGS]; diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index 118f112487..0dce133d3a 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -1476,7 +1476,8 @@ void HELPER(wait)(CPUHexagonState *env, target_ulong PC) void HELPER(resume)(CPUHexagonState *env, uint32_t mask) { - g_assert_not_reached(); + BQL_LOCK_GUARD(); + hexagon_resume_threads(env, mask); } uint32_t HELPER(getimask)(CPUHexagonState *env, uint32_t tid) From patchwork Sat Mar 1 05:28:28 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997366 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 6C567C282CD for ; Sat, 1 Mar 2025 05:37:14 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPu-0001s0-1E; Sat, 01 Mar 2025 00:29:38 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPp-0001OR-HJ for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:33 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPm-0008Q6-Mt for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:33 -0500 Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5214oWeu023744 for ; Sat, 1 Mar 2025 05:29:19 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:content-type:date:from :in-reply-to:message-id:mime-version:references:subject:to; s= qcppdkim1; bh=K4hMa9etYnht/UIt5MoNU1NjLmKvrQLpfqZopeYY0W4=; b=DP TbWYQU5ATFhMMS0Gf0oWb5xdYg6Eno7zAy0tn3mWHdMMDOOKNUWfoYE0PEGIZEV0 O/Q4Yjbrzkh/MvxjNHcKauXz7dMJxKwjpB27Pmy8n+Lm391mr1qk/aRFQY8j9++X fnGXnFWmg0IEdzXAL4sIriLemiotOFfbg13pWyAox7WZjiygL7vpNY8lDdyvdHPY xLrZd1jOdQE2zIp7O6T2/03rLD97zaWdNTonn8vtGY26Z21A/zwBH7l+kF2n3DmB nJOsQiva9VFxag6+6Us4StC8Tf4/W8M0sC9I8QBsH6Yewe2TYlSIzPF6LY75/SQ+ aZixw7UCY3GTSsiIzFZw== 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 453uh701yf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:19 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-2fe86c01f5cso5848780a91.1 for ; Fri, 28 Feb 2025 21:29:19 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806958; x=1741411758; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=K4hMa9etYnht/UIt5MoNU1NjLmKvrQLpfqZopeYY0W4=; b=tocsL1kg9OAilvEQuflKvq/CSq5iB3U4WdfJ5t3xZYb3nxKkZfCKXI7e8bDW9CSdQw ienMSuFpwvMILA9J2fdutLPQlZYzIH8yuaWcebJGCiJtR4ZeKP5AdyT0lJ3PZv8T65R3 J3h7Vud3pbEwx2SSg695oxtNQ0RfYHEU1z44KkB/BqStZOye1u9ZN7hflc496gf+QYT4 OOrNlJ18fMr+9a9Vu/t8vKmDTmFeI7lsZb578E8tVOEHsuGc6X1EmHjjL7KsX6XSuRs9 7rgsXYQPqubvv/gyVHrGNHAaCOqUOEBr3B7cgBSjYgHEe2YkexqxYDOp7aOkv327eZp4 22Ww== X-Gm-Message-State: AOJu0YzQrIKE+Ee3H9h3Oe7WN+Ltpj0pqvkclFHtFAa5Bm69e3VPwZqz KgRu2GOlOqmH+/gHjDFH0OfF5M/o2/7Spa+s+x7doCFRnPfiGA3HfPMLszUOWmyF5brbxZgZqaY TR4E/JumkZ+8Y8vo4c/izKkKm1mt15Oq907gJxD2lI4Qyl+hWYRE68ZoAyyTW1Q== X-Gm-Gg: ASbGncsdK9ts3dB2kznH7BjBYrrEkg8ki0TYhQWVPL/PCoSc2F/7RXbsMeknEcvMP76 l+0VBmPwfHy9INL8pkLrLfQ5MRtrRRAoKt2fKc2oW7lQIpY45mHXE01G1KbYTYqfAthRDiiDeT2 uH01l+Bq1jIuKE78AW6WS2FpQO1avrY7I0VmFXeBVX4wjPEGBfLGpgvqXHkSV4of2/azZ11as6I 7cO6YlgytyRTuYMuPWiEblMEoIRpYQxkphIUBRyf53F4O01mjnbdwlfuwsIJMeKbIWuaZuideew eCg2V1rs4j0+n/Hnq/PaWDrXeyKYl8cdnquTT0heWQEvEajGJ/9UjTYDUePZo79U X-Received: by 2002:a17:90b:1b47:b0:2f6:d266:f45e with SMTP id 98e67ed59e1d1-2febab2ebdamr10549891a91.2.1740806958306; Fri, 28 Feb 2025 21:29:18 -0800 (PST) X-Google-Smtp-Source: AGHT+IGNLxAis/j2X+4pyCuzBzG7hlqW9sd6LE4kWFZsOUDUHj5PTdCfYqinkxFSvwEHzru5BCk71w== X-Received: by 2002:a17:90b:1b47:b0:2f6:d266:f45e with SMTP id 98e67ed59e1d1-2febab2ebdamr10549865a91.2.1740806957931; Fri, 28 Feb 2025 21:29:17 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:17 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 22/39] target/hexagon: Implement setprio, resched Date: Fri, 28 Feb 2025 21:28:28 -0800 Message-Id: <20250301052845.1012069-23-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: bHxdBlCsVcJ_Rv6NkS_IAvo7hlBmmnJR X-Proofpoint-ORIG-GUID: bHxdBlCsVcJ_Rv6NkS_IAvo7hlBmmnJR X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 suspectscore=0 lowpriorityscore=0 phishscore=0 impostorscore=0 clxscore=1015 priorityscore=1501 adultscore=0 mlxscore=0 spamscore=0 malwarescore=0 mlxlogscore=689 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain The hardware-assisted scheduler helps manage tasks on the run queue and interrupt steering. This instruction is defined in the Qualcomm Hexagon V71 Programmer's Reference Manual - https://docs.qualcomm.com/bundle/publicresource/80-N2040-51_REV_AB_Hexagon_V71_ProgrammerS_Reference_Manual.pdf See ยง11.9.2 SYSTEM MONITOR. Signed-off-by: Brian Cain --- target/hexagon/op_helper.c | 65 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index 0dce133d3a..d0dc4afac7 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -1465,6 +1465,57 @@ void HELPER(stop)(CPUHexagonState *env) hexagon_stop_thread(env); } +static inline QEMU_ALWAYS_INLINE void resched(CPUHexagonState *env) +{ + uint32_t schedcfg; + uint32_t schedcfg_en; + int int_number; + CPUState *cs; + uint32_t lowest_th_prio = 0; /* 0 is highest prio */ + uint32_t bestwait_reg; + uint32_t best_prio; + + BQL_LOCK_GUARD(); + qemu_log_mask(CPU_LOG_INT, "%s: check resched\n", __func__); + schedcfg = arch_get_system_reg(env, HEX_SREG_SCHEDCFG); + schedcfg_en = GET_FIELD(SCHEDCFG_EN, schedcfg); + int_number = GET_FIELD(SCHEDCFG_INTNO, schedcfg); + + if (!schedcfg_en) { + return; + } + + CPU_FOREACH(cs) { + HexagonCPU *thread = HEXAGON_CPU(cs); + CPUHexagonState *thread_env = &(thread->env); + uint32_t th_prio = GET_FIELD( + STID_PRIO, arch_get_system_reg(thread_env, HEX_SREG_STID)); + if (!hexagon_thread_is_enabled(thread_env)) { + continue; + } + + lowest_th_prio = (lowest_th_prio > th_prio) + ? lowest_th_prio + : th_prio; + } + + bestwait_reg = arch_get_system_reg(env, HEX_SREG_BESTWAIT); + best_prio = GET_FIELD(BESTWAIT_PRIO, bestwait_reg); + + /* + * If the lowest priority thread is lower priority than the + * value in the BESTWAIT register, we must raise the reschedule + * interrupt on the lowest priority thread. + */ + if (lowest_th_prio > best_prio) { + qemu_log_mask(CPU_LOG_INT, + "%s: raising resched int %d, cur PC 0x" TARGET_FMT_lx "\n", + __func__, int_number, arch_get_thread_reg(env, HEX_REG_PC)); + SET_SYSTEM_FIELD(env, HEX_SREG_BESTWAIT, BESTWAIT_PRIO, 0x1ff); + hex_raise_interrupts(env, 1 << int_number, CPU_INTERRUPT_SWI); + } +} + void HELPER(wait)(CPUHexagonState *env, target_ulong PC) { BQL_LOCK_GUARD(); @@ -1715,6 +1766,20 @@ uint64_t HELPER(greg_read_pair)(CPUHexagonState *env, uint32_t reg) void HELPER(setprio)(CPUHexagonState *env, uint32_t thread, uint32_t prio) { + CPUState *cs; + + BQL_LOCK_GUARD(); + CPU_FOREACH(cs) { + HexagonCPU *found_cpu = HEXAGON_CPU(cs); + CPUHexagonState *found_env = &found_cpu->env; + if (thread == found_env->threadId) { + SET_SYSTEM_FIELD(found_env, HEX_SREG_STID, STID_PRIO, prio); + qemu_log_mask(CPU_LOG_INT, "%s: tid %d prio = 0x%x\n", + __func__, found_env->threadId, prio); + resched(env); + return; + } + } g_assert_not_reached(); } From patchwork Sat Mar 1 05:28:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997355 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 39730C282CD for ; Sat, 1 Mar 2025 05:35:22 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPh-0000qn-S8; Sat, 01 Mar 2025 00:29:25 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPg-0000lg-8n for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:24 -0500 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 1toFPe-0008Qb-06 for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:23 -0500 Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5213KdAP007765 for ; Sat, 1 Mar 2025 05:29:21 GMT 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= aEbO2N+96JBiF+lGMW1iJBT2PdRrbp/yZBpYAS9XHXM=; b=nsYjVyVj/bcld9e7 HDCrn3/4JfRIDRfrfiylx3cGV8hpitHcd7ZXylvIin94ZXDVOI0nrMvkVKtpMkri qTVXwObpum0UD+1jBc8zfLlE1RO7KuSZoaFWK/EaVqR4Ivgh03e/2ND+z4N1bE3E GWkK0LERAj5iW78+KVBwUbLMybIfr2qVpZ9EgV3HvWOMJbV6vLkp5avO3NdZKPKv SOaDYQLmoiqj0tu8Vs3EeDnbwd7AVmUUZF2G+iqhP/iWqHLsmPngoTRN6z5ABfQW /s7cF8jl4ki3yQVe2HmKDTyqVIBRzwdsb94Z152C3XO7dPXK5W7WHoRhtHqfAzo3 uirAbw== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 453t88r6cv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:21 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2234bf13b47so53077335ad.0 for ; Fri, 28 Feb 2025 21:29:20 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806959; x=1741411759; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=aEbO2N+96JBiF+lGMW1iJBT2PdRrbp/yZBpYAS9XHXM=; b=GxQmjQ1dyyjk4106nBCwnf01NUbkp2zRhMXmqb/7o9ORsyh3gVfZ9lNdrw0Q3B83sC 58WOLD4Ft3gGDqds24I39QlpjpvTutasKmreRJ1ZG36xFUiu7uCB9UFvNZwX/o3BrNu/ A/5A17HPBijoc6VzmFftkU0YfzTWUb8CO8cXlZErBVwhANC7V+ooZ+mo6vMw5iRIoSka xclw/nAxd3/IOoUhXmOsFZibtHvVqpCI8KFXq7YypWC7gAoZrzKOhrc/n2abuFRP7Wlb bLolf90MyNh/yLWfUYN7NsJEMhc8Ynr8p2edw2m0+6KOmZedas8HrBPt+7uxWvEf082g VaUw== X-Gm-Message-State: AOJu0YxSVyUEYNMXHyZKR9Lt2SJ0tiNr7AR7eTU7gxVFPAXwfPHH8DPv IaB2Lf/kBZ5tYSdKAWtUkjvCsEqw2JuDKKmRib/yKc9nid1co09ZHvNxfXftGIwgv/UY8zAp1Be B+c9lG6sCuRu7mqswQ0OtoMDU5YhuXtjRrYk4V6cPbUTu2JCpMsFZXBaMOOVL9Q== X-Gm-Gg: ASbGncsfU54m1Bv+fIBNYb6cxhbAg6YyBHR+557Ga8ISWR+BAdiVoKFdd08ZAEcD5oG gHBekI9mVhEGYSSqxyPW5bCF3EFqx100Oibzttr3Z/1LIGd3AV/T55CXe0IhqsrQvCbAEoL/hvR yylpaVPHIfxcEzeJ7wxlQ0vPT5d9vOKzVUh6GPO6uz4z/8ilMVUFlzOIRknT3EYeNfsIBgK3i1K TFRc9KARVupue+EEPJx0H8bfoRA7MmhkcXSSyoXLIButQBhrUm4zFrHwCbDneLo/AuPCtx6bAwE t1GS5SyJICgM7DYx5fwrCXXFCMxRXKYOd3Ln2Rtr8fF63GZ/74tzeKD7gzFclDr9 X-Received: by 2002:a17:902:ec82:b0:221:7b4a:4773 with SMTP id d9443c01a7336-22369244a5dmr81399985ad.51.1740806959527; Fri, 28 Feb 2025 21:29:19 -0800 (PST) X-Google-Smtp-Source: AGHT+IHA7S6Q7OXHX+VEOYWpDXwxRSdKc2CX6EyLrK0kP7dDJgi81kxd13AaQ+ytE94AIHmz4tshNQ== X-Received: by 2002:a17:902:ec82:b0:221:7b4a:4773 with SMTP id d9443c01a7336-22369244a5dmr81399885ad.51.1740806959174; Fri, 28 Feb 2025 21:29:19 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:18 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 23/39] target/hexagon: Add sysemu_ops, cpu_get_phys_page_debug() Date: Fri, 28 Feb 2025 21:28:29 -0800 Message-Id: <20250301052845.1012069-24-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: rM8PLCMDZeds1ZjvhRUb9evyjKEq6Jwt X-Proofpoint-GUID: rM8PLCMDZeds1ZjvhRUb9evyjKEq6Jwt X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 suspectscore=0 impostorscore=0 spamscore=0 phishscore=0 lowpriorityscore=0 malwarescore=0 priorityscore=1501 mlxlogscore=999 mlxscore=0 clxscore=1015 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 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: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/cpu.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index a548d575a7..9f4cfd03c4 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -489,6 +489,24 @@ static void find_qemu_subpage(vaddr *addr, hwaddr *phys, int page_size) *phys += offset; } +static hwaddr hexagon_cpu_get_phys_page_debug(CPUState *cs, vaddr addr) +{ + CPUHexagonState *env = cpu_env(cs); + hwaddr phys_addr; + int prot; + int page_size = 0; + int32_t excp = 0; + int mmu_idx = MMU_KERNEL_IDX; + + if (get_physical_address(env, &phys_addr, &prot, &page_size, &excp, + addr, 0, mmu_idx)) { + find_qemu_subpage(&addr, &phys_addr, page_size); + return phys_addr; + } + + return -1; +} + #define INVALID_BADVA 0xbadabada @@ -595,6 +613,12 @@ static bool hexagon_tlb_fill(CPUState *cs, vaddr address, int size, } +#include "hw/core/sysemu-cpu-ops.h" + +static const struct SysemuCPUOps hexagon_sysemu_ops = { + .get_phys_page_debug = hexagon_cpu_get_phys_page_debug, +}; + static bool hexagon_cpu_exec_interrupt(CPUState *cs, int interrupt_request) { CPUHexagonState *env = cpu_env(cs); @@ -624,6 +648,8 @@ static const TCGCPUOps hexagon_tcg_ops = { #if !defined(CONFIG_USER_ONLY) .cpu_exec_interrupt = hexagon_cpu_exec_interrupt, .tlb_fill = hexagon_tlb_fill, + .cpu_exec_halt = hexagon_cpu_has_work, + .do_interrupt = hexagon_cpu_do_interrupt, #endif /* !CONFIG_USER_ONLY */ }; @@ -653,9 +679,12 @@ static void hexagon_cpu_class_init(ObjectClass *c, void *data) cc->gdb_core_xml_file = "hexagon-core.xml"; cc->disas_set_info = hexagon_cpu_disas_set_info; #ifndef CONFIG_USER_ONLY + cc->sysemu_ops = &hexagon_sysemu_ops; dc->vmsd = &vmstate_hexagon_cpu; #endif +#ifdef CONFIG_TCG cc->tcg_ops = &hexagon_tcg_ops; +#endif } #ifndef CONFIG_USER_ONLY From patchwork Sat Mar 1 05:28:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997351 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id F0C46C021B8 for ; Sat, 1 Mar 2025 05:34:59 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPx-0002EM-5B; Sat, 01 Mar 2025 00:29:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPr-0001aA-3I for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:35 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPp-0008Qn-5R for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:34 -0500 Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5214CEaa027852 for ; Sat, 1 Mar 2025 05:29:22 GMT 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= H857qbuUxi9yfqPXPrWO3tCRpfvSH4Zc9V6gPOS37EU=; b=PNB/rN2FCqgR2zAI +Ca7wqNsyFAGup+iD6He7lFLgkE6jjtM/H8wqcP8Ii3+bQw75reFTtF3pzi7fh+d Cyi4CeWsFXlTM+aTc8k9n0S3NuZFhdbHlfiKwp+mj6bGcz+Xr5xsPbpPGBKkGNOy f6yid4OrrT+gJ8zzMOj7MUMeJ8kD5OlIEKH3fq3vIKEAxBpA8Oy/Y414/fVfiebu p7oSfv89cDPO5cr6MHXTMts029qhNEnEyqkNElj6wsmmpRpMEC3L2HQwwBOUK5vT 8MYQBbcpPUzOK4UxSQTzLaa9BBRFmq/oZm7iiv57Md3i9MH5zuaIy9Ys5pNR5x8V qjFbDQ== 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 453u0d038h-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:21 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-2fe8c5dbdb0so5817655a91.3 for ; Fri, 28 Feb 2025 21:29:21 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806961; x=1741411761; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=H857qbuUxi9yfqPXPrWO3tCRpfvSH4Zc9V6gPOS37EU=; b=pBtjLjQy2Qom2/STd2C6r9ZiLaOT7/OlljklV15BpUFfcgtfFSGr1a6gX8Ru+VsEJa HFPeVltarT+Lb2ZMT9iKC557HxUG94cN/+M7vshxGZTStSJGVH7S5PX9xdU1CeRJZZcp 9AHe/dw2953DM6Ncmm/E8f/D4x68agtA7jmAiZmPl6LUncngJVSUUvXYhrm+3Tr1pWeI 7pOBn0IRDZ9mefKBYPorJCkey7ZpI3euXWGD+lfz3zZKNhZEgvkVycgJVB3A9ejVE/Hi XEp3vIfWt0p2kf/ny27NWYYL56uMDTtc3v1dafHcwCBs2GcxUS8/+fUwqni3qL1KfmrR ciSw== X-Gm-Message-State: AOJu0Yxa3f6gHHV7gVxcC/3KMRJNKmiJ7xE2jnh398Xy3Ef+NJtuto+/ rrDVFJQKJLWN93WEwnHEDhbGTNuj1S/1lsScs8kQXBIK2mUiNMr2gw+r8StFtbdC7jP0lktx+1a uZvDk3fBA232JAN7PRcST0eA1L/Vy2xRDx3BcXp88dhD09VI+h9XX9BBRXbeSGw== X-Gm-Gg: ASbGncu/hL8xDhhXkSmbhWZoIjw03D72EXhGOudV7OCPF0i9UDUJzysykbXjfulxxfl b6e/ktkG7JzgxeSJI+3YoV8zFbVCECKWMik8wl1ioHDnLFODboGWn0s57DmdfNtNMiFAzKPSOSG vPpZheJeufjxI52oKE3MxIDYP82EytvQtjiKWgv8kqvczL2Uu3bKgP/G/oBSWV25IldtBNmgN19 9e2lWm3l23uKxmeAjIArJ5F6+iBgOMaFX8sHzJGx4oUOn8r1QkOG0LPO0VLniAPFpFOovCWP0jS qu6RBOYw2pxHiZt9RJS8Xk0ZKpxvQdGe46kcGOo5HaoM7EZ7LGLxzG94b1GgNpD/ X-Received: by 2002:a17:90b:3909:b0:2fe:9783:afd3 with SMTP id 98e67ed59e1d1-2febab2ffa0mr9979264a91.2.1740806960779; Fri, 28 Feb 2025 21:29:20 -0800 (PST) X-Google-Smtp-Source: AGHT+IF5TF1psYqAHFrZpNI4NP5/ojcyLLCU+kfCkCTtIwgLP8v05Pyl21F//sRwzszPWqduUB9bjQ== X-Received: by 2002:a17:90b:3909:b0:2fe:9783:afd3 with SMTP id 98e67ed59e1d1-2febab2ffa0mr9979238a91.2.1740806960372; Fri, 28 Feb 2025 21:29:20 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:20 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 24/39] target/hexagon: Add exec-start-addr prop Date: Fri, 28 Feb 2025 21:28:30 -0800 Message-Id: <20250301052845.1012069-25-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: 5hQ9vQZI9Gucm6MXCdCUFo9hMDmS1ZxV X-Proofpoint-GUID: 5hQ9vQZI9Gucm6MXCdCUFo9hMDmS1ZxV X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 adultscore=0 phishscore=0 malwarescore=0 spamscore=0 mlxscore=0 suspectscore=0 clxscore=1015 bulkscore=0 priorityscore=1501 mlxlogscore=999 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/cpu.h | 1 + target/hexagon/cpu.c | 7 ++----- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/target/hexagon/cpu.h b/target/hexagon/cpu.h index baa48ec051..4667a1f748 100644 --- a/target/hexagon/cpu.h +++ b/target/hexagon/cpu.h @@ -194,6 +194,7 @@ struct ArchCPU { uint32_t num_tlbs; uint32_t l2vic_base_addr; uint32_t hvx_contexts; + uint32_t boot_addr; #endif }; diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index 9f4cfd03c4..7afdcbf9d0 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -66,6 +66,7 @@ static const Property hexagon_cpu_properties[] = { DEFINE_PROP_UINT32("l2vic-base-addr", HexagonCPU, l2vic_base_addr, 0xffffffffULL), DEFINE_PROP_UINT32("hvx-contexts", HexagonCPU, hvx_contexts, 0), + DEFINE_PROP_UINT32("exec-start-addr", HexagonCPU, boot_addr, 0xffffffffULL), #endif DEFINE_PROP_BOOL("lldb-compat", HexagonCPU, lldb_compat, false), DEFINE_PROP_UNSIGNED("lldb-stack-adjust", HexagonCPU, lldb_stack_adjust, 0, @@ -362,8 +363,6 @@ static void hexagon_cpu_reset_hold(Object *obj, ResetType type) mmu_reset(env); arch_set_system_reg(env, HEX_SREG_HTID, cs->cpu_index); hexagon_cpu_soft_reset(env); - memset(env->t_sreg, 0, sizeof(target_ulong) * NUM_SREGS); - memset(env->greg, 0, sizeof(target_ulong) * NUM_GREGS); env->threadId = cs->cpu_index; env->tlb_lock_state = HEX_LOCK_UNLOCKED; env->k0_lock_state = HEX_LOCK_UNLOCKED; @@ -372,6 +371,7 @@ static void hexagon_cpu_reset_hold(Object *obj, ResetType type) env->next_PC = 0; env->wait_next_pc = 0; env->cause_code = -1; + arch_set_thread_reg(env, HEX_REG_PC, cpu->boot_addr); #endif } @@ -414,9 +414,6 @@ static void hexagon_cpu_realize(DeviceState *dev, Error **errp) #ifndef CONFIG_USER_ONLY CPUHexagonState *env = cpu_env(cs); hex_mmu_realize(env); -#endif - cpu_reset(cs); -#ifndef CONFIG_USER_ONLY if (cs->cpu_index == 0) { env->g_sreg = g_new0(target_ulong, NUM_SREGS); env->g_pcycle_base = g_malloc0(sizeof(*env->g_pcycle_base)); From patchwork Sat Mar 1 05:28:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997323 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 40D0FC021B8 for ; Sat, 1 Mar 2025 05:30:22 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPk-0000yv-Aw; Sat, 01 Mar 2025 00:29:28 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPi-0000sj-9W for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:26 -0500 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 1toFPg-0008RP-DR for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:25 -0500 Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5213PcDB006204 for ; Sat, 1 Mar 2025 05:29:23 GMT 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= J9lT4pD85JDzd+C9/1NMDo+QZ9q6Lc2vvZEMBtVYzLI=; b=WUfhUUK4d9ICVGst Fo6kzGDkYElxqPT/8ikbIB9V3WrCdqln/Duo2yjl+PNdT6MnyLWtrBK9BR4C+FVh FQIPZnX/vrsTPHrXx3WQmra5o6jHnOpDhQnBBeG28+BPV8d7C+2EGswixNmy/Zkl VDZD5R2VBa/fJZcbl/JpWG8Fk2+Aq6jmjXIgIin3IamUPSQ6+A11eAKQthXHwkzP hArgnI/E8qU9LrM1bKNCILThT4+AnHw/Yf3t8eavREG+0N2rX8s7wPvbh/3gSgwG rw2e65xsMXCfG2R5EBExz1N8nYOXtTqMZAyyqxIklUOUeNBLDdOZctWOfBTQ9nxC NaYcOQ== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 453tas85tm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:23 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-22366bcf24bso31598025ad.1 for ; Fri, 28 Feb 2025 21:29:23 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806962; x=1741411762; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=J9lT4pD85JDzd+C9/1NMDo+QZ9q6Lc2vvZEMBtVYzLI=; b=jpfi+iZTijHmhev+7a8Ri/oQNwKo+lcKEmNhIdxosFczTdmeCb6VQmw+7IQvXnFH0n LlrFRZ6upbH961PGLR0fpkDPHT2QDSFPBD3hbZkIOrOmngMvch/EPeFiM+kYDeWktZ/m +nKk6VlCrqBt5uGD9T68N7DWMyEAXnUtgg/Wy1xqNI/v0E6wlUtdc+LHLF72LEkDVJO4 gx7Zz7zsRoWV4prgXRTpn0kAzsJ5sGkixo945kDkQjq++ItoDYWtCUoA0EpbC0T24cIJ KZz48FkQUAAGXD+GzMDfW9JIfbbl2fMRrIQnQ+ulOxUaCGBh2dyaST64q9SnLGta7JWS 58eQ== X-Gm-Message-State: AOJu0YzomznfJQaTyDHHD905cClS055JC0qy0y3r7CWhninJ7H+yKFZ2 FvV5e1whXP6J2WTN4o0/MeFFvXcOciHxrEF7WSzcA6AatMsnpe9QEYGjfY1qEebsvPKOJI6KMxq E0zfODrr4bEpzwNUdXZphXbnr9H5yIdy7aU99eFp/jJ+IFAo9zWv25LKP+Y3zJQ== X-Gm-Gg: ASbGncs65FnKz+wuGusJYfl4I+OPZQ5Y4aT0eg0M6hXk2WYH6ehOG6UKsFPgYB2r2L+ 8jWoYWkcsDmFzMxl0XfZsx98TMC1b2Kwob1ktpGYv8FNRWICyf7t7/QP0+nlIudjq7uWWGgCuJ+ 3XB4uGNGzz6zfd1ytDrdMcjMojG+Qzf8rNnUpcVKi1FgNsBrurrZFrRM+EX3/fRI+mWFQOm1fue lcLMopmYGhWhPciNihZVF0Wi+K9zBK52NcAxw2y1camBn9F35SPcBF6+mh1pqfPR6F2CAOcU02i GeJuavMvgk/jvjm+IBGY/lb/LvfN/FxZuhBeuhEktKsdXEQ1olDfCSXGxKdmnDhH X-Received: by 2002:a17:903:905:b0:223:6657:5001 with SMTP id d9443c01a7336-2236920c423mr83888925ad.40.1740806962000; Fri, 28 Feb 2025 21:29:22 -0800 (PST) X-Google-Smtp-Source: AGHT+IE5lCZSLTPI42RvPVhrPq3VAUJHGAtR4zAGCz7a6RTBsB/jUFDcNK6lqafiW2F+h5FczyRPZg== X-Received: by 2002:a17:903:905:b0:223:6657:5001 with SMTP id d9443c01a7336-2236920c423mr83888735ad.40.1740806961630; Fri, 28 Feb 2025 21:29:21 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:21 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 25/39] target/hexagon: Add hexagon_cpu_mmu_index() Date: Fri, 28 Feb 2025 21:28:31 -0800 Message-Id: <20250301052845.1012069-26-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: xXb1Kdbp4E4rTXB-xQUCjA0xGB7q9ETv X-Proofpoint-ORIG-GUID: xXb1Kdbp4E4rTXB-xQUCjA0xGB7q9ETv X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 mlxlogscore=954 spamscore=0 phishscore=0 mlxscore=0 priorityscore=1501 bulkscore=0 lowpriorityscore=0 malwarescore=0 impostorscore=0 adultscore=0 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 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: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/cpu_helper.h | 1 + target/hexagon/cpu.c | 23 +++++++++++++++++++++ target/hexagon/cpu_helper.c | 41 +++++++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+) diff --git a/target/hexagon/cpu_helper.h b/target/hexagon/cpu_helper.h index 0723485e79..0a5134204f 100644 --- a/target/hexagon/cpu_helper.h +++ b/target/hexagon/cpu_helper.h @@ -15,6 +15,7 @@ void hexagon_set_sys_pcycle_count(CPUHexagonState *env, uint64_t); void hexagon_set_sys_pcycle_count_low(CPUHexagonState *env, uint32_t); void hexagon_set_sys_pcycle_count_high(CPUHexagonState *env, uint32_t); void hexagon_modify_ssr(CPUHexagonState *env, uint32_t new, uint32_t old); +int get_cpu_mode(CPUHexagonState *env); int get_exe_mode(CPUHexagonState *env); void clear_wait_mode(CPUHexagonState *env); void hexagon_ssr_set_cause(CPUHexagonState *env, uint32_t cause); diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index 7afdcbf9d0..c7c470b099 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -650,6 +650,28 @@ static const TCGCPUOps hexagon_tcg_ops = { #endif /* !CONFIG_USER_ONLY */ }; +static int hexagon_cpu_mmu_index(CPUState *cs, bool ifetch) +{ +#ifndef CONFIG_USER_ONLY + BQL_LOCK_GUARD(); + CPUHexagonState *env = cpu_env(cs); + uint32_t syscfg = arch_get_system_reg(env, HEX_SREG_SYSCFG); + uint8_t mmuen = GET_SYSCFG_FIELD(SYSCFG_MMUEN, syscfg); + if (!mmuen) { + return MMU_KERNEL_IDX; + } + + int cpu_mode = get_cpu_mode(env); + if (cpu_mode == HEX_CPU_MODE_MONITOR) { + return MMU_KERNEL_IDX; + } else if (cpu_mode == HEX_CPU_MODE_GUEST) { + return MMU_GUEST_IDX; + } +#endif + + return MMU_USER_IDX; +} + static void hexagon_cpu_class_init(ObjectClass *c, void *data) { @@ -667,6 +689,7 @@ static void hexagon_cpu_class_init(ObjectClass *c, void *data) cc->class_by_name = hexagon_cpu_class_by_name; cc->has_work = hexagon_cpu_has_work; + cc->mmu_index = hexagon_cpu_mmu_index; cc->dump_state = hexagon_dump_state; cc->set_pc = hexagon_cpu_set_pc; cc->get_pc = hexagon_cpu_get_pc; diff --git a/target/hexagon/cpu_helper.c b/target/hexagon/cpu_helper.c index cc1a896542..9c44cb7950 100644 --- a/target/hexagon/cpu_helper.c +++ b/target/hexagon/cpu_helper.c @@ -394,4 +394,45 @@ void hexagon_stop_thread(CPUHexagonState *env) } } +static int sys_in_monitor_mode_ssr(uint32_t ssr) +{ + if ((GET_SSR_FIELD(SSR_EX, ssr) != 0) || + ((GET_SSR_FIELD(SSR_EX, ssr) == 0) && (GET_SSR_FIELD(SSR_UM, ssr) == 0))) + return 1; + return 0; +} + +static int sys_in_guest_mode_ssr(uint32_t ssr) +{ + if ((GET_SSR_FIELD(SSR_EX, ssr) == 0) && + (GET_SSR_FIELD(SSR_UM, ssr) != 0) && + (GET_SSR_FIELD(SSR_GM, ssr) != 0)) + return 1; + return 0; +} + +static int sys_in_user_mode_ssr(uint32_t ssr) +{ + if ((GET_SSR_FIELD(SSR_EX, ssr) == 0) && + (GET_SSR_FIELD(SSR_UM, ssr) != 0) && + (GET_SSR_FIELD(SSR_GM, ssr) == 0)) + return 1; + return 0; +} + +int get_cpu_mode(CPUHexagonState *env) + +{ + uint32_t ssr = arch_get_system_reg(env, HEX_SREG_SSR); + + if (sys_in_monitor_mode_ssr(ssr)) { + return HEX_CPU_MODE_MONITOR; + } else if (sys_in_guest_mode_ssr(ssr)) { + return HEX_CPU_MODE_GUEST; + } else if (sys_in_user_mode_ssr(ssr)) { + return HEX_CPU_MODE_USER; + } + return HEX_CPU_MODE_MONITOR; +} + #endif From patchwork Sat Mar 1 05:28:32 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997350 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id BAA65C282D0 for ; Sat, 1 Mar 2025 05:34:48 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFQ0-0002Ut-LX; Sat, 01 Mar 2025 00:29:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPl-00016H-Hg for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:29 -0500 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 1toFPi-0008Ry-1z for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:29 -0500 Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5213IvGr015427 for ; Sat, 1 Mar 2025 05:29:25 GMT 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= Y+a+2AedEA2XxZaaxbRakRyUJKJ5FYHgnftitYsRAC0=; b=QVXXmS2Y8Vsxn+1y Ext2ja8NuqFkTzvWH6NXrQZUVmvxNKvnE3MR7E5eIBqUfK9NOisscvRQO86hUwQr ksmzWPjUl/ob02/1SqpAzhyK5BSJiruH/k8MAQr6mrVsiihQ+VdT6nBmZnp16PSU JMqrRN6MYmgCpt7Jjq5A+wsoIztEigYVVPeMGXbLH932XV5X4lPMu5UhRUvlARpL CXZUfxdcdA8J8P53530Mi8+zPz7dTVZYP9jvsgVEhDSaBCLhANfNVHokQGrlLO4U ZBZwiH+X1w6ImIw71Y/4jDh2xuo6kMPhNhKfhYNMx9YAn387NlVELdCldox9MD9p TRugxQ== 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 453t7hr6ak-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:25 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-2feb47c6757so3929027a91.3 for ; Fri, 28 Feb 2025 21:29:24 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806963; x=1741411763; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Y+a+2AedEA2XxZaaxbRakRyUJKJ5FYHgnftitYsRAC0=; b=PYiKGNyR5bhw1o155yOBvP27+qVpee8qdXYgOOqniUDPA1ATJ+0SVWOikg0+BNLVyO O9lhAoXxoaEZa297KeqBjsxepSkbCtmnwXCvWo/91Mc3CyNs42A86I/wD5spzYipwd6u uzJbsI0m0nW3vwqUp4hx8JfBFurjVZWr7uoy2UgklbJ1IDtAs79bh65qqo2wqNIYQ9Rp xfWeA77tGfO1sUlMw2RTHWxCiXuXz9sejsVgKTbWbwsSanaGvxO5DyQ6cUsUtCpEhPi7 ojKSiJnvnBjw7M2ysXPq8HKTAvuDip802ul2lcCdQDPVQJbXXjECWcEe2U1yXsZjitvK zttw== X-Gm-Message-State: AOJu0Yx0m3OmFgGmUb/HIjWHZ82MYz43kAWv9Nv1u/mHgmaLWgDrg42u TOP7A7IbKURcpu7PwOVnj2tB169KdR0bf5niM1DF0ge8Tl6WfeOM9ei9bhL63gnIm8SIJ8pTcre Vl0ANTzfDIJzRWlGjkOCMsc9PkIfu62hBe1kky2r73LE2/7QS4eMYVPid51QgwA== X-Gm-Gg: ASbGncspGnBz829clO/3wXKtQuAFXJW0XNu8gWlI+Yam2heibFmTowbyk+dQERYEQsv eVuNxsqfQDVfhm8L8gpXb8a51wGYXTMFSS5kF122uIPdmISpSGbmqHUgbxxxN7sjC7i0qrzsK/Y 9pqQFhfYDEMUgKL6Aidn4d0JcruF3kKnZBGKvWec5qBYg/yjeEKGSI/EJeaJ5Rg1yyyndjNjCdk xFvWE2EuDxCvhIBHVYijAlHSSpcETXEqG1xdjxfnvdtjncmJcn09YLPB25hxztVTcYhpI6qamqf xM+xiJOVZ8pjxbDqwgRRtveIDyGvAlMBtfJLKs7ZrC/XV/5wsqyiTxdqTJwSpVRQ X-Received: by 2002:a17:90b:3a4c:b0:2f6:dcc9:38e0 with SMTP id 98e67ed59e1d1-2febaa861e5mr11828956a91.0.1740806963562; Fri, 28 Feb 2025 21:29:23 -0800 (PST) X-Google-Smtp-Source: AGHT+IEo+xIgb+Iz3sU57hGaoi7aZpzHL51HdemA0+IhvYyk2IebbSHfqmq/ioyBfwNzCUzlOsDMlA== X-Received: by 2002:a17:90b:3a4c:b0:2f6:dcc9:38e0 with SMTP id 98e67ed59e1d1-2febaa861e5mr11828928a91.0.1740806963221; Fri, 28 Feb 2025 21:29:23 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:22 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 26/39] target/hexagon: Decode trap1, rte as COF Date: Fri, 28 Feb 2025 21:28:32 -0800 Message-Id: <20250301052845.1012069-27-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: aKs0gtU1ZPY3FQQTS0tIJmpq2pg3ygnF X-Proofpoint-ORIG-GUID: aKs0gtU1ZPY3FQQTS0tIJmpq2pg3ygnF X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 impostorscore=0 phishscore=0 spamscore=0 malwarescore=0 adultscore=0 suspectscore=0 mlxlogscore=658 clxscore=1015 mlxscore=0 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 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: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Also: handle rte instructions at the end of the packet. Signed-off-by: Brian Cain --- target/hexagon/decode.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/target/hexagon/decode.c b/target/hexagon/decode.c index 23deba2426..5d0beeeaf2 100644 --- a/target/hexagon/decode.c +++ b/target/hexagon/decode.c @@ -193,6 +193,8 @@ static bool decode_opcode_can_jump(int opcode) if ((GET_ATTRIB(opcode, A_JUMP)) || (GET_ATTRIB(opcode, A_CALL)) || (opcode == J2_trap0) || + (opcode == J2_trap1) || + (opcode == J2_rte) || (opcode == J2_pause)) { /* Exception to A_JUMP attribute */ if (opcode == J4_hintjumpr) { @@ -371,6 +373,18 @@ static void decode_shuffle_for_execution(Packet *packet) break; } } + /* + * And at the very very very end, move any RTE's, since they update + * user/supervisor mode. + */ +#if !defined(CONFIG_USER_ONLY) + for (i = 0; i < last_insn; i++) { + if (packet->insn[i].opcode == J2_rte) { + decode_send_insn_to(packet, i, last_insn); + break; + } + } +#endif } static void From patchwork Sat Mar 1 05:28:33 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997339 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 61F7CC282D0 for ; Sat, 1 Mar 2025 05:33:58 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFQD-0003qb-AY; Sat, 01 Mar 2025 00:29:57 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPv-00025F-Dr for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:39 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPt-0008SB-Jg for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:39 -0500 Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5213wWQ9011120 for ; Sat, 1 Mar 2025 05:29:26 GMT 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= SkuWazXNHguEaUmQjW1R53o9qQ6kemRMVlsuPBslfNY=; b=hdBXSptjy/6ewChc y56fSzrxbehAiwSGin2Stdbox0u6mRJHVu1gfaKhERHHoP10X/fOkIN/d1OsUphF QF7g1ji6z4uM7iWuG8XaIxnJB/aQ4qYQMhm2uPWMdIHtWP1zXseFigSUfr7BIWA0 QaKt47m8bLsiW219VVdNbB/xn9asi40E3i1rKviiM4O9SM6cAPQuNk6sGiwmWs66 9Js53BNVFEQA8arKJTV3Rdso+jubEtv7DQ+TjFlDfvSJsiOC7Js/0DiTYhp8saMf OvkRVBbL+vMwOyiUjG8K4IRtpQ1AWNhM5OwD0DbrowV7wAbn2M1fCF2Ug2FwcIHl kQPpxQ== Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 453t6k06j7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:26 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2234c09240fso52033665ad.0 for ; Fri, 28 Feb 2025 21:29:26 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806965; x=1741411765; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SkuWazXNHguEaUmQjW1R53o9qQ6kemRMVlsuPBslfNY=; b=oU1rt+JTFzHJNvLADWMYPNDeZKgIhQYNHna2JVcfEpN7Snlde33fFEyZZrkRTOuCs2 w2NmOMZHn40933Kg8S2B8vRffRdX1Qc+bkCsIQDjQlOVUpgos+ElvEclbwfE1CgRJdo3 wtbFvE0HgbQKK7XH7QMH5YqG6s57FaQBje4/Idtz1NhEioUw65loYsyzn6rzahGGJ1qo M59N6PpLbrypAK38e5K89E0Zeu5Z2vsK+tD9Xn6A+js3TPj91It/aa6l6aczVxfHpnnw ph82AQdTQrsNH9jCbQHCUs1zTRjGet09ZcJkLl986gNMZJRNTOaY2V6cyFaALLtkLCDh tlgw== X-Gm-Message-State: AOJu0YyobVJKeAkvTr3ThNzV9JBcF2azT3Uw9Q6JdzEm7PT7Q64deWcP NWEC0MddgOtxERPvUsTS8S9yHfypFWNNhrA1w/g5TXE6tELaAr0dPVa0KYNAOdze1mfrbjPZZ10 ZHKpwQGjOmFsK7OF/hm4osw1bab0fiGYvg7+uWOk+mzEGgH4i6//aolovigsYDw== X-Gm-Gg: ASbGncvzyyJe8NpHDUV2n4ylgOhXd+hj5Dh9vqpt5O5lnACI3i80CmUxyyeeX761+/W 8tkNZVvKMBM8VV0O0akOqOcnyS6wTv32i/s7nskHSPTNUGgJP9+j1i61+ADM78vEwQ5hZ9HrqWN OMqaZ2wXwjhNtoyHvJU5ls5py0wyUcFjX5Uhc8NaYwJJ85USnWKT86k3Wq8v68qyygbi6Fnahb7 mJa/fAbHh/FRsfgo9NUkZLxBTOUdwMCxOwk6ip2QxLQOp/ZG/RshppjmuZMfrSSMCRIDJwMzfzZ RWHiISM4lLUp+4T6Cfuex8RrEr3CEc7pskHCWC7tFhyYL0iNA8kY7SqeGvBMcg11 X-Received: by 2002:a17:903:32c8:b0:223:4a10:311b with SMTP id d9443c01a7336-22368f6cff6mr101792125ad.1.1740806965141; Fri, 28 Feb 2025 21:29:25 -0800 (PST) X-Google-Smtp-Source: AGHT+IHR0uhoft/sXJjVvjA8zhMlBeeLm3f9bDfON3RfR0a83TsIJOm3i4uX0i85gh8e0VjWwUKAmw== X-Received: by 2002:a17:903:32c8:b0:223:4a10:311b with SMTP id d9443c01a7336-22368f6cff6mr101791845ad.1.1740806964788; Fri, 28 Feb 2025 21:29:24 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:24 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 27/39] target/hexagon: Implement hexagon_find_last_irq() Date: Fri, 28 Feb 2025 21:28:33 -0800 Message-Id: <20250301052845.1012069-28-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: kdsyJFfpL6K0tBWY7cdMkzVzA5_5x8JS X-Proofpoint-ORIG-GUID: kdsyJFfpL6K0tBWY7cdMkzVzA5_5x8JS X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 impostorscore=0 priorityscore=1501 bulkscore=0 mlxlogscore=577 mlxscore=0 lowpriorityscore=0 clxscore=1015 spamscore=0 malwarescore=0 adultscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/op_helper.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index d0dc4afac7..f3ffac81b6 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -1637,7 +1637,13 @@ static void modify_syscfg(CPUHexagonState *env, uint32_t val) static uint32_t hexagon_find_last_irq(CPUHexagonState *env, uint32_t vid) { - g_assert_not_reached(); + int offset = (vid == HEX_SREG_VID) ? L2VIC_VID_0 : L2VIC_VID_1; + CPUState *cs = env_cpu(env); + HexagonCPU *cpu = HEXAGON_CPU(cs); + const hwaddr pend_mem = cpu->l2vic_base_addr + offset; + uint32_t irq; + cpu_physical_memory_read(pend_mem, &irq, sizeof(irq)); + return irq; } static void hexagon_read_timer(CPUHexagonState *env, uint32_t *low, From patchwork Sat Mar 1 05:28:34 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997367 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 560FFC282CD for ; Sat, 1 Mar 2025 05:37:18 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPr-0001bB-FY; Sat, 01 Mar 2025 00:29:35 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPo-0001KE-5N for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:32 -0500 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 1toFPk-0008SY-TY for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:31 -0500 Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5213JRpC016337 for ; Sat, 1 Mar 2025 05:29:28 GMT 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= pdumTwo7IoMLP0yljPwpI+Lq3xCKO+++UyI7I9bZTkI=; b=cFN4razFsRMAzmyd u+ox75wlXaKMR5yU0IspsoFeKTMCyqIdFZFn9wNxHWcolkehPy6ENbnTlDHQso60 KR2EJWg/Q57dEXxYzjsxI6xol7mPQX4ZGaM4bKw5FcNn/PTFqOHAhBkTtFuXOTAv tevMfK2g5/aNzqQe7G8sJGdmXiWezCV2xT7vBzHTS5jCPjVBTAg4xggebpDUsntN F38/Y2xhTGX/ZnlHZNLW3nD/SQWyeKNJ2JM9dezyBaLx9kq24/OtWRFuWXGrj1vU KFUprsRdcMg5OuW7ABh7+Ooh+7SQDd1BJCWnt1VxGdjHvY4I+oD4+vOKQmRznPOq nAQfCw== 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 453t7hr6an-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:27 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-2fe8fdfdd94so5864278a91.0 for ; Fri, 28 Feb 2025 21:29:27 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806966; x=1741411766; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pdumTwo7IoMLP0yljPwpI+Lq3xCKO+++UyI7I9bZTkI=; b=Yi9e52qS2uwo1yMT1gDIxlCFnK/TPRuebJGwZffaby0mFTDD0sO2/+NAiHz3UukJ8z gaHoUQxvt6eR3GsIkJi+PWCaW5Fh4umWxvhQPoN/Z6xsQlIcksNkc5VWnc0DcJsV05q1 8vk7pfVIIMVFosJguytnk5Cx/UZssOFOFFwHiDGKs0TDt7lxS/l2xZHxTywXGzMPhpQx Euq6c4woIhy6YDECLCEK8M3G4ysvslwtbE/9w2z2JtkEuLMc57jJWuCm5z3NmdSH7Rpm rlphH0BZVX3QcyxfaVa+3j9hKNtPSWyvJEVu3LYwD1DiTIHNXm00V0ad0PIUnT8K1G8A 7UoA== X-Gm-Message-State: AOJu0YyllS9L9tpYJ1k82SMX1Mqx2tiIz68kbte8+iRjssEcRjnqq6Jc ILv+tgPs6Ugd3gtgOUlwJc9S2861eT4RfqbaRzllBoJqigFNwo4vcquJKtszHlw6Jdy/JpMn6WX jpW3o/XDoPr4JsctQsPTUoxh6hnA8YMlUwc1AENLaYAJgGwAATyug/ZbeIkA4xw== X-Gm-Gg: ASbGncsNhm50oI211LtVEjmDpaByo55ANcGG1G8TnzcjQ7ARx1d/AGwsjuXTyWkM21r etdI/W8tBvNpvGcobIK51DItAkcbstQjnBBIJUCHuBMFxn2gYRFAeHGHvs4Y7H5N0LGMxw7eWs/ wpf+i4KieSeBxiFk4WXRcj39swgWspaCvntCUcyrr+eAAxDSgRrllDgPZ2RyJaa4mHKvH62GIft 12WPkHQEkfuNMKqlIEAjH0K8BepmH6WO3kYAdA/w9qqseScX3oDoyynBrxm1Epix9QtLamjbI4K fJkcyp1NWMikpfj63K3c+L8oD8oXR6/gdNR2qKm83klpYH1yrI5BoN1F+Llib5n1 X-Received: by 2002:a17:90b:3ecd:b0:2ef:114d:7bf8 with SMTP id 98e67ed59e1d1-2febab2eec2mr8956311a91.6.1740806966358; Fri, 28 Feb 2025 21:29:26 -0800 (PST) X-Google-Smtp-Source: AGHT+IFQ8OU8FPPJFKUFAOhyTJCyu/+CD1ujdlzdvqKDdYaaOiE0POyrdUPsivnqt5o8HDw/26ERwA== X-Received: by 2002:a17:90b:3ecd:b0:2ef:114d:7bf8 with SMTP id 98e67ed59e1d1-2febab2eec2mr8956294a91.6.1740806965925; Fri, 28 Feb 2025 21:29:25 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:25 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 28/39] target/hexagon: Implement modify_ssr, resched, pending_interrupt Date: Fri, 28 Feb 2025 21:28:34 -0800 Message-Id: <20250301052845.1012069-29-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: -99BKhbXAM043Dy98MftoArDp4P3AziK X-Proofpoint-ORIG-GUID: -99BKhbXAM043Dy98MftoArDp4P3AziK X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 impostorscore=0 phishscore=0 spamscore=0 malwarescore=0 adultscore=0 suspectscore=0 mlxlogscore=511 clxscore=1015 mlxscore=0 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 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: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/helper.h | 3 +++ target/hexagon/op_helper.c | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/target/hexagon/helper.h b/target/hexagon/helper.h index 730eaf8b9a..3df663baeb 100644 --- a/target/hexagon/helper.h +++ b/target/hexagon/helper.h @@ -129,4 +129,7 @@ DEF_HELPER_1(stop, void, env) DEF_HELPER_2(wait, void, env, i32) DEF_HELPER_2(resume, void, env, i32) DEF_HELPER_2(nmi, void, env, i32) +DEF_HELPER_1(resched, void, env) +DEF_HELPER_3(modify_ssr, void, env, i32, i32) +DEF_HELPER_1(pending_interrupt, void, env) #endif diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index f3ffac81b6..702c3dd3c6 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -1178,6 +1178,15 @@ float64 HELPER(dfmpyhh)(CPUHexagonState *env, float64 RxxV, return RxxV; } +#ifndef CONFIG_USER_ONLY +void HELPER(modify_ssr)(CPUHexagonState *env, uint32_t new, uint32_t old) +{ + BQL_LOCK_GUARD(); + hexagon_modify_ssr(env, new, old); +} +#endif + + /* Histogram instructions */ void HELPER(vhist)(CPUHexagonState *env) @@ -1516,6 +1525,11 @@ static inline QEMU_ALWAYS_INLINE void resched(CPUHexagonState *env) } } +void HELPER(resched)(CPUHexagonState *env) +{ + resched(env); +} + void HELPER(wait)(CPUHexagonState *env, target_ulong PC) { BQL_LOCK_GUARD(); @@ -1793,6 +1807,12 @@ void HELPER(nmi)(CPUHexagonState *env, uint32_t thread_mask) { g_assert_not_reached(); } + +void HELPER(pending_interrupt)(CPUHexagonState *env) +{ + BQL_LOCK_GUARD(); + hex_interrupt_update(env); +} #endif From patchwork Sat Mar 1 05:28:35 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997359 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id ABCEEC021B8 for ; Sat, 1 Mar 2025 05:35:38 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFQ2-0002i6-CO; Sat, 01 Mar 2025 00:29:46 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPp-0001OI-61 for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:33 -0500 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 1toFPl-0008Su-Tp for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:32 -0500 Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5213MF8b026309 for ; Sat, 1 Mar 2025 05:29:29 GMT 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= pU8hVZPrx5M/Nh+U274cUvZDIgmflPFv/nrq9791pcA=; b=MQIkd37EHT4LSHVL uBUALii/gF8gTz4qV9blqg+Qr4ipowOwSrBXv/UkV5mO5BlNexw9FJaHR/GjB/HO BSVuzgojcHJsXTRjsgfN237BLow79zAxemggnRPTzGd1MA/rI0T18U+mtiJSFtVR NpvLscgM1xdIX/B/1bhhXP0ASDyAx5bFzwrDWoJg6VOz0JohQwo+2+QnYLmdn7L8 C+0cFAoBmx1yz0PM32zsuvRlYQVDrVD5of/h7dqTVTkb1rp5s9sQk5STKp3YwlXy 0HjIHsxl4T7qZ9Xr9tKvudF3nE4tJe3+pThtaOPGmCuu6Gt6VytX+aBYxRCxvhHo tG3J8g== 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 453t95r67y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:28 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-2fede63f32dso536184a91.1 for ; Fri, 28 Feb 2025 21:29:28 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806967; x=1741411767; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pU8hVZPrx5M/Nh+U274cUvZDIgmflPFv/nrq9791pcA=; b=nI3OqZ/ojmjfaGHiAou6z6ksbH56rgsac92gJ3ktV8s8aybSqjPLMnTW8X7lc1yvm3 hbTjGhbmPSAGFQ6H/Flchc4KdLXEN7UQ3wQSi0/ZgEDDzFXlZbXEweeV5RgpKLtfFAL1 Vj7qW0oKDt9DS8R1rL3gcY/M88nfk/IiVCZcbwkYQX7A13WXpERSQm+qHA/VAwoMbDvt lOdrPvp30FIx/Ou3Cxgo5D32YU3T3hXecyBjN0wNChCIPkR8i1hwshV9+/PCsUq6jAc9 KCLP9zT90DDXliFKQZH9cIMc0HkoeuCW8tteiU22uzfGemruKvsPN57yNlmgQuLH8XYG ZNLw== X-Gm-Message-State: AOJu0YwqF7k7Ef4yyKYGjVFb/Pz3GfdM172P8I4TiBKw9oBT05IqovWq 8bXT5mTlaCUeLRR/0DPHVi8M4gGlNqD5+Oa070qAKU1YzEU/R2F/vYKF+ywezPdPTcMwmPFWHYs 3AmxN/Ckxc6wYNZNgKI8NEM/MeizS05A6Mwj2UwRdERpLeicBCoA1CyBSs6Zjvw== X-Gm-Gg: ASbGncu2szgQa9ddF/cLR1BRi4mKdt20cPOMVAjb/bXew7ySkqwq8CFlWdcL8gSYxIj pvyh7CFIOEZB455eql8GfhWyv+KbTRHzrWcWvj5AgyLieHOObbFDOhI5wfM6If50NCKA3QDOT64 RdxUT6TcYfJQWfYDatJdR0UOeHg4+0Y3v1zZSIFeE6I841sXCoohX605SpWMpNFQm3K3dBas4ag iYp2z6fT6XRknYPo69hL+NXYy+HtEpby5qT4poq9FZ65lDDJHreU/ApT5OZKWW9H9VHExKReLyq d+ek5ppW1fNAql52kO5uVzKV/vywC3fhQ2Uv6pvj+9zFVR/h+7JVEBv62DLwNCDh X-Received: by 2002:a17:90b:2252:b0:2fa:ba3:5457 with SMTP id 98e67ed59e1d1-2febab78780mr11231842a91.17.1740806967497; Fri, 28 Feb 2025 21:29:27 -0800 (PST) X-Google-Smtp-Source: AGHT+IH9EEBosxkYmLIuU0Y8M9gRyBFgVwCeMoJWW3S2wxEhbFbX6iL2nNeqLVr0BoqRXbA1sFOLKg== X-Received: by 2002:a17:90b:2252:b0:2fa:ba3:5457 with SMTP id 98e67ed59e1d1-2febab78780mr11231808a91.17.1740806967131; Fri, 28 Feb 2025 21:29:27 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:26 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 29/39] target/hexagon: Add pkt_ends_tb to translation Date: Fri, 28 Feb 2025 21:28:35 -0800 Message-Id: <20250301052845.1012069-30-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: 5N0q0_NwYPT_i96D2jXU9E8sfJx8nrLu X-Proofpoint-GUID: 5N0q0_NwYPT_i96D2jXU9E8sfJx8nrLu X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 mlxscore=0 phishscore=0 mlxlogscore=731 clxscore=1015 priorityscore=1501 lowpriorityscore=0 spamscore=0 malwarescore=0 suspectscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 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: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/translate.h | 1 + target/hexagon/translate.c | 99 +++++++++++++++++++++++++++++++++++++- 2 files changed, 99 insertions(+), 1 deletion(-) diff --git a/target/hexagon/translate.h b/target/hexagon/translate.h index 9bc4b3ce8b..c9533fee1f 100644 --- a/target/hexagon/translate.h +++ b/target/hexagon/translate.h @@ -84,6 +84,7 @@ typedef struct DisasContext { TCGv branch_taken; TCGv dczero_addr; bool pcycle_enabled; + bool pkt_ends_tb; uint32_t num_cycles; } DisasContext; diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c index 060df6e5eb..475726388a 100644 --- a/target/hexagon/translate.c +++ b/target/hexagon/translate.c @@ -259,6 +259,18 @@ static bool check_for_attrib(Packet *pkt, int attrib) return false; } +#ifndef CONFIG_USER_ONLY +static bool check_for_opcode(Packet *pkt, uint16_t opcode) +{ + for (int i = 0; i < pkt->num_insns; i++) { + if (pkt->insn[i].opcode == opcode) { + return true; + } + } + return false; +} +#endif + static bool need_slot_cancelled(Packet *pkt) { /* We only need slot_cancelled for conditional store instructions */ @@ -272,6 +284,90 @@ static bool need_slot_cancelled(Packet *pkt) return false; } +#ifndef CONFIG_USER_ONLY +static bool sreg_write_to_global(int reg_num) +{ + return reg_num == HEX_SREG_SSR || + reg_num == HEX_SREG_STID || + reg_num == HEX_SREG_IMASK || + reg_num == HEX_SREG_IPENDAD || + reg_num == HEX_SREG_BESTWAIT || + reg_num == HEX_SREG_SCHEDCFG; +} + +static bool has_sreg_write_to_global(Packet const *pkt) +{ + for (int i = 0; i < pkt->num_insns; i++) { + Insn const *insn = &pkt->insn[i]; + uint16_t opcode = insn->opcode; + if (opcode == Y2_tfrsrcr) { + /* Write to a single sreg */ + int reg_num = insn->regno[0]; + if (sreg_write_to_global(reg_num)) { + return true; + } + } else if (opcode == Y4_tfrspcp) { + /* Write to a sreg pair */ + int reg_num = insn->regno[0]; + if (sreg_write_to_global(reg_num)) { + return true; + } + if (sreg_write_to_global(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_to_global(pkt)) { + return true; + } +#endif + return false; +} + + static bool need_next_PC(DisasContext *ctx) { Packet *pkt = ctx->pkt; @@ -473,6 +569,7 @@ static void gen_start_packet(DisasContext *ctx) tcg_gen_movi_tl(hex_slot_cancelled, 0); } ctx->branch_taken = NULL; + ctx->pkt_ends_tb = pkt_ends_tb(pkt); if (pkt->pkt_has_cof) { ctx->branch_taken = tcg_temp_new(); if (pkt->pkt_has_multi_cof) { @@ -927,7 +1024,7 @@ static void gen_commit_packet(DisasContext *ctx) pkt->vhist_insn->generate(ctx); } - if (pkt->pkt_has_cof) { + if (ctx->pkt_ends_tb || ctx->base.is_jmp == DISAS_NORETURN) { gen_end_tb(ctx); } } From patchwork Sat Mar 1 05:28:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997368 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 85D63C282D0 for ; Sat, 1 Mar 2025 05:37:18 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFQA-0003Pr-A6; Sat, 01 Mar 2025 00:29:54 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFQ0-0002Vd-2X for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:44 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPx-0008TL-Lv for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:43 -0500 Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5214m52Y020592 for ; Sat, 1 Mar 2025 05:29:30 GMT 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= /1XZpXGKddkmGbZRt6rS4NIIjX9cl8hgYv3L1ABPceU=; b=ME1yVmCSvNr58bwc Tav6Z7jRtOVeeQUJV6mOhpt1Cz7Tj5QGIvDOsukRWstk3IL1h1Y39OoVPcTbEczr H4S38XzJN/8hUM+okFVby8cKENakwmt5efZhfjz2i/P9aZW9V5sGtOpqvlqth4pb 0ZiW61BXRF0T9zQt5PkuzSOWUviEMoGPupZn7QpCMCxfP73gNY9/tiDKr7OdeETB ketxDz2Nh9q9cwJWnHeScmHNJD4+qAmlmUCauNhXu7g2p0P62jt39ek4y51Ep5O2 KOWOp8iArVO0UzQh6WdHgCqU12WujuCtRP5gJlFeXeX2qJbXRiUrlZzyuWyG5IWf yrzK5w== 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 453uh701yy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:30 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-2fe8c5dbdb0so5817736a91.3 for ; Fri, 28 Feb 2025 21:29:30 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806969; x=1741411769; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/1XZpXGKddkmGbZRt6rS4NIIjX9cl8hgYv3L1ABPceU=; b=sGOsDFYAAbF0edgtK/bwvljf8Gzfs0ujgQveJvOpXqb4kf/6zCHj+1K3JUqBNI+3ED FxeOfJprtf4t5djMErnanAIfXkmP8sIV6FqWkWyfs0A6ULzBs2Rdj5jZp2xlA1oo9fm5 5uXYfmiio2ptk5E6HQifrMKsd4XkkCf+qJe1SNpS3ccGla0Yjlqm7lJXl7PBXOCOuWWw Y7akIBwA/afckSxV9e7cJPCxX7jqnqbTjUX9R8iYHDPUbcVFt2/dsIvHZKAu/x3e+WG3 ksR/OhGq1Xk8Wk6JHB1FvmBN5ta0Zx6NUCycWyYKPjd6nIswjRGXgzc2PYeyZ8FgiMJg dFwA== X-Gm-Message-State: AOJu0YxMD0qKRM6LBOmlzurR9FKBoRDS+IAG9vwE1fYR6Q9Mqu8WyVnI +s7iZ3RZncLPpkSbfARaCtBVaOEbAxmMO+Xt0+CPDeRi4+02RpJhvxiYh90QCCm9XeENAKhEh45 AmNprG80GHqEu1+3qNb1oQm527WiRaiUJXBY/zZb2bqVljlKsD9nrc6hUFwVCHA== X-Gm-Gg: ASbGncs8YMGHYjvkce7abIFjuBdCrydjxQaxu61HipJT4eISImvSctFczTiA3SArQaH 7b00Srtny9X7UvGs+1pbmQNg/oJNkykfJuBL4fTrog0EjlqlY4ioyX+wxWrs2CxBLHHaFo25dqz Zl2pdUU8zIzNjBbztSOGTHctNa+V6CjRCSarK9JMpvrzqpe4BJ2P7mpzmrFGDoMp8gTp64CE/3V ZaoUh8reBdiJ9BKaGvnt1FSKhM42EwfINj/suTx5bdHIxZzMwM6YYEKpwVKlZW/ZZZUn4biS8nf ym/ff1p72sx3ky09TzuNo6TNdAgY0XJEQmxetTuRkGhmxkU+tObckJQGDXTkhPYY X-Received: by 2002:a17:90b:4a08:b0:2fa:15ab:4dff with SMTP id 98e67ed59e1d1-2febac0b0b6mr8742721a91.31.1740806969172; Fri, 28 Feb 2025 21:29:29 -0800 (PST) X-Google-Smtp-Source: AGHT+IGD+sZr8spPypBHP2gLcRPSRen4NVXXqsLipqqnWxmcsqEJpJXp16vly18HkFCHr+c4GJ7/mQ== X-Received: by 2002:a17:90b:4a08:b0:2fa:15ab:4dff with SMTP id 98e67ed59e1d1-2febac0b0b6mr8742677a91.31.1740806968324; Fri, 28 Feb 2025 21:29:28 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:28 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 30/39] target/hexagon: Add next_PC, {s,g}reg writes Date: Fri, 28 Feb 2025 21:28:36 -0800 Message-Id: <20250301052845.1012069-31-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: -8Vc3j0BFbIfS37b_c60Z3iCeYQKFSwA X-Proofpoint-ORIG-GUID: -8Vc3j0BFbIfS37b_c60Z3iCeYQKFSwA X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 suspectscore=0 lowpriorityscore=0 phishscore=0 impostorscore=0 clxscore=1015 priorityscore=1501 adultscore=0 mlxscore=0 spamscore=0 malwarescore=0 mlxlogscore=852 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/cpu.h | 2 +- target/hexagon/translate.h | 2 + target/hexagon/genptr.c | 7 +- target/hexagon/translate.c | 142 ++++++++++++++++++++++++++++++++----- 4 files changed, 132 insertions(+), 21 deletions(-) diff --git a/target/hexagon/cpu.h b/target/hexagon/cpu.h index 4667a1f748..73c3bb34b0 100644 --- a/target/hexagon/cpu.h +++ b/target/hexagon/cpu.h @@ -142,9 +142,9 @@ typedef struct CPUArchState { hex_lock_state_t k0_lock_state; target_ulong tlb_lock_count; target_ulong k0_lock_count; - target_ulong next_PC; CPUHexagonTLBContext *hex_tlb; #endif + target_ulong next_PC; target_ulong new_value_usr; MemLog mem_log_stores[STORES_MAX]; diff --git a/target/hexagon/translate.h b/target/hexagon/translate.h index c9533fee1f..ad1a2f4045 100644 --- a/target/hexagon/translate.h +++ b/target/hexagon/translate.h @@ -85,6 +85,7 @@ typedef struct DisasContext { TCGv dczero_addr; bool pcycle_enabled; bool pkt_ends_tb; + bool need_next_pc; uint32_t num_cycles; } DisasContext; @@ -306,6 +307,7 @@ static inline void ctx_log_qreg_read(DisasContext *ctx, } extern TCGv hex_gpr[TOTAL_PER_THREAD_REGS]; +extern TCGv hex_next_PC; extern TCGv hex_pred[NUM_PREGS]; extern TCGv hex_slot_cancelled; extern TCGv hex_new_value_usr; diff --git a/target/hexagon/genptr.c b/target/hexagon/genptr.c index 5554c9515c..afc7e5f3a5 100644 --- a/target/hexagon/genptr.c +++ b/target/hexagon/genptr.c @@ -634,14 +634,15 @@ static void gen_write_new_pc_addr(DisasContext *ctx, TCGv addr, tcg_gen_brcondi_tl(cond, pred, 0, pred_false); } + TCGv PC_wr = ctx->need_next_pc ? hex_next_PC : hex_gpr[HEX_REG_PC]; if (ctx->pkt->pkt_has_multi_cof) { /* If there are multiple branches in a packet, ignore the second one */ - tcg_gen_movcond_tl(TCG_COND_NE, hex_gpr[HEX_REG_PC], + tcg_gen_movcond_tl(TCG_COND_NE, PC_wr, ctx->branch_taken, tcg_constant_tl(0), - hex_gpr[HEX_REG_PC], addr); + PC_wr, addr); tcg_gen_movi_tl(ctx->branch_taken, 1); } else { - tcg_gen_mov_tl(hex_gpr[HEX_REG_PC], addr); + tcg_gen_mov_tl(PC_wr, addr); } if (cond != TCG_COND_ALWAYS) { diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c index 475726388a..d4b22acb72 100644 --- a/target/hexagon/translate.c +++ b/target/hexagon/translate.c @@ -49,6 +49,7 @@ static const AnalyzeInsn opcode_analyze[XX_LAST_OPCODE] = { TCGv hex_gpr[TOTAL_PER_THREAD_REGS]; TCGv hex_pred[NUM_PREGS]; TCGv hex_slot_cancelled; +TCGv hex_next_PC; TCGv hex_new_value_usr; TCGv hex_store_addr[STORES_MAX]; TCGv hex_store_width[STORES_MAX]; @@ -61,12 +62,14 @@ TCGv_i64 hex_cycle_count; TCGv hex_vstore_addr[VSTORES_MAX]; TCGv hex_vstore_size[VSTORES_MAX]; TCGv hex_vstore_pending[VSTORES_MAX]; +static bool need_next_PC(DisasContext *ctx); #ifndef CONFIG_USER_ONLY TCGv hex_greg[NUM_GREGS]; TCGv hex_t_sreg[NUM_SREGS]; TCGv_ptr hex_g_sreg_ptr; TCGv hex_g_sreg[NUM_SREGS]; +TCGv hex_cause_code; #endif static const char * const hexagon_prednames[] = { @@ -184,6 +187,9 @@ static void gen_end_tb(DisasContext *ctx) gen_exec_counters(ctx); + if (ctx->need_next_pc) { + tcg_gen_mov_tl(hex_gpr[HEX_REG_PC], hex_next_PC); + } if (ctx->branch_cond != TCG_COND_NEVER) { if (ctx->branch_cond != TCG_COND_ALWAYS) { TCGLabel *skip = gen_new_label(); @@ -371,18 +377,24 @@ static bool pkt_ends_tb(Packet *pkt) static bool need_next_PC(DisasContext *ctx) { Packet *pkt = ctx->pkt; - - /* Check for conditional control flow or HW loop end */ - for (int i = 0; i < pkt->num_insns; i++) { - uint16_t opcode = pkt->insn[i].opcode; - if (GET_ATTRIB(opcode, A_CONDEXEC) && GET_ATTRIB(opcode, A_COF)) { - return true; - } - if (GET_ATTRIB(opcode, A_HWLOOP0_END) || - GET_ATTRIB(opcode, A_HWLOOP1_END)) { - return true; + if (pkt->pkt_has_cof || ctx->pkt_ends_tb) { + for (int i = 0; i < pkt->num_insns; i++) { + uint16_t opcode = pkt->insn[i].opcode; + if ((GET_ATTRIB(opcode, A_CONDEXEC) && GET_ATTRIB(opcode, A_COF)) || + GET_ATTRIB(opcode, A_HWLOOP0_END) || + GET_ATTRIB(opcode, A_HWLOOP1_END)) { + return true; + } } } + /* + * We end the TB on some instructions that do not change the flow (for + * other reasons). In these cases, we must set pc too, as the insn won't + * do it themselves. + */ + if (ctx->pkt_ends_tb && !check_for_attrib(pkt, A_COF)) { + return true; + } return false; } @@ -523,7 +535,14 @@ static void analyze_packet(DisasContext *ctx) static void gen_start_packet(DisasContext *ctx) { Packet *pkt = ctx->pkt; +#ifndef CONFIG_USER_ONLY + target_ulong next_PC = (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; +#else target_ulong next_PC = ctx->base.pc_next + pkt->encod_pkt_size_in_bytes; +#endif int i; /* Clear out the disassembly context */ @@ -531,6 +550,10 @@ static void gen_start_packet(DisasContext *ctx) ctx->reg_log_idx = 0; bitmap_zero(ctx->regs_written, TOTAL_PER_THREAD_REGS); bitmap_zero(ctx->predicated_regs, TOTAL_PER_THREAD_REGS); +#ifndef CONFIG_USER_ONLY + ctx->greg_log_idx = 0; + ctx->sreg_log_idx = 0; +#endif ctx->preg_log_idx = 0; bitmap_zero(ctx->pregs_written, NUM_PREGS); ctx->future_vregs_idx = 0; @@ -563,21 +586,41 @@ static void gen_start_packet(DisasContext *ctx) * gen phase, so clear it again. */ bitmap_zero(ctx->pregs_written, NUM_PREGS); +#ifndef CONFIG_USER_ONLY + for (i = 0; i < NUM_SREGS; i++) { + ctx->t_sreg_new_value[i] = NULL; + } + for (i = 0; i < ctx->sreg_log_idx; i++) { + int reg_num = ctx->sreg_log[i]; + if (reg_num < HEX_SREG_GLB_START) { + ctx->t_sreg_new_value[reg_num] = tcg_temp_new(); + tcg_gen_mov_tl(ctx->t_sreg_new_value[reg_num], hex_t_sreg[reg_num]); + } + } + for (i = 0; i < NUM_GREGS; i++) { + ctx->greg_new_value[i] = NULL; + } + for (i = 0; i < ctx->greg_log_idx; i++) { + int reg_num = ctx->greg_log[i]; + ctx->greg_new_value[reg_num] = tcg_temp_new(); + } +#endif /* Initialize the runtime state for packet semantics */ if (need_slot_cancelled(pkt)) { tcg_gen_movi_tl(hex_slot_cancelled, 0); } ctx->branch_taken = NULL; - ctx->pkt_ends_tb = pkt_ends_tb(pkt); if (pkt->pkt_has_cof) { ctx->branch_taken = tcg_temp_new(); - if (pkt->pkt_has_multi_cof) { - tcg_gen_movi_tl(ctx->branch_taken, 0); - } - if (need_next_PC(ctx)) { - tcg_gen_movi_tl(hex_gpr[HEX_REG_PC], next_PC); - } + } + if (pkt->pkt_has_multi_cof) { + tcg_gen_movi_tl(ctx->branch_taken, 0); + } + ctx->pkt_ends_tb = pkt_ends_tb(pkt); + ctx->need_next_pc = need_next_PC(ctx); + if (ctx->need_next_pc) { + tcg_gen_movi_tl(hex_next_PC, next_PC); } /* Preload the predicated registers into get_result_gpr(ctx, i) */ @@ -713,6 +756,59 @@ static void gen_reg_writes(DisasContext *ctx) } } +#ifndef CONFIG_USER_ONLY +static void gen_greg_writes(DisasContext *ctx) +{ + int i; + + for (i = 0; i < ctx->greg_log_idx; i++) { + int reg_num = ctx->greg_log[i]; + + tcg_gen_mov_tl(hex_greg[reg_num], ctx->greg_new_value[reg_num]); + } +} + + +static void gen_sreg_writes(DisasContext *ctx) +{ + int i; + + TCGv old_reg = tcg_temp_new(); + for (i = 0; i < ctx->sreg_log_idx; i++) { + int reg_num = ctx->sreg_log[i]; + + if (reg_num == HEX_SREG_SSR) { + tcg_gen_mov_tl(old_reg, hex_t_sreg[reg_num]); + tcg_gen_mov_tl(hex_t_sreg[reg_num], ctx->t_sreg_new_value[reg_num]); + gen_helper_modify_ssr(tcg_env, ctx->t_sreg_new_value[reg_num], + old_reg); + /* This can change processor state, so end the TB */ + ctx->base.is_jmp = DISAS_NORETURN; + } else if ((reg_num == HEX_SREG_STID) || + (reg_num == HEX_SREG_IMASK) || + (reg_num == HEX_SREG_IPENDAD)) { + if (reg_num < HEX_SREG_GLB_START) { + tcg_gen_mov_tl(old_reg, hex_t_sreg[reg_num]); + tcg_gen_mov_tl(hex_t_sreg[reg_num], + ctx->t_sreg_new_value[reg_num]); + } + /* This can change the interrupt state, so end the TB */ + gen_helper_pending_interrupt(tcg_env); + ctx->base.is_jmp = DISAS_NORETURN; + } else if ((reg_num == HEX_SREG_BESTWAIT) || + (reg_num == HEX_SREG_SCHEDCFG)) { + /* This can trigger resched interrupt, so end the TB */ + gen_helper_resched(tcg_env); + ctx->base.is_jmp = DISAS_NORETURN; + } + + if (reg_num < HEX_SREG_GLB_START) { + tcg_gen_mov_tl(hex_t_sreg[reg_num], ctx->t_sreg_new_value[reg_num]); + } + } +} +#endif + static void gen_pred_writes(DisasContext *ctx) { /* Early exit if not needed or the log is empty */ @@ -1012,6 +1108,10 @@ static void gen_commit_packet(DisasContext *ctx) process_store_log(ctx); gen_reg_writes(ctx); +#if !defined(CONFIG_USER_ONLY) + gen_greg_writes(ctx); + gen_sreg_writes(ctx); +#endif gen_pred_writes(ctx); if (pkt->pkt_has_hvx) { gen_commit_hvx(ctx); @@ -1073,6 +1173,7 @@ static void hexagon_tr_init_disas_context(DisasContextBase *dcbase, ctx->is_tight_loop = FIELD_EX32(hex_flags, TB_FLAGS, IS_TIGHT_LOOP); ctx->short_circuit = hex_cpu->short_circuit; ctx->pcycle_enabled = FIELD_EX32(hex_flags, TB_FLAGS, PCYCLE_ENABLED); + ctx->need_next_pc = false; } static void hexagon_tr_tb_start(DisasContextBase *db, CPUState *cpu) @@ -1201,6 +1302,13 @@ void hexagon_translate_init(void) offsetof(CPUHexagonState, llsc_val_i64), "llsc_val_i64"); hex_cycle_count = tcg_global_mem_new_i64(tcg_env, offsetof(CPUHexagonState, t_cycle_count), "t_cycle_count"); +#ifndef CONFIG_USER_ONLY + hex_cause_code = tcg_global_mem_new(tcg_env, + offsetof(CPUHexagonState, cause_code), "cause_code"); +#endif + hex_next_PC = tcg_global_mem_new(tcg_env, + offsetof(CPUHexagonState, next_PC), "next_PC"); + for (i = 0; i < STORES_MAX; i++) { snprintf(store_addr_names[i], NAME_LEN, "store_addr_%d", i); hex_store_addr[i] = tcg_global_mem_new(tcg_env, From patchwork Sat Mar 1 05:28:37 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997338 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B3305C021B8 for ; Sat, 1 Mar 2025 05:32:11 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFQ7-00033c-22; Sat, 01 Mar 2025 00:29:51 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFQ0-0002WM-6S for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:44 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPy-0008Tc-FO for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:43 -0500 Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5213Gngi005403 for ; Sat, 1 Mar 2025 05:29:31 GMT 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= /ac62C4QIf3TDqEVKRceJfZ3NQ+seqv54H8kYQN3O6A=; b=LbqnXuu1DoxgxcOU 5ehXuVCZkMtgTxDn1OjiXsee0wVq+qjgB9j1YCslx/2NeqdEmX1Yix4zo9j2NT2+ U6+H+2e+ekUAY/9KZ9pwmI4K0QO86b1M+WzDB6UxNjezH1id8bt4Urk2PMMhWrKX Ujtue46edjNCRvhY29ANdn9TTHGA18m0tpN1MLRzD0vNywNW98ylDJyfMassTEuH yg2fZABILsiU+Nq2Ewn5pe7D4ol7vBu2xVcLuI3TwLaOXBgaPy1GUbALdE711bb/ 974GzwVv7sxvHv7/xPL0Gl53rhlWwBMlabY/n8+aZWS/y5PfiYKogKAkXGwD40TQ hno5Gg== 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 453t6k06je-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:30 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-2fe86c01f4aso5822015a91.2 for ; Fri, 28 Feb 2025 21:29:30 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806970; x=1741411770; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/ac62C4QIf3TDqEVKRceJfZ3NQ+seqv54H8kYQN3O6A=; b=mZItysIfm34o+rqb0G0WvkduFcCAYa4hA2w++M0Ffoxs+mSiI+c+NLR/tQbPAdP03g WGZ4Q/aWzBl+F7upcvOK8iHQXg3bfJ/tEuRw0R4VGhbzbt6zT3zc2FXhPFHspdAHkveu KxVH9u49Bsd4TfqZRmgc/cm3n0/Hzosc89KjW6Rem2R/neViamzWNBxe9tM6l6nGM8LQ 5MqJbb6n9fWVQd3Ilj1H2jH+kLrYwysc0JbMHknoYlnYFZOhOifmfaYAdvhYNjvtVeRO MHr0lo6FbU1MNqoj+2MSxHqbr6L64oBFyrQC9PEq+Rxo717ElYwvV1zzG8XSbfi/yP1D hxbA== X-Gm-Message-State: AOJu0YxJltWO45Y1w+JEBa0Va29qH5ogNUMZqq/tVc5G0DVdnJlcByf8 a4aqBq7v33wBYOA75lhdSuJ3EQCAgEQHy4royQhrDHwAbDVmiUCmLz8LX7krBD5BVe9FPNG9Zub ramS/CbqEzySdMH7g4vT7vj0bfS0yRFy7SQOrDlSKFyuQXTpXItCLM1It4ciD9g== X-Gm-Gg: ASbGncs/xHw8m46/7RYpEBxN+dBQ1a41C5QCVLFyF6YOpNSAOlDWXcDIH8eCQMDVNWM cgCvnEllvO6hpkEl13yB8kRNMQnnlq+bDCOo+CglC7R9hJ2OtilfqyTSeRQ+BCgTyw6fQd28bX6 uXOd5cWLBkKK0To7xHbhkLq6/hmlB6SFQhwIvjeWJZ1BMN2yN5TTzy14Bf7zHjSiNgFeQe3pFAO 9gWe3K5TT9T/VLhS4IbaASsV8xnp6CK0dl/uvCMsA1EMCB1k8WhITXF6fDUZI6GhLZXUsHp3IJU cxBviIXo79NwkjqRkJFTwGJNdhb0CfHb1R+MVnv9fz7QpPFwNeUP0f8rFRzcaGb3 X-Received: by 2002:a17:90b:1b47:b0:2ee:c04a:4276 with SMTP id 98e67ed59e1d1-2febab2eea1mr8846061a91.5.1740806970001; Fri, 28 Feb 2025 21:29:30 -0800 (PST) X-Google-Smtp-Source: AGHT+IECq4LHXrqAA2NJ0nqFYCdYY9tUTvUCbUiaD+gCRKAKMNsSoNQU+4KVse0UJPAa0tbl8KAzeQ== X-Received: by 2002:a17:90b:1b47:b0:2ee:c04a:4276 with SMTP id 98e67ed59e1d1-2febab2eea1mr8846038a91.5.1740806969546; Fri, 28 Feb 2025 21:29:29 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:29 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 31/39] target/hexagon: Add implicit sysreg writes Date: Fri, 28 Feb 2025 21:28:37 -0800 Message-Id: <20250301052845.1012069-32-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: flM9e4hljdmsQRQCkAQJw863Po_tyCSZ X-Proofpoint-ORIG-GUID: flM9e4hljdmsQRQCkAQJw863Po_tyCSZ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 impostorscore=0 priorityscore=1501 bulkscore=0 mlxlogscore=682 mlxscore=0 lowpriorityscore=0 clxscore=1015 spamscore=0 malwarescore=0 adultscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/translate.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c index d4b22acb72..ff881d1060 100644 --- a/target/hexagon/translate.c +++ b/target/hexagon/translate.c @@ -426,6 +426,16 @@ static void mark_implicit_reg_write(DisasContext *ctx, int attrib, int rnum) } } +#ifndef CONFIG_USER_ONLY +static void mark_implicit_sreg_write(DisasContext *ctx, int attrib, int snum) +{ + uint16_t opcode = ctx->insn->opcode; + if (GET_ATTRIB(opcode, attrib)) { + ctx_log_sreg_write(ctx, snum); + } +} +#endif + static void mark_implicit_reg_writes(DisasContext *ctx) { mark_implicit_reg_write(ctx, A_IMPLICIT_WRITES_FP, HEX_REG_FP); @@ -437,6 +447,12 @@ static void mark_implicit_reg_writes(DisasContext *ctx) mark_implicit_reg_write(ctx, A_IMPLICIT_WRITES_SA1, HEX_REG_SA1); mark_implicit_reg_write(ctx, A_IMPLICIT_WRITES_USR, HEX_REG_USR); mark_implicit_reg_write(ctx, A_FPOP, HEX_REG_USR); + +#ifndef CONFIG_USER_ONLY + mark_implicit_sreg_write(ctx, A_IMPLICIT_WRITES_SGP0, HEX_SREG_SGP0); + mark_implicit_sreg_write(ctx, A_IMPLICIT_WRITES_SGP1, HEX_SREG_SGP1); + mark_implicit_sreg_write(ctx, A_IMPLICIT_WRITES_SSR, HEX_SREG_SSR); +#endif } static void mark_implicit_pred_write(DisasContext *ctx, int attrib, int pnum) From patchwork Sat Mar 1 05:28:38 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997330 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id EEABFC021B8 for ; Sat, 1 Mar 2025 05:31:11 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFQF-00046t-6N; Sat, 01 Mar 2025 00:29:59 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFQ1-0002eH-KK for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:45 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPz-0008U6-J2 for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:45 -0500 Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5214ngOO022276 for ; Sat, 1 Mar 2025 05:29:32 GMT 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= b3HAr2UrxHZXRRS7Rb8rVbVvwzE8SzOmOO3M6Z4w2X4=; b=lq0+mvV+BMz0Th0v 3lo9bwTFx+NRLGyg750220ko3fwhi4aCbD6Kl5q5p6rk+ZXrwYK/kM8hWZHGz5S+ tgeg5NjspgeLWWnRvd27iXwUm5uuqQQgHRdm5QLI7xIWzflGqE8cKsn4VxCCzbgR tZYjt+X4uocvJUdb1OyezJuoJj9mYWXL4nk+muBKixOc8uWfy93/6Cl+TJIw/zuU OKhgzLiFDSUz+uSokUbYqE6bYqEqyGKQ+v9X615WEXTot5yTRjhDy0xxo58ZbBwG 0rNPEKHwZG7fa76vFy84kPjAmD64wOW8J3sTSJuFRkgZtZBYwEz1n66IAg48vGfZ jy2FQA== 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 453uh70202-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:32 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-2fed20dd70cso1135597a91.1 for ; Fri, 28 Feb 2025 21:29:32 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806971; x=1741411771; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=b3HAr2UrxHZXRRS7Rb8rVbVvwzE8SzOmOO3M6Z4w2X4=; b=RRGc2eWXoUi+pzDnS/vP9m6ZAycsASlEChB/uh8LgvW3equemwchfNuELe8HYoOT1W p5DQqGJmLLSnLL3MGc+lBRn9+PMYqo4cgWgZ9dtLIQu4s8soJlfnASh16+76JGHOXL0K 5Vi3Ddh/8RQUs42R358E3fTL09+hXyGfJOtYaFdJx8whH/2p1K5ZzBk89Z7jQoRLuIoh WZVu1RTMxrKe7JmGBnE8UtJOgL9cFRyrqAx4zw17ol2ik/huYHfoQ1mmjXdkgxuPho7P 9H6yOoM3hBFKw8aEgs8Z0ELwa4sjD2tFtZXbl8bezmDLv1dKBaDrBTW5oovo/ADfI8Nh oshw== X-Gm-Message-State: AOJu0Yzt766lXv4V1UJMybEAmJudRmQgfyJ/GyIlk5avyvKHB2NiX2up ju5ADjVvqasXggw45MQSiubkxJ/LodDtl28QUhISB+nRhOMmfxQGLeqwgsUHhhImmSsfreO2K1a 55wp6g26CHRKRgSTO81IM62pzLr7vFst68Sa8cipZiHYbPbr8I8tVbAYKBfq5/Q== X-Gm-Gg: ASbGnctGpgbYqjsj1mwR11ALF0l4QswoJKWAgidOzu6PiGQN9cV7XjJsS1XKVxnpZMs IzOJ3yKkSRsBeQ1lu/3ez9dB2pq43ddDmFf4Mh/oV/OhvJ7p9JBNAfXPQQLuc27VceOiKRTNjxW WYc7CFgxqghP/rWMImI2+GAd7n088Pr3uayoz/Ki7HkXjp0Om2z0iuoCZ9h+URkLiRaY0EYE2ID ag8jsX7/p3jMYhDWyuaRg0hqKs3ou5epC5EI7PHTRq2Du8Gn32CFfGtCcAUV02W7im1Zwjf3WWd pydQ9LHvqrpvL/E6aKVZTeO96iFNX8PTQM+zIyk+AgpryrMLVnh8Eow/JC4gp6Nx X-Received: by 2002:a17:90b:240d:b0:2fe:e0a9:49d4 with SMTP id 98e67ed59e1d1-2fee0a94d63mr658204a91.2.1740806971152; Fri, 28 Feb 2025 21:29:31 -0800 (PST) X-Google-Smtp-Source: AGHT+IF1q2TmtdKOvp6Dmvl4+uT94zg7TpADfOesSzlEsISqc1/l384Jo0wY9/0YBOfeSToRdgKHLA== X-Received: by 2002:a17:90b:240d:b0:2fe:e0a9:49d4 with SMTP id 98e67ed59e1d1-2fee0a94d63mr658186a91.2.1740806970802; Fri, 28 Feb 2025 21:29:30 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:30 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 32/39] target/hexagon: Define system, guest reg names Date: Fri, 28 Feb 2025 21:28:38 -0800 Message-Id: <20250301052845.1012069-33-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: 5aUSya_tz9S8f3oipttPAE1XUoXg9wbr X-Proofpoint-ORIG-GUID: 5aUSya_tz9S8f3oipttPAE1XUoXg9wbr X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 suspectscore=0 lowpriorityscore=0 phishscore=0 impostorscore=0 clxscore=1015 priorityscore=1501 adultscore=0 mlxscore=0 spamscore=0 malwarescore=0 mlxlogscore=861 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/internal.h | 2 ++ target/hexagon/cpu.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/target/hexagon/internal.h b/target/hexagon/internal.h index 120cfde7b9..fd2397b9ef 100644 --- a/target/hexagon/internal.h +++ b/target/hexagon/internal.h @@ -34,6 +34,8 @@ void hexagon_debug_qreg(CPUHexagonState *env, int regnum); void hexagon_debug(CPUHexagonState *env); extern const char * const hexagon_regnames[TOTAL_PER_THREAD_REGS]; +extern const char * const hexagon_sregnames[]; +extern const char * const hexagon_gregnames[]; void G_NORETURN do_raise_exception(CPUHexagonState *env, uint32_t exception, diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index c7c470b099..3c4776232e 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -85,6 +85,35 @@ const char * const hexagon_regnames[TOTAL_PER_THREAD_REGS] = { "c24", "c25", "c26", "c27", "c28", "c29", "c30", "c31", }; +#ifndef CONFIG_USER_ONLY +const char * const hexagon_sregnames[] = { + "sgp0", "sgp1", "stid", "elr", "badva0", + "badva1", "ssr", "ccr", "htid", "badva", + "imask", "gevb", "vwctrl", "s13", "s14", + "s15", "evb", "modectl", "syscfg", "segment", + "ipendad", "vid", "vid1", "bestwait", "s24", + "schedcfg", "s26", "cfgbase", "diag", "rev", + "pcyclelo", "pcyclehi", "isdbst", "isdbcfg0", "isdbcfg1", + "livelock", "brkptpc0", "brkptcfg0", "brkptpc1", "brkptcfg1", + "isdbmbxin", "isdbmbxout", "isdben", "isdbgpr", "pmucnt4", + "pmucnt5", "pmucnt6", "pmucnt7", "pmucnt0", "pmucnt1", + "pmucnt2", "pmucnt3", "pmuevtcfg", "pmustid0", "pmuevtcfg1", + "pmustid1", "timerlo", "timerhi", "pmucfg", "rgdr2", + "rgdr", "turkey", "duck", "chicken", +}; + +G_STATIC_ASSERT(NUM_SREGS == ARRAY_SIZE(hexagon_sregnames)); + +const char * const hexagon_gregnames[] = { + "gelr", "gsr", "gosp", "gbadva", "gcommit1t", + "gcommit2t", "gcommit3t", "gcommit4t", "gcommit5t", "gcommit6t", + "gpcycle1t", "gpcycle2t", "gpcycle3t", "gpcycle4t", "gpcycle5t", + "gpcycle6t", "gpmucnt4", "gpmucnt5", "gpmucnt6", "gpmucnt7", + "gcommit7t", "gcommit8t", "gpcycle7t", "gpcycle8t", "gpcyclelo", + "gpcyclehi", "gpmucnt0", "gpmucnt1", "gpmucnt2", "gpmucnt3", + "g30", "g31", +}; +#endif /* * One of the main debugging techniques is to use "-d cpu" and compare against * LLDB output when single stepping. However, the target and qemu put the From patchwork Sat Mar 1 05:28:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997335 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E089FC021B8 for ; Sat, 1 Mar 2025 05:31:26 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFQ7-00037p-O0; Sat, 01 Mar 2025 00:29:51 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFQ4-0002pn-D7 for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:48 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFQ1-0008UR-Af for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:48 -0500 Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5214BwZ1027245 for ; Sat, 1 Mar 2025 05:29:34 GMT 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= jx5E8UXzPamLqtOTkIV7LqZMWqAEg61uw+pj1z6VvYw=; b=Ahy0vGlqbxKt76bG me+SmluOK491+NcQdFwmCxHOgi2WSZBoyTpzq9g1iprr7DXMPzhjC5ASMFGg8lqa xtAZgRKx/a5XoBN9kVAk0BOHWCFsR9AOOzVxcDuHqQekUPKYWtsxl38Kg3DKaLKB qbx4OdAlL3VKLG8ail/COpOKeZp8bP/DlczOpTHpdlyW8i+j9O0wLS5cyte5rHRu ksqvyf7TuP1RVZrvLGMJZk+4PbnoV4a7cQZ3D2N74jO1kOA/4wZxSp5WQqIJC5kw ajcCczonxWA+PHDMyFO5xgriD/1CdjO97a/o9VQmB9fGZO9RGplZIQAVnJdp3av7 6MvCPA== 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 453u0d0391-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:33 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-2fe8fdfdd94so5864338a91.0 for ; Fri, 28 Feb 2025 21:29:33 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806973; x=1741411773; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jx5E8UXzPamLqtOTkIV7LqZMWqAEg61uw+pj1z6VvYw=; b=RZmTMCFx2wPcmwhSKdLnDLert+S1tcHIJ6KFCFyVN+NmjCPF+LrDPkmRe3HJ5M+il5 D4Bick+yOpBKjc+EPCb86mwDCVCyKaI8GrfrjAIX2FBWjpZ9ezRlbL+7VjX2n/lb+Caa QcDA/X2oj41dqHGtFn49FMR9Rt1Weuc9ngFqUuv1ZkcmbaGRkkYKofDbIyB8GjsBeLNY t+l5z3frnU/gnBqDoKzCBw/+O/zmQyosuodFvBg+8gAbj9uyaXWrYlxpLsT7w+Lv8Gt7 XRzk9o02pPr+eclETMfY81Pt+CYda7YP2sYPclco7mgHOxjAt5BMV4tLT1FB74Or+rsZ 99TA== X-Gm-Message-State: AOJu0YyBPKcCbOItnuG3jMBkrp1nfakAA4Otj/sUIjZeB+qh8PFcCuj2 p8tYEYBLEpBXs+ftStITsvQ4hZUWHH5OdgkbVu+aF7YKCOV7YqvaZEfn+2N6xqfvTJFmp0Iit7+ TvX1h+xfN8i4865dKDjButM5/+CV5KU2amNaHiwPw2KwN9AqZbE7JTxniE8Fx1A== X-Gm-Gg: ASbGncv/NUoHksjJn6l2VjX7SPl+unvOOaiZ+MUo5sbWB15IACq4jU8cEYT42q460AS D3Gz6tFRHit8zISfli2cGkIyUsVPrF1de87WVG7AL/Whx8MI+APEj8OOjudvgH6vpn4ZLY5exfG USEyQhNLBGXBuvs5GqavcYbMWcguOotZpsN2+Ga/ae2QB6Br0G74fGZqPXXTw4Pp10jZUml/vJT xMlPd33i0XIycLjXKITC9945Art/Or/3SYuXIHTVpUz7+4NPV5zW2WRgak8l39iXymB5LrmLdEg aK8mNCfyVWiH7pEVtoFbtAtMnPiL1dwu9WTVkk5yj+9Rj0nIv+fik8RZmLnk5lq+ X-Received: by 2002:a05:6a20:cd91:b0:1ee:c6bf:7c49 with SMTP id adf61e73a8af0-1f2f4c9737emr11907714637.6.1740806972808; Fri, 28 Feb 2025 21:29:32 -0800 (PST) X-Google-Smtp-Source: AGHT+IH7H4GrfAx78nJG7F5CX/iS9FAye+KF4eMS7gclgBIkB3ukFG4x68E1GJFKxNKYIKi7wPmu9Q== X-Received: by 2002:a05:6a20:cd91:b0:1ee:c6bf:7c49 with SMTP id adf61e73a8af0-1f2f4c9737emr11907675637.6.1740806972414; Fri, 28 Feb 2025 21:29:32 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:32 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 33/39] target/hexagon: initialize sys/guest reg TCGvs Date: Fri, 28 Feb 2025 21:28:39 -0800 Message-Id: <20250301052845.1012069-34-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: xeQJpnThblSpZgjFUuaTg16ivtPYyuBP X-Proofpoint-GUID: xeQJpnThblSpZgjFUuaTg16ivtPYyuBP X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 adultscore=0 phishscore=0 malwarescore=0 spamscore=0 mlxscore=0 suspectscore=0 clxscore=1015 bulkscore=0 priorityscore=1501 mlxlogscore=834 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/translate.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c index ff881d1060..248ed60f29 100644 --- a/target/hexagon/translate.c +++ b/target/hexagon/translate.c @@ -1295,6 +1295,26 @@ void hexagon_translate_init(void) opcode_init(); +#ifndef CONFIG_USER_ONLY + for (i = 0; i < NUM_GREGS; i++) { + hex_greg[i] = tcg_global_mem_new(tcg_env, + offsetof(CPUHexagonState, greg[i]), + hexagon_gregnames[i]); + } + hex_g_sreg_ptr = tcg_global_mem_new_ptr(tcg_env, + offsetof(CPUHexagonState, g_sreg), "hex_g_sreg_ptr"); + for (i = 0; i < NUM_SREGS; i++) { + if (i < HEX_SREG_GLB_START) { + hex_t_sreg[i] = tcg_global_mem_new(tcg_env, + offsetof(CPUHexagonState, t_sreg[i]), + hexagon_sregnames[i]); + } else { + hex_g_sreg[i] = tcg_global_mem_new(hex_g_sreg_ptr, + i * sizeof(target_ulong), + hexagon_sregnames[i]); + } + } +#endif for (i = 0; i < TOTAL_PER_THREAD_REGS; i++) { hex_gpr[i] = tcg_global_mem_new(tcg_env, offsetof(CPUHexagonState, gpr[i]), From patchwork Sat Mar 1 05:28:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997346 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7B3A9C021B8 for ; Sat, 1 Mar 2025 05:34:22 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFPz-0002Qv-Lo; Sat, 01 Mar 2025 00:29:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPv-00024E-3v for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:39 -0500 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 1toFPt-0008Ul-28 for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:38 -0500 Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5213KHTq007066 for ; Sat, 1 Mar 2025 05:29:36 GMT 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= g+UyZcX4bAUK+4tirk8dh2KZ5d43j5Zo+4gMsvAk25g=; b=Le3RHcXBNYet4+57 21cTlUvJBtMsgV138vwrCda1PsKOX3FIeAo9VAAAXd9R710/xcAMvqozYPd8uGUw H0V6Zwvy6XmEpOLA3Qp7GVdtpbzWjyWVYQLn+rKd8O/JBF6uTQT/uN7c49AWdiYT Y/riHeX5I4veKbws7wW6yL0SBDxx8ZbVqqlFs4RL5bqDEszlIOkcD3iOkvVAdtS9 2dSqImbwV1i6ia0/ZDGRXQ/aA2iewy/g5DBE3UHyIeQlRvNfVSFP+U/RQdu9G9wO lDwZrJugi/mohJes3+3gHYFlVr8GOf658wt76VCNAU038XLS37NUh1gHPCh5h1KI C/9I2g== 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 453t88r6dc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:36 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-2fe8de1297eso5818820a91.0 for ; Fri, 28 Feb 2025 21:29:35 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806974; x=1741411774; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=g+UyZcX4bAUK+4tirk8dh2KZ5d43j5Zo+4gMsvAk25g=; b=VDZW1W5bUBwOVOys++a5vgmEMl4wSJhd7LFvjQYM2VQA7EpGF3Oacnq5X/aV/FC9cA +iETgbpgdLJ2OX90K82XKC0F159Z+Xcd9pxw+7qGBm8LKflhfIB0/SVR7ulcN+gOph9Q iEkbKjpSrDc4eJc8FQjlcsiUKxQRl6spX2UvP8pKSijGWlNK8Q5qonwBEuQqSCH7eeu/ ZLhYegF/6uejdzRakLcY+gohxSwxbKP06RsN5EQQrkMVHOPzHVla/vGbvlmLwD6U4hE+ WegE7FYCG4OqgNfSBkMmHb8Ou0p6kfGCsJqAEiIhjOpfOSBSU51/YsTIsj2R9mmEWjpZ 1mOA== X-Gm-Message-State: AOJu0YxeddjiS470peZc6uqfAIhgYiok9+6KPrtDxFlVeoOQMZ5BlJp1 0pkCFONlWjzYcqrCOqd1Oyi7RFfEFPc3D4/ZIPq+UJvNl2qsTFZBA1CQAE4fVuZeNUuhWelMtyY HutphWav9vtSitPeDWSMBmr4FJLPtKoAxUx2Qp3q8fc950S1axJLF5K2U59MezQ== X-Gm-Gg: ASbGnct7Wu495ifsZ6CcmoVnAEeWSjhjPW/udCKvig2yPAByZcX3MSQl/FH5p2XfMto nZ/53//bTm4ayrLI7BFvlPyXEGD8Z3RzQpcdA/H10qWvvjl6DohKQ8DeMkc9IkTm1TknYk/ebR1 NNJ0wzVrhUFwkPQoHtT5g2v+2R2QOCM9OIjCiBHVU0oYspJqWYDwinjwr3iqhhq8K0Pwi1Qjec1 uTaBfSvF5R0ZwYhnoFAPkYYcLUPRZOSln3cGAlpxlva2Ql0Pvi6OuyJeKILx8+CqZ2SYedO5BfE p6ftTVarahUFAi7c+c8CB0uAo5IEuz+IUPeTJkuYgRF4fYGIFOhSq8glIFA+L93y X-Received: by 2002:a17:90b:4ac6:b0:2f6:e47c:1750 with SMTP id 98e67ed59e1d1-2feba9325ffmr10351063a91.13.1740806974513; Fri, 28 Feb 2025 21:29:34 -0800 (PST) X-Google-Smtp-Source: AGHT+IGzem81o/RziQDwlfTtxGeaMHumfRLa01xuM1ErnVW/o89RyJ6LbjylXHhZMZhK7Sf/K1e8ZQ== X-Received: by 2002:a17:90b:4ac6:b0:2f6:e47c:1750 with SMTP id 98e67ed59e1d1-2feba9325ffmr10351034a91.13.1740806974143; Fri, 28 Feb 2025 21:29:34 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:33 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 34/39] target/hexagon: Add TLB, k0 {un,}lock Date: Fri, 28 Feb 2025 21:28:40 -0800 Message-Id: <20250301052845.1012069-35-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: SbOeGx5QymZQFIdFNzdHSq7NGrQ4lLCV X-Proofpoint-GUID: SbOeGx5QymZQFIdFNzdHSq7NGrQ4lLCV X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 suspectscore=0 impostorscore=0 spamscore=0 phishscore=0 lowpriorityscore=0 malwarescore=0 priorityscore=1501 mlxlogscore=612 mlxscore=0 clxscore=1015 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 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: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/sys_macros.h | 8 +-- target/hexagon/op_helper.c | 104 ++++++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+), 4 deletions(-) diff --git a/target/hexagon/sys_macros.h b/target/hexagon/sys_macros.h index 3c4c3c7aa5..e5dc1ce0ab 100644 --- a/target/hexagon/sys_macros.h +++ b/target/hexagon/sys_macros.h @@ -143,11 +143,11 @@ #define fDCINVIDX(REG) #define fDCINVA(REG) do { REG = REG; } while (0) /* Nothing to do in qemu */ -#define fSET_TLB_LOCK() g_assert_not_reached() -#define fCLEAR_TLB_LOCK() g_assert_not_reached() +#define fSET_TLB_LOCK() hex_tlb_lock(env); +#define fCLEAR_TLB_LOCK() hex_tlb_unlock(env); -#define fSET_K0_LOCK() g_assert_not_reached() -#define fCLEAR_K0_LOCK() g_assert_not_reached() +#define fSET_K0_LOCK() hex_k0_lock(env); +#define fCLEAR_K0_LOCK() hex_k0_unlock(env); #define fTLB_IDXMASK(INDEX) \ ((INDEX) & (fPOW2_ROUNDUP(fCAST4u(env_archcpu(env)->num_tlbs)) - 1)) diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index 702c3dd3c6..f3b14fbf58 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -1184,6 +1184,110 @@ void HELPER(modify_ssr)(CPUHexagonState *env, uint32_t new, uint32_t old) BQL_LOCK_GUARD(); hexagon_modify_ssr(env, new, old); } + +static void hex_k0_lock(CPUHexagonState *env) +{ + BQL_LOCK_GUARD(); + g_assert((env->k0_lock_count == 0) || (env->k0_lock_count == 1)); + + uint32_t syscfg = arch_get_system_reg(env, HEX_SREG_SYSCFG); + if (GET_SYSCFG_FIELD(SYSCFG_K0LOCK, syscfg)) { + if (env->k0_lock_state == HEX_LOCK_QUEUED) { + env->next_PC += 4; + env->k0_lock_count++; + env->k0_lock_state = HEX_LOCK_OWNER; + SET_SYSCFG_FIELD(env, SYSCFG_K0LOCK, 1); + return; + } + if (env->k0_lock_state == HEX_LOCK_OWNER) { + qemu_log_mask(LOG_GUEST_ERROR, + "Double k0lock at PC: 0x%x, thread may hang\n", + env->next_PC); + env->next_PC += 4; + CPUState *cs = env_cpu(env); + cpu_interrupt(cs, CPU_INTERRUPT_HALT); + return; + } + env->k0_lock_state = HEX_LOCK_WAITING; + CPUState *cs = env_cpu(env); + cpu_interrupt(cs, CPU_INTERRUPT_HALT); + } else { + env->next_PC += 4; + env->k0_lock_count++; + env->k0_lock_state = HEX_LOCK_OWNER; + SET_SYSCFG_FIELD(env, SYSCFG_K0LOCK, 1); + } + +} + +static void hex_k0_unlock(CPUHexagonState *env) +{ + BQL_LOCK_GUARD(); + g_assert((env->k0_lock_count == 0) || (env->k0_lock_count == 1)); + + /* Nothing to do if the k0 isn't locked by this thread */ + uint32_t syscfg = arch_get_system_reg(env, HEX_SREG_SYSCFG); + if ((GET_SYSCFG_FIELD(SYSCFG_K0LOCK, syscfg) == 0) || + (env->k0_lock_state != HEX_LOCK_OWNER)) { + qemu_log_mask(LOG_GUEST_ERROR, + "thread %d attempted to unlock k0 without having the " + "lock, k0_lock state = %d, syscfg:k0 = %d\n", + env->threadId, env->k0_lock_state, + GET_SYSCFG_FIELD(SYSCFG_K0LOCK, syscfg)); + g_assert(env->k0_lock_state != HEX_LOCK_WAITING); + return; + } + + env->k0_lock_count--; + env->k0_lock_state = HEX_LOCK_UNLOCKED; + SET_SYSCFG_FIELD(env, SYSCFG_K0LOCK, 0); + + /* Look for a thread to unlock */ + unsigned int this_threadId = env->threadId; + CPUHexagonState *unlock_thread = NULL; + CPUState *cs; + CPU_FOREACH(cs) { + CPUHexagonState *thread = cpu_env(cs); + + /* + * The hardware implements round-robin fairness, so we look for threads + * starting at env->threadId + 1 and incrementing modulo the number of + * threads. + * + * To implement this, we check if thread is a earlier in the modulo + * sequence than unlock_thread. + * if unlock thread is higher than this thread + * thread must be between this thread and unlock_thread + * else + * thread higher than this thread is ahead of unlock_thread + * thread must be lower then unlock thread + */ + if (thread->k0_lock_state == HEX_LOCK_WAITING) { + if (!unlock_thread) { + unlock_thread = thread; + } else if (unlock_thread->threadId > this_threadId) { + if (this_threadId < thread->threadId && + thread->threadId < unlock_thread->threadId) { + unlock_thread = thread; + } + } else { + if (thread->threadId > this_threadId) { + unlock_thread = thread; + } + if (thread->threadId < unlock_thread->threadId) { + unlock_thread = thread; + } + } + } + } + if (unlock_thread) { + cs = env_cpu(unlock_thread); + unlock_thread->k0_lock_state = HEX_LOCK_QUEUED; + SET_SYSCFG_FIELD(unlock_thread, SYSCFG_K0LOCK, 1); + cpu_interrupt(cs, CPU_INTERRUPT_K0_UNLOCK); + } + +} #endif From patchwork Sat Mar 1 05:28:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997348 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 9F7ECC021B8 for ; Sat, 1 Mar 2025 05:34:42 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFQ2-0002gV-1z; Sat, 01 Mar 2025 00:29:46 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPw-0002Aw-PX for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:40 -0500 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 1toFPu-0008Uz-GQ for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:40 -0500 Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5213KHTr007066 for ; Sat, 1 Mar 2025 05:29:37 GMT 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= l2T1zL6OhJjTcDmbWt72puUBYUvtOanT7vJYSzjv2ms=; b=BzfXbsQteQp0n2sr oDs8I+kn00O1uW07NtjQdRGpzisFPv/zg9vRs7WtA1hSO1m1o14htOPLLgiBrn/e dM9Ho7UaUh2r/olayQhQZ97EqZWAwS7QH2s0rH7JrGcVRCkoHTSbiivgA3pLT3g4 dqOUCOx/cWqONePHs/X0KgVE+ezGlh3Gtvos+jkysHRmrhnHSRFMIHOX43I3a69p o3kLmDEkF6viskvZbcmQ5MkhZVugFs27xqVTr6/ULbeV21NLnMK6aBc/q7KRrGFx nMcmkXdFVtj8JnEAvFR4eqbN8L/uuNGAP+5qIjndVz9CuL5Zkyv/d3HKV1HmM5lM 5bG4FA== 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 453t88r6dg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:37 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-2feb8d29740so3587509a91.1 for ; Fri, 28 Feb 2025 21:29:37 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806976; x=1741411776; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=l2T1zL6OhJjTcDmbWt72puUBYUvtOanT7vJYSzjv2ms=; b=bom28AD3jk7TRAdGgQnHiIel8CBjndjOLZW4UY6jdmgHwwbLKZI45sZsfEoBRIGmGN aiYctdQvE9xO4XcMu7Pq95RTqycv4ctXPDPp5V++6yoFRUqRlRWWEOHLZL7XZONSjipw FcqKyAPaIvoI4R9hYq21ZVBPp5mkVxgXaa3YBKl00wBh6e4o77XccUvbjKdGEfPqG4sI lYMosLN1O6Y1Oi/CIpu2WZK1d9Xh+pOmQ3sYlq8y8elNajgzrMDP4DCw6Ds4yRYgXZNN qxDz8VdJGXUnMtqtVjkOAK75RW56mOn65J4qKXvfa1+bhNRCnMVF67rT2DrJFOam45sj NMGA== X-Gm-Message-State: AOJu0YybaMNFhfVeqqBDQ1oh34ORjX5TVMtTeSFjRogZeVuAVwSU+I3N +HEtsp4AshoYgelui9kcTy/mOe5jZe+5YHL9Z9S0s7l+oS0E7dyASZvm1FR5gAjTcVR2eZnAVWb AQ0h/+43Hm73WOrv2aXchXzWZfc3RX/apeaMz70qQf1g8RzLcSckTzzB06pk3Jw== X-Gm-Gg: ASbGncslgP2YUXjZrmpDtnf1WNmmmcNdvHFr+6L/2PWBMLmzVeyHCNr8C9BxBsJkGkw 5ZygDLEsUSfMva1yui0x0tKYE6UzVDWi+5py6EUACNe3kYQe/Z6ft5dAS8bD0nTKuxQ+NIZT56v EU9KMAbyyKJ3d4grPKQnY+vQ/ZmLt6Wi5ClSTfCm2wGbBDPhDGf/fZYW58DdNFMsQ+wxJr68FmK rWuyDAGa1W21jnq1Z5y0qFvMHyJcbsYzDyb/9wnFndimWvcczN7JXqM6zyMI8smRbEoG7syUD7q tBVho2WyQ3mEFINbhCHEahtKuts+FZaCimcyznAtKk7Ct2gGjwi406jRH9X0xFpl X-Received: by 2002:a17:90b:1d81:b0:2ee:d7d3:3019 with SMTP id 98e67ed59e1d1-2febab5ba82mr11536995a91.12.1740806975863; Fri, 28 Feb 2025 21:29:35 -0800 (PST) X-Google-Smtp-Source: AGHT+IFzEtVv8c65AGTZbCmN/Cov6WRgCcOjGwzbki2igKQlAVNFtNdobooT2qu1Yyw1T0nvIYisXw== X-Received: by 2002:a17:90b:1d81:b0:2ee:d7d3:3019 with SMTP id 98e67ed59e1d1-2febab5ba82mr11536973a91.12.1740806975440; Fri, 28 Feb 2025 21:29:35 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:35 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 35/39] target/hexagon: Define gen_precise_exception() Date: Fri, 28 Feb 2025 21:28:41 -0800 Message-Id: <20250301052845.1012069-36-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: DrR967Uemd7DBHf9CFzPIn1aMZHsKGRz X-Proofpoint-GUID: DrR967Uemd7DBHf9CFzPIn1aMZHsKGRz X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 suspectscore=0 impostorscore=0 spamscore=0 phishscore=0 lowpriorityscore=0 malwarescore=0 priorityscore=1501 mlxlogscore=999 mlxscore=0 clxscore=1015 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 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: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Add PC to raise_exception helper Replace the fGEN_TCG_J2_trap0 macro override with the fTRAP()-generated system helper instead. Signed-off-by: Brian Cain --- target/hexagon/gen_tcg.h | 7 ------- target/hexagon/helper.h | 2 +- target/hexagon/op_helper.c | 10 ++++------ target/hexagon/translate.c | 13 ++++++++----- 4 files changed, 13 insertions(+), 19 deletions(-) diff --git a/target/hexagon/gen_tcg.h b/target/hexagon/gen_tcg.h index 71f8a0e2d0..146aadc737 100644 --- a/target/hexagon/gen_tcg.h +++ b/target/hexagon/gen_tcg.h @@ -1370,13 +1370,6 @@ #define fGEN_TCG_S2_storew_rl_st_vi(SHORTCODE) SHORTCODE #define fGEN_TCG_S4_stored_rl_st_vi(SHORTCODE) SHORTCODE -#define fGEN_TCG_J2_trap0(SHORTCODE) \ - do { \ - uiV = uiV; \ - tcg_gen_movi_tl(hex_gpr[HEX_REG_PC], ctx->pkt->pc); \ - TCGv excp = tcg_constant_tl(HEX_EVENT_TRAP0); \ - gen_helper_raise_exception(tcg_env, excp); \ - } while (0) #endif #define fGEN_TCG_A2_nop(SHORTCODE) do { } while (0) diff --git a/target/hexagon/helper.h b/target/hexagon/helper.h index 3df663baeb..5bcb2f4809 100644 --- a/target/hexagon/helper.h +++ b/target/hexagon/helper.h @@ -18,7 +18,7 @@ #include "internal.h" #include "helper_protos_generated.h.inc" -DEF_HELPER_FLAGS_2(raise_exception, TCG_CALL_NO_RETURN, noreturn, env, i32) +DEF_HELPER_FLAGS_3(raise_exception, TCG_CALL_NO_RETURN, noreturn, env, i32, i32) DEF_HELPER_2(commit_store, void, env, int) DEF_HELPER_3(gather_store, void, env, i32, int) DEF_HELPER_1(commit_hvx_stores, void, env) diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index f3b14fbf58..3bd4e2a872 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -69,15 +69,13 @@ G_NORETURN void hexagon_raise_exception_err(CPUHexagonState *env, uint32_t exception, uintptr_t pc) { - CPUState *cs = env_cpu(env); - qemu_log_mask(CPU_LOG_INT, "%s: %d\n", __func__, exception); - cs->exception_index = exception; - cpu_loop_exit_restore(cs, pc); + do_raise_exception(env, exception, pc, 0); } -G_NORETURN void HELPER(raise_exception)(CPUHexagonState *env, uint32_t excp) +G_NORETURN void HELPER(raise_exception)(CPUHexagonState *env, uint32_t excp, + target_ulong PC) { - hexagon_raise_exception_err(env, excp, 0); + hexagon_raise_exception_err(env, excp, PC); } void log_store32(CPUHexagonState *env, target_ulong addr, diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c index 248ed60f29..f4133a1049 100644 --- a/target/hexagon/translate.c +++ b/target/hexagon/translate.c @@ -124,9 +124,10 @@ intptr_t ctx_tmp_vreg_off(DisasContext *ctx, int regnum, return offset; } -static void gen_exception_raw(int excp) +static void gen_exception(int excp, target_ulong PC) { - gen_helper_raise_exception(tcg_env, tcg_constant_i32(excp)); + gen_helper_raise_exception(tcg_env, tcg_constant_i32(excp), + tcg_constant_tl(PC)); } #ifndef CONFIG_USER_ONLY @@ -221,9 +222,11 @@ static void gen_end_tb(DisasContext *ctx) void hex_gen_exception_end_tb(DisasContext *ctx, int excp) { - gen_exec_counters(ctx); - tcg_gen_movi_tl(hex_gpr[HEX_REG_PC], ctx->next_PC); - gen_exception_raw(excp); +#ifdef CONFIG_USER_ONLY + gen_exception(excp, ctx->pkt->pc); +#else + gen_precise_exception(excp, ctx->pkt->pc); +#endif ctx->base.is_jmp = DISAS_NORETURN; } From patchwork Sat Mar 1 05:28:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997327 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1F2D1C282D0 for ; Sat, 1 Mar 2025 05:30:50 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFQD-0003qQ-9G; Sat, 01 Mar 2025 00:29:57 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFQ9-0003JI-7c for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:53 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFQ5-0008V9-Ks for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:52 -0500 Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5213NWhX027683 for ; Sat, 1 Mar 2025 05:29:38 GMT 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= RhF45BDDcsKwjvuyo2XiQ9b81apjy0CuFDQnbMbTwfM=; b=c4cVAEHqD0r+FV2q JvKCPNpFZW3ydUE1aSDllB3waJ4dIigByHi/FXYeZdkGKeaQT25EQsFvYRMtvfVh 0lvXHkNk7NYErPytGW+tuYBXgX/Be3Qv4n5J3wH4rmYnRDiy8TTvTlctsHcQDHwr 7LYOCVGpoJep06BuX0Kshise4Uc6cSlGv3qVl61ErV/XHwe/1DbGzl+3EU3jnNfB GLhnCjipvHHuaMsYf/WnsyK1kn9Abx3valPNXZQLENkiOHm7N8+cmanleABywk88 Aq2EHEfF123pxOqUM4xCRUOUsX0xRKCFQPD5hpJxctAFhxpo+iZ+OK4f2ZMJ35rr RDs6qQ== 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 453t9905sq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:38 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-2fe916ba298so5763179a91.1 for ; Fri, 28 Feb 2025 21:29:38 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806977; x=1741411777; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=RhF45BDDcsKwjvuyo2XiQ9b81apjy0CuFDQnbMbTwfM=; b=m0Xa4jMFyMkzgPk3spJ8xTWo4GEJZT7LCpgAJFDaHwZGXadpGJyUCycmyUgptypGZm lx1BhkSwu+4+Y1Aeze/t8eG/BNMzAUDtv6ydpHyZQ3zgVqNMOu/HYcPFgZj30pGIJ2KB 6nd9hLPqfqKKc1Dse0h776NhVFvcyKz4zrs6p3q0aN6xNAjoR2nB8ASwCz/JBTWnCggp MQTvloiJaJXYED1854IWRIGSO9y1U7AiO5rLfdK7mzxzlkC2+34AX3LFf2E2+vB0Jcql hs1oRjuN0m3IrNax5ww89klejfY5X4v7iR7WQt+yc+ma6Kd+V31ZgDLWELYQF06AdOBP U/GQ== X-Gm-Message-State: AOJu0Yy3CXk34P5F4kujh0Tv+AxYWTUcYrp76/rkVylOXRlRU8lb1TuW VqC85JQnpHQ/NYKUWTU/ljXJ4k2GOa7Wq5fIyuQ5BI4ek5G27V1YbrMVy6XJrnT2aaLMqPcBV3X qrdmK5aA50x4B426HtvIDjNMMqjZ7FrOz2pUxrHrpxyKFMom6Nt48UWRRmuIoXQ== X-Gm-Gg: ASbGnctcrl8ai8vygBLV4HhTC86kfENhoIVU9YjTIyhNKaG0FtwR3f0CgDzWTTcDaLb CuL3YRCrh25nSMnl4Emac/lhr1GIQiba5vjbREeuQaShxxMp+Hzr2FYC5il/Jgd5YyhGhwUSrNR NPiLBbwtJK/y07JtSVfcHiyZpjtUt63mUoiPTD4Q7LQo2SsiGxJfs16/5f+bK2NN6rcG+/pvdug c9ky6UcHVHXTR7r5OvWp0eSj0WdDB+XD7Zep2Lq9DAMGWzT0UxdFWgwaTL/k1uYEcIE1dEl6nuo n5vWqhyZV0pFdXPCjYKHsXpibrXTqVkXJUjo3YKxRhg1CSlEDgof5uOQVZBPDzR9 X-Received: by 2002:a17:90b:1e44:b0:2ee:5edc:4b2 with SMTP id 98e67ed59e1d1-2febab78d59mr10304774a91.20.1740806977105; Fri, 28 Feb 2025 21:29:37 -0800 (PST) X-Google-Smtp-Source: AGHT+IH6XvohxLjysGis56/138znIkTak748BqIdTHxJNjdxxV0YxnGROxAzPXnTDe/Y/kk0bKWlMg== X-Received: by 2002:a17:90b:1e44:b0:2ee:5edc:4b2 with SMTP id 98e67ed59e1d1-2febab78d59mr10304759a91.20.1740806976786; Fri, 28 Feb 2025 21:29:36 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:36 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 36/39] target/hexagon: Add TCG overrides for transfer insts Date: Fri, 28 Feb 2025 21:28:42 -0800 Message-Id: <20250301052845.1012069-37-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: eSEbXkvoWBtT4-dv6A0kIkv6wnjEtJ7_ X-Proofpoint-GUID: eSEbXkvoWBtT4-dv6A0kIkv6wnjEtJ7_ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 mlxlogscore=551 mlxscore=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 clxscore=1015 spamscore=0 adultscore=0 impostorscore=0 malwarescore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/gen_tcg_sys.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/target/hexagon/gen_tcg_sys.h b/target/hexagon/gen_tcg_sys.h index 6d73a18db4..e56553462f 100644 --- a/target/hexagon/gen_tcg_sys.h +++ b/target/hexagon/gen_tcg_sys.h @@ -81,6 +81,31 @@ gen_helper_stop(tcg_env); \ } while (0) +#define fGEN_TCG_Y2_tfrscrr(SHORTCODE) \ + tcg_gen_mov_tl(RdV, SsV) + +#define fGEN_TCG_Y2_tfrsrcr(SHORTCODE) \ + tcg_gen_mov_tl(SdV, RsV) + +#define fGEN_TCG_Y4_tfrscpp(SHORTCODE) \ + tcg_gen_mov_i64(RddV, SssV) + +#define fGEN_TCG_Y4_tfrspcp(SHORTCODE) \ + tcg_gen_mov_i64(SddV, RssV) + +#define fGEN_TCG_G4_tfrgcrr(SHORTCODE) \ + tcg_gen_mov_tl(RdV, GsV) + +#define fGEN_TCG_G4_tfrgrcr(SHORTCODE) \ + tcg_gen_mov_tl(GdV, RsV) + +#define fGEN_TCG_G4_tfrgcpp(SHORTCODE) \ + tcg_gen_mov_i64(RddV, GssV) + +#define fGEN_TCG_G4_tfrgpcp(SHORTCODE) \ + tcg_gen_mov_i64(GddV, RssV) + + /* * rte (return from exception) * Clear the EX bit in SSR From patchwork Sat Mar 1 05:28:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997343 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 89970C282CD for ; Sat, 1 Mar 2025 05:33:58 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFQ2-0002lz-Ue; Sat, 01 Mar 2025 00:29:47 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFPy-0002OT-Ib for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:42 -0500 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 1toFPw-0008VU-Ol for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:42 -0500 Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5213KIX3007085 for ; Sat, 1 Mar 2025 05:29:40 GMT 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= agl+X7U3TeTeYgu+MUvUQYl9XGWMQ3XQNHFltF38jOw=; b=A8t51reKOhnZ6iEF 8HoiPpH+0kVa8L4LyuQl/B8fatYBbfn5Dzc3g6860LNcPKk/5/ODbbe+iffXQ2jI L5itZ9EDYgcq2xRlZwX/qwpcM+R0xwvkkD+oCDobGjcYT7dGYDlVpJXWrAoZwGBR zUa368rgbXWmYy2TqT6HK2jWx8eCSyfR04iQ8aBfdIuWOBX4uaV0eOM/hUN5kgq+ F4K3wfWsy5sfy8pw57jESBITtPZbnIWIbsdXPmbodQUBhwgI1jCwNNbrrJRRLwvN bTKa0JPeYkc9HAdkuNARvKnfPbMYdjqZt7xO7A//BvUCXqdxI+TdtQ8b20xpeXUy Zjecng== 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 453t88r6dk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:39 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-2feb47c6757so3929158a91.3 for ; Fri, 28 Feb 2025 21:29:39 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806978; x=1741411778; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=agl+X7U3TeTeYgu+MUvUQYl9XGWMQ3XQNHFltF38jOw=; b=wPOxYnE7Qhh6aPhd8egLXpwSzNzsaBYd/Y52dfxsPFy6mlK1uQCwfaG5+Kel5CijT/ YuvfJMCdI7NHjvev4ne0/o9WYlOXqfbuIOaQP7a7J2zxQEKIcJQm0w2/5AJV0EMrHLEB wsbS6i7mO66/a2zZnvQ3K78ccdW5N/9OOGK+n3zG4E5pwmrxmDuXGL/+zL1sbisPri79 qCJmIMcGPmIknTaiE6SQOnTDAl166AhBITjycqDlGi1bhljYNkyBWqMOelgxs++cj7Rk ItFed8YXB3kllwrgeg++tSJshe1J1jRoX8oNwF5OPeRfFdfUKYu9xEybru4DTJloROQT 2WrQ== X-Gm-Message-State: AOJu0Yzf+G9l6ONlpZ6Tn/tDKEXVGpcLTusTXMTqR3hR83rLJ9xrg9e9 CR9+3BxrQsFklo4cSKJcArSpIq2HSy1kmWpnG6uic317A8OnGtdvCLBfQec1CaQwfxtECyCwDE0 40Y+/daWYlDaPlfo080iLA2vj6+aiZSV0Bk9N30d8F048unv8x4P73DWqZUsfaA== X-Gm-Gg: ASbGncv24g35JRKOt8ZTILKiCwbAiBqb8ToZ9b2OMGQmFmPvr5oa4YB33HzcaZOUSKQ 20wtyOK7v46xlaBS14aZcHtXL/yt5kCAcYFxV7r/Gz+TSut2Gvb2PP1Fw8V8P4wcOcrWWWF6mxO 30BiUicy8cJcPdLNkS24Ct1dyfU/2EXE0Up4uEfUz3hYmE3s02SmMq3/bwS3O1VyzMtzKcWtg2M d2nHWk8wVWj7Kj9yCtzeVCBVCBcr3sUqibFL++hLY6GEssKVZAaIB/H/lAnP4XOORAd8Wg1H7r8 sfjRBLrFSGTs5/jnoUd1PTLk6kWb4hyW688AX4l1OTfYH+k9FVWOWwXX6DOgLZ+L X-Received: by 2002:a17:90a:e7d2:b0:2fe:8a84:e033 with SMTP id 98e67ed59e1d1-2febab1f4c1mr10180440a91.2.1740806978358; Fri, 28 Feb 2025 21:29:38 -0800 (PST) X-Google-Smtp-Source: AGHT+IGyDjB8yxKn0F2tCJkUHO+cVsJWag26XFsB9IntHpmfVTwcfHMe0g3Krg76JcVyFfig7sfEug== X-Received: by 2002:a17:90a:e7d2:b0:2fe:8a84:e033 with SMTP id 98e67ed59e1d1-2febab1f4c1mr10180423a91.2.1740806977988; Fri, 28 Feb 2025 21:29:37 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:37 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain Subject: [PATCH 37/39] target/hexagon: Add support for loadw_phys Date: Fri, 28 Feb 2025 21:28:43 -0800 Message-Id: <20250301052845.1012069-38-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: gu2IAcS2YThlzHqJyG8Ab8QgWhtjZtpN X-Proofpoint-GUID: gu2IAcS2YThlzHqJyG8Ab8QgWhtjZtpN X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 suspectscore=0 impostorscore=0 spamscore=0 phishscore=0 lowpriorityscore=0 malwarescore=0 priorityscore=1501 mlxlogscore=792 mlxscore=0 clxscore=1015 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 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: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Brian Cain Signed-off-by: Brian Cain --- target/hexagon/hex_common.py | 3 +++ target/hexagon/imported/encode_pp.def | 1 + target/hexagon/imported/ldst.idef | 3 +++ 3 files changed, 7 insertions(+) diff --git a/target/hexagon/hex_common.py b/target/hexagon/hex_common.py index 7b5bb2cd46..5e84efb403 100755 --- a/target/hexagon/hex_common.py +++ b/target/hexagon/hex_common.py @@ -266,6 +266,9 @@ def need_slot(tag): and "A_CVI_GATHER" not in attribdict[tag] and ("A_STORE" in attribdict[tag] or "A_LOAD" in attribdict[tag]) + and tag != "L4_loadw_phys" + and tag != "L6_memcpy" + and tag != "Y6_dmlink" ): return 1 else: diff --git a/target/hexagon/imported/encode_pp.def b/target/hexagon/imported/encode_pp.def index 37faf62b1b..41e4ab9e3a 100644 --- a/target/hexagon/imported/encode_pp.def +++ b/target/hexagon/imported/encode_pp.def @@ -388,6 +388,7 @@ DEF_ENC32(L4_return_fnew_pnt, ICLASS_LD" 011 0 000 sssss PP1010vv ---ddddd") /** Load Acquire Store Release Encoding **/ +DEF_ENC32(L4_loadw_phys, ICLASS_LD" 001 0 000 sssss PP1ttttt -00ddddd") DEF_ENC32(L2_loadw_locked, ICLASS_LD" 001 0 000 sssss PP000--- 000ddddd") DEF_ENC32(L4_loadd_locked, ICLASS_LD" 001 0 000 sssss PP010--- 000ddddd") diff --git a/target/hexagon/imported/ldst.idef b/target/hexagon/imported/ldst.idef index 53198176a9..4e1e5d5326 100644 --- a/target/hexagon/imported/ldst.idef +++ b/target/hexagon/imported/ldst.idef @@ -203,6 +203,9 @@ Q6INSN(S2_storew_locked,"memw_locked(Rs32,Pd4)=Rt32", ATTRIBS(A_REGWRSIZE_4B,A_M Q6INSN(L4_loadd_locked,"Rdd32=memd_locked(Rs32)", ATTRIBS(A_REGWRSIZE_8B,A_MEMSIZE_8B,A_LOAD,A_RESTRICT_SLOT0ONLY,A_RESTRICT_PACKET_AXOK,A_NOTE_AXOK), "Load double with lock", { fEA_REG(RsV); fLOAD_LOCKED(1,8,u,EA,RddV) }) +Q6INSN(L4_loadw_phys,"Rd32=memw_phys(Rs32,Rt32)", ATTRIBS(A_REGWRSIZE_4B,A_PRIV,A_RESTRICT_SLOT0ONLY,A_NOTE_PRIV,A_MEMSIZE_4B,A_LOAD,A_NOTE_NOPACKET,A_RESTRICT_NOPACKET), "Load word from physical address", +{ fLOAD_PHYS(1,4,u,RsV,RtV,RdV); }) + Q6INSN(S4_stored_locked,"memd_locked(Rs32,Pd4)=Rtt32", ATTRIBS(A_REGWRSIZE_8B,A_MEMSIZE_8B,A_STORE,A_RESTRICT_SLOT0ONLY,A_RESTRICT_PACKET_AXOK,A_NOTE_AXOK,A_RESTRICT_LATEPRED,A_NOTE_LATEPRED), "Store word with lock", { fEA_REG(RsV); fSTORE_LOCKED(1,8,EA,RttV,PdV) }) From patchwork Sat Mar 1 05:28:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997332 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 973ADC021B8 for ; Sat, 1 Mar 2025 05:31:19 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFQF-00044b-1W; Sat, 01 Mar 2025 00:29:59 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFQA-0003VI-PD for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:54 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFQ8-0008Vn-7s for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:54 -0500 Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5214eiN1031822 for ; Sat, 1 Mar 2025 05:29:41 GMT 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= +2Uu93RgWR6oL6wb6Fda56k1MooPgz2Lg2tWOd7viHI=; b=Q2uIPxKMOBGjTnkS vKxs3lzXX6DTVgjTeYnz8xUieSG/C8B/86TdJkJwqnOvCRcNzs+oUbgBQ5auE9IA ihugb3PxKBau3r2MPzxy5D5YI/FlsD7g1ySV85F1sQl7IuyV7kNlhepXgQuTShL9 7o2NKxPp4qq+Ex8pQnmOb/G+/yW2Ljrn09i9/rpuU7ebJcnssJZ8Ln1P+kwZuSg8 +vBRg4Tl/ZcuFO745IsZWQMhCdVWPMLUwMH05cKNCF2u64XxFhau6e/fJc+9DjGR 3iMOJmdL3/rKz/bBEDB8xt7NbJUXTJoJHLv+sSBRLis70/Ld8ub11SdYFy901JoG BiOkhw== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 453udgr2ay-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:40 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-223725a1e76so20314255ad.0 for ; Fri, 28 Feb 2025 21:29:40 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806980; x=1741411780; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+2Uu93RgWR6oL6wb6Fda56k1MooPgz2Lg2tWOd7viHI=; b=Ju7aZd5Vt+vxEClJp2miLZ/KFNYS8n/6G2YKyVe/bIB29gdo8HD9G4yWAa9Zi8i0xh lx16z3CQ+fI6e5U7FfXW4kmisDgHh64blXDiGdPVGa9FBPj0CV7ItoNTeW9S05oNNuQK EHcpQL/S5A8hXXQr/rBBJCl5K9y147bQLcucucCkz/str2nojWmtqpzikafMEWWLZZ5q 1K+0ioB4GLZjoGKyZXgpPf2vwlfxfGylDYRWIQCKD8c6Itgdr5uuv5gsWZUUip/20hBY 8uCWjBiWE9tnMBrkyMv3wkwoVbpANkgqvQ/u9D1tJaonD/95+PnMYMF8QZ5l2YnPOou6 9cPQ== X-Gm-Message-State: AOJu0YxebEcng0duarUFCTSgqAU90aoYbMvE/XoCOFQMzfmX9GKe0+eu xFVtNTn/f+XCc23YNPfCg7Gl13nFqd2pySh6JyT7I/13nKTGpJkSaqOoorj3/McSD7sjUevMjjj 1XEwvzQc185r3SRfb6Nc7s5jhCHQ0YWDgo4X3iaJo6xktGnMAiFMzbz8VHPzvgw== X-Gm-Gg: ASbGnctSgkCIZw4/2XWwcTtLdkqYOWZawzG6tM8K7briI12gdOeJYTk/61uM8qR6+gs q0uxrbL+e2YYxzKL+xuEZDdAZqw1UWlxuMxFp3H5iT5Uo11vERyp7z0VQA/FYWlWlAoEx7zecXX +vamjopJsKwHbHW7E1dns2AhSwwdpcSqYdWYLOnmnFfsMCdWAMUBQaLuYW3trP4I4QgOj7yvSQb dkX9lOBdDWmAtL/joxAFSGn1tjXw+yoS3a7rQX106Y/Y53b/SCHtq4z1RyAg6aKMwzNz4XR0zYQ IGdsanfaFHDv1obcZY8hcRem6sSjf/ru6tXVKv+MDZ1cm5+DgoLXBsS7rBFCeWAP X-Received: by 2002:a17:902:ef45:b0:223:653e:eb06 with SMTP id d9443c01a7336-223690e1497mr114207635ad.26.1740806979839; Fri, 28 Feb 2025 21:29:39 -0800 (PST) X-Google-Smtp-Source: AGHT+IFPa/IsZnnGAKvKU5ODffoAPuI3rOMGxJeW/K21ii4Y7w+TdZsQSl9/E+IBCdfBuOYFhCzFpw== X-Received: by 2002:a17:902:ef45:b0:223:653e:eb06 with SMTP id d9443c01a7336-223690e1497mr114207225ad.26.1740806979376; Fri, 28 Feb 2025 21:29:39 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:38 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com Subject: [PATCH 38/39] target/hexagon: Add guest reg reading functionality Date: Fri, 28 Feb 2025 21:28:44 -0800 Message-Id: <20250301052845.1012069-39-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: b_0N1umVmUVA-nfgdsqczqDNpl3KdS4f X-Proofpoint-ORIG-GUID: b_0N1umVmUVA-nfgdsqczqDNpl3KdS4f X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 clxscore=1015 lowpriorityscore=0 malwarescore=0 mlxscore=0 suspectscore=0 bulkscore=0 impostorscore=0 mlxlogscore=999 priorityscore=1501 phishscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org From: Matheus Tavares Bernardino Signed-off-by: Matheus Tavares Bernardino --- target/hexagon/cpu.c | 19 ++++++++++++++++++- target/hexagon/op_helper.c | 19 +++++++++++++++++-- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index 3c4776232e..80f5e23794 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -739,7 +739,24 @@ static void hexagon_cpu_class_init(ObjectClass *c, void *data) #ifndef CONFIG_USER_ONLY uint32_t hexagon_greg_read(CPUHexagonState *env, uint32_t reg) { - g_assert_not_reached(); + target_ulong ssr = arch_get_system_reg(env, HEX_SREG_SSR); + int ssr_ce = GET_SSR_FIELD(SSR_CE, ssr); + + if (reg <= HEX_GREG_G3) { + return env->greg[reg]; + } + switch (reg) { + case HEX_GREG_GPCYCLELO: + return ssr_ce ? hexagon_get_sys_pcycle_count_low(env) : 0; + + case HEX_GREG_GPCYCLEHI: + return ssr_ce ? hexagon_get_sys_pcycle_count_high(env) : 0; + + default: + qemu_log_mask(LOG_UNIMP, "reading greg %" PRId32 + " not yet supported.\n", reg); + return 0; + } } #endif diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index 3bd4e2a872..28b555e873 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -1877,13 +1877,28 @@ uint64_t HELPER(sreg_read_pair)(CPUHexagonState *env, uint32_t reg) } uint32_t HELPER(greg_read)(CPUHexagonState *env, uint32_t reg) + { - g_assert_not_reached(); + return hexagon_greg_read(env, reg); } uint64_t HELPER(greg_read_pair)(CPUHexagonState *env, uint32_t reg) + { - g_assert_not_reached(); + if (reg == HEX_GREG_G0 || reg == HEX_GREG_G2) { + return (uint64_t)(env->greg[reg]) | + (((uint64_t)(env->greg[reg + 1])) << 32); + } + switch (reg) { + case HEX_GREG_GPCYCLELO: { + target_ulong ssr = arch_get_system_reg(env, HEX_SREG_SSR); + int ssr_ce = GET_SSR_FIELD(SSR_CE, ssr); + return ssr_ce ? hexagon_get_sys_pcycle_count(env) : 0; + } + default: + return (uint64_t)hexagon_greg_read(env, reg) | + ((uint64_t)(hexagon_greg_read(env, reg + 1)) << 32); + } } void HELPER(setprio)(CPUHexagonState *env, uint32_t thread, uint32_t prio) From patchwork Sat Mar 1 05:28:45 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Cain X-Patchwork-Id: 13997369 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id DAFB4C021B8 for ; Sat, 1 Mar 2025 05:37:26 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFQI-0004Lp-4y; Sat, 01 Mar 2025 00:30:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFQB-0003cv-NH for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:55 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFQ9-0008W6-IJ for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:29:55 -0500 Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5214dhpY027225 for ; Sat, 1 Mar 2025 05:29:42 GMT 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= m7ve21Big8YOeoSFWM+5YYRxjYNcRFf4jgBnogSwwiM=; b=cIMtFetaX+qTPapi hOUf3fy2muUab4vX6Z0aJ4oyKM1HE5xr0Z2l0fK4upwwrPkxKDKVs3OlgcKCFqQY EPHZYtxm7NPnKlGuOCK51Isfn/u85gvnkZoASE7qYPnQ1HUkPsjynDGUoHKxvZHs ZMxxzbNYBpM67FLSHJZK3pdfacN+HTwuwdt79XiUFSlyTqHG6sBYCNHbhMDP3CZU U1KUV2fs3JsrO0AiHdocwN8W6+iQsxqQko73FPKIFgxg4bkeTAWYJzODNx54JLSD 9g/hotCWiGi/ePwb9UQ0Prdnp+jeAIV7+XpxmvHsQ3ElcfWRf78qGyQgMSqYDbYW FBn14g== Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 453udgr2b1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:29:42 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-22379af38e0so14447755ad.2 for ; Fri, 28 Feb 2025 21:29:42 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806981; x=1741411781; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=m7ve21Big8YOeoSFWM+5YYRxjYNcRFf4jgBnogSwwiM=; b=AjmCyRXSnJf6Vtc3Dv1sb2KrPNH1SQtj5aTHsTXtSQcbf+g9ICdlcFmQWQnMsMveEi 327VHlxnC9VYIhgtOF8xbAfkoxumEi+bGzjdkEqzZLfOmFokCrU38g8nEd+X8EbKahPm yXto03v6Vhoe2bBhFpjJagr2CYjud7UVT7sBnI1nAnr25mZ+alXQKqnuqQ03v4UuG5FC BYG32miO4dmvvPMsO3Bbr2g3WPLiHOi3Fcf9MuiwqD0lcxXhAbY4+kzTWQEsDdWbQDlz QH1cQeDSG1H4JMbQdVJnkr8r5jcrzC2KOcGS+gkyqqPYd1bBimlTX3Z+h7zZBvhybqds 4vNA== X-Gm-Message-State: AOJu0Yzll0BYxo0U5tCHOmSRWKd5bbAMkNidCETbwhDGYC5tWo3pei5j U3mV4w/EqLaSgz6gbLtrdSwfzbIf9RtBtNszfK3xr6JdhHGLm/huvYq2y4ZQ43bAP7MCNZ0WIrI dZmSOurvzTBEXnEMBgukGwA2yqq0AvXQRyDA/W/uX0Nudgz9UHo1s+y14gw+okg== X-Gm-Gg: ASbGnctvxPP1AhwNE+/m8I5iVj8MVFk0X9detPBsYXMGDMQkd/lnzJdUphWBFAFb3bE d5XTq2wsyw/982a79o30xZBwB4UzQ0Hk0wzPihq01XshCTYPnuWzjgN2LQxSM8tZmg3hFbzH3Kt MojgLgw+sedth6JGpmdww7TdMBEnK1FNrWObqNA4JV0P9BQylEVzVmZl7IcwuHbGzNLkQibKMRy yMmOA+swFUHcF9Jg3UTMTsKlvPL0iZgKFx7MHa++rLJULv/gDoTJYXVhSbjNL3aegWBe1qMo6VS /kjXPonSjAC41EZKfUcfRIkxbDDBcVsxKjcENIYHRIYmmnMxhmLJQp9aZ9zbgH/8 X-Received: by 2002:a17:902:d48f:b0:223:570d:b4b1 with SMTP id d9443c01a7336-22368f6ddf8mr105826935ad.1.1740806980985; Fri, 28 Feb 2025 21:29:40 -0800 (PST) X-Google-Smtp-Source: AGHT+IHK3n57yX3zMm3esW9LJrcdklibuQQw/TKXx3kaekWPw4l77ey3tyoevlcSPpUqlHlUTEqktQ== X-Received: by 2002:a17:902:d48f:b0:223:570d:b4b1 with SMTP id d9443c01a7336-22368f6ddf8mr105826645ad.1.1740806980656; Fri, 28 Feb 2025 21:29:40 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea67a5dc8sm4732955a91.23.2025.02.28.21.29.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:29:40 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com Subject: [PATCH 39/39] target/hexagon: Add pcycle setting functionality Date: Fri, 28 Feb 2025 21:28:45 -0800 Message-Id: <20250301052845.1012069-40-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> References: <20250301052845.1012069-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: RBjK4fBCfTX1B8BOYAX0sX9pHrND_-8S X-Proofpoint-ORIG-GUID: RBjK4fBCfTX1B8BOYAX0sX9pHrND_-8S X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 clxscore=1015 lowpriorityscore=0 malwarescore=0 mlxscore=0 suspectscore=0 bulkscore=0 impostorscore=0 mlxlogscore=544 priorityscore=1501 phishscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Signed-off-by: Brian Cain Signed-off-by: Matheus Tavares Bernardino --- target/hexagon/cpu.c | 10 +++++++--- target/hexagon/cpu_helper.c | 17 ++++++++++++++--- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index 80f5e23794..4ca6add834 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -440,19 +440,23 @@ static void hexagon_cpu_realize(DeviceState *dev, Error **errp) #endif qemu_init_vcpu(cs); -#ifndef CONFIG_USER_ONLY CPUHexagonState *env = cpu_env(cs); +#ifndef CONFIG_USER_ONLY hex_mmu_realize(env); if (cs->cpu_index == 0) { env->g_sreg = g_new0(target_ulong, NUM_SREGS); - env->g_pcycle_base = g_malloc0(sizeof(*env->g_pcycle_base)); } else { CPUState *cpu0 = qemu_get_cpu(0); CPUHexagonState *env0 = cpu_env(cpu0); env->g_sreg = env0->g_sreg; - env->g_pcycle_base = env0->g_pcycle_base; } #endif + if (cs->cpu_index == 0) { + env->g_pcycle_base = g_malloc0(sizeof(*env->g_pcycle_base)); + } else { + CPUState *cpu0 = qemu_get_cpu(0); + env->g_pcycle_base = cpu_env(cpu0)->g_pcycle_base; + } mcc->parent_realize(dev, errp); } diff --git a/target/hexagon/cpu_helper.c b/target/hexagon/cpu_helper.c index 9c44cb7950..08c749e9fa 100644 --- a/target/hexagon/cpu_helper.c +++ b/target/hexagon/cpu_helper.c @@ -70,18 +70,29 @@ uint32_t hexagon_get_sys_pcycle_count_low(CPUHexagonState *env) void hexagon_set_sys_pcycle_count_high(CPUHexagonState *env, uint32_t cycles_hi) { - g_assert_not_reached(); + uint64_t cur_cycles = hexagon_get_sys_pcycle_count(env); + uint64_t cycles = + ((uint64_t)cycles_hi << 32) | extract64(cur_cycles, 0, 32); + hexagon_set_sys_pcycle_count(env, cycles); } void hexagon_set_sys_pcycle_count_low(CPUHexagonState *env, uint32_t cycles_lo) { - g_assert_not_reached(); + uint64_t cur_cycles = hexagon_get_sys_pcycle_count(env); + uint64_t cycles = extract64(cur_cycles, 32, 32) | cycles_lo; + hexagon_set_sys_pcycle_count(env, cycles); } void hexagon_set_sys_pcycle_count(CPUHexagonState *env, uint64_t cycles) { - g_assert_not_reached(); + *(env->g_pcycle_base) = cycles; + + CPUState *cs; + CPU_FOREACH(cs) { + CPUHexagonState *env_ = cpu_env(cs); + env_->t_cycle_count = 0; + } } static void set_wait_mode(CPUHexagonState *env)