From nobody Sat Jul 25 20:49:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783991438; cv=none; d=zohomail.com; s=zohoarc; b=Un9UYaYY2tFzGtqTj5hKC56PxvoqqI3DjRcCbtrOU3awlUpu4Yb1l2JX/nG6e/7iLCF2uVEqpRWiShyqmGNfd/diajI6tIXvk2rtJt6FhMs/AbF6/JXMoki2NUBdpzhnmr74FlM8rx15CNJ5KMVMggwyihAIolhI/Eoolf4uVtU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783991438; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=2eU9v6pv6WfPzKOISL9RzdqH9lYuibIax/ORintYNUY=; b=b6AodVTlp/7WHAlRAunxfWhoQmIN1vDRcjFXPRgagM/4XW9nxHukJBXTsqAPgJYtuMm12WfFBVJRaRgeHDiecujrvsEHrRCdgHj4ojf4NE9Joo9Pepr2jq4aF42zddno7QWZzt/yqJHYrs7O6P4u2R5xYvsfM1nEwu9VoKsq9hY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783991438199812.3988214799156; Mon, 13 Jul 2026 18:10:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjRew-0000O6-0p; Mon, 13 Jul 2026 21:10:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjReu-0000N7-Fb for qemu-devel@nongnu.org; Mon, 13 Jul 2026 21:10:04 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjReq-0003ii-VE for qemu-devel@nongnu.org; Mon, 13 Jul 2026 21:10:02 -0400 Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66DNmeTj3007684 for ; Tue, 14 Jul 2026 01:09:59 GMT Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fcuj03rf3-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 14 Jul 2026 01:09:59 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-381abcccbf4so434205a91.3 for ; Mon, 13 Jul 2026 18:09:59 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-31174accb0esm76826246eec.30.2026.07.13.18.09.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 18:09:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 2eU9v6pv6WfPzKOISL9RzdqH9lYuibIax/ORintYNUY=; b=SF2gVfoK8BZRJ0SF yEBYFFZEE5Wp2n5zKGGLJbW/aYP3m2HLpt7C9Lhu2u7Hv4HQfKN0OOIEA1D1+6KQ RsJlKgkcsg8Gt9y1H8RuKBnvpt/0+SLZ124raTgMxHT7ovCfYJqwtJ8tRbRm9Nfq XGPSx9GyeL9o3zG2bugj1bIuQ3/w+XbI1VeGuDaMhJnon7/9xBvv83pFWre3vX7G jWS6Y3Vjx023EJKY0r7rmTWyI0u02t+dkt29UyPN5XtMMNA7LB5LJkd0zl2Nh/EZ 04TXbAE/d2ZawMQDolYFBdK3UcuubSi5nuyFVlnFnMFrLLt43eVtq7wfp9zOouqp eyvrbg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783991398; x=1784596198; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=2eU9v6pv6WfPzKOISL9RzdqH9lYuibIax/ORintYNUY=; b=AfjU7lr38XjOkgYa7ep/PMKbqVjLxfS/o8SGnAmqFzHn+AXgOs7O7D/BIKsxIlkN6N mNq7RrYBnOSQMywHnT3kZuKukNt/nSPkAPv14283Fs0X6aL5SFH0e7BXX4Oq7iuz4yxo slZmJqX8RHNNESvbWjywmBBmH/Cb48U7dZJ+ZwUqkpgjEt45JupcuCNoYmpzit0poqqZ cAJ9bwCiwmGpAKgeozDkz7NfB4xvD0KuvPWjrKggMAIqwaUfaqrnY7lh/bgd8blZHx5s yYHJ1/7oBjOxYoZ0ElrE6yc9QsOSSnJGYI8EeNTjMxMwv8bAWmcjBvIYuJQbL5qPZFvK +SjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783991398; x=1784596198; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=2eU9v6pv6WfPzKOISL9RzdqH9lYuibIax/ORintYNUY=; b=PJ1sGzUttoCvkZsxUDAWRd8ubgAr/2trIHOb7osJCBucjii9ArigsUV+wOKYjAku63 H3OEGBbb+t/NTSAclzI3WZs0IVKwX+HjLH0n7J96tBve+tZq0ZyY2l67Av3WD4Eg2mXN Pt9miicXZKHcfqwP+rIteDJi1HJAGSGR2jTWh9YjAekzabG/Kde63NQPbx2+laXc5Djy Rz0p6sxZzVnDfADILhFzjVjMjJMvrkhkeCWElmKGm5vB175qZIVaUo6tU6BiswqF/fYK lDHSfcvI5iVnUs5SupHtoy/0X9NrwRGJtECknG2k2Qb/32kgJ5M/m8fRd5hFCxS2+B1t K6Ww== X-Gm-Message-State: AOJu0Yz5reR59nNYRreWXRTi6++D4XUIKntKEWMi84M066/zruP8Yu/8 KC15+Jx3Bvj8FwF2I5s1LdzQ/EnTc/za9CdHUBOfstbYcVBDCpyGC9ea0iSQsebIajh/mBMUXJX BaJGrqZwb48hKJE6Fw6bDxLsgGkpq8OUDO3NJCgGhxV3ZRxzSqQZ9dRREsot/X35s6g== X-Gm-Gg: AfdE7cn3UxQ6nsYImf4s6Di5tLhRr4zEosWmdz5alWJGYxyl6tCMx5chKCXDr4Xqt1g On5pJcQZZ2iq2fa3+ne483wrGki9Ji+Tu1P977385QboGLof7s/aSWdx4oLPSYnH+dy80xHZfdp zYggdeXChDhZ7xE70aS2ZTukbX/g/IdqiE+Q6vZ9duFp7wrnVgOWHWNe4Do0PTmLakqfMhrF7df +F+byHPYAhwlQ/WOLDbWT0g6TlnVVlM47Ccbwvq5GU14F1D1Q/8DXYWrXFR6ejRCeI8X0lYo5AM MMcRcH0GK5IP6A3nPxbu4vgXcwJm5RuwURJn7TJ2HKB/gbV6iy3oi26fARo86D6UHbgIMIlQtCx fZOyz4Fo/jQ+wyKutz29N5WbLZwBUv0KVftbxKewCu3U5DcLXkUBZ0qRcoAo= X-Received: by 2002:a17:90a:d88b:b0:381:528a:808c with SMTP id 98e67ed59e1d1-38dc75e3d4fmr10239640a91.12.1783991398515; Mon, 13 Jul 2026 18:09:58 -0700 (PDT) X-Received: by 2002:a17:90a:d88b:b0:381:528a:808c with SMTP id 98e67ed59e1d1-38dc75e3d4fmr10239626a91.12.1783991397994; Mon, 13 Jul 2026 18:09:57 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: matheus.bernardino@oss.qualcomm.com, Alessandro Di Federico , Brian Cain , Helge Deller , Laurent Vivier , philmd@oss.qualcomm.com, Pierrick Bouvier , Anton Johansson Subject: [PATCH v2 1/5] target/hexagon: handle misaligned load/store cause codes in cpu_loop Date: Mon, 13 Jul 2026 18:09:51 -0700 Message-Id: <20260714010955.2226493-2-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260714010955.2226493-1-brian.cain@oss.qualcomm.com> References: <20260714010955.2226493-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE0MDAwOSBTYWx0ZWRfXw6rppbj9u366 oDS2rSfddclTP6JvO4i4LAKNMm0xmuov8qi/Y22D5Btny5KSU+vAP+g715tuA3Iv5o1Z/Xv9Kny BnPXq+8bKdPT+gtDRPfAWUUj27oPX6I= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE0MDAwOSBTYWx0ZWRfX8Oc5+dwby+Yk n8CWEiqf7tHgB8B/yL5q40u+Il6dvdxywF+Pe1he6VfC0oINw4wZ1MQtWNTNqoLKXF4pRkTMIlN 9IhgjyOO8llJna9CruIVSSG+DcCSkf4ImGEQjvm6X0uN4d85CgDcQWpQn/Lyv9ODPHB+p9a9khF pEEPEHbviSLhejnTE7lQIebG03xzKJaHDbPGOgGFzlWt8DCXr1HTJhaqfO/ggzueX06tI/BCWNT DX7ETmarLRd5oOJmVu5rmpXpXAw+2TpfWUNa9zF+xWPWoNVXyjEAaA7y8cw/gMG0Cz4VQ4FY3IG nGPD3wzSGhi+4hZFmv49zWAY2IHyPeg+mwea3Xb3OsMM/1fqeUoK9HuEc9XeR5GbDijmeKYW4y2 XSwRh1fhEjIcklQa/5AbJnI9eJU/+99Kdnt7obHcUd7j3LYI7GqogVhS93rHXTYkC0eF1AyPo0U yZHH59gB+7Nu8EqPcjA== X-Proofpoint-ORIG-GUID: Yo3Rp2Rhl9tYn2Z2Oig4-1TTC6OXolOm X-Authority-Analysis: v=2.4 cv=DbcnbPtW c=1 sm=1 tr=0 ts=6a558c67 cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=tYl-21R0sE5cWuHd9JgA:9 a=QEXdDO2ut3YA:10 a=mQ_c8vxmzFEMiUWkPHU9:22 X-Proofpoint-GUID: Yo3Rp2Rhl9tYn2Z2Oig4-1TTC6OXolOm X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-13_06,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 impostorscore=0 malwarescore=0 priorityscore=1501 phishscore=0 suspectscore=0 bulkscore=0 adultscore=0 spamscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607140009 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.180.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1783991439279158500 Add a linux-user cpu_loop handler for HEX_CAUSE_MISALIGNED_LOAD and HEX_CAUSE_MISALIGNED_STORE, raising SIGBUS for consistency with hexswi.c's sysemu handling, even though linux-user's own alignment check in accel/tcg/user-exec.c currently raises SIGBUS before Hexagon's cause-code machinery is reached. Reviewed-by: Pierrick Bouvier Reviewed-by: Matheus Tavares Bernardino Signed-off-by: Brian Cain --- linux-user/hexagon/cpu_loop.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/linux-user/hexagon/cpu_loop.c b/linux-user/hexagon/cpu_loop.c index 0958c51fbb3..d7f73439dbc 100644 --- a/linux-user/hexagon/cpu_loop.c +++ b/linux-user/hexagon/cpu_loop.c @@ -76,6 +76,11 @@ void cpu_loop(CPUHexagonState *env) force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPC, env->gpr[HEX_REG_PC]); break; + case HEX_CAUSE_MISALIGNED_LOAD: + case HEX_CAUSE_MISALIGNED_STORE: + force_sig_fault(TARGET_SIGBUS, TARGET_BUS_ADRALN, + env->gpr[HEX_REG_PC]); + break; default: EXCP_DUMP(env, "\nqemu: unhandled CPU precise exception " "cause code 0x%x - aborting\n", --=20 2.34.1 From nobody Sat Jul 25 20:49:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783991447; cv=none; d=zohomail.com; s=zohoarc; b=guPZgV9rVXEUC8y+nGEm6Z1o/r/H3BXHGIgE2raEcXfl5euV4+BG7TPDORtgA75RatG5E+4mSHDWAczumwnySMh6Kho8Y3i/BAGCgqJNiwjxC2wIXd+49zDUAiGo/jJsRG8CEikd4Xr8A7+UI3lkiSh6tRkIzzmkgDM9kW6atIw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783991447; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=bpMJSLVbTXh1kGvXogZ1fWqLSGInuxUPC3mzcUBBCZs=; b=LR8/uaIjwpARimqJkpZTyVOYC1SArPRLn0mc+XmPFDUofDSHqub7+052gf98ssOJp9xZhDuoL6IGH0x22DrRFwa00/bPhH8jU0Ceh+FrYt5xy8SB8w7VyiAdOIcMhhZmvhI28GrosxMrKrvqo2V9TN9Npogbqlm0EqHYuuw65rE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783991447664656.9741423041548; Mon, 13 Jul 2026 18:10:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjRf8-0000Xz-6M; Mon, 13 Jul 2026 21:10:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjRew-0000OQ-CN for qemu-devel@nongnu.org; Mon, 13 Jul 2026 21:10:06 -0400 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 1wjReu-0003j3-2j for qemu-devel@nongnu.org; Mon, 13 Jul 2026 21:10:05 -0400 Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66DNn25i2872035 for ; Tue, 14 Jul 2026 01:10:01 GMT Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fd44p1bm8-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 14 Jul 2026 01:10:00 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-c891ed872ddso6530816a12.2 for ; Mon, 13 Jul 2026 18:10:00 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-31174accb0esm76826246eec.30.2026.07.13.18.09.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 18:09:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= bpMJSLVbTXh1kGvXogZ1fWqLSGInuxUPC3mzcUBBCZs=; b=aXvIuBBNvu0Y2OmA YQS6+6Hhai+Sj72hkhTXy5+5zk4cJKalFJAi7qtmD6TTrXUnOyO5XKLWl8gddbwj Cg5BQO8cDUaxJcoURNw3ZuSdF34dXHDgMkQb0AhAaes+Z3GjtQbBvy8+H0FK9G2D tqumsRYQwuY5JE+vBy/ko456/lCWG1fhCDVoCX/wSG/fz1mm1s9HA3NL0e+pdpjU uIiKleOhv7pjC2GvojTKdgGokhEo+hVSU8kQrQE546yMnD0jWrETTUvSZ8QmjBQl T4iX/L6HrlpMnKpaecgjuYhr7I3JvB6+tVFLd4NbI6F6OX1VNPEAu4QtuRR9PvCa bEkkwQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783991400; x=1784596200; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=bpMJSLVbTXh1kGvXogZ1fWqLSGInuxUPC3mzcUBBCZs=; b=jODVImmqiqZF3CcpO6rI5kuODFaxin66We4+2a5FyDEPfq/dJfiQDiuFBArBH+JFfv VA/GeJ6dZC5hH8/xvyjHKP5HBEZ0IjDpb9WoW3WeUJRxCq4LunYGqV4rgy0zr28JX5FE W5oKROSDrEfiGAa6lvMQEN+uIWK8+uJ8T1z39G2QixEXSnyw4JcGnrzaQgnJXNLuVicr tAynVPteTkQIzrQhTrY+8lELH0e8BA5F1xJ5K+B1TIdkg+iAaifQGsf/N+YX+4sFVaL+ ehh5YD3FwprM055XOxSlQ2V3zSpad0aXIrupVMWdtTB6cbYE/vmxcvddbn2K/CFWntWo NNDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783991400; x=1784596200; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=bpMJSLVbTXh1kGvXogZ1fWqLSGInuxUPC3mzcUBBCZs=; b=reYr6BjyEjCWLFjEB3K8PRVZLPEhll60sMXJ8wzn6vaMooDpGN4GZmmQw8+WSfWC9W h4XrSVrSpnDKiQinehx/8ERGg4yKnqX4D4Lvauo2pjjwj1kmaUmn/RPw2dUcu9DAG9WJ 4kkTBWQZDVnhuGrLLG1sLvv/ohIA5kTB87hah4QFa0JpnI8SM0ZZTQWJSIHwIQhXea52 C6IEisSlLMTqlZfDFMixBcuBvIoql22RneOgCOO2W0GcrzFJ/HJaSi/O0/FP9Fcy3kQD QvPRceqloopk+qqUjHgW7JE9jQKPMuOGySjz83yyULd59bzjPfR1YJyaCrScwz02EXdE BH6Q== X-Gm-Message-State: AOJu0YxUTvQ9BXybbun7N0uM8J9spMuwdKEmERkAGIGQ7IHkUzoQ5tHD rhjCZe7xSGO9rFd2N6ByxDhnF/yticlGnyxWaSkoXC8TcU6fKT1QMtSrpt1YGfYIjAnOKapztEF XkmiKPF7xDTOUOhf6X98h7ng69SRusxjnW9p/kuk+u8qFwhF59S0DochhowZZVH4nXw== X-Gm-Gg: AfdE7cmA+UErlRZn1j5SlcGfIpe7e50mjHuRBbBVFPdcWSsATjqCVQrlQCNti82TknK Jk/30hDLPgy4klpPpzqDFgxciTD4tA5LiGJKdS1Ea2u1G+YsCAEpJl5/NnCYC6fp+IO4oy7yX3g t60Ed+puqLwK14enMhkP5ovYt9sWeMcDzWI1xIZzBE4UbHD89QgXllDpZkY8G9xbbTBUT9XvPs6 Sv6394Nxbin0o5URnprM4fV4nWK8BlDbDyVscV6PjmwJO/i4Egc7HjspUvH2glJBGFx0hWlXL1f Pz6c6AmO+rsq3O6wPwDLjK/a8HuAU5AkcL+hldp3D0r9+kha7IZQnrPWPcvFfN9CZYYBVodgD8H 9jNSDVyqROa0ObhCvV59vFvEX6N4Pkl3hNRR3IB711H+8GVeoBW2Hyb3uxuM= X-Received: by 2002:a05:6a20:244f:b0:3c0:9c1a:893b with SMTP id adf61e73a8af0-3c34d8c0abfmr1795259637.67.1783991400312; Mon, 13 Jul 2026 18:10:00 -0700 (PDT) X-Received: by 2002:a05:6a20:244f:b0:3c0:9c1a:893b with SMTP id adf61e73a8af0-3c34d8c0abfmr1795200637.67.1783991399801; Mon, 13 Jul 2026 18:09:59 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: matheus.bernardino@oss.qualcomm.com, Alessandro Di Federico , Brian Cain , Helge Deller , Laurent Vivier , philmd@oss.qualcomm.com, Pierrick Bouvier , Anton Johansson Subject: [PATCH v2 2/5] target/hexagon: raise SIGBUS on unaligned scalar loads Date: Mon, 13 Jul 2026 18:09:52 -0700 Message-Id: <20260714010955.2226493-3-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260714010955.2226493-1-brian.cain@oss.qualcomm.com> References: <20260714010955.2226493-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE0MDAwOSBTYWx0ZWRfX8ySKe89mThJu I+myGmWxVhtjvVany10mai/0K6pCVKvNiWtNC611iKFT4lca2evHVutU/eltVRdZIhoZhdZAlFI 3ZukMr86heUI2HyWyefvNxwNxaUhUoQ= X-Proofpoint-GUID: 8r0P4HcFLQG9_kf9gk7AWIRQC2NNI5zv X-Proofpoint-ORIG-GUID: 8r0P4HcFLQG9_kf9gk7AWIRQC2NNI5zv X-Authority-Analysis: v=2.4 cv=BZroFLt2 c=1 sm=1 tr=0 ts=6a558c68 cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=f50odatAX-H4vQHS3akA:9 a=QEXdDO2ut3YA:10 a=x9snwWr2DeNwDh03kgHS:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE0MDAwOSBTYWx0ZWRfX2F65Gzu1siie 0/rhj0CCXMzhm1SfAidfWIaSEByj5wDQ6q6T2Uh61PGTVMAJ0PmUbMFkMm6R2rzNWEHgayDadma 1tIq8KYRv6TAIL7EiMlfbC0PVE1YGUR6ae6WUkwGdUXyt3jbdLTdGfDSvWPhDdjOLAxzShkLr2P VDoMuXMj2ffOr945KIxwRwI7XAnAfc6A9K/mZ5ND7RPQnxk2sL2cNgdxA+mv09tPuGwVrW99M4K AF016fYE0Nm9tQOdtWvm/o7bFqPv2XfYiOUipOd9VJNgwu0LvmcXgO61HaWYTfRAfQ+UnXC5U1F M8Lm3JCkf1GQlzydux6SyyPy8FjiV+74XpKaL9A+fNWA+AGwIFJ3C2Jy+z3WZbs08FYH1Yi8D/x F/98piAZfLNachqh9sOYt7agU+bMKfGbgYxaGMYDKJmXR8KOGkEZYm2ToMi934UQjn8jLGDUtBi QCoFSjxxZofzbsF+Isg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-13_06,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 spamscore=0 suspectscore=0 bulkscore=0 priorityscore=1501 malwarescore=0 impostorscore=0 lowpriorityscore=0 adultscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607140009 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1783991448953158500 hexagon-linux-user had no enforcement of alignment for scalar load exceptions, and unaligned loads silently succeeded instead of raising SIGBUS. Add MO_ALIGN to the MEM_LOAD* macros, the locked-load and load-frame helpers in genptr.c, and the idef-parser's fLOAD. Reviewed-by: Pierrick Bouvier Reviewed-by: Matheus Tavares Bernardino Signed-off-by: Brian Cain --- target/hexagon/genptr.c | 6 ++--- target/hexagon/idef-parser/parser-helpers.c | 2 +- target/hexagon/macros.h | 26 +++++++++++++-------- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/target/hexagon/genptr.c b/target/hexagon/genptr.c index 1ebc7471409..05c9aa04467 100644 --- a/target/hexagon/genptr.c +++ b/target/hexagon/genptr.c @@ -470,14 +470,14 @@ void gen_set_byte_i64(int N, TCGv_i64 result, TCGv sr= c) =20 static inline void gen_load_locked4u(TCGv dest, TCGv vaddr, int mem_index) { - tcg_gen_qemu_ld_tl(dest, vaddr, mem_index, MO_LE | MO_UL); + tcg_gen_qemu_ld_tl(dest, vaddr, mem_index, MO_LE | MO_UL | MO_ALIGN); tcg_gen_mov_tl(hex_llsc_addr, vaddr); tcg_gen_mov_tl(hex_llsc_val, dest); } =20 static inline void gen_load_locked8u(TCGv_i64 dest, TCGv vaddr, int mem_in= dex) { - tcg_gen_qemu_ld_i64(dest, vaddr, mem_index, MO_LE | MO_UQ); + tcg_gen_qemu_ld_i64(dest, vaddr, mem_index, MO_LE | MO_UQ | MO_ALIGN); tcg_gen_mov_tl(hex_llsc_addr, vaddr); tcg_gen_mov_i64(hex_llsc_val_i64, dest); } @@ -890,7 +890,7 @@ static void gen_load_frame(DisasContext *ctx, TCGv_i64 = frame, TCGv EA) { Insn *insn =3D ctx->insn; /* Needed for CHECK_NOSHUF */ CHECK_NOSHUF(EA, 8); - tcg_gen_qemu_ld_i64(frame, EA, ctx->mem_idx, MO_LE | MO_UQ); + tcg_gen_qemu_ld_i64(frame, EA, ctx->mem_idx, MO_LE | MO_UQ | MO_ALIGN); } =20 /* Stack overflow check */ diff --git a/target/hexagon/idef-parser/parser-helpers.c b/target/hexagon/i= def-parser/parser-helpers.c index b942d9ea16b..49cc11fddd8 100644 --- a/target/hexagon/idef-parser/parser-helpers.c +++ b/target/hexagon/idef-parser/parser-helpers.c @@ -1770,7 +1770,7 @@ void gen_load(Context *c, YYLTYPE *locp, HexValue *wi= dth, if (signedness =3D=3D SIGNED) { OUT(c, locp, " | MO_SIGN"); } - OUT(c, locp, " | MO_LE);\n"); + OUT(c, locp, " | MO_LE | MO_ALIGN);\n"); } =20 void gen_store(Context *c, YYLTYPE *locp, HexValue *width, HexValue *ea, diff --git a/target/hexagon/macros.h b/target/hexagon/macros.h index 21ab8ae5bbf..b439e31974c 100644 --- a/target/hexagon/macros.h +++ b/target/hexagon/macros.h @@ -106,37 +106,37 @@ #define MEM_LOAD1s(DST, VA) \ do { \ CHECK_NOSHUF(VA, 1); \ - tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_SB); \ + tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_SB | MO_ALIGN); \ } while (0) #define MEM_LOAD1u(DST, VA) \ do { \ CHECK_NOSHUF(VA, 1); \ - tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_UB); \ + tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_UB | MO_ALIGN); \ } while (0) #define MEM_LOAD2s(DST, VA) \ do { \ CHECK_NOSHUF(VA, 2); \ - tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_LE | MO_SW); \ + tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_LE | MO_SW | MO_ALIGN= ); \ } while (0) #define MEM_LOAD2u(DST, VA) \ do { \ CHECK_NOSHUF(VA, 2); \ - tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_LE | MO_UW); \ + tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_LE | MO_UW | MO_ALIGN= ); \ } while (0) #define MEM_LOAD4s(DST, VA) \ do { \ CHECK_NOSHUF(VA, 4); \ - tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_LE | MO_SL); \ + tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_LE | MO_SL | MO_ALIGN= ); \ } while (0) #define MEM_LOAD4u(DST, VA) \ do { \ CHECK_NOSHUF(VA, 4); \ - tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_LE | MO_UL); \ + tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_LE | MO_UL | MO_ALIGN= ); \ } while (0) #define MEM_LOAD8u(DST, VA) \ do { \ CHECK_NOSHUF(VA, 8); \ - tcg_gen_qemu_ld_i64(DST, VA, ctx->mem_idx, MO_LE | MO_UQ); \ + tcg_gen_qemu_ld_i64(DST, VA, ctx->mem_idx, MO_LE | MO_UQ | MO_ALIG= N); \ } while (0) =20 #define MEM_STORE1_FUNC(X) \ @@ -519,9 +519,15 @@ static inline TCGv gen_read_ireg(TCGv result, TCGv val= , int shift) #define fLOAD(NUM, SIZE, SIGN, EA, DST) MEM_LOAD##SIZE##SIGN(DST, EA) #else #define MEM_LOAD1 cpu_ldub_data_ra -#define MEM_LOAD2 cpu_lduw_le_data_ra -#define MEM_LOAD4 cpu_ldl_le_data_ra -#define MEM_LOAD8 cpu_ldq_le_data_ra +#define MEM_LOAD2(ENV, EA, RA) \ + cpu_ldw_mmu(ENV, EA, make_memop_idx(MO_LEUW | MO_ALIGN, \ + cpu_mmu_index(env_cpu(ENV), false)= ), RA) +#define MEM_LOAD4(ENV, EA, RA) \ + cpu_ldl_mmu(ENV, EA, make_memop_idx(MO_LEUL | MO_ALIGN, \ + cpu_mmu_index(env_cpu(ENV), false)= ), RA) +#define MEM_LOAD8(ENV, EA, RA) \ + cpu_ldq_mmu(ENV, EA, make_memop_idx(MO_LEUQ | MO_ALIGN, \ + cpu_mmu_index(env_cpu(ENV), false)= ), RA) =20 #define fLOAD(NUM, SIZE, SIGN, EA, DST) \ do { \ --=20 2.34.1 From nobody Sat Jul 25 20:49:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783991438; cv=none; d=zohomail.com; s=zohoarc; b=YTMmmJ28u/mv9UxJnZBhuxFdiZDAXZw1aOoOd6NS/57THYbeI299wTMeYcVEhuZcyd+NloE/z6oqGmsShSrTFTDd1xQctC4B4H9W+dZO4xRgV3lyEQej1GPwB/rRkF16a47NbO7DHaMPnaBIAdu2rfhucfuUReZgGHNVyOLE9Xo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783991438; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=u1L0qjbhwqOPub1Kv1dmD59cH8Hdo74k8BXP/IihYMs=; b=A1EApJtcfT6f8YqQwHYbSUOYZbXMIdKxV1dROdHeFkAQGWTsQJ1CpuqrA9JXQYAKCsKHUCqiYNY9Ux6lPyPJoO/CCfO0Trr3lW94GRJ34fTbY7vgMT80f/ArvQ8i+vuLLovC5Sv8vFAJKGEO5UC+joNsKyBtbpgLUcf2RQOcnJg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783991438198914.3519971915515; Mon, 13 Jul 2026 18:10:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjRf0-0000T8-Su; Mon, 13 Jul 2026 21:10:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjRew-0000OP-By for qemu-devel@nongnu.org; Mon, 13 Jul 2026 21:10:06 -0400 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 1wjReu-0003jP-4J for qemu-devel@nongnu.org; Mon, 13 Jul 2026 21:10:05 -0400 Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66DNn7w12872638 for ; Tue, 14 Jul 2026 01:10:02 GMT Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fd44p1bma-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 14 Jul 2026 01:10:02 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-848d21bbb55so4677601b3a.0 for ; Mon, 13 Jul 2026 18:10:01 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-31174accb0esm76826246eec.30.2026.07.13.18.10.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 18:10:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= u1L0qjbhwqOPub1Kv1dmD59cH8Hdo74k8BXP/IihYMs=; b=eeYh+bzjkjPkGgZJ PdpgScVdK+wLvlK8uKNBIEV47Bw7fn0fmdQLVr6txkWCBY0mKNxV3wi8bsPwp7x1 V63B+CHQkMaN9oRdNzjyY2J4ZS7XVZSTfq9aBEm/WX4qIkAhQ4shLmIw4e0Co+Wn yj2IDmvchsejsBs3mw1BlbfE1cxKg9eP0Dx+XamB46BkO9tlspadIFDcBFLhkGrB at47ykqSH+x9R0JsB9S0kOgMb7dWvTVOX2Soj88k5/tANQ8v0N/ik6gIX7XVOuNN Gne5+RU4Pa6cOY8E6aRWkp16OGHcqBg3w0DiGcSHV9NZDi43qR+GMeV++c39ldgg /NUuQQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783991401; x=1784596201; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=u1L0qjbhwqOPub1Kv1dmD59cH8Hdo74k8BXP/IihYMs=; b=Ihi7vkwu+WEmYaf7xvsoca/SC/0RryQzzt7KYtAR8yjrQJrbcOMN6VB0T1/flCTXJc bXucarwxBRJMGknt3yUxTCt6re04DyYVanQirHdaALhM5SKVcOf3UXK2dL2E3X0+1jFM 7lTb8hYmA6u2wHB0FRH5mTVVDPdhQoMiKy0ixFw74LDET96xuvUWe63BPsuE+DMMeCDC kyHwblbaIpdWHCCwFImmWBcZr+RILjv0Qpm6D2yg0sCLH2uQ+BuKAz+COtnQ47tnetbI q97Bxk4M5pYWXrZGBSnWi+NH1gPXDMAu7Lhj/6iPnTcHrCIRPEBhOyiTjJK5G0qzaFkc NP6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783991401; x=1784596201; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=u1L0qjbhwqOPub1Kv1dmD59cH8Hdo74k8BXP/IihYMs=; b=JKHVLJ6NQSuRnR/4Xyr69aQt4BECIgmGpZ4iPLioWxj6T5NICa/elUII2LMup5l9ZR W7z3rR+9nNQC64/XeD7881bbDg77N7H8vVycvJc8GA4NKOXnZbX1cYIJm65zrg3BvFoR pKqNz/ZrYs7um3L4UxWu2W+LpqTkAu/hM/g0xOqlWqGszukZ2dcaeItowapqaSPRvhZa ++WWCzHUKPR7KIwr0aJAgrxKRQyG4846SnS7Nrfu6/Nn6Mhc4TH906rkbe04Vwhl1JOS X9Q+v65oLKfHr1KTwr9TX/57NTTCK14uLRUhzIHvkr4xP1QZahFP+78qPcdVi+ZKRMh+ A8yQ== X-Gm-Message-State: AOJu0Yxyv/R1bSi1TFKhLQPN8nHENeamtELPIJCCXyBHESaYj8uhZjBT DI/P4/9UW6m1KhdrTJZ7eP0/AMCUnc2wHPqTuJHHTuLmdYDXJxWwLL7OfbnrcjjCNvi2bnSXDP8 n6ssnqgxGgdcSl9PMtF8TWekTnfTFxhr5v2MJoL5kiymmpT3D/qTIjCkx5ndGicldUQ== X-Gm-Gg: AfdE7ckZL0RKW2TdcmmuFgnLnIf5iKPx3yJCxjOGf0hTvFKOP7PFDEjbOmU3Hxt1pWo qa9600wQZaCyD/cHzBNwUPzVtuUQeIdLpY3SBjGFY0fCJfa6xj3rf1YrW8m3VUJJh9VGKiqz+7S NNoyw1EIzw3M1UgS/uziHeSmINLE/GZJLm7aDnLKBmBHKTIppXLCVEiJ1j48xsPLAROsYKIyYZY 3uoncCZmP22g7qB/R4oJCGE05tmKMgbn9IWuhBPReKeHQAuhsaaaegjtj6o9PHDXwydIuOUgX9J fSH8VL239HcgdLKEMaqKDlAudaALXEbFNBWbIClAkkH4xYw2R9peCDpDb7MioKUlmbMCC4JTnoH T81TId3FuXHEOE/oRtqGIj6KQrhiHZDokCOqMvrrEaQKcl9hj27O7rUi/DXM= X-Received: by 2002:a05:6a21:394a:b0:3a2:ccb5:abc7 with SMTP id adf61e73a8af0-3c357314351mr82816637.13.1783991401420; Mon, 13 Jul 2026 18:10:01 -0700 (PDT) X-Received: by 2002:a05:6a21:394a:b0:3a2:ccb5:abc7 with SMTP id adf61e73a8af0-3c357314351mr82779637.13.1783991400962; Mon, 13 Jul 2026 18:10:00 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: matheus.bernardino@oss.qualcomm.com, Alessandro Di Federico , Brian Cain , Helge Deller , Laurent Vivier , philmd@oss.qualcomm.com, Pierrick Bouvier , Anton Johansson Subject: [PATCH v2 3/5] target/hexagon: raise SIGBUS on unaligned scalar stores Date: Mon, 13 Jul 2026 18:09:53 -0700 Message-Id: <20260714010955.2226493-4-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260714010955.2226493-1-brian.cain@oss.qualcomm.com> References: <20260714010955.2226493-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE0MDAwOSBTYWx0ZWRfX5a7B1D3ZEt+t 8/WAY+akAHuT5A52EUGvaqYDPbRuVMPs95UjtzHQQvOnu478vApap0/W3wypm7LSTfy1fyc2PJu +0vVwY8gDHOcJuaOWrAMBdKJpzlZnnM= X-Proofpoint-GUID: oro6g7hNevZvjEqwWsaKYnQkG3HME9uM X-Proofpoint-ORIG-GUID: oro6g7hNevZvjEqwWsaKYnQkG3HME9uM X-Authority-Analysis: v=2.4 cv=BZroFLt2 c=1 sm=1 tr=0 ts=6a558c6a cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=MHlpfT5McVMPhJjrq0IA:9 a=QEXdDO2ut3YA:10 a=OpyuDcXvxspvyRM73sMx:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE0MDAwOSBTYWx0ZWRfX553bzIRrvzhz cVR4QLNPc8d0Ugr1kvQ0qSSIkWhp9CSWL3XJc97UdYYU3PFu/i94wO42PMTYESjPa75cPfg+58V 5o0nC8ouNoAuZPG2Fq+wDsUNKLyMeNUfkLJE/ZrxNlg48+D9Blp+HpN6kjBEx0K9l9S7BKpXw0v 1BppsI+CVZRKkQ+2Nxm+mCw3YszIS0++gVhG9kRL0Ah19dPY7GM0vNQ8wM6sZjq+riB/My2JDtr pPjQ1Z57M83FSABvyK6csM+JjgM/mUoWnkad2zi1rv2Q3Gh2ik6NH0n2vG++BwuzCEd6OcvGAPR KNe8210CtPxXaWxp+VQRLxAtrzgju/Od7IZhNH0o7LldNKyWs6ZFVrXfM5BvWDko/1TxT7h77LL FUyqRBRMBf3KVxYTEwfNR4fj5XPVZGxcUYZ3NIuAoCD12YOIrIIyZ7j34+GkZRNy/SJ25le/AKz mp9MRyY1hYJRk2SokCg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-13_06,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 spamscore=0 suspectscore=0 bulkscore=0 priorityscore=1501 malwarescore=0 impostorscore=0 lowpriorityscore=0 adultscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607140009 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1783991439314158500 hexagon-linux-user had no enforcement of alignment for scalar store exceptions, and unaligned stores silently succeeded instead of raising SIGBUS. Stores are logged rather than committed immediately, so both commit paths need the fix. Reviewed-by: Pierrick Bouvier Reviewed-by: Matheus Tavares Bernardino Signed-off-by: Brian Cain --- target/hexagon/genptr.c | 4 ++-- target/hexagon/op_helper.c | 13 ++++++++++--- target/hexagon/translate.c | 6 +++--- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/target/hexagon/genptr.c b/target/hexagon/genptr.c index 05c9aa04467..f48a27bc09b 100644 --- a/target/hexagon/genptr.c +++ b/target/hexagon/genptr.c @@ -495,7 +495,7 @@ static inline void gen_store_conditional4(DisasContext = *ctx, zero =3D tcg_constant_tl(0); tmp =3D tcg_temp_new(); tcg_gen_atomic_cmpxchg_tl(tmp, hex_llsc_addr, hex_llsc_val, src, - ctx->mem_idx, MO_32); + ctx->mem_idx, MO_32 | MO_ALIGN); tcg_gen_movcond_tl(TCG_COND_EQ, pred, tmp, hex_llsc_val, one, zero); tcg_gen_br(done); @@ -520,7 +520,7 @@ static inline void gen_store_conditional8(DisasContext = *ctx, zero =3D tcg_constant_i64(0); tmp =3D tcg_temp_new_i64(); tcg_gen_atomic_cmpxchg_i64(tmp, hex_llsc_addr, hex_llsc_val_i64, src, - ctx->mem_idx, MO_64); + ctx->mem_idx, MO_64 | MO_ALIGN); tcg_gen_movcond_i64(TCG_COND_EQ, tmp, tmp, hex_llsc_val_i64, one, zero); tcg_gen_extrl_i64_i32(pred, tmp); diff --git a/target/hexagon/op_helper.c b/target/hexagon/op_helper.c index 125952aee59..3ce223caba3 100644 --- a/target/hexagon/op_helper.c +++ b/target/hexagon/op_helper.c @@ -95,19 +95,26 @@ static void commit_store(CPUHexagonState *env, int slot= _num, uintptr_t ra) { uint32_t width =3D env->mem_log_stores[slot_num].width; target_ulong va =3D env->mem_log_stores[slot_num].va; + MemOpIdx oi; =20 switch (width) { case 1: cpu_stb_data_ra(env, va, env->mem_log_stores[slot_num].data32, ra); break; case 2: - cpu_stw_le_data_ra(env, va, env->mem_log_stores[slot_num].data32, = ra); + oi =3D make_memop_idx(MO_LEUW | MO_ALIGN, + cpu_mmu_index(env_cpu(env), false)); + cpu_stw_mmu(env, va, env->mem_log_stores[slot_num].data32, oi, ra); break; case 4: - cpu_stl_le_data_ra(env, va, env->mem_log_stores[slot_num].data32, = ra); + oi =3D make_memop_idx(MO_LEUL | MO_ALIGN, + cpu_mmu_index(env_cpu(env), false)); + cpu_stl_mmu(env, va, env->mem_log_stores[slot_num].data32, oi, ra); break; case 8: - cpu_stq_le_data_ra(env, va, env->mem_log_stores[slot_num].data64, = ra); + oi =3D make_memop_idx(MO_LEUQ | MO_ALIGN, + cpu_mmu_index(env_cpu(env), false)); + cpu_stq_mmu(env, va, env->mem_log_stores[slot_num].data64, oi, ra); break; default: g_assert_not_reached(); diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c index 77235916f4b..5d54ce8caa4 100644 --- a/target/hexagon/translate.c +++ b/target/hexagon/translate.c @@ -896,17 +896,17 @@ void process_store(DisasContext *ctx, int slot_num) case 2: tcg_gen_qemu_st_tl(hex_store_val32[slot_num], hex_store_addr[slot_num], - ctx->mem_idx, MO_LE | MO_UW); + ctx->mem_idx, MO_LE | MO_UW | MO_ALIGN); break; case 4: tcg_gen_qemu_st_tl(hex_store_val32[slot_num], hex_store_addr[slot_num], - ctx->mem_idx, MO_LE | MO_UL); + ctx->mem_idx, MO_LE | MO_UL | MO_ALIGN); break; case 8: tcg_gen_qemu_st_i64(hex_store_val64[slot_num], hex_store_addr[slot_num], - ctx->mem_idx, MO_LE | MO_UQ); + ctx->mem_idx, MO_LE | MO_UQ | MO_ALIGN); break; default: { --=20 2.34.1 From nobody Sat Jul 25 20:49:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783991453; cv=none; d=zohomail.com; s=zohoarc; b=aH9eCPX6Wfm0KBHrXcjfu5E8fpRDwkpHQkMVmlh4sIA+6iECMD5YaxGy1bWF031gZTYCIKcR/bR2/9RqXIdAj7hMfn2KpKd65k1SZvPT2/k6FNH3SIKSzELPSvkDHIJgGdGJ7tja71yCeNa/9jIT/ABT1CORI4QQxC6YsbZ44Qg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783991453; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=evXUyChMcSwZe2zKBJ0MiCF+w52F7L/7q9AWZm+IPtU=; b=ReRaVbAlt9uW9qlqCxgtjMQdGzy9+vIzUsPJHeVUrnTmIj7Pbsg4C5RcIILzfWUOehjbwIHUdPou2wx4t1lxebjl2Jjy62lQkARyl064tQ9MlF72ZAiOj6r+kH/Nj1VrbvbNKjNyHbLTClEVpGUfI9TtRvIWrbeZGoefxkboADI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783991453140541.5211433428642; Mon, 13 Jul 2026 18:10:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjRf1-0000XF-Fm; Mon, 13 Jul 2026 21:10:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjRex-0000P8-Gz for qemu-devel@nongnu.org; Mon, 13 Jul 2026 21:10:08 -0400 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 1wjReu-0003k3-V8 for qemu-devel@nongnu.org; Mon, 13 Jul 2026 21:10:07 -0400 Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66DNmkd83121245 for ; Tue, 14 Jul 2026 01:10:03 GMT Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fd44csc2p-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 14 Jul 2026 01:10:03 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-c88fc985a65so4762084a12.2 for ; Mon, 13 Jul 2026 18:10:03 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-31174accb0esm76826246eec.30.2026.07.13.18.10.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 18:10:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= evXUyChMcSwZe2zKBJ0MiCF+w52F7L/7q9AWZm+IPtU=; b=AULaNdhAkO44zmic BTgx+fBuGdpc1vmM6X3LO01NgzxV4AQrJWvAFsfXzoSIE/FcFq8kQ5TfKeYHDicx ecjOah8WpPRfqKwNQmA913IJigma7kP95sn4CllI+xZQjvHCOJlX8flP8k6+pvkL qbkcpa5qpTBXoZEmZzexVis8uLoc6nYxbwmd6LrE2LE01uoCWNc61SJtt1Au4uX/ iIE8HAbKvqJRmYlDjpMLnDNoDDUUZlYTQPw6kc+R9hmkCMVUYhEhFeRA8wEwzD1O TuMoYbck86fJ8qdAApenVwxaRDrC8foxYcoRGhi7ma6h9Ej9/qVh6HS+gl+SfSMv G3zzjw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783991403; x=1784596203; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=evXUyChMcSwZe2zKBJ0MiCF+w52F7L/7q9AWZm+IPtU=; b=QXTH0GHipVpMGgqw4yWwDiYHT1PuGOXR2izv1jJgyFrzOYz989Xw/JujQIuSLU6fPd Vj9tK1P/NVyyoUT7lG/oMSgXmcJ4MbGgwQfexUt1PCcLRCuEhfAAswd5SDMxFluk2qSc Ot0x1SHvEan/pStUMOXKy77Rgr64AezM2QOEECkVhRnogf8OXtK+a7pnUlCCzf9TXL5p bhfn5DU+KCnOk2lHnxtE4mqc5G+VmkhE/m70CoNQ29tlkpop2wXk8+rP4KuGnKs/wYA3 Mw5JUH1AQptiBPjvWaHg2dGaBbUa4EZoVMmFqkViEbAguNSA9rnyHmmmlmd9Y/dFl0nX kUjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783991403; x=1784596203; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=evXUyChMcSwZe2zKBJ0MiCF+w52F7L/7q9AWZm+IPtU=; b=qa+xSRnMi821bEKethJHN02d2JpCMFWgLqIUC0r4n1s2EuTe2jcg5eewu25WeZkj2E P+pbBDWiHq2p9TGGt3ZgjlkHQrHbfZZFLAOqCt/QVQbYQjdtVFSausNbQ6sCc3XcLkor gzpjyUs6jo3HWd3m/nwxwgDKOeXhZ5dqmWVMy6W0GcPp2oYNZ1WixA66B93EPHJ43n/n n7uyUFFbhFo4EWiPSirQ4pbykwiV3ra68GQN7lAIPt6DVney+ULbxGc9hJxPOX2nCzpY odF8Gb6CNJffKrqzR5HC/cLqKFQ88VD2rxEA0TOzDl532ys+6wuCLw1bIUqynk96Mi22 IDqg== X-Gm-Message-State: AOJu0YzRh87T8OWlqTgqjrzW4/Hjy4aMNq/lJdqUAlrzmf8IHmOJEaTt s1ZJm5/EeFqQBMtNhupiBzik2CgKYOVMR7DmvggPaMHY/0YPXGqByVtAU8dz56zHxtAHkTt7l/e 6QxA1f6OeqAyVeQzaCXxt9r7ZF0ZA8U8R1kGYDMsQp9Qism6jcpM406k5JsbQjInLkA== X-Gm-Gg: AfdE7ckEsUebxovpWJ6iaFgbyK0IlZrFj2/qjMrlL9ZNVgJkm+gqaxfwRI8NvouUHBp vie/96cMvAAs9poFhMcxVUYrAeTqC4s7iCX8m0pz9Eg1xjjzbMMUJY1vxwUw5EVt44j4YIokuj4 Y0z833b+4GG8uALSF3TOsjn3Tc2VSFkc8SSB4/2j4NVLNpOgt/4Hj7D4cI2YjhjsU5tlHGZ7AhK gH32jhOpEcxMtgdUKPCI1VW4yLak0OpEPTvAV0weqq9Plz8ERSVdXaINbUa31+RGkCjwEVmm019 j6etq3qQeopFQSB2C8aT2KZqOXvVbCB4bdAULvoOd9kdm4z4Ij342qcmkBq7s76KI8ViqSpaJot JEKvydBmkwr9zZeac/ZUqu2XH2xFQ0LvFNKiJXqZnLFcHVpBg0R5JI0q6Z/E= X-Received: by 2002:a05:6a20:6f96:b0:3b4:7b2a:6a0a with SMTP id adf61e73a8af0-3c1108982a6mr11468554637.35.1783991402849; Mon, 13 Jul 2026 18:10:02 -0700 (PDT) X-Received: by 2002:a05:6a20:6f96:b0:3b4:7b2a:6a0a with SMTP id adf61e73a8af0-3c1108982a6mr11468521637.35.1783991402402; Mon, 13 Jul 2026 18:10:02 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: matheus.bernardino@oss.qualcomm.com, Alessandro Di Federico , Brian Cain , Helge Deller , Laurent Vivier , philmd@oss.qualcomm.com, Pierrick Bouvier , Anton Johansson Subject: [PATCH v2 4/5] target/hexagon: raise SIGBUS on unaligned data access in sysemu Date: Mon, 13 Jul 2026 18:09:54 -0700 Message-Id: <20260714010955.2226493-5-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260714010955.2226493-1-brian.cain@oss.qualcomm.com> References: <20260714010955.2226493-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: 2ivOrHuoz8KfKxaZ6BkpUPFuYHwD6nW4 X-Proofpoint-ORIG-GUID: 2ivOrHuoz8KfKxaZ6BkpUPFuYHwD6nW4 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE0MDAwOSBTYWx0ZWRfXx5VxOD87Vwls SHMZksSk+oyeNaSdqKaCBdMlSE423M61C7xZ89mE2tYmmfq7ZpSHrWHCXSJ1JoMsVIZvK53++87 cxA/D4/uiMLdoRmvWy9+RM9SY34k5dk= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE0MDAwOSBTYWx0ZWRfX1nO6JLbIrMvd xV5+0i/bJ6j3bO/vEJeuhh0UngOMs8HCNp0Ds3SR4PfcAWhlwFWr016MkqqEIdmc6evlYovdMPR la7oQZkayB/4hZ6EBc4Wp0gr66QU6G2tpdKI5LFiELB1cGZVnAqDkQopjYj+kqEzC61BsAE7JJT 7CwuMX5rk5ds3c+w+uPZjH3IaI3SpqGTjfJA1o8pm7MWaHDHK/h2t4k5P92jpyBHKvUXsDBF7Po AY5Vi7hNKCgSlfb7NITSQKGyAJSfdNBeqI480D20V7zfrlI46ogWYdaMUDdx+TH6OUEktaW3EtD ViQ6c7Pr1OJqe9A43SUkRvyjBTfh5a7T0CjCVZG9NPcdHtvbawoRDceJuoBMDXKBDaK5DWm8O/s yEZueKDUtfPByJh+anYqZ1reo59G8tceuHOL0Y8wIe6KDTLJdyhoMoRoh06K+zC7bXL4CXsufon 0gQ9vybHIKiRhFXZbVw== X-Authority-Analysis: v=2.4 cv=P84KQCAu c=1 sm=1 tr=0 ts=6a558c6b cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=QWbXAH-yNWLVfgUa_9MA:9 a=QEXdDO2ut3YA:10 a=x9snwWr2DeNwDh03kgHS:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-13_06,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 impostorscore=0 malwarescore=0 lowpriorityscore=0 phishscore=0 spamscore=0 bulkscore=0 suspectscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607140009 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1783991454929158500 hexagon-softmmu had no enforcement of alignment for scalar loads and stores: the MO_ALIGN flag added by the previous two commits triggers TLB_INVALID_MASK/alignment faults in cputlb.c, but Hexagon's TCGCPUOps did not implement do_unaligned_access, so the fault was never delivered to the guest. Add hexagon_cpu_do_unaligned_access(), which raises HEX_CAUSE_MISALIGNED_LOAD/_STORE via the existing HEX_EVENT_PRECISE path, mirroring raise_tlbmiss_exception()/raise_perm_exception(). Reviewed-by: Pierrick Bouvier Reviewed-by: Matheus Tavares Bernardino Signed-off-by: Brian Cain --- target/hexagon/cpu.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index 42d93e5da47..e2af736a99d 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -637,6 +637,18 @@ static void raise_perm_exception(CPUState *cs, uint32_= t VA, int slot, cs->exception_index =3D excp; } =20 +static void raise_misaligned_exception(CPUState *cs, uint32_t VA, int slot, + MMUAccessType access_type) +{ + CPUHexagonState *env =3D cpu_env(cs); + int32_t excp =3D (access_type =3D=3D MMU_DATA_STORE) ? + HEX_CAUSE_MISALIGNED_STORE : HEX_CAUSE_MISALIGNED_LOAD; + + set_badva_regs(env, VA, slot, access_type); + cs->exception_index =3D HEX_EVENT_PRECISE; + env->cause_code =3D excp; +} + static const char *access_type_names[] =3D { "MMU_DATA_LOAD ", "MMU_DATA_S= TORE", "MMU_INST_FETCH" }; =20 @@ -715,6 +727,18 @@ static vaddr hexagon_pointer_wrap(CPUState *cs, int mm= u_idx, return result; } =20 +static G_NORETURN +void hexagon_cpu_do_unaligned_access(CPUState *cs, vaddr addr, + MMUAccessType access_type, int mmu_id= x, + uintptr_t retaddr) +{ + CPUHexagonState *env =3D cpu_env(cs); + + raise_misaligned_exception(cs, addr, 0, access_type); + do_raise_exception(env, cs->exception_index, env->gpr[HEX_REG_PC], + retaddr); +} + #endif =20 static const TCGCPUOps hexagon_tcg_ops =3D { @@ -732,6 +756,7 @@ static const TCGCPUOps hexagon_tcg_ops =3D { .pointer_wrap =3D hexagon_pointer_wrap, .cpu_exec_reset =3D cpu_reset, .tlb_fill =3D hexagon_tlb_fill, + .do_unaligned_access =3D hexagon_cpu_do_unaligned_access, .cpu_exec_halt =3D hexagon_cpu_has_work, .do_interrupt =3D hexagon_cpu_do_interrupt, #endif /* !CONFIG_USER_ONLY */ --=20 2.34.1 From nobody Sat Jul 25 20:49:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783991442; cv=none; d=zohomail.com; s=zohoarc; b=VUxIyyE8ItR8/AhDzSo89zAUqhlHw8HMGCXdAa66nUKXD/MjPWbMwIHXAtN7pU6CQlfioIfyu4EwNJfOWOe8S3vtWD4ulqamg9yzazIDyvazzQWTp5xEprHoNA1VqSZdJZQQZp81lh9litiUPbdD/fMNQ8H2HJGE1XlQEUOJVwA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783991442; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=LpPkHYYRK3o0T7n1tWuJuAjG+4EP4gTciyO+ayCWuOs=; b=oFDruxz4OjS06A/0H2JGpqg6kTDFFU2F57vhSkourfZmWeM3ynpyLPSTEBRPwSs3Aeh5sXeN8ryV4yqtU5Vyuagv9WWHOJZ9xJ6zywnbUCEA8sZ3q/xxfhqG4YyD1YK/jKFdoDd2B5fnvlHFZH+PlYtKMJdpHnAbBXNQOB+BJzw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783991442763847.3151008655901; Mon, 13 Jul 2026 18:10:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjRf3-0000XT-QL; Mon, 13 Jul 2026 21:10:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjRey-0000Rq-Ny for qemu-devel@nongnu.org; Mon, 13 Jul 2026 21:10:08 -0400 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 1wjRew-0003kb-Po for qemu-devel@nongnu.org; Mon, 13 Jul 2026 21:10:08 -0400 Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66DNn0uw2871823 for ; Tue, 14 Jul 2026 01:10:05 GMT Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fd44p1bmf-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 14 Jul 2026 01:10:05 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-c894c1c4aa9so5518479a12.0 for ; Mon, 13 Jul 2026 18:10:05 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-31174accb0esm76826246eec.30.2026.07.13.18.10.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 18:10:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= LpPkHYYRK3o0T7n1tWuJuAjG+4EP4gTciyO+ayCWuOs=; b=gGJdKYnEsNvAG0k3 NjudW3Vquv8n4RahKRKA8dQwwS+VCs/pCocwPavBHTI4/aU0Ldfek8MEZy5YIpop QRlOza/IQplyjXIZL0FHqFgLXjI31VgmuYdjYleG4fjajENn/gGZzMBIIdVWnD3y ZNq1mAXzj/5MVQTV1hZd9Nh+rHJk5792kWgsAQCFomB7LwlhRrXc7AA/JSzXyrEw qvZP4hfkgsLxh75GPVCqCJm+3lLRXokQwZmIo4V4VLHnlZ8v0y7cjCqtEqW9IDQ4 4zVoU2CLJXS1r1Ugf3Z3U5tiWGSpR4hZUaGNSKhvxD1WS6Gkf4hDNYjupROl6ATJ kXAbCQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783991405; x=1784596205; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=LpPkHYYRK3o0T7n1tWuJuAjG+4EP4gTciyO+ayCWuOs=; b=Y5XZUubcmrxheVixRQZ11j+igOLnlIwQ0iI6aHc/RU4io61qiJb9AwGvfIcT0TogV4 av5d37UKtw/RKuQX5dGf/SL8lC/sM+8cQV1dzPA/q9rUv03b28mHLFQwN8emO70GII8B dJohP2AtHgNzC1v1XoDZjYE7PxlGHjpjU6lzpTx1hUqKkLJUtenQXpnmIgfgEJObQHcs tCbKOxvBjj5HZq7jW0U5T8ORnd9cFemIRJOqu/zYJZFcFqT9GTbVMZLOylIodSe1Khc1 /vxvzgAFpW1hHevorYfUrZNp+BIl00ltfFG9ViUq9gzbMUxLdYGACyyl3mwDM1w6n2oH qkYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783991405; x=1784596205; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=LpPkHYYRK3o0T7n1tWuJuAjG+4EP4gTciyO+ayCWuOs=; b=sudxs8Ie++7G514jum80/sTAOpixT7DWzGLCdFlAClfpLlT6N4mUnnHuoZ9BmuLISZ guACBFqbaJZnWLKiiL0FZy4rbYdKDxcJT1FVUB8sFybKLtUA0kyLLw4S/opERK+JyEU1 pU0fcqDgMbkkHPsBgj+05v52htt/RzOVg8ylpTL27frtCVKd6VMhBhW3JDUstKDhlxFf vK7a5E2zfFWEBbaIP5k2Mz9Evn1u3GDE61gp7FT/t1GnDhxAbHVQ0LsmziAjufY8fa25 oRVSQreW5WwfuWgRx2Pe58AplhZh/zdU3ZX8LGIQRT9PD+xNsE+Q29p21PU27ftk3vK9 PnJA== X-Gm-Message-State: AOJu0YyLl9GtyHL6SNXWEeLbIUdA3m/UAlkpVCed6FikaIECb2VDZOKF dRX2Wmwd2JIiNyyL/qs/Qqvzd1WuwwsCMQ/UwJnVRtdmPzmNFnLjfFzUY0yueVi0V5RI0BdXJC8 RjtqyBskcRCYHdDDhpXniRri7eYK52iRXP3Cpa5PcBvFw8zvvkZppqfeep4LG91UUuA== X-Gm-Gg: AfdE7clHtPBBltoN4B2dhhw9iiMGit5dFIrcxCn98+9II0sjGobSXfOgCRssujeHRke 6xfgqrNj3nM8OCnmaKJRmLT0x1lsORanQrJ6M7G+Ob9ALsNTn9nFzfMEGzN/JEUXklhau1df7pG WTu8ZfUSyu0fKDziR1gTfGFnDX7P4ortP4yEeco1fMkGvXGlTAxJyhAW9RJmrqrNwbCIy1X1Xgn QxvVGtKiYeMhAWQrkIkbBZvbZWrXLPp3L2Tkw/9C2XsW0AiMzJi+zaJ5OvaqAlIPED5aBUJIBSf Q/Fa5YqAnfM5tlrDFj7WycqxRtmlpbayoX4mxJj5PXeYMbcNs4tFbaob7mHqpbStML3Nx7hbc// kybHGk8wNmz0YYw0+3s+K5Ds17cMrBZekrVEFIdGMvdWTVAb7ywV+1gs+nQc= X-Received: by 2002:a05:6a20:6f03:b0:3ba:e5e2:73bf with SMTP id adf61e73a8af0-3c3571d0776mr98053637.43.1783991404268; Mon, 13 Jul 2026 18:10:04 -0700 (PDT) X-Received: by 2002:a05:6a20:6f03:b0:3ba:e5e2:73bf with SMTP id adf61e73a8af0-3c3571d0776mr98002637.43.1783991403792; Mon, 13 Jul 2026 18:10:03 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: matheus.bernardino@oss.qualcomm.com, Alessandro Di Federico , Brian Cain , Helge Deller , Laurent Vivier , philmd@oss.qualcomm.com, Pierrick Bouvier , Anton Johansson Subject: [PATCH v2 5/5] tests/tcg/hexagon: add unaligned scalar test Date: Mon, 13 Jul 2026 18:09:55 -0700 Message-Id: <20260714010955.2226493-6-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260714010955.2226493-1-brian.cain@oss.qualcomm.com> References: <20260714010955.2226493-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE0MDAwOSBTYWx0ZWRfX8Ecb8/REda0A Qbech54CR/hK6qJlJsFX79Ew0qt4wP1JzAJLNAOrRFT85H7SU+83QKjZfnuLeB869eyrQoPM5Sx sPZTWxhKXJbMwyIHItkztY9cMKobJ+o= X-Proofpoint-GUID: A6dD-Tkm8C-53pgoWG_pUAuPUP44ZvJZ X-Proofpoint-ORIG-GUID: A6dD-Tkm8C-53pgoWG_pUAuPUP44ZvJZ X-Authority-Analysis: v=2.4 cv=BZroFLt2 c=1 sm=1 tr=0 ts=6a558c6d cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=JA4W_Hs6HDHytmC4mdIA:9 a=QEXdDO2ut3YA:10 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE0MDAwOSBTYWx0ZWRfX3bq7bMEXcAG7 Bl8nXFr5EyAGmEzAuGupt5V4XXlodQSvl7aEAWpE5aGPTSFdFb/swMWL29QNTDnjzSttjizaaUL +d9EYysNYua54lAf/27K8FWhZVd8OlRxUNuDozpyEliQCFr71TSNVkqzDa2QbJNM/TQcelOLj13 gImvZO8WITxcBCsvcoCo7ogRLhCWZ4VwZaTslPjnD1RPk2x2Jh6TG3u8RDu781qouCZZt56fbIW VOJMlNaMlLqo2jy102Twwvnvx7XspKP9rY5+FOvnMwEizUhyf01CWW1t8XLEDq59WJsXU6mWCoZ dKZ9b/ecmWPoI+6IePp2uTBzeSlXNWSvmFck3Nio+mx26H/7deWRGt0YpK6ZflTpQzZGExWbYVR eVJUdd0+MiRwflNSdQcwX/f926kc6lItoPH9urEfPlxN9zbxpOcxluT4G9KTHIab8y3zk2T9AaL hMdTpdB9DTqdsKQLTRA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-13_06,2026-07-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 spamscore=0 suspectscore=0 bulkscore=0 priorityscore=1501 malwarescore=0 impostorscore=0 lowpriorityscore=0 adultscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607140009 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qualcomm.com) X-ZM-MESSAGEID: 1783991445237158500 Add unaligned_data.c to exercise unaligned memh/memw/memd accesses and verify SIGBUS is raised and caught. Signed-off-by: Brian Cain Reviewed-by: Pierrick Bouvier --- tests/tcg/hexagon/Makefile.target | 2 + tests/tcg/hexagon/unaligned_data.c | 118 +++++++++++++++++++++++++++++ 2 files changed, 120 insertions(+) create mode 100644 tests/tcg/hexagon/unaligned_data.c diff --git a/tests/tcg/hexagon/Makefile.target b/tests/tcg/hexagon/Makefile= .target index 70a8ec2e7fb..a2a0ffc69b2 100644 --- a/tests/tcg/hexagon/Makefile.target +++ b/tests/tcg/hexagon/Makefile.target @@ -54,6 +54,7 @@ HEX_TESTS +=3D invalid-slots HEX_TESTS +=3D invalid-encoding HEX_TESTS +=3D multiple-writes HEX_TESTS +=3D unaligned_pc +HEX_TESTS +=3D unaligned_data =20 HEX_TESTS +=3D test_abs HEX_TESTS +=3D test_bitcnt @@ -108,6 +109,7 @@ preg_alias: preg_alias.c hex_test.h read_write_overlap: read_write_overlap.c hex_test.h reg_mut: reg_mut.c hex_test.h test_pnew_jump_loads: test_pnew_jump_loads.c hex_test.h +unaligned_data: unaligned_data.c hex_test.h unaligned_pc: unaligned_pc.c =20 # Compile for v66 so that the ELF selects a v66 CPU; the test then diff --git a/tests/tcg/hexagon/unaligned_data.c b/tests/tcg/hexagon/unalign= ed_data.c new file mode 100644 index 00000000000..e0375faafbe --- /dev/null +++ b/tests/tcg/hexagon/unaligned_data.c @@ -0,0 +1,118 @@ +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +/* + * Test that unaligned scalar loads raise SIGBUS. + */ + +#include +#include +#include +#include +#include +#include + +int err; + +#include "hex_test.h" + +static bool sigbus_caught; +static sigjmp_buf jmp_env; +static uint64_t buf[2] =3D { 0, 0 }; + +static void sigbus_handler(int sig, siginfo_t *info, void *puc) +{ + check32(sig, SIGBUS); + sigbus_caught =3D true; + siglongjmp(jmp_env, 1); +} + +static void test_unaligned_load(int size, int offset) +{ + char *p =3D (char *)buf + offset; + uint32_t dummy32; + uint64_t dummy64; + + sigbus_caught =3D false; + if (sigsetjmp(jmp_env, 1) =3D=3D 0) { + switch (size) { + case 2: + asm volatile("%[dst] =3D memh(%[src])\n\t" + : [dst] "=3Dr"(dummy32) : [src] "r"(p) : "memory= "); + break; + case 4: + asm volatile("%[dst] =3D memw(%[src])\n\t" + : [dst] "=3Dr"(dummy32) : [src] "r"(p) : "memory= "); + break; + case 8: + asm volatile("%[dst] =3D memd(%[src])\n\t" + : [dst] "=3Dr"(dummy64) : [src] "r"(p) : "memory= "); + break; + default: + abort(); + } + } + check32(sigbus_caught, true); +} + +static void test_unaligned_store(int size, int offset) +{ + char *p =3D (char *)buf + offset; + uint32_t val32 =3D 0x11223344; + uint64_t val64 =3D 0x1122334455667788ULL; + + sigbus_caught =3D false; + if (sigsetjmp(jmp_env, 1) =3D=3D 0) { + switch (size) { + case 2: + asm volatile("memh(%[addr]) =3D %[val]\n\t" + : : [addr] "r"(p), [val] "r"(val32) : "memory"); + break; + case 4: + asm volatile("memw(%[addr]) =3D %[val]\n\t" + : : [addr] "r"(p), [val] "r"(val32) : "memory"); + break; + case 8: + asm volatile("memd(%[addr]) =3D %[val]\n\t" + : : [addr] "r"(p), [val] "r"(val64) : "memory"); + break; + default: + abort(); + } + } + check32(sigbus_caught, true); +} + +int main() +{ + struct sigaction act; + + act.sa_sigaction =3D sigbus_handler; + sigemptyset(&act.sa_mask); + act.sa_flags =3D SA_SIGINFO; + chk_error(sigaction(SIGBUS, &act, NULL)); + + test_unaligned_load(2, 1); + test_unaligned_load(4, 1); + test_unaligned_load(4, 2); + test_unaligned_load(4, 3); + test_unaligned_load(8, 1); + test_unaligned_load(8, 4); + + test_unaligned_store(2, 1); + test_unaligned_store(4, 1); + test_unaligned_store(4, 2); + test_unaligned_store(4, 3); + test_unaligned_store(8, 1); + test_unaligned_store(8, 4); + + act.sa_handler =3D SIG_DFL; + sigemptyset(&act.sa_mask); + act.sa_flags =3D 0; + chk_error(sigaction(SIGBUS, &act, NULL)); + + puts(err ? "FAIL" : "PASS"); + return err ? EXIT_FAILURE : EXIT_SUCCESS; +} --=20 2.34.1