From nobody Sun Jul 12 00:40:41 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=1783640138; cv=none; d=zohomail.com; s=zohoarc; b=dciyplXgMlKQGqkCRz/moYXOymYU/fVadKj+Dzmfsf2MdUsJRizydoY+s5nE7TdySEu7zlIureCd9khXNkauE8XMjdPqhhQQwRjBwY6kTYa1u6su0dfnegnQfDq1t3qfD0vIPZTilfzqg9n3jzJpGobH2Ze62F6B0QXqUvGI+UI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783640138; 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=2CGMyPorS3RnTbOgvFXXSiw5DC8Rps4clQw48tKsp4g=; b=gg+gL2gda1MaC4yfOeNIuHUPSyDNeFzugoa4j3qibOgmD/MLg4VA4rq9gavto7aG0m/5YDHeC17LcBIdqk/FfE6jrv25W824ANlUdsY/VxN7aiQlNmkTN34EMacZsmIGG6LzcCDGIJYNDS4zkx/yJBSIM7BoRBKoTa7j1SVciaA= 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 1783640138599245.62561503890095; Thu, 9 Jul 2026 16:35:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whyGU-0004t6-6K; Thu, 09 Jul 2026 19:34:46 -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 1whyGS-0004sE-FV for qemu-devel@nongnu.org; Thu, 09 Jul 2026 19:34:44 -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 1whyGQ-0007RI-HF for qemu-devel@nongnu.org; Thu, 09 Jul 2026 19:34:44 -0400 Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 669KZKM22917939 for ; Thu, 9 Jul 2026 23:34:40 GMT Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fajte0gkm-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 09 Jul 2026 23:34:40 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-383b6012ba4so609832a91.2 for ; Thu, 09 Jul 2026 16:34:40 -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-3118389d9bcsm25447189eec.20.2026.07.09.16.34.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Jul 2026 16:34:38 -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= 2CGMyPorS3RnTbOgvFXXSiw5DC8Rps4clQw48tKsp4g=; b=eq/Awij000Q3MXrx bt6tHyR1k3Wgnq5B3lEK51rJM4scK+BZTtyulvCnKW0w2KW5Nhxiw5IbLTK1Jd7M KTPWUO/A08CmrJFwp2o8Qo9gHeARg96vPThy6kBifmyXU5bZEFPezdqri3E3tyO7 Yx2+hJxuG2wrZLZuRc3Z1+/SVYOXhg5RL/BxW0H+ATteCaHPN01wmbc5oc1rWa3m Nbh2Gt5wk3kpgPoMwQI2S2Xa6JpfBqmeWrxeOlNblmxyTMWsfus98ZGFG1yEPbUD r8weHFiz3OCtbA9JR9NE26WEKVtKMChKzkX9ck+PJdlb/yJqm4DJcVgOOV5N5mK4 D33Sjw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783640080; x=1784244880; 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=2CGMyPorS3RnTbOgvFXXSiw5DC8Rps4clQw48tKsp4g=; b=djuPfOgUPQM1PmGTZFKhJUDujCzpYGYXlflRno3gKExX/V8bHdFnsnn86e9yrFlSxD zNe0mkkgVY4VvKEo/tONtd1Tq1UTd5tQARAzasp2/voXId5Wvj74KRFSbC6tv7PVwmY2 W2EALE34IuUJrbKk5lsaEhln4FdDTyKstefCHhFXMv+BMfrF2So23TqlAgBZi5XMDnP5 DxL4ZCs9KO7O7D/JuNx9u7CfgN3RATLvqJ1ujrFPGLsQT3WEYU1Fg5Y1qGHfeOrwOUqz UljGXBJhSBjZZibV/DBE9CNOD+e8T2AXrYx9SSdcoqVgGzbrO6rlit+cddPapinIsSVP cIVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783640080; x=1784244880; 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=2CGMyPorS3RnTbOgvFXXSiw5DC8Rps4clQw48tKsp4g=; b=fz9GaT7Sl5bto4CuUKAxZHAaJmcYF/+ElBAzrgyHblHansEciHsbAi67D8dVJkdxxZ xoDAVXIkgh7blfVprJJcKGBhHVzgsbICsFNofEagPmm2R9XzDOyUISGGBFFvefRxAUY3 D7enfqndw3bJYlaFgkvFCPCeQaaaFmBzpuDoGD1JtWAY9Mdq6wh9FBGKvT5mHfMSCnMs VXa/jkNu2fkEb6z45Mrdwm07/kWZRiN1RNylUb73/nJnhRCflXYTUohrGgGEWfNdnScX dFT3UH2ICHc9ORFCIw2mJySdQha4+0/XvrxomJNWo0Sn3JKSBto/V+o2J4vHnCFZlpqX Gwag== X-Gm-Message-State: AOJu0YyA7u6TA+NIOI78J1KHPikUSqf8+umBvHwZyyGbrgwR6jduIZVO u2HK55IXzJlqg0DzMCZuZPpyNdxh4zJwQSqwLX9+Lvaxo0vzMsmniofdhZIgZI6SdXwI8qQ6oid 1JKxRigzlk1v96hXv10xLYm2kh6Jknt5640eezt0VxNfg3Wb4lIcGIYQFgrM1G9XZYQ== X-Gm-Gg: AfdE7cn9ZlPRPsW1+LnXi3GqTqzZJrpCAR1qOdQL7Kj/8w4bXk7vOSvNoskiz3Hclal LkzHSR2UFZfBj28QO5d039lZ0JCk5s07ehGtgsEGJNdb829lBZVKhXvfhPVGxakIfyGGdvBqLoc qqn2xBWxJjPhAYDJ1rE0tfqUtgwqPNGXIYjHcnI/2126RyTOv0UcUCertvBvVrC/2NJtRHwcoau dslMy7627sY3uNGLmzlWwqV1UltYvPnUD4WLcVijoH2eqSsLfyhuVdsz0OoaQboCr7uYYGoYHYS tP2QJaXNX6bo0ER8GBLafuAYlueeLFIFoOoPvB4danH0+z7s3qHKrFwI6YzJIJ5nOmO3m25V3UH 1Ht4aUXbH9TYxcZyR6tLa0Y30ddXm+o10KO8eZb0nL6cr6Tx4oKUdS2oZlpM= X-Received: by 2002:a17:90b:3d83:b0:37f:e326:6557 with SMTP id 98e67ed59e1d1-3893f693984mr9513420a91.4.1783640079947; Thu, 09 Jul 2026 16:34:39 -0700 (PDT) X-Received: by 2002:a17:90b:3d83:b0:37f:e326:6557 with SMTP id 98e67ed59e1d1-3893f693984mr9513395a91.4.1783640079431; Thu, 09 Jul 2026 16:34:39 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Pierrick Bouvier , Helge Deller , matheus.bernardino@oss.qualcomm.com, Anton Johansson , Laurent Vivier , Brian Cain , Alessandro Di Federico Subject: [PATCH 1/4] target/hexagon: raise SIGBUS on unaligned scalar loads Date: Thu, 9 Jul 2026 16:34:33 -0700 Message-Id: <20260709233436.3075100-2-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260709233436.3075100-1-brian.cain@oss.qualcomm.com> References: <20260709233436.3075100-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: qzPDGMnoQtKm6Z4I99tIIej9V4pTQiU- X-Proofpoint-ORIG-GUID: qzPDGMnoQtKm6Z4I99tIIej9V4pTQiU- X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA5MDIzNSBTYWx0ZWRfX0Bksq7sXWURf ih1QbBuj4IfAFAHxMDbLjseEY8hO6M2Y3w5tm7Bxmi+SWh/xVaadwaQLcVKa7TuwHnqOkLSxnEl N+EbyZEzbd45KywwH1riF8755YiELWeh7p0FZ5k0P/5v8v/bi58KAADgq1YCrEf4Lm2mX359gm3 sMDV1CO6Gg+OBDsZolfKZyi55SFSw9E8b8gVF32onPuG0CBSeoictyzYmL1GyHsE6V/ihB5vkcw RmTh6uGfPlvdso+9Ak4EkZdlDNG0wJtX1iH7IvFlnztDJ0g3K0nZ6wKClsgiPP0xngDnzuRNdQ6 N5nbmVuxdj/FJVaU7X6cF2rpMbQWc/nrRc5VFKjlU6V6ncQa6K9qGq6nhkHg5tJ2LLT9yQADOEr htJ1do2jwvSMgZSSmhet3P4b3t5zEsS6oCbevQnPtJkeyb7/avgLXitDMfg83A5LjTXx3fkbKg6 Uk6RjsdRH5imuQmqxjw== X-Authority-Analysis: v=2.4 cv=N7MZ0W9B c=1 sm=1 tr=0 ts=6a503010 cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=f50odatAX-H4vQHS3akA:9 a=QEXdDO2ut3YA:10 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA5MDIzNSBTYWx0ZWRfX9xMfzgSL1rA6 RJMLaGWSo6Xb1sJGigf2Xvsts10a/hsP4YgdEXvwQetGw/yrFAqsicl3NU5hZJOovvR8FTlJaJV c82wHv8nKaqa/7IbK+NmQeDOWdk8NzM= 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-09_04,2026-07-09_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 spamscore=0 impostorscore=0 suspectscore=0 adultscore=0 malwarescore=0 phishscore=0 lowpriorityscore=0 priorityscore=1501 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607090235 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: 1783640140513158500 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. Signed-off-by: Brian Cain Reviewed-by: Matheus Tavares Bernardino Reviewed-by: Pierrick Bouvier --- 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 Sun Jul 12 00:40:41 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=1783640163; cv=none; d=zohomail.com; s=zohoarc; b=GD8u5esBjXvnXcdo2493sNS/NjY7Hf/DbCKEpstfGDCHr4N/M4EXfBIhscPK1vtO0KfE1BWychZoa3jo72cyfSjTGZMBsJbpydC9GZ6Ne6R+s0SL9ymJXt4vW97ksvkfOcM7Ltqp1O9GtDjJHp1PhY3ws6GVLtACyKXJ63jQj2E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783640163; 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=IjpFrVnMAdtocIh96Yg8jeTIQ2y8dxQd28EukOf/Rwk=; b=fvScMjHXwTvrl3ZPQRY1KCpWCmmjXLVDzXwY1J23kLFHHQs2kDhs9s9XqtNPRC4P9Zke4Q3C/t2NrHod+RSMmdcwkfSKWsDvUo1ZJlVFgBfe/Vx1GNM6zE932XEAoweaqA7kHirt0IPsYcxiU2jsH//iqhqD8yUet7SFxRVXk68= 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 1783640163071566.7948101168591; Thu, 9 Jul 2026 16:36:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whyGU-0004t8-Ha; Thu, 09 Jul 2026 19:34:46 -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 1whyGT-0004sV-GV for qemu-devel@nongnu.org; Thu, 09 Jul 2026 19:34:45 -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 1whyGR-0007RW-PP for qemu-devel@nongnu.org; Thu, 09 Jul 2026 19:34:45 -0400 Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 669HXdMP2517732 for ; Thu, 9 Jul 2026 23:34:42 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 4faeessu5w-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 09 Jul 2026 23:34:42 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-8478ff5d801so356357b3a.2 for ; Thu, 09 Jul 2026 16:34:42 -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-3118389d9bcsm25447189eec.20.2026.07.09.16.34.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Jul 2026 16:34:39 -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= IjpFrVnMAdtocIh96Yg8jeTIQ2y8dxQd28EukOf/Rwk=; b=mTNZaBFvrPStb/4w pkzt43aUEk1fcuym1HRYGMPER/XLenbggu4ythMS5hwGh6AjIldg4Q5LQrpPP8fZ 3H171dnMVgLVGPMJ6+AFj/u9dThCF8OwzlFN6jOTYleUSvlXDGGhKUhXdbcLDoxh 9I9isRnZGZZ+pvsumshcPxmz04SuXWNJhRfuCLAN0eGWI5XfgM1CudPpbpB5+Iej Ux+BA5FsT6C1HHhen0CH/NBtO13Pit4mRj/qtKeFhDowRYv/I1G/04+y1R09u25u 91+54miGdns7FjjbdcT6+G8DTQfJH3y1QxsTSPoQjTe8v/T+0gUdOQTZaEtabAOb iBcknw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783640081; x=1784244881; 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=IjpFrVnMAdtocIh96Yg8jeTIQ2y8dxQd28EukOf/Rwk=; b=DKMS2VMv8jJCGqnqun2CW8vbWl4jjd5G6vpNOc6wlSRsBg7ji93Gd1JcG5ONu9woJE dhPbZSOohAGnAfFNi5gBByWunrv0OvvfUPx3AMb7kv07v4Eenv3i4lJSrBoKy/VCruXC mqmgBg63w0KTDxPskzkdlHd+vNh8WITzi4OpguI7pF3hcf8eyE5luhOrDAbSxYhQqU7m 8rgHKG6sFjQ6ej+NQQqjqXwsNzFCLU0Pt8RSch42mL15t6S/bR58VZgjuBu1pcRitytB QRdJ2KXqjclQAsAglMh9NX1ExmqWHaRqoUditCQ0rsohNc/LIK40foORo9HU+Ac1g0Hb EUNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783640081; x=1784244881; 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=IjpFrVnMAdtocIh96Yg8jeTIQ2y8dxQd28EukOf/Rwk=; b=ioAEa6jE0iqt9/Xjd+h/udOjmsN/p0fYIi0KxG2fxW3jUM69W7ZclRTKSxm2yyyTYi fQithqv8MHdAiRJsNb5jpOykObShB0qkQoip2gS75DHEAan9xGbCqazYeUegKRrSPzKw nB2wcbJFjH3SVIigoPg1K1pbUYvRm/hpLaj/XwfhWzf7JU2aoW1it7YWJrRLgwT8wAV2 s5T0dtciMqRE0ssJONxEt8S20lBUfYkUELz+Lte0RZ8sQCefVuotBFvWmurs3/peb4VJ 9LvTAGosPu/BAGfHAPUozknBozbIbKlW/DfTFE9cdwYMbIFrQK2D3K0w07bgNZSNL52U DPiQ== X-Gm-Message-State: AOJu0YzBLEti0F33bUSage6G4iGpIMfn04kJq3k++V6zTtAUwrUVaMAb l4laXzDIHBRZ1HLpyjWtGxehKvgXmpy+gIa7AsV6SBvp0iBSREYaf8TNbOmrJUYq6UhTC7VHHwe hYifPE73Y2xTNQqrfAT+UFzv7SwOaBWMT6Y2wfMCNBWQ1p92vYh/CCI09+ouC2TzMnw== X-Gm-Gg: AfdE7cmXCu5AHLq9IU5QyToQ7DYyLGS2TKQHAtyItfnN04W4D0nf8TD+1ziK8emN6wZ +5VEjle25opSjT5jpOV1aDpVysPPOETQ+gbNlsii0t9ktY4Kx1kvtJRG8fF36HrlNKB0EKge3z/ OfrTDhgS4ErWG9uFbtgNVpowksZuftm4PfTcZ+QFn4yZL30Nj6JPNqeOpqm2dwu51IUyVOKxYrT zQY9seV9I7t6Wjc7d56d2AjnUlb6juS9tNDjlG9+n+lzMW1e5GvFLbWfU6bj1y644qaOIN1aIzE FnEtlbuEnO/IslVkMPklRGz6YSukrEqMRO/D757yveYSsGaW1EbpclvteOKiylPQ1pzqvMLpHJ8 afQ5Kp+iHJe4VndwVYB035tbGayQNILGhNSMvq3Ujip6hKLodO0DQUYPk1eY= X-Received: by 2002:a05:6a21:1493:b0:3c0:9c1a:893d with SMTP id adf61e73a8af0-3c0bccfcf5cmr11148654637.69.1783640081324; Thu, 09 Jul 2026 16:34:41 -0700 (PDT) X-Received: by 2002:a05:6a21:1493:b0:3c0:9c1a:893d with SMTP id adf61e73a8af0-3c0bccfcf5cmr11148636637.69.1783640080908; Thu, 09 Jul 2026 16:34:40 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Pierrick Bouvier , Helge Deller , matheus.bernardino@oss.qualcomm.com, Anton Johansson , Laurent Vivier , Brian Cain , Alessandro Di Federico Subject: [PATCH 2/4] target/hexagon: raise SIGBUS on unaligned scalar stores Date: Thu, 9 Jul 2026 16:34:34 -0700 Message-Id: <20260709233436.3075100-3-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260709233436.3075100-1-brian.cain@oss.qualcomm.com> References: <20260709233436.3075100-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: -xerhMpNU6lkTyjQ_mDAlnhJMtarNF8V X-Authority-Analysis: v=2.4 cv=bbpbluPB c=1 sm=1 tr=0 ts=6a503012 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=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=MHlpfT5McVMPhJjrq0IA:9 a=QEXdDO2ut3YA:10 a=OpyuDcXvxspvyRM73sMx:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA5MDIzNSBTYWx0ZWRfX102be1mAK4eD ZNo6pvchK/hPMyvF93/T3Ly3Smqi4CGmul0XDalG8bnwpaXoBOvYMiL+kfZfvgoCsKOb/bo6qos DdBMrSuWqQlvjp3MFb773wFtPflqP1I= X-Proofpoint-ORIG-GUID: -xerhMpNU6lkTyjQ_mDAlnhJMtarNF8V X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA5MDIzNSBTYWx0ZWRfX0Pw8Hp93UV10 lIi7Cebrlqa84dSOq31PGmd3bKp9Ae+B/BH0sHZXoP1wKD9rQz2oPw1ShZqb6Q3aEL0PAAE4GVr Bxf4YcPb7h3TZzPmiNHktEW5hvqReEjxNs2VAeiB4HNWEaeUeA1eHKsU2aOhO8ErblSXnbLudoe qOt/22tkUKmyxj9y7hYVnF53HA9D64Rz6/4xlJfMa/3NnjMUjyS2T/8TiVRUGwViubCoTUzlUkA olXCebuInaGjm8ORHw6xNvjIFxiiJopO52BbDpYPujRpelRes5QbGl9xSluhJsXOtSuxprzs7Jh G1pwv/etKFYRgh6u/26U2wM/L5QyOaYoBXad3+nNiWdMzIWhpeAhkBebsS4GnB4nSI0FQhjuckJ XcM1FvxXS7ILVyUd6T7ShJeVF3XC3BvZEYb9bsozLvmSwHeLvrL71Yw3eEZN4tMRWaG3asRdwJc CBYwd9cKF6btFFISTQw== 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-09_04,2026-07-09_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 priorityscore=1501 malwarescore=0 bulkscore=0 suspectscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607090235 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: 1783640164594158500 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. Signed-off-by: Brian Cain Reviewed-by: Matheus Tavares Bernardino Reviewed-by: Pierrick Bouvier --- 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 Sun Jul 12 00:40:41 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=1783640116; cv=none; d=zohomail.com; s=zohoarc; b=BTIZpqEhn9KDTYxP56a0yfLnrmlVi03O3H3wXqcuhlthuAwZl4HsdphUzMR3loU1n6IVsZCRYzBtingNC5EnD8Pcvu2PHEPbGmYHFQ/FqUHSapzcRkddzfaq9Jdv0P3TTnmhH8fvuiQAWNzaEyk8LmVMaRBizdZzep4wCgkxVS4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783640116; 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=fNGolF183Ykc3ikRZVV1o+MZTkAVJfEJh30XgScHIlc=; b=V6HuErnVmpF/kQgGqWtxLAmLhY7pwtYd7Yd3/w6mN5ZDho0LB0j/ZpPAQdVBr0qKu+dn7d0NwrgKSBrVsEwvBdSwEgrpjpxZ0At3xV9fLNi52XO3JGWSIaFAXoMXCO/ZnPKnTRqArzcJu4qhAfNQfVV481ksRo/BSDlVI5IEnXQ= 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 1783640116642434.6762756335962; Thu, 9 Jul 2026 16:35:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whyGW-0004ts-P3; Thu, 09 Jul 2026 19:34:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whyGU-0004t7-Cx for qemu-devel@nongnu.org; Thu, 09 Jul 2026 19:34:46 -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 1whyGS-0007Ri-Pr for qemu-devel@nongnu.org; Thu, 09 Jul 2026 19:34:46 -0400 Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 669HXRhn2422261 for ; Thu, 9 Jul 2026 23:34:43 GMT Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fadvja2us-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 09 Jul 2026 23:34:43 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-848590a507eso292556b3a.0 for ; Thu, 09 Jul 2026 16:34:43 -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-3118389d9bcsm25447189eec.20.2026.07.09.16.34.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Jul 2026 16:34:41 -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= fNGolF183Ykc3ikRZVV1o+MZTkAVJfEJh30XgScHIlc=; b=Ug36KEtjhHkNxquy JAZfxtdimarVKUeH8s7l6lfMzXM/W03Zs3Nxcq5ygr7wShm+S+UAdzfyZ+go7Wa5 fyhrkiMFO1lEqXBm75B+gmLbV6iBboYhspj4PAv7hdBW0lgh5/JBWhDIdLt2NjTa Im9aq6NGatKy8ZgpokXRKGlyLaR99dxQZBzsGLt/gBct+hAYC0+6tvL1rgt5eWYw qSEBF5CYPjjzPhvAeE3i3hODyQq/ZW9SA7TJMIYhd5l73go3zIiPe0qkUZr58bFx VohHudZ6JNiNEu+3ljV3qXXz0BGeyRHD5ogUqkinhJ/oj8QNtZBUf7PdjgO/2i4o 6v+a+g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783640083; x=1784244883; 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=fNGolF183Ykc3ikRZVV1o+MZTkAVJfEJh30XgScHIlc=; b=Q8inSFCNpjzHi+s6zZvqpNqs2tybrY+gnIgPonAJoLiN+TtYqLwbEUS8cP9q3fd7h/ lIP7ltOsebgBDlGc+FJ/h8ovvNE25UkxIXtXWx3F3xpsAQhr67inuMVFeit9yvixVvk0 6Xl1JccuFWeMRqrSLwTfiHE7vFkSMgVx15QdrGJAi8KImtaFEZKZEP1ZllxpR5Z/qjQ0 SaW2kArtpXbfB1JAK9lldM26cofbXQ+44YmtegR2TAVgJRWCpZuTTvn3wTwYtazCqhYV YagA/2EzlB5i1oyKHsxPIAmjO3Lv6+j67FvE7JmDqxk7kznwdzHFFJyAly8XVeUgr4Lo FQMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783640083; x=1784244883; 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=fNGolF183Ykc3ikRZVV1o+MZTkAVJfEJh30XgScHIlc=; b=QfTc3xNLuAKodxmTl9umYffQYjRdGEyjN4mQvgQqtcJCDsoQs6gYJpt4AE4fHyFmYE NJk9PzUddBRTjN2mUnEumqkMhsuzrdDvTZq81Ml/hkeXB2QZZiQe8XyiEwrwa6Tyz3Ye XmvAwEAfFeZetHiMHjdL6P1JEG1oyLZkcvv7nH4cPoMvdCGK/dKBvAMQ9dfsS2FovitQ PyDF2oWPpqWqkBubthLiLZ4iwPI1fsXrfFxYL4nLmPtAgSjRuKoN1Zaw9ITAZRMgbco+ WnGKW3M3ZrCtDM4x5ju2ezarNSruV8GUbjigaV1vxA22HESUV6XugM3sUOhoaFbfF1J5 Z04Q== X-Gm-Message-State: AOJu0YzCQtL1aWduyUVBhyPcO5U0rY44bkgS/Hq4Y2/Be0zUhwxxQxCp GuPrSXwCIxfuBWNfv7d68YtuYWW2rnvZM9rziKKn4Z2w/aHk0RU2l4aoSc/2s6QsZEP+8tIDW20 dTcKLzJTlxPVSnYLYjuzMhCzU2lZMGd6nhzeB7UaMMxvg5aIn2uuweHquBZbAzKsuuQ== X-Gm-Gg: AfdE7clIqEH6kMVKYAoY7gwGn4hQy3rPBcwyFJSSnRdK0p81ezW4VE2YrVbXlzBzt07 aTC41dDXlNk/XIdTTB1MppUibr4VZd15vUklq3bVJ5RfkiomNZPvVGsJxgZbAuSTKbZ8RUapcZ6 ciWn3W4bVzlnqGGsQTQet/X8NjsgIAFosQKbJSI25yzLOHZyxCUULt2y6fomfhLEy+5TqJ7Gzos XteM0C6Aae4W7NTzjjq15pCaPH/jFnG0dWEseqfaG5MMaHkhXfBGEnc4TnOyPLgCZa6YseD9HOt nud3Mkcu+VcSsYz6Y7OViEPkKXFUe1YWQpaDthKenL6aOQqwg0bH96UMhYfFOoFELDuvkFBEpeq DzKjqpp8PmaiH/NjsiK4iqPTQSDPfPaLtsvGVrxTL7WmAAXG+cVwDise+DwM= X-Received: by 2002:a05:6a21:3393:b0:3bf:7994:ddc6 with SMTP id adf61e73a8af0-3c0bcfbbb8cmr12382738637.25.1783640082745; Thu, 09 Jul 2026 16:34:42 -0700 (PDT) X-Received: by 2002:a05:6a21:3393:b0:3bf:7994:ddc6 with SMTP id adf61e73a8af0-3c0bcfbbb8cmr12382699637.25.1783640082240; Thu, 09 Jul 2026 16:34:42 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Pierrick Bouvier , Helge Deller , matheus.bernardino@oss.qualcomm.com, Anton Johansson , Laurent Vivier , Brian Cain , Alessandro Di Federico Subject: [PATCH 3/4] target/hexagon: raise SIGBUS on unaligned data access in sysemu Date: Thu, 9 Jul 2026 16:34:35 -0700 Message-Id: <20260709233436.3075100-4-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260709233436.3075100-1-brian.cain@oss.qualcomm.com> References: <20260709233436.3075100-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-Details-Enc: AW1haW4tMjYwNzA5MDIzNSBTYWx0ZWRfXy3Ktvpdwgued 9krEGwYBy49oHrIFjtfrajoaX5vMACWFAq6wG7czSb9Wk2gDYTrT6cbxTkXxT4+S6qHb6R4s+5V aYmMRaDpuGDhK63LlSF7cnXM//0KQrpdinS40nNzhDjALAFyJSwTtzq7I4fB04+woc2NrCut3Pn lswP19gWeNM1EsAVOAMx7G713sAxGM1JaLmBrVkpNr5RuXwESjsSuyRafL3y/l0D336wTFyjoYY YqvLNfSbQofIAZ6bBPIueoA30blrWW1KPlZE/eFsR/+cKallhobhLRC8mV+cStVUOP4f3AZbOl7 kBLj3RQtDYOAjmxRDyPNfgWXCtYHojQ4/cJvIUyD7YC9VD81/42kXUVtJ5TRnTDpl7T6RQVUXQy c24A0OaxKgp9jvTGkkK1yI0ZhF0n1ccTX5ymJwruvfPTMvo3lc5sp1gd5r89LFrLs0ZEHwoLreP yflSQ5EM91xFeVYg5tw== X-Authority-Analysis: v=2.4 cv=WpIb99fv c=1 sm=1 tr=0 ts=6a503013 cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=T1onTCyMlbt3cFJWPvcA:9 a=QEXdDO2ut3YA:10 a=IoOABgeZipijB_acs4fv:22 X-Proofpoint-GUID: 2i8LaH8N34tWno87WVKmjanC8rsNmA4S X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA5MDIzNSBTYWx0ZWRfX+M8DukLweIzg P5UGlbJWCNuQFnM/DbJ7dDzZrih6JNG74RK24XEsXpRgqd/GjyaBo8QTMb72cCqNB+vWp/7+j3D XW5R1Q7vaRNhIzTroxFH7lxc8w9dCrc= X-Proofpoint-ORIG-GUID: 2i8LaH8N34tWno87WVKmjanC8rsNmA4S 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-09_04,2026-07-09_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 adultscore=0 lowpriorityscore=0 clxscore=1015 malwarescore=0 phishscore=0 spamscore=0 bulkscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607090235 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: 1783640118878158500 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(). Also add a linux-user cpu_loop handler for these two cause codes 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. Signed-off-by: Brian Cain Reviewed-by: Matheus Tavares Bernardino Reviewed-by: Pierrick Bouvier --- linux-user/hexagon/cpu_loop.c | 5 +++++ target/hexagon/cpu.c | 25 +++++++++++++++++++++++++ 2 files changed, 30 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", 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 Sun Jul 12 00:40:41 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=1783640132; cv=none; d=zohomail.com; s=zohoarc; b=WP/sM9ZhH7z1Gd5An3A4VdHpd/ugq/TVMNswauG6XpeKvGj4HgospHcX1eAYkKgS/o06Wr1i8bfyloCks0jjc1Ht4yFpIfQNaGezRKx6bs74B98TGWw5SbzzK0cQoYYM2sWrsjOscobU30Ms6HMK161dLKnxxRuZAG2DrWbQPeo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783640132; 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=fxYd1vQrqBApedjWKGC24UDKRtesPZhEGXAJvOvxuffGqj/nu9iWJ+threncWIoYTDIdduTqJQPj6j/aEp2cd/Cxzwj/tmZCT/iTzgttGtyyLsIvAwNQAagC69k2vHryfb0oWGdy+QQWJ0tkDks22ouuPEak5S6dq2rj8+WXYHs= 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 1783640132397967.1971121317757; Thu, 9 Jul 2026 16:35:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whyGY-0004u0-1A; Thu, 09 Jul 2026 19:34:50 -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 1whyGW-0004tk-C0 for qemu-devel@nongnu.org; Thu, 09 Jul 2026 19:34:48 -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 1whyGU-0007S1-E8 for qemu-devel@nongnu.org; Thu, 09 Jul 2026 19:34:48 -0400 Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 669JUkI32556963 for ; Thu, 9 Jul 2026 23:34:45 GMT 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 4fahv8grfs-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 09 Jul 2026 23:34:44 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2cc7e86e7c5so5596175ad.3 for ; Thu, 09 Jul 2026 16:34:44 -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-3118389d9bcsm25447189eec.20.2026.07.09.16.34.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Jul 2026 16:34:42 -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=nrwotLu5NYOsuYJ2 tBeknpT5RAoisZlgyywLall4bXWgJQsPa+VFg/v+CZAZkcXe8M30SCCMKYdeJyhR YVVqwojlPt/BaV3e18368E2g39hlrSag+4DA0+P9Yj2dG2S4veGd4Dxpxlat/c2j LzTBN3YB9haPF4d8h7Rb7pnyS9csirNdOK5KKlDoNe13R5FeCnPQYNuu3bt2bz8l MevlEngEbtPL5XYFpG/Iv4DWH0CVsCN6z6KW4jOip5UvzY+I0nSUkQb1OCGcAgNh Ry1nRu1pWuhHDdh8ps95/9Dm9jWyI0iJ8N5A4ZF0mVDaGHjGQBsGa3Khw13q/Reh eFgVDA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783640084; x=1784244884; 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=K4RlvYc1lilW6KwugL/wa3TLhZyhfdcQ49mLd6LSG+aI4dtnSP8nS6+nMNTPCIUVlq c8M2bqDoLEvrhpRwZbKRMSK3j8SwfZonvuKbw5bsuBEdDoUZD8gaBYoSUyRfo3XkaPLQ HGB+nLuS6hENnTkwS7UNuVJNwzxHkZqltrvUFEgv3sTyBE0k2oLwyRadEqVxhe3mW/+l 9sJidLkzfAC02ExRu9bLUr+VAIYqrOWrGpeg9wR8HRm2JdvowkgL1Em7Zd67rALsXyvK dygyjMmhumGvvaZuAVpoVhyMA6SC7N5rtCGUAKE23sdG3/bvBnyUMcNRtXL79oSwN3dN Zh+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783640084; x=1784244884; 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=BIaAPjmzVsKX9MG08MmVq6gxvKvu6u0oo+fCrACYCWlgLwp0J8nXXIjzf1sxs/ccLn RWcAXq4swgQWrSuUKoEwoFsfxQqo9nl2IzKPeK0+/ure0Vt1oALGcxG/rlW3cWipP5uJ ATm8L9mS5Oc8VwisGOEYhUjekA29HBD+RwaVbsMkT9r1zPqyyEhXRsfmjBLud0oc3qFp dr0sqWsS0A0HBWhtndjythOoCY+T2tgqsRgg8eM7tc2vYKHvYkGc2xhrPRZzrRAgQYwL ARKxBdyk4+XN9qEb1U5FjSWm6QHo/S7Nv+fgVvLHWJEcf95E6GN7Bt5X7MQatsXh8qUU l7Kg== X-Gm-Message-State: AOJu0YxEuWlKWRCc0uhep3coLchJVLBg5mK0sKlMseVIbxGPK/ARQF59 u/5Y77QTaqAxgYbWOjeM+4gAmeGQ0BlhA8K1apo1lZf1qjt8wcJYX7K6Bnu2adk5EPgnAwoToxp jMpH/7IoBp0CKVnLkXIHrYy8FTpXuBNcY+ZIENcKzo/rPt4Db8wmLTTX3CS9fZfTjUA== X-Gm-Gg: AfdE7cmpgPeDnXao57g6qtVSlek2a34spJlLVCJdwYci2NB4ouEM/4bwOcA35RVbfr3 8F/EpRTA5gB6Y9mIqVjMe6KqJjfUw5bLPyskZoMW1y/jkrYl87ZMYKqB4XrBxoNpZdtwkbE0M65 lcOkHCPBcb4BWwbArDY9bAWrK6tD12gsqGZ0Nxg2KywdaLcc+55bo3npX2gVGusfBAbdy0qOz0K dqGryDhBiIFcCUDKK8QjSpq1zFuGQ5qZGuD27d5AkjZhpwqbBO7dPD5MGkI3ys8mDvyEaudynJV fLCnf90LQqhSrmWhClEHgXn7tbIQIbkPEK5IqVMUZfCHvp+gIw0r38BpVklo/rhqyEGqrHoQ3Sv 0cBYhDRphHTfAI1SVl7+nbS23e+EkNEbKli8Otx7cW4Pvd3spx9lAXjIc2Bs= X-Received: by 2002:a05:6a21:1493:b0:3c0:9c19:65bd with SMTP id adf61e73a8af0-3c0bccf6a47mr11318368637.69.1783640084062; Thu, 09 Jul 2026 16:34:44 -0700 (PDT) X-Received: by 2002:a05:6a21:1493:b0:3c0:9c19:65bd with SMTP id adf61e73a8af0-3c0bccf6a47mr11318341637.69.1783640083628; Thu, 09 Jul 2026 16:34:43 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: Pierrick Bouvier , Helge Deller , matheus.bernardino@oss.qualcomm.com, Anton Johansson , Laurent Vivier , Brian Cain , Alessandro Di Federico Subject: [PATCH 4/4] tests/tcg/hexagon: add unaligned scalar test Date: Thu, 9 Jul 2026 16:34:36 -0700 Message-Id: <20260709233436.3075100-5-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260709233436.3075100-1-brian.cain@oss.qualcomm.com> References: <20260709233436.3075100-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: -2opnf5_TgkUCY-ftmKDtqltcLWguKS8 X-Proofpoint-ORIG-GUID: -2opnf5_TgkUCY-ftmKDtqltcLWguKS8 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA5MDIzNSBTYWx0ZWRfX6Gbuye2+9jqh FZ8qP0TgiDwRFhH2y1EuPurGjP36opGhFu8tduhTwamlpShXaDOXgFBsLuzqaEGA1saOglcbJpU 9e0aFeZXojSvC8otURIx+jfJftptiYA= X-Authority-Analysis: v=2.4 cv=funsol4f c=1 sm=1 tr=0 ts=6a503014 cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=JA4W_Hs6HDHytmC4mdIA:9 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA5MDIzNSBTYWx0ZWRfX+B4seWsXzerY mfHK8oZR491oM1S9imG1BSoMgY/kUmRoyUC2rj+w3n+3PcjNgimuyuJrogbL+yLilgTSuQLJczt Rm8D2YeFl/2jwIFXmAISe44zVbbU/8lH6qsVS4hlbmQVh7lOVqeIC680b2/1pXRGywDU8Od0Gxx SD1yh/T6gK1qkYMf4JhDNVYjNXnf9056aOwkuKAhGTugwxJc/VEfSFKKn75xHO53iK+m1h3avgq M3uYwuEt1dUFgq6dtd/TBFdCEBG76j72CcwHaOsofjf8rTyyhiz5C+3y88qn2Jl2qieaooNYxTt o2UNR2tcV2Qx+I5l+wlI801Fw0o7fsmz9FMEmgPlVMMk+3RwMjpWUZoMCnCCilDXn/XMDzeXXY4 iXkt7gMdKLxM9QbPM4EfOLemFe5RkxPTCyAt/WUIYCxFNW/OriSk6Y/ciJNMlOspLgbGVVHW5Yk Pju+rL2XQRMkksUXEUQ== 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-09_04,2026-07-09_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 phishscore=0 clxscore=1015 lowpriorityscore=0 adultscore=0 bulkscore=0 suspectscore=0 malwarescore=0 priorityscore=1501 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607090235 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: 1783640134543158500 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: Matheus Tavares Bernardino 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