From nobody Sat May 30 17:44:42 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=1779870829; cv=pass; d=zohomail.com; s=zohoarc; b=a60si9dtubko054YzW+hS0EX0Gm1J9XD3fOXvA2PQdeuXRuaa9Nxd76wbp/3JXdleyoPZRtMAcxz3qaX10SbQ4gMYbnYdmki8huogmrkdpvZhitkGn1yBlSE0lH+RFn6Y6z+Fe86o5xplzyh425LelA14poJ7fnLAZ3NwBqzOPg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779870829; 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=MdoOqcdRKzLCKtDQ6MQmeu56wMrtmSK94/E0SLvlwkMHKBhVA7pl9jS0EG9ODgAILXucQG8NL03+4GK7Zwfv5duu9vo4uMflJhtc9dhG1/ABiTgRQg7f3TQOYjlkuVSct5Oxip5zPzgnYevX34XNNh6m8/Tg5QI2pl3hOXu+KOk= 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 1779870829323999.4449644325584; Wed, 27 May 2026 01:33:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wS9gW-0001C4-4K; Wed, 27 May 2026 04:32: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 1wS9gQ-00017e-Ln; Wed, 27 May 2026 04:32:12 -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 1wS9gM-0003xv-HI; Wed, 27 May 2026 04:32:09 -0400 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com (2603:10a6:102:412::6) by AS8PR09MB6314.eurprd09.prod.outlook.com (2603:10a6:20b:57d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.12; Wed, 27 May 2026 08:31:59 +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.21.0071.010; Wed, 27 May 2026 08:31:59 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GBUk49qq+SDTnvbWm7Hd4p3PH2xuA2EYmREzOryjJEIxhgljKXmW/g7+mJiIDxiN+BiyZeGi2gUm9B70eeJhnjs9/L93iCCps40RIh5t6iSG5C5X+AfRr692GzvykDUtEpyVXbyWzM6TqYfE9FbPVYl6Mbux+PhM0IkhcvSiD7GjeiQ1THZ3ek0XtA723/ETk1mFv1ogPCJuvDJh/ZIurZ2BsQU1ktHoH9Uc5ZMWlJe1Ckn108Vcrxrf9Y9mnSLdqANCY8eQEgTYkKFfcxdHejnrmy8h3VmwgEwzc4PKh3Yf/9Xt+TtsthfUKjcV1g5bGBEG08wz7/sia8dDx8MYQg== 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=uOK8ToziUfXaHh5fWaOPuYFtauWbkOmQonTomTXDRhEhGaUIL9rnZ0l2jidMWUruz/6sY2wow0r5NOSfibfm+J//wPadwhKzTGUgXT7B+v36z7iGCp6xN1R7tHb+MUtGhMnB5k/gcl8KExB3Zru7wie6vYGuVFnlqqFamhQGjF6o2RIpTdhkKu9Ji3yP6S+AOubG9RwfradE/gNYycITn05mKGpCnJNaMFtvfDiSIb0vc+DPlOmqFlvOpG0vHFV23SRDa0gmhMlFhEP2y2opXnHYSKI3Fffq0UAP18S7UH8bEmSDE+ANCQJYWBYnARThQGEI+DuwTEPQ2Lu3qJaoDw== 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=e3HLx/lNap8jFCDjpWWAOTMCMWGjG9C9+jfltPqQDPVIQjCwKPoKT+Quy2DnKSJdZA8O1PbXRAfl3hZzGHZ6lRzWGdrjei3t5hVPi+cQdE6/FKxNzg5sAOspjkvCVI77/l3/TwhHNBrWUJys1hdBMtm7zJR5aA+fYXjZazUehO4mq5+DPmHxZwj4luua4k0q0F+tkfLEGDmLL0wyL7ePnsHnAa2J20SdajrP3V+xmJlXYvjN6XOFU+3fBNzQ67pHexVLzcHkP/Y1tByHZzlqx8/UufVYNXsmLIigNoJaWv1Ugu4naxzFmyQ6UaSDVXE3NmEpNP5n7R9JEU3PNByhtQ== 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 v10 1/7] target/riscv: Define MSTATUS_SBE and MSTATUS_MBE bit masks Thread-Topic: [PATCH v10 1/7] target/riscv: Define MSTATUS_SBE and MSTATUS_MBE bit masks Thread-Index: AQHc7bNI0emHXYxUnk6HtyUJHDMNKg== Date: Wed, 27 May 2026 08:31:59 +0000 Message-ID: <20260527083151.17876-2-djordje.todorovic@htecgroup.com> References: <20260527083151.17876-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20260527083151.17876-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_|AS8PR09MB6314:EE_ x-ms-office365-filtering-correlation-id: 664881c6-4015-4b25-4c1d-08debbca6b57 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|7416014|1800799024|366016|38070700021|18002099003|22082099003|11063799006|56012099006; x-microsoft-antispam-message-info: /xY5h6pYIgK1SZFXbIYDu4rlm1xzmHRQpkAmwN4T1QEh8Ztft1wAJc+oQk1Oi7xtaI9VcD1wTPeVHRs4MtbKj54QVKx+gqFGsCxb/VYOp5MoEjEZKZBjZBPkjcV+HXaVCw4sGKo4BI5UtFO1vFOLlOuBHx1GStW26McWAiSSQLu2VVwsiy953ARu1/gGaTv5CK4NLpVpsHo45B+W98GdaXC+0CH8HbRxUqnbIHLlMr+dd2oqnUJEtp6m7rsha/P3gDbb73lOcQEYVGx2Ie6dToKUUub/S2vAjc8xAxhbz08/zJEqo0eVsgaWhP1hNzOa0I17CVpJyOb+ulWTavNi9LtjUJx5ryxtc6KtpRQTrzn/G2PBnd3HvTbs9SoxpUM7rJp8M7ILeWomg7NIxhCMe4Gx2EpU0pTUP/YXhOzk6phM4K3JxSMxjiOMlGOQ6w0grFo2Ur01JU1+p1ccixZh/tb3IA661WzpzeRtrbFLEwRhVAYozycpdk/aV2vOT919erWuiON7I/Vh5tFJvsZdgGrUdNjKC6QbkDIgb4r4pcK9R2hZPJpbZqDMlTGAJP14jWdsZQ3Io3JnPd9Td5Gw3S/FbQFPfd7GR9dvu5sHr1utXT5TDU2UCuiS3Dw1/gnI1lx/S5LZV1a7dFwBTRxHbLNSm8VRRgCyEsUeuT9Cb3ec5DfkJtgC141VvsrDiXiihWNLHkkncsWILi7g59E0G6lA1HpvfXKWywNbO7cnl+TEd69Q1mYKGrMII4vUsq79 x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PA2PR09MB7634.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(7416014)(1800799024)(366016)(38070700021)(18002099003)(22082099003)(11063799006)(56012099006); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Vkl4aTU2c0R5dXlSQVN0MjJ2NDduVDJadERBLzYxamR1Nm5jZHFlTUN5eWx2?= =?utf-8?B?RkxmVEpPNEMvUHdkOVhUbTJlc3Q5dTFyOXZuaHRHZ25JYU4zdUJPVjRIKzRM?= =?utf-8?B?ODUxVXBSYThaSm9ReVhUbkpmenp5anNBZHFFaHM5OFJRMUtFNENUNHVod0dP?= =?utf-8?B?M0orZWxUV1RZK09WaGhHRGxPZDM3RXlYZ1I4RHdkU21FYURQNE9TVjlqR2dT?= =?utf-8?B?bXgyeUFKZEdodEo1STR6NGFaWVZjSzRONDh4VDM5aCt1MUN5eFk3WDhYQXlk?= =?utf-8?B?TGY5KzZCNUIyYUtGUHpPTXAxai9iYUtqTlAxYXVhdlRnT1h1ZFVlOTBLMWdM?= =?utf-8?B?MVIyK3pSOEZEaVdGL0xCa1JwcGtZd21relplbmxVeXV1NDhkdTQ4UUtaVjlt?= =?utf-8?B?ajRuNUlycEQwYzA2UG0wRmJjZ2hWaDM1S1pMS0czMTBESms3dnIwenJFbnRh?= =?utf-8?B?bWtNV1l3ZUpKdllwY2ZGSVFxMTJyRWtGTkUxQ1AydWhZcDV1UVdoRFM0aHpj?= =?utf-8?B?NjZHTWNMNGw4VTVSRWt1ZnlNWDJScFdPQW5mVHhwZmhkeVdRTEtSQTRsTnNx?= =?utf-8?B?U3FQZ3k0L0dpTGpxZ1FWNTJiQ3FkMDRibWVxcFRCVjVYV2NFSVZzd21ETWhJ?= =?utf-8?B?NzVtbm5qUUFTSDZldnNhSHNIeDNuZUxrT1JQRTBWa0E1cmxzeGtLNklucmdE?= =?utf-8?B?S0dMcW5neHdWVjVDb2J4bjhGb2hXQmU0MStYTkM4cFdtdkNwdUlZT1o5bEdy?= =?utf-8?B?VStTR01kR3JYRzBxUW5zaVJVSVp1ejVvTXFYZ2wzeGRtZnNkU1Fic2dPYStT?= =?utf-8?B?NDRTdjhaWnlkUk01VkJ2U0V2RUhROTFMT3hGWTJzeU9IVEU5RDBDeFBtZE5p?= =?utf-8?B?R3k2UzV2a3pBNFRrdjJLR0pmaVRPMUx1WUNmNzFCMkR2UEhaM2lFN3VFaEtY?= =?utf-8?B?UnhrM1lqWEM4OEd1eFROUExjaUFqRGtISFR6YjdwOFJzSG1TNDlDblFWNktt?= =?utf-8?B?dTc1dmNvRGxrLzFod2QybmxkVTg3ZHFHNlpkUEt2SDFVNG91Tm1PQjIzY0lh?= =?utf-8?B?YU93NTBFbVg1d1lWQ0t1aDI5M3pXYmFCRi9KeXlmaVRrdllYakx4M2JrUGZP?= =?utf-8?B?Y3FDMVRjKzJmSU1GZUZ0SDc5RXk0ZTFPdW9NMGlnaktwUkVWcUdENjloblJz?= =?utf-8?B?Njh4S0NRREdpYWVRZGxIa3RRZTc0ZVloZ1Q3TGNJd2l6bWxyMFpDTnBTaHJQ?= =?utf-8?B?WlVNK1VxbmxlTjc2eWIvaHJwT3hMWkhORlNRbGJzcXFpRHZKK0lxRTdpRG9a?= =?utf-8?B?Y0xYblp3dTVHcElTbktVTmJMRDJrSUlRQ0dIQlhwb1ZFaWU2UjZjamRUaGhH?= =?utf-8?B?QkRRNGNCNkZJWHFyWldiczc4WUw3dFlBOWpGVzVBQk54dGZNaEFhYzc2YS96?= =?utf-8?B?MW96cnJZenA0SmpGZk40MGU0THd6dEhDeTRUcExJQW5XUmFSeGdxdFEzR1Av?= =?utf-8?B?U0ZicEk5bHdGKzNTdUx0TXlEWkxGNWJJY21PejBGTFdEWlkvUU1MYitNSmtD?= =?utf-8?B?WjFxZ2RqMlVCb0dlNjNRME1LWmdxbkViVXl3Z21aT05ZNHlzbEMzcC9uREpn?= =?utf-8?B?ZnhWYnkxS3hlSnkwVkdTeHhQMFNEb0FOd2hITXVUNnhzeVlGWnBhYnltNEZM?= =?utf-8?B?QlJLWDZpb2JibkloZkZGSXFOdHRnMFhod0F4ZzgxQkx0M3hjcU9IbnFpMy9T?= =?utf-8?B?YjZSWFVpa1hFUS83ZEpJYjcyczlSYmplbzlob203VDYxY25rQ1BmdEU4UVEw?= =?utf-8?B?RkJEbFBIajdwbU5JK1lZWFk5ckZTbXljRnl1VHRVT3Z1MEMxWXZqb2IyVVUr?= =?utf-8?B?T0U5MTJGY0NPeEQzQkU0UUhJa3dETWlTcGRHbXBKQklHbnBRL1RIU1FPSnhS?= =?utf-8?B?WTV5SXhBdDJGOFZEOGJVVElrWVEyY05MOHRybFdMemVzMW9uYkRJS1pqR1Vx?= =?utf-8?B?dEl5S0pGTjRyeHVmTXdTbWw1blBVbTVCODVEdVYxcjBYWFBFVE9ZMUFCYUFB?= =?utf-8?B?RUtFemVGblh2a0wrWC91YUY2WlRjdDNvaHd1VitOZmhmWW1McEpIZktIdEJu?= =?utf-8?B?eFZXbDRyNk9lQjM3SDlzLy9KejY0NUZtUUxoQ0dFUms3UHVaa0psWWkxcldN?= =?utf-8?B?emZ4WVk4NzBpQlhLWFczZHNJUW9mYmd6dWZkMUtkbjJ6RGxjR0lUZEh5cmN6?= =?utf-8?B?aENHVFEzRmRJZDA3NmxBK0NWUFp2VHJlTWV1ZG1wbnFaT1hhWG1mdk9nSkxr?= =?utf-8?B?NnVuOUp3Ryt2Tko4K0twWmJzeS8yUGx0a09IajZqdllYQlFZdnlRdlJpRUVT?= =?utf-8?Q?NAQMaLlITRgn45w9znNC8IpIoaZbCBpbWEYKw?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: htecgroup.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA2PR09MB7634.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 664881c6-4015-4b25-4c1d-08debbca6b57 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 May 2026 08:31:59.1664 (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: 3/TwDP4FQalNzd9mLZGpw0wgNoUdx4MmQcAUeOnJbcn/az4eGwY9smsnbZiXYLYVu8AohMbjG2d9BFTkDndaAmKeOk1vjgMbssVFeYyLjGk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR09MB6314 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: 1779870830653154100 Add the RISC-V privileged ISA defined bit positions for the Supervisor Big-Endian (SBE, bit 36) and Machine Big-Endian (MBE, bit 37) fields in the mstatus register. These are used alongside the existing MSTATUS_UBE (bit 6) to control data endianness at each privilege level. The MSTATUS_UBE definition was already present, but SBE and MBE were missing. Signed-off-by: Djordje Todorovic Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- target/riscv/cpu_bits.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/riscv/cpu_bits.h b/target/riscv/cpu_bits.h index b62dd82fe7..c2a3ee4bf3 100644 --- a/target/riscv/cpu_bits.h +++ b/target/riscv/cpu_bits.h @@ -628,6 +628,8 @@ #define MSTATUS_TSR 0x00400000 /* since: priv-1.10 */ #define MSTATUS_SPELP 0x00800000 /* zicfilp */ #define MSTATUS_SDT 0x01000000 +#define MSTATUS_SBE 0x1000000000ULL +#define MSTATUS_MBE 0x2000000000ULL #define MSTATUS_MPELP 0x020000000000 /* zicfilp */ #define MSTATUS_GVA 0x4000000000ULL #define MSTATUS_MPV 0x8000000000ULL --=20 2.34.1 From nobody Sat May 30 17:44:42 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=1779870793; cv=pass; d=zohomail.com; s=zohoarc; b=JhJ9AAWe4OcA9LBX/EmfWKvXNwliBxS/WpnFuxTSqE0MCp0CJmipqTMYtOE19CK7H8GX8AjHnK00iRH5XXt1BoF3FwwXwwkrqckq5AGW2pLaYmYZn4vAt9idOQ0L3dHs2FzjmshhWnw9MeKWZMG17X3ceShCUTHt/1nnKibcTNo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779870793; 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=iab/GHClLrVUHit5Y1KCvDiHkLhhDLZsg9JRpaKD9hk=; b=gBkVOiuGFvsTc/SFSPhT9Og9/mSCwexzi5qHOkyckC0+5VDU5YrHR5RyLZ3SnqCRbkUofTNDi0zmpJdmFuw0YIxGtb5S2j2ZLEsyiLxm9WVD1kD1kV866KKaFFmkzxzZWiQLI+dfXlKbLzJSRDx+7yqy3L4MU+AR12TK15U8ZZI= 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 1779870793588498.94944300694726; Wed, 27 May 2026 01:33:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wS9go-0001L8-0V; Wed, 27 May 2026 04:32:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wS9ga-0001I9-Dq; Wed, 27 May 2026 04:32:21 -0400 Received: from mail-francesouthazlp170110003.outbound.protection.outlook.com ([2a01:111:f403:c207::3] helo=MRWPR03CU001.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 1wS9gY-0003yk-Bu; Wed, 27 May 2026 04:32:20 -0400 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com (2603:10a6:102:412::6) by AS8PR09MB6314.eurprd09.prod.outlook.com (2603:10a6:20b:57d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.12; Wed, 27 May 2026 08:31:59 +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.21.0071.010; Wed, 27 May 2026 08:31:59 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=v9UkZJTzXS2PL3UuHdqSpL+eMd5T1sG8fMq1k/Mm+Nak9+ijryzqneSnuhV0njovYsOS3SQSVtD5iNZc4rYUJfE4c5lq6z7SEN8c4KkcBY028rFx99WwmnLGLcclAXWI2GZ7Yq0ELOZjse72obbVnjL556hsawxh2BL6yJ2kD93voSTZwgBOp+7wF3li6ssHnWUi+M/DSjmMZqXNdk695aSQ43XNa0Be2hz8LKYFY/jzMZTrl/1keF8bPpYGPY6Prpva7XIBzkTKSEC2nII3hM7CSS1EntI/rklSZRVdZVRcHxtSlU0nR7UNVVN6Azv2+DziI0csmB51zXMx4eGb0w== 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=iab/GHClLrVUHit5Y1KCvDiHkLhhDLZsg9JRpaKD9hk=; b=MUnTj5BpnXpHqeW231BDubbGnzTPgpkhZi55fWNVbU2YJYrt0vkHmcR0gKnZz+TC2lKMDUPoysyKUqJACXO5lvX71Vc72ypnIqjKRCOrT1wWSUqnEntZb0NwNiN4SGKEqtm7/HMj22nHyHkD7GKj487jGmpYMgv2KaywTOEBzvCnJHSH4iHK1RPh2m9EsZnoRVymNZNjU5FQ5OQtdCFr0g2SbpYL0kk87biCkd225KB0oC1MnheFal0jQS/J0kleeFh5Uq5rKkdxmAj1QYST5StOwmee8xszYYeR63W6WjEpEJTkq8sqnl0BKfyOlEsu6UGmTzlxPhEaSQl15YN+PA== 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=iab/GHClLrVUHit5Y1KCvDiHkLhhDLZsg9JRpaKD9hk=; b=nN1hzCEs9fORb5MUBfSQXQomvPwyY0WYdElMxA2Su7iqcy2IUaOZHpErN4NRFoXtkqzw48WL5bm3d2ezD+g08GtX9Z2buLvQLTtLPAha5s8ZfMfVhON2UpxVjtIBK5KQ8MNTyk3FQ9G9/7OQLDj5DpU6wow46ds99IOLTAq97r5ZKCXkZ5G5top7VH674sSW511BjT0AMzQsSRSMVN4L0rfk693+L8IoLrDB78cc30FwJygxu5STMc0UQIq7kNvLUGH074pxUaXC8+t3UmPWxyhKHcXwNhamkucJkUgT4O96a4Xc/F8kT55e6ILvCmc1zkD+Kk2wakq/syQPmSd+XA== 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 v10 2/7] target/riscv: Add big-endian CPU configuration field and reset logic Thread-Topic: [PATCH v10 2/7] target/riscv: Add big-endian CPU configuration field and reset logic Thread-Index: AQHc7bNJcTshiM0caEWOVDP4lfXhBw== Date: Wed, 27 May 2026 08:31:59 +0000 Message-ID: <20260527083151.17876-3-djordje.todorovic@htecgroup.com> References: <20260527083151.17876-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20260527083151.17876-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_|AS8PR09MB6314:EE_ x-ms-office365-filtering-correlation-id: 41c406c9-41a8-4670-7059-08debbca6b8a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|38070700021|18002099003|22082099003|6133799003|3023799007|11063799006|56012099006; x-microsoft-antispam-message-info: xUXUL7DvHTne98CNMy4QMKg3LqT0LoiLIe9cuJExIys79as8HDBcoUd+DSZdrQD2+u7Bn0IptlTfMZ+t2qdsWLTaK4E1uN7QBohklyIwUpmbI34iLAwxRb4EpAKTw+qhaQIMvZ9puzZThNXKPbhO2C3y95q4K5A6Sk1nDAnCuJKVQTbTHfmzKyFxntjSKQvUjEBwVH93oG0mma93XChjEqXgIPbbXoUTaTxJVHold6aGaQdPvrVwOBpwb3R9TanwuojRtdeU8i8wq9ctiXCO/UTk36zCADZDUKr3gnA2lXEsta7Hffy/AoUAIbCtT6Sv+5hPeCJKmBzSz8KS6HCZT8gwv9/iLYkRBaIcYT0dnaUwdfNi9gCQ3+Bn1XWEziChYMN87kBxRKrICXN7oW+FaEBRutsiu9TBd6MdBURTsBrIUu4HoXF4Rc8BiNk9YJSO1bqnZMFBWOPnQ+kWnL8+F73BDubWSUafZMpxGh7PUsB/t0KCWYT1uWCgZbFFiJmaHiO7prpBEXRMNfo21HrI6OqgxTOVFFdShxQFRWp+qOMBeWsV+s/cs2ihHJwtPZxeiatiwDIepkzZnKRStBtGBebcU4uW0oxGvw7ZrO/lpdP3ljKUEmvvWbzx9aZOVGQL0a4X+JWvfoBX0coLFDhuJBAFEsDzDL/VC0JaLyxzZj2WC2Wk2fGP4nMnt/zSO2tOeATsnwhBc0h1vGe5z7fIHDEy8JpDkiO7C2TvR9pGnk8BAJiEV03arEzRSrAhdbcZ x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PA2PR09MB7634.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(18002099003)(22082099003)(6133799003)(3023799007)(11063799006)(56012099006); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?ey8fvan4KR5INQU1Z6YaxJF017XyFsEzk1AmckUQ8K7PDAKFroMGjYyuvM?= =?iso-8859-1?Q?bc9gAK7wlorAjNGOiKkyqZp/CwGj3Og1UGZlNXY9OewVD8M8E7DCzTvJCv?= =?iso-8859-1?Q?+N23CNda6W3WQpK8oOSCMEmsYrfsJm20bNpGFlPs7Ut3IOD22fE0Lj3QJA?= =?iso-8859-1?Q?0s89ZshS1D99Po0QrwbrGDaqsEAe3gmWzN31p/ElSV6utBnKCoH2hh7mh7?= =?iso-8859-1?Q?bVqy2u3id1x2hNfjwXm5OD0dYPv7RXoErjzUYltjJtmVP25GpRypUJiE7k?= =?iso-8859-1?Q?+9Jn73Yy0VjEe3kxSdWMB1sgOvTwIZMbuHj8F0I3gp0WyI65C5TU9lBED1?= =?iso-8859-1?Q?3aXjWeKb3sqrYUWXFxPgsS+Wx4bTBlJZ2EnxUU68h3DKPn/uSyM4RIXqkr?= =?iso-8859-1?Q?dcMj7z/C6R57botgYYOGNTlAAQ/rCKVIdrZWLt5JUBMvxQj//+fd40ag56?= =?iso-8859-1?Q?7iLvoC5PfU/VZE53uuvLr1aLzhOk6zQbYdlrpc2H+rig5hZkRQ6BvKOJSA?= =?iso-8859-1?Q?mexheubRHgOk9ni/y+GVacIwfsbdzLkCHoxL38jjkMy4HQwoGqQEi6I537?= =?iso-8859-1?Q?THbgsFndejInA56Q+WyLnHIH9S72nmlKaGpLRb5t3rma+yL3k5qefI/hHy?= =?iso-8859-1?Q?bSkGzKFucgJv288eUU1NcMp5p9tOq2enT8h8bEwuNdQfbDShkz/4U2LQXl?= =?iso-8859-1?Q?TWYVqqRajpdE4iUWWkWPXevUzn/Nrfth3ZdUhzMJMauOWyxpKRbSdhvfci?= =?iso-8859-1?Q?7WXnBqXFJjvdrG39QF3I3ZlX0dnztQ9ZUcPJiFLPyvFXgOeUQ79KgBRcxl?= =?iso-8859-1?Q?GTDr2YpO1jgTg2U0PJ1hMO4OGgH/JATPcK+WFOhjLbf9PRN9vv1G683srX?= =?iso-8859-1?Q?YTK2juUmkD5NyKL4DlmnDb9PDS9LaTG2LDrVzxwof8Rw6lB0dxnKQEqzC7?= =?iso-8859-1?Q?ZNWYPbz8T2P7xN14QkhBsWwy8xGx2INYErzKvVz6/ocU4o0ep1eAI1yYpd?= =?iso-8859-1?Q?2x4Fx68eoA1TzgeJPiRNJdkQ2SUMS9JL5K4z+6o8F5CCEz0jur1pgmNhAF?= =?iso-8859-1?Q?yA+ldWnxFG/hchjsHSU2C/z8+aznNMKMYXahDI34Y5tMX9ECy2qRZvWM09?= =?iso-8859-1?Q?N9Ot+08eQEPOqoj9aJI0UVclJ67gT25vCRo9Avz71ta6oMnGufDYSFmcBC?= =?iso-8859-1?Q?/M9ez8E7CAlXVmsI+2lYA2GPfvublaERDOg2i/Kn0d8gFx1asMluvMcdXS?= =?iso-8859-1?Q?a9cp2WLwuskveRVx4fid/vT0qxQnuUSjTtX+FEUjjwW5TePgocTUKhSN7V?= =?iso-8859-1?Q?ZJxQtRVKJluVsVGH29tcj8CwPBRd2JOr52o7zbVmUcIWAGQCz2Y9nnbxAw?= =?iso-8859-1?Q?Aap8SsVFXNePWSq4eLs7MgbZYa5qsV6NFr5HGjvD3t12dwH0ZM3ClDxM9V?= =?iso-8859-1?Q?4a+t4RVCzwl+jRHZA7/lCBIw3mGe/qqtggqlPh4woI9LJfqVTKMBDHbMin?= =?iso-8859-1?Q?ZzHM6ZFHZOPEf6jyzj7cyxsyBoi/JAx8Kj0hyXGTzErUNC7T1ggmVibHVD?= =?iso-8859-1?Q?4K4Ri4B6Y72mFG9dtCcCuHEaMPOjG5TMQkixIAsYw6FXYGLVZ65gkpZrNK?= =?iso-8859-1?Q?jQcXAgpx39ZulHueZU/BrfCrpMKzx6lqc8ldqukMWJnNp+101orEKjwIMg?= =?iso-8859-1?Q?tX/xnwNhsmu/I8NhTphClk6uG6m2LY0blx+RFpePwlzeV/JsCvMzTDcLBp?= =?iso-8859-1?Q?dYO60JWyD19gFLq56tF608kI3fPFmQUpWmSgS+ZsLDSrgvxASqnv5N2Msc?= =?iso-8859-1?Q?srngzLTH6tKHGB4fa0CRmMS0vUi4h4/L98lG1Hn0Pe/Qd3cACUqi?= 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: 41c406c9-41a8-4670-7059-08debbca6b8a X-MS-Exchange-CrossTenant-originalarrivaltime: 27 May 2026 08:31:59.4256 (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: Ne1vnSDOFi3JP2iNgJh669mMZ+hFLE6hNdaAZq8XoHhp0P+fiAmsHiRAf4BioLAHbUbP7M4RWcHyjHEQqyEVGtEcra7YNdMxLMcokrl5ynk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR09MB6314 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:c207::3; envelope-from=Djordje.Todorovic@htecgroup.com; helo=MRWPR03CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_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: 1779870794692158501 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. This models fixed-endian harts, not mixed-endian implementations where the guest can toggle MBE/SBE/UBE at runtime. 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 is effectively hardwired 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 | 14 +++++++++----- target/riscv/cpu_cfg_fields.h.inc | 1 + 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index ce15a17c37..42d1b3662c 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -720,6 +720,13 @@ static void riscv_cpu_reset_hold(Object *obj, ResetTyp= e type) env->mstatus =3D set_field(env->mstatus, MSTATUS_MDT, 1); } } + /* + * Model fixed-endian harts: MBE/SBE/UBE are initialized from the + * CPU configuration and are intentionally not writable via status CSR= s. + */ + 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 +814,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:44:42 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=1779870828; cv=pass; d=zohomail.com; s=zohoarc; b=A4pUP+ABW0wDavV5f3ArxefLok3Vi9DU9NVMtrKVUrMPkJSQhrTVd6EeKJuyMi4HeZkPJfU5U38WWN+41upOQVqaEfP6+bYZQnxYqSAZ0IgDSxUT0gu40zsuxhXlTZUU1xF7MaImUG49nj/88IUkAXgH3jCFN9y9qxwWosLgfQc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779870828; 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=kpol/+8l63EXw85x9pJTGWP4H5YSpUlEDuZNHL6c2s0=; b=R0KaRCEZ02T4CkIIeIyVDOoxVn2eUVeTV+a/BFWStKVebtemBYRMc1eTqCzgi4rYyTkA0RZrNofvwAsy0QhTlzZVCwyy7AtOvlHs/Fdb4n1lJ38mHIud7I+LNUd9Ec6PUCvglX7i3HFDle8KSu3CDKZIUQhSEL8QnTfLZ+RdYdE= 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 1779870828108870.7850403553946; Wed, 27 May 2026 01:33:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wS9gX-0001Ev-7I; Wed, 27 May 2026 04:32:17 -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 1wS9gT-00018T-L7; Wed, 27 May 2026 04:32:14 -0400 Received: from mail-francesouthazlp170110003.outbound.protection.outlook.com ([2a01:111:f403:c207::3] helo=MRWPR03CU001.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 1wS9gQ-0003yk-Ox; Wed, 27 May 2026 04:32:13 -0400 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com (2603:10a6:102:412::6) by AS8PR09MB6314.eurprd09.prod.outlook.com (2603:10a6:20b:57d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.12; Wed, 27 May 2026 08:31:59 +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.21.0071.010; Wed, 27 May 2026 08:31:59 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gelcZsDiSl6EkI5eUioPhbh0Bd2s9gk0yzio7tAy56cYo1AZna9BSEIv8P5Mth3gTUVv29vClek4SGgshK67QxYsEkt/0HclK2jVAhJJ4YlQlnr29cv56FJuhln6cnnuIZ9tFzVd9GI6UwKB/0gxf4pcLMC/kDfqOwf1Tb4yJPBasYUT188OfXThTA9VB4TvdgbzE61bG0DVozARNPkNdW354pQGrG2kuUR5c5Ws+ClJMIpO4Ry+DctXSeOsVeTP3Yr10KDrx/R6LKEFARewD9aKr4B2JsFJAzHRDqsB8B6EuJL3/ExuCIuCHDJxJRpkaA4nf/7ikNDpFYMk3Fyi4Q== 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=kpol/+8l63EXw85x9pJTGWP4H5YSpUlEDuZNHL6c2s0=; b=IcZPDAU9y5J59p6w+qwZgpFLn5L56LZ7k3VAa7X7Fcws6P6sGzFWMDbrkh4JcLcVZ8q77PxBjUxz5U4PqHh5zDP5KpNOERWvddeNcJZIm/u5tHCLluw0RH/tZ86hdo6mPfnNObGlPdTKpY/gmYG/0rGDDbrXPjER0NPh6WumiEP/QE5c067qNDqf9LhqUFwaRQnVMULW1TiXhWqV06HglX7Jw/MsjmtDJTJkVp6gRwSJ21+ug2MAxi20mqAOBHz6KZwS116hf1wifh/hAttY4VL0U6Lp8+PosEduQGmIIrQ6hNeVpAPoR+VgZPL1X65BUN6y8ub7iNjXYlidElXPnw== 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=kpol/+8l63EXw85x9pJTGWP4H5YSpUlEDuZNHL6c2s0=; b=uvdgDLYVRkoNNbwKoz9OPDkkkdT1MbBOaOoKtvtgaQ0yX8t61z3NDibTy4aSIUW06DbdkqJwpAp3k9n6wYaGU75p2QwHUOUZdAcTF6nfVZIN6o0lHgKNv5PEwOeK/Vj4K+5TBxJJss+MMIHUPSYynXjLqoJaT1PZbBRw846DFjukRT0YKR+f9bgFaCyu+jChUmxC3nqBOMW437+D3BzXdW1ZBHTg28KW6YPt1odLf4TmtWqIWe/c4CKVkx901HxeQBGU0v9g3eVDR9hFAIM8jbGkNByJSR5oQNTCiIVCfW4X7v7MfDH/HDGZ3l3aPTYq3ELQy71xnCkp33AWMyQrpA== 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 v10 3/7] target/riscv: Implement runtime data endianness via MSTATUS bits Thread-Topic: [PATCH v10 3/7] target/riscv: Implement runtime data endianness via MSTATUS bits Thread-Index: AQHc7bNJZXlwmt6BOkeRi6pAtn2UOw== Date: Wed, 27 May 2026 08:31:59 +0000 Message-ID: <20260527083151.17876-4-djordje.todorovic@htecgroup.com> References: <20260527083151.17876-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20260527083151.17876-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_|AS8PR09MB6314:EE_ x-ms-office365-filtering-correlation-id: 212a62ce-7992-473f-c428-08debbca6bb7 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|38070700021|18002099003|22082099003|3023799007|11063799006|56012099006; x-microsoft-antispam-message-info: qLbhjxTsMbfUxvWRM7v/l3L+FC5dWANco7S45iLlElIpibI1bxs5J6H4BrLZi8IV3aazWwesWfuIMXNoKbMojlv3GGZ0NJJuIqGkLNgbcjX2D1QVOYGHqcyjTRgBOXDRnY40ZIklhPfpwpk5ozc28TqiC0iRX5+hEfi2H7Oj3KRArjaZSpqJwio8/vlEbMpZk9E30sIi3crdrmbDRaCnTEN/d65eugDOOcSxDccsMP+SnZxOcoICDnBOPURUQqmjsYo1NHe2l1UvjFwfFz0mT/yCrkt85AUX8zb+dRhyhYTrOpEe4zbBVxKhwo/fz4jvnysH7yafBH4H4tuMV/vgkGNhUk2usul/FdtpX9CEWWmTIUT77tKSESZVkFYMTU7RKtSNF3/LR1WZggEcy+YBPVwKh9AZxT1AwNOT8C/tyw8NrHuZD5PdJ+/BGOQjRg9vM66GNHQlGBeGpTzzxPKKYayflx4rGyAl+ljbHlyHWidyMmJ2BFjMsOa3ryTxKEzLe+MfUKDIUY2L95FUFzypZFW7mjF/nLRKk7wIaDf8RvmVLiJPDG72Hf+0JX46YgtyEJ0mnXwn2uViMU+aX8DBQ+5fMiJ94b464tZshk+l5QUz/CJOOkSSXTkGxWdkuJa6I81HkA29fE7i3H9TAURfpkIlheVEsbTzrFDOjQwCrbWYbGqSItvjUu3yvilg8puPolPBJOhAvTVrdENovv/mV+aEwFiXluCBu5U0zvrWAHGNeMKlFV04Ta8s4ZU48RGY x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PA2PR09MB7634.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(18002099003)(22082099003)(3023799007)(11063799006)(56012099006); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?x9dEdgDvw3k4Axu27S08fHeyJ2WyibmhDo8koWm5znSY7V+JR4hUiAOnoe?= =?iso-8859-1?Q?z9+uxFKFl4AhPsebXXLsGU+kAh3SPLZXnsLbdssKYzHeFqv2d+pZ4wi+4J?= =?iso-8859-1?Q?+N3esH4foo4VIE0ZBURR6DD6I6AM0UQ6NUXoTMO2UTdEQj3EvcOkX2sidU?= =?iso-8859-1?Q?l56Ac8jJgTUFHtiWBrFhLQAyLKDRvG6+YUlqUA+96hcL4R7dMWxVsn2kyP?= =?iso-8859-1?Q?WAdLIdBztsQUVeKSf0dJ1D7cxeIRaGbYPyEHtsAIubwRfREf8XEf64iHd3?= =?iso-8859-1?Q?8JMqu9ic9TxPIyDH3e3eAFhr1/Ji99nnLfUYgh+yhU9WdOIVcXxCVk5Vck?= =?iso-8859-1?Q?QEbg9am2WIFAH+6e+tdJzmuy75iIQNtQA2mBk4aYJo6ZfFrC6EM2/Szcpw?= =?iso-8859-1?Q?BvUVfd/uhUp45QmOPEUpfRqonvxQyCXBeYWQxgT2YGlF/tWLa7GVwUh2NO?= =?iso-8859-1?Q?kOLtzpiDkaTf8cOiSDM26P7sZej+wlYUbQpLaYVcS1jqXxydMxUCa4SjV/?= =?iso-8859-1?Q?pqybmHUq77IYDQIIUIzMoQGHDJGX9w/Nf/ukByOhftmR/HVezOsNbGmiCu?= =?iso-8859-1?Q?bo+yBBGWq/b4rB8diPjzwcBANI2VkFSg+7jmxbtRzrHi6c3JGqZy6Nb+eu?= =?iso-8859-1?Q?MBvsT2Mumhbzlbw+GpTJd3XoIrM6YB9IyZuq/DtUWD6Q0rU4YSZbR5pKSM?= =?iso-8859-1?Q?ixdZbyNxtyMQXkugZoxUk/FyN3l/6G3mMqXdwjVYBfWpDD9m1JlDsqA3Xc?= =?iso-8859-1?Q?vBULeKcJZLcwBLi4oGKEix1UCJu0dbKkmcYXX4bw3ZOr04NFU3qStlT2Nl?= =?iso-8859-1?Q?d3Rt8uiT0rH8THS0q6zGTwxJnCv0wBrZ6vEOf9oDZLQ30zgBCYrN5zLIWJ?= =?iso-8859-1?Q?a22dNWwTAJ4CEkaS8rA5OScLccm6TISD43oaXNLpPqFfmT2UB+90MRTeyv?= =?iso-8859-1?Q?f3l+vYMS3L6pFgoPdM1qgop9gI2k5a9YSK/Vr+QzXDdiVhRwF+MRnAMrJH?= =?iso-8859-1?Q?Fua71Q0ZLh7lPJAqVHfra5ewoS+wiGjn8nrzKF+kp9bq7sno9jSVBVnOj+?= =?iso-8859-1?Q?PVGBor3AaFfT3w6O3qOUbyQ/DYAB0Rxo4MCzI0ZyMKN8FI5e8AzpPJbpgt?= =?iso-8859-1?Q?TtQxGmvBIT1Fzl3wyZgJI6ZeAoTo8rMy5oiqN+rPgkhbqYhYb08Sf4ZS98?= =?iso-8859-1?Q?82RxwUjxrqnyj+6Oo9Ix2Ej2wvw5svFrtNcwisRLLFjDSVmGqQ1hg1gcTw?= =?iso-8859-1?Q?kuZMVqDZfa68e3TolgrvdOzUEgrhm1VPVWaUVjfZJYif/TpXSdC7ba6GiK?= =?iso-8859-1?Q?V+mB1SdWIpKkUcnh8EQ5vnOFK338xw3PqAkFe/M+f6CDAt6G4jSg7U97HS?= =?iso-8859-1?Q?A4UJCUdlRiQ6unH3AkpeKMxH5EUpG+Aioxc1uNhA8fyhpZsfCaMGs63jbE?= =?iso-8859-1?Q?hO/v2SqEwelL/mGZoLM6eJ+ZKSuUIuv52tRExEXNOoW+AsJb54v2plWaiY?= =?iso-8859-1?Q?TXkse46vQSh5+NFzsgdA2duR7dJR5X8qLyBJCJpP3IzlceTWk68frX6f3y?= =?iso-8859-1?Q?un1EPJ1u2yRL58kEKi33ljUX2H1z8XZD0E+rcn1d1JRl10WDTD73mowLEK?= =?iso-8859-1?Q?Wp/WlsF5VaRUmtIGAyZoIaf8gyFWJagYbQ9cz6A6jAJ/4n0UBPsY4+nyVX?= =?iso-8859-1?Q?vwCIvteoNYJ7hb0/oYxMQUVVVpdMH3INqd0L7BqgRZujX0wy8F3239NC5V?= =?iso-8859-1?Q?M7ZVK6dkfXTo28kqalPyOLfDJ8s9ncfWAT/BEcPMkcKfS7oMZ2rA/ZEbSw?= =?iso-8859-1?Q?gaj0GVB1Uy/jK77FKg9IhCCOa8on9O1t/3WLFQz9hwtrJp4EEQfr?= 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: 212a62ce-7992-473f-c428-08debbca6bb7 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 May 2026 08:31:59.7377 (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: fPwU81JsPFXSRML+XlBGmTgJeZwpP+67FMBtsHwrC9cCCK6fjYDTZTs7JjKzhlgiMXX4YJySRU0GhzKGbWtKAwr9MafJaDXbOBsC4rAl7ow= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR09MB6314 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:c207::3; envelope-from=Djordje.Todorovic@htecgroup.com; helo=MRWPR03CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_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: 1779870828788158500 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 data endianness is carried in the extended RISC-V TB flags stored in cs_base. It uses EXT_TB_FLAGS.BIG_ENDIAN at bit 33, leaving bit 32 for EXT_TB_FLAGS.ALTFMT. This keys TBs correctly on the current data endianness. 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:44:42 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=1779870827; cv=pass; d=zohomail.com; s=zohoarc; b=Yvr0I2NJihOH9Usz/MSZYZNM3Ev+kdIFnUoBqSZVoxEo/phg/dh5PMM9N6y3uyeVp4IbK0pdWZtQkVZOfIM8S4xTFAG+NN0n3VFhHejPBQZ0eElBDtArYG8bEKBIffgl0hccRX3mq55pdw1GFp7+yBbcaZuUYy5xAzEMGXj9iBw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779870827; 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=jTsYE1G3V11pVKfZAspabw7rCk6pY8t+l2nmLkmzxLgCmayakm/Qw0GhqeasMczYjhLwyLpiNZ9qjI/Lm9Sc/Htpofu0KaLSFKlM9kqWBialJoUfwTjzTNByFLmUKMOHJeCsAwHSdZlUNI3HldAHUx3iAvQFPrpZu93yTf7wQQg= 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 1779870826803940.7613900580185; Wed, 27 May 2026 01:33:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wS9gZ-0001HJ-7c; Wed, 27 May 2026 04:32:19 -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 1wS9gU-0001Bn-Hn; Wed, 27 May 2026 04:32:15 -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 1wS9gS-0003xv-O1; Wed, 27 May 2026 04:32:14 -0400 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com (2603:10a6:102:412::6) by AS8PR09MB6314.eurprd09.prod.outlook.com (2603:10a6:20b:57d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.12; Wed, 27 May 2026 08:32:00 +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.21.0071.010; Wed, 27 May 2026 08:32:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=V60gGDQZitvI+eaIVQ+P/8O9XyfWWPRRI9tFTWQdGV7QvqQUy6AWx4LkyRIS73Zswi3AEbjtI+NQntSIwovBcebnCeAius6NwAI4RK+B/G/pFNmg39Z/fxE+eF1lEVj1nT2G/SuzSOGTFRgutH82RqbC403EZ1ReJQEf7qwOaFxmmBRwk6cmM2mdJg5bSmFJMv8iJxWCCiFfZU2i/JPqPAC6Tefg9zKm/nwDcArqiObj7QmV39foloyPZiqLvg1LNIGD7yrXEBRs/zNf7QOZm7KFvqkd5GiEZm77o4rnDoLIJTdVuH395T/QoHglHdOgByp03ephguBkf2i2sQBY3w== 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=c1vAiWSz4MuvNqQokkCTl4qnxRA9FCJOgCZAe0vn81TyBSajrbhooM7PQnEZvrM81NzLQedGemCyHu1TD9NGQ3TSs60Ekrk+GWQzaYLAyZt8t6B+grK6qiak75MPFgUDnLszDgyUHdSLyV9stVwdD6T7EzWTqIuqStw/kqvRCWfn/UROQkrC9x6l8u8P9TxopitmpN6o0ZwFy/WHkv2kxOTpnwTr7s8MnE4UscuM/eGLibt0ODfqtCqvPBxEGUZkg+zzwtgP9mGO3nAdNkyI5ynzIYFw++MdFjIaZTOlKgXlKR/8dPpku/ZgwuIEcPT2bl40RtJWlAHkS+SV3iVvkw== 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=jym+VqQ4QGHuSAC9eTCk+dOXh/egVTExe3802Z4pLpncHR2Jz70LiUL28e5YLVmW4/GamT3XhePQQy0Ppce3LtAATDt1tUKSTAI0RzXhE6vHKs862oJWx1ORUp0b247HkRLthsBMJkRzNYKgGCU/wN0TPpRQ8ej0ZCbQkEmsU5II42qb/+RtO6ECpe6n959JjmAiL61xhAjWVSHNR5qA7brOS63KQp34cI1L3cT2NbRKGNgFp5rFvXZ+qmHj0O8XauNQAtaUw+VEWeUcDxu2FZkKcyXeFni8LXVFlhtJMByAuoSvF7kGpscU9mUfDQWL7SyxGPbK+x1QUT908j8uMw== 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 v10 4/7] hw/riscv: Make boot code endianness-aware at runtime Thread-Topic: [PATCH v10 4/7] hw/riscv: Make boot code endianness-aware at runtime Thread-Index: AQHc7bNJQZ2iILPDA0e98+ih4NeshQ== Date: Wed, 27 May 2026 08:31:59 +0000 Message-ID: <20260527083151.17876-5-djordje.todorovic@htecgroup.com> References: <20260527083151.17876-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20260527083151.17876-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_|AS8PR09MB6314:EE_ x-ms-office365-filtering-correlation-id: 2f9877d4-0b23-4a73-a725-08debbca6c0f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|38070700021|18002099003|22082099003|6133799003|3023799007|11063799006|56012099006; x-microsoft-antispam-message-info: 1oOLBoqv55vTKF0dO8C/TprQQ4qEQYMbYrnTUthDK7IWnUKnk6KFpaOd1NJt70nazKMOlhhxJFGmVpsd5G28bLGf+HmWF9otEk4meusA1RWLrM8/PUyyPAHykjWy/nwl7MMXtyHiOQLjQ9L0bV0mnfeNTPF7V9dhdkWccL3V7xC1kd3P5x/GWt48LaxcJNgNuUipLZdbHLd6ZlGqBE7gQ9IX+z0kkzsqfcCOOQuRnGoRE9nPi1d2GOoFqd0qOj6q5aO9jHrNNmyzzq3TGT32TqOlgh8oduyFd7CvAI2RXH0VCZN3dQDuLlcXBgiV+Rk2yyYL2jp8iMThHoSOG+12AlupQuo7iRQJoce8tzClCTlRgpNIIfJrjfbHYP6FVh7YqKw/ZhbUjOxaw+DIo/7kkC+X9MUmcVoNRbmC4RDvfPfv11d3BS65rBq9jO3hTobwZy08moDrFPV1hzo117sQRPlFtGudJLJY1S6daEvyku3YxnJOizvVqgZs85OZ5z0zkSPATDQ9Q9es+JflD2Di7+hgVNCxOllZOLfOjHHbBDwdVd6pympzTETL1Pa15dQklt25vz+E7jplpYzsBbw8Ur2R7DNUcDOXHUBhO/6yk+5PIbcFFtpUyR1jJA1Eomf5NayYNOyqHxsQ6zoIISFO7Mdj7XYeEOYmQsenY/w20vdzrUPHW9R0EvagnStnG1yBYbqHftHLjKL3xixmiyEtLCmH1oOZRpVD0WK1wIhU53T0fWlxossoE4UF86luUU1Q x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PA2PR09MB7634.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(18002099003)(22082099003)(6133799003)(3023799007)(11063799006)(56012099006); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?v+N2SpRG8zBuTGojqnwBSrHg78I5khJfioCj76gmQ8EnrrnuqltilkRNf1?= =?iso-8859-1?Q?WzS0dsQjNVM31W3nl6/fv+xxIdavR7+dBeqPC+3AgfZsd6AYkdhcrAHlq3?= =?iso-8859-1?Q?BNjc3jDodsO/9clu0vqslfTPljoe+2ZHQrfo5oUMVR/UmceTirEmCKR24t?= =?iso-8859-1?Q?/i83GyI95Ic9rnrn7d/sfovhGV/xOEsiKFLPGY2D/PHnDqIbZxy6T9n4ph?= =?iso-8859-1?Q?fe1vpU//wc3NlQNR6hqTd9cw/HvLBcbnpLIGfAZSJiPwpjm4SI6NYMTpFZ?= =?iso-8859-1?Q?iVAOeWDtln1s9RV5RHWxTvImSTn89suMk3ofFpo5kY6GG2nZkcs68PRzz+?= =?iso-8859-1?Q?5b4DWo64tMurnyCXYh7/CKxoJVx/+R/HE0fROzEsbcb1vnUbQhFxE2Yz3t?= =?iso-8859-1?Q?QQ6Yj+CWE3YqbH5dj8v6MFttLM0Qoh9uR/iVCUpkXc5OliXBgVDqxZhmC9?= =?iso-8859-1?Q?UoMH7A1noQ8wbuHeIBXe05uF8AXgI8OL7WqcNXYsy6LmdqTSDaRABFGOxr?= =?iso-8859-1?Q?OldeLaOb720g/LcpUuJL2gNmTi78736mfUPGf/6sfczLlb6hsBUMuFviQK?= =?iso-8859-1?Q?wMhqOlR9zO377R2KE7ag9rOCenS4c300rD6GJ94JtdREZkQNCcjzhx4RD7?= =?iso-8859-1?Q?CH0n2ii83ERdNdIa/FmkjjQ+3ef70R3anM5ctrh7zMfS+HhBa/NyUU94/q?= =?iso-8859-1?Q?NbHa0GAQQJZ7touiY6Mk2D/Rui78dH/rZTC2kZ5Drm1G2B5eaGvZJa7QP6?= =?iso-8859-1?Q?MDEXLVYgGbfs0g57X1eDy19LM2OI9MudUupGCs+J0uMpPuTxi3JmeiqelN?= =?iso-8859-1?Q?PdbpmTotr19fUYbceh6JPM2UDVCoOvWPMTaREPCznIKR7EktP98+vn9SjO?= =?iso-8859-1?Q?lirPJWIzZasFyIm0sW9C/b/Tq5Vo0m7eO2ZiMKLRh7dFenliH+4oC95a0F?= =?iso-8859-1?Q?kL/Iiv2wgy6gkKCxdmq7gLUKBxJ/6tTRI77HG2gnHxkF+GUZH3GP9Qv5X2?= =?iso-8859-1?Q?dZSNhHyApB7zHPnZX2kPXUAhTL3enHNZFoMyN26QeXrP0ofL6xU1m9sNJ/?= =?iso-8859-1?Q?OxIgmuFcJV/J5ArGmlgO1iGqrBeb+D07MMPrXh/34M0F4XXJMMLiWhBeh5?= =?iso-8859-1?Q?jNE71fAIw/rDe+FpePCiRLbjyxJPi8MULbDKmCFNLSsM9luZQ9mbsMW7PT?= =?iso-8859-1?Q?AVFpHlCJyJye5GLxuJKwpAVqp7s4Q2DxfRaQNSlTAdjoV0sm2HT4FB/7XZ?= =?iso-8859-1?Q?H4HYr731hgHFCLBwoeqFkgOi5/H32M5k3WX76l5iSyCi/FHCHMuA9wsVkb?= =?iso-8859-1?Q?ZJKbrmqgadZvquEeAmyMlEB81wfI8BPZ5IYg+yoGPZg2gncOW3+cMa+74k?= =?iso-8859-1?Q?0C39G0v//d+oV3ukDmhFDGnSdLUYZ6FwS/mKEnNoXEacOOxmCuH8yDFL9A?= =?iso-8859-1?Q?lwBIfNYX918l9lDRHZ6qCXc5tTnxliKu9TVlVY27JAZjQCpE0uJpsGjvHl?= =?iso-8859-1?Q?j1WwienYqBNrTVagzQdxk34lwrHrnOfF8X/9oKMpy/Ag2ACek6tUUs8jzF?= =?iso-8859-1?Q?9mPrGmp6lcJrNZnpraSv2IZJJyrKtbRQLbp1C5NjRfD9YIBa2IpUFrQUXi?= =?iso-8859-1?Q?GHtlzilt3pRTvzjm5JD/elBqWKguauxfx+PUThXj1c5eQkBxqFpLFy1Ksb?= =?iso-8859-1?Q?3KZc+XupLgxYAr0XxDxtoJp8uZlSc9iTMiheqQogUAhrY3VZvnBZUENF9E?= =?iso-8859-1?Q?Wqja1Cx0RtenlUfo1gSDmVrzv4TuArLbNul5yc2EvjyToS4afHUtotuPsR?= =?iso-8859-1?Q?kdeJrdRdnuMoCRy5EzH9/6VugDCajzEGpPae51ZTNEQNhbv8NVsb?= 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: 2f9877d4-0b23-4a73-a725-08debbca6c0f X-MS-Exchange-CrossTenant-originalarrivaltime: 27 May 2026 08:31:59.9790 (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: LBGQX/NQcZ1l7XNs7+3/ro6EA/e7Ip9k29p3/nyQ5N7NMCYHfwIbBL+bmrWjcw+JMHxssAeKjaPflNhhFI+9CtG94DlZqqFGJ6wtSvIRHp4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR09MB6314 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: 1779870828732158500 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:44:42 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=1779870783; cv=pass; d=zohomail.com; s=zohoarc; b=SyLCTvk2emH2rQXwX8SIOILoA2Jx08t12dLeThY94UAl6wqsfQekxr4VaqYvN6111xRBNdnRlMACT5pv1UEAWami4T5HRsvUwQb+/zgO0cpQfIY4/gP9+aSTRi17y/Vjz4SlE7fPR/NqucyJe0Fkn+Cac3VGXPCqioWnMxfTGh0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779870783; 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=GyDFIXULTqPUOfGXLOL50hunknnI+inKU++ccM1chtQq84vXkrEZHrhny7oIbgG9Lw0nf2RFvfM3iofx/dDXMSyWJX1vX2UQOKRJCxG2Sol/oJQ5tWIjXJuxyQseyAcw+pAvzUMSi6WM15/YjTvyJkkOL5Ps8f8iJAwRLOvxpUg= 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 1779870783877545.5853260925552; Wed, 27 May 2026 01:33:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wS9gn-0001Kn-Uz; Wed, 27 May 2026 04:32:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wS9gX-0001FU-Iy; Wed, 27 May 2026 04:32:17 -0400 Received: from mail-francesouthazlp170110003.outbound.protection.outlook.com ([2a01:111:f403:c207::3] helo=MRWPR03CU001.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 1wS9gU-0003yk-NM; Wed, 27 May 2026 04:32:17 -0400 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com (2603:10a6:102:412::6) by AS8PR09MB6314.eurprd09.prod.outlook.com (2603:10a6:20b:57d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.12; Wed, 27 May 2026 08:32:00 +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.21.0071.010; Wed, 27 May 2026 08:32:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Zdqzk5Cw0j5LIt5hiFZMM8Hz+uqYDpsYHYG0vJCHrMT69/ZYxu6f034Y10xEOPQ9aYyelzz/Md4DDaDz4YbtG1hAHoLHMxO/CbhEYMsspB21L1vjQqtfHO736pgbTW9evARoJDb8yLDEqB1aAfN2GZ0PQo12z1oN3PKhfzFoAf7INos1qr98rq29+MaYbyEsBuPQffIfXg7KulZ7Ii5DDFvQDiCgzgqqiM9H9E0zKrsYWAFJErRS1Aih/xAdoc9fUPBoAzMGvtorDucB/BjpLhBsObQ5xoty5/vZAETSM6Vdo8uUDtAInf2MyVLeq9Tb40I0fQmqKxoD+HQbPtCUYA== 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=F5l96DEwCuUX8vLB3Zg8u+4o7y6X5PEl2DQsLcKDq4Xw9xbu4ikLx5APp8WUDpPs/6zkLLMy6VwPnMgxEPJ5sowCSdiSWqMGtu+w3TPcC4SeqGxDHdQRqC66YRuQE8HWYzhzizVqUAGntgN5eHaY9UVM7/D91UVT34jJ7N+J588DoXXMYA2KlkWX26/NrzZ5YCiBuNsJxoYo+DzKcWxJCl+AynhI0NWg371N33Ms6NclMVB+amqgZUrLipeS0+ircMjZ8b9v+FHos4PRIwCtTN5cPGLlM7io0oIXcTQlTS7hdYShFx5UxF7WcElyWcDLHySugaazSZ7C75FzGd78bw== 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=dP3x8ZzMJeSbzDCBCz748BrJvF9M1bF9DgSuq7KaofrgZGO3X4UN/owjlGq3Vtgb409t1dhEpMTQobkaniohPxG71Vb2E5aWH354Kb0vLFdf9IG8rzpGJpSyG3EgwutKCHEyM37dK7Vu2JouiCQ/BvNNamQbJT7X6EQ1M8w0eCA+QQ0taTFNpa6r6sUf1HHz/a/FTos3YSIjYDvBK7xbfSA/9A4bZ1sAS0EogExqvCH1iOYxDVxjgk2/+2yr8721Ofs5Z+VkXdRNyDJcxVByIzspl0UFcJg8GsPWsHx+ZEw78kYUJX1jhcFiPNAvEt0xz1G1+gvqaZy6Eu4ABAUpiw== 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 v10 5/7] target/riscv: Fix page table walk endianness for big-endian harts Thread-Topic: [PATCH v10 5/7] target/riscv: Fix page table walk endianness for big-endian harts Thread-Index: AQHc7bNJ7UAOLkUofEKf/bNON3MNrw== Date: Wed, 27 May 2026 08:32:00 +0000 Message-ID: <20260527083151.17876-6-djordje.todorovic@htecgroup.com> References: <20260527083151.17876-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20260527083151.17876-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_|AS8PR09MB6314:EE_ x-ms-office365-filtering-correlation-id: b0a3c141-3798-42f4-a93e-08debbca6c39 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|38070700021|18002099003|22082099003|3023799007|11063799006|56012099006; x-microsoft-antispam-message-info: uQkeF8Re5D27if+06UVwQB2x0dhPR6G57jTfpaUTLWzJP/w76CQSRTOMcUa9LWquXMj2a0aQ1w1TbRwJzt92AIfEKo3oA/p6Edtkffyivh61veSudXdd7OSanW6XH4DXAU9MvsDtnu6DiH7nf4EHMnuO0TbKtRjuGp6hiKyjRfB8aDVLu93moLEdH3GhIKSs3Bk4aaVaCg8HScVopRVqDyWSc9n6THLXEF0b+jpzB5oWaWlw90VmbCrTJueqcoOgX95pNrhFUlQMhNKTEqB6PANxQ8syZSsHUnolJIc0K5zz1UEoMh7c4Qwu5ZqIt3OzpOP6WRKq6xHo5lgqlAtBvB5GJwjeisTKv7BMo9wVyZ66V8kgCm9mQ9w3cANER+4DEArX4rSSHX5VOj286s2SeSAo8BGhU6WHMHxVPg3erXQWcFV2oSPM87DjrUQ+IyExTZdl/58E7WAPWgRuh1WyPkwPRz5EeZi5q1mNB0xDbce3Md8wlZmFASpVYVvdmYE9Kj91XMpgsxP/Do4pyHQ39xOE9e45priyyVsh8QWbWsr5V061EbySB8LGGgUVhs3VruwWG642HahSNxRIjYO2JFt3Cz2zoObE2DCXpCGI+0r+JpipDtSScQVgQU8znQf3pJgJXvKJbM8dv8HxdGoZB77z9vmAg0kPWgjQ0MPl6FpKrBBAZFsoYVViFYFtjovxXGRqsFeAoqDdlxuGP2ob8hv/VZmlgzb4BLui/TyRTDRyh4J8boOnJS61WCLPTzK3 x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PA2PR09MB7634.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(18002099003)(22082099003)(3023799007)(11063799006)(56012099006); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SnkyUlFJQXJVMmdsTHRNdGFZY2pLNG5JUDJyM2lNVURFOWh3emdEanZDZDRx?= =?utf-8?B?djg1ZDBya0IvNnR1L2RpbHVKdE40UTA2VHE2b1A5MFpGZTVHQVdwbGgrQ290?= =?utf-8?B?Tm1YZWVmZXFkT3ZlUmpDYTAyUTdlNE5FU3ZTczRJakVRR1VvanRrSXZGa3Rm?= =?utf-8?B?NitaZWJJU1BqR1RDSTR3MGVlTFUrUXllbjVPSlFOSGtIVTJ5QzJpQXBZNno0?= =?utf-8?B?KzJEN0RqeHlyUFU4eVJzdHFkY1N5SktjNFhsQWZ5cEd6NEFBZ05yRmFWOURh?= =?utf-8?B?Y3pudFVkb1VwWmNFb0hOTzlQa29IRWh3MmlOL3hVb3p2SEdzbVlpTFdVZzE4?= =?utf-8?B?bnIxazlQSWRrVWNIRy9VVDlraVpZRGZNS1FPWHFIOHFJdHo1YU44YTU1R0hH?= =?utf-8?B?MjQ1aEd0NFF6MzVpTXRpQUFaWkxtMHNsNU9leVc0cHI2dGQ1cWxTU3l1Ti83?= =?utf-8?B?L3A1VDNGUGl5ZStzeTRDL1MzNkNZOEdaMDlTUmozbjBrbVZPOWFaRlZMTVFs?= =?utf-8?B?WEg4ZlhaNS9JTE5DRVlDaUc5YXE5RWM4ZFYzMWJnOUlNU2hrU0F0ZDFJNnc0?= =?utf-8?B?Y2pmbk5UL1dHNU5XbUJmZkZwc1dHTERNRmhsUzl0RGtZdFExMDA1cGdCL2p2?= =?utf-8?B?RzRvelkvd0piblBnalZnVU81akswK0RlOUpYbHdjcFJibEpKUnEvbUxtVElM?= =?utf-8?B?NjFpMUNLS0loVnA0Y1htUnNQYWxYL3RQVW1xZDB0QUMxZUh2TzBEWk40b2l6?= =?utf-8?B?SW4rYlBXeXREUnBjWlQ4c0hhU2xKeTZLd21SOUtSMFJlcU9pVndNWWErb3ZK?= =?utf-8?B?Vlo3cHhVZytmT2FwbHZCNkdISWRHRlhOLy83czk5RWI2Y1lJM1JvS0R0djRx?= =?utf-8?B?a3puUVJnUldiU0tJNHdQeWxqNUtWMGFaWkVQTjBnU2VOM3JabWQ3a0dUWU5T?= =?utf-8?B?eVNxRkxRSi9BU1RDZWpONVlnVHU0TTREOXJ4dzBFTG1WTGRSQ2cvdnVmSTIv?= =?utf-8?B?Z1JPUmQ2SCt4QjBFN1ZNbEFwdXNBNmluOTFyQXlxUzMyMFRHWmw3bTVGT1ps?= =?utf-8?B?aEVpODVLN2dPVmpVM3hoRVNMdUdvckhnNUJudXhoK0RrZVRBQkQxV2xkZGlR?= =?utf-8?B?NDRWb2t6TGozdGs2U0FabnZ0N1prVEZYWWNRSUVjUC9uMnNtcTBTL3JVZzV1?= =?utf-8?B?cXR5bjlvZFl6cWRuRVhLTkwrUWs4QTRpN0hFUWMxMis1aUlvZEtaczdXZncz?= =?utf-8?B?QWFYVEFjcWFnOHVweVJvcktJZC9BQzdEeE5Pa2lpZ2U0a3lDeFlQK3JSSyt3?= =?utf-8?B?d1ZuTUtCdmZUUHRoTXZFcEpIemxGQUJxSk5UK05mb2Q1UzlLaVNibzJUdXBi?= =?utf-8?B?WGdmNEQ2OUhVTWsyM011K29TYmNXaGNBQ0M3c0V2cWFSZS85NTV5SU1mOFoy?= =?utf-8?B?N3crRTU3MldSV3l5aTNMOWhNQUhqZWVYei96c2IyYmxiSVVBaDdlMGE1QWJw?= =?utf-8?B?SXMxRVZZRzFzRHpQZWZUTWpwamppR2c3RzZSbFBqMDFMVlNFcmRBSWtQRW0v?= =?utf-8?B?UVNvSk04OGk5bFJpK29TYy9JdFBHc0Q3cHgwYU5OSFliMElSZVp5NXk5empk?= =?utf-8?B?QUZGVVY3S3kxaXpEQWpUNnEwRkd6alhOMW80elVHUFNmOWtLYmRwQWl1bDVF?= =?utf-8?B?dnc2dGFrWFF1cm5DRWdwVzZveVlTajNTQVB6bTBFdWM4d2FlZ0RIZGtqWlRr?= =?utf-8?B?NEJiTkl3c0wrZzVLdlFCZkVrUkFkT0NoYXBGdGZ5ZGw1Y2cybFRId3YvbnVm?= =?utf-8?B?d0RjNm1Gb2lNeHJDVDRzSkxqMTNIK0RrVnZ4RU5Lb2h6Vm0waHVhdmdRZWh4?= =?utf-8?B?R3lyYU9UODdQL3BBa1VJK2NOdXZPTmdWajVKeThXM2pQUzE1cVlscUR1OUI5?= =?utf-8?B?RXh5TXRzN3VSY1hCZExaZXNJM3Z5ei9uUWc5T3l1dldEVTVLT0ZXcEtzN3Av?= =?utf-8?B?cENUeHlpWk5hUXJtZ1FNWm1jTkFRRm1GcDJGdTQ2bEw3ZWI4RUdxSkZ5bGdG?= =?utf-8?B?K0JGM1dvNUUzdUVXZGtRTFg0cXh1U3ZEb0lPeEV1dzZXZFh6VTVnZWFHNnFH?= =?utf-8?B?OGcxa1lha2hMODBWZENhUjRxNHhrbjBremY2TTBhcDRlTzRwT2ZlR0xkUGha?= =?utf-8?B?VzRMQXVSTDRLQ0VoZGJQN1NUUjUrT2s5SXhETldvSTF0YW5kWmRrU05veWt0?= =?utf-8?B?b2ttWG9WcXh3TnBPeG1PYzNqTGZML1Y0Y0hMeWhxOFg4WmhyU2d4TFdoa3o3?= =?utf-8?B?TFBhMmxFNGVpcWUyaU9HTjNZMkZCUmw2Q1JKQzBvMmFPTWcwYnlyT0FOZE9m?= =?utf-8?Q?/awYopf6DPhZbGhhhBo+NnhLQlBPXTu0NBMuX?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: htecgroup.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA2PR09MB7634.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b0a3c141-3798-42f4-a93e-08debbca6c39 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 May 2026 08:32:00.2384 (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: wq5cRlbtIC1xdu9P1LvZLE6iunHXHIiaMnFdror7oWLOsYoKvpVx8LPD/eR1TRDBk0OBnPuorMdyi1sctUCy/IEt/8fPSWzha+jU5nlNckg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR09MB6314 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:c207::3; envelope-from=Djordje.Todorovic@htecgroup.com; helo=MRWPR03CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_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: 1779870786278154100 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:44:42 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=1779870829; cv=pass; d=zohomail.com; s=zohoarc; b=KKf4g7aCtLZMYGILxZr0mIxlIXW4/sgmjr6OSZ2qth/FPjRjOw1kX5eN9i+YSLKTCEU435tQ4pTFo4HjJe5+FOCbRjPBujLVpsIRAnyBBANSdtznqIBPBerwRn+5AqnQtdI/ePvQXa6lnaHmkQNRaoWUaMcFDwj3a9TzlOPTjCM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779870829; 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=EodHH3ajZBCu9QLgL6otieUKJJWjoS/7gqwcpP2KMhY=; b=nbM0nKff0yafCPhCyzFvGTWo0ZLP5lb5i63ggy0+jJSkd2gPmymahrYCnXc7sA+4Tsei52v5+D53XxkpRJy8g/4X6JhphFofa/YcrRLq5yxECUH1GOduHGdv1Jrjk2On4agwr/YQHXm/XHDXJFKXCvl9RXJLWHpyW76TzwiiSoQ= 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 1779870829406634.8417256999433; Wed, 27 May 2026 01:33:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wS9gc-0001J4-4O; Wed, 27 May 2026 04:32:22 -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 1wS9gX-0001FQ-Hs; Wed, 27 May 2026 04:32:17 -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 1wS9gV-0003xv-9b; Wed, 27 May 2026 04:32:17 -0400 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com (2603:10a6:102:412::6) by AS8PR09MB6314.eurprd09.prod.outlook.com (2603:10a6:20b:57d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.12; Wed, 27 May 2026 08:32:01 +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.21.0071.010; Wed, 27 May 2026 08:32:01 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Uo5aBxarWnfgXPPhznybOzHcxzx4h+44ohS1gKPVvGxmEl8RlNCaVEXunsKmasvTiDezFYu49nix9s0ofQ8X27bJxQZEn3sVjPViwnyOJU4NRc0yZXmyZB0jVRV/4dBSGEahahrpkNvvTAhG8Km/TGhDggd4CKd6LpEj/Dv3rY/KCKW/rFvrM8wNwPXG6RkhaS/1pCZZF58O9Wmb1flLC/Rq4ElBK0Gj3yUeFIVhLmf/6514MLf144uBabOtq+DI9ZoRvDK2smqaTn6jgdq28XEzTK40G6fPv2AuKDKZv1qSXjKV1GurlZqXxC442KFVq/wDGYLRlzXENZ8KMokGkA== 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=EodHH3ajZBCu9QLgL6otieUKJJWjoS/7gqwcpP2KMhY=; b=w5EsNnvpjJLXABHFP5GigH6PNflj/0+3A+CoeLjARAlWNxHWwdlOMW8Ah/ATPIigzsXaStMopdRukgA1vvn8jna+f2foSl7JZt1e1IF1e8W/AaJKaLKdBikjOg0Fw4/LnEHcIbehjXGCNw6Aelzb9ux/c2lQ6nHTsF6Wvp/mgRyyxeUkrbUXIrWvxwRiW+hOOJhuAbLwW91kmUCt5hMvAdY7aL7OnWrDYSrcOCVTAyAcAsy+jPOnZe7USNXMSNyYu6BLPGGyqvh7Zp9Qv4i1ZptGy3rDxOeY0f/ULWfnhLLOBRZurSvfhYbpG9zhFbhtONMnthYOtPvCvCx/ltsvOw== 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=EodHH3ajZBCu9QLgL6otieUKJJWjoS/7gqwcpP2KMhY=; b=YYH+awKhPzKCglAJEQBoDYkEFQGoXV1ZmPx5AHEGT23nCjQWLvC2H2G2Yzhhwze7xQFxu0nEy1Ri6vIbrDpI9wcq86nHy99yZAXul1WGUN8mRMtPLaXYT/VlNJU9kBiwTRWWDkKv40Liys+Z77vHhbM3OBdySgHNMgV54S+oTJrm54N8GwWDIutnAGClgxT4/riKMgvznd76nwNcz+bjbeUsSUNiUXaQ4Y7GilSqv1RJxflnrrkWapTMhOHn7JyZqT/PN45j8/doCWpZxFymBgT+JkEyW39z4lb7eGn+2KY6nGehIn3frmaDRAW6g+8H+dMmbjSshcrhGMsNmmaQqA== 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 v10 6/7] target/riscv: Expose big-endian CPU property and add documentation Thread-Topic: [PATCH v10 6/7] target/riscv: Expose big-endian CPU property and add documentation Thread-Index: AQHc7bNJmxAyTPNjUUOvcdq2L2i92g== Date: Wed, 27 May 2026 08:32:00 +0000 Message-ID: <20260527083151.17876-7-djordje.todorovic@htecgroup.com> References: <20260527083151.17876-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20260527083151.17876-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_|AS8PR09MB6314:EE_ x-ms-office365-filtering-correlation-id: 3be0575d-061f-4178-daf0-08debbca6c77 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|38070700021|18002099003|22082099003|6133799003|3023799007|11063799006|56012099006; x-microsoft-antispam-message-info: pfKhPr7fQaCkG8bsBeKeD2CxcxSiGDwUT5KOdxFM65aYLorQE++2jvVdrv6G0/65PzISIsQ3IAfgGRJRh5OJmes0J/5EzyaWgI6Vg0uD15FciBLbPFEZ1/11XvTVLaUli/EReABiF7d6NZklm/KJpvokEsxKSQomwGj9ewCFEUOr+zWB00vp5zWRgXYTaJCA3YpV+38b0qpbWSV7nYijaND+1nQ56IrAqNsRzbqk0mjZRCkSKzGSthPtm1R1wWZT5JCxAWXHtDURvflBADEImf9aNVLT2njC3uQcdErfUxoGoHzQeUyYaC17eBf1gbkNNrve7FL2XXm+1BulBfKSZot5L1YlmGZqc3RB436m2w8MPbQ9+RYDXvewmCs59fGdyOr/jpfQcjkSC15Qw7fmXflohrkyhvfEDhOGq2Q3T38k6vz17ckG/jJOHXZ+uVpjDhaoCrvWlR3dVdHSdIPb7wpaqkw6OangP+crhcJBpX0PBWAneYIkes8wZZH41T29CKQJ1i9i6+Q1pPbNsPk0URwzNHdqSaflHhhXtKl38ulCaHsiNiAYIAlCuD3QGFN1+uX/18m/HDBWnDKC0ETMCHSKtpEVhnP/9zlONl80lOUa6lGMt+ybUSpuYrAk0OWMZXqJ947ooj4f2GyTb+XYM5AV9UBuiRh4q/SGn/cP2Lo8TDzJ9KH2DsG1tvIl3WHn2EGdP91bVUS2oY9wVcXsBbo3d+BeJ0O8/iGlWDgtTMQ8qjpmJ9hCobGc78aXQgtV x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PA2PR09MB7634.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(18002099003)(22082099003)(6133799003)(3023799007)(11063799006)(56012099006); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?Z/PvpL572pWBzvTw9jaxZPJ5L/1ziC6bTLl1sbxRu4kC1ZcQk5k3yuBgad?= =?iso-8859-1?Q?ig610eW8ajYbUOJ5RTdu5Z0L3sx73KaTJIXajt+fDCoj2nKfpqNCbqPSJi?= =?iso-8859-1?Q?OTaKx6fyKaPmqkwCqEverx/Ll8x6gMPzlyiR6Zhfb4DXkRT48GOvuW3j6h?= =?iso-8859-1?Q?Rg/54ydBD3zLHnj1zolUbk1BUEpaAjPY3H2cXDiyvnkl1qmcKKT0nODTb+?= =?iso-8859-1?Q?BF1auvM39/P+LWyekM1HGp1o1sCGT6oK72OiJdxQ683P5+9AwGS3wcPuDB?= =?iso-8859-1?Q?DlgahAbVLPSTlnW4cG/J7yNT3PNOKk5H1bglt777vAmzxW/gQgE25N3v0M?= =?iso-8859-1?Q?1d4p7wt+f5elhP/bZdujnbAKQMYZ4ouTJSGuIS/lb/d5T6JGBE0+7QKNF3?= =?iso-8859-1?Q?C1lN1kWkD17Ee0e7yeOlcBcgw+7H5R4sL65AqgxDfL+GHOz5IsAjm6nVfs?= =?iso-8859-1?Q?IUPMNICm6fjOCpttTKT2D3Wn5zkT8NH5lbwOdfTdQ5304l3HJ1/+bqVTsX?= =?iso-8859-1?Q?em36JGBfkVJflceOha+KJuPDF8HolLkDYCGaCfNki9QvVKvz5hgqlahnc3?= =?iso-8859-1?Q?55oS+LmcWVTIooJ2ZWznrBkmJafr9glaUGlWMrnIWAUkRNFKkfnhTQC/oa?= =?iso-8859-1?Q?oozjp66dP9fsEiriu2Cjk278DGHRAIgGV5cFlvNJcp9qGm01kTsr9ONnaX?= =?iso-8859-1?Q?QEuXWiGWZbRvKjG4fnljj7WByknRUSchzFjiu76f37yngWit1mILgAOkno?= =?iso-8859-1?Q?f+r6qam5U6LPqm2lC7Lbk8G2LLrmYb6iFf6CZaHzKhG6aHxeZD8acGfSNM?= =?iso-8859-1?Q?9J2kxTSYQ3Vp7n2tsiRB1pK+lK2d6vlc+dTHsBnGr0QGtBhSENhrLduIL7?= =?iso-8859-1?Q?HYM6DKB72KkNLc2yWgRX0wGsMnrF2tSdBtyNs5vraQgnRW72KFzTeHuVWJ?= =?iso-8859-1?Q?EFG6GDexxq1T1XtmXRiDU3K4EPd44dQH2KT+uM1zL3+JxcgncOE8lGy/s8?= =?iso-8859-1?Q?qr32hDqia7OgMzxNZufxSj2yTk/FPmuc0hesSQIjDYoV8MFPlzIBQr6b1s?= =?iso-8859-1?Q?+53BpB3h/XK94U+t3wh7qVtE8Vxv2PXEf2c2zYZGpbJYpcPoUXufJ2lTBk?= =?iso-8859-1?Q?34n1Y6n6m2qo48AF/rniEbEl9CNw8CkKnuiQAZAVxCwP8qsq9cspL6o0V9?= =?iso-8859-1?Q?lH6iNRhfKKcoVr60QBNaWBvsLEewtgvZ2lPyU4vMychDFOzMqgs+ISaoj5?= =?iso-8859-1?Q?E9Q7dcbd3D6ejOsxAFdhgtS6dZBR3PevXz8cJIfeg6KmNmg/d/XlPJYift?= =?iso-8859-1?Q?e/B7DTrrvSj2+yZrU8pz90DQaV8dZQeTdg+S6zNpF8BaA/GTj4XDye7ULg?= =?iso-8859-1?Q?iTw0vrWyl3fSRh4xzpQcc8i17c7hm3VCAms8pwd2HawkeJ0sJkr+l9jA7D?= =?iso-8859-1?Q?vlfKRlOPcibVkH0BS9wYLtaEj6dM3eJPNH9pzigJUxqhQfzEfZufUerPDg?= =?iso-8859-1?Q?r7VAUm28ap0UArpj7Bz9oWeGvpBHaX9xe/bll+ccozM7xbxkPJFU9Rp/s7?= =?iso-8859-1?Q?NRPAGPs33uLra7C+k3wloDkUAtpJDfRdCRXkG3/N+cPZUWDx54O7/CZltu?= =?iso-8859-1?Q?mvPKcJ2WUXLuw/nhOGU6jCZ+DUCex78vdfCpizePzR9Sp8LvKB0qg2U5fu?= =?iso-8859-1?Q?hGnWqYgbBRRUG5Pi8vqAEz25OHZb+P1wP2gCicY7JRDMFLB79/s2DTBuAY?= =?iso-8859-1?Q?Stsmgx6LYQL90RUCwjm4jHNPLkOt1IiQ2obNEa38hSRzF7M/drGw6kX0uV?= =?iso-8859-1?Q?q48WqBG5eUclUjZmvxT78lIWtwlVd+fmkNMNWlDriV36RgU10wwh?= 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: 3be0575d-061f-4178-daf0-08debbca6c77 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 May 2026 08:32:00.5466 (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: MKpBHv4RJxNBGECmZl/RXq8s8CdzbBUJOIHdOs4zFxLLOguo5r2vRD0plPRrHvQkRbp9/0sejOPNu1gT99MHN9lVht8f9hKqsoXKhYLdLXs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR09MB6314 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: 1779870830780154100 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. Document that the property models fixed-endian hardware: it selects harts whose MBE/SBE/UBE fields are fixed to 1, and it does not model a mixed-endian implementation where software can toggle those bits at runtime. 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 | 29 +++++++++++++++++++++++++++++ target/riscv/cpu.c | 1 + 2 files changed, 30 insertions(+) diff --git a/docs/system/target-riscv.rst b/docs/system/target-riscv.rst index 3ad5d1ddaf..afd86ca2ba 100644 --- a/docs/system/target-riscv.rst +++ b/docs/system/target-riscv.rst @@ -95,3 +95,32 @@ 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 does not model a mixed-endian implementation where software c= an +toggle ``MBE``/``SBE``/``UBE`` at runtime. QEMU's RISC-V CPUs treat these +fields as fixed by the CPU configuration: they are reset to 0 by default a= nd +to 1 when ``big-endian`` is enabled. + +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 42d1b3662c..d93ee532df 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -2661,6 +2661,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:44:42 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=1779870828; cv=pass; d=zohomail.com; s=zohoarc; b=Q3Z9iH0R4tuC2FTw2GzEBn3k1BCU5d7rfQmIg+HcxMFfHjMOR+3WI/PPAizXLMpbV20laxTYu+XiDrBeqezWfyhcEm+2hRyOg5KhdgjDNSq5kX+Y/EmOOU3VYTn6hvC92a/thay83g5UC1ANXsMLEQxEokU19vtXOSYvqFck3QI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779870828; 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=IrUGuhNg3c/ISomGe0r263ELdC9dXFmwQhzVBuoOZpLXLwUFoMlfh84Ccbuy7BvyCzJ55hU0tuRcjR3BS7XMZThhvjW+NYR2Rttv6dOJjDcZ+k/mY71+ztZm0XbmbkkchXvKOKh792sHr86Zvp7xmGmr44PW85F8orFPtErY9wE= 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 1779870828246761.8664027933762; Wed, 27 May 2026 01:33:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wS9gs-0001TC-1S; Wed, 27 May 2026 04:32:38 -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 1wS9ga-0001I7-75; Wed, 27 May 2026 04:32:21 -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 1wS9gY-0003xv-5U; Wed, 27 May 2026 04:32:19 -0400 Received: from PA2PR09MB7634.eurprd09.prod.outlook.com (2603:10a6:102:412::6) by AS8PR09MB6314.eurprd09.prod.outlook.com (2603:10a6:20b:57d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.12; Wed, 27 May 2026 08:32:02 +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.21.0071.010; Wed, 27 May 2026 08:32:02 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=unqv2xKYv1lze51e6mWNAN3+AhqAlZuZcsf+rTtAZcTXJ4KEZcdelYoqju5BUy08vBDlbtA7rqPFQwfOu1RzPmR0YZS9aKF7T36ufuaiAwjLb8K0Df4ojrdbAoenIYyRGroMjsq2UwrLLWob/AjcP08gRYWtc3B7aayAVP0EKgPBlthBOQQLtCOi+EM9DzurSM0MBpEpKr8kCsoBYD/jBieeJ1x379R1z3jMHOFQc90Xxzs3bDC/5Z2jnVlQ2ClyGE1mmC1lJCS8RyWKp6Y0qF855FZNIb22kU5mQqA0B/Ed9PyNxIcbn16CyLlqaule+YBWdTUwYl83Jzvey9bAkw== 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=T6Qo7BeOT/9w1yBcb79/LuTxshnu0vZDKQFU0jBpArp4uHuS04x8G+A7PQK1wrk/A3z4E4jhAZ3T5MUbykrMX90pxqBSX6qy+9G94wtFHCpnD2LhovW9o6Gnpk3gcc6+7X3Mx5EgiGL4Ngjdcn/lutKTQliY++oZvaBcUvZ/lMNQ4VLyYX0RiqiEkPErSa7mj3nKnJLYER+be2I4cytlqLgCeqjVsEfpbWlFmb/rNeKC42ps1PYTRAEzk2lNnNMBei8sREghgbEbcgOltIVx2CNIb6QW39HsVyZL8aTb61/kNBZCgG9168XI/E5B39v4/Cch0pSBE/59oXlVaTIXQg== 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=Y7pgzq8ZGPlO8aRHGw7csfYS16DyAzeWXs51JZjPcmYkdO7/KBxqp++Y+AqJgimSX8F99tsCMih4Ly2aqHq2ntWVOtwIPDHnAkYckJ4nl0CSRWNrbvDwaBpDmFTMgdbA7kNUir4B/w1ySJo57Fi2JRJwyt9bms//2XIMcou+QcRsw4pcDKoIO+PjM8w+xfT4gLDfkaTtMAriWD2o46YTSg6GZOQpKLLW5VCs69frabo7aTBGWI0cRpRQH+UeQ1dp/vYXeM+8OSdgsPWIq3l6xDblgxxi3DvD6UvT0prTGFRsXVCxGXKB2d8kNH9N7Y0utk2hdQIOzy9M7hPUZl9gag== 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 v10 7/7] target/riscv: Add endianness test for RISC-V BE Thread-Topic: [PATCH v10 7/7] target/riscv: Add endianness test for RISC-V BE Thread-Index: AQHc7bNJzVhtAv4qgk2Le7unTAT5ig== Date: Wed, 27 May 2026 08:32:00 +0000 Message-ID: <20260527083151.17876-8-djordje.todorovic@htecgroup.com> References: <20260527083151.17876-1-djordje.todorovic@htecgroup.com> In-Reply-To: <20260527083151.17876-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_|AS8PR09MB6314:EE_ x-ms-office365-filtering-correlation-id: 1ec35e9b-9383-4de2-4fdd-08debbca6d4b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|38070700021|18002099003|22082099003|11063799006|56012099006; x-microsoft-antispam-message-info: +9V9SPl2ntSsmR5AbfszosZidy6qVxbbTQgMy+aX09414oAZ6Kp3OQ/QcLlsFjFguYdlo0dxMLTq8i2WrD2hkQO/Bn4bUhdoXxeDfArsyPDRImxLeD7hA21SMxhNc6wQ8MHYezArroVYSyN7Qy6bLTaTyDa5wwPtDDgrg36seS06VWMgEMMAGTRIxZc+7O2ncPVBWbfmQKere7rWs7t8Ap25qXevXHsAdb6ycE5FLIp5/mhHx1mnv6RWFGV2Y4YMLeJCMW1us3m5rbuBFXik8HcAPd+exNkxlB0MG+NjwiqqK9nY04m4mFkJqmBA0davoCSQMbjcen6dddN/6j61JVCafPrilBpvB4CwwhGIP1JJP5H8jRcHnUmetlLnDDbyqt1J1fhF8htY3Pvq+ezjtiHPs5gKUvrV16MlN/7uhLmaMhbic0LcDkOcU9OEOVroaqggdB8zsjBwspgZDBn9lOZd/BrpLNy9wactKLXoAldNhCyPLyKHxyv2GpSNtjM8NBuL19YKdiIrptDLnvX1igqhOsCMHTCc3ZzkGWn4qISMxGN8EU/lA3S34+jGgkLzVBLQJ4NYFRruufcwrKIbX8+OaeHjb9ggFmIy5Mj20vGmX/11HUl0qqlGzOY5sr2tzCLP6tll6RowVc5S8Y3eS6uIinpduITrVP8fsEzpwZoJypz55krK8wBWganIM4Xbwgh3T9+g+2pd6VUxu0Ubwoj571+yJQYApIflNFLgZN6ReGsmDOws0IM1UHlZyU0L x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PA2PR09MB7634.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(18002099003)(22082099003)(11063799006)(56012099006); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RG8wQXpocGhLam8wNXBVNE9CTFV3alJyZllQMFgzNStRTVkySG45TVpqd3Qv?= =?utf-8?B?YjNuK3NtaWZwSGtlRjM1bW40VUROOU9MY0NJdFV5a0lSaHhlYitGeThRUEZG?= =?utf-8?B?QnVRelBpNUMwYUxSK1FFL2RkY3NRaE9MM2c4c2VJTTRJUzRlK3l2RFE4Nmx6?= =?utf-8?B?YkFlUWNwSzg5S1hlT005TzVnVE1VVTQwcHJFQitnWFE0bFdkU0ZrZmlQZ0g5?= =?utf-8?B?SkYzY2wrMTgvbGJ1TDh3bjBnckpZa0tZbUF3cGltYU5mY292UmVnVXQzVXNs?= =?utf-8?B?dHlsdUYxTHByODNEVS9NNDBrMW5vcGRCb1ArSjRBUkwydEcza0VtYVl5bFp5?= =?utf-8?B?ZGR6WmxRVzhiUzVQMGJaWVhrY0l4cHhCSThZNndRVXYzM2ZWcXBmZ3VYZGRU?= =?utf-8?B?OFRVVFRYa21lZERnQ1BjdTAxYVVtK1VJN0RubTNWQ3Q5MXlIZE5SMnRTRGQ0?= =?utf-8?B?ZllGSUIvSEhhYXBpUnRkRFBtS3MrK0F4WnJUYlpzV0l6dmZMRG95Y0piOGgx?= =?utf-8?B?V1F2QktTK2g0N2VCc2ZZUUJsV2R4NVVOblg4eUU0K2FKbU1GVGEwY1E2VVow?= =?utf-8?B?UzZ5V20xRndDUHJIM25ieVZYTGNBWEpoU0pLaUZDcUhoZ3ZBY0xXOHdUOHZD?= =?utf-8?B?dXBZS2RyWVN5cFZEckdVMzdVRHhKSFNWYnk5TkhJWVpSQk1sQXUzVU54NTlU?= =?utf-8?B?ZllFWGtxcVBLY3FJNkxWOXVHQk04cVVLbVhsQXpOMTJVbktkcWNlWHBwSVIv?= =?utf-8?B?ZWlGZ1pXRnBBWkhobittcWN0QUxvaEorc25TbUhFMHVzQTc4d0hjTWNMbVpy?= =?utf-8?B?My9aeXNUcnoxSFkzb2JZTlRTeVBBOGNJWHlRR0s3WE8vOG9PNE9LckVGbGc2?= =?utf-8?B?MEh0b1FqV0pvc1JqUlhVOERTNzRkZFBubFJkNytoVUVXQ1Vxc2RDcWQ1Yzd5?= =?utf-8?B?dyt3aU9mS3NiYUJBdWtYUzViODRIbm41K0pHNHcvTFM4dURqMGJ6OHRmY2kz?= =?utf-8?B?ditab254bDZkc0VQNW9OMXY2KzlkbGw5Y0UyUmxLRnJKcW1vZEFuZGVyN2lu?= =?utf-8?B?Y243MDY5MVYrYkxkaS96L1JzR0R6OHZMOW5zYW5pekFrOGM3d04wVmV1ZUtx?= =?utf-8?B?K3E4OHRSeTFyUUNZN1VlVkxBblptZ3ZoLzBTcjRaVCtkVFdiT2lpZXlwZ2Qr?= =?utf-8?B?eWNyMldLQVpzNG1PcEMyTmRoaW5Bek56WFg0cUxubmkzS3F4MExaekp6Sktu?= =?utf-8?B?QjVsbnZkc0IwdTVydUc1U3RHS0xXcDJMT0N2WEp5VDZUbGJUNG4zVFBMQTVE?= =?utf-8?B?QThUQVdwUGNianZSU2dydHVMWWRRWWppK3A3cGxPRG5GUjgreUt1dTczVmpr?= =?utf-8?B?Vmpqa2VNZWVrZlMxa2Q2MGMvSitxYWh0cUt0bm0zY1VHQm1HNmZsVXhUVGJk?= =?utf-8?B?ZGYreVlyTVpEYVlwaU5iNnVXL2ZmcGkwL1QwMXdtb3JVc2xjK05zZUZPZjcr?= =?utf-8?B?aEgraTU3bE1sZEpodW5mNmNRd3FjZWFGZkFERnRuL2hnd0UrWFRmSGFWOEll?= =?utf-8?B?Y3lSZGRRY1pSSFl2dEFKcnc5UGlFSUM2dFFScGthMExFcmdBWGFzWDZTVHdx?= =?utf-8?B?ZHAxZnN4V2NOM0txMStJMW9oSmhzNnNqUjNmRUc3UnQ4VG1vYWFHNlhTell3?= =?utf-8?B?Nm1BclFsKzNhRVJTQkI3UEVqRDdEWVF5NWNYcGNBWUwxSlRjeFlETlFCNFll?= =?utf-8?B?Mk10SW9MNDJMNWIwUlM1WmhoWEgzSHFnWVZNNUZHblF6aDFXWk9vMjE2dEVG?= =?utf-8?B?aWRGa2VwV0Uwa1cwbStwaFoySm4yRkYxVmZhRU4yalg4Y0F0OFNOTmlHTTF1?= =?utf-8?B?SEl5azllc2hMYkRBSFU2N25jVVVoKzRSVHk1R2FYZXNSMDZkYnZycHNNRWpL?= =?utf-8?B?UWtGSFZnSXJ4RkxXMS80blpWbDNFdFI0cmtObU5rVjNZQzNmQkFtNjM1eWp5?= =?utf-8?B?K0hZcUpDcW9tNDdxbzU3NXIxdnpTNkUxRUU1TmJmR2luQXFOTDZHV0toc2Js?= =?utf-8?B?akswcEI0am9rZ3FXQ3ZuTk5IWjJHUjhPOU4rd05qeTZzZmR3Qm5jUTNIa1FK?= =?utf-8?B?V0ZWbWJuNis5S09qMkg3NnJWOWd3UkRJZnMrQldLWGo1bSt2VzlERnVyRXJH?= =?utf-8?B?L2p4bElSSG1zbFk2VlgxMmpLSWZVVkQ4cmlFMHlyNy82eEF6VEpVU1JwK2da?= =?utf-8?B?MTlpK2hER2xwVk5qWmM3cFgrNzZEUlZoa1dGenE0dW9Sby8wSUxJalFsSFVu?= =?utf-8?B?SWR6UkcrTDlQVTNZRW1TMmd3eEdUNk1oSVB4VUQvSGFNT0JYQjNWSVZvV3Rr?= =?utf-8?Q?TyRx3V7ns781CO7S3dZHDTiGEKZG1JK/Z0D6c?= Content-Type: text/plain; charset="utf-8" Content-ID: <708A168E6B66A64FAF23208D87DF6C82@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: 1ec35e9b-9383-4de2-4fdd-08debbca6d4b X-MS-Exchange-CrossTenant-originalarrivaltime: 27 May 2026 08:32:00.8134 (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: rMZ/uNqyZc9SM+Y3p9PhLNB5KrP+dLlXyfo62qNY1rubGNkTiVTYzsrhcjHcN+AUJGmHxaX2BpyEqCnkBbJmpY3q0dO5muqWfs2ODhE4h68= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR09MB6314 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: 1779870828682158500 Add functional test for RISC-V big-endian. Signed-off-by: Djordje Todorovic Reviewed-by: Thomas Huth Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-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