From nobody Sat May 30 17:46:17 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=1778492548; cv=pass; d=zohomail.com; s=zohoarc; b=STJE5v46PpUxxto/1mUPLx7/OQUQqB6Nn0bi4jyiY+4oELpxaXElgCDzoFi/2b1/Mj8s9usikvqp0gEoU32bqs46NIo2flhCEMdFsEqYaS4GZN3muz0MVf1cpNo6C2TqJO2ogSJ6WII1+6jPMAO7r4wQfzdJkr4/FPN2vlvj15c= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778492548; 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=XGsNVhHUYNt4ihstZKXeJP9dx3I31b7uZhm3RBtre8cZ/iHkvs0wFlj2SqHctXvMmbp1m53cnVW0jP8zrjK8HxG7vK5b9FXHZn8dmwV8FErvuy14KVSlXI7qjhUKWf6kILI9j0bUHPImH8cfvCxSB/UT4M73+gJBQw0J1dZC+KU= 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 1778492548630204.716669194951; Mon, 11 May 2026 02:42:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wMN8t-0002R1-Mi; Mon, 11 May 2026 05:41:39 -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 1wMN7r-0001wz-73; Mon, 11 May 2026 05:40:35 -0400 Received: from mail-westeuropeazlp170110003.outbound.protection.outlook.com ([2a01:111:f403:c201::3] helo=AS8PR04CU009.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 1wMN7k-0001RA-5U; Mon, 11 May 2026 05:40:34 -0400 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com (2603:10a6:102:412::6) by DB5PR09MB8695.eurprd09.prod.outlook.com (2603:10a6:10:64a::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.15; Mon, 11 May 2026 08:38:27 +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.9891.021; Mon, 11 May 2026 08:38:27 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=r2fsAfohkeNnKI2uJoW+WOkXlR7ykcKzIlT4VsorQ++AfaSusjOXezEksakD0wlyYk4LC3+0JZON75Kr7WZ0oWn7QWTghm+Z/HQyhmzk1abafHID/Pa5JMNFK3OxhdGQs1WnA+WUDSFjHlh508R+HARjIYYZKINVhfklX26VFEbRAG8mHW9hTKhIXhxZlyHnViYmdDYyb9kgwPcv36dyYnTDO1DCxz+Th7R2+SEyDtS4yVswEny61Dj4RkaGE4FFFhEEqJbPYvl2O9yLLdFQg+xv2kHVWlgXuMCj6soCPiNNzOimo4TIiWPI5KVbwf8kYyNrywsoxWhnrPPWP8JqDA== 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=Kxq+LJ4cXSB+dmWLBHNcXdy1vIp/ZWhvTKDGeC0hzj/qSgWibKTSuMaSBkfKqTalX24ktloz7FNzoR4mhbrH1CIURzsDQYl7G3efpeborPMiN5pIIDsbOideud8B12VN3YApr/qr7R53kq9JLQfaPfKSp06TmJuLQ4k2f9qNtkjThnCgpQyo/pIPrrpnptOsFSv4mtZstaYc0w9oht4SbNWSmV90+AunrfhQcbC95T7sxuV8j+sPzyfwVhQeFzolIQh30OQWHkE2pALZVH3gGMdyC9tH5M224D5siwf6ly5Ukf1TNuuGRtnpTN6IFKMVtxkHyXlavx+AdslgGoK2kQ== 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=H+6zozvtpBHjF/r0xrvuzwjU65BHhjMUErMGmvhm8e9oPHLgyEMFA+vzN5gayIrHMqvzNEVmU8GKTj21I4V1MoxBz0Bz8E1AwU56LxQFOXMsPAKF9ktFizFmnGhZhrQkQyBvwkiU60c0vpakGB9gbJd4t7EqEV3Bpj8FUEu8EzIsTs4fcc2zv1WlKgpFQh5QLat7iVEqxHwmiNqHS4Hueqg6PA419mU1wgYROVP1k0lFgqRUfGFKy8hbXspMBv+d6IKs//64TtHXj9Zma5ccHw5y+w9GdCRD+1ta3YktUKeeU4ujHjdbk0C+rltQ7UGEQFljUmfZN2i7o3zhW6nHsA== 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 v9 1/7] target/riscv: Define MSTATUS_SBE and MSTATUS_MBE bit masks Thread-Topic: [PATCH v9 1/7] target/riscv: Define MSTATUS_SBE and MSTATUS_MBE bit masks Thread-Index: AQHc4SGJewGFqI/iUEy4/7BmFq9dSg== Date: Mon, 11 May 2026 08:38:27 +0000 Message-ID: <20260511083819.206216-2-djordje.todorovic@htecgroup.com> References: <20260511083819.206216-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20260511083819.206216-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_|DB5PR09MB8695:EE_ x-ms-office365-filtering-correlation-id: 7cf7922f-a136-42f3-8e6f-08deaf38ac28 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|7416014|366016|376014|1800799024|38070700021|56012099003|18002099003|22082099003; x-microsoft-antispam-message-info: P1MZE8REPD2LVM+9h7joj7kjMKhJwtUCaFUcz1gXyD5kSjJ4t+fO55x06YIFgeOeG1Xj9KzdEt3MphwLIIeYZ9sWmbIK/7gwAE+dP/QQUo/wPmjOvP9In67QlQWh5YQG2vowXojx77g4rdjro8/hxcMAJk13pE0OdqxM4hPxOHF/OCgY8T+h9ie5T0TMDaaCr7OLcuG0jADizF4UBdggEWVYJjE0Q/2D4688XH7nSpH+xmT9YSQOL09i5mGDayMlf0BNfTC56VrD5VgplXs8Mnna0Cg4aDdtmSOqsbfbBOB9C41I7xjh4eXkHCgwl3BwfvAW3arueMop1QwjZRDn1z17JCypcW+Dumf4vPV5xyjOOdKvnPLWRf31l0isIQbQ69XzgmpGDn+h7/GWa83xT6//KjxgsWbNZn1qEsDvp3vH0uQ3xCmSFqXyUFCOI8KFlIUjehtp7y1xkCquQzTUoZyCSLfg0cN6qhXJ8HgzAQW/iKz4sQ/wNVGjbontJvlKhqqxQe5xcTE/EzXTxkOTyaF2UUapx21zuD5ZgJPnb0wk/imMKc9h3lRk+aZHq6HvBD5bx4CMIlvDAaUXtafzUgP9BVrh6P9l7U1FfOjUFbwRxP3m20DYj0aR3oOvW8zPfNNmSBVVfTpdLhOwVOWgm/rEoFzdZwHRk4h8QbcToiqkOe/EIzXrt745l5R12TuUYNGzvezpW4MLML/96o7TcBaoMmqjZmGBuKbym+VVeW22a3VeIR/hHjuXawRfsrnA 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)(366016)(376014)(1800799024)(38070700021)(56012099003)(18002099003)(22082099003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?QVBzekcwaVQ4SkhPdkFOYkRPeUNUaUtCckI4WUdCY1FQZnREVDdIZ3pPUUN4?= =?utf-8?B?MXI5RzJXc1NhblljYXJFREFCYk50bHdGcUdiSVZHN3g2UzlIZUFTSk1CY29o?= =?utf-8?B?Vzh0V1hscU1OVHlra1NmUW52aWcvN2o2OEhtc0srelQrZExSazIxdzYyNUIr?= =?utf-8?B?bG9aUTQ4WmR6NHcrMUJCQ2Q3T2Y1ZWZlNU5TTWZheVZFRDZvVmhUQ3RKMG5W?= =?utf-8?B?TDBnV3l6Q1Vwa25qVlRmU1MyVEI1RDR1ZndOQ0lZckttazEzeVE0Q1UzT1U0?= =?utf-8?B?elFuWmZVa053M01FcGg4aDBlZlg2a1pvZnEvaHh0OTl2VGlyOUtSSzF3RytI?= =?utf-8?B?K0krL2RsR2ZWc2JwaytoN1BldU1ZeWtPbGtzU09kdW5CUlBNK2I3aWphd2JV?= =?utf-8?B?aXE4SklmazNta2htbitMTEdYam5LaVgySDZyZ1ovSzU0Z0VPM2lCRWZZM0VZ?= =?utf-8?B?TkdGajdIZHNnR01RZU8waXpKWm1XSlpFVkswQlkxb1pVTzdCLzVoOUUzeTlP?= =?utf-8?B?WjVybnhVNXhYTDBiSU1QUFlZT2x5U3ZkVUJ4ZmF4Wm9aVnFpR3graXRLcHVK?= =?utf-8?B?NU1TeS83TW5jUXFQWTBjZi9QQVlta1VjRGNsbndmTjBxNGNwTVo2a1RiSnh1?= =?utf-8?B?a0pYZXpBeGZEeStxZi9WcjVEb2M3c3Q2NkthcjlZOXA4RTVyb0JWd0dyUXhi?= =?utf-8?B?czNFNGJaVTlydFl4eXJPSC9LUk12blpXSFJQSFdhSGNzK25iM1VMYjZsWHc3?= =?utf-8?B?a1RLa1hIU3hxV2tWa3duQ05Ka1RaY2VlV2tZWnloaXdDV3V1UFN1Yk4vYnor?= =?utf-8?B?ZmUrOCtYSjRBZDZhZHVCUUJNcDJFMHBQTHYyR0NwTVF6MXRaZ3ZBOUNHR3ZH?= =?utf-8?B?QkNjcEFVRXdSUG1vczhhajQyQjFmV0lHRkE5TERVMnpaQ0ZBN0tubUhqdUxt?= =?utf-8?B?TVIxVms0ZzNTeTlwNGZGdzJ1Rnk0YTUrKzBUS2ZlTTg5ZmNzZFdoVlR2RCtQ?= =?utf-8?B?akVHUkZzekpoTUxmVXNRY0FCTUdXTStKOVdJaDdyNG11YUxvREJHQ1EyQXo5?= =?utf-8?B?N0E3b29mVG5meTNUYXFVdUlhdFB1SWl0SDRweUtWVFZLNUpueENxS3J2M3Bm?= =?utf-8?B?dC83TjR6M05UeXRhKzdkQjgzZCs1OUlCczhic2hWdEdWOUEwbVIrZVE4dUlj?= =?utf-8?B?V3R6V2ZTMnhCYXREOWwyOVB5L0ExTTkwZ3RjSmowZ1lLZFR0YkxMbkdmUzdU?= =?utf-8?B?bnJ5RzR1SGZ0My9UUVRLYkRhb29KMzhLWE05T2Fsa2hYQ3o3aG8rNWdCYlc1?= =?utf-8?B?bm1aY3pUYml5b2k5VkR6NmRYUkhCcHFQaDMrbnhjN3JFNXMrV1VBNmNPU0l0?= =?utf-8?B?VVRBVDJQaUxaWVIyMGtMSDZ0V0pmOGRrM2N5NW5lTjFDSlZHY010NHhaMUFo?= =?utf-8?B?ZWQ0VzJ3MFBsSWE3TlIzMVoxZmJiS01aTFF5WUZQUnNvdFZySkVBT0YzSkhF?= =?utf-8?B?cnpaem81Tkp1b25mK2hGNzZJMjlPNU9sYVVsOWUvcER5ZmQ0b3JuVTgrdTVE?= =?utf-8?B?bGdTWFd2RUxMRU1ScFBObTdRRncwVGVOdy9MR3RsMXNjVENzRDFFcGZWK29K?= =?utf-8?B?aVZUVHlnVlQ0V2hkdkVIOTRrQ2kzVG9uWGRrMHdwd0lzZHo2UHBVbExZTUxE?= =?utf-8?B?S3dHR3ZrMFM5MUN4TGM2SXQ1SXlhT3dud283bWZVblIwODJlMDZqQytqODZB?= =?utf-8?B?T3BCTmNiS092N29jdzBRVmlkSSt2OFpaU3ZzZkFIN1kxci9KWS82M0tVOG9p?= =?utf-8?B?VmlzT2VwUFlWSHhCM3BZYkM3OGVBckZkTGhmcGE4eWpwZDYwbS9uNDRRZGpT?= =?utf-8?B?KzNsWGt5alNYQm8rWmxqc0lFdjdwQ2htQU1aVGh5ZUkrMXlCWVltYTd3eHpS?= =?utf-8?B?N2diQm5yQVBPWTVSeFJBcVlSV1JYYVRPZVR0QWp2WkloVUkxSDE0aHJ3SmRw?= =?utf-8?B?Tm9iWG00ZldxVzZEUkFjYjVYa2owTy9GMHp5UlQ3aU5VcXYrWk1VWlplOHBL?= =?utf-8?B?RVlTeURyOUZpRXRuQlFPMzdOb2lYNXlFRFRTRXd2K1VteEJEZkxsL09rdVNX?= =?utf-8?B?YTl0V01SbG1XcXFreTlrSjN2M25HRkRZODdSdTlTWWZtbG9wTjRYUElLdjVE?= =?utf-8?B?OG03QmxOWTlnMExTOEYrQ3pDNjVQUjBOSTc4S2VYTG1jTW5GNEIrRHdJZEpG?= =?utf-8?B?NFQ1amlOWlV3RkUyU3FSbFZIQTRqYkhnbGlOV1Z2V00ydjZMS1ozcnp4MFA3?= =?utf-8?B?NC9aclZFS1N4ZW52UzFpNWN1Y3VqWUx0K3g5L2JxYUZadGpRRHdNZkZyOEk3?= =?utf-8?Q?3inh9gKcnOYfrwGntoNaEz51am5r6OnQns9pn?= Content-Type: text/plain; charset="utf-8" Content-ID: <35B1A3E8CDE2764A8C7C878C7C8690EE@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: 7cf7922f-a136-42f3-8e6f-08deaf38ac28 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 May 2026 08:38:27.4521 (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: gP/1x/IxOJRplhzILhCVlQdlQJZ410lCzTEAb0qmZeFGRJcnq5LlXhVM4QC/C5fXR9+KxUsmwlpaorGExarTFsugovj7KCOu+ViJOT9xJ4A= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR09MB8695 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:c201::3; envelope-from=Djordje.Todorovic@htecgroup.com; helo=AS8PR04CU009.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: 1778492550120158500 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 Reviewed-by: Chao Liu --- 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 17:46:17 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=1778492556; cv=pass; d=zohomail.com; s=zohoarc; b=hiptN6dTNKy9SDzsTY1HF+ufW5XqKWUy7QiJ2hsEh524zODVPv0I6twcsjnI/ets+EvIRuzo+pW8898q0iAI3/bba2doAGIagFIyO1nK1t1hOVpHDucfOCMsmxnc/QpWc/cWgl5/R6QadzwfKfGobGtcvT5o++rzYVXGesR41XI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778492556; 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=NE+vNn8PeRI7wWwMRGxdRaEYX3OtV4cGGq5kgSl1Pw8=; b=TD7+Jyx+Vj6Aw6bhbg4gCY5Eib+pnvsVeFeiqZYAlI7W5+NTGzdvvC2uS2Uxan8Pf2OcjiVEFBC+v3FTIA+hjkhybR5f4jukT0SrUvruTf7CflhPUFRotfxoi8NzNvBsmDUu9UAFTp4xFGLy3KfF0lQG+Cp663aOt5Uwz/Ye5XM= 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 1778492556484983.3203467890085; Mon, 11 May 2026 02:42:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wMN8z-0002bW-S4; Mon, 11 May 2026 05:41:45 -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 1wMN7y-00022N-Oh; Mon, 11 May 2026 05:40:42 -0400 Received: from mail-westeuropeazlp170110003.outbound.protection.outlook.com ([2a01:111:f403:c201::3] helo=AS8PR04CU009.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 1wMN7s-0001RA-34; Mon, 11 May 2026 05:40:42 -0400 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com (2603:10a6:102:412::6) by DB5PR09MB8695.eurprd09.prod.outlook.com (2603:10a6:10:64a::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.15; Mon, 11 May 2026 08:38:28 +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.9891.021; Mon, 11 May 2026 08:38:27 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=oNPkvHfc4L1e0FxrMDjbd+zFDLVQXTkMLvvViXGFo986jfbgmuMDSSxnMfrrOM/2Gju6PlUVC0fWne/TsmtuUq47uyb1xjLgvmCcOo4zTefma7JWx4K6vRLDny5zbGGgsP0JnuSdATkxyLg8nofoFVTxlfCRQxrZrpVg9qEcJuuV/umeIO9DFTY3yJjWuXwWiM3qbQePmp8t5Fx1bxjUUSe+NmId6bputwQ1gqrdylPSRJT4r4ZkhAOznLh9ifY3J7+NllwZxQpclAFK+9VDJWuvvYn5DmaUKJ2btAnMV/6LUZpHf8B/xVKrf0sGMfXxMDADz7zZE4Q6qqGV3sijmw== 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=NE+vNn8PeRI7wWwMRGxdRaEYX3OtV4cGGq5kgSl1Pw8=; b=IZ0FxW0J2wPlhVE3mF8gkPE6mCcYAghXr33f7l1PAv8of8bM4aJB0oMjChYFQqEFxDH7fE/3v0ElS488cMlF/meSrpmDFMYH/F1PS0N6Qg/s3geVHOzZrbTlMhBWVu8Q0wMQivNp+uMqhb+s6KLM1RsS0So+dvapFz1yQVHtxdv2NdH767DQkxvgbihr6dZfc2X4kE5akl3H6/qlGFwnXCXRMefFkWoqWD8BayPlWixxCApGIyT+SpbzQhqv5JRTLGExGOXOyeK8mIn71Ff3eRFdirzISGffxDThAWtlqbxDpmNO2AQ8AYczVVkJ9d1ZOTPEmMk37jcOLrwOfpVO/g== 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=NE+vNn8PeRI7wWwMRGxdRaEYX3OtV4cGGq5kgSl1Pw8=; b=ISvVrX/HaZNQQ3BOuS0LMkngjk5qiqCMTjYwTIeOVnvdKU9BTj2GI45pDXlbsGuSrgTMat4kzUwCKBKE3RDK3K9t210WMSZzhLLY8z0ZQFb+kYoONPfyWEkyGpkTvjCSv7QhNCtb/K4BJRpUgeyKLSIa7oIcK+P8YU2nvBpokn2ooQPyfTea8H5V+rzxL9dCIuATWhE/1WU2dtpSLPeeJPNyxpqSoaZVWNMXMEm7qfhEmltlLWd99SBKAIR7JcC+4exATdb9hU+XV9AFzzQAcwVE/Dt44HLYDEDFt47/4/EcY7r4yrG8lPAs0fNBHCv3owhon2Hd+pBzo1zFqVwYkg== 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 v9 2/7] target/riscv: Add big-endian CPU configuration field and reset logic Thread-Topic: [PATCH v9 2/7] target/riscv: Add big-endian CPU configuration field and reset logic Thread-Index: AQHc4SGJk5eCu/l76ECEfDoZcXRzkA== Date: Mon, 11 May 2026 08:38:27 +0000 Message-ID: <20260511083819.206216-3-djordje.todorovic@htecgroup.com> References: <20260511083819.206216-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20260511083819.206216-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_|DB5PR09MB8695:EE_ x-ms-office365-filtering-correlation-id: c6320fb8-a5ba-46ab-2640-08deaf38ac6c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|1800799024|38070700021|3023799003|56012099003|18002099003|22082099003; x-microsoft-antispam-message-info: /GrLIeDnEXZbwqb6iQR7eq7ggrknsLizXxR6FfQs7mnCUC4gqOYXKvLlmQI+Q23+r38WZ44w0ogDdSaLnwrGMnNCHhgrUYp4eqnINo/aJVL8OO5Yl0MKKyCJnezySVshceU8wkobbYiGl/es6sZIxskdvic1fsE21T08f2F9Jpc164oIH90LsXKeUBXJocNs6YPprfzqY7IIkfENz8KfEAbbkwtUt1mhPb/Els8Xo89rIvYDGm2i2tviXCfiyYSZ/4CupvYdV9p1nlaIERyB5F0qhFrtX0+rCiuRg4g0CvN8R/7hvfUC+2tsCu9gwIBo2FZlx3YJXkcNsJkbbw081e1rL1wx85b0j26+FFFijFskMmOo0m0nVcMyxS+clAJdUqjB2j0JHk4DP0PMhtwzhu5hACNZbvA/+4bb2Jbtb5XAOU+1SZ46CKZKMJDzmu/JwdmEOsFH532ifUj05k4z3DARH/Fc/fI6ct+zosgbMZ6J6nLsfVwQXGD9jNo9g+MV4FcwJnCFpQWZxwobMW2mfrEl7ggTCy3iKRRj5zvww48d7yfWcAfFlcZ8utoAvsyLbj9PFxsnLX0bOjypA1KVZ3koyAOlzWc7ck9YfuqSfXwW5ktSW1KmCYDsQtKba7+FlCfnvtF5EnUmgBACdAE5dOmGM2aREioY6MZ4Q7PiKezg9T6B91WkiRz1dvDE3OMNZ5wOuIoAuzVG1EPuhC0uovvIR440sGOBTG1U9geKACujOx5NxD1WQgiQPE6afgRV 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)(366016)(376014)(1800799024)(38070700021)(3023799003)(56012099003)(18002099003)(22082099003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?wsvofMYIEobhs2tbxSCJG5a43YI4HYsp3kZMtFlDBFCwgvE+6ZdQT8KL22?= =?iso-8859-1?Q?97KnMRoIUKROf3iiV+rI0KuMghKyyR+/hs1m5+thC8wjEpLadyRuNsMHkY?= =?iso-8859-1?Q?CM1vhhG5uLBk0h72/q4+N/j7xAGStR+YeiTftQHctjr2YzVZGlwgmbAGBj?= =?iso-8859-1?Q?VKgwPCjrc4ay+tKlUS4W+EJ3ZzMwcYFnCIxLAp64qrDW/WXwXe/0GF6QT+?= =?iso-8859-1?Q?akN2VAc3aytEc/YevS7o2XzNCtQwSikQZzvBeFHGGsKXCp2TbboWSxA3eC?= =?iso-8859-1?Q?mWIWM5oPO9Thw9sW/JahLGSqRibguoGJd3/Kj4cly4IlP0pVqDlthSOwmh?= =?iso-8859-1?Q?+40nDDi27HeFkO0dxJ8NAK9MwzImGooolTuk71WzUZhvmGNEK3NAAUlEH6?= =?iso-8859-1?Q?YNwU4M3ZenbIStg7VioNiXxdZJrePi9vQsBoO4O9x0Pit9ztRSK2DAGAEn?= =?iso-8859-1?Q?rMQ8vCpJ72IZEcESTKFGhpcrLCFYRtOBPCiUgRnQlHmxvJlgGPPrN7wE3K?= =?iso-8859-1?Q?M9s8Mh3Bw0INYXjRvpbLl9nwt2l9eQu+q2pL6M7E9YAqo/WE8vII+17dSV?= =?iso-8859-1?Q?+210KP0Vf/ByqcuSD8qrcfe2NoJmo7EXkv7OArBzOWCCyHPcQeEjSVLB2t?= =?iso-8859-1?Q?FxyyG9+P6Sty0hJGGLj34ZmnknVUj/5TYzgCDQuLvfUM9lr5yAVk4jqu0h?= =?iso-8859-1?Q?vZ/tgGnZMzhvDAQp//L1HKHs0bIU4Ng9bhpK/JpznDN0PQoApex0+JvCDj?= =?iso-8859-1?Q?LhlZczuFlENJJFOfstRYy6segylBqXSlBEBCSYsLSCmJNIZ3BDikFPD4xa?= =?iso-8859-1?Q?nqmohJzbEHBVuFxIu61pYH/9wFd0GMpE7SGyMXPwl+Z+KM76a3SElhwF+8?= =?iso-8859-1?Q?Ogvsu9OcWaGvQqjsuL1lkGu22E2OjjhY0my8aUmb5OLxDJhbS7+gcWaGVR?= =?iso-8859-1?Q?+kdIdkWyPUWmgcdFZjLMcEIVC9AZSLo0cEa3kSEM5FtSD1M3BegSN2+3Yd?= =?iso-8859-1?Q?lfNegWPz22/e/o0YJUbpcUQ9mp50uimvUIUhd7apuQ7V7MIXNnSkYT+Rfz?= =?iso-8859-1?Q?CFFfGub3UZNiaOODRi4O7ZL7ZFJvPxQCjBYRUgAyJ/J34gGkoZR0SQzk6Q?= =?iso-8859-1?Q?eJuR7TiwJKVhQ4NGYvXyLz/f6ek03ZvD07KzDUgN4+/zMyEk4uFOs1CGYk?= =?iso-8859-1?Q?ll3NM9DjiMw5296Uit+XXmO21iebAJ0dXC3Y4knPZzdRVcpLm3q58Q0EsB?= =?iso-8859-1?Q?cFnaA9wJxq3muv6u0e4i7YhxRl9XXBZ9Nlq2BvsEAT5WZxONVL3CVhU+q8?= =?iso-8859-1?Q?glM3dk49XO3sNXUgWKCPSMWBUmweXvDT2DHMxZBuqR9kVyEJZbtsWcwsEB?= =?iso-8859-1?Q?GILkn0y19p1E0+9hQ+HXp9rW7zrOtR+PoCCEGmtEhceXI9Nr9SLSPnPWph?= =?iso-8859-1?Q?Hj6o4Za4f6FrFXDonKvM0PMv12niKwi51CliGacerAZp2Zoe9EHyiKMMk4?= =?iso-8859-1?Q?SR084kyDdKF86lvWpLoJJSKUDs4c5J0BZcNx5nYNj1d5xBDRZnGopEi+5h?= =?iso-8859-1?Q?mRlmXGRdyTtG4H/bUGku7+czeJAh61w9btT2dFKtJjtPAvkJsKy+QcvTPb?= =?iso-8859-1?Q?DgJWB7GYgpA0AGvsoANdCu0PU51pZZlWK3Ezo/P4t+PZpvfv+713IQzS9O?= =?iso-8859-1?Q?ymRUYZeMl8SKL7rghh04ywWGv/mT8UW0hZ3975YGYl3STcm1Lhv4qiEk61?= =?iso-8859-1?Q?4cz3/QbFxMOkJMogkXf3+a5yjoKQerGWQFiAU7EaBEEaEUodPpr+6r72gg?= =?iso-8859-1?Q?kl8gP3WxRs3czxZvTl01tw3WmCKWIramer8ITV5Utp9DEDqNYnYz?= 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: c6320fb8-a5ba-46ab-2640-08deaf38ac6c X-MS-Exchange-CrossTenant-originalarrivaltime: 11 May 2026 08:38:27.8601 (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: 2QdzdCuLzYKHJQpCVaeXemBa0JrabBcWtbAq4qsJwddPwJgCTF5zY3XUGUNegFOU0lOzKb3SnubFhRH5V9BYJsM1IhIqObW6ZXg/EW+Rdv8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR09MB8695 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:c201::3; envelope-from=Djordje.Todorovic@htecgroup.com; helo=AS8PR04CU009.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: 1778492558092158500 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 ce15a17c37..ae75019186 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -720,6 +720,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; @@ -807,11 +810,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 734fa079f2..9eb47af0a7 100644 --- a/target/riscv/cpu_cfg_fields.h.inc +++ b/target/riscv/cpu_cfg_fields.h.inc @@ -157,6 +157,7 @@ BOOL_FIELD(ext_xmipscmov) BOOL_FIELD(ext_xmipslsp) BOOL_FIELD(ext_xlrbr) =20 +BOOL_FIELD(big_endian) BOOL_FIELD(mmu) BOOL_FIELD(pmp) BOOL_FIELD(debug) --=20 2.34.1 From nobody Sat May 30 17:46:17 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=1778492517; cv=pass; d=zohomail.com; s=zohoarc; b=naKIAPCmoDZAfb7ZyYFnqEUbXtRYbZ1G9ekyBp87/UafYpHMlOYH7gPZ99UirNxA6h+N8jkWgUQkXxu3Afg2yAc2u4Gxa9rgtQ1zZm1I6idCRnZuMDDn6PWKp1UBLcdPq8zpeFRkBfNJtNrC4Gm/xu02bCeXqGpnfGwgYwDFA+c= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778492517; 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=3lPesuzBy9H6LEDKRzhMmyqXj332N4sgpkmVP6mVoiI=; b=PDKvRa0p+xgUQYE1t3h+9DFeHus2EFXXrj20UI8uIa0wMt0kXb4rlFHcpkiiZkhGkSplebjEdnHOsgWDdd2iDndg/o6KJWTh93mPk70vnPEsNWaiVY/GW/dHZBzK1VsE64/vJRuA6saVADxYNqzQ8MVxGsMlh78fpjTeCYZOU34= 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 1778492517312772.6521364830048; Mon, 11 May 2026 02:41:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wMN8r-0002O2-9J; Mon, 11 May 2026 05:41:39 -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 1wMN7z-00022s-Mv; Mon, 11 May 2026 05:40:43 -0400 Received: from mail-westeuropeazlp170100001.outbound.protection.outlook.com ([2a01:111:f403:c201::1] helo=AM0PR83CU005.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 1wMN7s-0001R4-2f; Mon, 11 May 2026 05:40:43 -0400 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com (2603:10a6:102:412::6) by DB5PR09MB8695.eurprd09.prod.outlook.com (2603:10a6:10:64a::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.15; Mon, 11 May 2026 08:38:30 +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.9891.021; Mon, 11 May 2026 08:38:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=zJ5LQ/KPBzkpNcJTIJIXYIpNlsHUHi1mCXGCFBVb1vLC2XtDlcsj6p+AHHIbWkNWmOMqmkNj4CRoc9GrshrsRFr92k/93vfwwER0B6x7wojHXrPCKjD2OHxyYPXxT9Yt2ju+5+7frPinlgkFtiuG2NHrRog0LebKe68aRrZf3N7UxYiVqo8zrDa27sRAlCd+jbuZDwOYXMIb6ycg/YxDKbjoWgjvHN1tGz1qUpL5x+F1T3VOIFp4LCj015zvvrJpxIIhS8FQn7+TTI5yZdlEOkTJZAjxWw8mHKPZ7EBfbKUpwk6gndkYDUJ1w/6gCdt0SGWRfYnXyfHB5GQmk0Z52A== 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=3lPesuzBy9H6LEDKRzhMmyqXj332N4sgpkmVP6mVoiI=; b=ni8x45lzCq6iKI0T9FKbRiEL7YPkpNH8aLHkNBFJzTQBGSLJOy4++kyoX7ZR4hus4TdgATRfonWLmqA1lqwWlFp8p2XpYnO6O03fUvhknX6uoECz0sRiX8eZG42g1jzJM0ASYDqG9KMTRkC/apXOigsFfTGxSURxkVc14Fm9psTdakFLy3spwIcWpbWYEc2liXDrg9yaVOZhKcKPOvscgecdOMTvqqhUWRSyFnggc04hgq3CufvoeUoudbpeBymuLz2z+aQAjigrc2aexauEWdIfs0OS589RD69Byu6dBsZDbCbVG9K9s35WSwaq1Clg4MpmX+fW4ofCMh31DGohBA== 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=3lPesuzBy9H6LEDKRzhMmyqXj332N4sgpkmVP6mVoiI=; b=J3E2F6c1TjtwwzjXQVoM3gioopFBrHy/+Penl9Yck+EYqjw+9XX3wLUmUy2C6KJc5aYhJDmZfz7XPwxHXHmOzA4OS7J6sjGjyXbv9ebhdDQGlMy/Ow1ityJHXh83HxwuY+rM6crYkc/O+ZLyaM/HqNLAUR0CZvirMGuEjiNIbYFg5fLiTz/YYDhiIdrVXKH7ktojrpDR/nbxvTdZgxoBlfk4Yl6PZIyvs1U7SKe8PpcTVS3eKcgB5Kp6AFujwlZfVHHlhcQfKawBllYHzsRMbKRBGN8fGVW7Ync/BO0A8j51gNwwfiHOq/tIp1PDEBDlBBaO4PkvPvw+87akHoajuA== 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 v9 3/7] target/riscv: Implement runtime data endianness via MSTATUS bits Thread-Topic: [PATCH v9 3/7] target/riscv: Implement runtime data endianness via MSTATUS bits Thread-Index: AQHc4SGK/6p98GtDO0yKUTC9payRhg== Date: Mon, 11 May 2026 08:38:28 +0000 Message-ID: <20260511083819.206216-4-djordje.todorovic@htecgroup.com> References: <20260511083819.206216-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20260511083819.206216-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_|DB5PR09MB8695:EE_ x-ms-office365-filtering-correlation-id: b6561598-6a28-4795-8fae-08deaf38acac x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|1800799024|38070700021|3023799003|56012099003|18002099003|22082099003; x-microsoft-antispam-message-info: duLw25uO/MJjawwFsc2bZmQ4JTNwrNCjWGEf3LVrrCew+CiDaVjpUjqNgnISQrtMzAqx7G78rPGwuQuKI5BGWgkpcien2iwQL1XRLEs/iN+uTJgX90l+1bATjq5x6FWj0TTE26hanA/K+5FNIgpv/Prswtje6fvHgt/h9i3CcHfqJ4y4E/u0IA7jGUTTs6HgpyG6cFAUnsdCe0xZzUDXRgZ/qON4fGyf5wHndjrJnPqKnpwlFFaLe8AitoSMbvmQLMyPSptH6xjDk6fWqRHG2UnNtKkkWAZv+EHUk/v+WUmsCP0Du5CoVpjZB3yJzcvcnxG/qDemcdkVxTrUGQEWr+YoupRtumsqjzQditP62Psx+gtHoXDQAxHh42/KqNjpry6rXTfqLJ/1+2vKI7p62mp+XyuN10MBI+kznQm+VseDaWoceckAOm2bKBj8AaExqUQTFziC+F1/IfTICQ9qRsLgPmv/xFyCqCce90zozrNVUq8FfFAHPznf4EQT2torqjP3rsZblUMOyn0Bn1a6ZjZUVazRrvwtyJUaA+sBgFAS+m1/9kt71nh0wYnZbDUNCo1OSs6NR1gVvqFjBwjTFMTMJMJG/Mz3BwmWr/AdPnwo1u9LnJYzO3iugQQMPwmcrRk5w07sheP1QN7l3cNH/ZPKGh/r8viHoHFvOrpOIY/L+G2/VzCkSnyECStbBmwfKr9gJ1UK2gCSjamXI+yc6QE3RDy1F+jV8PKRlelY+pmzmcgTi5CXyhiCJHfr0QkS 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)(366016)(376014)(1800799024)(38070700021)(3023799003)(56012099003)(18002099003)(22082099003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?l8Y6DYvmb3tcngvxHfBNyOzxT04NgEoep3mRM09KFpjwBWDSGk+OdOxml1?= =?iso-8859-1?Q?AFwKiA7NGppLYkVY6FjWcksAaHxQxcFJ/0XZj1gYSL+kWFgJIu/crV0tJ/?= =?iso-8859-1?Q?y7z3OZQ2yF801qYrIouX4tyNwEsdavuMASV/corENKitxV6o1OF65lIpQ5?= =?iso-8859-1?Q?6u8Cx0Hv0qIyuxPYMAYpvj7UxSDUcWqYK6S6tkHvKhykON83opCKS14gFK?= =?iso-8859-1?Q?fQxlXqtlWlCNWIuhRSDZqMA23Ehu/PfJaJVArCWQW5JNfXc4yKIh8qwbLL?= =?iso-8859-1?Q?sBiKmssjBHPJWPv9TYSkq3KaOX8aKyFbxoYJNZtZbQ3mFFUtcebXPGQUM7?= =?iso-8859-1?Q?moOx0JYleA+H/YSoU5b13B+Ua5TlJk8fPjAYOTvZ4BXa/aCiyKDN8Y4SNO?= =?iso-8859-1?Q?/hQEqVo/ykKl13XCdCJ6B9elNg2X8hlvPDAbO3hW2oNvwV8T/syQRKzKrh?= =?iso-8859-1?Q?JvjzoNpBqSCKmiwFby69T9+yoP+BDzQ7nw06B7umHbvWkjbHBt5Wbj1H6H?= =?iso-8859-1?Q?qusxglSWMWIxdKZ1LVLHVenNnGxCSBpFY/8HilsD8lZaOll3XlcM4jmnBl?= =?iso-8859-1?Q?mPLZWYUwl27gRubtdhpfcg9asXF+K8TzLkMoiTDWVaZ2gyV1xZyZ006iSs?= =?iso-8859-1?Q?Xg5yGUDIa0ICnxsQD6LBnQu/A/t941R5s6Y7h7jXEJB1HeXdSHmaU1mIrY?= =?iso-8859-1?Q?jm6TG7Ha57jPhdzrrzBZd8CPJLC3rHtiOs5rGtbUscpdotyKlaWcx6ZUmm?= =?iso-8859-1?Q?9sKdMHa3oIloYrH60eOH8Mem13KjgIOE11J58QDdnDWVCZ4HhrSgzzkAa2?= =?iso-8859-1?Q?0V7H/0aJoW+H6m5uTmgTPiUHg5eTJUFCzgtg7aLWqUUBpH1fDLjrySTPNO?= =?iso-8859-1?Q?0cQ5cahn6cPJUuhMxzB7fWyRT0TEQsb1v0GzUOlKdQPrQ7MDveWzOGQGGD?= =?iso-8859-1?Q?XdUF0O8vDFCHb8yJGc54g4mG4WTXQnN/fmTInYfGKPdbJ9VbjD+n0TT4a0?= =?iso-8859-1?Q?9965T6TxrR1EgnzjY/mCbaMNe9Obb0Uw34ibnwV57ICpFbIht4G+1qtts5?= =?iso-8859-1?Q?xU/t5xH1XwvIinLahB9uW0uJB7IP9xwYaEPRR7xERDrrEMSBX28haMKJoE?= =?iso-8859-1?Q?a68aD+WUNQ3aR+2lqGCV35SpaLSwE+ABV2NIK3vxrZlSY9/KKjOpsH6zrP?= =?iso-8859-1?Q?/VfEkLj0XCCuPUZegVyBhyQCiR67i0MXkX/k5mn7m+EokZYyyb7j1MeXO5?= =?iso-8859-1?Q?t5zAITsC0L8AlnYIFEbnbP9NhSu//mZEVWLrczYBa5+3wMjBtTLmiOD3B5?= =?iso-8859-1?Q?8IJyJL5oTrmPJUD4KZIPVDPq+MbTthTGY0WfZgYBNj7sWI9OpAitln6r+S?= =?iso-8859-1?Q?6nHMM3gqRiVav/dOOoVBTJiD2egBmTgMhxEjmkd55bPFi9k7iZucohNz1E?= =?iso-8859-1?Q?FPfIR3PdkJV2vHuG7k4kgchq6lznv9nVsy+aKjUQuxzXZwGjkdc4b5XiOl?= =?iso-8859-1?Q?W9jSFMEck/q+YvfVJoz2BiDjhIkeBJLVdZmlvUVzwfmfyTKMgHDhQP/G7X?= =?iso-8859-1?Q?OQRFIN1KCdBQDbqzQECkCNXyIHvyqzwElE3RlvZiMh36gRxDuEPPiswfDK?= =?iso-8859-1?Q?kYlMaoijqDzWGFS7zhCoIG73bjFUyDT6dmEQ8GNYavciU7kH+wxbw6y8/1?= =?iso-8859-1?Q?anPHbislN3nvA+0Kxcau+q3nVQ03hZS/OgUuX+6Y0XQaU/DDxmtO8ot+jv?= =?iso-8859-1?Q?+kmb1+2Ipc2fRP5H5Bm5fHuSc04WA40t3ZZl4PsOUMHXndM60AHSP129Q6?= =?iso-8859-1?Q?RwD8mUDOM56BCdRh5MP5BNzc8ubpiDcddx7fpHjDvyP7Af4BbQLU?= 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: b6561598-6a28-4795-8fae-08deaf38acac X-MS-Exchange-CrossTenant-originalarrivaltime: 11 May 2026 08:38:28.3000 (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: i/pir1qYHvNlDS6xbPPvxQwrhk1TI9wDaw9joLaLHdcDre9IR1pMNzMb3tfGC3j8b9nLZfFtYOWd6f04LOUpadGKqXWQe2N+qLudyrBwXt0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR09MB8695 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:c201::1; envelope-from=Djordje.Todorovic@htecgroup.com; helo=AM0PR83CU005.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: 1778492520819158500 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 --- target/riscv/cpu.h | 23 +++++++++++++++++++ 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 | 3 +++ target/riscv/translate.c | 22 ++++++------------ 16 files changed, 68 insertions(+), 57 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 81c41e3429..1f2d0777e8 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -705,6 +705,7 @@ FIELD(TB_FLAGS, PM_SIGNEXTEND, 31, 1) =20 FIELD(EXT_TB_FLAGS, MISA_EXT, 0, 32) FIELD(EXT_TB_FLAGS, ALTFMT, 32, 1) +FIELD(EXT_TB_FLAGS, BIG_ENDIAN, 33, 1) =20 #ifdef TARGET_RISCV32 #define riscv_cpu_mxl(env) ((void)(env), MXL_RV32) @@ -721,6 +722,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 62c0fe673d..44c1696fe4 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 bac6c8032a..dc505a9ab3 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 02c98cc2db..81b56e5a62 100644 --- a/target/riscv/tcg/tcg-cpu.c +++ b/target/riscv/tcg/tcg-cpu.c @@ -193,6 +193,9 @@ static TCGTBCPUState riscv_get_tb_cpu_state(CPUState *c= s) flags =3D FIELD_DP32(flags, TB_FLAGS, PM_SIGNEXTEND, pm_signext); =20 ext_flags =3D FIELD_DP64(ext_flags, EXT_TB_FLAGS, MISA_EXT, env->misa_= ext); + if (riscv_cpu_data_is_big_endian(env)) { + ext_flags =3D FIELD_DP64(ext_flags, EXT_TB_FLAGS, BIG_ENDIAN, 1); + } =20 return (TCGTBCPUState){ .pc =3D env->xl =3D=3D MXL_RV32 ? env->pc & UINT32_MAX : env->pc, diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 1e4f340256..35c6b37c0b 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -120,6 +120,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) @@ -127,18 +129,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) @@ -155,7 +145,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) @@ -1156,7 +1146,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 { @@ -1177,7 +1167,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 @@ -1360,6 +1350,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 FIELD_EX64(ext_tb_flags, EXT_TB_FLAGS, BIG_ENDI= AN) + ? MO_BE : MO_LE; } =20 static void riscv_tr_tb_start(DisasContextBase *db, CPUState *cpu) --=20 2.34.1 From nobody Sat May 30 17:46:17 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=1778492549; cv=pass; d=zohomail.com; s=zohoarc; b=FgdntYxmqLwmb30v/d3CKt1FzdEdi5W9iQeiU8E0TPjkovmDTL1opbyCmlCigcrCGYUhC7gXIeW+38xHV6TUDwPNBrBjUfh5GR4MKHvd1QcTYUrl7jNGKN92KfxoDf6EjDGeQYrwpdEQBz3RZSKMdDybKiaRZcCw0v4we7pI3KQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778492549; 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=jnMdg879MLQmlrTDWV1ZatqlH8cLuWshdwJGs9NbBIU=; b=mA3eTJCpCHORZU2S6xH5ywp0vWBDpwlNdnGvScxyp+AWZ1wozZyhj+l17qzQ0frTBRSnlsU11T+kb66kZfr/C7/uawDBHmZt0TWD2GO6Nr4SvzxAtvGlYH3mYkz472NEgVnOh2ChBz6fg9NfcRzBcDatF4rhp2wjslNW5mo9FZY= 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 1778492549108212.59563670195791; Mon, 11 May 2026 02:42:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wMN8W-0002G0-2M; Mon, 11 May 2026 05:41:16 -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 1wMN7j-0001tE-CG; Mon, 11 May 2026 05:40:27 -0400 Received: from mail-westeuropeazlp170100001.outbound.protection.outlook.com ([2a01:111:f403:c201::1] helo=AM0PR83CU005.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 1wMN7d-0001R4-Kd; Mon, 11 May 2026 05:40:26 -0400 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com (2603:10a6:102:412::6) by DB5PR09MB8695.eurprd09.prod.outlook.com (2603:10a6:10:64a::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.15; Mon, 11 May 2026 08:38:30 +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.9891.021; Mon, 11 May 2026 08:38:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=AQTstAYFUxVERC6Ej9g6X0UMRJVKXcPB5qd7Rs/bbZ5qb/1NRT8ThXPgTzu3f+ZyoulB1nmCJ4AqCIia7mjpYYhz79RXKWgFYOBNb+EqxeOW6jWdxIK+IDEXdEpb5bb+5wwUzY4FAXe2jLNOIEFaRw1Zo79ENPBo4rNpQqLJaU+LMeB6V/CJBDlIL8hiwNhpc71NYwtRCG2Q0XMcqb1div623o5tMzA3EC6l4ZEQziQSIf8hSfmoVB3OKzhJ3mdw4rgxiLWe4XtJpCJe8hQitG3YvVwoNctgWxaof+0scRTVbsAbil5CbtXVTL8ml2yRnOEeRlHhZ222vZ3SESlKCQ== 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=jnMdg879MLQmlrTDWV1ZatqlH8cLuWshdwJGs9NbBIU=; b=pZOmy+7EzS2bpJ+4vgvkEwCHRUK2b1oCpzm5RIR1vBhAiRIELnCY54fLG7lVvQWJ0Q204GyyYUq4EZoXVrz8EMTiIqAZdj/MBUQMQfN8HOFoNVjGtkw9GsbvvMGMCqe8I9WUojxAxpCTbA5Sgnu7NMBFe5hpdtNFtCkkLL0joaJcVCm+jBJJxOpQUDsWW/i4alOZhhJFOJaV88Ex8NEII20AoKkSIarls3Z4Jv2xtai72AaXPCn/KHUEuAsQFHxNyuDhAW7GqqszAWNDtfyTUm6JMqfjIw5vGDONNZ3HXYtI3ZSy6JAsFkQOnUuKLhBlEurCiz1TC/WWkWJkjHzgmA== 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=jnMdg879MLQmlrTDWV1ZatqlH8cLuWshdwJGs9NbBIU=; b=BkIjlBT46YzkPxp9Obpnu7AGKUjTbCvyrVrH0hO2VRnyZK0+Ut4h4HBxmLzlYM8l/g0h5rt5KDBWn8ZmtaG/dFdduSGaxRKU4BsDTvKHOMBgGAuq2+ALcs0OJ1LKxJLukO2k2rrFbS2l9zkqKOoXnwjrt2ZJoUxlQn+rqbApGyPLkC48XclfVJw5Nv5NrqPanOlFPf8BUhAScpKCw6g5S0yrKvBFExVGM/8zv6D7TUlJvytqCQ3Nj3tpQlpV66HPvkm07gBCnIeS8dwYtjjCUQYrzW3xrIg+UtRpr4CW7EnoNm8HCRFi3KRsGdtNT2Og/e6cFYphuouCB4GImjnZYg== 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 v9 4/7] hw/riscv: Make boot code endianness-aware at runtime Thread-Topic: [PATCH v9 4/7] hw/riscv: Make boot code endianness-aware at runtime Thread-Index: AQHc4SGKm7+O3f9aq0qJRDqo/tUBcA== Date: Mon, 11 May 2026 08:38:28 +0000 Message-ID: <20260511083819.206216-5-djordje.todorovic@htecgroup.com> References: <20260511083819.206216-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20260511083819.206216-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_|DB5PR09MB8695:EE_ x-ms-office365-filtering-correlation-id: a71d8d8d-7733-4721-0b6a-08deaf38adfd x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|1800799024|38070700021|3023799003|56012099003|18002099003|22082099003; x-microsoft-antispam-message-info: trecHGenZjEHjSVnqeXPmVk8w3zvZAfFKB9YP6PYmr8T/V5ZOibY4p+s/zsplbVIgrrQC5fRhUdr3ZajP4EEIqmNafAyxOTO//6sZ10MykPlOnhaPOKhD83dNIMoff///j4IH2qs6sHiHklv58cQUcKUg0EwcVW4ydUok6gN6XLD/ewAcD0dGqGfysccxtyHLWfZqjrewkp9eiQXhD5MVa9xKPZc9fdShNrk6XnI7Uyx22mAiEd0j7YGS9Rd1AuoQNLMK25i7/ZSG86I0PQXGrzxBgI5sGZOM+KvxdqaMa8qqSBkGfm1iv4rf/sPPdrF0PZBxLGsXknIILQggDVQBT4FlsIhansx7s7TzOmDnGsv45Km7lKOCXiU7NhEMyWSTERIoxzio+AD3k5FAgC7uamSOwW8DbdKVrymhdBV+ntf39CxnMQhmG8VXltAOBgBAqBhhsm1ej7pJ2Orr2QHcxCegdUXZNGjsCyc3b1YDpNc9w4Ma0cUMizIs0U73c4QEEiifJjdqUjPMJa4YRtCJbXlX/oE/lU0tbmP1qc1qDO7QQxszRnLxeHgTz0Cg/evcFr+7oGwKByvj+2SfUv4NCkyvLpGweeT/piPbyBTmgHmmlXup2NhG4F2fPK+SqF/IeIFk+UKcnZeBQak8+S13cgruIqgLKK3rSGBQrbd+6S2RwHCK0EAhkI0tAZZbJQXpz+r33oVHwKTijb1l01pY8nlzDX5GxZylVzGXtIfglHjusWIzcBsDMUfBkL/M1W8 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)(366016)(376014)(1800799024)(38070700021)(3023799003)(56012099003)(18002099003)(22082099003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?e6nM+mdPVAFM4zZiz+o/EAYEKi2sf3R7VxxXkUVn+N0Dfcp58ozAOFw6n2?= =?iso-8859-1?Q?h/lx3RHHQkmXuq3vbSADsQ81UpiiKmJcIVCHvnqxl4DX18RU3xXOJEO5dr?= =?iso-8859-1?Q?UrIekKFaJm6ovVtZeHEMB7lj5evRXpmnTPJ1BP3Q3D+/k587Q7+vk9u1F4?= =?iso-8859-1?Q?q+Z/rt/dMGlnUykN9mpp9XahUunZ6n0/vCf5SPHnKIsfP6O3FjuiJ30sc+?= =?iso-8859-1?Q?uwEdg+mAdBXfVPvLbp3/qMDMR+YJ3wqLMA6yETLfKFlPu+FjZHwVr7eKYV?= =?iso-8859-1?Q?etxbbB2P5w4wBRzhLQUBMZQRPqhLwvizFlORdLrAo5MJw0B2BS9YaqkWuA?= =?iso-8859-1?Q?aEzlFE8r5PG6rdlnqK5o4L1ss0/DbyOo9lsAU/mrVYS1pzmalJHp6T9LFf?= =?iso-8859-1?Q?y1lZb3BEtPpxKciVKHTai94X/kbMvKm0YoVtzDAkSpPW4AGwvbYpsmXihq?= =?iso-8859-1?Q?LXJ6qzNqvWX161d5vK4s6iOVnvRRaVF2WzeH9TKpS/V98riB2PR6drF6HD?= =?iso-8859-1?Q?nvmLu7a/+DIT8vt1D4tA4pLF0fF9aQisYXJYtcJSUSrldmSDiWZRYrvFuh?= =?iso-8859-1?Q?xzEolJykINGEMkcg5NTbmJi2nqh4V7gxouMIaXlBehzi1mbwCuhUhLwuX+?= =?iso-8859-1?Q?nhqawIzDguuFm/Fn3ZFcFubrYfZgRBO3GFt5nAxDUqEx9MWt8t3jN4TuET?= =?iso-8859-1?Q?dINTsuj0h+Sbi9lS1PexYg2hESMZroXUfBy/6sn1qWPGCfZXPSDMpByA4c?= =?iso-8859-1?Q?vc7lEkp+Ylg6i5sVYtFuNf3FEzYW8ejMPe2oXOP/RHonUVyCJwc/toMrOT?= =?iso-8859-1?Q?0HF3A9fICflY7oci9QArYXyLbGRyvBPT9yufY0NZ/1V5PBapwKvg32GQYs?= =?iso-8859-1?Q?xuZIwieaNtnfY+j4+W15SKtNyUR7IWhvKhxEh5Cc+lCLivh1ZAbOonNehR?= =?iso-8859-1?Q?FS6DmlGcgt0ReSFFlncBT2NkAi5qkH0l4YsZFklhFH6Bz2mEDMhWzZyFZi?= =?iso-8859-1?Q?xtuBgm4+/ljdwMk/p1mmaaIXGOi679peboeJwiFJfmHrTrIFfdz/tmp1pA?= =?iso-8859-1?Q?5RMCYqv1/jOXUBIj5ndovhxTiXAFONmBhPt1hgwYEUap38jOdySinM98Wc?= =?iso-8859-1?Q?XJQ3LKn75tRJkjF2AWfSdXnrAdNGMgkglxnSu8H3vtqccuUIsPCSYNQwZz?= =?iso-8859-1?Q?CSbmrGtIUjf91DBuJ7hxQF47N5v9LIekZJIf4Li85LuYV1gR7JOPKjWk32?= =?iso-8859-1?Q?I4WbyKTXqA2AUFtEcoKZN+T88uWXna5ulHZqPdtSTlcWQ8+IdlNvso6taH?= =?iso-8859-1?Q?E6PXz6NO/21e/C1XZdVCsN4tBpRJdtA3ao6lipT62TJ4rAWxcjO1+zlJDO?= =?iso-8859-1?Q?mhKtrDzlDahxzsk4gyB0O6j94Cp2J4wjv21gTO/rMWrLSx3E7Sw3dFgLhP?= =?iso-8859-1?Q?gNtvwymE8zv3uj2tuHRmeHUP0BmXBbkjqqqs9JV7X/qem0N5Icag10XKVt?= =?iso-8859-1?Q?A1MiPuBmm/lVoQKaquwN2xJvR44/SSjlUou88JcEfczbkBzf0QniEQwWii?= =?iso-8859-1?Q?sudi49MN13GcT906eAmBZovVBfpJHNgxLtMraW+AiRIvsH2YkB0wNcfD+O?= =?iso-8859-1?Q?AKt9kfG9BfZdOeosoz1+TjtQBufogZyE7mOqnD5KlRA66t112jG7SVJIKE?= =?iso-8859-1?Q?Iu/F2oUgOSV+9hG2sijGjHZAXlYrUq8GmztTd4JkOw5b17uohkSXMixP8m?= =?iso-8859-1?Q?Wu5m3t9MWCP73FEHwAlnx/WivPyQCFHXR1G9VyK5BuO9YM2U+rqnGZg/Bq?= =?iso-8859-1?Q?qAf0a3vQj6qj0nqjGZguNsxtQDWwvkq7dE6IC9eyPA7PPBTaCyy8?= 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: a71d8d8d-7733-4721-0b6a-08deaf38adfd X-MS-Exchange-CrossTenant-originalarrivaltime: 11 May 2026 08:38:28.6980 (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: l9513Kszp3EA+ytLP2AC/+4bel7Jctk0Re7NImlgVt4EJVCG8Q51WY2/KtD0pBO39aSiPwz/f3v+nXVaR7pihNw5Xf1mpmrbIqccV77SEPc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR09MB8695 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:c201::1; envelope-from=Djordje.Todorovic@htecgroup.com; helo=AM0PR83CU005.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: 1778492550200158500 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 9086793b7a..37b8f3dfa7 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()) @@ -262,8 +284,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; @@ -406,21 +429,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; @@ -489,10 +523,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 17:46:17 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=1778492554; cv=pass; d=zohomail.com; s=zohoarc; b=n/q/OrkEXVo1QMeB+5bRjD3NaCac7scNdPqt4WnCQwqOvW3GqaMYgOS1r9hrwhvwa+AnvA5CLGb5rC9SENbeouX/K0kCB0JO4tJInkQg7hmhyQH7O2qoyjTObND9bn/ZAqQv6GOmMEZ8qnS4r7rwxlvvyGTW9Sqo6oMHng08xfs= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778492554; 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=CBjW1oJhftg8bgEbtsan9gmAdg3hteb6BLqkqe4Tq94=; b=CmGQE+l5zlQGnJM4o4u5nyqWhAYuC0pH6MYBJpwssRaTD3lDqw+pBuxjGBubgWLeuvq/KyLtmTwfJHjLoUqgTij2KyoGDryoAb3D3BJpzoD4JwwQZF/EdK7xZ+HZ/OU0dnktoXzzxVs6GzE5F3fejC+/JnF0mAZ3hcZT9ULeiY0= 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 177849255421483.50667407252718; Mon, 11 May 2026 02:42:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wMN91-0002eU-81; Mon, 11 May 2026 05:41:47 -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 1wMN81-00023d-NS; Mon, 11 May 2026 05:40:46 -0400 Received: from mail-westeuropeazlp170110003.outbound.protection.outlook.com ([2a01:111:f403:c201::3] helo=AS8PR04CU009.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 1wMN7z-0001RA-MO; Mon, 11 May 2026 05:40:45 -0400 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com (2603:10a6:102:412::6) by DB5PR09MB8695.eurprd09.prod.outlook.com (2603:10a6:10:64a::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.15; Mon, 11 May 2026 08:38:31 +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.9891.021; Mon, 11 May 2026 08:38:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wWP3Y0xGTSCxH6V3VNbficMeofBSfwBVOv01fuLoCfOPjx846csxkbEg+FO7CpvNOAzRFBza9CcudG55m9/X2vmqg4Iujwc2hEY/LC3pJJELCy7uLl90MHe9gKevxhu2hpG9UGTPNvLBu4wB0lhxiGZDJkvhi32uWHJ8ApoF6tTPmaFR8dnulveJ0phEQkMIwWlViT4SGRR34t6AMi8BGwCMR/3fMxZ2s9ibvQAQz1M1i7X0pJDK2rioLgX4QfDmy4R9Mu0dmAGjL5xbuvFZpRq6bkCR/YmvntOQ59Gr/kTPQJNCDUfLwKA5uW3neK09RH64VDVLv5h4VOhhfJQPYQ== 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=CBjW1oJhftg8bgEbtsan9gmAdg3hteb6BLqkqe4Tq94=; b=IN6FFEbRFum5G6oz52/r0nw0gT9eMgnKlVjvv94ALfIR0GfxH2glryQ1vCbe2HKi1Ww1GbhmpOtGvdgKiG/+jI8wE+X6bXfOPQGRJP1zd4Fp/ntUEb/d71TPrCQ5RFyhQgpS3yfIOd5xn9vBicOGA4fr1x2CrtYbZMaIAsAORbhvkobzyQfUcxxojxh29j4L7TeUfjGA2rpQQ18tqAITjYIDjJAsqcasJbFYO9KxJI+eEp2UJFt/R6YRkgOXerpsph+YFGZGpPwy23tnuNQdjIDjqflPT/7tUu3JeZXMS5P5vJofA6EP6TDQ6PpofIV/q4SkAl0KTOWQtA2PDM+WFQ== 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=CBjW1oJhftg8bgEbtsan9gmAdg3hteb6BLqkqe4Tq94=; b=IjEoFhChBea0m0YWN5MHG1KvZi0glRnQOOVC30hQPLICQ+P7gJLTnOBEpg08a/ZlNpEgoUO4n4Bh7Co65+fvtLOUskhCV2RjdxmXl3UC2bZgglGA9O3h7g0Yug+fVYMrjw/6gcCslN3cCV4I8lgL4WTHBNEq7UV9N6t3qEKbnGUk+kPBn0oU1gb4JuaergnbLGKHyPDFhcgLolG9ngbSWlwr5LFZIEJ3TxxWFtEawAujQJShSu3WIJZiytgblqb1WNYkQQQT2DmU2l26UVQwVEO2OukFein5DhRhhBVj/fGs9M2x/21+i18vDBS76uuuYsZEVwd58VkRiOlXblA8aQ== 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 v9 5/7] target/riscv: Fix page table walk endianness for big-endian harts Thread-Topic: [PATCH v9 5/7] target/riscv: Fix page table walk endianness for big-endian harts Thread-Index: AQHc4SGK0JUQ/DW2t0itnij4kostKg== Date: Mon, 11 May 2026 08:38:29 +0000 Message-ID: <20260511083819.206216-6-djordje.todorovic@htecgroup.com> References: <20260511083819.206216-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20260511083819.206216-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_|DB5PR09MB8695:EE_ x-ms-office365-filtering-correlation-id: 0f0e71a8-0d88-4262-adc0-08deaf38ae39 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|1800799024|38070700021|3023799003|56012099003|18002099003|22082099003; x-microsoft-antispam-message-info: YMn+Eewy2ZAQDcG2MHDZZCx+C6sdXbjSty4DAEKZ3OOU60ivo7zebMZw8dhFVpTdd5WkoJmh9mOP+VbPA7mxfCzvcf8SrhGjEXRb99TeQEl8P1Hi7vx1vZg2Hl+lXkgMDapYEKewhoBNk6V715L9r8K+YkWURjtru6aIY0wOHUBErsNEC/thNgpWqJPLrm3rM4DVv1d2HLpqJ/kpZZVHSqxlTLovm2oVpY7Ts6ZKcOJoIBQwCv1tXaae/ebcYw8bpMK0Q8n7JgsAYoc1LM2jVekAsKh1WfQ+4MQ0d1n7PJ8d8qu60GvQajjqIjX4DIR34Up2giUxr/F49fXmtmaSZo8i/Me+Q0cAkoaN0aGmHuYoMiuZRvRTsZBIyp2kUEFEkurvvXb371oZI4fcKG6fwZYkytmZX9hZo3WW5mheuPAYfPfEDb4OH6+s4p1/5/ioTYErLZSlIeTnRkpAxxD20H5oJF+6D24AO9VTCO2lKnRMOhnKtBuOPCJtdm1vkt1gR2fLBY9besk+UP9ls62kTs5oUmZSDRs1/4E48vvozM8HqKLygxaJRyQw9ICYkrPp1S3yn4zAnTHp44FNMG2dWEv+FopcMXBiuQjcmNCYgbfahMCgzaiCsYw3OlQezD0lm7WUCserBlAwXx2rM5BLZaILzQ8TV0rRL0PIBOYbl7C0C4HifnTl0zAeL8lRKqv83DWvGpo5fiUjnsNaPN6PzlptA1sKbIXD0ZK6sShSRpNibGC8lvDxUG84+dkbTYRG 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)(366016)(376014)(1800799024)(38070700021)(3023799003)(56012099003)(18002099003)(22082099003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?eDNOd0pERGxjM2hWeXhkZ01iRDlTZ3NyY2tNTWc1Wm9pNExMVTFPdGpoYVJG?= =?utf-8?B?KytudytGZ0hoVWpFbFAxRTNaeVQzUFNwdkF1MjEvMTNMYWs2TjUrblIrVHc2?= =?utf-8?B?Rmg0azlOY1lMQkttQTVVS2x4R1c2T1JOUnNqWER0VmlwaVRlREdZekRQdVVV?= =?utf-8?B?NDZqM1ZKSE5FQ2d4aFB5aE5qbUhVQzRIaWkvSG1aS3EzUndPUnNKb2RLbVBn?= =?utf-8?B?ck5jc0tLTXdIVlZxSkhUUkIxbHlFMDB6dlBSemN3VGZyMjdpK3dsSkNReDlx?= =?utf-8?B?NlpUZ3hmOUdWYnFCZG1vZTdOb3RuUW4zWHB1RWE1L0hVY1lCcks1bGIyVk9a?= =?utf-8?B?WklYRlE2d3RwZXRPd2lJOUY5UHRtN1NTaGY4cXM5K2tia2dJZ0Y4ZUNSMXdZ?= =?utf-8?B?VWtXc01IZEE5Sk1KbHJ2NkEzVXNZRVB0L1M3MDRPTWZkQUR6RDYrWXVrcElm?= =?utf-8?B?VWloMy80cjFGZjhuRVZUamdjMENtQmxTeUJNSWNoN1c0d1lNSnZEc0wxaWdM?= =?utf-8?B?YWk3TXVPUWRzV05JeTNIM1pnQ2pBWDhRajF3dk9pZDBCSzR4T2prSksvM0ZO?= =?utf-8?B?aERRdzNzbHBmakZZZ3JpQVdWSHE4OGJWU3NZUUh0L2F1L0tFcXVCRTcrKzAz?= =?utf-8?B?dlZPWklBaWVyR3AxSTB5eHA4SDlDOHRFNjlTNldEbHBZZFRxbUlBdUErTnFl?= =?utf-8?B?NE5nbkdLMzdCeVFVU3NlcURaaXpuaGtrNnRmeStoa3JiS25LZno5TjJVYkJq?= =?utf-8?B?RUtzZkJXUC84d09Gd01mL3hmNWhJMzNLQ3dtZ2VkaWRsNDQzQ2VhMWYxRjkw?= =?utf-8?B?ZnlsNmV1amFjU2o1R3hXTlBlWFpvSlBQR1Z6T1N5OFZKUXRBOE13bS9hY3Y3?= =?utf-8?B?bUxOd2Y2R0pCNzBFZ3QwbTR1UnhyN2ZiM3NpWFE2QWh0aS9rQUlmNCs1S2g0?= =?utf-8?B?TUlCUlJ6bThXMlNNS1RNSXdMUWc3bk9mK0JIZldqcWxpTkxnQXcyR3RDN2VN?= =?utf-8?B?ZHpXOXpqZmdTZThFd21ZV0ZPU04xenIzenE0QkpEelF4ZCthMmtsVWp4VDBa?= =?utf-8?B?Q1ZPL1RmTzRhbDhJSXNoQ0JPc01jcmozd2xrT2NQejlqalFVbVlWaEVmQlVr?= =?utf-8?B?cmRZWGZCelhLOXhBOHRQcDl6RWxOczJsNDRXUU94NHhGdmpjWXNXN2wrRGdD?= =?utf-8?B?N2ZWalQrRHo5L2NIK3ZHRWlvM2NndmIvd0EvQkJCRU90YmNCaVF3ejFGVHdJ?= =?utf-8?B?QlVFcXdqS3BwcnRCVXB4TUJudU9RN1NvdEtkQUZKOTFqMWZLRjdTVThnVlBD?= =?utf-8?B?SXJ6TXIzMGxHZXpPamhKaDhvM0JmY1VCUThqZUlZbEFGeG5BYTFQVW1Zc250?= =?utf-8?B?QUNzR3VqRzhRTVZwSStvRjU3MUxBNnpOcGZVYzQxLzdoWnJOQjhwbVlwSG0z?= =?utf-8?B?SEdDYisram96L1JpYktpMk5EVE1EVU81ZmlaR0E2c2N2MXlpMjJrTHlibSti?= =?utf-8?B?emY2Mm9DcnE0bThzNGNkVUNxV3B0cnUvdGFra1Jyby9CdHZuMVY5cDZTTTUx?= =?utf-8?B?cFIrUnQ0VWdkSjFweFlITGNBQXQ5WThjT2tCaVZrSEFoclpBL2M0SzBob3k4?= =?utf-8?B?SjU3TW9yYmVxTklVN3NSQVhPUHVrS1dFZUFCOVRhVjZXT2JsN0RaMWpZWVdy?= =?utf-8?B?eGRPNGlKeHUyK2hpN3Z2c0d2YytBVStrblJOWHoyL1pnZzE5V09wL3kwejMy?= =?utf-8?B?Qkx4YlJEeElnb0NtN3pPQlRLMndjSFp4WStKOEhuVkFyQzJmbGhuOTZKYkRv?= =?utf-8?B?dkRLOWx0VUh2L1FoUGEwWDhjVkpBNTYxODE3bVI5YnNPRUxkcVl5blFjVHdG?= =?utf-8?B?MXhmbGZUNHRWbEM5cWhoSHVHTG16Zmtmem03czJiZ1ZzWVNkazl6dXcyV2hv?= =?utf-8?B?YmhwNExVR2xBYzZmUERsSUFRaUptYWZIUEsyUnpEditsMGdzVksza1lCdGg2?= =?utf-8?B?clF5QmlRcUlLdVNMZXllYWZrOTZPUXBLVDc5dnphTlNLa2FTOTdRNXlnbVNY?= =?utf-8?B?dGVDSXJDNWZxNnRDNWdXcy9Zdm1hR1NMbEdvSVBVb1VoZXF4aC9jell3YnN2?= =?utf-8?B?YkpoQWZROVEyNCtsUUF2QWZGdTNyNGhYajRSNXVraTZkVElYUTNhQ0o4RHE4?= =?utf-8?B?UDBSeW9DQy9paXlLK2hLeiswZ0NKdHdhK2srYkJBK2plVWs0QklVTXVLZ3pv?= =?utf-8?B?R2wrbkpTS3FiM1BiQWg2dVl6WlBSb240M21OVlZsRlJjUlVmZHdMWkJTMHRV?= =?utf-8?B?eU1qVjZJZmRnZ0RMQXp1RjdtRXBCTlFzemVoNHAweGF4T3hqNEdhVXoreGVw?= =?utf-8?Q?tfuUehhJ+uBJHPPMNORBVZzE3hKQmOvarBkbL?= Content-Type: text/plain; charset="utf-8" Content-ID: <931636DC2DDB29449A217E5CA134F7BA@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: 0f0e71a8-0d88-4262-adc0-08deaf38ae39 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 May 2026 08:38:29.0479 (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: UoZ+TFW0x/25n0La3JnGOX+s5sCG9Bixw7/lUE/BrWV8OmAvmqS1hRoMax1Rnt9l39LMws4R3rGGnUBA7dlTPgiPAyTxgi2/wRzaddiTAFk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR09MB8695 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:c201::3; envelope-from=Djordje.Todorovic@htecgroup.com; helo=AS8PR04CU009.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: 1778492555598154100 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 39c3486ae0..4859b8dd5c 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -1418,9 +1418,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) { @@ -1619,12 +1623,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 17:46:17 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=1778492562; cv=pass; d=zohomail.com; s=zohoarc; b=kLJXYecXekXPGtWXWbd4C84FOFomSBu0nVcn5xj01yBNX1NceIsHPuBxGIHvxBkiSbFRo0fVxsXpsZJNXHgQGi0qYPZD9eAjnJHu9Z6Spsb48ubCwpI21O/zBbw/9LSVTVEVMaiwPyWF6/fbOHsfyB7LU94X+XfnG11Z2b+hdSc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778492562; 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=IZg8D90wK0PAzQ0/I2lP+WzQ34f54PN5ewMramnY3vo=; b=CSNwdQLCbuWC4W0qVxUtefEcgAeBWTcBsyocw6ghwCm5EGCKWP7bSNNEFB7QPSxOHc/ukO1E8ZXPSxjSX7MEEsow3cPWPaaV/4d5ktipSyJUyEzVOM6QAJHIr4Li+7b2MbrUCS4l/V57iXvoGMLrHeZOzoxOaRwcXq96vr7MTNQ= 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 1778492562853324.00070240382206; Mon, 11 May 2026 02:42:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wMN92-0002fk-1b; Mon, 11 May 2026 05:41:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wMN82-00024U-RW; Mon, 11 May 2026 05:40:48 -0400 Received: from mail-westeuropeazlp170100001.outbound.protection.outlook.com ([2a01:111:f403:c201::1] helo=AM0PR83CU005.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 1wMN80-0001R4-GG; Mon, 11 May 2026 05:40:46 -0400 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com (2603:10a6:102:412::6) by DB5PR09MB8695.eurprd09.prod.outlook.com (2603:10a6:10:64a::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.15; Mon, 11 May 2026 08:38:31 +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.9891.021; Mon, 11 May 2026 08:38:31 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uQagcscvnVKJFZheMOCTIKPDOh8pg5uAiQ2X+q0hHX0dkNK/DJD1qLz/zfy3DYHR6bB9TdtVS4m4bBBhh1NPWauKm4LMEysR/rqIBMRPaFk31bQld1tLo62XIMAZ9ujJUNeXgU4iYbDU9eKR1itxQ+qiUlauxVLEt+FncjPKS/ALzIKikTJmxiNmv8K8LtZoDWXXOyvAnndGUzwLfKIR8wyDF/eyHf0HGHxSuPGQ0JCr4wFxh4Wc0qAswlc3qrfBvlnNN0H/+lgvbWWH6Rphf+YsjyoMIvoCO/9BvqE2kfnzbV5k+kFiLhIvOegt97K6eEW6ZjG6Y59H/fjcvZlzsA== 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=IZg8D90wK0PAzQ0/I2lP+WzQ34f54PN5ewMramnY3vo=; b=Nb8vvr2TBNmopViJ9z7XWEs8GuEXV1nX+UD+a/74AIq5L/s226hPjVTV3Ekr/b9fOjvh1SPsnWZnNX9DDlbDjXmhd3eCR/5o/TQCQAZ3wUxSPdMye/sl39soAERGDICAPh0vE/f/jbWWQ8GTTdP72ZFsfQ1JkdRFGzgKvodIWhdrIaKpBSlhN78wl8V0v7JMDyazUuPv0XgsjwI81MHgTn8zo+rVK0oaJ+/t55l2E2TNcLIYl8PYWLH27QQySsVJ3zbEB/6tvU5Yql2010jMws26gE74k8SAsTWyem6X4bYNx7QwI3lKqkstzzBLRJjjZhZ59AutxeJ1zZUeGrz6Dg== 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=IZg8D90wK0PAzQ0/I2lP+WzQ34f54PN5ewMramnY3vo=; b=IrOqeJ+u6ezovLre6V3XpDk9IiznU3EzxG4yWVtw/7yoswKtZgJ0I/kWsW8+yFBFQiMI2RW9FTJL9muDxBpofee7KkNY6mauLUIO2gbvmfHfXclABBBPnjEXVi6EKHRIYvSMdokK7bH98LpStz2Dr8eM8bJOnRggGjcnBYna7xoXVPurt/5N1ixMPM7Kt5IZcG76ruERiumxfzEl+A/Xn3ry+I+FiFZc4lggHtvZmKfaaHsfpPi1HG/Ip77xJfuPS/EZ1zaqOn/oLBXaNE98EZ52Fpy/gPNYwDaWjT4SxjtydXnIE8FBYbSsDv04KaM07flz3Vbc3ojKirC3ObIiwQ== 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 v9 6/7] target/riscv: Expose big-endian CPU property and add documentation Thread-Topic: [PATCH v9 6/7] target/riscv: Expose big-endian CPU property and add documentation Thread-Index: AQHc4SGK6m5EzLpZZkmRXit4jII5EQ== Date: Mon, 11 May 2026 08:38:29 +0000 Message-ID: <20260511083819.206216-7-djordje.todorovic@htecgroup.com> References: <20260511083819.206216-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20260511083819.206216-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_|DB5PR09MB8695:EE_ x-ms-office365-filtering-correlation-id: 1272d9c0-35d7-4df1-8436-08deaf38ae7f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|1800799024|38070700021|3023799003|56012099003|18002099003|22082099003; x-microsoft-antispam-message-info: Mq6HKWqrZofWDoV2YbPJ4vGAP9XGCy3+Z6eECF3hcVtkCA4wfgbxEAURY8yKT2bE1eIpFKNvbq4qg3HVHnpX4PlOX7apV3MdTC6onh7WMs0Ep19MpcWSLsE4Dxl8JgLE+l3jaYCgIKBdb644tnXCsBerDx0NuKu0WYb1xA3uUgorbQ9K9RSHS+vw/Qas9vGB1nJ7YzHkmKr6rBr1CL1h+CTqcohvny5xaqt+YCKv3q1cAFMwlsq5aKPBIBmgoGcb3as8tWrPs93JoVHyYZrI37TjnaO4C24oJmgDPl5veVkIF1/EGr1EVguzkI96pGPVPg70p22DPu9cvsqBNQ9/hC2KJQV0hdHWqB5LTHhOOiK+HXpYvAg2cBfiRSfYT3X/RrdRb2REOr/ilEwQ4Fcj0oPpuaj4GaYioGwqecK9oq5XJ4/nrA7piS77R122D8G9aLIxIhBQjg2c1dKLDVYnyuQY4wWA0a8JpAjRXyZcmoI4O9Vp36GJM1Q23Zyg/5hEbd41tbVD7n2IhdsAWdGrqATvLLRFyY4/CoCZUDnC9QAGR9IyX7eQ3R3ebFhqwygueWcl0S8Bb/ZiAQ5DhiFRv3fr34/MCIhqIH3F/4uYN3V7Y2XA3sjAAJQkLNLvXQDR8AXFgR1M71+KPrWWWPL55tO4NU5Cx/DEvMmz90y4jRDcKeJpOgBsFyr0mhKSX4HdUXJ+9DXrSLhf0eFH/TkiYRlc9nswYcU7vhzKBH7fzJ+ZZV6FS+6AeAzH+nKAfxt3 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)(366016)(376014)(1800799024)(38070700021)(3023799003)(56012099003)(18002099003)(22082099003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?ZNFGFY8gg1wGwb9wssBxrewEP4o3jw6OZJydj7zNdJy562iaYEB1BCjGlu?= =?iso-8859-1?Q?UAwspPdeOHY8XUe0R02Cq4iCBkiNykVv+q3mvJ1SE8HmJql5j4WAuzyP4R?= =?iso-8859-1?Q?ixgs/06j2d3/2ysb5gfVyQwOOvjXgAfpHq6BuCidclMVJ5fm0/vpzJkJ69?= =?iso-8859-1?Q?C+n8LGInfKaApfNffMbm9FOhvZwbFYY8qdLKEQK375I9DsRcRxMnso8nof?= =?iso-8859-1?Q?fE1JXcrwE/9AZMDnkMwocc3/lttoW8ZRzq5zvL7z2i+iQ/vJEvD7Z7hdRg?= =?iso-8859-1?Q?DsxvbJE2At0iqdtvt5WH4DDD+lTSM9zdM5BVcTg3bhl3B/ItS3EzJKuiF6?= =?iso-8859-1?Q?nEzibJMAAPMHh46LmPiCTafW0dFicSBIki2pbY5rirztsMLpOAw5FJrmNJ?= =?iso-8859-1?Q?bT0JkDxj8q/i3K7WG25otoQ0MOokaJoUnfRmKr7lsgdaOPNTtVN4M/NeYb?= =?iso-8859-1?Q?PJfTuTs0wbaQyGxRuj6tQ60vxmCYUUXYI50b/glVTPAtiQ4iwa7F9HT/sc?= =?iso-8859-1?Q?vHbWqdl8VyJR5JQ7sdT1KOxD5QctZbVEHmQLfpocejXCmbwCzUZUynvx7p?= =?iso-8859-1?Q?GrOTVflKur5xNkUn8EquwQJ0w4UuI5NyCPCQlqPzQ0cnC2myzlS5/db0B7?= =?iso-8859-1?Q?T881PBIaTct1GiZgf79z1zXd+qgRU69Fl5FhVa2XBnBUoRKI1PdOhzY2Og?= =?iso-8859-1?Q?jEgc3nY+ZI9qbp+xrJvABZTXLzYCSZNBKaspMS9VEH9QrRMgCHehDSWK1q?= =?iso-8859-1?Q?L48XZjlXPiKS4FIQGwxclcgw82Xhxr+Fl8lC5MuFOdQOB0Yn83t5YT6zL3?= =?iso-8859-1?Q?MwSJeL7KlQfKXEKTOUueEKUwcGYjWbb88iuvQvnn0klsG0PeP48ApPq85t?= =?iso-8859-1?Q?IlJBqQa0CnXtd7JCbDtKYRPufbS7kusOD9NLWib45hurJ7JO+Lf7UODsfY?= =?iso-8859-1?Q?LPLfDpKtonlWVCrR8n2nKQqS0G3U5XX7zxeALmAYPqs8m+UrPb72/FP+mQ?= =?iso-8859-1?Q?O/ip8WJxTviwnB7RikOuEV5GrDfD558KzMAnbJAbKNNcU8BSpM4yd6K3Ap?= =?iso-8859-1?Q?BAmONFvyEcOtMkkwn2SsO8yPrXVw4+CvbUEXS2AXndWruKNBMeu6b9WhTj?= =?iso-8859-1?Q?HDRyddLiCqwKsO9bXkIVKEhC6DtSPqBiTAtsC7ICqDaTVAqAIb7kmAk4YK?= =?iso-8859-1?Q?6Dol8+UpaTyp+aNELHFYKq0Ip2t7dRbWA6GxuUVBxQ/Kl/p4d9MuwBzDC+?= =?iso-8859-1?Q?nwlpYC6G3jIrhzIlVyGSL3qgABfRBaLm50h4Y1gXI1gs+1Zrn1zfzp00xr?= =?iso-8859-1?Q?WU3bq0iVJL1tSHxRTAuUyuaKe1hFsrEKkuur5Cfjq8jpbYW7koLwXoJ2Wt?= =?iso-8859-1?Q?84gSnkXnxhdFhKk1v/JVA6c7d+F4NR1vx+FyJAgJFY8RbJvbIjr/U+v4rV?= =?iso-8859-1?Q?CvSF9a3Rj4AZn9Uwp0HFm5YDh0rDhSxXQH0WXkb9O7ovHVU86Vd1iyHXms?= =?iso-8859-1?Q?4T8Ik1ZlcAC1ohSMKeaV8/6++5s4yt4+cjF1qDk1k/W+A7cPgLaSc8O8xI?= =?iso-8859-1?Q?oj1PQm6opBsNNxvvlKNL1sq1Yeza9Bwj3+p1+BLPoV78BD7QVzGFzj01TX?= =?iso-8859-1?Q?kjlxgolDnUn7+YyzOblkg8VH6ckSY/9IdHOnW7isu5j2oRTy33hyhxdaP/?= =?iso-8859-1?Q?HaVs/dfheuJEQSiNWUkzN2zf/etIiC8NYZ0dff8n+1Zw01vxF097kVcvzv?= =?iso-8859-1?Q?zt4if21NGB0hJiO6rj+AG1sskWHIMiRKWyyH4D+ly89uINQOa2AANFcH2o?= =?iso-8859-1?Q?HG5ZnjCIWBA/ai+oSUD74XlLZmKA/Gbk8D1Ad1dhYrhqgdCwz8xq?= 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: 1272d9c0-35d7-4df1-8436-08deaf38ae7f X-MS-Exchange-CrossTenant-originalarrivaltime: 11 May 2026 08:38:29.4814 (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: /xEsdAcdDJy3M8RoPu88I5jKN0TDY4YFoh8o2UAxehlBnB/GAGjFK4ZwttqjVXFM4UF2SFC2xiQBD5awthWtxCZpl4AysKd5fnuP+aYIqDk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR09MB8695 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:c201::1; envelope-from=Djordje.Todorovic@htecgroup.com; helo=AM0PR83CU005.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: 1778492565778154100 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 ae75019186..f1fff92d4b 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -2657,6 +2657,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 17:46:17 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=1778492512; cv=pass; d=zohomail.com; s=zohoarc; b=dg/jLBM/eFY0BxpEaV5DYq1NHh00FTNMSdBjpKVGN8OXyT3PVYd3jX5mX4/nFhrsRgj1PdGpDkRsMgLEILNZc8D3+galtu5UuPCsUVUJpFHw5m0ZZ8xvpATw++q3f2piZPgSC0XPAytw3Df5/y4CYpRNMM9379aLlPRzn05EtC0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778492512; 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=RxOk+HON8I8xYtVffz3b4eEizI12LZJOjysdk2YYgUNTQfhdFJ7uPRMTMdot++IzXMuCV/77g4OdMYmj8xr6tY+yWHmn4MvHoMT1Q1LOGY0t5EFT5xCvvfZB6nTHRy4FVgsbJnAD/l91O+CxurodS/GDWpWpDDjxxxW/vhyQ6jg= 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 1778492512756871.2418051747867; Mon, 11 May 2026 02:41:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wMN8M-0002Cr-5b; Mon, 11 May 2026 05:41:07 -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 1wMN7j-0001tD-93; Mon, 11 May 2026 05:40:27 -0400 Received: from mail-westeuropeazlp170110003.outbound.protection.outlook.com ([2a01:111:f403:c201::3] helo=AS8PR04CU009.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 1wMN7d-0001RA-Ch; Mon, 11 May 2026 05:40:26 -0400 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com (2603:10a6:102:412::6) by DB5PR09MB8695.eurprd09.prod.outlook.com (2603:10a6:10:64a::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.15; Mon, 11 May 2026 08:38:31 +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.9891.021; Mon, 11 May 2026 08:38:31 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=upfuABcYeelNswGb6lcn2qRwi9o0o3tArKGjkZZxvzMKYiTYU4MW/x/7V/rJTZevEuf2ubkHaiDiEZx4Yb0QYajo7aNe3xi9nJRIdfhTv801dEradRPRZxMPHQlSo1lp1mi5Emho3e54QfusX9abTkeSWmi7bLR/QLtBZ26zE0itqNGYztvKPx6cNGOTEcTUgn0gAd7VgOMYfXGMIZUxL+wdJ4yBNMQpOIZsYfltCjGHaRdSOPaPkXpUSOSITB5ZzmB/99gRv2ZrelW8CwJv1U22LV1k1KDQgrFLO573aE7W3sY1hdj/uZgEsqwBQNFdwIhEcwN3hVDKXsqFL16eqg== 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=xAU10CPmZA52nMSjg/hh+7g7cOT+iUWdlV7EMRmwdIxnUvdobL2jHwyYcPHr/Q5UhTzahJKKXCppZE+YIpiD7c1TNYA7l8KkS/0wQeKdfSRaQ9Dbw+uWOH0h498jjZtplo/98mBDnx1cLx8dkLQxmYXskRXVihh9LuBfUlH0YNx+cOLXQvufoagetwIyfcyDWKIxRnRSYNjjQNRfYbzD8UfXgxvWNbL00nSJEWYyCS+r/kHSFakfJE3e9k1OspqmxOQx5tZ7eFX4NynK7Gnb7ohUTTvr+sJyNkCKNa9Oln7A6Sde0NBxVFdZVLqmtaP6FrWTxnShRlQss7g64r70lA== 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=WzCi7zchVzZyu7WWwl7N0OO6HDvUosvxHOY8vezSgQO07bFiJIKkqxeEX6WrvnQd4yZbA0LqN/gQLWX6boBA7q+PbAGgN8h6PcJ1MELe/2UOeBPpV36j+rYBJxPdXj/Hl1ULXupgMNkAnMN0uhO2OpfrLjgC+b1DAMp2dlDfUFrW4LIMsRKONpDCxR69yFEfQFzhstYRnXR4WivZb6PrJJYlNDZYd2zHMUxiK1BXgol5Ov6Yzee89hBUZhN5D9x9DEyf07H6rtyUD+hn4B12yU2t6xLDB4QSlKcoVk24QmyBBhgzAE9Wnq89yAB/Qvp/pAS32NDdwNTwOzWFZibpxQ== 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 v9 7/7] target/riscv: Add endianness test for RISC-V BE Thread-Topic: [PATCH v9 7/7] target/riscv: Add endianness test for RISC-V BE Thread-Index: AQHc4SGLlSK0wiAET0q8nxgomS+AYg== Date: Mon, 11 May 2026 08:38:30 +0000 Message-ID: <20260511083819.206216-8-djordje.todorovic@htecgroup.com> References: <20260511083819.206216-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20260511083819.206216-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_|DB5PR09MB8695:EE_ x-ms-office365-filtering-correlation-id: f0a04f33-59c7-4ffa-527c-08deaf38aebe x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|376014|1800799024|38070700021|56012099003|18002099003|22082099003; x-microsoft-antispam-message-info: c30EEZunkxBxwzndXeFXNsU8cWh5rv7/JSTwHq3xyY/8Nh3VldwiY/gdVZvBnG4QIrrcT4t+c/LJyOCxq8TR4aB7CYv0Zr9ODuna9ydrgTQKzO5EzI9ydDamEIC+j3KgvDlhO1UaNtLK193e5ZTeVJSj3OmqC475v8+mme81HZKgevAxgILHy3jer19H0AeBnR1gksnU7y33ZSF8+8lD2txJ3IzHE9EhOCLdWBqSHvwn2Za6grdl4V2RoZeUOjRcs/mZde0blSFFfGQT+9DBa4NSuk0eGonYGrX9BpGK1LJ21SvUxPeYuE4F4zuokQoRwIfEO99g9lRrg2RW9xeEFQ24EkXVzgkKe2S4ZW7WS+vTm77lqbJWcBkaCjrDpagN/wf6dIg4QcH1B9TC09hWdeHoShBuimqbLWCZga/GhtiNbZYR7MUTCsJYLOD9tv1K4cF7Z47XIYZaJiSU659YLPq9JYTijURTOB9amI1PxaydKAQ1Kbw05KpwGn3539fNfhTvTiLl3niye9+TbX1It66Nkv2VYeBtzStTuoUa1yvg6fNORmLSchkCiEnxFODUwuIoiU2/yEJG1oID/eXw7l0Ul4jturMQUahFwHujuU6IXvZjtrKKHKPDr4yKmBm/Mq1bm9H0n1AAnwXibXdqPdVrbSkzLvbHi1a5v0kXB98EeRFOn1sG3qPOUUEUVkrbNK/T+29YPh18C9Xht/aQq0/jdX7ug6rRK66+FC17smkk7t+ck+1P+pV1/XIhH6Uc 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)(366016)(376014)(1800799024)(38070700021)(56012099003)(18002099003)(22082099003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?NG5VQXFFZzIwT0FENys2cGdGVGZrNU5aYjFMVjBLU1k1L3plZUI4YU1OUEl3?= =?utf-8?B?cHUwOGtHODV2MkhOa1luSGhIcGNhUjhOb0doN0lLMHh2MFMzaTRUekZVc3J1?= =?utf-8?B?KzMxVHQxZGt1ZUtjM1NZbWNPMkFVK2xPdlBkTEVjbXBhdHVOSWo5dEdEYi96?= =?utf-8?B?M3pVdDhSMnh5NU9pUjRiTDhDSHdxaWVmc2ZXYVg1eDVraFRHOXMrL0NRbmhV?= =?utf-8?B?SEhMbXVCYzBHd1A1Z0NxUTliU2xDdlpHcGNnRnI3TFEwQk1TekY2OTZYWE45?= =?utf-8?B?eFRMbmcyTHhBSWlKb2JzREZ0OE4wYi9hQzkycFFxdHV6NDVsZ3lWejQyWGZI?= =?utf-8?B?Zm1TbVNVeVJjaTV4R1ZwMnJUeSsvVHFLcmpReFJLNlFBRVRoMnZRUWhxeHlo?= =?utf-8?B?Z2hkZzNzcldGWGxkN0lacHg1UUsvZVBDSWVxQituSDZBdXBuMGUxSExVdTZJ?= =?utf-8?B?MmZ1SHhWSmQ4WVJPMGJwMnJYNXY1RGI5L3U0TDdXZlozaWR5aDQwSytCYVNm?= =?utf-8?B?WHduaWVNUE1VMDdCQVNoTGFqM3MvQVNiMnVISG8rekJ4K0ErR0RRdk5PZG1H?= =?utf-8?B?Y3hPYm9mK0NIK3R1a0RmWmJqcjJHbTJuZTlkUkdYT2IzQ3lhTi8zZkNMbWh0?= =?utf-8?B?Um14YUZYcCtXb3Zyd3hTVHpyUEt2eDNRNTM0S1dRUGY0Q2p0aDVQK1NoQUF5?= =?utf-8?B?Yk8rRURHSytSdjNkRjNWYkpZYSsvd0dJTXEzS2hUZldIZkpyQmVPTXphbnlq?= =?utf-8?B?N2g0cURaMlFzaGIzcW9hTHNJZFRhbGFLcUhTVW1NblVFWnRvY0NJYWpEOGx6?= =?utf-8?B?OVZoU2FQVCtnU25sVWU5aXpGdFhpTncvNjJ4ZXRodjd2eEQ5NEhKR3h1ZnFo?= =?utf-8?B?RUFYZGZiOER1NUxZT2dTUXlhaS9jOUtkTjlYd2FCQjdzVWZHZUg1cVZRSEdN?= =?utf-8?B?NGloZUZNSE9mbklWRHRBUG92eWx3VFZNeGlnTXpoNS9XUVJQL3lqb3czV2Vm?= =?utf-8?B?a3RSa0hhQ3JPdktPV3RnTVNPTXpxSENhVndaMmppejFkNlY5OEY2YVhKd1No?= =?utf-8?B?eXYxSnowb3BjbTgwcXJXUmdPRXNsZTB2b2NRMHUrc2dmSCtUNGVYVmErSzNX?= =?utf-8?B?TSsvOElDS2wwNHc3bXRxaHNzaUxxQ0pPL0tzQkE1L1hUTTNiWk80SncxSndl?= =?utf-8?B?dHNGNDRWck4wZVRXS2VZMm8vS3dkUDdvQ1FkZjFVWVRTc0IwU1Evd2loWExa?= =?utf-8?B?VnZ6UFkrZFV6RVRvQmhFbjYxdUdJb0RkNUJib0N2Tzloa1hKcXVKb3FJYkcr?= =?utf-8?B?RmFGdDVUTXc3cmsybU1pRURzWWsyOHMxdDZoblJhQ3VQU0MxUVVBYk9KUlNK?= =?utf-8?B?SWVZWlFoUHYwNExYUGlrdm9LQnNvRzNad0RncjBDZi84WmkxLzJpUmsyakFZ?= =?utf-8?B?VVF2SW5IamZSSm0yUHc5eVVoVlRpZ1RHY2UzVllCN0doZmw2T0x5dmo4OUpy?= =?utf-8?B?dmpuL0NPcG5wTytaSDZWVFhaZEdHVjlDemw1OGcxYlJCSGhSMmV4NUJIRDF6?= =?utf-8?B?WTN0UDdwZ2QvTklOdzJ1aHl1dEIzS1F2Tks0Uzc3TzB5YWNiNHZuY2JhTk5i?= =?utf-8?B?R2l0ejJBbjN2cXRuNlhaczdhK0dxbCtiRG4zNW9zYUhaekhWK0lLWUtGcEJF?= =?utf-8?B?MGhPcU9hN0lDRG9TK3paanJBR0hYQm1Vci9ESTdESXlkTUdSQlpYckUxRHRQ?= =?utf-8?B?QlFCTDlOb21SSGhDY3BYeUFRSGp0allaM0YySEtoeitacEFZbHEvWExHa05X?= =?utf-8?B?RkFqa3dkSUEzSTlMSExTdlBjOEZJMVRWWlRsUkRNVlA2ZzNjSlhtdVdJTTFy?= =?utf-8?B?VkF6M2NTWHBhUWdVWE9lbEtIbEhhY3dQUFdqdlljaGRBRDIzNWlNN2ZlLzNO?= =?utf-8?B?UzN0cjhmYkd0NWNEdHJEWllFM0FFRlliMU1NcU1QWDlXTjZVQjhOMmIwaWEr?= =?utf-8?B?RHNUcXpobWxuY3VwSkRSUlBaYmczZUF3eXJSQnMrMUhDZmZNNVBTWC9HNTVW?= =?utf-8?B?TDFMRldOeTJSOXBKeVF4TUw5VGxSWkZ1YVB5NFN6MGEzSXJjeVRQTE5SSXkv?= =?utf-8?B?RkE1Y1crdml2OHJMcWZISkpnUm5hU3JsKzZvc3A1STlSUVVjcTNmd20rck1N?= =?utf-8?B?elJRVWhWU2hDY3F2ZkNpdjBoMEd6eStqT09icDZNeUJmMlAwejMvZGRyOU95?= =?utf-8?B?L2dPMDVzRmVFSzZ2Slh1eE1UZVBEOG4yWGtXdEtxZDNMckYyVkJ4VHdrclZl?= =?utf-8?B?SmM1c2ZlTktqVjZLUzZZelRLUzF2bHNVcU5VUHpUVWF2OUpLY29YTndwSHJR?= =?utf-8?Q?tFxrHaXll3/AZVLuhaV2rxP3lQNlhA7P+IAku?= Content-Type: text/plain; charset="utf-8" Content-ID: <925BD31033CEC24F89726ABF8EA2147F@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: f0a04f33-59c7-4ffa-527c-08deaf38aebe X-MS-Exchange-CrossTenant-originalarrivaltime: 11 May 2026 08:38:30.4023 (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: y3DFA5yDhIiy3fcCSSqSk1AKlF+G1ZTaY5oMGetRwwIzB0HwAFrqV97IMz3081QfeQrAj70OMoIV+3k+ETuBEF3kdEGKdx+FrxvRM9HGmmg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR09MB8695 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:c201::3; envelope-from=Djordje.Todorovic@htecgroup.com; helo=AS8PR04CU009.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: 1778492515472154100 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