From nobody Sat May 30 20:14:19 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; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass(p=reject dis=none) header.from=htecgroup.com ARC-Seal: i=2; a=rsa-sha256; t=1776437376; cv=pass; d=zohomail.com; s=zohoarc; b=bzVFRY/0Qh/sXEMS3hCChAzbCiF4i7cxLV75PvKT1axixQwSXlUrNIPpvAudbXjM3tFfp85n5t8b4827oO2hDGI0SKUPXmbXvyUFWddd6fQI+CuxUGFBxg2/dFxYrX1Jzm4P4vr3GSdx95sACtdtPVOfyAjF9XKhSbzhcYu/itc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776437376; h=Content-ID: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=ddK7Rom0AYFdxbB8gCajhiYQui/iJNt6SZbcvbfdXOU=; b=ffMB24jYIjyCnxR2shrVpms3Zwzf1GjkUFNoO3zTfmLQEMVHRWg7nYJ5qQ+l23188LZjGKpFVxpqU+n0iToVsMYwtu+T1Iuy5TrYWU5XcFqW3nrT16GKv4MOFc5OPtwKyetbLTaDrfKQRySzHzU4zNx5pgIAvowJ0eIASITP3Zo= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); 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 1776437376140472.37428504450895; Fri, 17 Apr 2026 07:49:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wDkVZ-0004sY-7I; Fri, 17 Apr 2026 10:49:25 -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 1wDkVX-0004qM-HI; Fri, 17 Apr 2026 10:49:23 -0400 Received: from mail-francecentralazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c20a::7] helo=PA4PR04CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wDkVW-0007Cr-5g; Fri, 17 Apr 2026 10:49:23 -0400 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com (2603:10a6:102:412::6) by VI0PR09MB8150.eurprd09.prod.outlook.com (2603:10a6:800:2ad::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Fri, 17 Apr 2026 14:49:13 +0000 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com ([fe80::c461:b510:b6b9:f442]) by PA2PR09MB7634.eurprd09.prod.outlook.com ([fe80::c461:b510:b6b9:f442%3]) with mapi id 15.20.9818.023; Fri, 17 Apr 2026 14:49:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=dIeBPJ/pFdGnMsJiZ+2JU0NZbPfpoRbJjvoBjlA6yrqFo5uKjVdWgp7wDHiD0SGbqy7bB+A8iiNZjBMgPZqtreCQn6I1jKkmW2AFBO5wciCgEwNbbCcFX0WpYvMaKYefX0BdXuxroT+EOm5xyRVOdlpnH2TkC6cpe9TGQ563ltNLTVjcUAx84yZn+ac2ELhJM21PVuJXhQkX+wqfbRWC6Jl4wTrEcHJjGncYnydQ1OyDt4s2r2xON8Fwu0rUGP9oQ/dVP6yWdU0TGPfs632K4sivHIGvfMlPugydMnbrooSzqKPtnhpKvpEBuHvbqokrKhnBeDIWAXeybYADLkmGBg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ddK7Rom0AYFdxbB8gCajhiYQui/iJNt6SZbcvbfdXOU=; b=iuGCWzn/z2TXMksp+ePuGcCd8zw8JT2z1pHdb/eNwg1CRPajrqLgybJEmqgMAUFBaobB7fU2DSZCW9AYPsgwhP2LcwoFRGEyr0fjkRIzAKp1CXJ84xAGh10mx4Vp3jSWlFzgYtZV1/LtKLU9z9Eypb2/CZJebTwwPpV/FKNPkmP2gPIFoJAGYO2Skz5CJoXEKurbOMcBwzrb8qGfh163cJCfuHi5LWXThZfOMSJ0MmVL8vSH2cLYUQpJaiw3jpNiMyljaDKv1n25yNCPcURn/XFCSMch+6yzveKzeR0Dqj/XHzc1dEW6xB5N6KTMnwzQw4SxLZJ5TPwDrfG25eQnYA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=htecgroup.com; dmarc=pass action=none header.from=htecgroup.com; dkim=pass header.d=htecgroup.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=htecgroup.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ddK7Rom0AYFdxbB8gCajhiYQui/iJNt6SZbcvbfdXOU=; b=OXb5cS6emEviTbv5LGwDbh3d/T6kBlDNdCs+QdR6m8aMzbabVWziZsKSm1s4Pv22HonB0h+/xJXU8fghc+x0yOyhrSybbOjE/dFUEtRt0X/hegeWT+YNs0q+EggqroMEDz/W1+XpZFV6Pdbk9oiR2SQlihWeZVr6jhg6rxBVk5tCgFQAzCCzpGherHTpiZIk2E83JOERtrePoU+FbKlDQayA1adlYW5hPyEDMl8vnbqj1WkT2sZMJ9EX2VUpnjfbElthIXGcOfrdktdHBzZC3Or1rKIAMIDl7h31PCaSvPPX1FVH/QrKtHmPBiBI2cISFkjXyWzy5me2PlnZfXLm8w== From: Djordje Todorovic To: "qemu-devel@nongnu.org" CC: "qemu-riscv@nongnu.org" , "cfu@mips.com" , "mst@redhat.com" , "marcel.apfelbaum@gmail.com" , "dbarboza@ventanamicro.com" , "philmd@linaro.org" , "alistair23@gmail.com" , "thuth@redhat.com" , Djordje Todorovic , Alistair Francis Subject: [PATCH v8 1/7] target/riscv: Define MSTATUS_SBE and MSTATUS_MBE bit masks Thread-Topic: [PATCH v8 1/7] target/riscv: Define MSTATUS_SBE and MSTATUS_MBE bit masks Thread-Index: AQHcznlbGfWgzQqaake/gvC4iYEMcg== Date: Fri, 17 Apr 2026 14:49:12 +0000 Message-ID: <20260417144905.178056-2-djordje.todorovic@htecgroup.com> References: <20260417144905.178056-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20260417144905.178056-1-djordje.todorovic@htecgroup.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=htecgroup.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA2PR09MB7634:EE_|VI0PR09MB8150:EE_ x-ms-office365-filtering-correlation-id: f5834115-751d-40df-c5b6-08de9c907ddb x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|7416014|376014|1800799024|366016|38070700021|18002099003|56012099003|22082099003; x-microsoft-antispam-message-info: /P1dms/UzXV8v02GqW/GHEfkLsnPWUsGr+aqpJvqT1dqEOckQMDNoJsKElMTHJcOmgSJvaCnb0N0Wd00gRoAavXNG4KvoWnitYT8sOlCE2KoIwS43fbw76hxLh+W2ZYyLKFm7OB+brPT4svYxAPt3pgocrZ0l0H16HWlxjDQPTT4zFLHso66WNC1Iht6zc3C+v79WYZWtc2d+uJw1zNLF7pX+6lIt0QRZGJFGq4H1+V8jU/oW07geI/FncO609sEGndnF5QYFIibl+1wARYfm4M7elbRIKJGyf3UnRb+16YEf5IfJlEw9n7+yLYDGY/AiiJpsgAjCQX7J/k0lO11tvuywNK3MqguMC+9c1Rd1PV2H5WT0BMm5rvlJWlXsa2LJosjeh4sbdHvFeHeYWA5/+S+UyIhVvE39GDWYwzypp+k+BnBTkSnzDypl7eQvHVWIk57nO+bF93LgupJeu1x3+EAYwJxAUZiHfDdTYl57dcFWLchCx4vrQP68TLusuOCdiMX8PkNiIfe9NdFcEJ2Ked2i3hnXDIEru9NOnh+SKstFo+2EreRsL+tu4wqr+jHsS4hLbPcME0xPjAMXqBd7GU3yc4XvNOtoCoDLWadYaFMGVlxWDSup+mbTkrX/MmdBOP5k5Y2LNEY+UGYxPGZoE+sZ0yyXHU3ShTxiE8FQ31LS5p7zxqq3uRHu1AtZ19S3Yu27gTTqMhQGboVigXetf5ta1Y8BCLskjHPe81TuRUuhLF4rjCdECNsOOiGsDIvdU/nSfO/gINV7cP9LxhLiTCXEHdJhCzdrObn5t2/LvI= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PA2PR09MB7634.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(7416014)(376014)(1800799024)(366016)(38070700021)(18002099003)(56012099003)(22082099003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WW56bWFYRTV5QWplOTVUbHRscWs2K2JiOTdwRlR3bEIxYjIyQVh2aWQrU1RK?= =?utf-8?B?Rmx4T3NXQnRRamwvSTJ2U0hXSnRPT0loc1RQNjVGc01rZ2hmK1V2S1BIZXd1?= =?utf-8?B?ekR0YmpmbzNEazJIeUN1eUMwZlFiM1M0UlJaNDZnT3hrTjVoenpiOHZ4NEdW?= =?utf-8?B?aHBlQlIvKzcxdk96QXRURXBmQ2ZXZHVReUhJN3FhQ3BiUjVnM0dXUFlXL2ZG?= =?utf-8?B?UkNqdlBUaFplb1NoWmg1a0xCbTB2QUpNYnBwbkVJOGRlbzFDZUZKaGlCM0Zk?= =?utf-8?B?cjBUeGltUkpkdVdwNnhvMzFkY2hWcG5PM1hFRnlEeUNmeENvNmQwUmgvQXZC?= =?utf-8?B?Q3h6ZWQzWWpUbWRkOUtwYWVDS2RIcmZKdlA0QzFKYkU0SE1jTDcySHJ3R3hl?= =?utf-8?B?TTVhWGpzdVM1MXNoek1Pd3R1UWxYc3ROQTdVczVDMHljdnRtV1F5ZnVibDhL?= =?utf-8?B?VFgwQVBRZXhiTnhXOTVDM2laeFRRSzRzN21manlMMUswNTlRY3lmUlA0Rm5t?= =?utf-8?B?d3hsOHl5MS9OT3pZYWtMeU9xd0I0QjE4U2ZlbmE0MmpOejlmV2VBR290emlL?= =?utf-8?B?RHZkNW91L0kxQWdOaks1Q2pSdmp4NmZ6allyNlQ3MDRtMzhkRFpTamp3cnM5?= =?utf-8?B?azVWWFhjcTFQdmVXMWdwSVEyZ3ByK3JkZittQkJvYnBTTnRNUFh0VkluTDdp?= =?utf-8?B?eTFxQUtXQmhQaS9PMWIxUjZZUnlXTVhBeDdMWlFZd3RzQkdKaTVkbGlOK3RH?= =?utf-8?B?SlRSSG9JamlacTNDNEtCbk52SUVYVVg5a3EycThDRTBIUnk3NWJZQmcyTmNS?= =?utf-8?B?cXhDUXg5N3VPQW9NaDRxNTlCNVVKQlJWeEdRTXQrcnVzVnl1K1VOcFRpZVpr?= =?utf-8?B?VTNnMkVvTEh4UDgweTJGanAzR1JaVytBTXZKQ0QzNXp5STdnb0M4dUZtVmlM?= =?utf-8?B?NXgrRFpXb3NmZFBTYXd2VnRuTlZMdkl2bjhyS3JuT0xnaTg1TjIzOEZQSXdt?= =?utf-8?B?YnJWMHBJNFMzdEZ6OVg0U2FZQU9uZjBoV1hMV0JXSnM5RlVWckE3c1VON0d4?= =?utf-8?B?NHlsczhIU0RSK2FSYm80c0FIYmQ1YzJaUnJndHNLRWJTT3lLWjdsRHJyaDVE?= =?utf-8?B?TWdQRGJUc1hmNVM2M3BSZWQ3L0RlK051cStnRkdDcUIzSzdJc0cxZ2Y1OExi?= =?utf-8?B?R3JLVm5zUjFvd1dZZnFiNFpJUGZsTVpuZ3BZSnJ6U1RPcW5jRzFwbzJ1WW1O?= =?utf-8?B?OU1ENCtpVW5HVmJ3S2ZoeEpLUzIwVjJTcktkMXZCSHA2akVxeTJmaUVFT3J3?= =?utf-8?B?UFVTek9XUDFYK3RJZng5K1VZTXBjeCt6ZkpHZTVjdTVzeDQyYkptaksyRlFY?= =?utf-8?B?VmVreVFPMFZmQ01WV1FjckVYSnFEaHExVGZZd0xUNGl6VTl2YjJmdVVKMk0r?= =?utf-8?B?cTlsRkpqNVNITGZ6NjFqTENQZE45VFBveFcvNFUyVXBxaCsxaXdxNEpwVGpw?= =?utf-8?B?TkdoYmV6TVlzK2ZkNnVwcUtENDFBdEhOYThwN3E3U2VneW04N1ZMYnVxRHBt?= =?utf-8?B?azA3NmpLNkFIQnVTSXFYWmhEUXRKK1ZXOXE5aWhKSEhhQkdmZExBRGhKRTBT?= =?utf-8?B?OXBsbmM0Zi83cUkvT09qWmcxYnFXWUlpc3RDMTA2L21HNTRMR1ROKytrSmk5?= =?utf-8?B?azh4MzIvaytxb0padW5VUjdvTGZBZDZDY2lqdnBzcjRrdkI2N3I5akpZUTNE?= =?utf-8?B?b0hNaVRFM3poN3doREt0SER1L0Yzc2dadkZaK0UrdG10aW9yMmdSSUV3UEJ1?= =?utf-8?B?ekNhN3VOaXBOUXhHendyMEtYVTg3bU9jR2VmUDVSK2tOV0pPZ0c2TmVUbDZJ?= =?utf-8?B?SXJ5MUtCdjN1b2tWTWtSYzJDY3Uxemt3dCs3WnhxeEtvRkhqeVVDN0dZVlVy?= =?utf-8?B?YlluaEZFamo0MjJVNVVqdHNhazhJRk5UL0lBSVJzbXdQa3BLQ2FNRGtuRVNQ?= =?utf-8?B?cHF3NU1WZ3NRc2hxTG1QVFFjZ2RpWENDOWxjcUsyVWpTLytXQURFNVdScngz?= =?utf-8?B?a0NoTk5qZlJGS3Fjck01N09rUVBRSGlDV3NLWFRlK3ZmWVlBM0ZPZk90NkZt?= =?utf-8?B?b09VRGZqSVVpRU1pMFRxQzlTdkp6aUcrU1U5dHBlZ3p6czZjN1VjSHE5S2Rr?= =?utf-8?B?cDd5ckZ0dHRycjdMckpkYVByZkRvVHNqSThVR25WYWRFY2xzbjNRWDcxU01V?= =?utf-8?B?UkwvdjdacytIY2R2TmZBTVZaemc0U1ZtWlJqbFJtZlhOOUlxYUdQdXY1bFhT?= =?utf-8?B?RkRFd3d3NUpBSXZ3S2dlWjJFbGNqODVYNWxuNUNMM0dUbVlSK1lhQ0Fja3Ar?= =?utf-8?Q?T+ZYFak7VO5YmuywXqUHkkSMA8Qm28WJtr9jO?= Content-Type: text/plain; charset="utf-8" Content-ID: <65879F63B8FABF4B943664FBD701BF3D@eurprd09.prod.outlook.com> Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: htecgroup.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA2PR09MB7634.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f5834115-751d-40df-c5b6-08de9c907ddb X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Apr 2026 14:49:12.9138 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9f85665b-7efd-4776-9dfe-b6bfda2565ee X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: IqjHqM5l7G00AHCSldeccyQdpDeuoyRkXklvgke4G6YcEZRelrQuZHsf536u2Sr0F0nhxiYRYZ8iIr3u77l503BbBZ7F/UqRZ5StprUxkis= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR09MB8150 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=2a01:111:f403:c20a::7; envelope-from=Djordje.Todorovic@htecgroup.com; helo=PA4PR04CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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_NONE=-0.0001, SPF_HELO_PASS=-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 @htecgroup.com) X-ZM-MESSAGEID: 1776437377807158500 Add the RISC-V privileged ISA defined bit positions for the Supervisor Big-Endian (SBE, bit 36) and Machine Big-Endian (MBE, bit 37) fields in the mstatus register. These are used alongside the existing MSTATUS_UBE (bit 6) to control data endianness at each privilege level. The MSTATUS_UBE definition was already present, but SBE and MBE were missing. Signed-off-by: Djordje Todorovic Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- target/riscv/cpu_bits.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/riscv/cpu_bits.h b/target/riscv/cpu_bits.h index b62dd82fe7..c2a3ee4bf3 100644 --- a/target/riscv/cpu_bits.h +++ b/target/riscv/cpu_bits.h @@ -628,6 +628,8 @@ #define MSTATUS_TSR 0x00400000 /* since: priv-1.10 */ #define MSTATUS_SPELP 0x00800000 /* zicfilp */ #define MSTATUS_SDT 0x01000000 +#define MSTATUS_SBE 0x1000000000ULL +#define MSTATUS_MBE 0x2000000000ULL #define MSTATUS_MPELP 0x020000000000 /* zicfilp */ #define MSTATUS_GVA 0x4000000000ULL #define MSTATUS_MPV 0x8000000000ULL --=20 2.34.1 From nobody Sat May 30 20:14:19 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; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass(p=reject dis=none) header.from=htecgroup.com ARC-Seal: i=2; a=rsa-sha256; t=1776437498; cv=pass; d=zohomail.com; s=zohoarc; b=LdmCRNVhV2LxBAXEq8XK8o0sx+YiqOKq0HJ27MTqj/XytfqUrs3lNnKVwt6JhzVP40vHg1HNmjolW7o2tM3riTzd019E8QBZB+9hoMJfl1SNiAl8Gdb3AG9sMOA5qBL5MOf+GoQ5t/utlPiCmxuz27u4LBQve3gupGI/sMvZtfc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776437498; 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=yBYaelYJnDEOxuGQ6Xgr1D3xcgv6OmmdjvzXthya7nc=; b=cUIAyKZ3WNzTUT1iPcolH1BbBL2lBRIHYA/sio3bHq8TpLOkFUpd8j6IA8SB6oc2E8r2eKK1Jjcpw51m2NsTl/NksGEd+S0eraAPkxBlKalCOQEC9ef5VU/C9wEYgGH0GXa+JhEoMJ9kLwipQ3ut9Z2D+OfaY9Lk2Q1+ETD3hMc= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); 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 177643749815188.17070030043988; Fri, 17 Apr 2026 07:51:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wDkVX-0004q8-AO; Fri, 17 Apr 2026 10:49:23 -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 1wDkVV-0004pg-Hg; Fri, 17 Apr 2026 10:49:21 -0400 Received: from mail-francecentralazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c20a::7] helo=PA4PR04CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wDkVT-0007Cr-FR; Fri, 17 Apr 2026 10:49:21 -0400 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com (2603:10a6:102:412::6) by VI0PR09MB8150.eurprd09.prod.outlook.com (2603:10a6:800:2ad::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Fri, 17 Apr 2026 14:49:13 +0000 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com ([fe80::c461:b510:b6b9:f442]) by PA2PR09MB7634.eurprd09.prod.outlook.com ([fe80::c461:b510:b6b9:f442%3]) with mapi id 15.20.9818.023; Fri, 17 Apr 2026 14:49:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lzQQEDXmfQLr/nhSt+Nz9ZRAumwzMzSl1mzYPkklujw+LKw3FGKERh5LTOZL2Nxh7T9SiAOfNXoyjI9E2LyMZ6wZ4sUhdrQY4FPEpiGj17KNXWiEYoMd3qmD5g8FOiYrKhvjqGz91l2ZXyFwNx9CN4j9q28vhq297sOdpWd2811u5vXBhh4IPn9ymTjA/ug6H/imyzVvQw9vxffmt/eYLeZeNsuRZ0suHpbtkvclwIaWThAA3nuXqFrGu+TG+qrWeyL7f002pvVk5kkVbtuauSb1ZtVo/HEnTchQh6Qvk+tBAw6wI4J87vEYTIOcHLQw21HXmNbF9idsrsND8oceEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=yBYaelYJnDEOxuGQ6Xgr1D3xcgv6OmmdjvzXthya7nc=; b=G1ONxqEm/i8OCtf7tBr8JaUnH7gGIybl9SBf7FfK3ErABN1HxPME12p6gEGcqTm3DuMSAGUssNmUlvI4+2xrngHmI/1EoQjIJKIi5q7Crz0E3aXFfpMj35VQdnUTTomzMqcIqqQ1UXSfsl88CS5QZ/kKi6s3ptc59uPxRUeB7DfKEc2p9kqMdBOZ1lW7b9R9wuHp+wvqoJqy0mK72w7xU/U/k2tdYJXNuqc0ERPXx0qnNKVRejnPZq7o7k4QWgMNWpOk4PPfJIiL+XknDjqc26afDXnh1YsdflRbTcXd4ktDtk0XiZ0dbFuQHMzfPyjFoYY3v3QRboZ5nPQ3OBvn5g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=htecgroup.com; dmarc=pass action=none header.from=htecgroup.com; dkim=pass header.d=htecgroup.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=htecgroup.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yBYaelYJnDEOxuGQ6Xgr1D3xcgv6OmmdjvzXthya7nc=; b=IaDsdenhicKZu9mshvThwjmgYWuMWOAnXyJ4tWQQJ9ev9MPUChTVPPiHpOqrX/BvTDFpzgV+lylB+hOJf4cVHrh7AL5MX4XM7tr67n/EermCTQhtLycQ/9zJlCgeFtOG7FpIWtFoiYOiH86Z/vmqHen/+LS5AxuVognME1YdEU6+jotQ5PhedAfQ4TNGjFLxfF/Jtj2GPWseX+GO/Ms7xHRqzusgG7qBqv2DpAIl1D/OZ2G7IA03kcC4N6gd3Z0BCUNlBdOui4zloDQkS52Gb/qRZBMnP5OLbupqRS71zRAAf5ebS8IWnD2od0rD4BV6eD91h8rnqf17wAepkyDrSw== From: Djordje Todorovic To: "qemu-devel@nongnu.org" CC: "qemu-riscv@nongnu.org" , "cfu@mips.com" , "mst@redhat.com" , "marcel.apfelbaum@gmail.com" , "dbarboza@ventanamicro.com" , "philmd@linaro.org" , "alistair23@gmail.com" , "thuth@redhat.com" , Djordje Todorovic Subject: [PATCH v8 2/7] target/riscv: Add big-endian CPU configuration field and reset logic Thread-Topic: [PATCH v8 2/7] target/riscv: Add big-endian CPU configuration field and reset logic Thread-Index: AQHcznlbw/aH1evqiU+h9VFuIPcTdg== Date: Fri, 17 Apr 2026 14:49:13 +0000 Message-ID: <20260417144905.178056-3-djordje.todorovic@htecgroup.com> References: <20260417144905.178056-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20260417144905.178056-1-djordje.todorovic@htecgroup.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=htecgroup.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA2PR09MB7634:EE_|VI0PR09MB8150:EE_ x-ms-office365-filtering-correlation-id: 5e64bc24-db2c-4eab-073c-08de9c907e09 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|38070700021|18002099003|56012099003|22082099003; x-microsoft-antispam-message-info: LhgnDzzCTfGcw0bQJIr2bm9coXCdeT5UgVYZ0Q4KGYTpVZi9+x/PEQZrsUTbHmvgPp/5I0nKmn1RVMXOy5K15kiUk3b7LKQrOmrlct6DCrwiAj7gNhjlMUiMDchW26n3huuqPFO4FGuYx0mHeuDC6XvOjplZ0ZRhB0Hn9HJkxUHO1bBUrlPYO9RGMciYUO7AXoxZy2xH4JGnvioXY3ZIk1ZyZEKyUL6IuB+W/a12weOUr3Lq+dypWl0PX+3a7uJRx8ATm/eMoMHxSZDZu0aL2qh5oQg59y7qwjbnTTF1MqDEJoCiCz1Qw8DHT7yC6qOTrqCh1lPWPFGyBpV0/JYPdcFeboj+HrjABeG1bG72b8Cb+zgJUKrTuDI+50RfuuyWpXxpJ7XHL0GirjEAIk6JT+AXwcyz6upqVtBrAlsADQZU/OzWF779i803rD7isZgdCxts/tMjMJNGxB5/5hmJIJo8dr+ImNep2Vx+zvCB6c4MP7k4kwi1FxcGKfPtJszdIZvH6XyhUszk6XX4lNad4Zec8mms4SX3UsJ5wS9pI8aBkE9z5rEkL09CO26/nS7pBLakY4Y6ByEoitP1Cm24TLQEkK1f9nz5uCEG/g9GngtLFsEORs61sDF+WR5Rg3GQjVcNQtFYjR8K8tzPXtkHcFouSyrsjA3jOAOStJmmWsRDZGqirkGHNos5JmOLSr44/X96r40N2BwO/MPzyf2n+u3g7pDuNXK33krVdR1HZAstjhrZPvy+u4StU8r3FoYGhEfdoGS+73mr9HbciBWtmsFScZs0yq3OxNriGCW8zr4= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PA2PR09MB7634.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(18002099003)(56012099003)(22082099003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?Qf+4Kcr2fpEzsVUQBOFd2zzdz7aqbsInn6APbDRRfJe4tPC/VlkAoYxdBo?= =?iso-8859-1?Q?1l3j+bdnoVGROz4QXNntxYU06JVDWZdIyrWcLIxdFGgXvCOZxlIicOYUjq?= =?iso-8859-1?Q?c+YkUFa4m+phIqg7bGRV12QmOKJhgaxMpNxW6aWCfRVFgTNo9Q1mfi1dcX?= =?iso-8859-1?Q?ym5abecjqy9a3vhwVLp26FR8Xz9vd++YaVgMdJMyp0iMWhgmFQ8a5xL3AK?= =?iso-8859-1?Q?m0gQn+bM9oIArBt3h2Q1H/OmmY5fjUrr0xB/RhSKdxr+exuyl0q8re+HEW?= =?iso-8859-1?Q?k/bM6v2y8HpXUreghBRhT4JNanxdgLq/TPwx9BFayUq/h+2gHil0Fnasur?= =?iso-8859-1?Q?AGat6MWIBbTlCuzIqcyNYndZtUEUJ05NrmpoU04Z2xA100TXqW1b+1x7J+?= =?iso-8859-1?Q?X+UsLVtHE97Cke1DRUIqmCDKh4kkLLjJMFb0NmWo6PQffkLsjPEjau5/56?= =?iso-8859-1?Q?25GbE0iBgSZH7btYhUjyfgQyN0YbMgwcQrR7i+z3i0957+pljLCqorYtJm?= =?iso-8859-1?Q?3+gh9tuF1ldhBEk5vs0Skwg8mOXrFo/c6D8QBkTwxizq8k41T/UjwUuwZX?= =?iso-8859-1?Q?rMlEgV282YR5CwZbOJDloN+/xmOAeXBwaip3TDuKHcRWidix7PTAMuE4oL?= =?iso-8859-1?Q?CG4qjeeC3tRa4e++bztkVb7/q8uU/2YBsImo+MVFYfbqTtDKVkE3rWASoU?= =?iso-8859-1?Q?lM3ZDGIzgFqJ5PwitiT5qF91xTa/zXy4uPtEQC1c8sT32SokOP7vfhgHgl?= =?iso-8859-1?Q?32iIZZ1LvMQgC1vXdyMijpFiAZc3J+JJVYwvB6OvjEqEq3P+DuHWYG1lhD?= =?iso-8859-1?Q?iowi4XKCW325vvpidk6PCKjPcF1oMqrYI8YQCyLIUPvLn/MTXXC2XBk6jp?= =?iso-8859-1?Q?2bzVbjerYxb4nNwjaX5rt1l+mJ1OKdg6B6VbglBdNjvQYD9dljEdW60g4/?= =?iso-8859-1?Q?rOqBi8pOUFGzOGUaJTneRKm7NtkYpFScv00sbqqtGBB6vsbHzwcV66Zcvc?= =?iso-8859-1?Q?rnKj/zGqx0XePBTtNnZl3n5EupCnD1CbfaWxi4DjzzHUmAJQFJSpVy68xP?= =?iso-8859-1?Q?EfY/z7zolThpBH0xp6sizvT3JXJYzxIS1sbVIT7iU6BVlylYul6oqG++C6?= =?iso-8859-1?Q?iiGmJW0SZzZY+z4Zbb9vz4MTQ/3s/jXaAereewVH73iUyLAXx4Q5Ny4x60?= =?iso-8859-1?Q?dMcL+MBHsrSPSoJmPd87kmtKXbftYbdQbtMcM4LJFlAGjKrg+/MEE8jJDW?= =?iso-8859-1?Q?oFCsc9cjWG5PJi0TmqzuS7NUAhFfNzgJfQv28ji9ZC99Cu9px1VL0hg4nl?= =?iso-8859-1?Q?LP6KGBhrtj3zWD5Z+JwbFAlb8AfxEjArNrVGeVIn4Z1P81QlFuX5uGdvpE?= =?iso-8859-1?Q?9uGiOX/pPITMEjRNE4JbJHff3HIQq5aQ30BI2i/o8zb4HarD+JKtO84zPm?= =?iso-8859-1?Q?/NbfONgxxkIC9nr2BNSJb0HCNmDfZhjw4j6BhMzMCiDX+ZzPiBe1hbinOH?= =?iso-8859-1?Q?Ub4VId/jERa9JLLTGJN/zdM+OFgDF/ojZU9JiS13aMzgil1JluzxAziAkn?= =?iso-8859-1?Q?rTEENg2lPHea8AvpFPHNZtg3Nt4JX4ikkrZIsFVom4stPCcgF5kxvvHJ7J?= =?iso-8859-1?Q?pAUwFFjj3QeBrnSlPMDHOQugo4Xd9qKV7BoBqbGRG/+GPnOaPBPbJmFJz2?= =?iso-8859-1?Q?H4mDjdAaO0u0o/M7s0i0JutOj7B14Eu9ydNODgUuQpJDZJz/NbKvLNBtxA?= =?iso-8859-1?Q?HvbWzoU32tjv3aNQEeUTKpj2CYyPsbaYU8zU0oUeuk/tY5hoLlbCnumSdH?= =?iso-8859-1?Q?JNfTIXpiv5ao642nrUyI+6oLvNDeXwwDYreKPWmIpH2+VWSlGEic?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: htecgroup.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA2PR09MB7634.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5e64bc24-db2c-4eab-073c-08de9c907e09 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Apr 2026 14:49:13.2220 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9f85665b-7efd-4776-9dfe-b6bfda2565ee X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: aMDusQyeC2T1TyNIepe4zZsx8IWr6z0DIzGvxYZ9cax9sSCTsMkjkErtKJP1FpSgD5jHA/CVWekTcLFmYk5wPPsF3LzRKHpJRxDlYPEWrqI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR09MB8150 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=2a01:111:f403:c20a::7; envelope-from=Djordje.Todorovic@htecgroup.com; helo=PA4PR04CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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_NONE=-0.0001, SPF_HELO_PASS=-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 @htecgroup.com) X-ZM-MESSAGEID: 1776437499776158500 Content-Type: text/plain; charset="utf-8" Add a big_endian field to RISCVCPUConfig and wire it into the CPU reset path. When cfg.big_endian is set, riscv_cpu_reset_hold() writes 1 into the MSTATUS MBE/SBE/UBE fields using set_field(); otherwise it writes 0. This makes the reset value deterministic on both cold and warm reset. The MBE/SBE/UBE bits are not included in the writable mask of any mstatus/mstatush/sstatus CSR write path (unchanged by this series), so the value chosen at reset effectively hardwires them per section 3.1.6.5 of the RISC-V Privileged Specification. The user-facing property and documentation are added in a later patch, once the full endianness support is in place. Also update the disassembler comment to clarify that BFD_ENDIAN_LITTLE is correct because RISC-V instructions are always little-endian per the ISA specification. Signed-off-by: Djordje Todorovic --- target/riscv/cpu.c | 10 +++++----- target/riscv/cpu_cfg_fields.h.inc | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index e56470a374..a32e4fd6d6 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -716,6 +716,9 @@ static void riscv_cpu_reset_hold(Object *obj, ResetType= type) env->mstatus =3D set_field(env->mstatus, MSTATUS_MDT, 1); } } + env->mstatus =3D set_field(env->mstatus, MSTATUS_MBE, cpu->cfg.big_end= ian); + env->mstatus =3D set_field(env->mstatus, MSTATUS_SBE, cpu->cfg.big_end= ian); + env->mstatus =3D set_field(env->mstatus, MSTATUS_UBE, cpu->cfg.big_end= ian); env->mcause =3D 0; env->miclaim =3D MIP_SGEIP; env->pc =3D env->resetvec; @@ -803,11 +806,8 @@ static void riscv_cpu_disas_set_info(const CPUState *s= , disassemble_info *info) info->target_info =3D &cpu->cfg; =20 /* - * A couple of bits in MSTATUS set the endianness: - * - MSTATUS_UBE (User-mode), - * - MSTATUS_SBE (Supervisor-mode), - * - MSTATUS_MBE (Machine-mode) - * but we don't implement that yet. + * RISC-V instructions are always little-endian, regardless of the + * data endianness configured via MSTATUS UBE/SBE/MBE bits. */ info->endian =3D BFD_ENDIAN_LITTLE; =20 diff --git a/target/riscv/cpu_cfg_fields.h.inc b/target/riscv/cpu_cfg_field= s.h.inc index 70ec650abf..51436daabf 100644 --- a/target/riscv/cpu_cfg_fields.h.inc +++ b/target/riscv/cpu_cfg_fields.h.inc @@ -154,6 +154,7 @@ BOOL_FIELD(ext_xmipscbop) BOOL_FIELD(ext_xmipscmov) BOOL_FIELD(ext_xmipslsp) =20 +BOOL_FIELD(big_endian) BOOL_FIELD(mmu) BOOL_FIELD(pmp) BOOL_FIELD(debug) --=20 2.34.1 From nobody Sat May 30 20:14:19 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; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass(p=reject dis=none) header.from=htecgroup.com ARC-Seal: i=2; a=rsa-sha256; t=1776437493; cv=pass; d=zohomail.com; s=zohoarc; b=EaXsiN8fO9mktJp4/j1OBMAuyY82j/ZEeEaBjn3WgWOBbG8h86TbF9AQqV9YzlXeqbhfWfON8pWCNy2g0Hp/yiheyVloV7VImvuwjmO8JOhMQiFh/QUVyxtoapkh0HXPvwf68ygtkLG6KrkrxKHlqSHQNljQ3utMvsQkyhmbgBk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776437493; 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=Oay11mJt144P7M4ouoSi8o0A0Ae8BlhXt3WQoUaRJI4=; b=bKBEUatHEjxY4HvhogOHpe1EB5tzAEM9JFxoTkvtVW7DJ0EEVoYV4mchAKaQHZKnv42FHTKu2EW4Qn6PwzhgMKKxsfdGOOs94pCFSkb8lMflmuUHu2VWKpvXP2UJiXuVGjj0Uc4304tWS3TD57yckPM9pXg7pCFxZhZMxbbspvg= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); 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 177643749335629.95948629376096; Fri, 17 Apr 2026 07:51:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wDkVf-0004y2-Lf; Fri, 17 Apr 2026 10:49:31 -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 1wDkVc-0004vZ-VF; Fri, 17 Apr 2026 10:49:29 -0400 Received: from mail-swedencentralazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c202::7] helo=GVXPR05CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wDkVa-0007DI-1k; Fri, 17 Apr 2026 10:49:28 -0400 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com (2603:10a6:102:412::6) by VI0PR09MB8150.eurprd09.prod.outlook.com (2603:10a6:800:2ad::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Fri, 17 Apr 2026 14:49:14 +0000 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com ([fe80::c461:b510:b6b9:f442]) by PA2PR09MB7634.eurprd09.prod.outlook.com ([fe80::c461:b510:b6b9:f442%3]) with mapi id 15.20.9818.023; Fri, 17 Apr 2026 14:49:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FB1AiQK2pqE48KwhfoEU268nEevCAcEclNHA93gYUMtulWKStB6RaRkLq0dadyDBqxXd2/7pHfK1sA2Hqc8UjEzdKwus1b5HHDZlG4PyyjukkIb+emMgSHYvnRlnPZoADAWnAL4ElhasndbsCiKjxCo4heafwLq8VkL55043yzUJxFMgIoqkLaDOGNJusnh+v4g+buCWMNkk/iP8nKw6X/QYj1BChT/py4LoIkcGHgqNKd0NlQPaJPAhWd4J2qZJEuj9q04teVRYUSwzolWiQG/mgIWFBge7hEyf0ROeJGHhFrEN35c85d0xabu+FvHcwacgD35uiSquTbx5/kuOPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Oay11mJt144P7M4ouoSi8o0A0Ae8BlhXt3WQoUaRJI4=; b=KfMo2qRxla0NXMDT98UkPvjL15H50mSBAaeR0xNzrJ6ez3x7Wj/SfFb5X5oVG5KDU0a2muW9L1EahXenmv/tosBU8ZfEQSEdW6Mjn8GgjFNXZxyzMQz7XXx9b7/wEiZqlgpPTPy2F8CZUeQJY/eJlsSEo/hWi/xHsk5oqXc+S0TFLWY3MUCjau7O04FlqrWi3j40ZO7m9Y6fO4FNTVwnogj3Z6w/lr0WckJ0bbqNn79NU+UmzyD0HbawxqG+v5twv0I0jWK7WYfNFMeAFtX/xmYMy6wXh+Qw8BC4+zB4GZQWPKpBtrjYJobjHXIfu2+8tJ7Gw6Mc1fxdeB8OfuWaQA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=htecgroup.com; dmarc=pass action=none header.from=htecgroup.com; dkim=pass header.d=htecgroup.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=htecgroup.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Oay11mJt144P7M4ouoSi8o0A0Ae8BlhXt3WQoUaRJI4=; b=Q9NnBPoncr+Ha1Ydxf+W5O/GiDnlLg9DNTUbgBO2J5OqAFzq10AhXR3wHcWcxM6WSSrC912pcsD+JlLRoCAJi0877YmI+Rm4Wv2xHtHYacrQWxjrH9h5WTCLnEHfP19CRaUaglQGOSQ0Uj4bvHoSM8ZD0OJdUlYcmLzrOAHwvVcyh1pVVQCfTmlJ0wLMjF76ZQ70BGCJoot3TcYMwCzkaBOBEbjCaxNoBKgPwuhs0bZ4U7KiMSZh4WqWq94cuOkEstrq6rvrsFfckzNHezwZ52IpOG3N150tnYUliFPPYCuuU4lEL5KVeuT7kVztylF8xV2HrSJQvixEpljdEBXlsA== From: Djordje Todorovic To: "qemu-devel@nongnu.org" CC: "qemu-riscv@nongnu.org" , "cfu@mips.com" , "mst@redhat.com" , "marcel.apfelbaum@gmail.com" , "dbarboza@ventanamicro.com" , "philmd@linaro.org" , "alistair23@gmail.com" , "thuth@redhat.com" , Djordje Todorovic Subject: [PATCH v8 3/7] target/riscv: Implement runtime data endianness via MSTATUS bits Thread-Topic: [PATCH v8 3/7] target/riscv: Implement runtime data endianness via MSTATUS bits Thread-Index: AQHcznlbYlebix+Vak2tXUF3GwInCA== Date: Fri, 17 Apr 2026 14:49:13 +0000 Message-ID: <20260417144905.178056-4-djordje.todorovic@htecgroup.com> References: <20260417144905.178056-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20260417144905.178056-1-djordje.todorovic@htecgroup.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=htecgroup.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA2PR09MB7634:EE_|VI0PR09MB8150:EE_ x-ms-office365-filtering-correlation-id: 30327b07-8fa0-491c-9188-08de9c907e2e x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|38070700021|18002099003|56012099003|22082099003; x-microsoft-antispam-message-info: Aw/UZ6m9PgPs6/D6/BYZYW5mknKtio9hxxNChz0Gfv16EKU/MhXWUvyA/+qVpKRTea2mo7NAsul39y4Y1NAL5a/OTg0JCvqOd4pZ3d5cBFElOjdMibGr3XID5M0/wMFn6eAU4tDARhQuuB9IaIw8z2P3goxUfNS5CthZwBvlq/oMiyBH4BsZvdEZ5W+jpRvtxe/aUaihmV3ifHwn77z3HzsqOimLBNbkt/Sss+E7uaUvIRm1QCmVuqzUq5ILONRBc5fXCgSoL6MHyl52ZkxvqLQBYULEMedxad2XB3TCu7feLMBEWMCLS8efYR4Ga0ZUCJ0zsHrvkEZ8tSo79+6nvsmHTk+0sNIzcQsL7bntbYRoAIGqV4PHq0zWQeIux6ngSdZzeLBtje2eG9ttoEUrAGkQONX9/DezPQp9tb9m4MBU2mDHRPE/90WtuEmKm4JM4V6iHVCXabOjuD8PNT0pw3qXEpsB/OmI9ZaoP9J7/jWgX0fGVZES54roD8cyu1MyLYEx5hKbrh4VYEd3yaw4LqHnvOPoAx5kjRuyX0gdW60oFAwlicLhkex7MxRPQqQiJRJHJWEuvqQAnnCC31F3XZ8eks0YUz1q1w3Q/bPc4Ih7LJRcqjjEEI1cMpWQKgScrNSRTHgun4uuu8ZD76yGcfnkv1wZUAds4AScGz42oleIQOn7dkfzApG1QX8vWWO1mJROQQrjjasWKlncfKSYktOBcQC9WMFS9NHkUsxu2c7VteMmpq1V1f4Clc0lz41hyAwQ3Xq16CsTafBy8aE4NUYur1GTQeYvTMJDIWjtLl4= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PA2PR09MB7634.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(18002099003)(56012099003)(22082099003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?p3+6cHd+dlbiHHicXOtc7u2wY3Lxl6HLgnoCcEmF2cafvh0KN4M/Es0nSy?= =?iso-8859-1?Q?1WM4pt/rCSsYtzFWjOVfGkGS3xTcHCA1U132mF9PQ6qeS2vw1l4yKzmb+n?= =?iso-8859-1?Q?V01TmydqFi6W0Ilrd0SnDAvFMlT/ibYaaDpEy2qwRpOwZPrMMoJqnElse5?= =?iso-8859-1?Q?vxwTZrqICNAKAn7f/LoRdrmq6OWnV0FlfT48hUbGR9MBGRcjl2XZOzDv12?= =?iso-8859-1?Q?CVsoBWyt+SrpgZASuxddoidj3zbq3f/hb4UjrWwfVpqDbTtu00O/0zDfbM?= =?iso-8859-1?Q?5C7a5PwtDnQ4vkDU12mrdABC7UtUPRgTlOVchJdeGf+B94KDZfbHpvzvXE?= =?iso-8859-1?Q?1yzbunOJ08mIJ9wPQc+2LptIOr+Jgq4XgFXp5r0/n1GpBwLIRT11NA/Jgx?= =?iso-8859-1?Q?4XP8PiLors1F3jNEC/xmTpr/zrbMBW+a5asKfZGzGKEvXJXN6LggmnxjQU?= =?iso-8859-1?Q?qS5EOmkY7F6o0Ij5YkK46VAVCz8jr7faqdOEcRyqvKGEeGb3uifL/2aGAJ?= =?iso-8859-1?Q?YbemnsIMokn/eW6fTUwiu9r1IGzSCRmT0hshN2AZetgvwKnOvqt3rhlsF4?= =?iso-8859-1?Q?gHZdT1bo10vI8rRbrMYQyKNzsgSedF+2DXZEohMM8K6MTY00mllU8wjlOU?= =?iso-8859-1?Q?EQqkLkPI+1cdoMPGcg9FScdsGXjeDbG2p5i/IwOjFffrd+CccKxsAPFvCk?= =?iso-8859-1?Q?SSkkVrUR01TeKwbktNW7HcdfnEC2P4SX2lu4U/lEqjtFKkhryP1sH8JqNV?= =?iso-8859-1?Q?J9XdCd2PU8hJiohjrKj/TKSIvyBm/C2g/bNIG716lJgr/t625KdbiQ+HWu?= =?iso-8859-1?Q?yyYiYdlJJmbghhIe4/p/L1nwybkC2OiEwkerraoKJnONgswa5Ba52UedGj?= =?iso-8859-1?Q?3Jj+Ky5i7Wkrz5MfpyJR3cYahZdhUySZemI5GD16OC2NOh0Lf2w1UOiK8B?= =?iso-8859-1?Q?jQr/9yUfvGKWuS6GrCHzHQcMOF5Ke9vN631Wb2mKIxZcJvEFoZ5KpfVF2U?= =?iso-8859-1?Q?ElGU2OmUV+uc7gprGEO1RWbvetXr3l/YzYwyYKxyX9kOCcatjh8CKRwbeZ?= =?iso-8859-1?Q?nmEyAITu6E2iV9jAYfdYcmyZMdDRmXg5nMpQQjYP4u19NUSBhn6omO6ZQu?= =?iso-8859-1?Q?oB6qKfCnCAF0Q5kZ919snB9yEupp158rcvfCQZDPzAlaENlvrEXQOJ9cTR?= =?iso-8859-1?Q?YWOYdH6HVcE+qfF8MzKGiv7k0Vj1935HVeq50ouEFlxN3JEz5MJsbll6HE?= =?iso-8859-1?Q?8+7ns/wipuQFQKDDvMlPHmSHFalILVxw+7EAmxhHxUcYSfbd0jJKvMSdQQ?= =?iso-8859-1?Q?N19VNL8EX2Aah3zKOH3utIqsL1WC42hnnmGfxNjL1e7wg/JuI4HUEGsZrw?= =?iso-8859-1?Q?CF0D2Dkmi51lA639g1wthPfWMIWJ5MD5Vnmimogc1ilZk/22SiYvs+jH3f?= =?iso-8859-1?Q?gugqJj6EDaCANIOqyBTXp87rc91Q889srcUZwSgWqdFLxzzypkFabWV64s?= =?iso-8859-1?Q?D0nRLipEmyAj+m/XvmFwnMjX3nhlc/N2ijbEYZ4cHTzCNjbTMC5s4P2tm5?= =?iso-8859-1?Q?DOtuc+vmsLJdKd768/wBlbErAJPK3nh2wgXUT76lsSMS+2X4G9ScnNRUB1?= =?iso-8859-1?Q?x9JBX+4Yuq3vLC7LWPisE1ztviprce5CxiZzikwKOyGIiNVC+YLCHnvH9M?= =?iso-8859-1?Q?V+/6mQXRVwckrRAWp3w4DDUuHH3O7c24zokFzxLaUOHMgSaS8iAqQdlKe4?= =?iso-8859-1?Q?nhqlRx/KjNQFO4Hs404DCsfQakwpj4+3HoRWjycrAGNUbuZqY0M47lSAq0?= =?iso-8859-1?Q?MNYapR60R1UMxs/1aqvYdyH5t2KL8eO0KgTXXXsXSKGrmKbV54A1?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: htecgroup.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA2PR09MB7634.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 30327b07-8fa0-491c-9188-08de9c907e2e X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Apr 2026 14:49:13.5064 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9f85665b-7efd-4776-9dfe-b6bfda2565ee X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: XN72386rdKARLYxwTMk5oy31edjwOMac1hb0WftytthxPzGDsrZzWValS0gQwm1qW0x2IT2fND8DLe/xxqckDmbgNWfmt2SlQFHpwmwjdp0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR09MB8150 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=2a01:111:f403:c202::7; envelope-from=Djordje.Todorovic@htecgroup.com; helo=GVXPR05CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, 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 @htecgroup.com) X-ZM-MESSAGEID: 1776437497132154100 Content-Type: text/plain; charset="utf-8" Make data accesses honour the MSTATUS MBE/SBE/UBE endianness bits instead of being hardcoded to little-endian. A new helper, riscv_cpu_data_is_big_endian(), picks the bit corresponding to the current privilege level (MBE for M, SBE for S, UBE for U). The existing mo_endian_env() wrapper in internals.h now returns MO_BE or MO_LE based on that helper, so the hypervisor load/store helpers in op_helper.c pick up the runtime endianness automatically. On the translator side, DisasContext gains a mo_endianness field holding MO_BE or MO_LE, which the generated load/store ops OR into their MemOp. The trivial mo_endian() wrapper is dropped and call sites reference ctx->mo_endianness directly. TB_FLAGS has no free bits, so the endianness is carried into the translator through bit 32 of cs_base (alongside misa_ext in bits 0-25). This keys TBs correctly on the current data endianness. The cs_base comment in include/exec/translation-block.h is updated to document the RISC-V usage. Instruction fetches remain MO_LE unconditionally; RISC-V instructions are always little-endian per the ISA specification. Signed-off-by: Djordje Todorovic --- include/exec/translation-block.h | 3 +- target/riscv/cpu.h | 28 +++++++++++++++++++ target/riscv/insn_trans/trans_rva.c.inc | 4 +-- target/riscv/insn_trans/trans_rvd.c.inc | 4 +-- target/riscv/insn_trans/trans_rvf.c.inc | 4 +-- target/riscv/insn_trans/trans_rvi.c.inc | 8 +++--- target/riscv/insn_trans/trans_rvzacas.c.inc | 4 +-- target/riscv/insn_trans/trans_rvzalasr.c.inc | 4 +-- target/riscv/insn_trans/trans_rvzce.c.inc | 4 +-- target/riscv/insn_trans/trans_rvzfh.c.inc | 4 +-- target/riscv/insn_trans/trans_rvzicfiss.c.inc | 4 +-- target/riscv/insn_trans/trans_xmips.c.inc | 8 +++--- target/riscv/insn_trans/trans_xthead.c.inc | 16 +++++------ target/riscv/insn_trans/trans_zilsd.c.inc | 4 +-- target/riscv/internals.h | 9 +----- target/riscv/tcg/tcg-cpu.c | 7 ++++- target/riscv/translate.c | 22 +++++---------- 17 files changed, 78 insertions(+), 59 deletions(-) diff --git a/include/exec/translation-block.h b/include/exec/translation-bl= ock.h index 4f83d5bec9..66068c61a3 100644 --- a/include/exec/translation-block.h +++ b/include/exec/translation-block.h @@ -64,7 +64,8 @@ struct TranslationBlock { * x86: the original user, the Code Segment virtual base, * arm: an extension of tb->flags, * s390x: instruction data for EXECUTE, - * sparc: the next pc of the instruction queue (for delay slots). + * sparc: the next pc of the instruction queue (for delay slots), + * riscv: misa_ext in bits 0-25, data endianness in bit 32. */ uint64_t cs_base; =20 diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 35d1f6362c..ef870d05b3 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -703,6 +703,12 @@ FIELD(TB_FLAGS, BCFI_ENABLED, 28, 1) FIELD(TB_FLAGS, PM_PMM, 29, 2) FIELD(TB_FLAGS, PM_SIGNEXTEND, 31, 1) =20 +/* + * cs_base carries misa_ext (bits 0-25) plus additional flags. + * Bit 32 is used for data endianness since TB_FLAGS has no free bits. + */ +#define TB_CSBASE_BIG_ENDIAN (1ULL << 32) + #ifdef TARGET_RISCV32 #define riscv_cpu_mxl(env) ((void)(env), MXL_RV32) #else @@ -718,6 +724,28 @@ static inline const RISCVCPUConfig *riscv_cpu_cfg(CPUR= ISCVState *env) return &env_archcpu(env)->cfg; } =20 +/* + * Return true if data accesses are big-endian for the current privilege + * level, based on the MSTATUS MBE/SBE/UBE bits. + */ +static inline bool riscv_cpu_data_is_big_endian(CPURISCVState *env) +{ +#if defined(CONFIG_USER_ONLY) + return false; +#else + switch (env->priv) { + case PRV_M: + return env->mstatus & MSTATUS_MBE; + case PRV_S: + return env->mstatus & MSTATUS_SBE; + case PRV_U: + return env->mstatus & MSTATUS_UBE; + default: + g_assert_not_reached(); + } +#endif +} + #if !defined(CONFIG_USER_ONLY) static inline int cpu_address_mode(CPURISCVState *env) { diff --git a/target/riscv/insn_trans/trans_rva.c.inc b/target/riscv/insn_tr= ans/trans_rva.c.inc index a7a3278d24..6597ae8bb7 100644 --- a/target/riscv/insn_trans/trans_rva.c.inc +++ b/target/riscv/insn_trans/trans_rva.c.inc @@ -35,7 +35,7 @@ static bool gen_lr(DisasContext *ctx, arg_atomic *a, MemO= p mop) TCGv src1; =20 mop |=3D MO_ALIGN; - mop |=3D mo_endian(ctx); + mop |=3D ctx->mo_endianness; =20 decode_save_opc(ctx, 0); src1 =3D get_address(ctx, a->rs1, 0); @@ -65,7 +65,7 @@ static bool gen_sc(DisasContext *ctx, arg_atomic *a, MemO= p mop) TCGLabel *l2 =3D gen_new_label(); =20 mop |=3D MO_ALIGN; - mop |=3D mo_endian(ctx); + mop |=3D ctx->mo_endianness; =20 decode_save_opc(ctx, 0); src1 =3D get_address(ctx, a->rs1, 0); diff --git a/target/riscv/insn_trans/trans_rvd.c.inc b/target/riscv/insn_tr= ans/trans_rvd.c.inc index ffea0c2a1f..3b9a745520 100644 --- a/target/riscv/insn_trans/trans_rvd.c.inc +++ b/target/riscv/insn_trans/trans_rvd.c.inc @@ -60,7 +60,7 @@ static bool trans_fld(DisasContext *ctx, arg_fld *a) } else { memop |=3D MO_ATOM_IFALIGN; } - memop |=3D mo_endian(ctx); + memop |=3D ctx->mo_endianness; =20 decode_save_opc(ctx, 0); addr =3D get_address(ctx, a->rs1, a->imm); @@ -85,7 +85,7 @@ static bool trans_fsd(DisasContext *ctx, arg_fsd *a) } else { memop |=3D MO_ATOM_IFALIGN; } - memop |=3D mo_endian(ctx); + memop |=3D ctx->mo_endianness; =20 decode_save_opc(ctx, 0); addr =3D get_address(ctx, a->rs1, a->imm); diff --git a/target/riscv/insn_trans/trans_rvf.c.inc b/target/riscv/insn_tr= ans/trans_rvf.c.inc index 89fb0f604a..e935523c93 100644 --- a/target/riscv/insn_trans/trans_rvf.c.inc +++ b/target/riscv/insn_trans/trans_rvf.c.inc @@ -48,7 +48,7 @@ static bool trans_flw(DisasContext *ctx, arg_flw *a) REQUIRE_FPU; REQUIRE_EXT(ctx, RVF); =20 - memop |=3D mo_endian(ctx); + memop |=3D ctx->mo_endianness; if (ctx->cfg_ptr->ext_zama16b) { memop |=3D MO_ATOM_WITHIN16; } @@ -71,7 +71,7 @@ static bool trans_fsw(DisasContext *ctx, arg_fsw *a) REQUIRE_FPU; REQUIRE_EXT(ctx, RVF); =20 - memop |=3D mo_endian(ctx); + memop |=3D ctx->mo_endianness; if (ctx->cfg_ptr->ext_zama16b) { memop |=3D MO_ATOM_WITHIN16; } diff --git a/target/riscv/insn_trans/trans_rvi.c.inc b/target/riscv/insn_tr= ans/trans_rvi.c.inc index 2c82ae41a7..2de74fac3a 100644 --- a/target/riscv/insn_trans/trans_rvi.c.inc +++ b/target/riscv/insn_trans/trans_rvi.c.inc @@ -392,7 +392,7 @@ static bool gen_load_i128(DisasContext *ctx, arg_lb *a,= MemOp memop) } } else { tcg_gen_qemu_ld_i128(t16, addrl, ctx->mem_idx, memop); - if (mo_endian(ctx) =3D=3D MO_LE) { + if (ctx->mo_endianness =3D=3D MO_LE) { tcg_gen_extr_i128_i64(tl, th, t16); } else { tcg_gen_extr_i128_i64(th, tl, t16); @@ -409,7 +409,7 @@ static bool gen_load(DisasContext *ctx, arg_lb *a, MemO= p memop) { bool out; =20 - memop |=3D mo_endian(ctx); + memop |=3D ctx->mo_endianness; if (ctx->cfg_ptr->ext_zama16b) { memop |=3D MO_ATOM_WITHIN16; } @@ -508,7 +508,7 @@ static bool gen_store_i128(DisasContext *ctx, arg_sb *a= , MemOp memop) tcg_gen_ext_tl_i64(tl, src2l); tcg_gen_ext_tl_i64(th, src2h); =20 - if (mo_endian(ctx) =3D=3D MO_LE) { + if (ctx->mo_endianness =3D=3D MO_LE) { tcg_gen_concat_i64_i128(t16, tl, th); } else { tcg_gen_concat_i64_i128(t16, th, tl); @@ -520,7 +520,7 @@ static bool gen_store_i128(DisasContext *ctx, arg_sb *a= , MemOp memop) =20 static bool gen_store(DisasContext *ctx, arg_sb *a, MemOp memop) { - memop |=3D mo_endian(ctx); + memop |=3D ctx->mo_endianness; if (ctx->cfg_ptr->ext_zama16b) { memop |=3D MO_ATOM_WITHIN16; } diff --git a/target/riscv/insn_trans/trans_rvzacas.c.inc b/target/riscv/ins= n_trans/trans_rvzacas.c.inc index 8d94b83ce9..79bca1e957 100644 --- a/target/riscv/insn_trans/trans_rvzacas.c.inc +++ b/target/riscv/insn_trans/trans_rvzacas.c.inc @@ -76,7 +76,7 @@ static bool gen_cmpxchg64(DisasContext *ctx, arg_atomic *= a, MemOp mop) TCGv src1 =3D get_address(ctx, a->rs1, 0); TCGv_i64 src2 =3D get_gpr_pair(ctx, a->rs2); =20 - mop |=3D mo_endian(ctx); + mop |=3D ctx->mo_endianness; decode_save_opc(ctx, RISCV_UW2_ALWAYS_STORE_AMO); tcg_gen_atomic_cmpxchg_i64(dest, src1, dest, src2, ctx->mem_idx, mop); =20 @@ -121,7 +121,7 @@ static bool trans_amocas_q(DisasContext *ctx, arg_amoca= s_q *a) TCGv_i64 desth =3D get_gpr(ctx, a->rd =3D=3D 0 ? 0 : a->rd + 1, EXT_NO= NE); MemOp memop =3D MO_ALIGN | MO_UO; =20 - memop |=3D mo_endian(ctx); + memop |=3D ctx->mo_endianness; tcg_gen_concat_i64_i128(src2, src2l, src2h); tcg_gen_concat_i64_i128(dest, destl, desth); decode_save_opc(ctx, RISCV_UW2_ALWAYS_STORE_AMO); diff --git a/target/riscv/insn_trans/trans_rvzalasr.c.inc b/target/riscv/in= sn_trans/trans_rvzalasr.c.inc index 0f307affec..79b0b2c63b 100644 --- a/target/riscv/insn_trans/trans_rvzalasr.c.inc +++ b/target/riscv/insn_trans/trans_rvzalasr.c.inc @@ -29,7 +29,7 @@ static bool gen_load_acquire(DisasContext *ctx, arg_lb_aq= rl *a, MemOp memop) return false; } =20 - memop |=3D MO_ALIGN | mo_endian(ctx); + memop |=3D MO_ALIGN | ctx->mo_endianness; memop |=3D (ctx->cfg_ptr->ext_zama16b) ? MO_ATOM_WITHIN16 : 0; =20 tcg_gen_qemu_ld_tl(dest, addr, ctx->mem_idx, memop); @@ -79,7 +79,7 @@ static bool gen_store_release(DisasContext *ctx, arg_sb_a= qrl *a, MemOp memop) return false; } =20 - memop |=3D MO_ALIGN | mo_endian(ctx); + memop |=3D MO_ALIGN | ctx->mo_endianness; memop |=3D (ctx->cfg_ptr->ext_zama16b) ? MO_ATOM_WITHIN16 : 0; =20 /* Add a memory barrier implied by RL (mandatory) and AQ (optional) */ diff --git a/target/riscv/insn_trans/trans_rvzce.c.inc b/target/riscv/insn_= trans/trans_rvzce.c.inc index 0d3ba40e52..71b4ca5473 100644 --- a/target/riscv/insn_trans/trans_rvzce.c.inc +++ b/target/riscv/insn_trans/trans_rvzce.c.inc @@ -185,7 +185,7 @@ static bool gen_pop(DisasContext *ctx, arg_cmpp *a, boo= l ret, bool ret_val) =20 tcg_gen_addi_tl(addr, sp, stack_adj - reg_size); =20 - memop |=3D mo_endian(ctx); + memop |=3D ctx->mo_endianness; for (i =3D X_Sn + 11; i >=3D 0; i--) { if (reg_bitmap & (1 << i)) { TCGv dest =3D dest_gpr(ctx, i); @@ -239,7 +239,7 @@ static bool trans_cm_push(DisasContext *ctx, arg_cm_pus= h *a) =20 tcg_gen_subi_tl(addr, sp, reg_size); =20 - memop |=3D mo_endian(ctx); + memop |=3D ctx->mo_endianness; for (i =3D X_Sn + 11; i >=3D 0; i--) { if (reg_bitmap & (1 << i)) { TCGv val =3D get_gpr(ctx, i, EXT_NONE); diff --git a/target/riscv/insn_trans/trans_rvzfh.c.inc b/target/riscv/insn_= trans/trans_rvzfh.c.inc index 791ee51f65..f36b46c211 100644 --- a/target/riscv/insn_trans/trans_rvzfh.c.inc +++ b/target/riscv/insn_trans/trans_rvzfh.c.inc @@ -49,7 +49,7 @@ static bool trans_flh(DisasContext *ctx, arg_flh *a) REQUIRE_FPU; REQUIRE_ZFHMIN_OR_ZFBFMIN(ctx); =20 - memop |=3D mo_endian(ctx); + memop |=3D ctx->mo_endianness; decode_save_opc(ctx, 0); t0 =3D get_gpr(ctx, a->rs1, EXT_NONE); if (a->imm) { @@ -74,7 +74,7 @@ static bool trans_fsh(DisasContext *ctx, arg_fsh *a) REQUIRE_FPU; REQUIRE_ZFHMIN_OR_ZFBFMIN(ctx); =20 - memop |=3D mo_endian(ctx); + memop |=3D ctx->mo_endianness; decode_save_opc(ctx, 0); t0 =3D get_gpr(ctx, a->rs1, EXT_NONE); if (a->imm) { diff --git a/target/riscv/insn_trans/trans_rvzicfiss.c.inc b/target/riscv/i= nsn_trans/trans_rvzicfiss.c.inc index 0b6ad57965..43f586dce9 100644 --- a/target/riscv/insn_trans/trans_rvzicfiss.c.inc +++ b/target/riscv/insn_trans/trans_rvzicfiss.c.inc @@ -105,7 +105,7 @@ static bool trans_ssamoswap_w(DisasContext *ctx, arg_am= oswap_w *a) decode_save_opc(ctx, RISCV_UW2_ALWAYS_STORE_AMO); src1 =3D get_address(ctx, a->rs1, 0); =20 - memop |=3D mo_endian(ctx); + memop |=3D ctx->mo_endianness; tcg_gen_atomic_xchg_tl(dest, src1, src2, SS_MMU_INDEX(ctx), memop); gen_set_gpr(ctx, a->rd, dest); return true; @@ -135,7 +135,7 @@ static bool trans_ssamoswap_d(DisasContext *ctx, arg_am= oswap_w *a) decode_save_opc(ctx, RISCV_UW2_ALWAYS_STORE_AMO); src1 =3D get_address(ctx, a->rs1, 0); =20 - memop |=3D mo_endian(ctx); + memop |=3D ctx->mo_endianness; tcg_gen_atomic_xchg_tl(dest, src1, src2, SS_MMU_INDEX(ctx), memop); gen_set_gpr(ctx, a->rd, dest); return true; diff --git a/target/riscv/insn_trans/trans_xmips.c.inc b/target/riscv/insn_= trans/trans_xmips.c.inc index c1a30156d3..1b9993a9b0 100644 --- a/target/riscv/insn_trans/trans_xmips.c.inc +++ b/target/riscv/insn_trans/trans_xmips.c.inc @@ -47,7 +47,7 @@ static bool trans_ccmov(DisasContext *ctx, arg_ccmov *a) /* Load Doubleword Pair. */ static bool trans_ldp(DisasContext *ctx, arg_ldp *a) { - MemOp memop =3D MO_SQ | mo_endian(ctx); + MemOp memop =3D MO_SQ | ctx->mo_endianness; =20 REQUIRE_XMIPSLSP(ctx); REQUIRE_64_OR_128BIT(ctx); @@ -71,7 +71,7 @@ static bool trans_ldp(DisasContext *ctx, arg_ldp *a) /* Load Word Pair. */ static bool trans_lwp(DisasContext *ctx, arg_lwp *a) { - MemOp memop =3D MO_SL | mo_endian(ctx); + MemOp memop =3D MO_SL | ctx->mo_endianness; =20 REQUIRE_XMIPSLSP(ctx); =20 @@ -94,7 +94,7 @@ static bool trans_lwp(DisasContext *ctx, arg_lwp *a) /* Store Doubleword Pair. */ static bool trans_sdp(DisasContext *ctx, arg_sdp *a) { - MemOp memop =3D MO_UQ | mo_endian(ctx); + MemOp memop =3D MO_UQ | ctx->mo_endianness; =20 REQUIRE_XMIPSLSP(ctx); REQUIRE_64_OR_128BIT(ctx); @@ -116,7 +116,7 @@ static bool trans_sdp(DisasContext *ctx, arg_sdp *a) /* Store Word Pair. */ static bool trans_swp(DisasContext *ctx, arg_swp *a) { - MemOp memop =3D MO_SL | mo_endian(ctx); + MemOp memop =3D MO_SL | ctx->mo_endianness; =20 REQUIRE_XMIPSLSP(ctx); =20 diff --git a/target/riscv/insn_trans/trans_xthead.c.inc b/target/riscv/insn= _trans/trans_xthead.c.inc index f8b95c6498..f4e3051000 100644 --- a/target/riscv/insn_trans/trans_xthead.c.inc +++ b/target/riscv/insn_trans/trans_xthead.c.inc @@ -349,7 +349,7 @@ static bool gen_fload_idx(DisasContext *ctx, arg_th_mem= idx *a, MemOp memop, TCGv_i64 rd =3D cpu_fpr[a->rd]; TCGv addr =3D get_th_address_indexed(ctx, a->rs1, a->rs2, a->imm2, zex= t_offs); =20 - memop |=3D mo_endian(ctx); + memop |=3D ctx->mo_endianness; tcg_gen_qemu_ld_i64(rd, addr, ctx->mem_idx, memop); if ((memop & MO_SIZE) =3D=3D MO_32) { gen_nanbox_s(rd, rd); @@ -370,7 +370,7 @@ static bool gen_fstore_idx(DisasContext *ctx, arg_th_me= midx *a, MemOp memop, TCGv_i64 rd =3D cpu_fpr[a->rd]; TCGv addr =3D get_th_address_indexed(ctx, a->rs1, a->rs2, a->imm2, zex= t_offs); =20 - memop |=3D mo_endian(ctx); + memop |=3D ctx->mo_endianness; tcg_gen_qemu_st_i64(rd, addr, ctx->mem_idx, memop); =20 return true; @@ -570,7 +570,7 @@ static bool gen_load_inc(DisasContext *ctx, arg_th_memi= nc *a, MemOp memop, TCGv rd =3D dest_gpr(ctx, a->rd); TCGv rs1 =3D get_gpr(ctx, a->rs1, EXT_NONE); =20 - memop |=3D mo_endian(ctx); + memop |=3D ctx->mo_endianness; tcg_gen_qemu_ld_tl(rd, addr, ctx->mem_idx, memop); tcg_gen_addi_tl(rs1, rs1, imm); gen_set_gpr(ctx, a->rd, rd); @@ -591,7 +591,7 @@ static bool gen_store_inc(DisasContext *ctx, arg_th_mem= inc *a, MemOp memop, TCGv data =3D get_gpr(ctx, a->rd, EXT_NONE); TCGv rs1 =3D get_gpr(ctx, a->rs1, EXT_NONE); =20 - memop |=3D mo_endian(ctx); + memop |=3D ctx->mo_endianness; tcg_gen_qemu_st_tl(data, addr, ctx->mem_idx, memop); tcg_gen_addi_tl(rs1, rs1, imm); gen_set_gpr(ctx, a->rs1, rs1); @@ -747,7 +747,7 @@ static bool gen_load_idx(DisasContext *ctx, arg_th_memi= dx *a, MemOp memop, TCGv rd =3D dest_gpr(ctx, a->rd); TCGv addr =3D get_th_address_indexed(ctx, a->rs1, a->rs2, a->imm2, zex= t_offs); =20 - memop |=3D mo_endian(ctx); + memop |=3D ctx->mo_endianness; tcg_gen_qemu_ld_tl(rd, addr, ctx->mem_idx, memop); gen_set_gpr(ctx, a->rd, rd); =20 @@ -765,7 +765,7 @@ static bool gen_store_idx(DisasContext *ctx, arg_th_mem= idx *a, MemOp memop, TCGv data =3D get_gpr(ctx, a->rd, EXT_NONE); TCGv addr =3D get_th_address_indexed(ctx, a->rs1, a->rs2, a->imm2, zex= t_offs); =20 - memop |=3D mo_endian(ctx); + memop |=3D ctx->mo_endianness; tcg_gen_qemu_st_tl(data, addr, ctx->mem_idx, memop); =20 return true; @@ -926,7 +926,7 @@ static bool gen_loadpair_tl(DisasContext *ctx, arg_th_p= air *a, MemOp memop, addr1 =3D get_address(ctx, a->rs, imm); addr2 =3D get_address(ctx, a->rs, memop_size(memop) + imm); =20 - memop |=3D mo_endian(ctx); + memop |=3D ctx->mo_endianness; tcg_gen_qemu_ld_tl(t1, addr1, ctx->mem_idx, memop); tcg_gen_qemu_ld_tl(t2, addr2, ctx->mem_idx, memop); gen_set_gpr(ctx, a->rd1, t1); @@ -965,7 +965,7 @@ static bool gen_storepair_tl(DisasContext *ctx, arg_th_= pair *a, MemOp memop, addr1 =3D get_address(ctx, a->rs, imm); addr2 =3D get_address(ctx, a->rs, memop_size(memop) + imm); =20 - memop |=3D mo_endian(ctx); + memop |=3D ctx->mo_endianness; tcg_gen_qemu_st_tl(data1, addr1, ctx->mem_idx, memop); tcg_gen_qemu_st_tl(data2, addr2, ctx->mem_idx, memop); return true; diff --git a/target/riscv/insn_trans/trans_zilsd.c.inc b/target/riscv/insn_= trans/trans_zilsd.c.inc index f50c52f22c..8068cc1aec 100644 --- a/target/riscv/insn_trans/trans_zilsd.c.inc +++ b/target/riscv/insn_trans/trans_zilsd.c.inc @@ -30,7 +30,7 @@ static bool gen_load_i64(DisasContext *ctx, arg_ld *a) TCGv addr =3D get_address(ctx, a->rs1, a->imm); TCGv_i64 tmp =3D tcg_temp_new_i64(); =20 - tcg_gen_qemu_ld_i64(tmp, addr, ctx->mem_idx, MO_SQ | mo_endian(ctx)); + tcg_gen_qemu_ld_i64(tmp, addr, ctx->mem_idx, MO_SQ | ctx->mo_endiannes= s); =20 if (a->rd =3D=3D 0) { return true; @@ -85,7 +85,7 @@ static bool gen_store_i64(DisasContext *ctx, arg_sd *a) } else { tcg_gen_concat_tl_i64(tmp, data_low, data_high); } - tcg_gen_qemu_st_i64(tmp, addr, ctx->mem_idx, MO_SQ | mo_endian(ctx)); + tcg_gen_qemu_st_i64(tmp, addr, ctx->mem_idx, MO_SQ | ctx->mo_endiannes= s); =20 return true; } diff --git a/target/riscv/internals.h b/target/riscv/internals.h index 460346dd6d..e2f0334da8 100644 --- a/target/riscv/internals.h +++ b/target/riscv/internals.h @@ -64,14 +64,7 @@ static inline bool mmuidx_2stage(int mmu_idx) =20 static inline MemOp mo_endian_env(CPURISCVState *env) { - /* - * A couple of bits in MSTATUS set the endianness: - * - MSTATUS_UBE (User-mode), - * - MSTATUS_SBE (Supervisor-mode), - * - MSTATUS_MBE (Machine-mode) - * but we don't implement that yet. - */ - return MO_LE; + return riscv_cpu_data_is_big_endian(env) ? MO_BE : MO_LE; } =20 /* share data between vector helpers and decode code */ diff --git a/target/riscv/tcg/tcg-cpu.c b/target/riscv/tcg/tcg-cpu.c index 3407191c22..d73b749bae 100644 --- a/target/riscv/tcg/tcg-cpu.c +++ b/target/riscv/tcg/tcg-cpu.c @@ -189,10 +189,15 @@ static TCGTBCPUState riscv_get_tb_cpu_state(CPUState = *cs) flags =3D FIELD_DP32(flags, TB_FLAGS, PM_PMM, riscv_pm_get_pmm(env)); flags =3D FIELD_DP32(flags, TB_FLAGS, PM_SIGNEXTEND, pm_signext); =20 + uint64_t cs_base =3D env->misa_ext; + if (riscv_cpu_data_is_big_endian(env)) { + cs_base |=3D TB_CSBASE_BIG_ENDIAN; + } + return (TCGTBCPUState){ .pc =3D env->xl =3D=3D MXL_RV32 ? env->pc & UINT32_MAX : env->pc, .flags =3D flags, - .cs_base =3D env->misa_ext, + .cs_base =3D cs_base, }; } =20 diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 5df5b73849..9f538ba96d 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -119,6 +119,8 @@ typedef struct DisasContext { bool fcfi_lp_expected; /* zicfiss extension, if shadow stack was enabled during TB gen */ bool bcfi_enabled; + /* Data endianness from MSTATUS UBE/SBE/MBE */ + MemOp mo_endianness; } DisasContext; =20 static inline bool has_ext(DisasContext *ctx, uint32_t ext) @@ -126,18 +128,6 @@ static inline bool has_ext(DisasContext *ctx, uint32_t= ext) return ctx->misa_ext & ext; } =20 -static inline MemOp mo_endian(DisasContext *ctx) -{ - /* - * A couple of bits in MSTATUS set the endianness: - * - MSTATUS_UBE (User-mode), - * - MSTATUS_SBE (Supervisor-mode), - * - MSTATUS_MBE (Machine-mode) - * but we don't implement that yet. - */ - return MO_LE; -} - #ifdef TARGET_RISCV32 #define get_xl(ctx) MXL_RV32 #elif defined(CONFIG_USER_ONLY) @@ -154,7 +144,7 @@ static inline MemOp mo_endian(DisasContext *ctx) #define get_address_xl(ctx) ((ctx)->address_xl) #endif =20 -#define mxl_memop(ctx) ((get_xl(ctx) + 1) | mo_endian(ctx)) +#define mxl_memop(ctx) ((get_xl(ctx) + 1) | (ctx)->mo_endianness) =20 /* The word size for this machine mode. */ static inline int __attribute__((unused)) get_xlen(DisasContext *ctx) @@ -1147,7 +1137,7 @@ static bool gen_amo(DisasContext *ctx, arg_atomic *a, TCGv src1, src2 =3D get_gpr(ctx, a->rs2, EXT_NONE); MemOp size =3D mop & MO_SIZE; =20 - mop |=3D mo_endian(ctx); + mop |=3D ctx->mo_endianness; if (ctx->cfg_ptr->ext_zama16b && size >=3D MO_32) { mop |=3D MO_ATOM_WITHIN16; } else { @@ -1168,7 +1158,7 @@ static bool gen_cmpxchg(DisasContext *ctx, arg_atomic= *a, MemOp mop) TCGv src1 =3D get_address(ctx, a->rs1, 0); TCGv src2 =3D get_gpr(ctx, a->rs2, EXT_NONE); =20 - mop |=3D mo_endian(ctx); + mop |=3D ctx->mo_endianness; decode_save_opc(ctx, RISCV_UW2_ALWAYS_STORE_AMO); tcg_gen_atomic_cmpxchg_tl(dest, src1, dest, src2, ctx->mem_idx, mop); =20 @@ -1346,6 +1336,8 @@ static void riscv_tr_init_disas_context(DisasContextB= ase *dcbase, CPUState *cs) ctx->zero =3D tcg_constant_tl(0); ctx->virt_inst_excp =3D false; ctx->decoders =3D cpu->decoders; + ctx->mo_endianness =3D (ctx->base.tb->cs_base & TB_CSBASE_BIG_ENDIAN) + ? MO_BE : MO_LE; } =20 static void riscv_tr_tb_start(DisasContextBase *db, CPUState *cpu) --=20 2.34.1 From nobody Sat May 30 20:14:19 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; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass(p=reject dis=none) header.from=htecgroup.com ARC-Seal: i=2; a=rsa-sha256; t=1776437378; cv=pass; d=zohomail.com; s=zohoarc; b=bjW+vEF3EIJ1y/YrnrXohYJlBKZccL7GwtZmiJYk0mxxSwVY9CScD7MDa8bWOJW0hBdT5Hg8we3vdsDAUXPSRpdaw3o8ci2+Fhq4iuVBlZgODalABIgJYDDPUhnnLIGIbhD2rZgRx2JB7ShVuPeponxZUl/Ns+aLgaBHRRBVXLM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776437378; 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=xY1YGwQHj8EamZNz+VldBgGRJe54OJY4CKUosYVdpa4=; b=PJFXN+kiqA2eJn9BR06pFkyQORLaISgDXDmMzBo46QJjzUnYjg1b9fERT+D4+rwdoFNFbyLUN9Io8H4BBlmkMUFybieppJdRDrvnbS0lErkpZmo6roE4iusasjzwGwdKjC0HQgDLP2/HcPS9yqr8Ft1Z779gcGByk+ncawx4uJo= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); 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 1776437378918318.1524508219743; Fri, 17 Apr 2026 07:49:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wDkVc-0004vG-DC; Fri, 17 Apr 2026 10:49:28 -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 1wDkVa-0004uL-PP; Fri, 17 Apr 2026 10:49:26 -0400 Received: from mail-francecentralazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c20a::7] helo=PA4PR04CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wDkVY-0007Cr-65; Fri, 17 Apr 2026 10:49:26 -0400 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com (2603:10a6:102:412::6) by VI0PR09MB8150.eurprd09.prod.outlook.com (2603:10a6:800:2ad::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Fri, 17 Apr 2026 14:49:14 +0000 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com ([fe80::c461:b510:b6b9:f442]) by PA2PR09MB7634.eurprd09.prod.outlook.com ([fe80::c461:b510:b6b9:f442%3]) with mapi id 15.20.9818.023; Fri, 17 Apr 2026 14:49:14 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Bg/YGwb0/s+29UGUzeFy/13/fG6zr7FLQuIq9oq/P2ly+4Ch4TFKvCa8vl6TdZcs5JSaBiJep73dQ/W1bIliuQDd/VmiGw0wOI4iPJJehR5X5Y/TpK/T/mUGVc3NloOtwtptN+2JzljdJMod8fkyFUkdj7kRrjjCcI3g++qY5EfgicIkd6L0XxDLky3X0oXn/uiduPmEmPydgKrpHNPa0b0W0F8sKwuZrONfMERWMU4luDsGRWaKAzLhdrhH5VB1xRgDt83S43+iB+XPIiGxEIlEEAaaqIFg4RxBraHn7u9A1AMOykvZB8ZwhgrjTuIEkb3bVIcPVN1HoOygLrmBbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=xY1YGwQHj8EamZNz+VldBgGRJe54OJY4CKUosYVdpa4=; b=iFB8lsMh3vFWdWLtff5HNymzFoFtCGANl9oa5aYz5zYotBnIxILhEoEOqKZ469ce7U+5i73zTMoL1OYmjFimtwCMpJ6Q4VLCy2a8UKlJwziAT0P+2tKqbG+5atriWTb2j9xaDtXpGKMTcj8GkE69zxZ8Brzv8a/R2ghQfiR8NhkTanz1k34IfM4fMNxpl+SOXol3cw+yBn2Ib6TzyNLmk9JI9v3LqHAjoXxMYC0F38CxXUhHB9jfsl8mOkxppNSc8oTestt/N3BjnwL8GHDwac6Xwi/SSArOtse/9/QPD8N6DuaUIynbj9dmSqTzBWHRhhynFaPyyklJU96uo8uNSg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=htecgroup.com; dmarc=pass action=none header.from=htecgroup.com; dkim=pass header.d=htecgroup.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=htecgroup.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xY1YGwQHj8EamZNz+VldBgGRJe54OJY4CKUosYVdpa4=; b=lI1SbRtfyL1v1hPmbSVqT3BvLPYodgm8hLUi3cJNxmYEoUBo64jHfRlb6af4oWpWTa+tOjRqgE5V4a9OmFglTnn/B7NP2FE69Wsoh9UUI3bmwBGweLuUG6YZzHqkYHkejYh+p0eBDIsX+O8Elpg2L5nLQfWNpOT7E1FjeF72ddNdPI9jaYOg9VFi8hd//WD+m/xq/JdbcsPGydlA/oQRF5x7MCIIX0iEUfq+tXdUqASc46Lec3iySGU9qdVvFzgWAZ5x0d+ZO3LOYD1xyEW5VMlrl0aySTkNl6/9gh8+/hHVd0+/R2fFWCE+zG2Lwe7TeZUTUlu7WUPNi1xAOs00fg== From: Djordje Todorovic To: "qemu-devel@nongnu.org" CC: "qemu-riscv@nongnu.org" , "cfu@mips.com" , "mst@redhat.com" , "marcel.apfelbaum@gmail.com" , "dbarboza@ventanamicro.com" , "philmd@linaro.org" , "alistair23@gmail.com" , "thuth@redhat.com" , Djordje Todorovic Subject: [PATCH v8 4/7] hw/riscv: Make boot code endianness-aware at runtime Thread-Topic: [PATCH v8 4/7] hw/riscv: Make boot code endianness-aware at runtime Thread-Index: AQHcznlb7BoIn1Hi0UiJuaG7iDgy8g== Date: Fri, 17 Apr 2026 14:49:13 +0000 Message-ID: <20260417144905.178056-5-djordje.todorovic@htecgroup.com> References: <20260417144905.178056-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20260417144905.178056-1-djordje.todorovic@htecgroup.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=htecgroup.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA2PR09MB7634:EE_|VI0PR09MB8150:EE_ x-ms-office365-filtering-correlation-id: c66a2de8-bde5-464f-809b-08de9c907e51 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|38070700021|18002099003|56012099003|22082099003; x-microsoft-antispam-message-info: w/aN+47HXwGIsY/vhEVNCjAqNCQoFQA0vNzaZ5BW+II0aEWjMVK66xzayajMFY3CCju/G6pZ4YSP1sVjMznj5wELkVi/I5l1W23QKZMYQAF+HnqZJtnRM3Bs/snUExkSfw/mRV5NL/kAx3LUS6WREY2UwuUXwc7HsRiH6SecJfF+X5qaPGCW5XGTvO43XR6porLiJMxbZfN0iPnwIPkl+eJ0bgtGwfDYZLCdBG5Yby/J9jjkzSAfjro1NjYFv9wtkacOZwbit2l1pnOjj2Ge6wNINbeFTHnKOBIsVRPaqyt1BramwgIUwIKUE/IRiANlv12I56XGNQxDagDtHFGfRPKxjIJhmQ/8pKD2z87H1rghOwq9U5ceuZdz6JJPtiYI/5O+Wo8xTEwrUZBYOG7jP/3p/gK9hCrqfKCd/QAXT6HDuLuTMgSSkF8I9oSfvkOeMc84p8xFUeM2rlhRM9fn/TI+HDYFchCG3fW2eYwO3mDHAKK/K8J+TGvqLcuChbobLh+Aq96/VjqcPOS8SmzI3q8y7xlBCgcU9KYrpR8pvXGDQP4n9enBNtWzTSdnvDz7B8bf5cjKV9b7zv8859Rgjwppa3Vbdz5xUNjtLxw8EG3YhFVLy8rL916kvAkyxsDrm/rzqiC0dmTaPpOYNg2P/qbzLF4MuEhhVVv5LSh+w7bQiUy5t5CJ6Q6bgpWGDUH/KnNbS7TnjX/bIS7csQMj4yNJDSjRqEjMLYjCrki7P6WUTy1TqhTrI1FybeBs4iikj8teBnKDwCtb+OCXbgNT+cb/5MGRU2alsWkG51AD3fY= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PA2PR09MB7634.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(18002099003)(56012099003)(22082099003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?qTKGwMoNJVKuyf5LqHPP3VZeEWUkLpXVsArsa2jDHdH4/rjpYLhnY0RMA/?= =?iso-8859-1?Q?hxKMU+7L3tl+2YFonII8W3ZRYtXmXVDgPTepLTSVc2cEzIBPO39yOht3rB?= =?iso-8859-1?Q?Fo+Kkzr78SXlflsfV5beRwawqUk555qO4c1Aerba5RzpXi9E+DbYHJPIwR?= =?iso-8859-1?Q?wKwogyXvF9p+2E5FXyi3Xi9swVHsjC4QlEcciaPuAWIoyCj4vB+LMR+ECS?= =?iso-8859-1?Q?lYF2gebLj+imnsADPLAWyGFgT8zO0CxgGJO+uiY7Ch+yxtrlQC9LRHBb0i?= =?iso-8859-1?Q?aoBEqNPskzdukaLq5WJ2d4BBGL/JQDfYnKH2aIf1h59cVr0wtUoetgEEKy?= =?iso-8859-1?Q?6D+2sVPzY/L3hhC1Wqx/8N9wXAgTDLfjD81DScyN3wWH4//wfAPA/wGp67?= =?iso-8859-1?Q?Czg7Gt9d+3CTh0QKv7bGDdVZ3pxK9Uh5o0fsqMRPGRyrtiiiMl4f2xI/su?= =?iso-8859-1?Q?VxmYOVngcvOeYXHD96c03A8y8NREyZqa4W+x+8/GSQVyxAJnXDpYyRNRY5?= =?iso-8859-1?Q?QAyHqc9+Ogx9h9k6p1AYASxtvZap3P0OBrVqsQHX6T3ten3bVDIyKRUdEu?= =?iso-8859-1?Q?tZP+cmJKaAJ5kFDGr4XJ4J8ylOvg6BimuuDHhbAdSIDLEF1QBgTsLq4lJS?= =?iso-8859-1?Q?gvMUw2tms57qSV72bOBULP19IiqpGj0iKnVkL1bW871urZM0z14OUt1ID5?= =?iso-8859-1?Q?SbkjOlf9It3j4any3P0/Fg79rUse2MP1dEa2YaLew5N0/t96NByHFDnmuY?= =?iso-8859-1?Q?BJHnGFArf02FMwEDXU1nnKCB4zVCnuUqCwTou6jdGcX29/frQGv+tJZIt+?= =?iso-8859-1?Q?3zbYcx6tifuZlccbvCWaGp19ZHhAdbhdIYwr4O4GmJrWaitSwv4cYlgSvV?= =?iso-8859-1?Q?dSsF3eDHWAoz9DjKLnvsptcs7SmXckv9aTGGFHS64n62xChuGJ5Znva4Eu?= =?iso-8859-1?Q?jLckaYy1iQMhrjWIZef2oUrGKCY3wY7Pugl9xEIhYQzcFduGMdQTzPPAdc?= =?iso-8859-1?Q?bLAd1bLkVr8VKNhM3yF3oOKerVm8aRX+ZOhjMFIHXzQeJqSgBCPmegg837?= =?iso-8859-1?Q?VizG75HlsGcrtDiqz70Qb0l8/2ByGq4YjtdbOOC5lFMAzl5JbyfrSjLeyF?= =?iso-8859-1?Q?cRCbbRIH1cYrIKQfVpzQEDBhT022zGPwD/n4bMbtQ2WIMcXkrBUNXqL85z?= =?iso-8859-1?Q?1k3DnrWE8xSBdLnDzgUNMxOy13UFBEh7NspfofuTjHMCp2umiLs6s5coAm?= =?iso-8859-1?Q?WlteQVz9TTB8KMxiI8suZQencqm9nX3mpAtCmp0WxLnoI0equdVqwU9WX7?= =?iso-8859-1?Q?uqMqoHmCbKl1uS/4rict0AhbIG5oToohPTXXIIAp24Ip/xu7fSicqLDbVH?= =?iso-8859-1?Q?ploj4a+jtKNwObJea77TBWKD5+I0RlsDwE91huZHz5Szlh+h2VB4tQ98Ys?= =?iso-8859-1?Q?BqT5kPIkZoO/J9IhKtWpzSi4FBu7EUDFDVkwdo3IBWguM4vdtjJmYvHVJ+?= =?iso-8859-1?Q?8Z9aBDWtXpTGbH7Jv0RjxJEUbZ2tUAOs7KAh2WUxBvWV+YXfTj2Bt+OPR5?= =?iso-8859-1?Q?xa+z2IYwC3CFnly/byn8HiNnb53qvNGzRFD2GO1JWZsz2y0Dxir8fKv7Nb?= =?iso-8859-1?Q?MWp8CKrcJep2qWsNcDfc2hqaTRakykSGe8ISBwzqnqiRba55kR7Zf/JxNI?= =?iso-8859-1?Q?KrnJnkEJmFpF28k2YACfRDZpDZLqYESvCfqLa5e/47l4knTasK2AQcvNDQ?= =?iso-8859-1?Q?J+QaxxYTpRiFBYXmEIbBX3yRBhF3jK9RKOLgf6Wpf8Si+vShGfRmx41yxQ?= =?iso-8859-1?Q?ztivUHxU6wFJ5Si7FNPED80a9/mPquraLLTbyHVwBTCYgV5WR9vk?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: htecgroup.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA2PR09MB7634.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c66a2de8-bde5-464f-809b-08de9c907e51 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Apr 2026 14:49:13.7557 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9f85665b-7efd-4776-9dfe-b6bfda2565ee X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: WgyNbfhNA1jvD0cbGt1JFbBpYOe6H42Uz8xRZmKe4O0MIle7XcrI/Wfi5Qx1YnobLjbr9vShgWDLnpU2pPgIx7kCsX7hMBB7jRJAodRKb0U= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR09MB8150 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=2a01:111:f403:c20a::7; envelope-from=Djordje.Todorovic@htecgroup.com; helo=PA4PR04CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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_NONE=-0.0001, SPF_HELO_PASS=-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 @htecgroup.com) X-ZM-MESSAGEID: 1776437379174158500 Content-Type: text/plain; charset="utf-8" Add riscv_is_big_endian() helper that checks the hart's big-endian CPU property and use it throughout the boot code: - ELF loading: pass ELFDATA2MSB or ELFDATA2LSB based on endianness - Firmware dynamic info: use cpu_to_be* or cpu_to_le* based on endianness - Reset vector: instructions (entries 0-5) remain always little-endian, data words (entries 6-9) use target data endianness. For RV64 BE, the hi/lo word pairs within each dword are swapped since LD reads as BE. This is part of the runtime big-endian support series which avoids separate BE binaries by handling endianness as a CPU property. Signed-off-by: Djordje Todorovic --- hw/riscv/boot.c | 81 +++++++++++++++++++++++++++++++++++------ include/hw/riscv/boot.h | 1 + 2 files changed, 70 insertions(+), 12 deletions(-) diff --git a/hw/riscv/boot.c b/hw/riscv/boot.c index e5490beda0..03fb338d2a 100644 --- a/hw/riscv/boot.c +++ b/hw/riscv/boot.c @@ -40,6 +40,28 @@ bool riscv_is_32bit(RISCVHartArrayState *harts) return mcc->def->misa_mxl_max =3D=3D MXL_RV32; } =20 +bool riscv_is_big_endian(RISCVHartArrayState *harts) +{ + return harts->harts[0].cfg.big_endian; +} + +/* + * Convert a pair of 32-bit words forming a 64-bit dword to target data + * endianness. For big-endian, the hi/lo word order is swapped since LD + * interprets bytes as BE. + */ +static void riscv_boot_data_dword(uint32_t *data, bool big_endian) +{ + if (big_endian) { + uint32_t tmp =3D data[0]; + data[0] =3D cpu_to_be32(data[1]); + data[1] =3D cpu_to_be32(tmp); + } else { + data[0] =3D cpu_to_le32(data[0]); + data[1] =3D cpu_to_le32(data[1]); + } +} + /* * Return the per-socket PLIC hart topology configuration string * (caller must free with g_free()) @@ -247,8 +269,9 @@ void riscv_load_kernel(MachineState *machine, */ kernel_size =3D load_elf_ram_sym(kernel_filename, NULL, NULL, NULL, NU= LL, &info->image_low_addr, &info->image_hig= h_addr, - NULL, ELFDATA2LSB, EM_RISCV, - 1, 0, NULL, true, sym_cb); + NULL, + ELFDATA2LSB, + EM_RISCV, 1, 0, NULL, true, sym_cb); if (kernel_size > 0) { info->kernel_size =3D kernel_size; goto out; @@ -391,21 +414,32 @@ void riscv_rom_copy_firmware_info(MachineState *machi= ne, struct fw_dynamic_info64 dinfo64; void *dinfo_ptr =3D NULL; size_t dinfo_len; + bool big_endian =3D riscv_is_big_endian(harts); =20 if (riscv_is_32bit(harts)) { - dinfo32.magic =3D cpu_to_le32(FW_DYNAMIC_INFO_MAGIC_VALUE); - dinfo32.version =3D cpu_to_le32(FW_DYNAMIC_INFO_VERSION); - dinfo32.next_mode =3D cpu_to_le32(FW_DYNAMIC_INFO_NEXT_MODE_S); - dinfo32.next_addr =3D cpu_to_le32(kernel_entry); + dinfo32.magic =3D big_endian ? cpu_to_be32(FW_DYNAMIC_INFO_MAGIC_V= ALUE) + : cpu_to_le32(FW_DYNAMIC_INFO_MAGIC_VAL= UE); + dinfo32.version =3D big_endian ? cpu_to_be32(FW_DYNAMIC_INFO_VERSI= ON) + : cpu_to_le32(FW_DYNAMIC_INFO_VERSION= ); + dinfo32.next_mode =3D big_endian + ? cpu_to_be32(FW_DYNAMIC_INFO_NEXT_MODE_S) + : cpu_to_le32(FW_DYNAMIC_INFO_NEXT_MODE_S); + dinfo32.next_addr =3D big_endian ? cpu_to_be32(kernel_entry) + : cpu_to_le32(kernel_entry); dinfo32.options =3D 0; dinfo32.boot_hart =3D 0; dinfo_ptr =3D &dinfo32; dinfo_len =3D sizeof(dinfo32); } else { - dinfo64.magic =3D cpu_to_le64(FW_DYNAMIC_INFO_MAGIC_VALUE); - dinfo64.version =3D cpu_to_le64(FW_DYNAMIC_INFO_VERSION); - dinfo64.next_mode =3D cpu_to_le64(FW_DYNAMIC_INFO_NEXT_MODE_S); - dinfo64.next_addr =3D cpu_to_le64(kernel_entry); + dinfo64.magic =3D big_endian ? cpu_to_be64(FW_DYNAMIC_INFO_MAGIC_V= ALUE) + : cpu_to_le64(FW_DYNAMIC_INFO_MAGIC_VAL= UE); + dinfo64.version =3D big_endian ? cpu_to_be64(FW_DYNAMIC_INFO_VERSI= ON) + : cpu_to_le64(FW_DYNAMIC_INFO_VERSION= ); + dinfo64.next_mode =3D big_endian + ? cpu_to_be64(FW_DYNAMIC_INFO_NEXT_MODE_S) + : cpu_to_le64(FW_DYNAMIC_INFO_NEXT_MODE_S); + dinfo64.next_addr =3D big_endian ? cpu_to_be64(kernel_entry) + : cpu_to_le64(kernel_entry); dinfo64.options =3D 0; dinfo64.boot_hart =3D 0; dinfo_ptr =3D &dinfo64; @@ -474,10 +508,33 @@ void riscv_setup_rom_reset_vec(MachineState *machine,= RISCVHartArrayState *harts reset_vec[2] =3D 0x00000013; /* addi x0, x0, 0 */ } =20 - /* copy in the reset vector in little_endian byte order */ - for (i =3D 0; i < ARRAY_SIZE(reset_vec); i++) { + /* RISC-V instructions are always little-endian */ + for (i =3D 0; i < 6; i++) { reset_vec[i] =3D cpu_to_le32(reset_vec[i]); } + + /* + * Data words (addresses at entries 6-9) must match the firmware's data + * endianness. + */ + if (riscv_is_32bit(harts)) { + for (i =3D 6; i < ARRAY_SIZE(reset_vec); i++) { + if (riscv_is_big_endian(harts)) { + reset_vec[i] =3D cpu_to_be32(reset_vec[i]); + } else { + reset_vec[i] =3D cpu_to_le32(reset_vec[i]); + } + } + } else { + /* + * For RV64, each pair of 32-bit words forms a dword. For big-endi= an, + * the hi/lo word order within each dword must be swapped since LD + * interprets bytes as BE. + */ + for (i =3D 6; i < ARRAY_SIZE(reset_vec); i +=3D 2) { + riscv_boot_data_dword(reset_vec + i, riscv_is_big_endian(harts= )); + } + } rom_add_blob_fixed_as("mrom.reset", reset_vec, sizeof(reset_vec), rom_base, &address_space_memory); riscv_rom_copy_firmware_info(machine, harts, diff --git a/include/hw/riscv/boot.h b/include/hw/riscv/boot.h index f00b3ca122..93b9a37f03 100644 --- a/include/hw/riscv/boot.h +++ b/include/hw/riscv/boot.h @@ -39,6 +39,7 @@ typedef struct RISCVBootInfo { } RISCVBootInfo; =20 bool riscv_is_32bit(RISCVHartArrayState *harts); +bool riscv_is_big_endian(RISCVHartArrayState *harts); =20 char *riscv_plic_hart_config_string(int hart_count); =20 --=20 2.34.1 From nobody Sat May 30 20:14:19 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; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass(p=reject dis=none) header.from=htecgroup.com ARC-Seal: i=2; a=rsa-sha256; t=1776437488; cv=pass; d=zohomail.com; s=zohoarc; b=mYUZfbH1VKteLcOHA1j7w+1xv1+r9oO/hUXoadByBnm1/v75kxPwi1cge1DfP9vD06OKw9MLleGTudiOz/BFOk7FVU8eylT0PkA0mXNrRqVfWRPLo+Y65thEYDLad2kK4yz/RSArWHAgFyHvYpFqF9tNnxjVo8KOVNpEzGF0vq4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776437488; h=Content-ID: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=TVlOz68TH6Rn29Kd8vfhWLfqyIhG54uGQnnB6efYGDo=; b=f1vufPMLHaup8V+JhCrmgIFvlt2XHSSqAOci+H4SLTQ41PGaf4imnLLjTvn+jQaQfPo1gQ3TSHpkLnoqOgSmWz+P6UIKoNg4M1ygxrC1rPXbIUH+C37qZEMMpDE8l5nRl1AdjDxf/GNlT0ksIymMVKtbyk+tWskpQ282cqNajj8= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); 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 1776437488076224.6148682559732; Fri, 17 Apr 2026 07:51:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wDkVf-0004xe-5n; Fri, 17 Apr 2026 10:49:31 -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 1wDkVc-0004vX-TI; Fri, 17 Apr 2026 10:49:28 -0400 Received: from mail-francecentralazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c20a::7] helo=PA4PR04CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wDkVb-0007Cr-Cy; Fri, 17 Apr 2026 10:49:28 -0400 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com (2603:10a6:102:412::6) by VI0PR09MB8150.eurprd09.prod.outlook.com (2603:10a6:800:2ad::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Fri, 17 Apr 2026 14:49:14 +0000 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com ([fe80::c461:b510:b6b9:f442]) by PA2PR09MB7634.eurprd09.prod.outlook.com ([fe80::c461:b510:b6b9:f442%3]) with mapi id 15.20.9818.023; Fri, 17 Apr 2026 14:49:14 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WIxtnGUcV3R3HxTFXZTp22GjH3XfWeE0RrkHlUMCAOTZAMDWJmrwcqg8Y9Xc3MSHxqroh9EO4QzvsAtNiJ1z1SsTRmnJkUCsaCSErae+FPFOJLDb4nEyzp45W4jFobNsj81NJr7vFcfYF52x8WiehF0f+DQgA086KJJNNN4oEpGTpn1Kn14IaNGdYppvn5vTUpPs47hm3gLGqGb4f02WGC8q2mnP2iu3ddKPsCEF6ZDJBZ6RHq0wAPAvejjGZTrokvAuG/wsLz5qAc3+2J7tEzR2oIjsNqghg3jRgySVzmCch2veYhv4UcUSYMfRdarjHrbtPc132ucgVV/IMXT4VA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=TVlOz68TH6Rn29Kd8vfhWLfqyIhG54uGQnnB6efYGDo=; b=LhmiXBoRiLOiHTY3QW1x3fBifP7bxoTfFkig7LRLQaH168AX9HLb3bEY0uBQ5o0sRtH7WFGUjgRZcToWCqs/j2QUMNSucRGzQzS8yIZ12n/gLjERprNn6CwrttQd0N9kEFgt1t0JUEcnUDHEakvGjRW1Wsx0RMMnjPfH3JWZZQYPLeQcnW5NfcE2+slFnL6BlBsOGJ6LDZHftcFgAHWPirFX42UXizm5nmofWI9RNXTHJuF6/ICkA1brOq9E1ViX1sl+1tMNegmPvJLjMz5UbCyry9HPM8RV5ujgk3UqFdrc50gjpxDitcH5ZBxOHp7GmkKv6or63Gi6Cs/GMlDfzg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=htecgroup.com; dmarc=pass action=none header.from=htecgroup.com; dkim=pass header.d=htecgroup.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=htecgroup.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=TVlOz68TH6Rn29Kd8vfhWLfqyIhG54uGQnnB6efYGDo=; b=DXTSTKTeVvdNlKI8WDJj2j/GDOnMy1FvMEdX7tUJHGkDIHr1PTTuUNvSX2nfUcbo7rD16v7aOg/OhYW5HVjr7h3LC1hVsWits/H3Jjh6ykbzGLVHArUQQ84p2qiNYFJlPPaH9op7jkvAqa1+3ZcfocuuuZTuf6VgQrPHWnn5QhFbPtZtJdNnk/XqvvVt0X6UMbNkk1LrkH7FDitER7MJfs+lZJAjnbaaQCO3ornnWmjm19Jwe4PpIxX0Hluwa4hQ1QVkbpvWjQhjDsb0kCBIOPaHTow6616y4h6ytGS/F0/280mrSSoy1O83blfmPpw9neu3mtOlKQC9bFrDO7vtkw== From: Djordje Todorovic To: "qemu-devel@nongnu.org" CC: "qemu-riscv@nongnu.org" , "cfu@mips.com" , "mst@redhat.com" , "marcel.apfelbaum@gmail.com" , "dbarboza@ventanamicro.com" , "philmd@linaro.org" , "alistair23@gmail.com" , "thuth@redhat.com" , Djordje Todorovic Subject: [PATCH v8 5/7] target/riscv: Fix page table walk endianness for big-endian harts Thread-Topic: [PATCH v8 5/7] target/riscv: Fix page table walk endianness for big-endian harts Thread-Index: AQHcznlbFaOs6yoF8ke8J7vJguSfcA== Date: Fri, 17 Apr 2026 14:49:13 +0000 Message-ID: <20260417144905.178056-6-djordje.todorovic@htecgroup.com> References: <20260417144905.178056-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20260417144905.178056-1-djordje.todorovic@htecgroup.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=htecgroup.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA2PR09MB7634:EE_|VI0PR09MB8150:EE_ x-ms-office365-filtering-correlation-id: 19218b47-d457-442b-7cb9-08de9c907e8d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|38070700021|18002099003|56012099003|22082099003; x-microsoft-antispam-message-info: o4p/cpZ/wY9vdNlK0KwA0FuER2sC5KGHnCuxphaRJ2cubPeiS/AYDuEOA1Ai5i3CzdMeaHT3eH5dhOLzJTOQO9C6pN8gkhyALtU20lcrD587niMGHtwgCVI1s7VN9H6Lm9cpV5GrE1AUniuGIDDuUTV24RrPf9Ra5C0g/Z4VcgEq4Z1j+gfWTMl78GhbNil4jxZhXMbnUfYnXY3QaGc12J+KR7ZM6gwbxtgJ5us6E+d8fSoBP2Rc04xoDwAQGu1R+MrQVKopD96YPm2NbRwCyVwZyJ5PNGZe3NpA0lm05vKRTFf+HVmrcToF4cvqhuiOdBT6d5SfXc2profTpxWCqCFaRneHDveX3/wO0FR5Lx2+mPTvETUdIdM1paGFhJ3dwvpoukyodpwWXBQH+gzyJHbznIM8FA6Ag72XoT7LmmHb0NgsbDvJeacDQAswR5Z78ZlUa44+1iX0NLNhpYOCpTl6v2XIHP55Sxu2EDM/PYSlAolFpJSUU8+aeXBbRadumCkUpdMoP+avCaLiOSyzO5mkFLWsOeYP9dDbbx/B05dJVlK35Q9PGfJqRMwowESlbs5geYucwWTZZjT38MSC2utnEFrpnElMdT/AtfudG7kTrcj2SRU02niWfGhL1AmiM1AX9Cdr4dmAfua6kYyNoX+1oKex37FAC2eN1j5TD1nka6Bod1URwD9V3dpn/uifKED5JCg7t7VL8zlrgQ8ovEdNZ3AMyRf8kj7XIPmQHLiSCOq7vrgAC/CP2lXLhFQEiy+aXOYjpkCzCLCuIixMjCMg8HLMY2qeJQFgf8ZxLgk= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PA2PR09MB7634.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(18002099003)(56012099003)(22082099003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RW9WTm44bzRoMzJBR0FQZGhiS2NjWGZPY0UwbXBFMmsrakNNend4c1diZ2hZ?= =?utf-8?B?YTRPbHdQa1ZYUVR4bVhsSEUvY3VzZFFoZXA3dXF0YVY3a0tZbk9tV1EwdXhz?= =?utf-8?B?bUYzRURsUzl4VGRJa2VPdTc5UGpTc1ZUSDNOUWt5d3VGZUxBTXgwcnh2L3Z0?= =?utf-8?B?Y295S3E0bkVRT2NUSGxsRzVnamRVUS9jS3dSdlhZWE5Rblp4a3hadmtuUFJj?= =?utf-8?B?bG92dXhCcVNRNktuVTMrSEk3L3RweDl4QkorL3krRWV5QzNBaVZ5NS9SSkVi?= =?utf-8?B?SHovK2V3RDFiRTJHZXl0ZENSc1V2K2ozYk9SMUVNUzlqMkpxVnAwUTM5K21N?= =?utf-8?B?L2VqZzFMUTMzYmlMV1hwbDhWMzJWaTZvNVpYZ04ybFI4RC9Id0tpTVpObU5F?= =?utf-8?B?TFBKQUZTbmdDa29hdTU4OEFyYjdrb01rUThJVjlzenpHaXE5OGsreVZRSUpF?= =?utf-8?B?QUpoa3B4NHQxVk8raWwrMDdvTVB0RkdGMGFjTGFySDV0ZGwxMGg1bllqSitV?= =?utf-8?B?L3Nvd2JkYW1MWlFReEkwNXduN2lkT2FucDRtWWdNNFY2bmFmTkZheHM4Smxw?= =?utf-8?B?MWVyWEdqZGw3YjFHbUxpZEJMSUFSZ3FHdjVGVDljYlZHYXhkV0xrNXZXNWxS?= =?utf-8?B?TUVaZFVsQi90bkF1T2Q3YS81ZUNyQU8zSTlWM3JqbXpiVEZvYUhnLzhqNE1N?= =?utf-8?B?M3RObzVLeXlJTkJrUytEdHFzT3ZIa0dNY2tYeEpML0ZaK1VTUm01Z1pvL09o?= =?utf-8?B?QnNFemMyVitLcjF6azk3T2FnMjEvVEJQQU9JU1MwdElWcGxNYS92Zkx0eERD?= =?utf-8?B?RVBEYjRZUmVNMU1QRWVFR2QrRkFOc05MSXF2a2NMVlZXUkRsdkZOZmFHeHJw?= =?utf-8?B?UHRjZmZJN3dWMXZyUEdzWWN4bkR4N3Z2K29CQktiUFAzcDBJTWZjSUlSTC9a?= =?utf-8?B?OEdpLzIyRHQrcHk1T1Q5Q0VEUTl6eVU2UUdGYzZXUy9LLzAzQVdoM2FJNDJV?= =?utf-8?B?aXpyb0NtZHNtRld1ZVRtYTlBK1lWYVlxMndQZlg1YzByTWFrQXhwTDJKK1k2?= =?utf-8?B?REU5T0NOZzhNL3c5eEU5ZFBpd1g5THJKaVdwUFpXVGZ6dXJYVWlRcmlNdHVr?= =?utf-8?B?NW15K215ckJnNnd6TDFMUlJGeUdmeG9sNndnaUJ2UDFKU2NjVDRaV3BCMEQ0?= =?utf-8?B?cVdIbHZ1VU5heDcvdFAyb3BJUFh4TTNPQWNHdWZQMldqTHhzRkZhRlcrMk5i?= =?utf-8?B?MXpQb0hEZk1VaVhWbXdDRDY0YUFZdENvb1hDYVh3VFFKVlEzbDcvenFSSjNt?= =?utf-8?B?NkF2eTVGZ0NJZWgzTmc0MFlTVjFPOEdlWjBaMGV5U0twcEM5UStuRlpNM1g2?= =?utf-8?B?Y3BUeXBEait3eURXaUVLNENxWitBMU5ISFFxMCtkbHo2TThpT0t2K05mdDZJ?= =?utf-8?B?ZmVabW5YMVZvcTBjS1JKSzd1NEp1OEt0QWVsdTM5blFaTVZsQ3Z0eGZoVmRD?= =?utf-8?B?YTdzU0V6SVhON3k0ajFGY0NpcXh0WERJVE5Nd1Bvb1VWazdvbUtPOGthVGM5?= =?utf-8?B?STRMTHBKdlVXSUpnb0VKMnlvQmh6TlE0c0lHY2dZa21jQkpId25GdEptNUZr?= =?utf-8?B?M1U5TEVEVzlVSm80c05QOUd2NkxhM21XMDNMOUNuTmhEMEhMc0ZBZDVlZytv?= =?utf-8?B?bllGYW5rb1lJc3h4VzFIcjI3Sm96NnJDaUsxUndnS1lDK0dVbHBhbjVsYVN1?= =?utf-8?B?TEN2NE5VWnhma09LTnpiQTk1aTlyY2hLQTZjeC92U1gwWjN4SkcxMGJyM0pN?= =?utf-8?B?cTlZM1J0MFA5NlJabkMvU1hkTlRNMmVBZFAxS3BvTlFPYTdJbXR2SEt3MVRW?= =?utf-8?B?SUsxbXZaM1ZFUDYvYy9ibjg0N2JSZWJjWW5KQ0RvQjhIUGdEbU80SlZTcng5?= =?utf-8?B?L1N3QTE2TGRWa1hzQ1d2YXd0K3NsdnFidjBkQmlBeTFHeWIxNDlVNDFIS0o5?= =?utf-8?B?Y3BXY1ZZSmsyVG14Z2YxYlJtcEowT3ozMkk5UVJVTTNNQ09yc2N4djZOT3Y0?= =?utf-8?B?ZlVuR0FrTUppcnpBTHJpVmgwTTFYYUlhQXJFbEIzWkN4QWNFT0FKa2d1WHNh?= =?utf-8?B?MHBWRWo1ZjNsMFE3ekhhSDFwTUsrckxXYlpUMmJHd1UyS0E2bFJOVjMwNzFr?= =?utf-8?B?Rm5YaGtjdEJxcDVJY1pqREVWWm1wNHoyNm1QMXcybjBBRFhsZm1ObVkzWFdE?= =?utf-8?B?WGc5QTJSdHNBcW81RzFTelkvU0xxQ0ZPZWRGaTZTOS9Mdlk2Mmo5VXBzTTdD?= =?utf-8?B?N1V4TFkvTGRVWFRnNmpSV1NMNm1PY01VSVNwbS9LQkxPSDlpc1d6NWZPWCtF?= =?utf-8?Q?kp/DfCVrBqUVXh8CCN7r7GFH/HidLOHVQfSx9?= Content-Type: text/plain; charset="utf-8" Content-ID: <84FD844A31FCF04FB44BB770CDF8E204@eurprd09.prod.outlook.com> Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: htecgroup.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA2PR09MB7634.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 19218b47-d457-442b-7cb9-08de9c907e8d X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Apr 2026 14:49:13.9997 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9f85665b-7efd-4776-9dfe-b6bfda2565ee X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: q3C/s8D7C2vnruzOsIAOaNB6th6qOPlYR+2j8yVC4RTzFZEFs6x376YHLdZVSmYwp1FEnAz12ys63smJeFZRPuiUXKjrkhNDiUI2JVu0rEc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR09MB8150 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=2a01:111:f403:c20a::7; envelope-from=Djordje.Todorovic@htecgroup.com; helo=PA4PR04CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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_NONE=-0.0001, SPF_HELO_PASS=-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 @htecgroup.com) X-ZM-MESSAGEID: 1776437490882154100 The page table walker reads PTEs using address_space_ldl/ldq which use compile-time native endianness (always LE for RISC-V). However, when a big-endian kernel writes PTEs via normal store instructions, they are stored in big-endian byte order. The walker then misinterprets the PTE values, causing page faults and a hang when the kernel enables the MMU. The RISC-V privileged specification states that implicit data memory accesses to supervisor-level memory management data structures follow the hart's endianness setting (MSTATUS SBE/MBE bits). Fix both PTE reads and atomic A/D bit updates to use the explicit _le or _be memory access variants based on the hart's runtime endianness. Signed-off-by: Djordje Todorovic Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- target/riscv/cpu_helper.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index c28832e0e3..b3d33da13e 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -1365,9 +1365,13 @@ static int get_physical_address(CPURISCVState *env, = hwaddr *physical, } =20 if (riscv_cpu_mxl(env) =3D=3D MXL_RV32) { - pte =3D address_space_ldl_le(cs->as, pte_addr, attrs, &res); + pte =3D riscv_cpu_data_is_big_endian(env) + ? address_space_ldl_be(cs->as, pte_addr, attrs, &res) + : address_space_ldl_le(cs->as, pte_addr, attrs, &res); } else { - pte =3D address_space_ldq_le(cs->as, pte_addr, attrs, &res); + pte =3D riscv_cpu_data_is_big_endian(env) + ? address_space_ldq_be(cs->as, pte_addr, attrs, &res) + : address_space_ldq_le(cs->as, pte_addr, attrs, &res); } =20 if (res !=3D MEMTX_OK) { @@ -1566,12 +1570,24 @@ static int get_physical_address(CPURISCVState *env,= hwaddr *physical, if (memory_region_is_ram(mr)) { target_ulong *pte_pa =3D qemu_map_ram_ptr(mr->ram_block, addr1= ); target_ulong old_pte; + bool be =3D riscv_cpu_data_is_big_endian(env); if (riscv_cpu_sxl(env) =3D=3D MXL_RV32) { - old_pte =3D qatomic_cmpxchg((uint32_t *)pte_pa, cpu_to_le3= 2(pte), cpu_to_le32(updated_pte)); - old_pte =3D le32_to_cpu(old_pte); + uint32_t cmp =3D be ? cpu_to_be32(pte) + : cpu_to_le32(pte); + uint32_t val =3D be ? cpu_to_be32(updated_pte) + : cpu_to_le32(updated_pte); + old_pte =3D qatomic_cmpxchg((uint32_t *)pte_pa, + cmp, val); + old_pte =3D be ? be32_to_cpu(old_pte) + : le32_to_cpu(old_pte); } else { - old_pte =3D qatomic_cmpxchg(pte_pa, cpu_to_le64(pte), cpu_= to_le64(updated_pte)); - old_pte =3D le64_to_cpu(old_pte); + target_ulong cmp =3D be ? cpu_to_be64(pte) + : cpu_to_le64(pte); + target_ulong val =3D be ? cpu_to_be64(updated_pte) + : cpu_to_le64(updated_pte); + old_pte =3D qatomic_cmpxchg(pte_pa, cmp, val); + old_pte =3D be ? be64_to_cpu(old_pte) + : le64_to_cpu(old_pte); } if (old_pte !=3D pte) { goto restart; --=20 2.34.1 From nobody Sat May 30 20:14:19 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; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass(p=reject dis=none) header.from=htecgroup.com ARC-Seal: i=2; a=rsa-sha256; t=1776437476; cv=pass; d=zohomail.com; s=zohoarc; b=DBmZezyNqX3gd355E1Hd7i3N47oS8NZG7x5cn8pGbqGAfKXmvIhXSduJye49raSIkxDv7OzmVb+vjeOWnnDZ/si5DePegLs4APsgTTgIN+B3towzf1pE+mIfNbBTlellkAkP6GtZ4V5GSiPXIwpGc+4KwKu18dCoXcFSqhWEsaw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776437476; 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=h7ubkiNH/UUxmYLQ7QxP2Sgn26ElHUYn7ZCVgELn/Oc=; b=dpib5uoxm91Hr+IfESEZq2oEanMCnCBKPNGjehhR0ZmJpfCD+W8XakaZcYU91tVDauzrXVLGRIKsxrgVb9lpb6CHrAktOb/tlUw0mza73dKT8QK45/ABZXPi1LMN7unFE3dso0gG7EUiTywhbqObrKiAxwowgJ96z5V9lQP+YfM= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); 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 1776437476597467.3159666965279; Fri, 17 Apr 2026 07:51:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wDkVg-00050i-N0; Fri, 17 Apr 2026 10:49:32 -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 1wDkVf-0004xn-6s; Fri, 17 Apr 2026 10:49:31 -0400 Received: from mail-francecentralazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c20a::7] helo=PA4PR04CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wDkVd-0007Cr-Ln; Fri, 17 Apr 2026 10:49:30 -0400 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com (2603:10a6:102:412::6) by VI0PR09MB8150.eurprd09.prod.outlook.com (2603:10a6:800:2ad::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Fri, 17 Apr 2026 14:49:15 +0000 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com ([fe80::c461:b510:b6b9:f442]) by PA2PR09MB7634.eurprd09.prod.outlook.com ([fe80::c461:b510:b6b9:f442%3]) with mapi id 15.20.9818.023; Fri, 17 Apr 2026 14:49:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vrQkFSjvjsggftRWXfPIaCIdo2mWn7VbkYzUtoQ4QCOg0IcYhZBk9gCBdGL/N/ZRcWGZN9AQXV7AsSucwMUCNVtHe9JYf/KDibidL/vVfT63hfOKrKCUaV9ulvXw7ZrtRmCEWz+jF9qSVi4XKETY+usZ0vvIp4wTa2+SPanzpCXf++RGkI9A7TGm7KwyqXEaAfR1cEqe90e2AFDJjwM1ZQ7nxJ3B/KCxdQG5afQfZefh/GXm566zMEHPCbjgZh1w7JAcyb/09VxrYjqO8ZMWDYCY5GTJhDy3w6fXje75TAhgsCNrq5lwi83ptlfCyAe9K8G8k5K6ySCRWuvN4VW7Rg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=h7ubkiNH/UUxmYLQ7QxP2Sgn26ElHUYn7ZCVgELn/Oc=; b=wMvDpE6HxpUrlgYsdQ3qQb5KKs1A6JBX6RAzH8fEOwW3olNAICeoJkY20lGL1Yges6RAkfGddDE6Sue9B6dj0p4EOvMkwPw4Y9KFEd9iiDQfZVNxrgAQINr0rygNyV5I2UzRJNBwpSQO01aCj1V5blPQVfLCEI6vgtlOkwxVvNVQuo3j8km7vylXrsFoHZtoCRRQPUoFRl+sO2b5M1oLG8m3e/Yd4FsQhMeYsCj7Emx7SdHpRuAmzAwv+OrC24nhZ9n/q0mp0RQSRessITrZiol6TmP41JdHCnzUO4aMlSdgI5txGjEWLInfDPLGjKw+3ptg7Y+8KMv19LTXqLC9PQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=htecgroup.com; dmarc=pass action=none header.from=htecgroup.com; dkim=pass header.d=htecgroup.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=htecgroup.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=h7ubkiNH/UUxmYLQ7QxP2Sgn26ElHUYn7ZCVgELn/Oc=; b=YqEBwtRXnIpVu71/t7ZvogpEJwi6ngaP98HjnRDeI2r7x0xxVikc+vJJrObfmxudpc0N8zRGJkjE9XF76I8pHUpGs8ye5hEwlwU1e0gGGFKLgPIaTOuaphu3S0MtRlE1UbCm8WLilMgQCyO+B0P0sFcApQSzVp2Y9zOUXWJP9L7AlBxeFY8ganS+Mwwn2cALYJci3u4MrJy8jlJLgwd9ZyfrlUsuXMVl8nmRyXpimjWhxMEyyPaZNbijU5Gr60Qk7w4z9dzvB8D8VUj0EuTFW4ejnzKTzxflQQUoQS23+s5zB94wzLNzXBqJSCRCg7dmkn75ZjdeaV+9HBkblJiP+Q== From: Djordje Todorovic To: "qemu-devel@nongnu.org" CC: "qemu-riscv@nongnu.org" , "cfu@mips.com" , "mst@redhat.com" , "marcel.apfelbaum@gmail.com" , "dbarboza@ventanamicro.com" , "philmd@linaro.org" , "alistair23@gmail.com" , "thuth@redhat.com" , Djordje Todorovic Subject: [PATCH v8 6/7] target/riscv: Expose big-endian CPU property and add documentation Thread-Topic: [PATCH v8 6/7] target/riscv: Expose big-endian CPU property and add documentation Thread-Index: AQHcznlb7yxvFc4/DUezruphM71TPw== Date: Fri, 17 Apr 2026 14:49:14 +0000 Message-ID: <20260417144905.178056-7-djordje.todorovic@htecgroup.com> References: <20260417144905.178056-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20260417144905.178056-1-djordje.todorovic@htecgroup.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=htecgroup.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA2PR09MB7634:EE_|VI0PR09MB8150:EE_ x-ms-office365-filtering-correlation-id: 6111a502-7f0b-4da7-c590-08de9c907ee1 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|38070700021|18002099003|56012099003|22082099003; x-microsoft-antispam-message-info: N2XwqC1HmQNyJ7PUIRizzPpfsm4+yl2cu45MeP/Lgg6hEI4NY14gYgniJMmgUr458ll6fq78qGkhB83eRhi6hnhXa/iEpdOawwsaYW2pAqL44BY0eCFzVjlR2bTMe2zHoz0FFuyK6TCISG3M7e5lM00P1Eq8+y8/Nqu2/S2LpFyCSXpfO0GR3zU708cSmtjEVUjv99CwfUoTzQl+1mRuLwRiLaY+F4zNJTfVuy9fR7BAuTEQASu3FM07AVqcM8aAjnoRqHw3fYiamTwSLD9OprXxm5GXXQj8PiS9EpFCd4IJQZe5DhTBqpFwisQSaVE96Uviw1VItclmBea6b7pll5ex267C7dnQJqg+jpQO1ZMDSl/ieY3pdnwBo28Xi4gu1yGgsvWhyuBnZj0qMZNkbsA8PGaCs3hPLM7Yb/uTSiNadx5ZRSYoMPi0yOgJ63QSe/4YbcqjpEZat4BXyDd6HaBotREGa48CyD4RAQxvqFz7dOWlZKL2l18PBKxmTemvvxiEjMUeEhtdQX/0dGwWD9ClWpNoxNMZF1JdTaoHDWED/zGJ+ulAhm7N80xu/4HzbXqC3bNo4C8zHVT5cZlJ2MgM9LfurH6UBY5mqFzEcDGfz6SjTuqaT0ZVMkpPib9oO35TRT0U73/j4HeqMfMdAgCEiRVNH2ElzMViY+iL+ZUAAz5TiFWdWzYScyzwA360givfDSRj38+PLdFT9nA4nkyY/oqQf88OIjEfh9A1csTKFzGO345eDQa46IYA0JisAtDfKmNMVSXHY/W7PowTlyHB3eqRHet38rHkd7Eo0/I= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PA2PR09MB7634.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(18002099003)(56012099003)(22082099003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?qF9hg8viuANRc13yPmJirKkH01+5BVwbGEa6bRcSRFt4jE4DVjXIhME7pi?= =?iso-8859-1?Q?MI3TWVNVDVUrI8yh9luIrLV3PjE/VJs9IrTE4KXvQE8qoxFU+KC4q6sCTo?= =?iso-8859-1?Q?SoBxmRBnfy6+tr4Uf4DayIJDeTPW98l++DSxyok+rb67oPw3xbB3+gI7Bx?= =?iso-8859-1?Q?n3rocGIzV7lngs6FIx+oKMy8LvfvlDZmdoBUvUyUd47zt222frMgye9WD4?= =?iso-8859-1?Q?qi+a0bMvThfLXtKfTmWbsVh8hnQbNorehz3N3tbNTwXFjTg9kG1IE2hdbk?= =?iso-8859-1?Q?5z/H1h8pY56BGG8WY1Iyo00dKyhvVJTMgAy5Am55rKLxKqElfiUobqe/SN?= =?iso-8859-1?Q?A0gZg8jNaR5x5BpNiLbbBkLrTF7XJ+ldtWxvfQ53p0R71TUDi/R+ygRwC5?= =?iso-8859-1?Q?t/9RxrWEE7fvj/sNL5lQ/uokTL9A/t3OBG/ViKwmww/1mWL59m2IxSe5DI?= =?iso-8859-1?Q?tk/ei6adLu+zTfr7jduBaCHFbHuH+aXAzYlDp4rvWiYkyV6uKabruHbXRZ?= =?iso-8859-1?Q?YR13Q1R7+WP+ReKnMOV/6ynPDq0HYVXnidRZauQIYNBK6EtB1ahMxMs6VY?= =?iso-8859-1?Q?VpSdrx8WBDIRTPD9iXiOX1WZ721Q8A7ExRlNzHASphbIJ1oj/zvITzVNtu?= =?iso-8859-1?Q?PBhzK8rQ0IJLVWRLiJHbJnBf9Y4laf522StANPjhxw2nZFoj7xWaFj/rPF?= =?iso-8859-1?Q?rjhQLzN0jxv6NDcg1QcGcqM7YaHGUg1JsA6VOnUM+pLB0QM9ZL8okFaKdI?= =?iso-8859-1?Q?ZaRefWncdkLmMlmitYP9MpWhaO+M32aYO9admv5A8D+C1pg05pwbo6jybt?= =?iso-8859-1?Q?anlgAtlZ9YSHbm8oCqXpmVJNjCY/nvQAjLjRpLcmNGCLWYeYZWxv3oeDZZ?= =?iso-8859-1?Q?Tv8rRnhsUaIOuEiQz+c9B9MHb8sqEVPsHhZIFshoMi+EuoaP9lH9dSyQEe?= =?iso-8859-1?Q?reGyEDLOP2/oDemUYAuNvXKj69yPKNzu+U1PaKdgxlQhAH1NOY/nkyNRGt?= =?iso-8859-1?Q?qKVlyVFtzToLnjnXyfCw16GUtEwQbLB6S6Ly2hF2CcOibf9CoXL6+liYfb?= =?iso-8859-1?Q?fjGI6Hbhos+1W24pCw+F4Tw1iT1L7nk2WEIwsNiIEmgN4kTosRb+5gWttN?= =?iso-8859-1?Q?2UUYa+q+8I06yAfW6ZLB956tfsEUI+NzVvCdoPSigE0dMKESfF3wjPcIgj?= =?iso-8859-1?Q?AL2JuSxOK3GPNcaGmOTAy6HC1zkA+iBle48EdnD8AtQriHcVRkpMubKnz+?= =?iso-8859-1?Q?cLSQddnVfIbjx6giUyu7TRnsmkhXPueFvoq09DzzRyJ+ho5055RVPoa7MP?= =?iso-8859-1?Q?eEx4GA04CAlyZHAzgVhor9HVmmqvU5IZ7CY7EEkaHllQXsN9EuzT/QuDlH?= =?iso-8859-1?Q?hkE65KXBSbaQj17K889wGKTx8AbBH/yPEEBvmBqbg6oEkSJCRVB+2pccG0?= =?iso-8859-1?Q?b/GklMpm7yagrz3aGG7fSJWESIl/u1IJ/f1bfs4zFACt61upeAIDpGFJ4c?= =?iso-8859-1?Q?VCWqC/phy94hCWaupscuJPmd9eZiKH63CWQovgAWyuCdEqJLpTuPd6xnja?= =?iso-8859-1?Q?ZrZov3UvNYsLxRPgEUzuOZILiR+15xEvU4KXrp/v3WqzWqik60toNm1vwM?= =?iso-8859-1?Q?BX8jBpSIkeVp8hDqZTqJ1hPoyqBHid5ErDli1a2OAyFSnWynmVjVWnrjHD?= =?iso-8859-1?Q?9udiKiooQ7Kq1C1Tho7fbh5RCEB2A4XZecSFf4np9VdC/3vbxRfMCYWkeN?= =?iso-8859-1?Q?iuhspCwWwQdcfuqCUYAPpER9FcYUt1yuChYfrtb0KrRTVwGOy6ADeTHgTa?= =?iso-8859-1?Q?nMHdbI3ZleaBC0UnRKOIdu076ArVv2lnyhWgVZr4UFgv4gwA1hBr?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: htecgroup.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA2PR09MB7634.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6111a502-7f0b-4da7-c590-08de9c907ee1 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Apr 2026 14:49:14.2392 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9f85665b-7efd-4776-9dfe-b6bfda2565ee X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 31AtWI7lzrI4H1pUIGXzTQ2Xbsm1a1tfueTsO01aXCSYOPzkL/c83iU9F/5QBhGkpLjy1GWcNsi2pJ0eAtyla8dMLvGm7kjmUI2tNczaNmA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR09MB8150 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=2a01:111:f403:c20a::7; envelope-from=Djordje.Todorovic@htecgroup.com; helo=PA4PR04CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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_NONE=-0.0001, SPF_HELO_PASS=-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 @htecgroup.com) X-ZM-MESSAGEID: 1776437478878154100 Content-Type: text/plain; charset="utf-8" Now that the full big-endian data path is in place (runtime MSTATUS bits, boot code, and page-table walks), expose the "big-endian" property to users via DEFINE_PROP_BOOL and document it in docs/system/target-riscv.rst. The property can be enabled from the command line, e.g.: -cpu ,big-endian=3Don Signed-off-by: Djordje Todorovic --- docs/system/target-riscv.rst | 24 ++++++++++++++++++++++++ target/riscv/cpu.c | 1 + 2 files changed, 25 insertions(+) diff --git a/docs/system/target-riscv.rst b/docs/system/target-riscv.rst index 3ad5d1ddaf..7798184ebe 100644 --- a/docs/system/target-riscv.rst +++ b/docs/system/target-riscv.rst @@ -95,3 +95,27 @@ the images they need. * ``-bios `` =20 Tells QEMU to load the specified file as the firmware. + +RISC-V CPU endianness +--------------------- + +The RISC-V ISA specifies that instruction fetches are always little-endian, +while data accesses can be either little-endian or big-endian under control +of the MSTATUS ``MBE``/``SBE``/``UBE`` bits (see section 3.1.6.5, "Memory +Endianness", in the RISC-V Privileged Specification). + +QEMU implements the full data-endianness behaviour described by those bits. +In addition, the RISC-V CPU object exposes a ``big-endian`` boolean proper= ty +which models a big-endian-only hardware implementation, where the +``MBE``/``SBE``/``UBE`` bits are hardwired to 1. When the property is set, +the CPU is reset with all three bits initialised to 1, so the guest starts +executing in big-endian data mode from the reset vector. The property is a +static, per-CPU hardware configuration option and is not meant to be toggl= ed +at runtime. + +The property can be enabled from the command line, for example:: + + -cpu ,big-endian=3Don + +No upstream CPU model currently defaults to big-endian; the property is +provided so that big-endian-only RISC-V CPU variants can be modelled. diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index a32e4fd6d6..c39500cb3f 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -2641,6 +2641,7 @@ RISCVCPUImpliedExtsRule *riscv_multi_ext_implied_rule= s[] =3D { =20 static const Property riscv_cpu_properties[] =3D { DEFINE_PROP_BOOL("debug", RISCVCPU, cfg.debug, true), + DEFINE_PROP_BOOL("big-endian", RISCVCPU, cfg.big_endian, false), =20 {.name =3D "pmu-mask", .info =3D &prop_pmu_mask}, {.name =3D "pmu-num", .info =3D &prop_pmu_num}, /* Deprecated */ --=20 2.34.1 From nobody Sat May 30 20:14:19 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; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); dmarc=pass(p=reject dis=none) header.from=htecgroup.com ARC-Seal: i=2; a=rsa-sha256; t=1776437512; cv=pass; d=zohomail.com; s=zohoarc; b=ap7yvOhBtQ1E5IfWbt1kHzvfUhXzPhbrgyyQPCQkDYDvtO8vQYQXB05jHCBZ6lsmF/0ahaosV0GiscMKbIvAxDlPvRglDsDuMEpdBo8dtq6Qbhx315WKo1jefCuKT+4xgVXxbMXywsGjTEnA3qoXVYwKbJQlubMluejsvwt9id4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776437512; h=Content-ID: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=NSWTPWYOxHTX6l0cvhAcLKInV7KidfAXnh/bEmyHL94=; b=OTLV/xa0cbpu2PUcpkoasgBg8km81aYNJluNIY37+3GSJ/QeeojAaELG1JKU0aieTlS0h96yE6Sz/iIWtVJGpDfu1OvpejyF8/PrESCDY52ii8hNnCmgtFNdZKeLFivZxFMD1lQ+Twym4wUA49yGNNVUwpBD9fAQ+/0NuKW9Xxk= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=htecgroup.com); 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 1776437512128690.2718013425489; Fri, 17 Apr 2026 07:51:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wDkVi-000520-IU; Fri, 17 Apr 2026 10:49:34 -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 1wDkVg-00050j-M4; Fri, 17 Apr 2026 10:49:32 -0400 Received: from mail-swedencentralazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c202::7] helo=GVXPR05CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wDkVe-0007DI-10; Fri, 17 Apr 2026 10:49:32 -0400 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com (2603:10a6:102:412::6) by VI0PR09MB8150.eurprd09.prod.outlook.com (2603:10a6:800:2ad::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.25; Fri, 17 Apr 2026 14:49:15 +0000 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com ([fe80::c461:b510:b6b9:f442]) by PA2PR09MB7634.eurprd09.prod.outlook.com ([fe80::c461:b510:b6b9:f442%3]) with mapi id 15.20.9818.023; Fri, 17 Apr 2026 14:49:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ErR4rOmAGKke0glebuOiHDPovvHaZRd9G/h89GzNpYw5qH6p/kpPIbRYkeWD4xGtBHHnVnyahqD3z5cNmJmEolSR2gt+IX/JxZgPeuNY9YbPs3B9LZzsD2yHuKa0n/H4oTFROangYBEzxlSHl6137mTnALxFiOFBj5cNgRN7kuqhoCG746iRE4dPwq7KWashSSJjKQCL6wLQjdL3UR63hT8F84y+iATR8KvIYTPOn01DWlkMAT1+NQUzH9h7Rm+jd3QX68ASF7iJ/o0GeSrClI7QU6r0ue+UzWUoMSpI4CmnTnyPbjI+Rb6aVIa1lu6jwovwAoyNp0+TtceQpPGlYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=NSWTPWYOxHTX6l0cvhAcLKInV7KidfAXnh/bEmyHL94=; b=eHFfjYWvJMOq7M8pN6UFOPdRaehmO0g1/a0ZHFJ2uqUtTdGJL10k4Gq35MdwS19b5u+JnHzl7LPJbLzbsrAtkvwX5EDXdGqjzERP0Miaup0/7AHMlbMYyw0p0jowwhl7n9hSkv7eNuEAC4Kpr+9Gpq0ozmoaG9DkWqL19WFwE1jXacmg2ikRKNLEM27rHG08rgNP5TLbCwDve8ajeAb2xOM2A7UFvFT4tN/eM5l7kMqEQPGCFyX1Xz7FEHDI78AXvgFnf6e9isIbso2eCA/0xXJEWKwffcsBltaNxOs4EHzLkvZW+zPaJDwowvZDKHw9VcAMy7a65T/P5x8X3yzrlw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=htecgroup.com; dmarc=pass action=none header.from=htecgroup.com; dkim=pass header.d=htecgroup.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=htecgroup.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NSWTPWYOxHTX6l0cvhAcLKInV7KidfAXnh/bEmyHL94=; b=DUcWvsn32uj4JNRoeP1zsQ4lLdnQbY/z8412PkD+vb4NrCXp8FfHcW5ixHK5WGB5OInnf+MxR63OMMBb28SKhtVqEvz7FjdMCBPiqlP6f8/jyBsVd46HaafroJv8/AsPmi8KNr50EgEIfSIK3cGjdg+tODLt6pigh5c/4mA7nLvLxLgHuPOE38mkIg+Aee3HvR7zWPcjnVUJD0N9DZwQGy325VkB+54TZYOO5iD0OX2EF0VCryFJX+nsfUxdq13dEGE/jBxg/dSjchuGMblfI2pg2vL/dedgcvfX7JMXjbSCpMCZL+Zy8cfKRhxKkhi33oUK6MYfm0Ck+sAcsUEeEw== From: Djordje Todorovic To: "qemu-devel@nongnu.org" CC: "qemu-riscv@nongnu.org" , "cfu@mips.com" , "mst@redhat.com" , "marcel.apfelbaum@gmail.com" , "dbarboza@ventanamicro.com" , "philmd@linaro.org" , "alistair23@gmail.com" , "thuth@redhat.com" , Djordje Todorovic Subject: [PATCH v8 7/7] target/riscv: Add endianness test for RISC-V BE Thread-Topic: [PATCH v8 7/7] target/riscv: Add endianness test for RISC-V BE Thread-Index: AQHcznlcdt5giNjZf0uhN8EWD1k0ug== Date: Fri, 17 Apr 2026 14:49:14 +0000 Message-ID: <20260417144905.178056-8-djordje.todorovic@htecgroup.com> References: <20260417144905.178056-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20260417144905.178056-1-djordje.todorovic@htecgroup.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=htecgroup.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA2PR09MB7634:EE_|VI0PR09MB8150:EE_ x-ms-office365-filtering-correlation-id: c2fd5727-65f2-42f8-3b44-08de9c907f05 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|38070700021|18002099003|56012099003|22082099003; x-microsoft-antispam-message-info: fzZnzw/lBJCmnELMiz1GpyXJcgpvDv34YkcJiHK7WCGC5buZhfospEl1weBxrqoWKvWSBQJ34NVUICKE00PbVD1L4itqsx94FZvNIzAbJj4vBa47zMF8CYLI5t4cpdsSAfLiTReniAb2L+z+K51raH3CIceXxnG5j3CnhzV7+v9D9OcgfpCoPmjyCCUW+ytZizzoN1ZMKCNkd8M/mCleuZIX7Esr3625iv7o5bNtoOpfgsvkCWkMynECCvR7crJzz4D3GoU6qeuczjaVCWtvLb8urtPNt/jc8b1g43iQBAQTkSHm4N6NzUK7LdSy7lUAkMUdGa5XzBfxamIp/25OK+t9ZuuPuHffEpDQcqdolA2KYPXL44r9bA4byBAiN6gdJzzkDecv1o0di+TkOFBzdJwkDiv3a2QXNtk6jXZgXBIkeQ0+eToN25vOfEEMfZ8UJMMmPin7MfGyj47hAas8/aaD6gE1M8OmeLBiF9hs89jBAiqaCvNIiPWYZQ6zfvH877NyG/Pv/JZS9AxIoHMpFcve1sjEqHPozBqIlL7xmiDW74FlZRihc/8p38wLd/KAA8t0VZYEQYXQ6tu11LGDoI3Ccg+W4W0bkRF2MHbsE3bCidNGrfrl+kVyGgEG/LqK1bUsRZtpAKmka5fCGZEPuFavF6YjiClcuKk3ALPIWBmqx8sMyzQoswq/j0YtXWOpJSY2Y6hCj0/9+JKxvyoctVnkQPJNfGBq20fjuKTjTov0pNy1UKV3rXr/MN6EgVUv4zq39GcCUmjVvg8aO0d5E8vbVA/9+jkRZ2zJ2n6O2uU= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PA2PR09MB7634.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(18002099003)(56012099003)(22082099003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Q0pjNEZXTzEyYU5UcUVsTmVhVnIvdFlIYkJ5djhDR016NW5KZzMyMUYrRGxC?= =?utf-8?B?SjIzTUJxWk5Od3NrUUppMk5XSmcrOVJMVmh5Z2t0QWlRU0ZQcFczZ3lKQWEx?= =?utf-8?B?NW8zWFpCNGRncHE0bXgxTUNvN3hLRGxWQThXR2RBclJSdlV0cHhpaURQNnpn?= =?utf-8?B?blJIZTdrbkRTNCs5TTA4d0txc2ZFUnNBZ0xBK01ubHp3MjdrTXBRdFN4NVJB?= =?utf-8?B?a1dZcndVUUQzdmNtYWRqbHpjQ0JDOWlzRjFPQkdUc1g3UVdSWkw1Nm1HNnN1?= =?utf-8?B?d3IrWVlTN2xLczlPcXo4QUtsdXduakJTd3pRd2FJU2M0NW1jWWc2L1NaT2E1?= =?utf-8?B?cUF4ZVpzSnNYUmc0Vjl1NGJFSWNaL2RyREFMV0Mrby9Xc3p3YjdjcFpLRGJV?= =?utf-8?B?T3d5YXhzTzhRNjZla1N6K1JvMkJNMEdnZFhYL1RVOWlzcHU1bXUxSk1HcGdn?= =?utf-8?B?WnpMckJoT3g0czRUUFRzRWIzeVo2YmVRWXRZNGpodXAwSlVkZlFWSkNDUy94?= =?utf-8?B?Vmlna3BrdmdnbDI4VW90UmtwdEF5dG5haUd6YTJEQnpwM3Vsand3ayszdFZR?= =?utf-8?B?K0dMYXRWMTBZbjdTYWt6bUkrdm94aER1Z1NrY2pGbU1PeFRmbjdsSllqMG05?= =?utf-8?B?NVEwbnYrLytOTkdYUGtLMW50eFBocSt1NVRmNERUSzRYdGRrbjVkb3p6emh3?= =?utf-8?B?RkE5L0VlYmFoSU43b3pZejB3MERWTjBhS2FldHFnamZzdzAwVm91YmFWcDgw?= =?utf-8?B?MXd0ZnpMUVNieWtnQXFSMjlYaHUzZUhnMURuYnBYZ2k1VkluMi9ZWll3NXhJ?= =?utf-8?B?V0krMjJzeU1FOGZBSENReFNNTXl1L2NiSEx0N1Ayd3daOE14bForajd4WmpY?= =?utf-8?B?K3NuRXhLUVJzbzdxcFVUK1ZjOG1UdE1tUzBUWnQwemw2dTRURTFveUNhK0Jk?= =?utf-8?B?Q3NybXFINERwQ0FhYnppZHBJWlF5OU90ZXZTcXkrWDNTellCMG45LzdNQnIy?= =?utf-8?B?bDRHdWUzRjFiNVlTVCtLTXBBaWtjeEtXMVBxajhEYXRwSGRYL2tDMnFFZ0tZ?= =?utf-8?B?eEp5QWJYN0FtYmw0UVNaRzBnUFRUUXNQV2dmN0JBaFVNYWcvdWhwVm53bWNj?= =?utf-8?B?dzZwc25Cd3ZrZGJvbXg3d1RxWE1NS3VHS1J3djk4cGJjYzNBbE5DallIWXZ4?= =?utf-8?B?S2lQOHNJKzMzeitLWGlvSEtSWk5MVDVGeUc1STQvSjV4THc1MEd4M1Y0d2k3?= =?utf-8?B?NlNpMWljMjFzZXVuRWRKaUhFK3Y2MkZpWEpEMnU1T0RlWExYRUs0cHpQQVJp?= =?utf-8?B?TlEvUmd5YkVITTNyTTAzRi9OdzczRHV2b0NJSG9kcnV1MC80ZkFJVHFlRFFl?= =?utf-8?B?M3B2djltaTJheHZsWjA2dmsyZjdiV3gxeWJ5a3JoN3BkOCt6emU3TlVhc3l3?= =?utf-8?B?MG9TUzlVVFFpRTlSL2hxV0xMRDZkSWwxb2lWQi96WUxrN25qbnFSdnNwM3Ba?= =?utf-8?B?WEs2UWJwOGxPR2NyTzZ6R1VvTGRST21LeHVneEg2R3o0UU1WVUFvd2IwQ3Av?= =?utf-8?B?a1dvRE9ETWRZaUtOQmhSYS9IUWtGVy9hRlM3ZmVXZTdPRkE1M2w1eGFoTHRY?= =?utf-8?B?R1Q5bi91S0ExSlZqbXNha3JLRmRHNFJ1U3RaWVc4YWRYMFkwUFVkMlZHazVM?= =?utf-8?B?MnhzQzA2bkZZNWpXSzBtdTVSeUttLzFEUEllTlhyY3NCdnJDVFlTUVh5U2pm?= =?utf-8?B?dkJIQ25iQU9rbUNGSUxEM1RTOEhXUXhwOEc1b1pDWUVoQWtyOUZXemovYzdZ?= =?utf-8?B?Y3BVQ1ljTnQ0RWF1UUFCK2U5SWwrdEc2dDhBN1Y4SEtEMU9kZzVPNWI1dnpR?= =?utf-8?B?Qm9pTVhTVEE1T1NKeUNJUnR3cEZRZFRKbXZzMUpFWDVabW1EQjFTSCtlbVhN?= =?utf-8?B?cTdxQW9TdU5OY01odlJrbHZ2ZTZTMzNEZnhKUlF4YlZ2RC80T1FEYmk5bTVl?= =?utf-8?B?MnBMYTJvOUk2RlArZjNNNnR3RmlkV1lML3NxTm8zeWhsSS8xNlZLRCt3VmZX?= =?utf-8?B?aGpSZEVZYnVMM01FLzJzSmM1YzM3QkxKdjM0bVM0MjBzVmlUTlA5Qy9aUFRy?= =?utf-8?B?cklIME13aHp1VnFrRStHUFJIVmlmcEd2b0xBbDQxVmVhdFhGMVhENHRtNEti?= =?utf-8?B?K083WW9FRFNaVS81cmd4Ry9mZ1RDWmY2T2Z4ZlhCUWt4ZVVoZGZ1cURRT0xN?= =?utf-8?B?R2EzRmkyTC9QQmVuTS9Ua1gzZmFEM2xwcC9uaXBLRy9UL0pVbFcxMTZEVmxY?= =?utf-8?B?aUQ2SVUxMGl4S21Zd3ZkZndjcDFqUkl2WGpxSGlVbXVjMDBTOUFmRDluY1d1?= =?utf-8?Q?PF370GMhN4vIjozYU/wxcHcbr10CJ+vSsqIWT?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: htecgroup.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA2PR09MB7634.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c2fd5727-65f2-42f8-3b44-08de9c907f05 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Apr 2026 14:49:14.4832 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9f85665b-7efd-4776-9dfe-b6bfda2565ee X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: kIihmBuRomdL+FY2wipZ4JT+Yp/nAP6ZZxiAHXt3EgsIkA7CCMjarUb6GWSsNVyzbnk5AkwqRSGrQNQZYfnuRGF5ZnJtuXVExv5EVHnbtMg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR09MB8150 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=2a01:111:f403:c202::7; envelope-from=Djordje.Todorovic@htecgroup.com; helo=GVXPR05CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, 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 @htecgroup.com) X-ZM-MESSAGEID: 1776437513302154100 Add functional test for RISC-V big-endian. Signed-off-by: Djordje Todorovic Reviewed-by: Thomas Huth Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- tests/functional/riscv64/meson.build | 1 + tests/functional/riscv64/test_endianness.py | 57 +++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 tests/functional/riscv64/test_endianness.py diff --git a/tests/functional/riscv64/meson.build b/tests/functional/riscv6= 4/meson.build index b996c89d7d..5871211e89 100644 --- a/tests/functional/riscv64/meson.build +++ b/tests/functional/riscv64/meson.build @@ -11,6 +11,7 @@ tests_riscv64_system_quick =3D [ ] =20 tests_riscv64_system_thorough =3D [ + 'endianness', 'boston', 'sifive_u', 'tuxrun', diff --git a/tests/functional/riscv64/test_endianness.py b/tests/functional= /riscv64/test_endianness.py new file mode 100644 index 0000000000..9e0b3b7db5 --- /dev/null +++ b/tests/functional/riscv64/test_endianness.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python3 +# +# Functional tests for RISC-V big-endian support +# +# Copyright (c) 2026 MIPS +# +# SPDX-License-Identifier: GPL-2.0-or-later + +from qemu_test import QemuSystemTest, Asset +from qemu_test import wait_for_console_pattern + + +class RiscvBigEndian(QemuSystemTest): + """ + Tests for RISC-V runtime big-endian data support. + + Uses a bare-metal RV64 ELF that detects data endianness at runtime + by storing a 32-bit word and reading back byte 0. Prints "ENDIAN: BE" + or "ENDIAN: LE" to the NS16550A UART on the virt machine. + """ + + timeout =3D 10 + + ASSET_BE_TEST =3D Asset( + 'https://github.com/MIPS/linux-test-downloads/raw/main/' + 'riscvbe-baremetal/be-test-bare-metal.elf', + '9ad51b675e101de65908fadbac064ed1d0564c17463715d09dd734db86ea0f58') + + def _run_bare_metal(self, big_endian=3DFalse): + self.set_machine('virt') + kernel =3D self.ASSET_BE_TEST.fetch() + self.vm.add_args('-bios', 'none') + self.vm.add_args('-kernel', kernel) + if big_endian: + self.vm.add_args('-cpu', 'rv64,big-endian=3Don') + self.vm.set_console() + self.vm.launch() + expected =3D 'ENDIAN: BE' if big_endian else 'ENDIAN: LE' + wait_for_console_pattern(self, expected) + + def test_bare_metal_littleendian(self): + """ + Boot bare-metal ELF on virt with default little-endian CPU. + Expects "ENDIAN: LE" on UART. + """ + self._run_bare_metal(big_endian=3DFalse) + + def test_bare_metal_bigendian(self): + """ + Boot bare-metal ELF on virt with big-endian=3Don CPU property. + Expects "ENDIAN: BE" on UART. + """ + self._run_bare_metal(big_endian=3DTrue) + + +if __name__ =3D=3D '__main__': + QemuSystemTest.main() --=20 2.34.1