From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406126; cv=none; d=zohomail.com; s=zohoarc; b=RvO347/o4sLsLP3yJ58BN836j8GAbhPm7AfO66bir/XREtRAhbUfaeRV89EiNyQ3ab186kdbUc0UZM/fgmrfWxO0+9aIKyTQYCOA4wvsp3Ls1BhXUIGsVoYm65C0S2Hff56f1CGwQaXWzc5WTQoUaqzdQZTAmlWYAQRZTywHp9Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406126; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=UNd0tofN11vkjQp4tb6Cnaia8Ve9dgyARU+ImhmM7as=; b=d7evn7SgBgAgTE7vqZg5w7Z0YDbtRjpbto58FrJuzWkhThnZPawn98oGXaigJA3a5ZjRaFnpMw9571QjazChMNPEGq7T9BQTptF4zN6z/FA4qpbmNENXu7ZXUU1lYrtJVU/tqQBBAdGwE6FBTTA1aNLxDsD/dnlRNObZFXDSBvk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406126948207.27418362571677; Sat, 26 Sep 2026 00:02:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMPN-00028r-P9; Sat, 26 Sep 2026 03:01:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAMPJ-00028L-S9 for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:01:14 -0400 Received: from mail-dy2-x0e.google.com ([2607:f8b0:4864:36::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMPH-0000ON-Eo for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:01:12 -0400 Received: by mail-dy2-x0e.google.com with SMTP id 5a478bee46e88-341d5303884so851452eec.3 for ; Sat, 26 Sep 2026 00:01:11 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.01.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:01:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406070; x=1791010870; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=UNd0tofN11vkjQp4tb6Cnaia8Ve9dgyARU+ImhmM7as=; b=ARA3YGXhStVCnDbwiWPDMTHrzhicnPeS6vT0QfoWG6sEK/hR+eDxm6krmaImkxE7la 4iQMnJ5pBRjf9FID7Iqnqgob8f3dzjKPoiIxZHMeyfI9BFSH4POrHofP8ttWuH4INfBf D7HOnGA8keAdcYcxPOBoZM3RS98e99nGfWeuTiGxv2CfkUBWwblL54K1Vq4/pZ200LJ8 vThpgR5hSaQy6lLrcr5AHZXrvHW94jnuFexU2xPALgiQdKusNb4R6H4YhWN1oa3Mi7ab rB+wxhva2qLnWU7LvkbpCCHi4eZpjOlqbHQ7wqZhXZaOY6CYJrh1IlrjJBOwk9JdZRZd 1wOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406070; x=1791010870; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=UNd0tofN11vkjQp4tb6Cnaia8Ve9dgyARU+ImhmM7as=; b=lKtaUn5rtzSaIc80grR+Iuh8IHG0g6X9nuixAfDx6sbHt/ciPakmuf+q2Wn26WWHME nqVPYRnu/NS19bzBXzZT6w+wwNbm2r4m9jROqqKvenIdi4oQ46IxojVu8HcviG6sgMaI OgWtEaYFx4octbvyzBmd/DcOyBf180KcdnSC0fjgES4Y5a2ZlYkg/cDfSMguBTHepOcy z3rAEBp02Kq6iuohdXlOjUIABsOqOMk64OZP0J2tY7zu4bTAc7Pj4BEO56PPAUB79Hxs DVd5qyDILmtm//Jbd6zYfbjrX4nO/waVbuWsc0F7H6rDGYkYj6NGBQY2YOsaaELQXbUT +slg== X-Gm-Message-State: AFuF++n3EVrkI6EVw7GjEu1UpQep4ElKMLYGjBnP5vWW1fB3rSXcutNm mAiQl/logEveYYYmCS5m9BR3Pw6cyg9/clL51yQFwzI6pAzxff2R1vykjyRb/N7C X-Gm-Gg: AYBFou3B76rMyVUVIo3n96/6kqX0JSYyLZ8yU1iq0jECNDugkNAXrT8K2m0WARHDFJO Mka+8JvgzTmM5K7UngiI7uobZVv9xsQsHYa+qnc6hVoWjg6FdlQ567/niH/oVeGHdMqsGyVlkh0 tDMIEaA97jy32mMDC1jT5Mk3vM4oID7KWnVvQ4kNN5nWQORmUXzqlslmZpJdmDx7zHMxHBO7oG1 ij4srkXBXlb447fMrk6vW6xBjMPm3rJEKKnv9A6A49zvlDBL56AIQMuQ3MGrDMstISb0uPCxw0s q4x+AS+tnIjvrfYiJu0nfUpV0KVPT+V9F5M8q1jre/l16oPtOhUINjiFxUrC3FJth9mEmiqV4wq SxEAHTGlRus6coiSheunlg+upHb9vbPZpH9MwSCS6PACZXGGhLO8+9hY6TlcKlhuNOrwfDxQe7i HC3yOExKR7+WS8+hWMFRVQJHEC2k/+jf2HLaWN9gp6e80Vsxrb5rl6QFUrmaicZSbVwz+WQ2haH JPxst/Lg4HhQ+LhAg/o7BAmor3d4rdmUilBnSDLqg== X-Received: by 2002:a05:693c:414d:10b0:33c:141b:73a5 with SMTP id 5a478bee46e88-34272c6023bmr2305190eec.41.1790406069766; Sat, 26 Sep 2026 00:01:09 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 01/55] target-info: Introduce target_riscv32 Date: Sat, 26 Sep 2026 15:00:00 +0800 Message-ID: <20260926070057.1234-2-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::e; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0e.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406128560158500 Content-Type: text/plain; charset="utf-8" From: Anton Johansson via qemu development Will be used in the following commit to filter machines using TypeInfo::is_available, so a simple !target_riscv64() is not sufficient. Reviewed-by: Pierrick Bouvier Signed-off-by: Anton Johansson --- include/qemu/target-info.h | 7 +++++++ target-info.c | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/include/qemu/target-info.h b/include/qemu/target-info.h index b23e5bc5865..c09e5d2a3ec 100644 --- a/include/qemu/target-info.h +++ b/include/qemu/target-info.h @@ -91,6 +91,13 @@ bool target_ppc64(void); */ bool target_s390x(void); =20 +/** + * target_riscv32: + * + * Returns whether the target architecture is riscv32 + */ +bool target_riscv32(void); + /** * target_riscv64: * diff --git a/target-info.c b/target-info.c index 012b384036d..bba4503151a 100644 --- a/target-info.c +++ b/target-info.c @@ -89,6 +89,11 @@ bool target_s390x(void) return target_arch() =3D=3D SYS_EMU_TARGET_S390X; } =20 +bool target_riscv32(void) +{ + return target_arch() =3D=3D SYS_EMU_TARGET_RISCV32; +} + bool target_riscv64(void) { return target_arch() =3D=3D SYS_EMU_TARGET_RISCV64; --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406274; cv=none; d=zohomail.com; s=zohoarc; b=NBtH5nAosXe3xEEUVgbyIHnVhpqI4F0eNJvyQ+JZVAPDSqTiE9HrxdcTzul7FZuoKZNbgeyapI7T1Q+zQVgX5w2NI3XLdPymzpLd/ZmFCY7ce+SbPV/ps7aJldHFWC8m+6rIxWgg3SiZ+5ezUGWJovxJEJstdX0MrKuq+gwoIlQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406274; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=uuwRl4ClI+53kQRmwmmbWdvUO8JCv7PNWaf6z+9UVak=; b=EcHmD9FkApmRO8l1uD4ijGDoXwaCJi+S42AuJ2qMty6gjeQCIxzBwpZ2eLLF2ptvoUY9EFF6/DdA2Mp0wrVz4Zz4Z717WdarC7saw9T592UmlyTso/9pmSOA51nt+XGT5EUKnrsVFjhwOlOFBjW61s05O6q8LDOZ7rfHL4wuVus= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406274636696.3947273293105; Sat, 26 Sep 2026 00:04:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMPR-00029k-Rn; Sat, 26 Sep 2026 03:01: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 1xAMPN-00028s-Ab for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:01:17 -0400 Received: from mail-dy2-x0f.google.com ([2607:f8b0:4864:36::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMPL-0000Oz-Ff for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:01:17 -0400 Received: by mail-dy2-x0f.google.com with SMTP id 5a478bee46e88-340f56c44b0so646476eec.1 for ; Sat, 26 Sep 2026 00:01:14 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.01.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:01:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406074; x=1791010874; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=uuwRl4ClI+53kQRmwmmbWdvUO8JCv7PNWaf6z+9UVak=; b=m3lEff/L10dTx8JQXEl+5mG6lOIWXXyCDz0xgZ8hjAi5+JbHhYcVYxD/1oJE5nyuCX ir/zM0rO4OdmvLNFPVFyGIx9eSoZLOvT6ZaSB6yIoZrFPKAFnAb+htM1Afee4biIOnVD WMjMzaRPFyNjwxz8mxLLR8whJB5lm0mX9loHaraaXZI1w+V5LLf/f4NhzfvWQNkjzFAs j15mHsO1wc34euEwK+HXFvXNJTKsqFiiY4DIPY9Q61qb7YnZjpYvC6fw4bc5tkiCYz64 qThfDtI4w2gidls9b6KeEdbsNiHtKvJLPhSKQKFgjm/BCb0s7FDQWHsdSffvf8M2MN3l BGCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406074; x=1791010874; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=uuwRl4ClI+53kQRmwmmbWdvUO8JCv7PNWaf6z+9UVak=; b=Y9dddtytneyyoAplQyvEZSRc90t8phnW3EnANX6zaH89oPb43adJHRKwQ9LIRLC8nT 2M5A63pz/+IiJQgSOS3QfeI6dW3odhMy8cH1OJVQauX5gQ3zZhAedJV8Yea993dE6gdA njfzRI/w+czdeeait8VTvU8T0fcu8wsmThDYQTNtswRbeAu51Gi0XFF/hOXKMXfSqq7X kh+UFd/sKVVkQX950pMHFbZYOWOOfGOAYF2wxFIXivhWj5G9Pbtb0pHXBtC5sv5UD26c qcLOGmruBSaW90Xyo3xX49CQ17pgio4xYPam3OLkqqx3gDNWjRX1p/LoNLuxj0RNjJyC wSvA== X-Gm-Message-State: AFuF++ljuXr3AvKn41b/fvrpUT113AkBDE2JNhzCPBBWClAjdN4rG7Ca x5spJvznR8LlYYsRiKAqhyPNiZEGR8nCTA6ih72I+np0Ssc9pltZOqvUw8Fqkwbs X-Gm-Gg: AYBFou0xZZHwpaR7vSZtLJtbE0cuu09vOietQnDlxxeCERnZyOMnI1EbtjQl+7CIJYD 9U8zzMJiUZGKj3o5/Ubhy3+R9+enXZWUvwxyPDrYxBY6k+RuQKq0nIOPC/tUWeIaCPyXk4c9MHX TGmzdsn1f6+q/jDKf5XrGVSSSWRLMFhgEq+jCqAp1rHld0b2jfA5sU1tvSLKqVIkkzZr7Y2E/Pz RyKn9ObHkTgkrN3Ka9f4GTDKWwgC67mXCwZe7qt35KZ1lYjjYJhDnpx+JtqkjWmqtGUfkpjKlyB UY80VaI/fhUUL0Yq6K+1MxuW+KWENUKpIta8DTkIWB4kgWG+z4OvhbgEZFZVODErYw2/dYNBQVm 5z5Sl0HcBnyOrF8s9ZmgasEkAjfAbQcFYRRXld/saxj+8PK1zrt9fA7qpt2Rto7jh/zmQm6xUco kNBGCUeui/eZD/qxnxIesgCjtey0WQu7902inr6JUkkJfYxrUceBkG6tBouHsw9apFExb3xZPVr Fe8f7OGzfHEaZ4ekGeWQBZ87mTxVM4= X-Received: by 2002:a05:7300:e11c:b0:339:85bf:dd89 with SMTP id 5a478bee46e88-34272b3c01emr2505009eec.35.1790406073689; Sat, 26 Sep 2026 00:01:13 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 02/55] configs/targets: remove target info definitions Date: Sat, 26 Sep 2026 15:00:01 +0800 Message-ID: <20260926070057.1234-3-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::f; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0f.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406276762158500 Content-Type: text/plain; charset="utf-8" From: Pierrick Bouvier Now that we remove machine_typename, we don't need to keep duplicated file per target anymore. So we can just rely on target-info-stub.c. Signed-off-by: Pierrick Bouvier Signed-off-by: Yonggang Luo --- configs/targets/aarch64-softmmu.c | 25 ------------------------- configs/targets/arm-softmmu.c | 25 ------------------------- configs/targets/meson.build | 6 ------ configs/targets/riscv32-softmmu.c | 24 ------------------------ configs/targets/riscv64-softmmu.c | 24 ------------------------ meson.build | 7 +------ 6 files changed, 1 insertion(+), 110 deletions(-) delete mode 100644 configs/targets/aarch64-softmmu.c delete mode 100644 configs/targets/arm-softmmu.c delete mode 100644 configs/targets/meson.build delete mode 100644 configs/targets/riscv32-softmmu.c delete mode 100644 configs/targets/riscv64-softmmu.c diff --git a/configs/targets/aarch64-softmmu.c b/configs/targets/aarch64-so= ftmmu.c deleted file mode 100644 index fdebdcc3582..00000000000 --- a/configs/targets/aarch64-softmmu.c +++ /dev/null @@ -1,25 +0,0 @@ -/* - * QEMU binary/target API (qemu-system-aarch64) - * - * Copyright (c) Linaro - * - * SPDX-License-Identifier: GPL-2.0-or-later - */ - -#include "qemu/osdep.h" -#include "qemu/target-info-impl.h" -#include "qemu/target-info-init.h" -#include "target/arm/cpu-qom.h" -#include "target/arm/cpu-param.h" - -static const TargetInfo target_info_aarch64_system =3D { - .target_name =3D "aarch64", - .target_arch =3D SYS_EMU_TARGET_AARCH64, - .long_bits =3D 64, - .cpu_type =3D TYPE_ARM_CPU, - .endianness =3D ENDIAN_MODE_LITTLE, - .page_bits_vary =3D true, - .page_bits_init =3D TARGET_PAGE_BITS_LEGACY, -}; - -target_info_init(target_info_aarch64_system) diff --git a/configs/targets/arm-softmmu.c b/configs/targets/arm-softmmu.c deleted file mode 100644 index 2b98f65a0f8..00000000000 --- a/configs/targets/arm-softmmu.c +++ /dev/null @@ -1,25 +0,0 @@ -/* - * QEMU binary/target API (qemu-system-arm) - * - * Copyright (c) Linaro - * - * SPDX-License-Identifier: GPL-2.0-or-later - */ - -#include "qemu/osdep.h" -#include "qemu/target-info-impl.h" -#include "qemu/target-info-init.h" -#include "target/arm/cpu-qom.h" -#include "target/arm/cpu-param.h" - -static const TargetInfo target_info_arm_system =3D { - .target_name =3D "arm", - .target_arch =3D SYS_EMU_TARGET_ARM, - .long_bits =3D 32, - .cpu_type =3D TYPE_ARM_CPU, - .endianness =3D ENDIAN_MODE_LITTLE, - .page_bits_vary =3D true, - .page_bits_init =3D TARGET_PAGE_BITS_LEGACY, -}; - -target_info_init(target_info_arm_system) diff --git a/configs/targets/meson.build b/configs/targets/meson.build deleted file mode 100644 index 2ab4d27eaf5..00000000000 --- a/configs/targets/meson.build +++ /dev/null @@ -1,6 +0,0 @@ -foreach target : [ - 'arm-softmmu', 'aarch64-softmmu', - 'riscv32-softmmu', 'riscv64-softmmu' - ] - config_target_info +=3D {target : files(target + '.c')} -endforeach diff --git a/configs/targets/riscv32-softmmu.c b/configs/targets/riscv32-so= ftmmu.c deleted file mode 100644 index 0829ab84de5..00000000000 --- a/configs/targets/riscv32-softmmu.c +++ /dev/null @@ -1,24 +0,0 @@ -/* - * QEMU binary/target API (qemu-system-riscv32) - * - * Copyright (c) rev.ng Labs Srl. - * - * SPDX-License-Identifier: GPL-2.0-or-later - */ - -#include "qemu/osdep.h" -#include "qemu/target-info-impl.h" -#include "qemu/target-info-init.h" -#include "target/riscv/cpu-qom.h" -#include "target/riscv/cpu-param.h" - -static const TargetInfo target_info_riscv32_system =3D { - .target_name =3D "riscv32", - .target_arch =3D SYS_EMU_TARGET_RISCV32, - .long_bits =3D 32, - .cpu_type =3D TYPE_RISCV_CPU, - .endianness =3D ENDIAN_MODE_LITTLE, - .page_bits_init =3D TARGET_PAGE_BITS, -}; - -target_info_init(target_info_riscv32_system) diff --git a/configs/targets/riscv64-softmmu.c b/configs/targets/riscv64-so= ftmmu.c deleted file mode 100644 index 553bd1f75fe..00000000000 --- a/configs/targets/riscv64-softmmu.c +++ /dev/null @@ -1,24 +0,0 @@ -/* - * QEMU binary/target API (qemu-system-riscv64) - * - * Copyright (c) rev.ng Labs Srl. - * - * SPDX-License-Identifier: GPL-2.0-or-later - */ - -#include "qemu/osdep.h" -#include "qemu/target-info-impl.h" -#include "qemu/target-info-init.h" -#include "target/riscv/cpu-qom.h" -#include "target/riscv/cpu-param.h" - -static const TargetInfo target_info_riscv64_system =3D { - .target_name =3D "riscv64", - .target_arch =3D SYS_EMU_TARGET_RISCV64, - .long_bits =3D 64, - .cpu_type =3D TYPE_RISCV_CPU, - .endianness =3D ENDIAN_MODE_LITTLE, - .page_bits_init =3D TARGET_PAGE_BITS, -}; - -target_info_init(target_info_riscv64_system) diff --git a/meson.build b/meson.build index cfac634cf13..732f0a885ba 100644 --- a/meson.build +++ b/meson.build @@ -3754,7 +3754,6 @@ subdir('dump') subdir('accel') =20 subdir('backends') -subdir('configs/targets') subdir('disas') subdir('migration') subdir('monitor') @@ -4331,11 +4330,7 @@ foreach target : target_dirs endif endif =20 - if target in config_target_info - arch_srcs +=3D config_target_info[target] - else - arch_srcs +=3D files('target-info-stub.c') - endif + arch_srcs +=3D files('target-info-stub.c') =20 if target_base_arch in target_arch t =3D target_arch[target_base_arch].apply(config_target, strict: false) --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406306; cv=none; d=zohomail.com; s=zohoarc; b=BkRKamxkZd10y8XN3zbLt857+iuzzVdQvuIqaDPE+W9SO5SYBEqEjpTkM0kuPcDAl+1nXfHlx0POhxxHvEKtBRzzpQ0aLW5etryfUdkqtcA7EQuQGb9ZdAsQ9l2DeQQ9Nfa4UQYw35eYPVlW6IsJJi6/Iw1yV8xNIrENa8APBI8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406306; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=WjKPIsB7XPfjiOJv/P7w8oTcFul76ata5y5bWuKERHA=; b=ELCAUI5TtqOugtGm+QhhgCy4XB67vQTYfgj4oDXUUticKw/sbpHnKrxEFeUb2WCpWUM3dmzjiHwNqQmRhIekspjJ8mcmaWOaUqyO1YTHhdxBapitZA3BZuc3QtgnIOA/mDHgIYCDGGXdogvLkn4nPp8ZT2WFwfhrAX4pqDQwMII= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406306657184.03675528266615; Sat, 26 Sep 2026 00:05:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMPV-0002BF-JX; Sat, 26 Sep 2026 03:01:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAMPQ-00029Y-GO for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:01:21 -0400 Received: from mail-dy2-x10.google.com ([2607:f8b0:4864:36::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMPP-0000PX-0H for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:01:20 -0400 Received: by mail-dy2-x10.google.com with SMTP id 5a478bee46e88-328664e061cso1769006eec.2 for ; Sat, 26 Sep 2026 00:01:18 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.01.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:01:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406077; x=1791010877; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=WjKPIsB7XPfjiOJv/P7w8oTcFul76ata5y5bWuKERHA=; b=K41XgtDN1x3gaHo++yHEnC9AeaANzJKHb9w0mQ3b9KVLub18iGK9anbWA4/E6qUjqI AZJghq5mnB3vuqrPZV6wfNGlJzaGLkqq+X3UsL2JPva7yR7Rafi11ty3vRUHg5hSSyUN VpJR7VX1y8PDOGGcLQ+gbCu0zhxaZ+dEMmiTxjSfTfqW4/xIgdW3pnnjLy66w6nz81Mv LYHDvkBSsjB2pO7odrebpUIDht+ZVzsy/5DlM3jo3Bgsw25f/HVofKqeNEBmThFvbofQ KaY182ybWBoFwskqn8XkBNapwmBSA1coBVsACNbTRL1a3nuVFRTzgFszGfHD/9pe6qzj UtJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406077; x=1791010877; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=WjKPIsB7XPfjiOJv/P7w8oTcFul76ata5y5bWuKERHA=; b=SMlHaZnxlzWOsgTDS1IM3YO3CRBZfenNKYaloaeZeK3nR+pKh7cWGyoA4TGHYdHSix qA0NpWtKGA1csP+5tDi/DlpyU96CEbcE8nXLb+pI2DvVFcW6nnQ+xJZX8iaIxuf18jcl 11jenvmj4PNP7E3k3Gy+6KwQP4vEl+VziLdRrbNtynrNHqPBJjYQSeThg7Pwx0yL7Gje JRczy56JRAeTXXRRG/iDCOK+NGyODD//uSQFFqpWhWBW2GR28+8/oGSZh0m45UetNqqJ +LT5tkUp3NnxjhtDrsE61DWMAO5J5i3fz9BUpKhp+Ex+I/U8JFR8XimbOLrjtMN5uUQz wbOg== X-Gm-Message-State: AFuF++kGUWvgMFk1c/CahZ5P8bpNCob3VkDw+rbgGLHGtM5xbP8k82XA 2fN1T05mF4e7QxML9dCYcDBkg1pRo+sJ8vxIpwC0cszV2QT/HoP7s+ldBePU6N1p X-Gm-Gg: AYBFou0IbpyY11prI7ednXBpExg7pLXfGepm9tsY6Sch0t+we8J20MG7rWXYiflkxst nA9bApJ2IKVX+o6jfhTwXod1/c1CB7xLe0jV8suOVJ22tSYBEZAArmT9EYUNUc83YxIN9uni5eV QRctwXnx/Hq7V/tfFu6cHPix7m6Rl+XIsM3zwswRmleZXTtg5XCxKCxNJp0CzQmf6IGVjjaCOnZ rh2QcMzH/jK0GpvWWT9KbpfgD1I/kX+SvmtGdgxw9pa3keIYCp6WJfhJjL6TD9I9A2wAj0aZlmA 7QOxSB08vZlWRekTw1et5IVMqCdYGOo9MFdSCmGZ9+aU69zIrqqhWbQsJE0jl2fPq3wie30AZcz nDthcJbpIZOxPw2EuxWrXxLBgIVEJbclG+2EK7aqH/ytQWM64pRR7c4X72Y+HdqMrhNGy33CX2s hP67IWsE5iYmpUwtf2166u/B12MEaC1wp3u+TxL5O+CKF9tRLbmHAAqgkQE3QD9w/YuPWlh+vIS i5xaFMNIAzLWF/HoovKrFN4w51tX/Y= X-Received: by 2002:a05:7301:712:b0:32d:205e:31b1 with SMTP id 5a478bee46e88-342705b8903mr2066052eec.3.1790406077527; Sat, 26 Sep 2026 00:01:17 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 03/55] target-info: rename target-info-stub.c in target-info-def.c Date: Sat, 26 Sep 2026 15:00:02 +0800 Message-ID: <20260926070057.1234-4-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::10; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x10.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406308811158500 Content-Type: text/plain; charset="utf-8" From: Pierrick Bouvier Now it's the only file left to define target info, we call it def to make the intent more clear. Signed-off-by: Pierrick Bouvier Signed-off-by: Yonggang Luo --- meson.build | 2 +- target-info-stub.c =3D> target-info-def.c | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename target-info-stub.c =3D> target-info-def.c (100%) diff --git a/meson.build b/meson.build index 732f0a885ba..51bc0905294 100644 --- a/meson.build +++ b/meson.build @@ -4330,7 +4330,7 @@ foreach target : target_dirs endif endif =20 - arch_srcs +=3D files('target-info-stub.c') + arch_srcs +=3D files('target-info-def.c') =20 if target_base_arch in target_arch t =3D target_arch[target_base_arch].apply(config_target, strict: false) diff --git a/target-info-stub.c b/target-info-def.c similarity index 100% rename from target-info-stub.c rename to target-info-def.c --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406484; cv=none; d=zohomail.com; s=zohoarc; b=UKzCzlkhzDv8XcNugxGFXahxfTsnnAWZI7nL9Vd+HXQd3HW5QJyDsPm2kKbbnlk8MuEZVkdZLut/wIKQ0NmBNY/fWWWTOPvlmdNh4379hPALqhcC2SK+DikGvfybcInKDLB566L/qa3KFXkdTPc3F62oBbdtE9SrUKrdBicPGOM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406484; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=qkiRWh0yDSkP2OT8vLUxuaEaTt8B1WJVNLebJyYrgq0=; b=R72EkchXJe+amXPHzi8iMWbkFtnce/GkKrwFzCFLruVF2aOAr8p0f9NyEoJZ7Ah9RuSAegx21Br0ODcghQA4eeBhI5TlkwmFFM2WFXeEkPUN6Xyw/TI7EtDuiidGkB2AMrqAkZtNT4X68g3+NchtnR0vgWOhrafpBgHsz+3ZaJg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406484945494.1138582237437; Sat, 26 Sep 2026 00:08:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMPZ-0002CQ-Lu; Sat, 26 Sep 2026 03:01:29 -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 1xAMPW-0002BN-1j for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:01:26 -0400 Received: from mail-dy2-x0e.google.com ([2607:f8b0:4864:36::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMPT-0000Px-3g for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:01:25 -0400 Received: by mail-dy2-x0e.google.com with SMTP id 5a478bee46e88-3427493501eso503451eec.1 for ; Sat, 26 Sep 2026 00:01:22 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.01.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:01:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406082; x=1791010882; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=qkiRWh0yDSkP2OT8vLUxuaEaTt8B1WJVNLebJyYrgq0=; b=q3bK/EFqleW+HGk2uw71XrcZHRDnxVJAS0p57ADtDCTSf2OmPLEq2rIEHwsY1sVWjK o/KSxPYA93lLAmCLCLPiUXEfyWGUJGaUYfyRUl0bP0Gp7pU2CyArppU2V1Fwe2eXk41R QhDhNOtXzb3jUW21Dg+SBpZwU2iYp5O13MTfT7YCPoczT7Jou6kuA1By0mzy+Xbptdr6 +bDt7pLgnwJtaSnyK4w9xdlJCYV6Ru6YLunGawilwNQd3uOOuy3PVooEO9cAPe9obgux alsxJ3vn4rXi+PEcfDR3Nf7LkduQSRWoGpyp7pJew7ypMBfAG6HSRPKuaqRa72qJDqlX 9r6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406082; x=1791010882; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=qkiRWh0yDSkP2OT8vLUxuaEaTt8B1WJVNLebJyYrgq0=; b=RZOkehTQCcDi0+Tuja3lRtusUOPo+wrVGluXGBTEmvnlnEEWfbeW89XW7660a1SMis 5+yZBoyIgt0lnH+lSpkoUYy8g2xwebfTwDLBEiad2E6rEw3tmZNlFuomLr2xlZ+Ub7PH JEFIsgncN2Esk0w8lUzFrX1ZGVYvvRDhRJacPx3zQlqNy2DoPZ7X4VneSTKwi05yba3U L6JU4JJ/vbFXVCZ1xhqvnNYdKflUl3ETlsTxuA7BYW54o189mTTmeaJ5p64vxsvXdvTr CK44YoHRuHA+FUCVRaJdliXsbuZG/B4xe20hxhAiOxBQLVei/0GasEUgMI/TOm1IE7jD BUGA== X-Gm-Message-State: AFuF++knw+RIFS/FGNWj7G7G3/kV4zrlUdaKs+tUNBNmlXbxIEaSpI9y AplYwUuYBpd4AJ3xpokR8sCRwXjY3pAjU7k5y9obv1TcWz/Dkuyct9Bruy9Xm/OI X-Gm-Gg: AYBFou3wc1k29BH+5sqTNqlEGd+deHirtzQkTJNsTBO69rRjsxPyHuuWV0wuyEfuV+h WTB/cwXGRKv4wBqaGNI1Agfp9VymeePuGkqaMl32E7D6PvaFDJAkl4jZOKUpLeH9hjLXd0f5jf2 LkorT0JpO3ZD+ffqGhwG4BN7KWDrKJ9QivSaPFOtOcm1IqiCQ57bdoemyEusk8mNPCUznInQTiu /yfZtyBQm9H7YGO49tYeyLxHA/fr/k5LitIKoRqVmNFuaU1WTGUGMCPQCC2Gh7j5pwZcH4Hm6wd SXciTrJVQlqx/JYd9lefoBoPQS+cXKNI3Wd461n1jvMB/NuYFKsp0cLEM/V+f2onNJm9nr1JPtI 7CPqRFbIZQateCz75pWFNDGq61HY8f36svq8xrEYwR0xy5C1Ns6xpkO1nvodGCgKaMof0cIyQBH voFRRLE62mFzCjjvgsDx99qf/FK6X6UcBIb2ra/9aAe5t6eoDelF0r9LUv67cxQ4TAG4Sg9Xjwz LTvoPClN5Ff2kyWGS7KJmeVMNh2f6A= X-Received: by 2002:a05:7300:7313:b0:341:3ca2:de2d with SMTP id 5a478bee46e88-342700bdf94mr2923658eec.6.1790406081403; Sat, 26 Sep 2026 00:01:21 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 04/55] target-info: rename target-info-impl.h to target-info-def.h Date: Sat, 26 Sep 2026 15:00:03 +0800 Message-ID: <20260926070057.1234-5-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::e; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0e.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1790406485439158501 Content-Type: text/plain; charset="utf-8" Rename the TargetInfo structure header and its include guard. Signed-off-by: Yonggang Luo --- include/qemu/{target-info-impl.h =3D> target-info-def.h} | 4 ++-- include/qemu/target-info-qom.h | 2 +- page-vary-common.c | 2 +- page-vary-system.c | 2 +- target-info-def.c | 2 +- target-info-qom.c | 2 +- target-info.c | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) rename include/qemu/{target-info-impl.h =3D> target-info-def.h} (94%) diff --git a/include/qemu/target-info-impl.h b/include/qemu/target-info-def= .h similarity index 94% rename from include/qemu/target-info-impl.h rename to include/qemu/target-info-def.h index cf42aabbc8b..8019d2c7196 100644 --- a/include/qemu/target-info-impl.h +++ b/include/qemu/target-info-def.h @@ -6,8 +6,8 @@ * SPDX-License-Identifier: GPL-2.0-or-later */ =20 -#ifndef QEMU_TARGET_INFO_IMPL_H -#define QEMU_TARGET_INFO_IMPL_H +#ifndef QEMU_TARGET_INFO_DEF_H +#define QEMU_TARGET_INFO_DEF_H =20 #include "qapi/qapi-types-common.h" #include "qapi/qapi-types-machine.h" diff --git a/include/qemu/target-info-qom.h b/include/qemu/target-info-qom.h index 91be415ed33..0f6772e65c3 100644 --- a/include/qemu/target-info-qom.h +++ b/include/qemu/target-info-qom.h @@ -9,7 +9,7 @@ #ifndef QEMU_TARGET_INFO_QOM_H #define QEMU_TARGET_INFO_QOM_H =20 -#include "qemu/target-info-impl.h" +#include "qemu/target-info-def.h" #include "qom/object.h" =20 #define TYPE_TARGET_INFO "target-info" diff --git a/page-vary-common.c b/page-vary-common.c index ddd08633788..5a4654725a8 100644 --- a/page-vary-common.c +++ b/page-vary-common.c @@ -20,7 +20,7 @@ #define IN_PAGE_VARY 1 =20 #include "qemu/osdep.h" -#include "qemu/target-info-impl.h" +#include "qemu/target-info-def.h" #include "exec/page-vary.h" =20 /* WARNING: This file must *not* be complied with -flto. */ diff --git a/page-vary-system.c b/page-vary-system.c index 6c49c10e23b..9773685dc16 100644 --- a/page-vary-system.c +++ b/page-vary-system.c @@ -20,7 +20,7 @@ #include "qemu/osdep.h" #include "exec/page-vary.h" #include "exec/tlb-flags.h" -#include "qemu/target-info-impl.h" +#include "qemu/target-info-def.h" =20 QEMU_BUILD_BUG_ON(TLB_FLAGS_MASK & ((1u < TARGET_PAGE_BITS_MIN) - 1)); =20 diff --git a/target-info-def.c b/target-info-def.c index d121b8c0170..fa19cabc55f 100644 --- a/target-info-def.c +++ b/target-info-def.c @@ -8,7 +8,7 @@ =20 #include "qemu/osdep.h" #include "qemu/target-info.h" -#include "qemu/target-info-impl.h" +#include "qemu/target-info-def.h" #include "qemu/target-info-init.h" #include "hw/core/boards.h" #include "cpu.h" diff --git a/target-info-qom.c b/target-info-qom.c index 6965e4d1169..2b38673a3f8 100644 --- a/target-info-qom.c +++ b/target-info-qom.c @@ -9,7 +9,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qom/object.h" -#include "qemu/target-info-impl.h" +#include "qemu/target-info-def.h" #include "qemu/target-info-init.h" #include "qemu/target-info-qom.h" =20 diff --git a/target-info.c b/target-info.c index bba4503151a..9abe72b1f55 100644 --- a/target-info.c +++ b/target-info.c @@ -9,7 +9,7 @@ #include "qemu/osdep.h" #include "qemu/target-info.h" #include "qemu/target-info-qapi.h" -#include "qemu/target-info-impl.h" +#include "qemu/target-info-def.h" #include "qapi/error.h" =20 const char *target_name(void) --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406126; cv=none; d=zohomail.com; s=zohoarc; b=g0W64REfe95WYgf8Ln9JlmQ2wHOh7IhLo36xbDZqh4XvTosG9Mg0vqnZ0UjcQOrSfN2t9+AuWDLNKo0cwGPxxvEHVvtgigzuGcjMZcK3LjcFZl5hqx25VRgpeBfKaXr0oqIfWcdNfzSfwD/HKMHgHdTsvpU1sgJYMjwtG7idWIs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406126; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=NOaZ4jAlSCyjxqIHA0N9ZQnaaf/7JpAiIPWzPNATCyQ=; b=LoA7/l58E8FT9wEOgsTj9xVHVUb+uFzKYa5gHKTD68BMBntCJ2zlGlbXE2mZswYhfTyunNk/xK4uwRLVJWIqe/WlLfIAywDyUcirB3TEDpOyZoVFCPpYnCcmczy/TEElZQevxPkjvtqnNScMNCpD2GGV1loh3Oxlf9jGZVlWkkM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406126900688.2971436609442; Sat, 26 Sep 2026 00:02:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMPh-0002DV-QI; Sat, 26 Sep 2026 03:01:37 -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 1xAMPZ-0002Cm-Ri for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:01:31 -0400 Received: from mail-dy2-x0f.google.com ([2607:f8b0:4864:36::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMPW-0000QH-PR for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:01:28 -0400 Received: by mail-dy2-x0f.google.com with SMTP id 5a478bee46e88-328664ef791so901927eec.3 for ; Sat, 26 Sep 2026 00:01:26 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.01.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:01:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406085; x=1791010885; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=NOaZ4jAlSCyjxqIHA0N9ZQnaaf/7JpAiIPWzPNATCyQ=; b=OjDkGNDRfr4qRhQ/+OQ4tI0J9Ehp6K+V4ATjgrfnqEZQswPrEgdCE96KFFfF+/pZji KJCsga8sWuRkkZvlM/yDP8XjHvUZD2d2Tg3S2obJ2QUrBXd/Cv+47Nl/5pceDqXkai38 Qnu4FUnFWJTfCxPMMO7MCi0VIASFD5dq1VLCj/2MPbin0l7gYzdbMBahLDRTSDIPsIMA bUr79HecSQtjeMEqHI41VJHHHRVjsMcbLPiv5orDezZZUJkwSR0p1axD1TjE50PebV05 YOrx/RuaUQTWlBa1SuBPF6XzcMYSCWcQOwgN0ZHcEc4OtNit4rD43gej/YkcZ4agnoN6 zLZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406085; x=1791010885; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=NOaZ4jAlSCyjxqIHA0N9ZQnaaf/7JpAiIPWzPNATCyQ=; b=Eo1NnzQbV7wPyyfh1S8Pmme6vDiw6evbfgUqOzebmHH52grAQRR0htrAP5woxtoqTO xkZaHYlzubVNdEtAiL+P0BZjPzQ5twXt9gHifcLFmoXETrmUT1gUDR/Ujvsg7AQoolKU yTr0VX3E8IogfGNBPbVy/6CXZR7ICyYHJBuFeBwXN2vYQSUM5CFx7aL1eZarmVaPfDWV cf8w4FC6SC43uwSA22ld/+xJq/BDhmc7HL1q5rbVI7WpnWKuFGAU2iB/WoqhYsatWISY r+UyBulS9r6B9smrUwxSiYWjS7SIOjEessVcQ42H+qjIkQzOSIbmufjKlk+RVRdV2xt4 4rtQ== X-Gm-Message-State: AFuF++l0G0oswrInFPb8QJ7z+Yin4YWB9ffo0djXd3PJBb7Y8pvJcIE7 i7KwWH/GnM/IEvKG/TbNg1MOzbL/L3jYQ9Q3JGqISS4zvDDJL8LTCeQLy6bnodKI X-Gm-Gg: AYBFou1D/TKrj2I8zNrBTf/H2zOkAmr04YacgFSyu0jh/QiZATcNQKgoNp2Fbyq7ZjB BnNWwkBuh8OM4xTizhw8am+ejkQvUntHr2M1XoL4Qfd2BWLf2K7WkegXgrUrW9zC+DkUwOh6j7C 78kwc2GNrC103/51xuRPoaf7Gn2czFMCxsJQ76sFkWJU1NPzcFpVRTkAyE3xl8ChFYf49CNmDhT ExIuoOUGpa1dCV/4EJIS/mFBQaMVS7JsQ9gGqDedLUKlijSbcqgTP854CJnpVyNFpDLjt26D6sv 7wT0JfCFYWSxTvNloX51vDOoVr8AQLUU5gBBJZZG8N54UTsqJUwTFBUphRK0zMSj5D22VFLeiCd XUCB4KjhKXLOgX0eoHNhET5ZXbl+Q/eBi95y8m7twsUliXgQFozHJWbPIk+/hLdZeKvhvyZc/Qp Pxa90hnpsy+HICXFFtGh2hgX6gNwG/dehjryUKDotdF+HtcHYTuPhv0ZCt9O9OJySIlKtGX7y8y 2dEf8D2kdTjwGigxlyblJhRwz+Ecx9f X-Received: by 2002:a05:7300:a986:b0:328:7033:9b8c with SMTP id 5a478bee46e88-342711ac458mr3353958eec.6.1790406085251; Sat, 26 Sep 2026 00:01:25 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 05/55] vl: parse early options before target-info init Date: Sat, 26 Sep 2026 15:00:04 +0800 Message-ID: <20260926070057.1234-6-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::f; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0f.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406128558158500 Content-Type: text/plain; charset="utf-8" Move the first argv pass ahead of MODULE_INIT_TARGET_INFO so later target-info selection can use command-line options before QOM init. Signed-off-by: Yonggang Luo --- system/vl.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/system/vl.c b/system/vl.c index 468a9fc247a..3efa4968a20 100644 --- a/system/vl.c +++ b/system/vl.c @@ -2912,16 +2912,6 @@ void qemu_init(int argc, char **argv) error_init(argv[0]); qemu_init_exec_dir(argv[0]); =20 - os_setup_limits(); - - module_call_init(MODULE_INIT_TARGET_INFO); - target_info_qom_set_target(); - - module_init_info(qemu_modinfo); - module_allow_arch(target_name()); - - qemu_init_subsystems(); - /* first pass of option parsing */ optind =3D 1; while (optind < argc) { @@ -2940,6 +2930,16 @@ void qemu_init(int argc, char **argv) } } =20 + os_setup_limits(); + + module_call_init(MODULE_INIT_TARGET_INFO); + target_info_qom_set_target(); + + module_init_info(qemu_modinfo); + module_allow_arch(target_name()); + + qemu_init_subsystems(); + machine_opts_dict =3D qdict_new(); if (userconfig) { qemu_read_default_config_file(&error_fatal); --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406291; cv=none; d=zohomail.com; s=zohoarc; b=LW74vXxOUEBWc9F82f5LUDBoGLW95tlJLTYyyICIXjUu9YRkaqtudP9Agpj4ME48eFWe3bi2bIyMMccbL2wNAE7jTtFVF3oq8J+MlKQjx9kz542PmsX7OUMeZbp8mQDWclFUx8Qbv0/jyZ2VGbMNkkoqjtwqt1+Qdx8IymjtllM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406291; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=PghKH5j3RM9oixqw6PWuPbRDg7jx/H6yyM1sSX/yHKE=; b=ZW2M3JYq5PiVt8oE/M4MOEbbeRThUG1vQCWqCAVSy9I/M/2Um/w2SL3UJH7BWTrm7Su0TxsmxHtJnp4B5Liuyn1zvFGhuP6RVwAaK/vlnJ8AecoMLDtQ5WGFY2saR6W+ZECjYGawwi5WlvYKI8gGwPHo57NKHl1EXaq/X1yjh/k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 179040629158060.29344439102306; Sat, 26 Sep 2026 00:04:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMPo-0002Fm-Ms; Sat, 26 Sep 2026 03:01:44 -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 1xAMPd-0002DD-V4 for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:01:35 -0400 Received: from mail-dy2-x0e.google.com ([2607:f8b0:4864:36::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMPa-0000Qc-Jl for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:01:32 -0400 Received: by mail-dy2-x0e.google.com with SMTP id 5a478bee46e88-341f6327b95so909099eec.0 for ; Sat, 26 Sep 2026 00:01:30 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.01.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:01:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406089; x=1791010889; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=PghKH5j3RM9oixqw6PWuPbRDg7jx/H6yyM1sSX/yHKE=; b=RWBlFOeedZjKHq8LX1FbFoFP5b6NsLdny5G8mJt1BWjh7llPOXkAoL3ADTAwR3BRYJ HuW5KUmIdjUuWeWtcywi+pAyPh3d00y+Q2pwdbRhOwjxs96HEx0do5T0fyx/MkgwVWqH MtTdpNd+73pVFeGpwmJGXAZsqhBShmyM4/EWuj/rrxQVqqljizlP2TOutIxWf0c/ebvS MRstHjZeuFaNeKElWC1cINlMn6U22w5XgdNW515WXN0lTmq0QUDay67c/vPyKRa4d8NS wEj/g6/zn9j1y+pbfvTy0cpDUydNVEVsbMkSt0SPkBRjefviFiA7IxTp+oa4rQgOUJP5 HqsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406089; x=1791010889; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=PghKH5j3RM9oixqw6PWuPbRDg7jx/H6yyM1sSX/yHKE=; b=2snNQy0KdjrUyH+bBKRn7+Cc1slZI8a4k9bdxlRURDUrxb4y+/0QiUF12g40iBqFX5 +jHf2Mxn3RAzwGL/snnnS9NBoUO+Po2VHuuWwud0eEmC6Ev96fzfGqiWkBYl3sTomE0y LjjVtlgG5aOwBakOje5QtnesSn9zo/IkklBbFwJndDMa1JwVkbjQe67A9eYNt7i4ZzVu zaB7A/n7TjW4gF3g0BlN5ddpQ66JRFJmWhVeJWA7Uz5aGxBIa3cWPRvrobGWNW4/s+9L 9utO1vG+m8z/mKgpcdi3sInyUopdxt6xCzWUFNBo+qUlj3nwenE6NN4bcShBwYL+KxPM Z56Q== X-Gm-Message-State: AFuF++miJ3CKCfQLtKsEU3+m7nzdd32lOXmKyFofhncHP2ip4Cqcqot4 EMljbnfN2ByvnlnUOAT4dhTFlkiHZOEFOJzKr9upp41woNjd99Dp4WM9RqtB/8XX X-Gm-Gg: AYBFou1biaBX4igvYDZC8/HV+Ff2YlrIuF0Wu5bWY190+A/56ZF3nufR8OKcIyXHRBG wmigCsepOiiie/YWUrfuRtdUnNvgHwS5ACzHNIEzzaUOG6++wSbMx8GoMYq1m6ke9bJFeYofuP7 A+Fuqk5Y4rcjV/+bXn6fbtauxOLgukN6QV9ri/S/v2DJke8+d5+vCqeoghGr4dbqgl9nOqiY0Hp AJL4g49dHpJNIDsOcDnZ1H9eGFGfC+qG4aIUHu1mHp+WTnm6aD3FPAMx1S3RodvRWhA8m6YLDxE G6ynv8vq4bPmNFkXer6OfooHnnp3lnGLs5LiPsP5ll63xsFirQD1DKtCB6fwEJSXsDxeky3GvAj rQxgXWeE89+ebb6hW5VfY6PgI+04gP6JS5FZXUcLIOmPkxHyEY6mDa0sZ1vIW7ckNKj2JwAKmry qUBxAIaNa9+xCLWqL6OTCPk5cxyN9MWl3PGhcXqRziRkEkyIx3DDZaalXPTwTsgWvx/zawtKBeT 4v3HNiR+NEgnr/G4rOxmVRkwiOcWXc= X-Received: by 2002:a05:7300:561c:b0:33c:343a:1045 with SMTP id 5a478bee46e88-342702bf61dmr1973310eec.10.1790406089106; Sat, 26 Sep 2026 00:01:29 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 06/55] target-info: replace QOM registration with a constructor list Date: Sat, 26 Sep 2026 15:00:05 +0800 Message-ID: <20260926070057.1234-7-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::e; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0e.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406292760158500 Content-Type: text/plain; charset="utf-8" Replace MODULE_INIT_TARGET_INFO and target_info_qom_set_target with a constructor list. target_info_init builds a TargetInfoNode; target_info_list_add inserts it, sorted by target_arch, before main(). target_info() starts as an "unknown" TargetInfo and target_info_select sets the current entry. target-info.c moves into libqom. Signed-off-by: Yonggang Luo --- include/qemu/module.h | 1 - include/qemu/target-info-def.h | 56 ++++++++++++++++++++++++++++++--- include/qemu/target-info-init.h | 53 ------------------------------- include/qemu/target-info-qom.h | 30 ------------------ include/qemu/target-info.h | 11 +++++++ meson.build | 6 ++-- system/vl.c | 4 --- target-info-def.c | 1 - target-info-qom.c | 55 -------------------------------- target-info.c | 56 ++++++++++++++++++++++++++++++++- tests/qtest/fuzz/fuzz.c | 3 -- 11 files changed, 120 insertions(+), 156 deletions(-) delete mode 100644 include/qemu/target-info-init.h delete mode 100644 include/qemu/target-info-qom.h delete mode 100644 target-info-qom.c diff --git a/include/qemu/module.h b/include/qemu/module.h index fccf017bf9e..9885ac9afb3 100644 --- a/include/qemu/module.h +++ b/include/qemu/module.h @@ -43,7 +43,6 @@ typedef enum { MODULE_INIT_MIGRATION, MODULE_INIT_BLOCK, MODULE_INIT_OPTS, - MODULE_INIT_TARGET_INFO, MODULE_INIT_QOM, MODULE_INIT_TRACE, MODULE_INIT_XEN_BACKEND, diff --git a/include/qemu/target-info-def.h b/include/qemu/target-info-def.h index 8019d2c7196..080e30a5b0e 100644 --- a/include/qemu/target-info-def.h +++ b/include/qemu/target-info-def.h @@ -11,8 +11,10 @@ =20 #include "qapi/qapi-types-common.h" #include "qapi/qapi-types-machine.h" +#include "qemu/queue.h" +#include "qemu/target-info.h" =20 -typedef struct TargetInfo { +struct TargetInfo { /* runtime equivalent of TARGET_NAME definition */ const char *target_name; /* related to TARGET_ARCH definition */ @@ -30,13 +32,57 @@ typedef struct TargetInfo { unsigned page_bits_init; /* runtime equivalent of TARGET_PAGE_BITS_VARY definition */ bool page_bits_vary; -} TargetInfo; +}; + +typedef struct TargetInfoNode TargetInfoNode; +typedef QLIST_HEAD(, TargetInfoNode) TargetInfoList; + +struct TargetInfoNode { + const TargetInfo *info; + QLIST_ENTRY(TargetInfoNode) next; +}; + +/** + * target_info_list: + * + * TargetInfo is a static list, not a QOM type. Constructors insert + * entries before main(), so type_init can use it. + * + * Returns: registered TargetInfoNode list head, sorted by + * info->target_arch. The list is owned by target-info + * and must not be modified. Iterate with + * QLIST_FOREACH(..., next) and use node->info. + */ +const TargetInfoList *target_info_list(void); =20 /** - * target_info: + * target_info_select: + * @ti: TargetInfo to make current * - * Returns: The TargetInfo structure definition for this target binary. + * Sets target_info() to @ti. + */ +void target_info_select(const TargetInfo *ti); + +/** + * target_info_list_add: + * @node: static TargetInfoNode whose info points at a const TargetInfo + * + * Inserts @node into target_info_list(), sorted by info->target_arch. + * Sets target_info() to the first list entry. + */ +void target_info_list_add(TargetInfoNode *node); + +/* + * Register @ti before main(). Linked into the executable, not a DSO. + * @ti is a unique identifier in this translation unit. */ -const TargetInfo *target_info(void); +#define target_info_init(ti) \ + static TargetInfoNode ti##_node =3D { \ + .info =3D &(ti), \ + }; \ + static void __attribute__((constructor)) do_qemu_init_##ti(void) \ + { \ + target_info_list_add(&ti##_node); \ + } =20 #endif diff --git a/include/qemu/target-info-init.h b/include/qemu/target-info-ini= t.h deleted file mode 100644 index b7024c9faef..00000000000 --- a/include/qemu/target-info-init.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * QEMU target info initialization - * - * Copyright (c) Qualcomm - * - * SPDX-License-Identifier: GPL-2.0-or-later - * - * This file is included by each file defining a TargetInfo structure and = is - * responsible for registering it. - */ - -#ifndef QEMU_TARGET_INFO_INIT_H -#define QEMU_TARGET_INFO_INIT_H - -#define DEFINE_TARGET_INFO_TYPE(info) = \ -static void do_qemu_init_target_info(void) = \ -{ = \ - type_register_static(&info); = \ -} = \ -module_init(do_qemu_init_target_info, MODULE_INIT_TARGET_INFO) - -#ifdef COMPILING_PER_TARGET -#ifdef CONFIG_USER_ONLY - -/* - * User mode does not support multiple targets in the same binary, so just - * define target_info(). - */ -#define target_info_init(ti_var) \ -const TargetInfo *target_info(void) \ -{ \ - return &ti_var; \ -} - -#else /* CONFIG_USER_ONLY */ - -#include "qemu/target-info-qom.h" -#include "qom/object.h" - -#define target_info_init(ti_var) = \ -static const TypeInfo target_info_qom_target_type_info =3D { = \ - .name =3D TYPE_TARGET_INFO"-"TARGET_NAME, = \ - .parent =3D TYPE_TARGET_INFO, = \ - .instance_size =3D sizeof(TargetInfoQom), = \ - .class_size =3D sizeof(TargetInfoQomClass), = \ - .class_data =3D &ti_var, = \ -}; = \ -DEFINE_TARGET_INFO_TYPE(target_info_qom_target_type_info) - -#endif /* CONFIG_USER_ONLY */ -#endif /* COMPILING_PER_TARGET */ - -#endif /* QEMU_TARGET_INFO_INIT_H */ diff --git a/include/qemu/target-info-qom.h b/include/qemu/target-info-qom.h deleted file mode 100644 index 0f6772e65c3..00000000000 --- a/include/qemu/target-info-qom.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * QEMU target info QOM types - * - * Copyright (c) Qualcomm - * - * SPDX-License-Identifier: GPL-2.0-or-later - */ - -#ifndef QEMU_TARGET_INFO_QOM_H -#define QEMU_TARGET_INFO_QOM_H - -#include "qemu/target-info-def.h" -#include "qom/object.h" - -#define TYPE_TARGET_INFO "target-info" - -typedef struct TargetInfoQom { - Object parent_obj; -} TargetInfoQom; - -typedef struct TargetInfoQomClass { - ObjectClass parent_class; - const TargetInfo *target_info; -} TargetInfoQomClass; - -OBJECT_DECLARE_TYPE(TargetInfoQom, TargetInfoQomClass, TARGET_INFO) - -void target_info_qom_set_target(void); - -#endif /* QEMU_TARGET_INFO_QOM_H */ diff --git a/include/qemu/target-info.h b/include/qemu/target-info.h index c09e5d2a3ec..c48973f20be 100644 --- a/include/qemu/target-info.h +++ b/include/qemu/target-info.h @@ -9,6 +9,17 @@ #ifndef QEMU_TARGET_INFO_H #define QEMU_TARGET_INFO_H =20 +#include + +typedef struct TargetInfo TargetInfo; + +/** + * target_info: + * + * Returns: The TargetInfo structure definition for the selected target. + */ +const TargetInfo *target_info(void); + /** * target_name: * diff --git a/meson.build b/meson.build index 51bc0905294..c404d222d9f 100644 --- a/meson.build +++ b/meson.build @@ -3776,6 +3776,9 @@ if enable_modules modulecommon =3D declare_dependency(objects: libmodulecommon.extract_all= _objects(recursive: false), compile_args: '-DBUILD_DSO') endif =20 +qom_ss.add(files( + 'target-info.c', +)) qom_ss =3D qom_ss.apply({}) libqom =3D static_library('qom', qom_ss.sources() + genh, dependencies: [qom_ss.dependencies()], @@ -3870,9 +3873,6 @@ endif common_ss.add(pagevary) system_ss.add(files('page-vary-system.c')) =20 -common_ss.add(files('target-info.c')) -system_ss.add(files('target-info-qom.c')) - if 'CONFIG_TCG' in config_all_accel subdir('contrib/plugins') endif diff --git a/system/vl.c b/system/vl.c index 3efa4968a20..7f1381d84ff 100644 --- a/system/vl.c +++ b/system/vl.c @@ -28,7 +28,6 @@ #include "qemu/units.h" #include "qemu/module.h" #include "qemu/target-info.h" -#include "qemu/target-info-qom.h" #include "exec/cpu-common.h" #include "exec/page-vary.h" #include "hw/core/qdev-properties.h" @@ -2932,9 +2931,6 @@ void qemu_init(int argc, char **argv) =20 os_setup_limits(); =20 - module_call_init(MODULE_INIT_TARGET_INFO); - target_info_qom_set_target(); - module_init_info(qemu_modinfo); module_allow_arch(target_name()); =20 diff --git a/target-info-def.c b/target-info-def.c index fa19cabc55f..3041d64ccd2 100644 --- a/target-info-def.c +++ b/target-info-def.c @@ -9,7 +9,6 @@ #include "qemu/osdep.h" #include "qemu/target-info.h" #include "qemu/target-info-def.h" -#include "qemu/target-info-init.h" #include "hw/core/boards.h" #include "cpu.h" #include "exec/cpu-defs.h" diff --git a/target-info-qom.c b/target-info-qom.c deleted file mode 100644 index 2b38673a3f8..00000000000 --- a/target-info-qom.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * QEMU binary/target API (QOM types) - * - * Copyright (c) Linaro - * - * SPDX-License-Identifier: GPL-2.0-or-later - */ - -#include "qemu/osdep.h" -#include "qapi/error.h" -#include "qom/object.h" -#include "qemu/target-info-def.h" -#include "qemu/target-info-init.h" -#include "qemu/target-info-qom.h" - -static void target_info_qom_class_init(ObjectClass *oc, const void * data) -{ - TargetInfoQomClass *klass =3D TARGET_INFO_CLASS(oc); - klass->target_info =3D data; -} - -static const TypeInfo target_info_parent_type =3D { - .name =3D TYPE_TARGET_INFO, - .parent =3D TYPE_OBJECT, - .instance_size =3D sizeof(TargetInfoQom), - .class_size =3D sizeof(TargetInfoQomClass), - /* use class_base_init so children classes can set class_data accordin= gly */ - .class_base_init =3D target_info_qom_class_init, - /* children classes will be concrete, which allows to easily query them - * without listing this parent class also */ - .abstract =3D true, -}; - -DEFINE_TARGET_INFO_TYPE(target_info_parent_type) - -static const TargetInfo *target_info_ptr; - -const TargetInfo *target_info(void) -{ - return target_info_ptr; -} - -void target_info_qom_set_target(void) -{ - g_autoptr(GSList) targets =3D object_class_get_list(TYPE_TARGET_INFO, = false); - - size_t num_found =3D g_slist_length(targets); - if (num_found !=3D 1) { - error_setg(&error_fatal, num_found =3D=3D 0 ? - "no target-info is available" : - "more than one target-info is available"); - } - - target_info_ptr =3D TARGET_INFO_CLASS(targets->data)->target_info; -} diff --git a/target-info.c b/target-info.c index 9abe72b1f55..6e66f48e1ff 100644 --- a/target-info.c +++ b/target-info.c @@ -10,7 +10,61 @@ #include "qemu/target-info.h" #include "qemu/target-info-qapi.h" #include "qemu/target-info-def.h" -#include "qapi/error.h" +#include "exec/page-vary.h" + +static const TargetInfo target_info_default =3D { + .target_arch =3D SYS_EMU_TARGET__MAX, + .target_name =3D "unknown", + .long_bits =3D 64, + .endianness =3D ENDIAN_MODE_LITTLE, + .page_bits_init =3D TARGET_PAGE_BITS_MIN, +}; + +static const TargetInfo *target_info_ptr =3D &target_info_default; +static TargetInfoList target_infos =3D QLIST_HEAD_INITIALIZER(target_infos= ); + +const TargetInfo *target_info(void) +{ + g_assert(target_info_ptr !=3D NULL); + return target_info_ptr; +} + +const TargetInfoList *target_info_list(void) +{ + return &target_infos; +} + +void target_info_select(const TargetInfo *ti) +{ + g_assert(ti !=3D NULL); + target_info_ptr =3D ti; +} + +void target_info_list_add(TargetInfoNode *node) +{ + const TargetInfo *info; + TargetInfoNode *cur, *prev =3D NULL; + + g_assert(node && node->info); + info =3D node->info; + QLIST_FOREACH(cur, &target_infos, next) { + if (info->target_arch < cur->info->target_arch) { + QLIST_INSERT_BEFORE(cur, node, next); + break; + } + prev =3D cur; + } + if (!cur) { + if (prev) { + QLIST_INSERT_AFTER(prev, node, next); + } else { + QLIST_INSERT_HEAD(&target_infos, node, next); + } + } + + /* Single-target default: the first list entry. */ + target_info_select(QLIST_FIRST(&target_infos)->info); +} =20 const char *target_name(void) { diff --git a/tests/qtest/fuzz/fuzz.c b/tests/qtest/fuzz/fuzz.c index a3a131c80f8..d2355989616 100644 --- a/tests/qtest/fuzz/fuzz.c +++ b/tests/qtest/fuzz/fuzz.c @@ -22,7 +22,6 @@ #include "system/runstate.h" #include "qemu/main-loop.h" #include "qemu/rcu.h" -#include "qemu/target-info-qom.h" #include "tests/qtest/libqtest.h" #include "tests/qtest/libqos/qgraph.h" #include "fuzz.h" @@ -173,8 +172,6 @@ int LLVMFuzzerInitialize(int *argc, char ***argv, char = ***envp) =20 /* Initialize qgraph and modules */ qos_graph_init(); - module_call_init(MODULE_INIT_TARGET_INFO); - target_info_qom_set_target(); module_call_init(MODULE_INIT_FUZZ_TARGET); module_call_init(MODULE_INIT_QOM); module_call_init(MODULE_INIT_LIBQOS); --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406497; cv=none; d=zohomail.com; s=zohoarc; b=IPjBYn4bWD5dQVtS+f++Dy7bOyBUOTLUxwZJUi4tYNWvkSoXENYVcVBQZf1maU/+cy8jqOSiN5uukFK0jFNYX6di38HM0WVE19C6xCxNsoczNxzRUlKtpPmInl+pd3QzfVM2Zp41Y0AmnFjJ45ASMM4RFPpr9WCj1JEccZqe+ZE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406497; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=TZMKrJ9OTgOVuSw0xuj4IN8VaH3KKEmXiPudtyfK+aY=; b=mi2pLniaAZbctSNIzVVnjRsKJyCNqc9zceaf5CLVak2+qvlsUp+zcmB+hasfpiOPwYld3sq0dQoSHB+xi5UIORdmwl88RiqlFkzvJDw6luvuxuKObps6/HtHkwbm+ecEVboXwrg7jviY7/YfoIBNoyxLKoesXlZP0v9/N0nEPfI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406497612381.23973066988015; Sat, 26 Sep 2026 00:08:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMPl-0002Ed-Sw; Sat, 26 Sep 2026 03:01:43 -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 1xAMPg-0002DS-AH for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:01:37 -0400 Received: from mail-dy2-x0e.google.com ([2607:f8b0:4864:36::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMPe-0000Qx-My for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:01:36 -0400 Received: by mail-dy2-x0e.google.com with SMTP id 5a478bee46e88-341fe27b718so1359060eec.0 for ; Sat, 26 Sep 2026 00:01:34 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.01.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:01:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406093; x=1791010893; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=TZMKrJ9OTgOVuSw0xuj4IN8VaH3KKEmXiPudtyfK+aY=; b=EQ37lXl7eCdx2fkFXhKpx7uKs3+kYESeHYwNoXiusJXaQaoFem/F/vxNYgYp50uXrR x2Gxsgb6fzeE8PdgeavqBjWv0uPvO82f4RO78AKqurcFZIJHyATxcYUrz3QwFR9UnuSv jS4fHgRADXTS7a08nBjxquihaU1Np4Cw52fGBflDyetVTTyGxftsjFzl4IIoXAYFgE5b JERNLKCmfHj/R+vcm125BETms4fMf2eUsxbkwWzhgpE0S4ezve1yM9AqQKbPukvMGLT6 L+HiUMSijaGDPe0nC1Cl1znsj9Z0/33dzE9VjR+XMri7roDnpV2oPo48W/+WqxST7jGM yUaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406093; x=1791010893; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=TZMKrJ9OTgOVuSw0xuj4IN8VaH3KKEmXiPudtyfK+aY=; b=axLlSsDuKy4dEv3F3Gvs9EKxbAeubORIYFyZxgGWoyzL1N4Wl0fnvpjkVh6rgo7UWw 9dWujX6pulqFMcklEfdVN0zr1+/sy62ZoB4vbvo4Fspv+yaiYqRfsVcpO7wjWups3TAD t3tUiYQ3AbyCh87aYoDC/wWvwt4a38TQzSd3I77o9LlqrHOP5c26ivihoBdvP+NYMfKz pRIV4wM31xjC9Ri35f3XU2Xh5S0M7OZaQ1UxDkheG3aZxJcia+wkBX0Kf9PoobPF4e5y cDRF9M7LAuJyfqIMiSB6AI5Oh28sqz09cpDqYT5YnJhViVNudec9KdRhLdELkymBLcZz Rd+Q== X-Gm-Message-State: AFuF++lM1c0fN6OuBEz6FhjOYLmr0eVNLy41srfWQPmzRcdKSYomDq4c 1xF7h9w286YQPFscv+9zS4naCdcaV1iaROKSNngQR3i/y6lW+3IQTHo0DecidGNZ X-Gm-Gg: AYBFou28w7L7EITL32YhREcIRRnGCiau1TEZo7rMZN5zZYQtSXzF0i9RnMt5rQfIByY E5gBlj3KK/OrnH9HvwkJaxKBqhHWIutGGBicY6NzHDUrz9EwLfouvVLZ38zMRC7kiaU7y4M7uGs GqZjtu2/7PgXZtILE92i/H8Dkt2KEMLom5Fa9wCQLTDEe+Mkds/91uicfi5hfygBNbVchKXc0IQ Sh8Bw3w7R/Fc5aBma+XOWBU9u4+cEgjB+ehe5ETj6NUDztmJfuhD0Juy/S29SJvJ2jhiTrCaG0M cYXnxSq6dDT00pz0rR/OKkh8Cct2VVsjWCcZuyG3qjrzYtXtv3Ya/VLd6mCo/6r4p8Qsf5UVePc TvkV2/zA2JRZu7POaZ3s2Q+o5WOiB8T5DSzAdjaAgfofv3BxR/X4GXhtgf+tEnrPmQi/w2CGVwc +110V9tIKQIsC28raUoFh70RjhFTICR93NttSMdCLWsRcaBY8RP8FmTNGswVd5Pan0VpfXpZn9w cwUsDoAvtNGD0gpOKAqd33Yyudj8BM= X-Received: by 2002:a05:693c:26c2:b0:33e:3f5b:3ffa with SMTP id 5a478bee46e88-342700c4766mr2065592eec.10.1790406093187; Sat, 26 Sep 2026 00:01:33 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 07/55] tests/unit: add test-target-info Date: Sat, 26 Sep 2026 15:00:06 +0800 Message-ID: <20260926070057.1234-8-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::e; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0e.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406499497158500 Content-Type: text/plain; charset="utf-8" Collect each target-info-def.c object in target_info_def_objects, keyed by target dir. Link every value so constructors fill the list. Assert target_info() is not NULL and target_info_list() has one entry per linked object. Signed-off-by: Yonggang Luo --- meson.build | 6 +++++- tests/unit/meson.build | 4 ++++ tests/unit/test-target-info.c | 38 +++++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 tests/unit/test-target-info.c diff --git a/meson.build b/meson.build index c404d222d9f..93237429713 100644 --- a/meson.build +++ b/meson.build @@ -4259,6 +4259,8 @@ endif =20 traceable =3D [] emulators =3D {} +target_info_def =3D files('target-info-def.c') +target_info_def_objects =3D {} foreach target : target_dirs config_target =3D config_target_mak[target] target_name =3D config_target['TARGET_NAME'] @@ -4330,7 +4332,7 @@ foreach target : target_dirs endif endif =20 - arch_srcs +=3D files('target-info-def.c') + arch_srcs +=3D target_info_def =20 if target_base_arch in target_arch t =3D target_arch[target_base_arch].apply(config_target, strict: false) @@ -4408,6 +4410,8 @@ foreach target : target_dirs c_args: c_args, build_by_default: false) =20 + target_info_def_objects +=3D {target: lib.extract_objects(target_info_de= f)} + if target.endswith('-softmmu') execs =3D [{ 'name': 'qemu-system-' + target_name, diff --git a/tests/unit/meson.build b/tests/unit/meson.build index e47bc7225ab..dc980a35955 100644 --- a/tests/unit/meson.build +++ b/tests/unit/meson.build @@ -43,6 +43,10 @@ tests =3D { 'test-qgraph': ['../qtest/libqos/qgraph.c'], 'check-qom-interface': [qom], 'check-qom-proplist': [qom], + 'test-target-info': [qom, declare_dependency( + objects: target_info_def_objects.values(), + compile_args: ['-DTARGET_INFO_DEF_COUNT=3D@0@'.format( + target_info_def_objects.values().length())])], 'test-qemu-opts': [], 'test-keyval': [testqapi], 'test-logging': [], diff --git a/tests/unit/test-target-info.c b/tests/unit/test-target-info.c new file mode 100644 index 00000000000..e6de9b259e8 --- /dev/null +++ b/tests/unit/test-target-info.c @@ -0,0 +1,38 @@ +/* + * TargetInfo unit tests + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qemu/target-info.h" +#include "qemu/target-info-def.h" + +static int target_info_list_count(void) +{ + TargetInfoNode *node; + int n =3D 0; + + QLIST_FOREACH(node, target_info_list(), next) { + n++; + } + return n; +} + +static void test_target_info_not_null(void) +{ + g_assert_nonnull(target_info()); +} + +static void test_target_info_list_count(void) +{ + g_assert_cmpint(target_info_list_count(), =3D=3D, TARGET_INFO_DEF_COUN= T); +} + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + g_test_add_func("/target-info/not-null", test_target_info_not_null); + g_test_add_func("/target-info/list-count", test_target_info_list_count= ); + return g_test_run(); +} --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406472; cv=none; d=zohomail.com; s=zohoarc; b=jQFXuWeI+2pbysFes7Q0ZBt+oIshprs6pqUjs2WH6gCGhsQxUv4TFoXKS7Rd5AvpRfgPdsfDMrak66ERDDwyjWJ8V2IdVjDPKIb5Kgs6aE+UX7d3YatpCK0xF1CXTqNB24CddAz9FgLcD45rhuHbq8Cc8j7EZsFk415/VgzuKbI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406472; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=2ign1E0+b6xltdUS4MWB1vKIjsNRvcSjRc2WeM4/+WU=; b=meJmlsbh0GvJYbWGAhL0xeGTB5GolTu/ea94impRCGEJEJqAemYwWxEqyUJd6jidwutFjynepBXbH1Ba56czVE7qtz4bbOB77X+XDhP43of1wkpKHqQsV34BO81504P+3hzHzPHadVbopeJHsksyhwCAhDhZyVehnEc2rTC4BPU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406472468652.6895923175646; Sat, 26 Sep 2026 00:07:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMPr-0002GN-CM; Sat, 26 Sep 2026 03:01:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAMPm-0002Ew-H3 for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:01:43 -0400 Received: from mail-dy2-x0e.google.com ([2607:f8b0:4864:36::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMPj-0000RY-C6 for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:01:42 -0400 Received: by mail-dy2-x0e.google.com with SMTP id 5a478bee46e88-3411e0ace58so1949847eec.0 for ; Sat, 26 Sep 2026 00:01:39 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.01.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:01:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406098; x=1791010898; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=2ign1E0+b6xltdUS4MWB1vKIjsNRvcSjRc2WeM4/+WU=; b=k6A9kGX4JLsqCaoXPNO7b8I3Y6vtFZrk9ZlUXK99vWAEWHWyQ35sRrsweWQBhMeKO5 Bg/f+oGFTSf9ApW6KIgbugib91CPj8fhEKqqUvqrgCgNz4CrvWBJZkBYlX2uW0dDOB3J sa+sZn2fcWhfOELnV7fOLLxGpi4ZAwAqAS1GTNpB4MUWW/kj6/GJFYiUjp8vwibMxVt6 acKah35olVg9jAB2fVhHJzLo+L+sxXw2cKkeFHkoMGNkL/pCwFAfOz8ksz90+jEqlesK m/lDmCcZmv9498FNDa4K1OelHzW4iVCJmLXypCveeiopNngL/ivyqQwd+5OO1JmU4OmH krdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406098; x=1791010898; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=2ign1E0+b6xltdUS4MWB1vKIjsNRvcSjRc2WeM4/+WU=; b=ylDiK5ayrWW7y+IhG5E/QY4vtH1LaRHTBs/NLmtL4rI+LTeDCvpVAH1pj3jb29Ula1 eBvUY3xW64junjUm/IicaiBif1GX4Du+grAyWmEwUzuBRp41wzXKXUens8fBdvTxtQF+ hb58zRWQp0qybiW0A6Vj6+nfzetUC7YDw13rdxPYC2eHv2KeLTO2ehn6a+VcNAokLE/q ifL60UsyL8ts9zV74DAdqcMuRD9Pbh7RAO5WdyhhBxPt+4voPaYqfpQpGSdf2yB6shU/ POxcFnbRq3VvIZdLEFs+DYItm8l0jypcwV0ah2IQvAu1iezw7ssdU7olyGh7XShkl9XC kMcA== X-Gm-Message-State: AFuF++kwKFcXWz4ev7QVGNEDV0iAA9YOUiZP8KAHetBu3jr0l70fPHFL 9Gi56MnUJplzMXSWn7Jr+VH4Qp+4klvbZYbyTSgc9hxrFDluqDQ4NKi/WfHRdEMx X-Gm-Gg: AYBFou3XEqgi4ahZ55whqDAyY1RP84feGQstzCxAKLSBngwYjDjIA2TMM5pwje3vLcI pkNhOzX/ii9CiNeAXwPcHMopTCP/UUWEEUHbtaR4IAehCrN5TTRFj5aQ2OCf+bwDM/dAqa8HhgR 3CoLFBNSLwjb2teusI0MWxTZlLpNXa4wnUZdARVOg+cfvhTGLiyDwIezLIKwK5AZ1bSJ1n6+q3p +7QHMrnaGNiR9e8AM/YekYS4twcnPkZ2WI7FHwlQ5b2s20NfGbgDs3mnZqg2YRpn7IyqJ+Xr7Yp ryMoz+FCyUte3F4atW6HBczRgUzhnKHbswBK0hCzzRyhRrQdJeLqYNNpiSJMYCUH5tswAaOO2oJ Dh5hBPLBgV7IfuDToJNA95X2VvuTgSXvelwPNbTaq8tovglOCYYifj+gbXbnqUS6PtqsOIh44L6 0/0YrBSYryXtBRVS9tB7f5SFuQ9nfhncws2OSd3Q7tMjUv6DmArY8IJyTmcqyXJ/Xn6VPPxXWRJ Q10fuQYCsMTz84Ln+9eeObeu2+4Sr8= X-Received: by 2002:a05:7301:12a:b0:33f:f57:c516 with SMTP id 5a478bee46e88-34270ac0463mr2217178eec.10.1790406097223; Sat, 26 Sep 2026 00:01:37 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 08/55] tests/qtest: prepare machine-list-test for combined qemu-system Date: Sat, 26 Sep 2026 15:00:07 +0800 Message-ID: <20260926070057.1234-9-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::e; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0e.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406473438158500 Content-Type: text/plain; charset="utf-8" Each built qemu-system target checks its query-target arch and query-machines names, including the none machine and omitting the abstract pegasos parent. xen, vmapple, nitro, and x-remote appear only when that host build has them. The lists in machine-list-test.inc.h are shared for a later combined qemu-system test. Signed-off-by: Yonggang Luo --- tests/qtest/machine-list-test.c | 94 +++ tests/qtest/machine-list-test.inc.h | 876 ++++++++++++++++++++++++++++ tests/qtest/meson.build | 1 + 3 files changed, 971 insertions(+) create mode 100644 tests/qtest/machine-list-test.c create mode 100644 tests/qtest/machine-list-test.inc.h diff --git a/tests/qtest/machine-list-test.c b/tests/qtest/machine-list-tes= t.c new file mode 100644 index 00000000000..35fb365197d --- /dev/null +++ b/tests/qtest/machine-list-test.c @@ -0,0 +1,94 @@ +/* + * Per-target machine list tests. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" + +#include "libqtest.h" +#include "qobject/qdict.h" +#include "qobject/qlist.h" +#include "qobject/qstring.h" + +/* query-target "arch" is SysEmuTarget, not always TARGET_NAME. */ +static const char *query_arch_for_target(const char *target_info) +{ + static const struct { + const char *target_name; + const char *arch; + } map[] =3D { + { "armeb", "arm" }, + { "microblazeel", "microblaze" }, + { "mips64el", "mips64" }, + { "mipsel", "mips" }, + { "ppc64le", "ppc64" }, + { "sh4eb", "sh4" }, + { "xtensaeb", "xtensa" }, + }; + size_t i; + + for (i =3D 0; i < G_N_ELEMENTS(map); i++) { + if (!strcmp(target_info, map[i].target_name)) { + return map[i].arch; + } + } + return target_info; +} + +#include "machine-list-test.inc.h" + +static QList *query_machine_names(QTestState *qts) +{ + QDict *resp; + QList *machines; + QList *names; + const QListEntry *e; + + resp =3D qtest_qmp(qts, "{'execute': 'query-machines'}"); + g_assert(qdict_haskey(resp, "return")); + machines =3D qdict_get_qlist(resp, "return"); + g_assert_nonnull(machines); + names =3D qlist_new(); + for (e =3D qlist_first(machines); e; e =3D qlist_next(e)) { + QDict *m =3D qobject_to(QDict, qlist_entry_obj(e)); + const char *name; + + g_assert_nonnull(m); + name =3D qdict_get_str(m, "name"); + qlist_append_str(names, name); + } + qobject_unref(resp); + return names; +} + +static void test_historic_machine_list(void) +{ + const char *target =3D qtest_get_arch(); + const struct ShippedTarget *t =3D lookup_shipped_target(target); + QTestState *qts; + QDict *resp; + QDict *ret; + g_autoptr(QList) names =3D NULL; + + qts =3D qtest_init("-nodefaults -M none"); + read_accel_flags(qts); + resp =3D qtest_qmp(qts, "{'execute': 'query-target'}"); + g_assert(qdict_haskey(resp, "return")); + ret =3D qdict_get_qdict(resp, "return"); + g_assert_cmpstr(qdict_get_str(ret, "arch"), =3D=3D, + query_arch_for_target(target)); + qobject_unref(resp); + names =3D query_machine_names(qts); + if (t) { + assert_name_list(names, t->name, t->machines, t->n_machines); + } + qtest_quit(qts); +} + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + qtest_add_func("machine-list", test_historic_machine_list); + return g_test_run(); +} diff --git a/tests/qtest/machine-list-test.inc.h b/tests/qtest/machine-list= -test.inc.h new file mode 100644 index 00000000000..e6e6f3ea7cd --- /dev/null +++ b/tests/qtest/machine-list-test.inc.h @@ -0,0 +1,876 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +/* Normal machine lists for every softmmu target. */ +/* Xen, vmapple, nitro, and x-remote stay in special_machine_map. */ + +static const char * const aarch64_machines[] =3D { + "amd-versal-virt", + "amd-versal2-virt", + "anacapa-bmc", + "ast1030-evb", + "ast1040-evb", + "ast1060-evb", + "ast2500-evb", + "ast2600-evb", + "ast2700a1-evb", + "ast2700a2-evb", + "ast2700fc", + "axiado-scm3003", + "b-l475e-iot01a", + "bletchley-bmc", + "bpim2u", + "canon-a1100", + "catalina-bmc", + "collie", + "cubieboard", + "emcraft-sf2", + "fby35-bmc", + "fuji-bmc", + "g220a-bmc", + "gb200nvl-bmc", + "imx25-pdk", + "imx8mm-evk", + "imx8mp-evk", + "integratorcp", + "kudo-bmc", + "kzm", + "lm3s6965evb", + "lm3s811evb", + "max78000fthr", + "mcimx6ul-evk", + "mcimx7d-sabre", + "microbit", + "mori-bmc", + "mps2-an385", + "mps2-an386", + "mps2-an500", + "mps2-an505", + "mps2-an511", + "mps2-an521", + "mps3-an524", + "mps3-an536", + "mps3-an547", + "mps3-an555", + "musca-a", + "musca-b1", + "netduino2", + "netduinoplus2", + "none", + "npcm750-evb", + "npcm845-evb", + "nuri", + "olimex-stm32-h405", + "orangepi-pc", + "palmetto-bmc", + "quanta-gbs-bmc", + "quanta-gsj", + "quanta-q71l-bmc", + "rainier-bmc", + "raspi0", + "raspi1ap", + "raspi2b", + "raspi3ap", + "raspi3b", + "raspi4b", + "realview-eb", + "realview-eb-mpcore", + "realview-pb-a8", + "realview-pbx-a9", + "romulus-bmc", + "sabrelite", + "sanmiguel-bmc", + "sbsa-ref", + "smdkc210", + "stm32vldiscovery", + "supermicro-x11spi-bmc", + "supermicrox11-bmc", + "sx1", + "sx1-v1", + "tiogapass-bmc", + "versatileab", + "versatilepb", + "vexpress-a15", + "vexpress-a9", + "virt-10.0", + "virt-10.1", + "virt-10.2", + "virt-11.0", + "virt-11.1", + "virt-11.2", + "virt-6.0", + "virt-6.1", + "virt-6.2", + "virt-7.0", + "virt-7.1", + "virt-7.2", + "virt-8.0", + "virt-8.1", + "virt-8.2", + "virt-9.0", + "virt-9.1", + "virt-9.2", + "witherspoon-bmc", + "xilinx-zynq-a9", + "xlnx-zcu102", + "yosemitev2-bmc", +}; + +static const char * const alpha_machines[] =3D { + "clipper", + "none", +}; + +static const char * const arm_machines[] =3D { + "anacapa-bmc", + "ast1030-evb", + "ast1040-evb", + "ast1060-evb", + "ast2500-evb", + "ast2600-evb", + "b-l475e-iot01a", + "bletchley-bmc", + "bpim2u", + "canon-a1100", + "catalina-bmc", + "collie", + "cubieboard", + "emcraft-sf2", + "fby35-bmc", + "fuji-bmc", + "g220a-bmc", + "gb200nvl-bmc", + "imx25-pdk", + "integratorcp", + "kudo-bmc", + "kzm", + "lm3s6965evb", + "lm3s811evb", + "max78000fthr", + "mcimx6ul-evk", + "mcimx7d-sabre", + "microbit", + "mori-bmc", + "mps2-an385", + "mps2-an386", + "mps2-an500", + "mps2-an505", + "mps2-an511", + "mps2-an521", + "mps3-an524", + "mps3-an536", + "mps3-an547", + "mps3-an555", + "musca-a", + "musca-b1", + "netduino2", + "netduinoplus2", + "none", + "npcm750-evb", + "nuri", + "olimex-stm32-h405", + "orangepi-pc", + "palmetto-bmc", + "quanta-gbs-bmc", + "quanta-gsj", + "quanta-q71l-bmc", + "rainier-bmc", + "raspi0", + "raspi1ap", + "raspi2b", + "realview-eb", + "realview-eb-mpcore", + "realview-pb-a8", + "realview-pbx-a9", + "romulus-bmc", + "sabrelite", + "sanmiguel-bmc", + "smdkc210", + "stm32vldiscovery", + "supermicro-x11spi-bmc", + "supermicrox11-bmc", + "sx1", + "sx1-v1", + "tiogapass-bmc", + "versatileab", + "versatilepb", + "vexpress-a15", + "vexpress-a9", + "virt-10.0", + "virt-10.1", + "virt-10.2", + "virt-11.0", + "virt-11.1", + "virt-11.2", + "virt-6.0", + "virt-6.1", + "virt-6.2", + "virt-7.0", + "virt-7.1", + "virt-7.2", + "virt-8.0", + "virt-8.1", + "virt-8.2", + "virt-9.0", + "virt-9.1", + "virt-9.2", + "witherspoon-bmc", + "xilinx-zynq-a9", + "yosemitev2-bmc", +}; + +static const char * const avr_machines[] =3D { + "arduino-duemilanove", + "arduino-mega", + "arduino-mega-2560-v3", + "arduino-uno", + "none", +}; + +static const char * const hexagon_machines[] =3D { + "V66G_1024", + "V68N_1024", + "V81DGB_1", + "V81QA_1", + "none", + "virt", +}; + +static const char * const hppa_machines[] =3D { + "715", + "A400", + "B160L", + "C3700", + "none", +}; + +static const char * const i386_machines[] =3D { + "isapc", + "microvm", + "none", + "pc-i440fx-10.0", + "pc-i440fx-10.1", + "pc-i440fx-10.2", + "pc-i440fx-11.0", + "pc-i440fx-11.1", + "pc-i440fx-11.2", + "pc-i440fx-6.0", + "pc-i440fx-6.1", + "pc-i440fx-6.2", + "pc-i440fx-7.0", + "pc-i440fx-7.1", + "pc-i440fx-7.2", + "pc-i440fx-8.0", + "pc-i440fx-8.1", + "pc-i440fx-8.2", + "pc-i440fx-9.0", + "pc-i440fx-9.1", + "pc-i440fx-9.2", + "pc-q35-10.0", + "pc-q35-10.1", + "pc-q35-10.2", + "pc-q35-11.0", + "pc-q35-11.1", + "pc-q35-11.2", + "pc-q35-6.0", + "pc-q35-6.1", + "pc-q35-6.2", + "pc-q35-7.0", + "pc-q35-7.1", + "pc-q35-7.2", + "pc-q35-8.0", + "pc-q35-8.1", + "pc-q35-8.2", + "pc-q35-9.0", + "pc-q35-9.1", + "pc-q35-9.2", +}; + +static const char * const loongarch64_machines[] =3D { + "none", + "virt-11.1", + "virt-11.2", +}; + +static const char * const m68k_machines[] =3D { + "an5206", + "mcf5208evb", + "next-cube", + "none", + "q800", + "virt-10.0", + "virt-10.1", + "virt-10.2", + "virt-11.0", + "virt-11.1", + "virt-11.2", + "virt-6.0", + "virt-6.1", + "virt-6.2", + "virt-7.0", + "virt-7.1", + "virt-7.2", + "virt-8.0", + "virt-8.1", + "virt-8.2", + "virt-9.0", + "virt-9.1", + "virt-9.2", +}; + +static const char * const microblaze_machines[] =3D { + "none", + "petalogix-ml605", + "petalogix-s3adsp1800", + "xlnx-zynqmp-pmu", +}; + +static const char * const mips_machines[] =3D { + "malta", + "none", +}; + +static const char * const mips64_machines[] =3D { + "magnum", + "malta", + "none", + "pica61", +}; + +static const char * const mips64el_machines[] =3D { + "boston", + "fuloong2e", + "loongson3-virt", + "magnum", + "malta", + "none", + "pica61", +}; + +static const char * const mipsel_machines[] =3D { + "malta", + "none", +}; + +static const char * const or1k_machines[] =3D { + "none", + "or1k-sim", + "virt", +}; + +static const char * const ppc_machines[] =3D { + "40p", + "amigaone", + "bamboo", + "g3beige", + "mac99", + "mpc8544ds", + "none", + "pegasos1", + "pegasos2", + "ppce500", + "ppe42_machine", + "sam460ex", + "virtex-ml507", +}; + +static const char * const ppc64_machines[] =3D { + "40p", + "amigaone", + "bamboo", + "g3beige", + "mac99", + "mpc8544ds", + "none", + "pegasos1", + "pegasos2", + "powernv10", + "powernv10-rainier", + "powernv11", + "powernv8", + "powernv9", + "ppce500", + "ppe42_machine", + "pseries-10.0", + "pseries-10.1", + "pseries-10.2", + "pseries-11.0", + "pseries-11.1", + "pseries-11.2", + "pseries-6.0", + "pseries-6.1", + "pseries-6.2", + "pseries-7.0", + "pseries-7.1", + "pseries-7.2", + "pseries-8.0", + "pseries-8.1", + "pseries-8.2", + "pseries-9.0", + "pseries-9.1", + "pseries-9.2", + "sam460ex", + "virtex-ml507", +}; + +static const char * const riscv32_machines[] =3D { + "amd-microblaze-v-generic", + "none", + "opentitan", + "sifive_e", + "sifive_u", + "spike", + "virt", +}; + +static const char * const riscv64_machines[] =3D { + "amd-microblaze-v-generic", + "boston-aia", + "k230", + "microchip-icicle-kit", + "none", + "shakti_c", + "sifive_e", + "sifive_u", + "spike", + "tt-atlantis", + "virt", + "xiangshan-kunminghu", +}; + +static const char * const rx_machines[] =3D { + "gdbsim-r5f562n7", + "gdbsim-r5f562n8", + "none", +}; + +static const char * const s390x_machines[] =3D { + "none", + "s390-ccw-virtio-10.0", + "s390-ccw-virtio-10.1", + "s390-ccw-virtio-10.2", + "s390-ccw-virtio-11.0", + "s390-ccw-virtio-11.1", + "s390-ccw-virtio-11.2", + "s390-ccw-virtio-6.0", + "s390-ccw-virtio-6.1", + "s390-ccw-virtio-6.2", + "s390-ccw-virtio-7.0", + "s390-ccw-virtio-7.1", + "s390-ccw-virtio-7.2", + "s390-ccw-virtio-8.0", + "s390-ccw-virtio-8.1", + "s390-ccw-virtio-8.2", + "s390-ccw-virtio-9.0", + "s390-ccw-virtio-9.1", + "s390-ccw-virtio-9.2", +}; + +static const char * const sh4_machines[] =3D { + "none", + "r2d", +}; + +static const char * const sh4eb_machines[] =3D { + "none", + "r2d", +}; + +static const char * const sparc_machines[] =3D { + "LX", + "SPARCClassic", + "SPARCbook", + "SS-10", + "SS-20", + "SS-4", + "SS-5", + "SS-600MP", + "Voyager", + "leon3_generic", + "none", +}; + +static const char * const sparc64_machines[] =3D { + "niagara", + "none", + "sun4u", + "sun4v", +}; + +static const char * const tricore_machines[] =3D { + "KIT_AURIX_TC277_TRB", + "none", + "tricore_testboard", +}; + +static const char * const x86_64_machines[] =3D { + "isapc", + "microvm", + "none", + "pc-i440fx-10.0", + "pc-i440fx-10.1", + "pc-i440fx-10.2", + "pc-i440fx-11.0", + "pc-i440fx-11.1", + "pc-i440fx-11.2", + "pc-i440fx-6.0", + "pc-i440fx-6.1", + "pc-i440fx-6.2", + "pc-i440fx-7.0", + "pc-i440fx-7.1", + "pc-i440fx-7.2", + "pc-i440fx-8.0", + "pc-i440fx-8.1", + "pc-i440fx-8.2", + "pc-i440fx-9.0", + "pc-i440fx-9.1", + "pc-i440fx-9.2", + "pc-q35-10.0", + "pc-q35-10.1", + "pc-q35-10.2", + "pc-q35-11.0", + "pc-q35-11.1", + "pc-q35-11.2", + "pc-q35-6.0", + "pc-q35-6.1", + "pc-q35-6.2", + "pc-q35-7.0", + "pc-q35-7.1", + "pc-q35-7.2", + "pc-q35-8.0", + "pc-q35-8.1", + "pc-q35-8.2", + "pc-q35-9.0", + "pc-q35-9.1", + "pc-q35-9.2", +}; + +static const char * const xtensa_machines[] =3D { + "kc705", + "kc705-nommu", + "lx200", + "lx200-nommu", + "lx60", + "lx60-nommu", + "ml605", + "ml605-nommu", + "none", + "sim", + "virt", +}; + +static const char * const xtensaeb_machines[] =3D { + "kc705", + "kc705-nommu", + "lx200", + "lx200-nommu", + "lx60", + "lx60-nommu", + "ml605", + "ml605-nommu", + "none", + "sim", + "virt", +}; + +static const struct ShippedTarget { + const char *name; + const char *arch; + const char *endianness; + const char * const *machines; + size_t n_machines; +} shipped_targets[] =3D { + { "aarch64", "aarch64", "little", + aarch64_machines, G_N_ELEMENTS(aarch64_machines) }, + { "alpha", "alpha", "little", + alpha_machines, G_N_ELEMENTS(alpha_machines) }, + { "arm", "arm", "little", + arm_machines, G_N_ELEMENTS(arm_machines) }, + { "avr", "avr", "little", + avr_machines, G_N_ELEMENTS(avr_machines) }, + { "hexagon", "hexagon", "little", + hexagon_machines, G_N_ELEMENTS(hexagon_machines) }, + { "hppa", "hppa", "big", + hppa_machines, G_N_ELEMENTS(hppa_machines) }, + { "i386", "i386", "little", + i386_machines, G_N_ELEMENTS(i386_machines) }, + { "loongarch64", "loongarch64", "little", + loongarch64_machines, G_N_ELEMENTS(loongarch64_machines) }, + { "m68k", "m68k", "big", + m68k_machines, G_N_ELEMENTS(m68k_machines) }, + { "microblaze", "microblaze", "big", + microblaze_machines, G_N_ELEMENTS(microblaze_machines) }, + { "mips", "mips", "big", + mips_machines, G_N_ELEMENTS(mips_machines) }, + { "mips64", "mips64", "big", + mips64_machines, G_N_ELEMENTS(mips64_machines) }, + { "mips64el", "mips64", "little", + mips64el_machines, G_N_ELEMENTS(mips64el_machines) }, + { "mipsel", "mips", "little", + mipsel_machines, G_N_ELEMENTS(mipsel_machines) }, + { "or1k", "or1k", "big", + or1k_machines, G_N_ELEMENTS(or1k_machines) }, + { "ppc", "ppc", "big", + ppc_machines, G_N_ELEMENTS(ppc_machines) }, + { "ppc64", "ppc64", "big", + ppc64_machines, G_N_ELEMENTS(ppc64_machines) }, + { "riscv32", "riscv32", "little", + riscv32_machines, G_N_ELEMENTS(riscv32_machines) }, + { "riscv64", "riscv64", "little", + riscv64_machines, G_N_ELEMENTS(riscv64_machines) }, + { "rx", "rx", "little", + rx_machines, G_N_ELEMENTS(rx_machines) }, + { "s390x", "s390x", "big", + s390x_machines, G_N_ELEMENTS(s390x_machines) }, + { "sh4", "sh4", "little", + sh4_machines, G_N_ELEMENTS(sh4_machines) }, + { "sh4eb", "sh4", "big", + sh4eb_machines, G_N_ELEMENTS(sh4eb_machines) }, + { "sparc", "sparc", "big", + sparc_machines, G_N_ELEMENTS(sparc_machines) }, + { "sparc64", "sparc64", "big", + sparc64_machines, G_N_ELEMENTS(sparc64_machines) }, + { "tricore", "tricore", "little", + tricore_machines, G_N_ELEMENTS(tricore_machines) }, + { "x86_64", "x86_64", "little", + x86_64_machines, G_N_ELEMENTS(x86_64_machines) }, + { "xtensa", "xtensa", "little", + xtensa_machines, G_N_ELEMENTS(xtensa_machines) }, + { "xtensaeb", "xtensa", "big", + xtensaeb_machines, G_N_ELEMENTS(xtensaeb_machines) }, +}; + +/* + * Machines omitted from the normal lists. Merged in when @accel is + * present (NULL means no accel check) and the host matches (NULL + * host_os or host_cpu means any). xenfv is an alias of xenfv-4.2. + * aarch64 HVF (vmapple) is built only on an aarch64 Darwin host. + * nitro is Linux-only, on x86_64-softmmu for an x86_64 host and + * aarch64-softmmu for an aarch64 host. x-remote follows KVM on Linux + * when host_cpu is the host that builds KVM for that target. + */ +static const char * const xen_pc_machines[] =3D { + "xenpv", + "xenpvh", + "xenfv-4.2", +}; + +static const char * const xen_aarch64_machines[] =3D { + "xenpvh", +}; + +static const char * const hvf_aarch64_machines[] =3D { + "vmapple", +}; + +static const char * const nitro_machines[] =3D { + "nitro", +}; + +static const char * const x_remote_machines[] =3D { + "x-remote", +}; + +static const struct SpecialMachineMap { + const char *target; + const char *accel; + const char *host_os; + const char *host_cpu; + const char * const *machines; + size_t n_machines; +} special_machine_map[] =3D { + { "i386", "xen", NULL, "x86_64", + xen_pc_machines, G_N_ELEMENTS(xen_pc_machines) }, + { "i386", "xen", NULL, "aarch64", + xen_pc_machines, G_N_ELEMENTS(xen_pc_machines) }, + { "x86_64", "xen", NULL, "x86_64", + xen_pc_machines, G_N_ELEMENTS(xen_pc_machines) }, + { "x86_64", "xen", NULL, "aarch64", + xen_pc_machines, G_N_ELEMENTS(xen_pc_machines) }, + { "aarch64", "xen", NULL, "aarch64", + xen_aarch64_machines, G_N_ELEMENTS(xen_aarch64_machines) }, + { "aarch64", "hvf", "darwin", "aarch64", + hvf_aarch64_machines, G_N_ELEMENTS(hvf_aarch64_machines) }, + { "x86_64", NULL, "linux", "x86_64", + nitro_machines, G_N_ELEMENTS(nitro_machines) }, + { "aarch64", NULL, "linux", "aarch64", + nitro_machines, G_N_ELEMENTS(nitro_machines) }, + { "i386", "kvm", "linux", "x86_64", + x_remote_machines, G_N_ELEMENTS(x_remote_machines) }, + { "x86_64", "kvm", "linux", "x86_64", + x_remote_machines, G_N_ELEMENTS(x_remote_machines) }, + { "aarch64", "kvm", "linux", "aarch64", + x_remote_machines, G_N_ELEMENTS(x_remote_machines) }, + { "ppc", "kvm", "linux", "ppc64", + x_remote_machines, G_N_ELEMENTS(x_remote_machines) }, + { "ppc64", "kvm", "linux", "ppc64", + x_remote_machines, G_N_ELEMENTS(x_remote_machines) }, + { "s390x", "kvm", "linux", "s390x", + x_remote_machines, G_N_ELEMENTS(x_remote_machines) }, + { "riscv64", "kvm", "linux", "riscv64", + x_remote_machines, G_N_ELEMENTS(x_remote_machines) }, + { "loongarch64", "kvm", "linux", "loongarch64", + x_remote_machines, G_N_ELEMENTS(x_remote_machines) }, +}; + +static const struct ShippedTarget *lookup_shipped_target(const char *name) +{ + size_t i; + + for (i =3D 0; i < G_N_ELEMENTS(shipped_targets); i++) { + if (!strcmp(shipped_targets[i].name, name)) { + return &shipped_targets[i]; + } + } + return NULL; +} + +static bool have_xen; +static bool have_hvf; +static bool have_kvm; + +static const char *host_cpu(void) +{ +#if defined(__aarch64__) || defined(_M_ARM64) + return "aarch64"; +#elif defined(__x86_64__) || defined(_M_X64) + return "x86_64"; +#elif defined(__powerpc64__) + return "ppc64"; +#elif defined(__s390x__) + return "s390x"; +#elif defined(__riscv) && __riscv_xlen =3D=3D 64 + return "riscv64"; +#elif defined(__loongarch64) + return "loongarch64"; +#else + return "other"; +#endif +} + +static bool host_os_matches(const char *host_os) +{ + if (!host_os) { + return true; + } +#if defined(CONFIG_LINUX) + return !strcmp(host_os, "linux"); +#elif defined(CONFIG_DARWIN) + return !strcmp(host_os, "darwin"); +#else + return false; +#endif +} + +static bool accel_present(const char *accel) +{ + if (!accel) { + return true; + } + if (!strcmp(accel, "xen")) { + return have_xen; + } + if (!strcmp(accel, "hvf")) { + return have_hvf; + } + if (!strcmp(accel, "kvm")) { + return have_kvm; + } + return false; +} + +static bool host_cpu_matches(const char *want) +{ + if (!want) { + return true; + } + return !strcmp(want, host_cpu()); +} + +static bool special_applies(const struct SpecialMachineMap *s, + const char *target) +{ + return !strcmp(s->target, target) && + accel_present(s->accel) && + host_os_matches(s->host_os) && + host_cpu_matches(s->host_cpu); +} + +static void assert_name_list(QList *names, const char *target, + const char * const *expect, size_t n_expect) +{ + GHashTable *got =3D g_hash_table_new(g_str_hash, g_str_equal); + GHashTable *want =3D g_hash_table_new(g_str_hash, g_str_equal); + const QListEntry *e; + GHashTableIter iter; + gpointer key; + size_t i; + + g_assert_nonnull(names); + for (e =3D qlist_first(names); e; e =3D qlist_next(e)) { + QString *qs =3D qobject_to(QString, qlist_entry_obj(e)); + + g_assert_nonnull(qs); + g_hash_table_add(got, (gpointer)qstring_get_str(qs)); + } + for (i =3D 0; i < n_expect; i++) { + g_hash_table_add(want, (gpointer)expect[i]); + } + for (i =3D 0; i < G_N_ELEMENTS(special_machine_map); i++) { + const struct SpecialMachineMap *s =3D &special_machine_map[i]; + size_t j; + + if (!special_applies(s, target)) { + continue; + } + for (j =3D 0; j < s->n_machines; j++) { + g_hash_table_add(want, (gpointer)s->machines[j]); + } + } + g_hash_table_iter_init(&iter, got); + while (g_hash_table_iter_next(&iter, &key, NULL)) { + if (!g_hash_table_contains(want, key)) { + g_printerr("unexpected machine: %s\n", (const char *)key); + } + } + g_hash_table_iter_init(&iter, want); + while (g_hash_table_iter_next(&iter, &key, NULL)) { + if (!g_hash_table_contains(got, key)) { + g_printerr("missing machine: %s\n", (const char *)key); + } + } + g_assert_cmpuint(g_hash_table_size(got), =3D=3D, g_hash_table_size(wan= t)); + g_hash_table_unref(got); + g_hash_table_unref(want); +} + +static void read_accel_flags(QTestState *qts) +{ + QDict *resp; + QDict *ret; + QList *present; + const QListEntry *e; + + have_xen =3D false; + have_hvf =3D false; + have_kvm =3D false; + resp =3D qtest_qmp(qts, "{'execute': 'query-accelerators'}"); + g_assert(qdict_haskey(resp, "return")); + ret =3D qdict_get_qdict(resp, "return"); + present =3D qdict_get_qlist(ret, "present"); + g_assert_nonnull(present); + for (e =3D qlist_first(present); e; e =3D qlist_next(e)) { + QString *qs =3D qobject_to(QString, qlist_entry_obj(e)); + const char *name; + + g_assert_nonnull(qs); + name =3D qstring_get_str(qs); + if (!strcmp(name, "xen")) { + have_xen =3D true; + } else if (!strcmp(name, "hvf")) { + have_hvf =3D true; + } else if (!strcmp(name, "kvm")) { + have_kvm =3D true; + } + } + qobject_unref(resp); +} diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build index 33f58b0e95c..8c53bb2e30e 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build @@ -23,6 +23,7 @@ qtests_generic =3D [ 'cdrom-test', 'device-introspect-test', 'machine-none-test', + 'machine-list-test', 'qmp-test', 'qmp-cmd-test', 'qom-test', --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406700; cv=none; d=zohomail.com; s=zohoarc; b=GnOPng7UdMADl8HX3NiQBD120Jcie8908vR+qDh76CwcJzcrjBH2+2L4CMjb3nncD7z7FcpM2rZx8HbtziCLPFBD+Q9r9Ed8EIjwPsTpvLqfe72q5gQ94yYt8cdxN1pSvw1jqT4GIWOQbp8FcZjOJQ5NkdRT/SOvb8HINmieta8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406700; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=gvdLUze2sQ9rH6tf9YWuWP18ipAcGMhXKG5e40lFeJk=; b=dgVm3Fjn+lEnuBZJu0mrddgL2Wr+gAYcuBgFUGWU4nOm1p+afRERna+3sm0bWBrh4HunNPjNMhUfpVIl1VmEz2A1ncEP1JqKPSH2qvN2/1hl6jSE7VlY0O8t0Sg3MEgEVhunDlvBCjV6pLiDmETUDFDmrxbW/S8arOnQGDBVuSw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406700861962.5657353444616; Sat, 26 Sep 2026 00:11:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMPt-0002H0-8X; Sat, 26 Sep 2026 03:01:49 -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 1xAMPq-0002Fo-6U for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:01:46 -0400 Received: from mail-dy2-x0e.google.com ([2607:f8b0:4864:36::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMPo-0000Rt-9H for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:01:45 -0400 Received: by mail-dy2-x0e.google.com with SMTP id 5a478bee46e88-3429bca3880so925250eec.3 for ; Sat, 26 Sep 2026 00:01:42 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.01.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:01:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406102; x=1791010902; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=gvdLUze2sQ9rH6tf9YWuWP18ipAcGMhXKG5e40lFeJk=; b=Y5z0WrAgGi6ZZmqa6aFZZyvy29g+3VHviZL1XoP/Z976UfCcD9JrlmeW7pVCQxwzgK J17xhQoRs0R1lT9DXTmNEp1gZlgkUuDYhIAcv8PiF/MIobBO3deD4mfwg4vB4nrVKN8O bSd6fgpE9ehVIevN9QYeUSEnrcZKltFIGJUH2pxjRuzz25iP2sZL3+SnoKB7QF90uGTT Z4ufpdbxZxrVxfWcCrt1Xt+9z9Z0+lBfkwXsLtN1XXulLXDQCYkT9XluBXUKypva0pfp E+VU87Z0P8vr6jpeh5rP4sLT6Ty4tFI7EG4N1DF/Q67ZvTPHdq5BcbdNfrAfcS9wpwNS yUfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406102; x=1791010902; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=gvdLUze2sQ9rH6tf9YWuWP18ipAcGMhXKG5e40lFeJk=; b=BxwiLIAWY9tyKgaewRzrKWocV6+lrQ2+ufOOs0HJOFFykc2asPc655lp8jMikFkUir s6+PXDAn6BLSEm+qL3fcwGmhIjYmeAJpy9mfl1W8ApMnIkwspTNeeRDtPzRfidZOAOua JgT2Y5LbQL4GDM4W8B/0ws18Y1R0VdTBPwP+tqT3at4KGZBYqyczqK1qIlo3Cdtgdca7 KyS6jBgwlKEViQyZbroP1PkipxXTrqkIhebyEK4pv8JCU7fEhmnse5CHY63I9kAIgHhB x9XOC0rR6AphJPHOEqlEOhvlxHIoEAYgh+ZpyshoE8h4VsTvJ91FscccxDRystdsg0VC mfRw== X-Gm-Message-State: AFuF++lmy1on3ahsqjfg0soEKQLyQlupCUXLe0Pzq9ggvxQQ3j/esvGm FZ7XY25vOb2jjoMPMvaGCGfcVlMjpDTZERvVW6hSVXwWh+NzMo+4oBtve6rZA0Kl X-Gm-Gg: AYBFou1LdlTlycB/Z68GcQ0MtlDpkv5cM4le5BbfnfAePI5MTXTNoppEDGNv2cm2jnj zZ2KTt9j937lNKZSZYrdX/ZVJLf+i8xWKFsyDfCq4/3oJMI+5s3LpVSuc5bKehFBNztVaHCOF3N 0ebMjtgK7y2vwmrmv+D4NrRKnfkZoNaJQP2cK7ZBUpT7I1CwTGkIQ2cFYjScAN0vUrMfXV9Xtns mkL58uodBZ7BOvMXeeDNbBzc/wpwxjaqypwQYOfcaAlmTck9adcj9f6YxeQIsoDW9wnfYrOr127 LbL9Kc4wGZ1toT7jmBmqN65QJphebJUcAzfz5KR94fh3H6M04Qo7vPVA1Ff+ZrHBfnIgGLuJowI RL7U6NUtrka60ve6c61KfnfXcO6psD+qMGipDFCi/4+EqPLZ6WTdAK15P4pGEGSnk76cwCaIzUm MBcemkrb0IoiU/wmyNVw8ElUiIEbYvabOEMIGdB1X8ek/c+NTRGjKMH6BgAzDLSEoA+SZZ9w1nz h7r8bJU+IVVFdFz4nwqK8ypSaHyErI= X-Received: by 2002:a05:7301:1506:b0:33b:e529:4446 with SMTP id 5a478bee46e88-3426febb75bmr2199672eec.5.1790406101084; Sat, 26 Sep 2026 00:01:41 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 09/55] kconfig: rename REGISTER to HW_REGISTER Date: Sat, 26 Sep 2026 15:00:08 +0800 Message-ID: <20260926070057.1234-10-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::e; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0e.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406702302158500 Content-Type: text/plain; charset="utf-8" Rename config REGISTER to HW_REGISTER. register is a C keyword, and a later TargetKconfig commit will use it as a struct member. Signed-off-by: Yonggang Luo --- hw/Kconfig | 2 +- hw/core/Kconfig | 2 +- hw/core/meson.build | 2 +- hw/dma/Kconfig | 4 ++-- hw/i2c/Kconfig | 2 +- hw/usb/Kconfig | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/hw/Kconfig b/hw/Kconfig index c92ca2b13a3..94f963f2944 100644 --- a/hw/Kconfig +++ b/hw/Kconfig @@ -85,7 +85,7 @@ config XILINX_AXI =20 config XLNX_ZYNQMP bool - select REGISTER + select HW_REGISTER select CAN_BUS select PTIMER select XLNX_BBRAM diff --git a/hw/core/Kconfig b/hw/core/Kconfig index d1bdf765ee8..839e249b9d0 100644 --- a/hw/core/Kconfig +++ b/hw/core/Kconfig @@ -29,7 +29,7 @@ config PLATFORM_BUS bool depends on DEVICE_TREE =20 -config REGISTER +config HW_REGISTER bool =20 config SPLIT_IRQ diff --git a/hw/core/meson.build b/hw/core/meson.build index 8fe776d2c86..1c645d7041d 100644 --- a/hw/core/meson.build +++ b/hw/core/meson.build @@ -21,7 +21,7 @@ system_ss.add(when: 'CONFIG_GUEST_LOADER', if_true: files= ('guest-loader.c')) system_ss.add(when: 'CONFIG_OR_IRQ', if_true: files('or-irq.c')) system_ss.add(when: 'CONFIG_PLATFORM_BUS', if_true: files('platform-bus.c'= )) system_ss.add(when: 'CONFIG_PTIMER', if_true: files('ptimer.c')) -system_ss.add(when: 'CONFIG_REGISTER', if_true: files('register.c')) +system_ss.add(when: 'CONFIG_HW_REGISTER', if_true: files('register.c')) system_ss.add(when: 'CONFIG_SPLIT_IRQ', if_true: files('split-irq.c')) system_ss.add(when: 'CONFIG_XILINX_AXI', if_true: files('stream.c')) system_ss.add(when: 'CONFIG_PLATFORM_BUS', if_true: files('sysbus-fdt.c')) diff --git a/hw/dma/Kconfig b/hw/dma/Kconfig index 0a23e7d7b87..8f221b20634 100644 --- a/hw/dma/Kconfig +++ b/hw/dma/Kconfig @@ -16,7 +16,7 @@ config I8257 =20 config ZYNQ_DEVCFG bool - select REGISTER + select HW_REGISTER =20 config XLNX_ZDMA bool @@ -29,7 +29,7 @@ config SIFIVE_PDMA =20 config XLNX_CSU_DMA bool - select REGISTER + select HW_REGISTER =20 config K230_GSDMA bool \ No newline at end of file diff --git a/hw/i2c/Kconfig b/hw/i2c/Kconfig index 0766130b596..3482f475cf9 100644 --- a/hw/i2c/Kconfig +++ b/hw/i2c/Kconfig @@ -20,7 +20,7 @@ config ARM_SBCON_I2C =20 config DESIGNWARE_I2C bool - select REGISTER + select HW_REGISTER select I2C =20 config ACPI_SMBUS diff --git a/hw/usb/Kconfig b/hw/usb/Kconfig index e8c00f813a6..43771291a06 100644 --- a/hw/usb/Kconfig +++ b/hw/usb/Kconfig @@ -137,7 +137,7 @@ config IMX_USBPHY config USB_DWC3 bool select USB_XHCI_SYSBUS - select REGISTER + select HW_REGISTER =20 config XLNX_USB_SUBSYS bool --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406208; cv=none; d=zohomail.com; s=zohoarc; b=Lu5p0i0UT9fAAhWcAT+XPHGsHxdQv+OTRh/v6868tffKPNqF1lQ98GdXk++byWqCvnyGqd03KTJd74tUqEJrTFREB0XlwLTWH7wUJS4OxQ/myd1sGCPwhLeL2nakHQmyBfC5JFbPuCtTXBgiYBQpZBu2Aanb/l+DI77bHESnVNM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406208; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=N4+ve3swbK5ctjr/uSx7Tqtz8Hqkt+vfSyLQiiwbXAQ=; b=eeSGmysuWf85hxPIP1IykER4UxpoV5KMF5u1HvOkmpRYgc2VsVywUcCpYSQ0yVu8f5y15CHyJk/W/KKdysPy/jqaJF/bQMjRurdYyt3Jqg7Mo/AJRgR0+Y6YlCZTK8bMng1qi3q1z75Nz5pHHSXlW0EV0vmLHOZrKxMzy1AO5w8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406208127182.6307072439613; Sat, 26 Sep 2026 00:03:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMPv-0002HX-0G; Sat, 26 Sep 2026 03:01:51 -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 1xAMPt-0002H6-7M for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:01:49 -0400 Received: from mail-dy2-x10.google.com ([2607:f8b0:4864:36::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMPq-0000SA-Dy for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:01:48 -0400 Received: by mail-dy2-x10.google.com with SMTP id 5a478bee46e88-328664c2da6so1083834eec.1 for ; Sat, 26 Sep 2026 00:01:46 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.01.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:01:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406105; x=1791010905; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=N4+ve3swbK5ctjr/uSx7Tqtz8Hqkt+vfSyLQiiwbXAQ=; b=h2yZRlbIGH1vaQKhdJsFA77NRUpl43KhPPFbQG97QJqo++FxtXoK30mWZhEG7Xu7AX hSDCKxdUwq1rppjW6RhDYBYD/oCqpCP3qynNL+pPtZ7yZg9R7lO96s/OWCZ0F5THBDad St3RAgj8mkGHUopPr1eYdvnDt/cxYiqUh/yX784dL5kkEybzOF3G1hwFsKCd7BL9ne1M UCYYVz6H6JIob8PUY9PyI/KuGVGcoJWraFZ78IgPPlpxscrokSZqL6+p9u8Esz4Jg3WV 16R2lSsk08l5wnNPB+3YIQy2/o6YnCiGVUdlHpn1rRBLbeSDkBM9qCSfElsbz1FDIvzd 4qBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406105; x=1791010905; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=N4+ve3swbK5ctjr/uSx7Tqtz8Hqkt+vfSyLQiiwbXAQ=; b=HzBfyge1cfKSBh39tgupyjuYd5LziKn7l2RAXjeF7t4KpXomnfCtHKeyPxhafFyx/C mqqWBz+w5WURqQayUMiS9M4dKB4NpzCd1tB7h8As+GoZDL9oGJodqgsCnwvCStGuuo11 h4A/AWzrEFpFC+ZH2/R7RnuBGPg+2+s4M7fUFR5CVko+dj6C/Ilu5eStWqO5CRrW79BZ YiGKHpY0bPPatDVNmK2KFCXj8VztUFKaU7vni9ek51qIMBwcHbcL0ocoseMKjCEzZUAZ 5UgE1cQ4JXaOMe/LaDOMMcNOlMpNKsRX/PiDVGjWF16EV9BYccOaAaCTG5MYQbQHISeJ bIAg== X-Gm-Message-State: AFuF++kJ3BDMXidJZLNyUfyrQYrjtwhukL0XH8kVRV3MHc47j13hqvZ1 X1N+sl9tremCs13TKdrXXqJX+KQGz0BxocNp6fmEui3uEtmvlFDi5g8aMalmnJu9 X-Gm-Gg: AYBFou2DNxTBbGbxoPW5WcvWp07qK6PARJhp++3NLXf4iAVP5O81CkUHkccLsRWh+uZ YUjS5FQQVY9mwqBhqGO4FVlSruiVhqHnH9xMXLpQt6Ac6a/+t1xEpAjKIjAQ88aBKNqKJ4QVOs8 SeYQ4L2+mVTPq+pcyaQd1q3TZwmVK2GCU9xQ4hvz9WJRz7HaTokBH0KTQtba7PCswvC6gs8Xb7S 59jhwlFwuoPsZzTtvbHZT/+nILHC7c8Ti65gO0mV7kngLHruHXlmBVNutXd0wTixcgJJBzGimJ6 C06Ge/0PXRzUEWRk2OSBB8NVYMX7WB6t77bXPZ7+4XY9dgM/JIVlJrZpCV/AeTsvkp4sMM0TxcO udowfj9X2YLd6423ulErQFFLBxxPe+1yfhRJmPG9WICWDV4fSotMBrP/m5HrV+K18HbiakyyyF8 1mOPX4eWrBxd4injDSvbesW1tfAUfCTlJJYJ7JEJWRKhMEVwG+jufiaEpBPNsL2uB6LXGvG3FSt kpN5d1nkyzoZWmhnNZVBZJnfYo+lBs= X-Received: by 2002:a05:7301:4301:b0:343:311a:372d with SMTP id 5a478bee46e88-343311a386amr799765eec.28.1790406104888; Sat, 26 Sep 2026 00:01:44 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 10/55] target-info: add TargetKconfig Date: Sat, 26 Sep 2026 15:00:09 +0800 Message-ID: <20260926070057.1234-11-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::10; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x10.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406208622158500 Content-Type: text/plain; charset="utf-8" Add a packed TargetKconfig of device and accel CONFIG_* bits, generated from the Kconfig tree, and attach it to TargetInfo. target_kconfig() returns the current bits, and target_has_kconfig_() tests them. Initialize target_info_stub.kconfig from CONFIG_DEVICES. Signed-off-by: Yonggang Luo --- include/qemu/target-info-def.h | 2 + include/qemu/target-kconfig-has.h | 7 ++ include/qemu/target-kconfig.h | 34 ++++++ meson.build | 14 +++ scripts/gen-target-kconfig.py | 162 +++++++++++++++++++++++++++ target-info-def.c | 6 + target-kconfig.c | 20 ++++ tests/unit/meson.build | 1 + tests/unit/test-target-kconfig-has.c | 22 ++++ 9 files changed, 268 insertions(+) create mode 100644 include/qemu/target-kconfig-has.h create mode 100644 include/qemu/target-kconfig.h create mode 100644 scripts/gen-target-kconfig.py create mode 100644 target-kconfig.c create mode 100644 tests/unit/test-target-kconfig-has.c diff --git a/include/qemu/target-info-def.h b/include/qemu/target-info-def.h index 080e30a5b0e..ae6374583a7 100644 --- a/include/qemu/target-info-def.h +++ b/include/qemu/target-info-def.h @@ -13,6 +13,7 @@ #include "qapi/qapi-types-machine.h" #include "qemu/queue.h" #include "qemu/target-info.h" +#include "qemu/target-kconfig.h" =20 struct TargetInfo { /* runtime equivalent of TARGET_NAME definition */ @@ -32,6 +33,7 @@ struct TargetInfo { unsigned page_bits_init; /* runtime equivalent of TARGET_PAGE_BITS_VARY definition */ bool page_bits_vary; + TargetKconfig kconfig; }; =20 typedef struct TargetInfoNode TargetInfoNode; diff --git a/include/qemu/target-kconfig-has.h b/include/qemu/target-kconfi= g-has.h new file mode 100644 index 00000000000..6616f75845a --- /dev/null +++ b/include/qemu/target-kconfig-has.h @@ -0,0 +1,7 @@ +/* + * QEMU target_has_kconfig_* helpers + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "target-kconfig-has-gen.h" diff --git a/include/qemu/target-kconfig.h b/include/qemu/target-kconfig.h new file mode 100644 index 00000000000..21b2ba576ec --- /dev/null +++ b/include/qemu/target-kconfig.h @@ -0,0 +1,34 @@ +/* + * QEMU target kconfig API + * + * Copyright (c) Yonggang Luo + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef QEMU_TARGET_KCONFIG_H +#define QEMU_TARGET_KCONFIG_H + +#include "qemu/compiler.h" + +/** + * struct TargetKconfig: + * + * Compile-time device and accel CONFIG_* bits. Not Kconfig.host + * or target/Kconfig. Target identity is TargetInfo, not these + * bits. Not kvm_enabled() etc. Fields and + * target_has_kconfig_() are generated by + * scripts/gen-target-kconfig.py. + */ +typedef struct TargetKconfig { +#include "target-kconfig-fields.h" +} QEMU_PACKED TargetKconfig; + +/** + * target_kconfig: + * + * Returns: The current TargetKconfig (target_info()->kconfig). + */ +const TargetKconfig *target_kconfig(void); + +#endif diff --git a/meson.build b/meson.build index 93237429713..9485f4e97be 100644 --- a/meson.build +++ b/meson.build @@ -3444,6 +3444,19 @@ genh +=3D custom_target('config-poison.h', capture: true, command: [find_program('scripts/make-config-poison.s= h'), target_configs_h]) +genh +=3D custom_target('target-kconfig', + output: ['target-kconfig-fields.h', + 'target-kconfig-init.h', + 'target-kconfig-has-gen.h', + 'target-kconfig-has.c.inc'], + depfile: 'target-kconfig.d', + command: [python, files('scripts/gen-target-kconfig.= py'), + '--kconfig', meson.current_source_dir() / = 'Kconfig', + '--depfile', '@DEPFILE@', + '--fields', '@OUTPUT0@', + '--init', '@OUTPUT1@', + '--has', '@OUTPUT2@', + '--has-c', '@OUTPUT3@']) =20 if fdt_required.length() > 0 error('fdt disabled but required by targets ' + ', '.join(fdt_required)) @@ -3778,6 +3791,7 @@ endif =20 qom_ss.add(files( 'target-info.c', + 'target-kconfig.c', )) qom_ss =3D qom_ss.apply({}) libqom =3D static_library('qom', qom_ss.sources() + genh, diff --git a/scripts/gen-target-kconfig.py b/scripts/gen-target-kconfig.py new file mode 100644 index 00000000000..afeffc75ca0 --- /dev/null +++ b/scripts/gen-target-kconfig.py @@ -0,0 +1,162 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: GPL-2.0-or-later +"""Generate TargetKconfig CONFIG_* field, initializer, and has headers. + +The field list is every `config FOO` from the QEMU Kconfig tree, +parsed with scripts/minikconf.py (including accel/Kconfig: KVM, +XEN, HVF, TCG, ...). Host proxies in Kconfig.host and the +target/Kconfig tree (arch tokens and TARGET_BIG_ENDIAN) are +omitted. Target identity is TargetInfo, not TargetKconfig. + +Each field also gets target_has_kconfig_(const TargetInfo *). +""" + +import argparse +import os +import sys + +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) +from minikconf import KconfigData, KconfigParser + + +def field_name(config: str) -> str: + return config[len("CONFIG_"):].lower() + + +def collect_from_kconfig(root: str) -> tuple[set[str], list[str]]: + data =3D KconfigData() + with open(root, "rt", encoding=3D"utf-8") as fp: + KconfigParser.parse(fp, data) + names =3D {"CONFIG_" + name for name in data.defined_vars} + return names, list(data.previously_included) + + +def collect_kconfig_names(path: str) -> set[str]: + data =3D KconfigData() + with open(path, "rt", encoding=3D"utf-8") as fp: + KconfigParser.parse(fp, data) + return {"CONFIG_" + name for name in data.defined_vars} + + +def collect_host_kconfig_names(kconfig_root: str) -> set[str]: + host =3D os.path.join(os.path.dirname(os.path.abspath(kconfig_root)), + "Kconfig.host") + return collect_kconfig_names(host) + + +def collect_target_kconfig_names(kconfig_root: str) -> set[str]: + target =3D os.path.join(os.path.dirname(os.path.abspath(kconfig_root)), + "target", "Kconfig") + return collect_kconfig_names(target) + + +def write_fields(path: str, configs: list[str]) -> None: + lines =3D [ + "/* Generated by scripts/gen-target-kconfig.py. Do not edit. */", + "", + ] + for name in configs: + lines.append(f" uint32_t {field_name(name)} : 1;") + lines.append("") + with open(path, "w", encoding=3D"utf-8", newline=3D"\n") as fh: + fh.write("\n".join(lines)) + + +def write_init(path: str, configs: list[str]) -> None: + lines =3D [ + "/* Generated by scripts/gen-target-kconfig.py. Do not edit. */", + "", + ] + for name in configs: + field =3D field_name(name) + lines.append(f"#if defined({name})") + lines.append(f" .{field} =3D true,") + lines.append("#endif") + lines.append("") + with open(path, "w", encoding=3D"utf-8", newline=3D"\n") as fh: + fh.write("\n".join(lines)) + + +def has_fn(config: str) -> str: + return "target_has_kconfig_" + field_name(config) + + +def write_has_h(path: str, configs: list[str]) -> None: + lines =3D [ + "/* Generated by scripts/gen-target-kconfig.py. Do not edit. */", + "", + "#ifndef TARGET_KCONFIG_HAS_GEN_H", + "#define TARGET_KCONFIG_HAS_GEN_H", + "", + "#include ", + "", + "typedef struct TargetInfo TargetInfo;", + "", + ] + for name in configs: + lines.append(f"bool {has_fn(name)}(const TargetInfo *ti);") + lines.append("") + lines.append("#endif") + lines.append("") + with open(path, "w", encoding=3D"utf-8", newline=3D"\n") as fh: + fh.write("\n".join(lines)) + + +def write_has_c(path: str, configs: list[str]) -> None: + lines =3D [ + "/* Generated by scripts/gen-target-kconfig.py. Do not edit. */", + "", + ] + for name in configs: + fn =3D has_fn(name) + field =3D field_name(name) + lines.append(f"bool {fn}(const TargetInfo *ti)") + lines.append("{") + lines.append(f" return ti->kconfig.{field};") + lines.append("}") + lines.append("") + with open(path, "w", encoding=3D"utf-8", newline=3D"\n") as fh: + fh.write("\n".join(lines)) + + +def write_depfile(path: str, outputs: list[str], deps: list[str]) -> None: + lines =3D [" ".join(outputs) + ":" ] + for dep in deps: + lines.append(f" {dep} \\") + if len(lines) > 1: + lines[-1] =3D lines[-1][:-2] + lines.append("") + with open(path, "w", encoding=3D"utf-8", newline=3D"\n") as fh: + fh.write("\n".join(lines)) + + +def main(argv: list[str]) -> int: + parser =3D argparse.ArgumentParser( + description=3D"Generate TargetKconfig CONFIG_* include headers" + ) + parser.add_argument("--fields", required=3DTrue, help=3D"output fields= header") + parser.add_argument("--init", required=3DTrue, help=3D"output initiali= zer header") + parser.add_argument("--has", required=3DTrue, help=3D"output has-funct= ion header") + parser.add_argument("--has-c", required=3DTrue, help=3D"output has-fun= ction bodies") + parser.add_argument("--kconfig", required=3DTrue, help=3D"root Kconfig= ") + parser.add_argument("--depfile", help=3D"ninja depfile of walked Kconf= ig files") + args =3D parser.parse_args(argv) + + names, kconfig_files =3D collect_from_kconfig(args.kconfig) + names -=3D collect_host_kconfig_names(args.kconfig) + names -=3D collect_target_kconfig_names(args.kconfig) + configs =3D sorted(names) + + write_fields(args.fields, configs) + write_init(args.init, configs) + write_has_h(args.has, configs) + write_has_c(args.has_c, configs) + if args.depfile: + write_depfile(args.depfile, + [args.fields, args.init, args.has, args.has_c], + kconfig_files) + return 0 + + +if __name__ =3D=3D "__main__": + sys.exit(main(sys.argv[1:])) diff --git a/target-info-def.c b/target-info-def.c index 3041d64ccd2..c02d98e6875 100644 --- a/target-info-def.c +++ b/target-info-def.c @@ -7,6 +7,9 @@ */ =20 #include "qemu/osdep.h" +#ifdef CONFIG_DEVICES +#include CONFIG_DEVICES +#endif #include "qemu/target-info.h" #include "qemu/target-info-def.h" #include "hw/core/boards.h" @@ -38,6 +41,9 @@ static const TargetInfo target_info_stub =3D { .page_bits_vary =3D false, .page_bits_init =3D TARGET_PAGE_BITS, #endif + .kconfig =3D { +#include "target-kconfig-init.h" + }, }; =20 target_info_init(target_info_stub) diff --git a/target-kconfig.c b/target-kconfig.c new file mode 100644 index 00000000000..078c0d8e7f3 --- /dev/null +++ b/target-kconfig.c @@ -0,0 +1,20 @@ +/* + * QEMU target kconfig helpers + * + * Copyright (c) Yonggang Luo + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qemu/target-info.h" +#include "qemu/target-info-def.h" +#include "qemu/target-kconfig.h" +#include "qemu/target-kconfig-has.h" + +const TargetKconfig *target_kconfig(void) +{ + return &target_info()->kconfig; +} + +#include "target-kconfig-has.c.inc" diff --git a/tests/unit/meson.build b/tests/unit/meson.build index dc980a35955..c806dbc4ffa 100644 --- a/tests/unit/meson.build +++ b/tests/unit/meson.build @@ -47,6 +47,7 @@ tests =3D { objects: target_info_def_objects.values(), compile_args: ['-DTARGET_INFO_DEF_COUNT=3D@0@'.format( target_info_def_objects.values().length())])], + 'test-target-kconfig-has': [qom], 'test-qemu-opts': [], 'test-keyval': [testqapi], 'test-logging': [], diff --git a/tests/unit/test-target-kconfig-has.c b/tests/unit/test-target-= kconfig-has.c new file mode 100644 index 00000000000..289ed89b854 --- /dev/null +++ b/tests/unit/test-target-kconfig-has.c @@ -0,0 +1,22 @@ +/* + * target-kconfig-has.h include path test + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qemu/target-kconfig-has.h" + +static void test_include(void) +{ + bool (*fn)(const TargetInfo *ti) =3D target_has_kconfig_tcg; + + g_assert_nonnull(fn); +} + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + g_test_add_func("/target-kconfig-has/include", test_include); + return g_test_run(); +} --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406157; cv=none; d=zohomail.com; s=zohoarc; b=jiD3i6yKDcSV/WCNs8r8BSjupu3pvLWpPhJKWstByHHvHNwi6xoPMeVhfNJdqpPQhz1PTnJklawuuCXS6u3oEkZSWrgEDuYkTZDc1RuZF4eoe6DazaMJreHK17jUvPqEZ/LHZ8hl1yvFidyvyE9eEVrNpJCFsEjlaEdl/PBCkmc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406157; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=/Pnb4009fcr63720pQihUF6v8EokAjQS6rcfppqNlzc=; b=QAcruRS2P6SIzrlVOusbCxMVvUV5kfGGFrGFORnKkQZTMajMpWzSG9DVdGTqlDfLNGruv9QqdbIxN8OFCyYX17F1yMHa/705kuBoETGDOby+Xr0HUDnt63879dUICpyDMnM3ykAWOk2+78wmHoBzqynBU+bPDZuAOcBaFs5HfLY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406157875123.70409129103575; Sat, 26 Sep 2026 00:02:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMQ3-0002c5-LM; Sat, 26 Sep 2026 03:02:00 -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 1xAMQ1-0002Vi-C1 for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:01:57 -0400 Received: from mail-dy2-x0f.google.com ([2607:f8b0:4864:36::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMPy-0000Sy-Os for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:01:56 -0400 Received: by mail-dy2-x0f.google.com with SMTP id 5a478bee46e88-33e46a15703so1348013eec.0 for ; Sat, 26 Sep 2026 00:01:54 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.01.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:01:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406113; x=1791010913; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=/Pnb4009fcr63720pQihUF6v8EokAjQS6rcfppqNlzc=; b=ZNntrcBwj1hwW3xIaSR8PHR1cw4NKI0O0d/JtoQHdY7lzO7m0N5VC3bINqr544To5a LASeGKhXDiFfHpm3nANHyxAqxgReMGchxWjWxYE0/9HT3Std0W91tX+Fex2eaxQenPcp fRGDqepLy80HRfKmHCYJ6MXwd6iVloCIb4eC/8/wy7DY3ppjidzCAhTcH8NlaMWcv6L/ xucv8GL1TQizmIPWDMWPxFpCpFG53sCu+r392YIbNtU2Jms54BHS6F440F0zH5wlT7Cv izAol2F9fZWua0hJgRtNvsLv4Bytc5D4/AS114HTXbt14LcchvyCoAYgE0NJPSxHhpeO VTaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406113; x=1791010913; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=/Pnb4009fcr63720pQihUF6v8EokAjQS6rcfppqNlzc=; b=OFBqsJPWiDDffhfAd2q4nFBmbN9TRPoYDTJ6aJPnu9lyoBjXdm4g6RqLSU4sxfpotS HRn9vP/xZso0CC0ZuFLmzqD1DOpXx3keGhLt/LG1tKEzLi1lnvu5+V0DzBUf6ezrs8Xa UvMONgjMEFvXGLUu8FlAuECsYbUJcuWYf5gdmJCHKMFXL02pZhk4FvG1chh+ldWGr9xb HJa/BtcoPtDQLbMlgezCMOf2Uf/xiGa3tqZyg3xC/ixSqBGwMX3Z8qCX5wMqC08Vyk0N oMz8DvoQWxS92WJS/GKcutgBrIKmthIF8QL0HWTUrXkCacUhckIKlb+zOg5p2ZKPGOJL HBOQ== X-Gm-Message-State: AFuF++nKJJn43Ppug/W6Htgej6k7IuSIfCHC9doAw29PwfhgMk9UzIlC ALAGbM2Hu59de3PF7W75D1KSK/IKLa3XJQ7fQhXR93YRwqqndlyiq8nGXn99Fx8R X-Gm-Gg: AYBFou2929iAGYvaX5alSfWW7p5C9QsDDteAbFxkQk5U5C76LOr195VPm1+htU33Ddv cmPVcLgtARTD4RRUz+BJookOGg6q4k35+a+BIuarFXAjAS9DmWrR3tS1Mb1KzRrYPiKAY6NtGsE 9c+4cP0rsbnWk7UFQrV05QEuT2IiH2VHi8krTLdS0Fhc08s4TzwJptYB6uDh75sWatzpJGVIGOp aplkEBxHyN0D3R+DXIcrBG4ZLKTEPir5wMuT77NmLtD6QeRqpLawxM/SsrnUWTqAyLMHuTxQvgh 99CUYVbx1yE5+D+pFeMP1f8RbvOPs/lTCiWNLwTCN8gCkOlH45//jYhFQ8p/jY7CanYfOLYSZ69 JSfCDvaglN9AkGsKut/0rYxO5evcUQdv/lwDDb28dxjJz6dMGL6ug0+Iv5rKSAn6sbAdC1NZDq0 Q9ioNf3Mf880QN3neK4/DZ2ZsnfSz8arowSDfb6y2k0eLXSXput52Oqtz1ab7X7/6IYB+x9SQ/p C4r7iXvtcBGDTtyRsZD03YLiK6gCOw= X-Received: by 2002:a05:7301:712:b0:33c:3134:f45 with SMTP id 5a478bee46e88-3426fccb01cmr1967524eec.5.1790406108596; Sat, 26 Sep 2026 00:01:48 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 11/55] target-info: add target_is_* helpers for each architecture Date: Sat, 26 Sep 2026 15:00:10 +0800 Message-ID: <20260926070057.1234-12-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::f; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0f.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1790406160312158500 Content-Type: text/plain; charset="utf-8" This is added for latter use with is_available. Signed-off-by: Yonggang Luo --- include/qemu/target-info.h | 91 +++++++++++++++++++++++++++++++++++++- target-info.c | 83 +++++++++++++++++++++++++++++----- 2 files changed, 161 insertions(+), 13 deletions(-) diff --git a/include/qemu/target-info.h b/include/qemu/target-info.h index c48973f20be..89656da1ca4 100644 --- a/include/qemu/target-info.h +++ b/include/qemu/target-info.h @@ -53,6 +53,14 @@ const char *target_cpu_type(void); */ bool target_big_endian(void); =20 +/** + * target_is_base_arm: + * @ti: TargetInfo to inspect + * + * Returns whether @ti is ARM or Aarch64. + */ +bool target_is_base_arm(const TargetInfo *ti); + /** * target_base_arm: * @@ -60,6 +68,14 @@ bool target_big_endian(void); */ bool target_base_arm(void); =20 +/** + * target_is_arm: + * @ti: TargetInfo to inspect + * + * Returns whether @ti is ARM (32-bit, not Aarch64). + */ +bool target_is_arm(const TargetInfo *ti); + /** * target_arm: * @@ -67,6 +83,14 @@ bool target_base_arm(void); */ bool target_arm(void); =20 +/** + * target_is_aarch64: + * @ti: TargetInfo to inspect + * + * Returns whether @ti is Aarch64. + */ +bool target_is_aarch64(const TargetInfo *ti); + /** * target_aarch64: * @@ -74,6 +98,14 @@ bool target_arm(void); */ bool target_aarch64(void); =20 +/** + * target_is_base_ppc: + * @ti: TargetInfo to inspect + * + * Returns whether @ti is PowerPC 32-bit or 64-bit. + */ +bool target_is_base_ppc(const TargetInfo *ti); + /** * target_base_ppc: * @@ -81,6 +113,14 @@ bool target_aarch64(void); */ bool target_base_ppc(void); =20 +/** + * target_is_ppc: + * @ti: TargetInfo to inspect + * + * Returns whether @ti is PowerPC 32-bit. + */ +bool target_is_ppc(const TargetInfo *ti); + /** * target_ppc: * @@ -88,6 +128,14 @@ bool target_base_ppc(void); */ bool target_ppc(void); =20 +/** + * target_is_ppc64: + * @ti: TargetInfo to inspect + * + * Returns whether @ti is PowerPC 64-bit. + */ +bool target_is_ppc64(const TargetInfo *ti); + /** * target_ppc64: * @@ -95,6 +143,14 @@ bool target_ppc(void); */ bool target_ppc64(void); =20 +/** + * target_is_s390x: + * @ti: TargetInfo to inspect + * + * Returns whether @ti is S390x. + */ +bool target_is_s390x(const TargetInfo *ti); + /** * target_s390x: * @@ -102,17 +158,48 @@ bool target_ppc64(void); */ bool target_s390x(void); =20 +/** + * target_is_base_riscv: + * @ti: TargetInfo to inspect + * + * Returns whether @ti is RISC-V 32-bit or 64-bit. + */ +bool target_is_base_riscv(const TargetInfo *ti); + +/** + * target_base_riscv: + * + * Returns whether the target architecture is RISC-V 32-bit or 64-bit. + */ +bool target_base_riscv(void); + +/** + * target_is_riscv32: + * @ti: TargetInfo to inspect + * + * Returns whether @ti is RISC-V 32-bit. + */ +bool target_is_riscv32(const TargetInfo *ti); + /** * target_riscv32: * - * Returns whether the target architecture is riscv32 + * Returns whether the target architecture is RISC-V 32-bit. */ bool target_riscv32(void); =20 +/** + * target_is_riscv64: + * @ti: TargetInfo to inspect + * + * Returns whether @ti is RISC-V 64-bit. + */ +bool target_is_riscv64(const TargetInfo *ti); + /** * target_riscv64: * - * Returns whether the target architecture is riscv64 + * Returns whether the target architecture is RISC-V 64-bit. */ bool target_riscv64(void); =20 diff --git a/target-info.c b/target-info.c index 6e66f48e1ff..6d57cad5d33 100644 --- a/target-info.c +++ b/target-info.c @@ -96,9 +96,9 @@ bool target_big_endian(void) return target_endian_mode() =3D=3D ENDIAN_MODE_BIG; } =20 -bool target_base_arm(void) +bool target_is_base_arm(const TargetInfo *ti) { - switch (target_arch()) { + switch (ti->target_arch) { case SYS_EMU_TARGET_ARM: case SYS_EMU_TARGET_AARCH64: return true; @@ -107,19 +107,34 @@ bool target_base_arm(void) } } =20 +bool target_base_arm(void) +{ + return target_is_base_arm(target_info()); +} + +bool target_is_arm(const TargetInfo *ti) +{ + return ti->target_arch =3D=3D SYS_EMU_TARGET_ARM; +} + bool target_arm(void) { - return target_arch() =3D=3D SYS_EMU_TARGET_ARM; + return target_is_arm(target_info()); +} + +bool target_is_aarch64(const TargetInfo *ti) +{ + return ti->target_arch =3D=3D SYS_EMU_TARGET_AARCH64; } =20 bool target_aarch64(void) { - return target_arch() =3D=3D SYS_EMU_TARGET_AARCH64; + return target_is_aarch64(target_info()); } =20 -bool target_base_ppc(void) +bool target_is_base_ppc(const TargetInfo *ti) { - switch (target_arch()) { + switch (ti->target_arch) { case SYS_EMU_TARGET_PPC: case SYS_EMU_TARGET_PPC64: return true; @@ -128,27 +143,73 @@ bool target_base_ppc(void) } } =20 +bool target_base_ppc(void) +{ + return target_is_base_ppc(target_info()); +} + +bool target_is_ppc(const TargetInfo *ti) +{ + return ti->target_arch =3D=3D SYS_EMU_TARGET_PPC; +} + bool target_ppc(void) { - return target_arch() =3D=3D SYS_EMU_TARGET_PPC; + return target_is_ppc(target_info()); +} + +bool target_is_ppc64(const TargetInfo *ti) +{ + return ti->target_arch =3D=3D SYS_EMU_TARGET_PPC64; } =20 bool target_ppc64(void) { - return target_arch() =3D=3D SYS_EMU_TARGET_PPC64; + return target_is_ppc64(target_info()); +} + +bool target_is_s390x(const TargetInfo *ti) +{ + return ti->target_arch =3D=3D SYS_EMU_TARGET_S390X; } =20 bool target_s390x(void) { - return target_arch() =3D=3D SYS_EMU_TARGET_S390X; + return target_is_s390x(target_info()); +} + +bool target_is_base_riscv(const TargetInfo *ti) +{ + switch (ti->target_arch) { + case SYS_EMU_TARGET_RISCV32: + case SYS_EMU_TARGET_RISCV64: + return true; + default: + return false; + } +} + +bool target_base_riscv(void) +{ + return target_is_base_riscv(target_info()); +} + +bool target_is_riscv32(const TargetInfo *ti) +{ + return ti->target_arch =3D=3D SYS_EMU_TARGET_RISCV32; } =20 bool target_riscv32(void) { - return target_arch() =3D=3D SYS_EMU_TARGET_RISCV32; + return target_is_riscv32(target_info()); +} + +bool target_is_riscv64(const TargetInfo *ti) +{ + return ti->target_arch =3D=3D SYS_EMU_TARGET_RISCV64; } =20 bool target_riscv64(void) { - return target_arch() =3D=3D SYS_EMU_TARGET_RISCV64; + return target_is_riscv64(target_info()); } --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406193; cv=none; d=zohomail.com; s=zohoarc; b=h2KGtIOHnoaK3QgpUfYAMrMvp63qT/MYGOKJR3L0pZHXZBgiBGhdNw8T4vrfxUXda3B4l9RrJ0Q9I9LUV/7RUDk7m7NoUBI6ohJI2rPrG80xNLRNKFVsalNUaaPKfbA0gHJJIBUSIE/o5F7imxEd0LPadPBciytBoCUFFd0Kk7s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406193; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=JM/7bmm5w0DrybT6q8HGQqwVn9iraKsL9TCtK46LPGc=; b=lQd12TXVVxKdqltpdo+40OeZhJ0VEv1hGX6d8LQmZm3gku8J0/FmmLgB7fOHvUHX0sVr8w1nbMgLg+iqPw97MvC2oLYBM3v6VEbZNVC5RtlDWxpkw6C6vOvHmuy465eUZwYn78HhC33386QxXOF2kF9TxD9fepOA5veTkt4ySAM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406193204574.1536720606276; Sat, 26 Sep 2026 00:03:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMQ2-0002YY-EK; Sat, 26 Sep 2026 03:01:58 -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 1xAMPz-0002ND-G1 for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:01:55 -0400 Received: from mail-dy2-x10.google.com ([2607:f8b0:4864:36::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMPx-0000Sq-S9 for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:01:55 -0400 Received: by mail-dy2-x10.google.com with SMTP id 5a478bee46e88-33bb1a50f6fso848871eec.2 for ; Sat, 26 Sep 2026 00:01:53 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.01.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:01:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406112; x=1791010912; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=JM/7bmm5w0DrybT6q8HGQqwVn9iraKsL9TCtK46LPGc=; b=SGSYDK/P9ccNbfGTniWKsBhJoUzBvO0lGkrnZlxk7XV52PNDuZP4dTcJ7nHxnB1Svx AUyteEADuzj3TIA8/o7FxVak0RtAdwikW0lPMZQ58Cr1GSmFRYEYwMEX0mYFWx9SMSkj B89PxEHahViuSWbQVFJssNS+MgZd3v6jgSToifl62RkclhfT+dcbveMzAopTahab3EW+ 3qu0IKLiuuFzfIx12g8gKIV2Gu7l+29QTI7j+43jQnrRRQ6SHQ0RfxXhtHj0jMWiN5U/ a4EqZtPFGqlN06KWE3v31eRwLpImJ6upMGIKQr4SFl6WEh4tZ/Xdz9IT1dU/iaRmNPIp cYlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406112; x=1791010912; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=JM/7bmm5w0DrybT6q8HGQqwVn9iraKsL9TCtK46LPGc=; b=WP6YRhocCaLRlU+9W5KvN2JzAn1M4HEikw21Tt6A/M9HyZLVt2fDXBxI6Jb7lndOmJ tPNzrV+2OlYJtB/I0dXtXIPKiyRm/kVpEYWUSPTH5hYpGNNXZMTBWInjHxBz89jTj9ai rPJ/xTLv5f+IydB2JARIQaPHw7NOiBdhklYkqbyi8YNq7NYIJRuKZ47FsEiwsKUgwsRo E+B2F/azAlz6ylgKOnoTrN9zrbX13O+00/Gb5LVnDL8bRIMuEcMtvq74oATv0Ts9+AwK +mWZ05WLkZeevgNaA979VDCd3X06kni0/jGzY+LHuqVqBMBSDT+35iyLjF8od5o0T9KY NSrA== X-Gm-Message-State: AFuF++k6UZlqXKMuLDjygVb1osZY9IoRnVFynukB+y8dBmEDS/5fG5EN 2fu9b2KR0wRoVwLHCFVFAHjAqQ/jZZx7mJWEfseuvgZC0hC5r4LR88PrWno2au9w X-Gm-Gg: AYBFou3cz+Kcro4tELM6u6qEWbOQv7OeuyYtOZhJQCfu50owSGcjBVya86qZlMR3G7t uNjZnOI25EmBJZ9sLnS8DfYmjjDWaENdBl9aKhOXixHww5AO/qgHgxex9+Kb0NOa3xkMMPPuRbK 0a3oLiHkRBUpOWDU0jy9q7mgCOjkO3xr2cxKP829mYdWYSPNbBkMTbg9jtBMV28geAl6AU1auGE F/GrAfTl97toRp+61JMYiSU+U10beZC80j+aBdFo+2Ay1njFtJoTDv/Q3kQvp7vR8fDTa7CYIqJ mJBVcNozsr0C04XW6PuonRDagE7mtvdfyXs5a7922t6j+k8+KSbsc60DdnKONc4/GMxTcqPLF2n yPQWjGU4y1yj+Hc9iBwAdB9dhapmiQLsy/nxy9sJQgcB6TnNXbxiA/tfeXJ3ahEYjqxyMOa+zLY nGZv8G4BoaqXXMDlIV9Tyo6eTxYGDNMvKz1RyLu1429B75DG11rlIqw81paGoQZp0g0rqseOoLY VtuTqo7LXW48+mCnBzeiaSZh3P1EP8= X-Received: by 2002:a05:7301:4281:b0:33c:1521:89aa with SMTP id 5a478bee46e88-34271a8deb8mr2052589eec.24.1790406112321; Sat, 26 Sep 2026 00:01:52 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 12/55] target-info: add target_is_any() Date: Sat, 26 Sep 2026 15:00:11 +0800 Message-ID: <20260926070057.1234-13-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::10; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x10.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406194310158500 Content-Type: text/plain; charset="utf-8" target_is_any() returns true for every TargetInfo. A type that is not target-scoped can use it as TypeInfo.is_available. Signed-off-by: Yonggang Luo --- include/qemu/target-info.h | 9 +++++++++ target-info.c | 6 ++++++ 2 files changed, 15 insertions(+) diff --git a/include/qemu/target-info.h b/include/qemu/target-info.h index 89656da1ca4..3bbe1d9b607 100644 --- a/include/qemu/target-info.h +++ b/include/qemu/target-info.h @@ -53,6 +53,15 @@ const char *target_cpu_type(void); */ bool target_big_endian(void); =20 +/** + * target_is_any: + * @ti: TargetInfo to inspect + * + * Returns true for every TargetInfo. Usable as TypeInfo.is_available + * for types that are not target-scoped (TYPE_OBJECT). + */ +bool target_is_any(const TargetInfo *ti); + /** * target_is_base_arm: * @ti: TargetInfo to inspect diff --git a/target-info.c b/target-info.c index 6d57cad5d33..ad93a4b125e 100644 --- a/target-info.c +++ b/target-info.c @@ -96,6 +96,12 @@ bool target_big_endian(void) return target_endian_mode() =3D=3D ENDIAN_MODE_BIG; } =20 +bool target_is_any(const TargetInfo *ti) +{ + (void)ti; + return true; +} + bool target_is_base_arm(const TargetInfo *ti) { switch (ti->target_arch) { --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406385; cv=none; d=zohomail.com; s=zohoarc; b=JrXn/8WSNTQDHl1i3Mv+Luuz/E8vARqu3REnSjVgqR7cOJcSty3G71KzhL0/0U6IWBfy2tpO7CcjTWczh0afS0s5H+mZYN5ZfMlWJACL4CtUjK8GUo1xwzQxu0xjFZK8wvvAZmzEnINRbed4TWHHiyrJ5hidl/EnZNPwj+8962g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406385; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=TItkDrTDA9lyGwsZNCUzVvUjl8bw4SoMg1hmQulH2LY=; b=CJ3gp4/neKPzt5+qdbDu6uDov8IUUNbSB7IOEE7MtQ3774yUP6litJMkPmgR3SVWeQ1ftqpKBm6wZ0UyMx6jc3VW0tZd4V3azd4LWAOMiArswiYGUzSQG3/IAVq3L0/LzR6o8ahvma09tjU/qAq9Dj8rIhpVuVJB+CqG/gS/t/o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406385628283.12829673836984; Sat, 26 Sep 2026 00:06:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMQr-0003DS-6E; Sat, 26 Sep 2026 03:02:49 -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 1xAMQ9-0002iu-3i for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:08 -0400 Received: from mail-dy2-x0e.google.com ([2607:f8b0:4864:36::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMQ7-0000Ti-6z for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:04 -0400 Received: by mail-dy2-x0e.google.com with SMTP id 5a478bee46e88-34215285aa1so339622eec.1 for ; Sat, 26 Sep 2026 00:02:02 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.01.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:01:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406121; x=1791010921; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=TItkDrTDA9lyGwsZNCUzVvUjl8bw4SoMg1hmQulH2LY=; b=g6TvxRaLDp32G6YUx9iHtcftUNfLUmj6gnhlDVQkQNYWeYQB2w3B4KUgSrji/w+shI 2ynRC3+IwZFKgVt3glipQMy6s1GlqqOW+LcsAywNeacvoZPV/h+oG2AlgYCIO4KIWWAg pswu5s/cSy5Cdv8Kxw4sUWr8JyvL4JT5YuOwzbSR/eKqNs/GpR6pVW1EhpSpZ3l+u6S2 Cpp0V5s4VzwsYnrYA6CX9Nq0rBahSAvC9Ci7DT3MMqpsuEZWKUMUJHcITKp271bNystS hbdGIBaoKNw0PgDB79Ph6mptYnvznWq7mDlWpc16xKZyUjds7QHJlkAo7/DZTG5dKI8x oF6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406121; x=1791010921; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=TItkDrTDA9lyGwsZNCUzVvUjl8bw4SoMg1hmQulH2LY=; b=wi5qW+Ov362eToA16Y3apQyOqBAyZoDmpFEzzmbIH4K8d+M03lmiw1livJ1VC6Z5tV YpOZIpbiaVuih7GnOH/GfE/0aW2iCcUT1pavDXFUj9fbmrRWNKKsYNC1OWtojlqCcHJe JKnhkQ0XUS+tWSvKo4BZYASdtf7mHE8vmXrWgylWf8/bg4ntmZhcKm0tfiwa9d5Z14A6 u4ODYcpzJln+uOZcY29WH2rD83iz85v0GmkBg2JU7Fj4SUoSe4tDTp8SAbaZvOwm39DP oQuLRjcVvl6FoHtwtFaklLtbqUyvzMUoBOTqA2eXP1Y5iOPowZfyjA/+L+3OpX2VKhqM /67Q== X-Gm-Message-State: AFuF++lq5yQ3NSOrzq1NKmhyGvbwTsW19jNB4hhgl3OoCvat4+LAwskB FbErWZ7ulpPeRFm9AXL1W5uJUFC9bp//sq8pEKDnPoH72NrVSIdVBdJ/+3vn40nE X-Gm-Gg: AYBFou3MFNVmtw24hxQkvC1gtDBGjk61QO1ePcOo3hnhUPwQvOKjOmA6WML4h3wb0sD OAZIvvO4FEEynR996WwYPNTXVBLZSh991QuE8+TTVxyeFjservosg6NOk8QJqhO9axgzyFjGOYR ukff8VXwzKpojMTeG1isY0sLujWnEHPDc3oCe6pn3YHEWZI3iEu3QA+iqlVt+y2rwy9XFgJ7jjw 9BQUiS+nNBpRUnJ/fD1YOY6J9jBnUHibmXNRex7pYsPVnN306yktJNitSM3yrdK5xw0JrhteE6n kucIeKT95ePZNXEowP9oGdh9OGIHnra0VWo0vTyUEzMujhZgx9YiZ1EiNU9F7WbyYVd5kEOE/fd C2F65VSaxlb/PCm1479u5zIZt0r96drNMzj0pJbddouisAAZx3j1cG0v5d6qqwP7fJw5js8pVDR EklvMjCUeNlxsSaeIxa6KufIRQZXBVt1+WVSQTkxADOXURjFw9Of1XsQgDKGN2CusJnT3mMDgng dcZIqRpITgGOXKsLmLwS/GJqb6WLPU= X-Received: by 2002:a05:7300:7b27:b0:33e:53f6:1a2f with SMTP id 5a478bee46e88-342709b2ad6mr2170020eec.2.1790406116221; Sat, 26 Sep 2026 00:01:56 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 13/55] qom: pass TargetInfo to is_available for latter use Date: Sat, 26 Sep 2026 15:00:12 +0800 Message-ID: <20260926070057.1234-14-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::e; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0e.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1790406387101158500 Content-Type: text/plain; charset="utf-8" Change TypeInfo.is_available to TypeIsAvailable taking const TargetInfo *. Store the callback on TypeImpl. object_class_get_is_available() returns that callback, or target_is_any() when the class has none. Signed-off-by: Yonggang Luo --- hw/arm/aspeed_ast27x0-fc.c | 2 +- hw/arm/aspeed_ast27x0_evb.c | 4 ++-- hw/arm/raspi.c | 4 ++-- hw/arm/raspi4b.c | 2 +- include/qom/object.h | 26 +++++++++++++++++++++++--- qom/object.c | 14 +++++++++++++- 6 files changed, 42 insertions(+), 10 deletions(-) diff --git a/hw/arm/aspeed_ast27x0-fc.c b/hw/arm/aspeed_ast27x0-fc.c index 73362b60d2a..8a7c6a116ac 100644 --- a/hw/arm/aspeed_ast27x0-fc.c +++ b/hw/arm/aspeed_ast27x0-fc.c @@ -234,7 +234,7 @@ static const TypeInfo ast2700fc_types[] =3D { .parent =3D TYPE_MACHINE, .class_init =3D ast2700fc_class_init, .instance_size =3D sizeof(Ast2700FCState), - .is_available =3D target_aarch64, + .is_available =3D target_is_aarch64, }, }; =20 diff --git a/hw/arm/aspeed_ast27x0_evb.c b/hw/arm/aspeed_ast27x0_evb.c index 460c9ff0d2e..02a8cff1d9d 100644 --- a/hw/arm/aspeed_ast27x0_evb.c +++ b/hw/arm/aspeed_ast27x0_evb.c @@ -75,13 +75,13 @@ static const TypeInfo aspeed_ast27x0_evb_types[] =3D { .name =3D MACHINE_TYPE_NAME("ast2700a1-evb"), .parent =3D TYPE_ASPEED_MACHINE, .class_init =3D aspeed_machine_ast2700a1_evb_class_init, - .is_available =3D target_aarch64, + .is_available =3D target_is_aarch64, }, { .name =3D MACHINE_TYPE_NAME("ast2700a2-evb"), .parent =3D TYPE_ASPEED_MACHINE, .class_init =3D aspeed_machine_ast2700a2_evb_class_init, - .is_available =3D target_aarch64, + .is_available =3D target_is_aarch64, } }; =20 diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c index fadbacb2534..22b06c6ca22 100644 --- a/hw/arm/raspi.c +++ b/hw/arm/raspi.c @@ -403,12 +403,12 @@ static const TypeInfo raspi_machine_types[] =3D { .name =3D MACHINE_TYPE_NAME("raspi3ap"), .parent =3D TYPE_RASPI_MACHINE, .class_init =3D raspi3ap_machine_class_init, - .is_available =3D target_aarch64, + .is_available =3D target_is_aarch64, }, { .name =3D MACHINE_TYPE_NAME("raspi3b"), .parent =3D TYPE_RASPI_MACHINE, .class_init =3D raspi3b_machine_class_init, - .is_available =3D target_aarch64, + .is_available =3D target_is_aarch64, }, { .name =3D TYPE_RASPI_MACHINE, .parent =3D TYPE_RASPI_BASE_MACHINE, diff --git a/hw/arm/raspi4b.c b/hw/arm/raspi4b.c index 566d64572db..a1dc477f25e 100644 --- a/hw/arm/raspi4b.c +++ b/hw/arm/raspi4b.c @@ -121,7 +121,7 @@ static const TypeInfo raspi4b_machine_type =3D { .parent =3D TYPE_RASPI_BASE_MACHINE, .instance_size =3D sizeof(Raspi4bMachineState), .class_init =3D raspi4b_machine_class_init, - .is_available =3D target_aarch64, + .is_available =3D target_is_aarch64, }; =20 static void raspi4b_machine_register_type(void) diff --git a/include/qom/object.h b/include/qom/object.h index 4c0645817a5..3791f335fdb 100644 --- a/include/qom/object.h +++ b/include/qom/object.h @@ -16,6 +16,7 @@ =20 #include "qapi/qapi-builtin-types.h" #include "qemu/module.h" +#include "qemu/target-info.h" =20 struct TypeImpl; typedef struct TypeImpl *Type; @@ -117,6 +118,15 @@ typedef void (ObjectUnparent)(Object *obj); */ typedef void (ObjectFree)(void *obj); =20 +/** + * typedef TypeIsAvailable: + * @ti: TargetInfo to test. + * + * Returns whether a type is available for @ti. Typical implementations + * are target_is_*(). + */ +typedef bool (TypeIsAvailable)(const TargetInfo *ti); + #define OBJECT_CLASS_CAST_CACHE 4 =20 /** @@ -473,8 +483,10 @@ struct Object * @class_data: Data to pass to the @class_init, * @class_base_init. This can be useful when building dynamic * classes. - * @is_available: callback invoked at registration time, to dynamically ch= eck if - * this type should be available or not. + * @is_available: Optional callback. Unset inherits the parent type's + * callback in the MODULE_INIT_QOM after pass (parents are not all + * registered at type_register time). After inherit the callback is + * never NULL. Callers may also invoke it with a chosen TargetInfo. * @interfaces: The list of interfaces associated with this type. This * should point to a static array that's terminated with a zero filled * element. @@ -498,7 +510,7 @@ struct TypeInfo void (*class_base_init)(ObjectClass *klass, const void *data); const void *class_data; =20 - bool (*is_available)(void); + TypeIsAvailable *is_available; const InterfaceInfo *interfaces; }; =20 @@ -1087,6 +1099,14 @@ bool object_class_is_abstract(ObjectClass *klass); */ bool object_class_is_secure(ObjectClass *klass); =20 +/** + * object_class_get_is_available: + * @klass: The class to obtain TypeInfo.is_available for. + * + * Returns: The class is_available callback, never %NULL. + */ +TypeIsAvailable *object_class_get_is_available(ObjectClass *klass); + /** * object_class_by_name: * @typename: The QOM typename to obtain the class for. diff --git a/qom/object.c b/qom/object.c index 96498f3d001..76b0b0806b3 100644 --- a/qom/object.c +++ b/qom/object.c @@ -15,6 +15,7 @@ #include "qom/compat-properties.h" #include "qom/object.h" #include "qom/object_interfaces.h" +#include "qemu/target-info-qapi.h" #include "qemu/cutils.h" #include "qemu/memalign.h" #include "qapi/visitor.h" @@ -71,6 +72,8 @@ struct TypeImpl bool abstract; bool secure; =20 + TypeIsAvailable *is_available; + const char *parent; TypeImpl *parent_type; =20 @@ -126,6 +129,7 @@ static TypeImpl *type_new(const TypeInfo *info) =20 ti->abstract =3D info->abstract; ti->secure =3D info->secure; + ti->is_available =3D info->is_available; =20 for (i =3D 0; info->interfaces && info->interfaces[i].type; i++) { ti->interfaces[i].typename =3D g_strdup(info->interfaces[i].type); @@ -167,7 +171,7 @@ static TypeImpl *type_register_internal(const TypeInfo = *info) abort(); } =20 - if (info->is_available && !info->is_available()) { + if (info->is_available && !info->is_available(target_info())) { return NULL; } =20 @@ -1153,6 +1157,14 @@ bool object_class_is_secure(ObjectClass *klass) return klass->type->secure; } =20 +TypeIsAvailable *object_class_get_is_available(ObjectClass *klass) +{ + if (klass->type->is_available) { + return klass->type->is_available; + } + return target_is_any; +} + const char *object_class_get_name(ObjectClass *klass) { return klass->type->name; --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406583; cv=none; d=zohomail.com; s=zohoarc; b=Z4j/kXBZUiM0GpbBQkXsySrz4p/QCGsH1VS4V05Bf1syGqkX4I5Nzkuesx1qg2SGu5pgVmYb9GeosO0z74RE96SHfoLQGgJjyJ67v2ZzyyvViSveih+k+mK8m6jOyhUH3FBfTv3icdt8QDp29ISBUjxYn2I/sIKfDJf9nMg8ylk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406583; 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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=NmcVVZs2AdigVyOz3zzkAE1Rb9Ccoa5Uym0KVLWzyjs=; b=JsULRVuzFARSruq4AUbnzdDDsoInLy8pKfL6mBLxwv087BCV0MNECje3mMquXzokVtBEHhAoYgPfjKe5TLped1Q4Moixr1ZdnbEXo2x9ccx5XYXSg7FoJy3gbSSAQVxLMHfnJjdwu4NARnGZY8dC5IM3dRCEDwnpTGa9zgQMUu4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 179040658297996.7386455025594; Sat, 26 Sep 2026 00:09:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMQf-0002xm-QB; Sat, 26 Sep 2026 03:02:41 -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 1xAMQ8-0002im-Ey for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:08 -0400 Received: from mail-dy2-x0f.google.com ([2607:f8b0:4864:36::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMQ5-0000Ta-Ej for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:04 -0400 Received: by mail-dy2-x0f.google.com with SMTP id 5a478bee46e88-33bfb26865fso1387513eec.2 for ; Sat, 26 Sep 2026 00:02:01 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.01.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:01:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406120; x=1791010920; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=NmcVVZs2AdigVyOz3zzkAE1Rb9Ccoa5Uym0KVLWzyjs=; b=Sc+VFs0O+IHAcmF8sSe1YDeL03pE2xAZb1EpQjIhTML5YyD4EiAgkrLLSiiJjR9v4m z5aIMnydvEwS2BuOFFnZZoEb8vRELVqkgrzfeCitIV5GMWsjbVZgl7tqPFnX7cplghYO rwfCJ97c5v5tC8UAE991qt2IEDHh47mctKaPg0KatgAJelOlIv+aasiJvIyyvp157YEo QDzceWFyc4EN6WP4vsePiB0Y69SMfLIuq5YGu6SHEKFgkQJLr7dbquIE5BWBdeq49Juc Uu6BduLNZWs5mFBmTHYexW5JgwS1k8BbjXKhYMV3CrtGqFlc2RWFkC93WdYYcH1J/d/w uqog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406120; x=1791010920; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=NmcVVZs2AdigVyOz3zzkAE1Rb9Ccoa5Uym0KVLWzyjs=; b=2KcMc+xucVTiHAOfGUr7aYNsfI9DaLhQrVKIP35bx/0dBh8kMCs6jNW6YH7ba7Bgnf 5G1Wy06x03XOk5t68cKdayX/Pn2kI4XNf7FyM4Xzkkjv+WgQzoC95omlPieNDFmwtMyL kn9ErAD5oAcpTc434kJiTmvMImHWtuap068uR7DJJxwJpwCFj4dWcADNo3tG/plSeAb7 VfI+xgCOU1u6kqeXkLx3A+sZfjZXSAkd0RhC7bshx/LiuJouftQnqJABJfAqinOmMDy6 5ij6hfnN87J9ZhZbwGiqmCqRnInO2kN2P6BUqHenZDHQc4+BEurURzowlzoR4lwuCrN/ bTJA== X-Gm-Message-State: AFuF++nYnPmrdFOqLTX80aZMlfH/tivnb8/HzHDVy2TV7hAo5CzT7TvO heWzCbDEbmwn4fgELY7YAtcAZ8R6pKNnjegLbigScPbmiFcLKll+daAEWaF1qijH X-Gm-Gg: AYBFou0jCVud1+vHHSkLuZxqPFGRlEuvHN1EeWBTxF8sM+tNTY4o9WShjU7z9CKfsoP rWJDyqJGtj096uM9FZwL4NJbLnDhmC6rOxtgmSh1zc707al55H0WKrJHeqvzOmwwHM6zE5p366i FeAF6QYm8tMqFbLbQOPQeFuFvxIM9aU1L0cXGs3DwUbjidHslDCtcbgHfARVzEI8S4SozgIv7AY OSmAUT9b8LMLkrRRCO9DsDDJFWGrhutRgrC+93n9kgCSvq+tgCazej4mlF2uVuFbOdZllQbdMHf sOyhXD3v2AzAxu1ZoZDifkZbg3Wjlm5K3kBthW4eqviPledtx7a0PdYB6wyJDBXgEhXjOxbOyWg jDRrAPXAl9pTfLJnUnGdfohffsK/yTogh1A4a7dSqlv83Z0qQovCROPZ6gfMV8CE77y72L3R64j ZRCLprpfoYXLwhtb+KN+YVgZ1YrdsIx5vHcQGk3KH39WYycCf0QW7qi388RfT85+wHbseigHNYc DLTVMv5eCGEhicCHEEZiz9Zr+U0wAGKNrYY+n0pwBc= X-Received: by 2002:a05:693c:2589:b0:341:9040:8ec6 with SMTP id 5a478bee46e88-34273850d16mr1979752eec.41.1790406119966; Sat, 26 Sep 2026 00:01:59 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 14/55] target/arm: move kvm_arm_set_cpreg_mig_tolerances to kvm.c Date: Sat, 26 Sep 2026 15:00:13 +0800 Message-ID: <20260926070057.1234-15-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::f; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0f.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1790406583852158501 Keep KVM kernel register-list migration policy with the other KVM cpreg helpers. - Move kvm_arm_set_cpreg_mig_tolerances from cpu64.c to kvm.c - Declare it in kvm_arm.h - Add a kvm-stub.c assert stub Signed-off-by: Yonggang Luo --- target/arm/cpu64.c | 38 -------------------------------------- target/arm/kvm-stub.c | 5 +++++ target/arm/kvm.c | 36 ++++++++++++++++++++++++++++++++++++ target/arm/kvm_arm.h | 9 +++++++++ 4 files changed, 50 insertions(+), 38 deletions(-) diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c index 4e8c4725308..1e64eb54cdc 100644 --- a/target/arm/cpu64.c +++ b/target/arm/cpu64.c @@ -754,44 +754,6 @@ static void aarch64_a53_initfn(Object *obj) define_cortex_a72_a57_a53_cp_reginfo(cpu); } =20 -#if defined(CONFIG_KVM) -static void kvm_arm_set_cpreg_mig_tolerances(ARMCPU *cpu) -{ - /* - * Registers that may be in the incoming stream and not exposed - * on the destination - */ - - /* - * TCR_EL1 was erroneously unconditionnally exposed before linux v6.13. - * See commit 0fcb4eea5345 ("KVM: arm64: Hide TCR2_EL1 from userspace - * when disabled for guests") - */ - arm_register_cpreg_mig_tolerance(cpu, ARM64_SYS_REG(3, 0, 2, 0, 3), - 0, 0, ToleranceNotOnBothEnds); - /* - * PIRE0_EL1 and PIR_EL1 were erroneously unconditionnally exposed - * before linux v6.13. See commit a68cddbe47ef=C2=A0("KVM: arm64: Hide - * S1PIE registers from userspace when disabled for guests") - */ - arm_register_cpreg_mig_tolerance(cpu, ARM64_SYS_REG(3, 0, 10, 2, 2), - 0, 0, ToleranceNotOnBothEnds); - arm_register_cpreg_mig_tolerance(cpu, ARM64_SYS_REG(3, 0, 10, 2, 3), - 0, 0, ToleranceNotOnBothEnds); - - /* - * KVM_REG_ARM_VENDOR_HYP_BMAP_2 pseudo FW register is exposed - * from v6.15 onwards. Backward migration from a >=3D v6.15 to an older - * kernel would fail without cpreg migration tolerance definition. - * If the register is present on source but not on destination, make - * sure it has its reset value, ie. 0, meaning no service is exposed - * to the guest. - */ - arm_register_cpreg_mig_tolerance(cpu, KVM_REG_ARM_FW_FEAT_BMAP_REG(3), - UINT64_MAX, 0, ToleranceOnlySrcTestVa= lue); -} -#endif - void aarch64_host_initfn(Object *obj) { ARMCPU *cpu =3D ARM_CPU(obj); diff --git a/target/arm/kvm-stub.c b/target/arm/kvm-stub.c index 88cbe8d85c4..ecbd4f9aca1 100644 --- a/target/arm/kvm-stub.c +++ b/target/arm/kvm-stub.c @@ -50,6 +50,11 @@ void kvm_arm_set_cpu_features_from_host(ARMCPU *cpu) g_assert_not_reached(); } =20 +void kvm_arm_set_cpreg_mig_tolerances(ARMCPU *cpu) +{ + g_assert_not_reached(); +} + void kvm_arm_add_vcpu_properties(ARMCPU *cpu) { g_assert_not_reached(); diff --git a/target/arm/kvm.c b/target/arm/kvm.c index ed99be7fd80..2525b9d429c 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -505,6 +505,42 @@ void kvm_arm_set_cpu_features_from_host(ARMCPU *cpu) env->features =3D arm_host_cpu_features.features; } =20 +void kvm_arm_set_cpreg_mig_tolerances(ARMCPU *cpu) +{ + /* + * Registers that may be in the incoming stream and not exposed + * on the destination + */ + + /* + * TCR_EL1 was erroneously unconditionnally exposed before linux v6.13. + * See commit 0fcb4eea5345 ("KVM: arm64: Hide TCR2_EL1 from userspace + * when disabled for guests") + */ + arm_register_cpreg_mig_tolerance(cpu, ARM64_SYS_REG(3, 0, 2, 0, 3), + 0, 0, ToleranceNotOnBothEnds); + /* + * PIRE0_EL1 and PIR_EL1 were erroneously unconditionnally exposed + * before linux v6.13. See commit a68cddbe47ef=C2=A0("KVM: arm64: Hide + * S1PIE registers from userspace when disabled for guests") + */ + arm_register_cpreg_mig_tolerance(cpu, ARM64_SYS_REG(3, 0, 10, 2, 2), + 0, 0, ToleranceNotOnBothEnds); + arm_register_cpreg_mig_tolerance(cpu, ARM64_SYS_REG(3, 0, 10, 2, 3), + 0, 0, ToleranceNotOnBothEnds); + + /* + * KVM_REG_ARM_VENDOR_HYP_BMAP_2 pseudo FW register is exposed + * from v6.15 onwards. Backward migration from a >=3D v6.15 to an older + * kernel would fail without cpreg migration tolerance definition. + * If the register is present on source but not on destination, make + * sure it has its reset value, ie. 0, meaning no service is exposed + * to the guest. + */ + arm_register_cpreg_mig_tolerance(cpu, KVM_REG_ARM_FW_FEAT_BMAP_REG(3), + UINT64_MAX, 0, ToleranceOnlySrcTestVa= lue); +} + static bool kvm_no_adjvtime_get(Object *obj, Error **errp) { return !ARM_CPU(obj)->kvm_adjvtime; diff --git a/target/arm/kvm_arm.h b/target/arm/kvm_arm.h index e7c40fb003e..014b7bad65b 100644 --- a/target/arm/kvm_arm.h +++ b/target/arm/kvm_arm.h @@ -133,6 +133,15 @@ void kvm_arm_destroy_scratch_host_vcpu(int *fdarray); */ void kvm_arm_set_cpu_features_from_host(ARMCPU *cpu); =20 +/** + * kvm_arm_set_cpreg_mig_tolerances: + * @cpu: ARMCPU to register the tolerances on + * + * Register KVM cpreg migration tolerances for kernel register-list + * differences (hidden sysregs and newer FW feature bitmaps). + */ +void kvm_arm_set_cpreg_mig_tolerances(ARMCPU *cpu); + /** * kvm_arm_add_vcpu_properties: * @cpu: The CPU object to add the properties to --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406826; cv=none; d=zohomail.com; s=zohoarc; b=ewUwJ7rD8L25v2mZtoZizaVH6RElYggoyiMToVnt2wMoxmwIbTaZBla3LskCddPKbJjzDSLUKsfz02ssa6h+rBVfb5yByMLg8oXz5xEK3oBKokhZbyB1GJ3t13p3BaD7LlFnDLFVG9uQps8NUu6jY899Nuwj4puBjQJW1xby8sY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406826; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hrGKgFew7a5BWVed114GbJvRtNCR8ABRcbnE53096fw=; b=EUldQo0UIzNf+1Yj4Dl2cs6AHzkrRhRbSV/WG6nX8Y0gRVe4B41B8zmCNQ5kOoTXkhnyLsAIYVfhTRe8Y6+UTwDKAU0Wp42mQzeVKV40uXSZMKCd07SWgPW0ZnkFP5VVULGg1aiJ/1BGYlrJxGHK8TP3ztdnlGyNrkiuwdbwuio= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406826495799.4291942184756; Sat, 26 Sep 2026 00:13:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMQt-0003Ju-QS; Sat, 26 Sep 2026 03:02:51 -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 1xAMQC-0002mO-JV for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:10 -0400 Received: from mail-dy2-x0f.google.com ([2607:f8b0:4864:36::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMQ9-0000UR-PO for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:07 -0400 Received: by mail-dy2-x0f.google.com with SMTP id 5a478bee46e88-340fbf9c1c6so928250eec.3 for ; Sat, 26 Sep 2026 00:02:05 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.02.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:02:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406124; x=1791010924; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=hrGKgFew7a5BWVed114GbJvRtNCR8ABRcbnE53096fw=; b=nuBHQgRPk4XNg1vnVEhVthOzeIsVa+5tHrQe8+ydRnU+xVbtlrvvPnB/nCe6EMy5+Z tO+oSLHwDY50tRwvxJtibe6NU+/VLwwTJYwOhVgfleozZ/Dn9qR/XvvIWM2yeIfIxWkK IOVmZXVDP9/SuUxOE7nQ1dTNkSMnYAV9FmcNHVX7fdTBxD3htK+1dVO+hOGRXaK19Xpd 4uKpCwlO815RH+wLW8jPb/B0EE0lxEEnuDxFeFfzhIUtp2FtPof9lxAk1ShNIZ5Rqdbn 0OzT1MJ0D7TsqD3QRYxwo+3DgtHhOBt6IFUMOQEKm9ix0KYzKjp5j23fXg9mWMjpbbyv ExpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406124; x=1791010924; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=hrGKgFew7a5BWVed114GbJvRtNCR8ABRcbnE53096fw=; b=tZyZWZJX6Hl1Q1FJDcI4KJOMwyfS9J8AL1PytDrtYRuOVMsnItZCqy0mLJuVPF/C7G tTHic1n7VsAXAhvWiy12PJXxrtnhpDj5XzSLLbjNnbIN22cgSuU1/8K1x6lv6rF5+9l/ kAkQGtdA97GiwC/Lrp6akJlYRPtkPBEM8vWO9vTcnlohD82bESIXaHNeRMUmtFRCT5/I hCw7TLqMDRY9Y5fsCoM4hdOdpLjBWTrcn3mNBWxRq9T6ysF7x5yZoGzn6HN+t2VtWfV9 61SbQKnc3D+A/O+qYUDt6ZhnwbBu69SX/Wr6B0cvVikngkToJniH/O3GEwbfaLv7q4no 8M5w== X-Gm-Message-State: AFuF++mls4+MYEdnXdB8C3WAs5ErBb0XOnzQC+NIDLmvUHm15mRTJD47 BNq7kiBTknhp2wpN/fN8y/e5rM1778zvYiIWAt/tCUyYFHDoqfRr4cMTukdHI7qE X-Gm-Gg: AYBFou348hVFGx/m6BUrl4fT8lSR3hhAdhIno0GTjXHf9MrsldDbz97FQ89ZuxAKfX+ AdvIQ0Vh0ARuioX7P4KWXN2dyha9dK5VRtJWP1umvo9F+4z73Fl1EE6WHAf1m74eIINax5lumn/ qBGf4ruwPuyV3/0MzfBsy6e9jRhtxvkxt1HBY0ftiRZ07e2Bg+rud7VGrjqmBPsdoGyN5wB746P sjikKAm7hzAyINr0npJviVyecLUFl38ecTxUWh/sg3FG1/LnrOHG9d7z9aBU9D/BOAUFvHlNoPH gB5KoOyvJTji9d9/P7b3ZzR9YoIRxZO1X3oNbgkKi3HDz9aQwu3WuNe6lmUm/pPVrOG4CHk6Sd/ s9oThMNNZDk6i0WUFkObJVjOaM0dbYcX+wBLYvNGOFl6/SF76mVmgsMwgilzY7hpFqAcai62QF6 NinUuBzZ0fmGz2ohssMN2y4Oi+LY3rPyd/SDfB5ldsxF6ip4eWRCmbhriGdSpOH+MgPLtI0o9uN yPBosNpeMh4Nhvji9XQ/PbJuDX9SLXT6ccieT9NsQ== X-Received: by 2002:a05:7301:2224:b0:341:2466:2d68 with SMTP id 5a478bee46e88-3427304d4e6mr1888482eec.38.1790406124252; Sat, 26 Sep 2026 00:02:04 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 15/55] target/arm: allow -cpu host with Nitro Date: Sat, 26 Sep 2026 15:00:14 +0800 Message-ID: <20260926070057.1234-16-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::f; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0f.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406828760158500 Content-Type: text/plain; charset="utf-8" Register the AArch64 host CPU when CONFIG_NITRO is set, matching the existing initfn early-return for nitro_enabled(). - Add CONFIG_NITRO to the aarch64_cpus host type guard - Treat nitro_enabled() like the other accels in realize - Mention Nitro in the host-CPU realize error - Set host_cpu_probe_failed instead of asserting when only Nitro is compiled in and it is not selected Signed-off-by: Yonggang Luo --- target/arm/cpu.c | 5 +++-- target/arm/cpu64.c | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 090470da40a..c138c4c0587 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -1835,8 +1835,9 @@ static void arm_cpu_realizefn(DeviceState *dev, Error= **errp) * this is the first point where we can report it. */ if (cpu->host_cpu_probe_failed) { - if (!kvm_enabled() && !hvf_enabled() && !whpx_enabled()) { - error_setg(errp, "The 'host' CPU type can only be used with KV= M, HVF or WHPX"); + if (!kvm_enabled() && !hvf_enabled() && !whpx_enabled() && + !nitro_enabled()) { + error_setg(errp, "The 'host' CPU type can only be used with KV= M, HVF, WHPX or Nitro"); } else { error_setg(errp, "Failed to retrieve host CPU features"); } diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c index 1e64eb54cdc..03f3d55f6ba 100644 --- a/target/arm/cpu64.c +++ b/target/arm/cpu64.c @@ -774,7 +774,7 @@ void aarch64_host_initfn(Object *obj) #elif defined(CONFIG_WHPX) whpx_arm_set_cpu_features_from_host(cpu); #else - g_assert_not_reached(); + cpu->host_cpu_probe_failed =3D true; #endif if (arm_feature(&cpu->env, ARM_FEATURE_AARCH64)) { aarch64_add_pauth_properties(obj); @@ -784,7 +784,8 @@ void aarch64_host_initfn(Object *obj) static const ARMCPUInfo aarch64_cpus[] =3D { { .name =3D "cortex-a57", .initfn =3D aarch64_a57_initfn }, { .name =3D "cortex-a53", .initfn =3D aarch64_a53_initfn }, -#if defined(CONFIG_KVM) || defined(CONFIG_HVF) || defined(CONFIG_WHPX) +#if defined(CONFIG_KVM) || defined(CONFIG_HVF) || defined(CONFIG_WHPX) || \ + defined(CONFIG_NITRO) { .name =3D "host", .initfn =3D aarch64_host_initfn }, #endif }; --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406549; cv=none; d=zohomail.com; s=zohoarc; b=nlM9v0CeoLsjNpacSbx+YksJczecJRkIx6KdZy+QDW7bOADOnPB2zYjIcgVoA7OdIyr+UjROZkfCRNe9rErYtGvamgv9dn6dHaiyigfeZoh51PO4FdC53MKp5gC9aD6Fge+anW2PQYDdRLK03reGm6jAuHqDFJsJvoxG1T0T/8o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406549; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=bnB/iWAyXAxW1TeHJut1enjEPN/SkInFqx09vCaNhBQ=; b=niQP+TmUm9Gye3oiztayElAqDwpRjtWZv7DJeoRkkp7jj7OvD/qfsvhqeMwhorHShIpXJqpjQQEIXY3sH5v5vc0XaXiUjLygV/ffdIY5V/JkDKD22drPYe94RDnshh4ljzX6o1z8EKD8ln2auT57tX2xhBaR51EVRrKU51cQpso= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406549201116.8674418724031; Sat, 26 Sep 2026 00:09:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMRr-00057Z-MP; Sat, 26 Sep 2026 03:03:54 -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 1xAMQF-0002nL-Fb for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:12 -0400 Received: from mail-dl2-x0f.google.com ([2607:f8b0:4864:38::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMQD-0000Uz-NC for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:11 -0400 Received: by mail-dl2-x0f.google.com with SMTP id a92af1059eb24-144f7915355so1353795c88.3 for ; Sat, 26 Sep 2026 00:02:09 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.02.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:02:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406128; x=1791010928; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=bnB/iWAyXAxW1TeHJut1enjEPN/SkInFqx09vCaNhBQ=; b=AKGJA1xTPEf7WTCpy144cfkwtzvLzIhsMn9pKEuNGOp+ck3v1V7AwrnBWP97QELVNa NRQCt+6JhnLNSl/MoVfBLlPXy+wM6Fro/enjeo5hECI+ZVV335ubSuNz8E9v/WbR0Zod VufDjdSrF5fmKjJRH7gY5H+cQp/nIVv1cJTff7IN2ymd0KWjWM5WKWwj56OjZcLhYuOj NigEOmnph/BXoxiNIR4OuMg6Iabi/f+d/71zgln7l625/WmTIMgZVnJu+Xk+QEtE2iPj YikGM9ctYStZhbh13LsHCY0yOKmcLkPGBWr2wmB4jnCv6saptflfGqxkuhIFaVqsOwL4 lSUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406128; x=1791010928; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=bnB/iWAyXAxW1TeHJut1enjEPN/SkInFqx09vCaNhBQ=; b=VwSyIMjkLM2h+TLCvdVq0aLiSBZP+pvdZjwp5Z30vPar1PZKnH6cWSaB5uNr5VhE/a IeBEL85DRkeOapvm/oirXO6ALFyQL5eYoenM33QiDJWd6SfhECavkVt5DdRXkkuh4/Im B75V8Ub9bRt6sLEteNMjMfoLGiILQ/EbFcIuI3B19T6gqwA15EZfnrDQIvh1vUf+iyEh QkgcYRD029wx42sPU8fAnTINMjL+uYl6hZEWQaY5h3wcMH8hVdb7g7vb3B07CYtkInEO 4yio/j+0II6Wm2oj+Ajl+ZMIAXX6mt4zBFUk6Rf6cmGwv1FomURDqdj4F2NODx9B2TSf Ht/Q== X-Gm-Message-State: AFuF++kkgR/MMpvWm2RxUpMDFCO+4z3jeGoXHo+p3M6mnmAwwF2b95Ts IowEWZ+xHJV1GGNemg0INKsXTvIwvvqQju3kYQcC6QdN0h5DMq2uUN5dzzty2v75 X-Gm-Gg: AYBFou3W3KvStHBS4quNC+iBLCv8Ya4mZkFqcgcBd7ZYzWE9aicDQ2KQ9XmRQeYw/hk vAWvnI94bMeu9CKsuuXJUY8GyBMLCIsqsOse20gSrT0NnLkIAdYiTg8uu0MSscAOsyQOjIJLmrM 9zGuW/pPZIgy1UZ3biOYEyEnDU6XRD+VXMlcHmBe9/KJ/n1bXzsPML8KMpWhCt45a144AqWRgeH B9bjdUBAXGzcrQzSiPvtHKfizocoT9P5cVjf37O5ZS+WF0VQkIJuD+c6B0CdBGn1qfXLgBJKUtH 8L8vR6ze7NGgM3dGaBqHbe1+W/3G70hoouTH3D9bcwxgSfdVMqjfOVFqFi0sUK4gHO24CwUIbIZ Y4IgdGsl4JIsKzGgQoSvosIGqui2vHQtGfAcnu6mYlg0xRgyc9Zyig6VweTIXfvb2Tolouk5tIp 0/HCfyffoEy6GhqO788wvNPwZ9JNiyWQsN6QR5g+/1XbhCl9qRPiSUYHumUmZNqpUuR7sx7Ldyl oPfFUWkWntGOAhfC4/vnRrIpeJwNAc= X-Received: by 2002:a05:701b:2059:20b0:143:7001:7643 with SMTP id a92af1059eb24-146d096d4bamr2224508c88.46.1790406128075; Sat, 26 Sep 2026 00:02:08 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 16/55] target/arm: gate -cpu host with TypeIsAvailable Date: Sat, 26 Sep 2026 15:00:15 +0800 Message-ID: <20260926070057.1234-17-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:38::f; envelope-from=luoyonggang@gmail.com; helo=mail-dl2-x0f.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406549780158500 Content-Type: text/plain; charset="utf-8" Register the host ARMCPU type for every target and hide it with is_available. aarch64_host_initfn picks kvm, hvf, whpx, or nitro from TargetKconfig instead of CONFIG_* ifdefs. - Add ARMCPUInfo.is_available and pass it from arm_cpu_register - target_has_arm_host_cpu covers kvm, hvf, whpx, and nitro - Add hvf and whpx set_cpu_features_from_host stubs Signed-off-by: Yonggang Luo --- target/arm/cpu.c | 1 + target/arm/cpu.h | 1 + target/arm/cpu64.c | 43 +++++++++++++++++++++---------------- target/arm/hvf/hvf-stub.c | 14 ++++++++++++ target/arm/hvf/meson.build | 1 + target/arm/whpx/whpx-stub.c | 5 +++++ 6 files changed, 47 insertions(+), 18 deletions(-) create mode 100644 target/arm/hvf/hvf-stub.c diff --git a/target/arm/cpu.c b/target/arm/cpu.c index c138c4c0587..9b498632c86 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -2685,6 +2685,7 @@ void arm_cpu_register(const ARMCPUInfo *info) .instance_init =3D arm_cpu_instance_init, .class_init =3D info->class_init ?: cpu_register_class_init, .class_data =3D info, + .is_available =3D info->is_available, }; =20 type_info.name =3D g_strdup_printf("%s-" TYPE_ARM_CPU, info->name); diff --git a/target/arm/cpu.h b/target/arm/cpu.h index e3f931dba26..87de7e9ff09 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -1177,6 +1177,7 @@ typedef struct ARMCPUInfo { const char *deprecation_note; void (*initfn)(Object *obj); void (*class_init)(ObjectClass *oc, const void *data); + TypeIsAvailable *is_available; } ARMCPUInfo; =20 /** diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c index 03f3d55f6ba..168639ac2f4 100644 --- a/target/arm/cpu64.c +++ b/target/arm/cpu64.c @@ -20,6 +20,8 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" +#include "qemu/target-info.h" +#include "qemu/target-kconfig-has.h" #include "cpu.h" #include "cpregs.h" #include "qemu/module.h" @@ -757,37 +759,42 @@ static void aarch64_a53_initfn(Object *obj) void aarch64_host_initfn(Object *obj) { ARMCPU *cpu =3D ARM_CPU(obj); + const TargetInfo *ti =3D target_info(); =20 -#if defined(CONFIG_NITRO) - if (nitro_enabled()) { + if (target_has_kconfig_nitro(ti) && nitro_enabled()) { /* The nitro accel uses -cpu host, but does not actually consume i= t */ return; } -#endif =20 -#if defined(CONFIG_KVM) - kvm_arm_set_cpreg_mig_tolerances(cpu); - kvm_arm_set_cpu_features_from_host(cpu); - aarch64_add_sve_properties(obj); -#elif defined(CONFIG_HVF) - hvf_arm_set_cpu_features_from_host(cpu); -#elif defined(CONFIG_WHPX) - whpx_arm_set_cpu_features_from_host(cpu); -#else - cpu->host_cpu_probe_failed =3D true; -#endif + if (target_has_kconfig_kvm(ti)) { + kvm_arm_set_cpreg_mig_tolerances(cpu); + kvm_arm_set_cpu_features_from_host(cpu); + aarch64_add_sve_properties(obj); + } else if (target_has_kconfig_hvf(ti)) { + hvf_arm_set_cpu_features_from_host(cpu); + } else if (target_has_kconfig_whpx(ti)) { + whpx_arm_set_cpu_features_from_host(cpu); + } else { + cpu->host_cpu_probe_failed =3D true; + } if (arm_feature(&cpu->env, ARM_FEATURE_AARCH64)) { aarch64_add_pauth_properties(obj); } } =20 +static bool target_has_arm_host_cpu(const TargetInfo *ti) +{ + return target_has_kconfig_kvm(ti) + || target_has_kconfig_hvf(ti) + || target_has_kconfig_whpx(ti) + || target_has_kconfig_nitro(ti); +} + static const ARMCPUInfo aarch64_cpus[] =3D { { .name =3D "cortex-a57", .initfn =3D aarch64_a57_initfn }, { .name =3D "cortex-a53", .initfn =3D aarch64_a53_initfn }, -#if defined(CONFIG_KVM) || defined(CONFIG_HVF) || defined(CONFIG_WHPX) || \ - defined(CONFIG_NITRO) - { .name =3D "host", .initfn =3D aarch64_host_initfn }, -#endif + { .name =3D "host", .initfn =3D aarch64_host_initfn, + .is_available =3D target_has_arm_host_cpu }, }; =20 static void aarch64_cpu_register_types(void) diff --git a/target/arm/hvf/hvf-stub.c b/target/arm/hvf/hvf-stub.c new file mode 100644 index 00000000000..3c8148316c9 --- /dev/null +++ b/target/arm/hvf/hvf-stub.c @@ -0,0 +1,14 @@ +/* + * QEMU HVF ARM specific function stubs + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + */ + +#include "qemu/osdep.h" +#include "hvf_arm.h" + +void hvf_arm_set_cpu_features_from_host(ARMCPU *cpu) +{ + g_assert_not_reached(); +} diff --git a/target/arm/hvf/meson.build b/target/arm/hvf/meson.build index afc509a470e..055fab56fb6 100644 --- a/target/arm/hvf/meson.build +++ b/target/arm/hvf/meson.build @@ -1,3 +1,4 @@ arm_system_ss.add(when: [hvf, 'CONFIG_HVF'], if_true: files( 'hvf.c', )) +arm_stubs_ss.add(files('hvf-stub.c')) diff --git a/target/arm/whpx/whpx-stub.c b/target/arm/whpx/whpx-stub.c index 32e434a5f6a..3d1cbb33a28 100644 --- a/target/arm/whpx/whpx-stub.c +++ b/target/arm/whpx/whpx-stub.c @@ -13,3 +13,8 @@ uint32_t whpx_arm_get_ipa_bit_size(void) { g_assert_not_reached(); } + +void whpx_arm_set_cpu_features_from_host(ARMCPU *cpu) +{ + g_assert_not_reached(); +} --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406369; cv=none; d=zohomail.com; s=zohoarc; b=lYdq9vYP/8tqoeDrAb5/Om93XrXLShDdk/IbEYXuO7JuqgeSnsQENuIIl9RGqzb477POM1UMyWIG8QELZLuiSnXpCZgAtkD7mBh6KuLVsCqx5K7/Z5maQBAmdTDtpXtEWDSdDPUdlvvU7dIhvUtN0LE73dTHP7hhcKc5YxgKFNE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406369; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=z8w8edACRSxH2Wzeeah29WdtkMXhnRnHLSCk5jpXu3o=; b=GwlTeJMZOKb9aWL42mhM0h/X3wvzxydg9h0QphYlm+/jOd2w37WoZVUwFjbGgnPUJDNkSy8OPN4fY3ioYVaIMEl3X5YRGDMU5GcA1+Ji2dA9xNXI8yUfrEiGfum/1i4OdTQqOrMhO0gibaPKetCvFgClOpNveNL6sFwE49TROeI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406368997628.7446887383883; Sat, 26 Sep 2026 00:06:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMQx-0003az-N2; Sat, 26 Sep 2026 03:02:55 -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 1xAMQJ-0002qc-PU for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:18 -0400 Received: from mail-dy2-x10.google.com ([2607:f8b0:4864:36::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMQI-0000VW-2D for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:15 -0400 Received: by mail-dy2-x10.google.com with SMTP id 5a478bee46e88-328664b752eso1044380eec.1 for ; Sat, 26 Sep 2026 00:02:13 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.02.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:02:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406132; x=1791010932; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=z8w8edACRSxH2Wzeeah29WdtkMXhnRnHLSCk5jpXu3o=; b=UEGzT1+343VJ7iHNAUZOIY1aR1Vx+cCNTrEH88uZCtBybuo9kshhnuES0NftgY4yoi M471ejhHTtdRSKQTsLgQkMwoaYnGTZ4wzXr0V+98mJHCbdd4X7QiqDcQzWSEX513atgB EXbC+WZTdd9taNqT4j2gIEs28VPenL1zUe+T+7YObIcwkkli+iF8QroKGQfAskiLN5d7 Tvs/4DYyPMXI35i1IxmdZ/mUJuiHDZ8LwzTp0rri3NiCrJd37lO9QFLNO9emOObDcWrL TYgkYHriYQaqr7zgKz+VZHPBYwDgPQK2Wew/j/5RUI/cgZDOFFZyXMy+tuwIKpk+6c7w QzaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406132; x=1791010932; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=z8w8edACRSxH2Wzeeah29WdtkMXhnRnHLSCk5jpXu3o=; b=QnioNyaWIkmcnPAM2+8bzD1ulTwzBjDW911pdGJx75rRNaw+TvEfUCLhcJ2QLclXsO PsJONzfzWKHUB82lH95bW4ryd9jMVbKAjExDEf3i7a7q6vpIAb4pBtD2MJku5x+D19jK HITMWkTZk7TPk3i5nTrqA2fE+dqfCGm1nW/s2+z1Y0JNZ5j7SSzoPDXT2LcabnQ99jCw PqU9+P/HU6rKwMFaoRidI7I1BS0WeDyhS8yvijGiMWM+tNUzKnxcPMRXRxCuZZtiDJ0M HpjCf8L6gvnHLlFPUvsuYIfMybIFixR+49tLHhU4QK5FOFyFXi5RNZbz5JmzBFKegD+k iWOw== X-Gm-Message-State: AFuF++lDRsRjRaN0PWF9MOQKBP/AEh/wlC6AgZdWSWsmuEk+/6gxZR+j v/Esu3u+PNrbwB5Z1IG56l1WciQ8ij+0if2uIixLWBnmpKaYnm11jQL9/4y9AKrB X-Gm-Gg: AYBFou1vky/Gd8lc5nVBmJ8kj3jTQ3CMJudO1+0xTfvAGmfL2mGXVGrK+1jkukS4bIT aZV+LxJo+CX141ljSf/Zmr6dulBorMinByRn/v4GwjVLlOIs7JWXLohR3lcykbXCZQGKx4fiQ6C NIqIW2LKxYTattIEtzB1n4IAVbPLk4w3EO4RH7/NZRbBvtlN0ALWTIfmNYeey8IxLR8lpQ77p1M RC4eXbQ236ni0lf8pU467YH7sW0vqq602D63feQGMORda+Tf/cTMQ8utVIKFeq8Z8qDNbxFkFGQ f+LGxIHrCT/QmTkXt3cZCOHrVqBjw2mR39kAlJq5l+e6GgCiHkTWqmLmGGXwkqMsFqEZxysOwBs btH6kosP40clA23nuNPDOH3TRJvN+mTu91UkHYgVoUL79AKNLXKDFtwvrc8VZXMw42YKdMVfGdG 1pIHi2GsLLtG2TBVelGVbPEvrNImMw7HK0K+MYoA2k2WVr2NQjahKwNeT0XphwgxdpMsLWVFmnK gEEjNE3iv3M7pi/hZDs34cUL56nDqA= X-Received: by 2002:a05:7301:4887:b0:33b:c2bc:d288 with SMTP id 5a478bee46e88-34272e5e6a3mr2167820eec.35.1790406131848; Sat, 26 Sep 2026 00:02:11 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 17/55] target/arm: replace target_long in A64 translate Date: Sat, 26 Sep 2026 15:00:16 +0800 Message-ID: <20260926070057.1234-18-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::10; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x10.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406370951158500 Content-Type: text/plain; charset="utf-8" - Change gen_pc_plus_diff and gen_a64_update_pc to take int64_t. Family-common has no signed target_long under -DCPU_DEFS_H. - Match translate.h and the A32 gen_pc_plus_diff signature. Signed-off-by: Yonggang Luo --- target/arm/tcg/translate-a64.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index c60f4c4103d..a9b29583f43 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -184,7 +184,7 @@ static void reset_btype(DisasContext *s) } } =20 -static void gen_pc_plus_diff(DisasContext *s, TCGv_i64 dest, target_long d= iff) +static void gen_pc_plus_diff(DisasContext *s, TCGv_i64 dest, int64_t diff) { assert(s->pc_save !=3D -1); if (tb_cflags(s->base.tb) & CF_PCREL) { @@ -194,7 +194,7 @@ static void gen_pc_plus_diff(DisasContext *s, TCGv_i64 = dest, target_long diff) } } =20 -void gen_a64_update_pc(DisasContext *s, target_long diff) +void gen_a64_update_pc(DisasContext *s, int64_t diff) { gen_pc_plus_diff(s, cpu_pc, diff); s->pc_save =3D s->pc_curr + diff; --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406376; cv=none; d=zohomail.com; s=zohoarc; b=ECY/rMzoV6tfCOMnkVJ00k6/KmSXxROLjXweNV0qHvevQc5eoeHrvxX5SV0OBWR5V2E9ZP1hoe34WpTptSTBvxmC6ptNDN1WkRy5AF1JGuAEm8quS1tFBqkZcc57snfk8lvfPtWJ0R5ujAk38uDoaKOSwFTUXtWl1NxXbKS3XWc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406376; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0gM6IoquW3yjdS4WUjO1V8C4p7BWFFY+pJ3+gr7qZBo=; b=SxTBPfDIsg9EJjl6v5SWCWpTjR5Pv5B8NMGwMz48jUPAAlH4W5zZMMOXm0O1q3Fe9bvmQQCDbpc+N5JgtywAq4sViTsyjgbMVhPjz8F47dBsxFoC1nO2Bq1DnYjRPud4FK2etx2xN7pOy4NfkRLgp/sKBTyUxCzaVyfjIGN8QQE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17904063764101014.8656913388572; Sat, 26 Sep 2026 00:06:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMQn-00030u-Gf; Sat, 26 Sep 2026 03:02:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAMQO-0002tz-Bp for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:22 -0400 Received: from mail-dy2-x0e.google.com ([2607:f8b0:4864:36::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMQM-0000W9-38 for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:19 -0400 Received: by mail-dy2-x0e.google.com with SMTP id 5a478bee46e88-34182b58c7eso1211313eec.0 for ; Sat, 26 Sep 2026 00:02:17 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.02.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:02:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406136; x=1791010936; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=0gM6IoquW3yjdS4WUjO1V8C4p7BWFFY+pJ3+gr7qZBo=; b=HG4Z15uh/Ia0V/nw6BfPym3kXOYetEoOGc91OoMxzYk+Uz1TMycm1r5bhONfpD5B9y hkNOFzKlwENFosfkyr3n24QpptG7BxDHOMWXdotjSqd3l7EI61w42ss+g374HUq35KOG ZnfsZdTnUW+GCpAxXiorfixCBc/8Zv6O2WiQhw6ds8MdouWTbsS12Atd5x7SWexPEcQ8 J8yl58VciDNpSo1j4Y2cz8joLWSxBaGWYi/brzbQl4tm4i+sL6d6770hYZYqFIwDY3EN ypu5QRfJu1pEmYzYRtRuckgT0hHRwGLh6htfIuMx5C4lcKTHtTUNHjj1JhJRw4agk3t8 3OnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406136; x=1791010936; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=0gM6IoquW3yjdS4WUjO1V8C4p7BWFFY+pJ3+gr7qZBo=; b=vauVEykmKqjBHx2dJY51dV8BWnlnwLnN1TYZFhyVM1P1NqIYT2BQa5ECERtXE6u+Og mKHOno90Szadfr3IMVp9E+0zQ+Nkyg18s/rHbR44Lbf7yfnpZ0N1jRexGfmXQ7842UHA IHibos8ZlmFc83oKLzmIXpkFv0U9yTdPoiinJvwEBg+xxTZWbzGdA+6wD+fUPmS71PSK sOjF2f4ONOdmzFckON4Oo6d+HvbMVTwZk/vFzWHpDYZ0m0wCMbPJCO+3udWWRPXb0iCO ZaLk1luyadP3fdVz6RsYWZ/9v85JPVp2iQ2+un87eoNeOJryXxUVH9XwIll114X36mpX h0nA== X-Gm-Message-State: AFuF++mmJmEGyFP95fH1t1bYI3urxf0uPbe/8z6vz4MK8GPFQkn8wCsR CpUYvTmZBocOcVAYW1qimsm9Zr4yd2UpXiPX8u0H18eGVXKqZovHIGL75Cvjd5QV X-Gm-Gg: AYBFou08jcCOtJ2GMqWCsk841OJI/UwzDkXyVg+vQ0qPFM20zHddEn3djiOng8bIfd4 mor34cJQHY4jPsw5Y1DRoJXnTyQovrpWIpFtbyPuUSMGdXaKDLlbG6EF5GkATRbEz1F19jqRAu+ T1IsqG5Fv6RQt8fAED2lzLphdLhg0K9E+qsI+DaLN33oK85VIDIGgWjjbqAhP5uhmEj1ZyznoOX oidt6j9oSL4m97PMlgsdJWx2ESIbwrFB6WptQlD/+zpYC2fMyoCEQ/HwqgD2Oi0FwNyS2HXxq9G 3qpZh76WRl2aFtijHSfZpRmfyKal6sHflD9i0MKCzmAQbchHNJSiV/UfAvYAq1DpRTrkKU9hRH2 Xfr5T62iTmRdbBdZtUC26qdGEx3fiQgwsstbtSI9l1cQRU3huCpPSbWbnG7sX3i6VRJFQkk9VVA 372pf5fe+i1P0sJAOmPIgvJLZLNc0/zSJUPhtxKjYr6MQ+aLAzxvU3wjcPiuKP4AvAgP5e5AJfQ Wps3w0ZzYM7ExY/cbplZ2Iu/HxR5QU= X-Received: by 2002:a05:7301:a2d:b0:33c:e82:70c7 with SMTP id 5a478bee46e88-34272b598d8mr2099056eec.30.1790406135670; Sat, 26 Sep 2026 00:02:15 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 18/55] target/arm: use vaddr for the A64 insn_start pc Date: Sat, 26 Sep 2026 15:00:17 +0800 Message-ID: <20260926070057.1234-19-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::e; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0e.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406377007158500 Content-Type: text/plain; charset="utf-8" aarch64_tr_insn_start records the guest pc as vaddr. Common compiles have no per-target target_ulong for that value. Signed-off-by: Yonggang Luo --- target/arm/tcg/translate-a64.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index a9b29583f43..50c2b491ce2 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -11115,7 +11115,7 @@ static void aarch64_tr_tb_start(DisasContextBase *d= b, CPUState *cpu) static void aarch64_tr_insn_start(DisasContextBase *dcbase, CPUState *cpu) { DisasContext *dc =3D container_of(dcbase, DisasContext, base); - target_ulong pc_arg =3D dc->base.pc_next; + vaddr pc_arg =3D dc->base.pc_next; =20 if (tb_cflags(dcbase->tb) & CF_PCREL) { pc_arg &=3D ~TARGET_PAGE_MASK; --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406555; cv=none; d=zohomail.com; s=zohoarc; b=ERkK5RNArKmFTQ6JlLOw/dtqugBUcVt7AOJindzppS8IU0vlFDqXcJisTqDiNlq/ZW89L+SXrq32asmYvCKCXgBIoRRbho2LPyNvgH/S21Cbit7/wbvcSa1sdDXtB0u5kY0wEwn+0QKkdqR7s6iKhyb7rTKzYq3Bzr/hG6wE/7o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406555; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cnOA8ZdlJhQBU9fK/Dc46VHKpyYEAW7BmSzf+fIYK8U=; b=gOoFbubJ9gUA1S5af7uCKdNprEy3j5xTU4UqjfwIa6hiV/96cQm4Nex8gSCTRwBBun+VNydk3YfzGjJovj8M3BwCnJ6DK6DKj0Fy76qY98H6hX81tZ8NCYFUyn+5hgBD0WW6ZlAzvqcpV/Kbo9NnbrOqFRoDnmaI9VvmqhnkrHk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406555886668.8646259319954; Sat, 26 Sep 2026 00:09:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMRW-000505-T1; Sat, 26 Sep 2026 03:03:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAMQQ-0002um-NG for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:23 -0400 Received: from mail-dy2-x0f.google.com ([2607:f8b0:4864:36::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMQO-0000WL-Qp for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:22 -0400 Received: by mail-dy2-x0f.google.com with SMTP id 5a478bee46e88-33c24422d4dso1848985eec.2 for ; Sat, 26 Sep 2026 00:02:20 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.02.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:02:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406139; x=1791010939; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=cnOA8ZdlJhQBU9fK/Dc46VHKpyYEAW7BmSzf+fIYK8U=; b=hLCVojOyBbJuug6b9FbaKVPAe2fmG1oSsJc9CZr+sNkGCAwuL87fwRxfLj8WrK66jc TLPvfWlBxDbJsfsbUgERNyH4Hewu/TluzaAxM0MjxMDhcJ6CMy5/kJGztbf77bUgqtOt 5Z9vnEmBQ4couvSOR0J238zq7JeY4xJLfWregpCJKlNqTmisK+EiWNBpLZ+YBhpEcP0f IhKaGT8v8fSERr47rMXtEZdGwlT9xP10p74R7Rso6V58x3gqj23ztwWgx4DSx5LPA4hK jezRmLrhbyW0WXNfY4Q+ci4fxzxB8w4ti04KzcU3LfpRDkMpbwh4H1xrR9VQE3MrJnVi H2SQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406139; x=1791010939; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=cnOA8ZdlJhQBU9fK/Dc46VHKpyYEAW7BmSzf+fIYK8U=; b=LvfYU95LajpRQbBG66a4EulWreYvnMinqC4dptApkSLo0HUiOsTrSms+tEXkQUH5N/ oaERNrF6ZaPpTexmptmSO302x5Q9yGnQY/LjmaQLndDOz1Res5LpsJ+aXheWVVg+Ff7p YCt4LVgLG99USKxJLN6feIGUnYxWy9CUtmqdFTCH4UCtJCxQi/ZH1ERayOi+3OQoVsZO 10EcCp83gdAskrFjLZcaeI0WuBjTa+8w3B5pfh63yUqjT8EP2L9N8nGzGzDWoOJ3dQEa rgWdQ1Nc0LaOb5aaNE8uBEfy9bNqCSdVsx7yOmv7muyCWodDv5uRbBKoIBaljaN8uJzO Ds2w== X-Gm-Message-State: AFuF++nDG3y09EIESu6fuuej1wD711D2zHv3KWenAaYWYb80wypyiRUK XsAUyZq0NQpAke+aPDIoYGbORGPaqwM6P9xtnM6OhE074XDCWvpYhsj0cfKKRi/R X-Gm-Gg: AYBFou3tgxrfNNRjWYBqZM7S/Nhn0YzI6yschlL67a7PKTUsMxml3WUO4BEiHDrZ81y OKIpcSPMvGlAb2ZEfmHfVSYkKJw+366EtQeAMAL7fshh2Hc8ufo8Qh5F3p6gwkGTppBQu2btjs8 cw+ediyyOJouErLsRnfhwdh28pMW3Esm0EB1Y69Xc0aQRAIs+qGa+QurgGRSifO31gCBeF02nLL j+Gtq0KKnvAzbnbpuHxdl82yHk1u9HawcpZUNrYG4T/4oZB1f617Df5kZShQ2QU/6ztjt3ZZzkY Q1oGGZ0VnagRF1Gluq3/2k6PoFKv85jhXDLj8qPZ1hDHlM/1Nsiv4Z0eUy1689tu5MHmQSzZaq+ 1hIXGwrhYWWdVsdFW3WwD6XZdNXxuNOCWsdPbKo+Xxey6BwK8E4nVuENfCihptvj/FxX4nZ0SFv hA4+eN7F2418bhcvM8pR6q/DU2/uGkqv1R6GRAwGZc3jzEWkz4x7qYTrnz2abA32vgjRntOWG6/ FMk/QHVyjGMzaJkH4Y8tT2QvpGdFsok5oEX9PlE5g== X-Received: by 2002:a05:7300:bf9a:b0:33c:357c:d33e with SMTP id 5a478bee46e88-34272466706mr2124882eec.28.1790406139317; Sat, 26 Sep 2026 00:02:19 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 19/55] tests/qtest: raise aspeed_smc-test timeout to 12 minutes Date: Sat, 26 Sep 2026 15:00:18 +0800 Message-ID: <20260926070057.1234-20-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::f; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0f.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406557680158500 Content-Type: text/plain; charset="utf-8" The two AST2400 block-protect cases walk a 32MB flash 16 times each. On this host that is about 220 seconds per case, so the whole test passes 6 minutes and meson sends SIGTERM at the old 360 second limit. Raise the slow_qtests entry to 720 seconds. Signed-off-by: Yonggang Luo --- tests/qtest/meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build index 8c53bb2e30e..aef99d2bf52 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build @@ -1,6 +1,6 @@ slow_qtests =3D { 'ahci-test': 150, - 'aspeed_smc-test': 360, + 'aspeed_smc-test': 720, 'bios-tables-test' : 910, 'cdrom-test' : 610, 'device-introspect-test' : 720, --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406198; cv=none; d=zohomail.com; s=zohoarc; b=OeWm8nfTa/W+hGTmKWJECb2+4SvCCLzxeSMW2AyVulRDXpKCSyfi2uh5LJVNaf3XWcoTLAyhmIev4woCjKahkn4Uh81+B1ggGlrWkjPlcMnIkSWxcQDplXRP++qQ6nVepByemVkxM8gdqb6Xi3xGHeasm5e72QTM3l6WOo9N2cg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406198; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=HJ9xRfE2HEWLds73Pc52p76fnBhp2O12QLdWppftCGU=; b=cZPLiglSk2jFIUbSBWT0mDaOw/knu/r0nuKhVHCwaM9qE8grzcPYSTiKTsB9/GRKV7hUwSuY/ELU/zf67YIiD7my6MjBnPAuQkcn/8D4m3nux1gVE33qefjSGTaoSyGoW0K7F2pxuYMllrbQUWf9JQzUeUTOkRcMP+rAJX4tfk0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 179040619849630.470356283927913; Sat, 26 Sep 2026 00:03:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMRB-0003ub-4I; Sat, 26 Sep 2026 03:03:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAMQU-0002xl-Hd for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:28 -0400 Received: from mail-dy2-x0d.google.com ([2607:f8b0:4864:36::d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMQS-0000Ws-TH for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:26 -0400 Received: by mail-dy2-x0d.google.com with SMTP id 5a478bee46e88-3437a48f386so61915eec.3 for ; Sat, 26 Sep 2026 00:02:24 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.02.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:02:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406143; x=1791010943; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=HJ9xRfE2HEWLds73Pc52p76fnBhp2O12QLdWppftCGU=; b=rGKhM1ZI3bGPzs54BNW7N8vhgl4jGGpP8+x1cT+FjVD98GnomgP4l4UVCWCSl1hYzQ CV98aIOuNI+FJMk7lur7KV9RiM93g61CwyKtKQgY3WVP91hth0A6b6GdT/8qyENywW/y 9ZsDfFhVY1BLw1PXu+ItZloUT/3pXwNbzRrsy3U99et2LI9dMXmtd7e7Q0iHaCWeZPv+ zN1rqNpjlMGlyZu7eiksnrE+xD8JXrC8asvG8qK3WKlMdOm/gIUTL2b1kZi4dl17RrPQ GMQtkTIh0mYslnL6E0f8Qkp5vAcktbBTuHmMlKTbWqSQQVvGM0494jwTsp5aQE10U1r4 eE6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406143; x=1791010943; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=HJ9xRfE2HEWLds73Pc52p76fnBhp2O12QLdWppftCGU=; b=PiWbCbV3OXCcjvFIoN1DiHVmN/qNqFQuluzJ40ToqRgcKzBGez+Z/OC3yBZm2KaC3s kddRxlfSbgHTSN+VXr49DWZMlTqiitCw605Qy0Pb8wFH5k6T7HFXaJ5OcJUUJ4K9/ao4 LtucQfil+WvTE2Y3EvesXAm9bKPIcU2Pa3TqHcr/VB6w5L8gc/Nr+0Zh8nbTVGNQClEl 38O2mYMPtCuVyQe11KX9Q0HZmgcViEyXtHx96nta77IrV9R+/8aoLTxBWHHt9JdIXo+X t9tcjsNzWHMfhIhZob7tz8bmyZA4VkrPZn6EGnqz/5RqjtWkZSKP6PO4EilO1R6JYeUo SkSA== X-Gm-Message-State: AFuF++mGI46gE+JCLFg1ejQSS0BoG7xt1uMcug+GTs+ukqlPTEedV3l+ 67ut+XV/VRyxHJQvyD6uAzkUmOesZ4QHfkXJVA6ZPAnzM5fQFAZqoMEfk4FFfOcu X-Gm-Gg: AYBFou2lOVpDRLwbkaT0cTPAxnqCZWnWuDWjeZ/e+MJQ+tZlGoj9OqpS8LwRGmXwSIq as2i3QqPML3G/Rs1mm9L7z5wJ2nHbB8RiWGAQAconL2PRwzS4FIuc9dsNbi/MgugHMzsze4EWwv jkc2DyLaaNSW4kf92qXa7xky6pmMT6XmQDgUFRNZSC7hiNJeXwbqkzS7YofIklZhzpsulPIA5Pp 76Ljj6llCmkAo3kVANt1BBqwcHNXx07rkgXJIL3yBMxsD/2WbzdGrn5BuhW78WSnThofIso1Vcx c67Ca5IEn8p59w1Tes5zrYZve/2qiHZPlVHNUeBt8Iv1nsprncXdVVznCadfcrzvfSA6EBcBunr 5DyWNO46bHY/CSY/pk/60+42I4D/QE7zlxDfsAOzFQo1e5qyc4GFsLFMqudKQzzKGHasdP0MP1f w4/lJxL3BCdOT9niikrvrwY75leCnsLIQNZYT2asrpyJU0gWyiYnB+a5wRambKc+oDbZfB6I8ct 3USq7tXIlC0Hff05kMSh8En3/ChLkA= X-Received: by 2002:a05:7300:fb10:b0:32c:5754:97e8 with SMTP id 5a478bee46e88-34270ac3a45mr2183384eec.13.1790406143522; Sat, 26 Sep 2026 00:02:23 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 20/55] target-info: add tl_is_64() and target_is_tl32/64 helpers Date: Sat, 26 Sep 2026 15:00:19 +0800 Message-ID: <20260926070057.1234-21-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::d; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0d.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406200398158500 Content-Type: text/plain; charset="utf-8" - Add tl_is_64() using TARGET_LONG_BITS per-target and target_long_bits() in common builds. - Add target_is_tl32() and target_is_tl64() for a TargetInfo. Signed-off-by: Yonggang Luo --- include/qemu/target-info.h | 28 ++++++++++++++++++++++++++++ target-info.c | 10 ++++++++++ 2 files changed, 38 insertions(+) diff --git a/include/qemu/target-info.h b/include/qemu/target-info.h index 3bbe1d9b607..a5dcf60dd9e 100644 --- a/include/qemu/target-info.h +++ b/include/qemu/target-info.h @@ -34,6 +34,34 @@ const char *target_name(void); */ unsigned target_long_bits(void); =20 +#ifdef COMPILING_PER_TARGET +static inline bool tl_is_64(void) +{ + return TARGET_LONG_BITS =3D=3D 64; +} +#else +static inline bool tl_is_64(void) +{ + return target_long_bits() =3D=3D 64; +} +#endif + +/** + * target_is_tl32: + * @ti: TargetInfo to inspect + * + * Returns whether @ti uses a 32-bit target long. + */ +bool target_is_tl32(const TargetInfo *ti); + +/** + * target_is_tl64: + * @ti: TargetInfo to inspect + * + * Returns whether @ti uses a 64-bit target long. + */ +bool target_is_tl64(const TargetInfo *ti); + /** * target_cpu_type: * diff --git a/target-info.c b/target-info.c index ad93a4b125e..1bdf3869605 100644 --- a/target-info.c +++ b/target-info.c @@ -76,6 +76,16 @@ unsigned target_long_bits(void) return target_info()->long_bits; } =20 +bool target_is_tl32(const TargetInfo *ti) +{ + return ti->long_bits =3D=3D 32; +} + +bool target_is_tl64(const TargetInfo *ti) +{ + return ti->long_bits =3D=3D 64; +} + SysEmuTarget target_arch(void) { return target_info()->target_arch; --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406683; cv=none; d=zohomail.com; s=zohoarc; b=Z4AZzL6QeUZ2wPSltJtGZSKtiYHtt2f3DcgJYzZsLTsm8A1cqxVHQ2Nf61HlVUCoLPM1HdLQgutAC+JwDaSuKJb3DPSvFsdWXiya9QvKkHZa18oLpI4xxJAVbYEZp+9TU5x4bZz8K4MCSp/5FU3Sz5at2SKtywwlwPOdvF7V5Sc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406683; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=bqOXJpcEbtCWrtmJAKf798JnZn7rLuJzP3qPIyqX4mA=; b=FkAV7C82nZNqWlhV1lwyzhibZoHbnL7vqLxO93yzUFTAjAQuTA69OorLA1wF8nVRf1erAuwsahfG3BmJWe9S5oXoSUJZ9HDGxlScT8LymBwdIBu7UNS92bZR0a/RThqEn/XyqUMHnR8hX0eex8tJ5p5rv/rpjIYlafAl4q1Ugdg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406683436352.6768116669904; Sat, 26 Sep 2026 00:11:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMSP-0005eE-So; Sat, 26 Sep 2026 03:04:27 -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 1xAMQY-0002zF-Ty for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:39 -0400 Received: from mail-dy2-x0e.google.com ([2607:f8b0:4864:36::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMQX-0000XH-Cs for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:30 -0400 Received: by mail-dy2-x0e.google.com with SMTP id 5a478bee46e88-341d5303884so851850eec.3 for ; Sat, 26 Sep 2026 00:02:29 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.02.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:02:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406148; x=1791010948; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=bqOXJpcEbtCWrtmJAKf798JnZn7rLuJzP3qPIyqX4mA=; b=dFak5TnLLiE9fAApJ4CNLEeFTiFRsJpL/QhNzNqcXqjXVprirz/5Wm61Xyud5uI/21 ixa3keF6W+nmjuUA7khFVAT7Qe8KhvEU84YWIHkrsWkDI5h9umzL5gOQd5TBn3bxjKLo MT2BZVY/TKay5TfYShZ7IOZxOObYxtdc1kxTTbbU9/40HMEZamzDUMiV/V3mMkmYIt9G 4KZAS7Yb54WtmkrS25ooGvtm2cRHcvz7IrpETy0E944USrBV/Z0gSR52r0O9LFtlqm9A NWh4KX2tHIdOYxTHs3UxQvRTasbVnLY76itWtrmd87IUBDZtM1wqBKv8LgEjEdvRKi5y PWRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406148; x=1791010948; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=bqOXJpcEbtCWrtmJAKf798JnZn7rLuJzP3qPIyqX4mA=; b=NPIcf4g4xbz5cR7tnV3BTCMZV8pxMNooRPxZ8gUtyGPyBGF2hA40Yt0EadGjef+f/I aW6WOBrzIScAnYnsR5HHKr27AWX7ZLk/ryUxK0DqXmUkPhWoEEBv6tFvutvMtR9Bc4QH aMoCLpvjSbDF2N9NDslDF2EPx6teTSHdzW+zVBpAmQ96u09BWoSzid4BKRkd0guffyjA XkMTZEizGAT552hjpRJmUwXzRee8ixV2ARd+xBA4uO1nOCEo0uMinoTx5cfsCyAt+2Fg kXja48VyxvaCNNtXmfrfMOCmvqsvOATxBvISNNFyNPSPRP11YNPCIZlXF9EbtZzEbeaH ugag== X-Gm-Message-State: AFuF++lq5JtB0gpuxTTfvqLnNruz3Tr3aDBagB8AaCR9wJAPa9RDa9so FmTTSMe0tZpQBJJIomUpqi0859cEJo+thjRb/pJCstQGcJG8ZHBLtwy16LXVsQ28 X-Gm-Gg: AYBFou1S7boJyJZ6vDCIWRcP0D3Kh+keygzNp5cgoMDpzFZ0gICPQvXsmcoFBl7CxRU Unn2d71eYWA+F+YRcO5CcgmTGoRuMgEpajaJHove0okvvkQtjc+JZ7Nfdb0Re8dDczJ5rctY6RQ DNzm/HFN7fGdZwUPFAsN4GI6D9FN4KgwONJinanNv+lVzyO9w9o/Hrw3AG3trJl3Vfyz22RcR20 c+RPjkhUuQBNqMGhpIJ9+M0FVJIb57KkwJTnLckE1b9r0rjZgzEQHFzQrvh3Ngj1D9ZlrVo6Ay+ eFvnzWQ5JJKBSI4Z5h8+C5hnohTeCyQ+sxd7DnaBjcTqKrCfp5UjmfITSqMdZ5QIcAliPEz0SIT C6LLN0K2vC0HSd5VXpu1QO6sfjZyl5fc4/fx5fn3TAU3kjAg/uEGO7q2yIIvt4kIE61mwurg4b7 Ajgh468cFdz+Dm4SwOGrsmGSxtSMvv8szhm4Bx5INO19IAOQc8LByFO5cuturz4ZNC77OJKX+BW gBeBslmxtRtRdjChJj7rWnDa6AfgZs= X-Received: by 2002:a05:693c:26c9:b0:328:3944:ee53 with SMTP id 5a478bee46e88-3426f9bf753mr2045145eec.2.1790406147406; Sat, 26 Sep 2026 00:02:27 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 21/55] tcg: declare TCGv in tcg.h Date: Sat, 26 Sep 2026 15:00:20 +0800 Message-ID: <20260926070057.1234-22-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::e; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0e.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406684231158500 Content-Type: text/plain; charset="utf-8" Move the TCGv typedef into tcg.h. Per-target builds keep it as an alias of TCGv_i32 or TCGv_i64. Common-system builds use an opaque TCGv, with TCGv_tl and tcg_imm_tl beside it. The tcg_gen_*_tl macros stay in tcg-op.h. Signed-off-by: Yonggang Luo --- include/tcg/tcg-op.h | 2 -- include/tcg/tcg.h | 22 ++++++++++++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/include/tcg/tcg-op.h b/include/tcg/tcg-op.h index 37211642365..6835ad97901 100644 --- a/include/tcg/tcg-op.h +++ b/include/tcg/tcg-op.h @@ -32,14 +32,12 @@ #endif =20 #if TARGET_LONG_BITS =3D=3D 32 -typedef TCGv_i32 TCGv; #define tcg_temp_new() tcg_temp_new_i32() #define tcg_global_mem_new tcg_global_mem_new_i32 #define tcgv_tl_temp tcgv_i32_temp #define tcg_gen_qemu_ld_tl tcg_gen_qemu_ld_i32 #define tcg_gen_qemu_st_tl tcg_gen_qemu_st_i32 #elif TARGET_LONG_BITS =3D=3D 64 -typedef TCGv_i64 TCGv; #define tcg_temp_new() tcg_temp_new_i64() #define tcg_global_mem_new tcg_global_mem_new_i64 #define tcgv_tl_temp tcgv_i64_temp diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h index 7669dc1c2db..7790228eeef 100644 --- a/include/tcg/tcg.h +++ b/include/tcg/tcg.h @@ -179,8 +179,11 @@ typedef tcg_target_ulong TCGArg; * TCGv_vaddr: an integer type wide enough to hold a target pointer type * TCGv_vec : a host vector type; the exact size is not exposed to the CPU front-end code. - * TCGv : an integer type the same size as target_ulong - (an alias for either TCGv_i32 or TCGv_i64) + * TCGv : an integer type the same size as target_ulong. + Per-target compiles alias TCGv_i32 or TCGv_i64. + Common-system compiles use a distinct opaque TCGv; + use tcg_gen_*_tl. + * TCGv_tl : alias of TCGv for helper-head glue(TCGv_, tl) The compiler's type checking will complain if you mix them up and pass the wrong sized TCGv to a function. =20 @@ -203,6 +206,21 @@ typedef struct TCGv_i64_d *TCGv_i64; typedef struct TCGv_i128_d *TCGv_i128; typedef struct TCGv_ptr_d *TCGv_ptr; typedef struct TCGv_vec_d *TCGv_vec; +#ifdef COMPILING_PER_TARGET +# include "exec/target_long.h" +# if TARGET_LONG_BITS =3D=3D 32 +typedef TCGv_i32 TCGv; +# elif TARGET_LONG_BITS =3D=3D 64 +typedef TCGv_i64 TCGv; +# else +# error Unhandled TARGET_LONG_BITS value +# endif +typedef target_long tcg_imm_tl; +#else +typedef struct TCGv_d *TCGv; +typedef int64_t tcg_imm_tl; +#endif +typedef TCGv TCGv_tl; typedef TCGv_ptr TCGv_env; =20 #if __SIZEOF_POINTER__ =3D=3D 4 --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406371; cv=none; d=zohomail.com; s=zohoarc; b=m0E/W1a7HyQPnPmrGiQxcSrrkgav2AxemvMP/MEXeCBlf008D+2GHcGYLuTdx5ARRaLAns0Sgk8Ye92XNISeRI6YcnVpcZeSx3O56Ub2E9Y3C0uRlgEEvFvFhI5JTlJPEteZm5l8BPtB5ZfIbvLEcnMIxhi/r9g1Ub8ZKUmg1cc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406371; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VtvK64eD6Oei73yOgbqEAR1VlYxIZN+qs4TLFfACmJs=; b=C2ZS+n+17v+wcZ7+ZE5KPgV56MLMDeaOCdFZQ6vCG27UnhHrrhzyqOVXtsQNewMop7F1tGFx20CJRChsgS5orEzNzRrLmyWFSBuoRjU1WxIEkcp+Xel72dkJfA2j5sc3HVGdT5XcshtUKi87cov8SSoDMOfsP4YygP06uzVJ6V0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406371981413.2335559243602; Sat, 26 Sep 2026 00:06:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMRH-0003wx-3C; Sat, 26 Sep 2026 03:03:15 -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 1xAMQe-00032Y-DU for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:41 -0400 Received: from mail-dy2-x0e.google.com ([2607:f8b0:4864:36::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMQb-0000Xe-C7 for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:36 -0400 Received: by mail-dy2-x0e.google.com with SMTP id 5a478bee46e88-3413069aa25so879077eec.0 for ; Sat, 26 Sep 2026 00:02:33 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.02.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:02:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406152; x=1791010952; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=VtvK64eD6Oei73yOgbqEAR1VlYxIZN+qs4TLFfACmJs=; b=UTL4vhAlsOO8CHFfYWdN+AonVgzM5ZE6jRwywXS7iGUETB4nJA7/o4++LIXkHjMwHq gtKSvTQdYLMqunNghd1HzncyBF/rhdBN7VxP/+FdJXjOApCR6NONQy8gChRR9fj3osp+ QR76AkgC1mlRk1bScI7IciuOx7bUoAg2PSCLAn09wj8+9hh7tv+PbTfNr0hHLRYoh5IP vzBgRHzqhS22vV5YkdeqnLeNokmZVNHmvxWqAyTXuT9COe8mxFIM6U5mwdEvNbhc8dr6 NsjDz3gOVmv1tzlEpZuPt5sc+om+ust5C4B8bpLJMpHEunj+jsTtPJHd4k4Ib/a/SQKe jk4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406152; x=1791010952; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=VtvK64eD6Oei73yOgbqEAR1VlYxIZN+qs4TLFfACmJs=; b=q+OrErPYD0eONi18tJ2S9KfGTv/fs9WIDW52X67iHZHu+eTjvk4RuS26g4433uLzbl zYiODhYWOSLZmtW80x5WeRHXxv4DRIlhZBo+wis+IRcR0OPBlPLXpwvStcgkibukNNS7 Fll8hmPCGHx7SceVy5U6KqzFrlnZj37ekPVw3RGMNs2OzmSvLTflh0qQZvi5BY7TiSWS fKAQnu57CD+4xWtRDRgMUr4NEkqnr05vEVnwbT3DjsYabIVYd+5LTxSqDjyUsfi7Uuys TZ3WPdsxRBZxCh9mhp5wbDP28hXoHumPubh9LhYu9qNSO5dujP8TCWzZsg133A6ZEjRf DFQQ== X-Gm-Message-State: AFuF++lWenLC1RYuHM8Kxd5XFHkcYq8aIYZBpF/wZAtE33YAoCpxNh1/ /MHN4t+1+Ku8AfCs2X23KazDoLUuM846ig8v6IiJUcc34csT+F/06OWXm4D+TY7h X-Gm-Gg: AYBFou0hNqeQib05dQKqbhu6W1DRd0PqxwGKsyksVMz4xc6VaZbF3GWaep/FA27mouN ytlQb82vxXtT7qJPtgSgI9vXZ4DdAbXl6VdsJhd76lc9+P25opP7hZilr4tyfUzq4C4cpHqY4xc c97dGAnlNmTLkGw+zvb5tw5NLViagGJ3wXby1Uvg0ngFGKMDU7Sk6+9dNzIDr4p8O7jBIXgq+IQ V94kFvGTlAJQG5f//fCIxSYBlIgy3QZZwEAnC46J2ni6OFz/etlLduqV3S5gk8/yrhH2WqRvoBY UfsuqGgqQU+d+BSCeomQZVWY6NtswlzGJQ1+yH4OVYm3YtdBrg0BmSPlK7G6Z7V3VgbeEFcPV2t /F5lVdGtNrV/8bp7jm64DGjytsNXvmq+6bt59lNez3eX6Ypsem2xkr+9AKd3gKS1YyRY573OVbU VF56aXkUWMD/C17fNM8IDjgsSxMJv7Gb10PYLBrfP2sVPRFPDLiYe1AMtQVdm6puDQsFwkSQpR9 tJxE9cGv08Uid6cdRw4GfNeng+4KRw= X-Received: by 2002:a05:7300:3b28:b0:33e:6b65:5eb6 with SMTP id 5a478bee46e88-34273c40a64mr3037346eec.30.1790406151876; Sat, 26 Sep 2026 00:02:31 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 22/55] tcg: dispatch TL memory helpers from tcg-op-mem.h Date: Sat, 26 Sep 2026 15:00:21 +0800 Message-ID: <20260926070057.1234-23-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::e; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0e.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406373045158501 Content-Type: text/plain; charset="utf-8" Move tcg_temp_new, tcg_global_mem_new, qemu ld/st, and the atomic *_tl helpers into tcg-op-mem.h. Width follows tl_is_64(), and TCG_ADDRESS_BITS is no longer forced to TARGET_LONG_BITS. tcg_type_tl, the TL casts, and tcgv_tl_temp live in tcg.h so helper wrappers can see them. Per-target tcgv_tl_temp aliases tcgv_i32_temp or tcgv_i64_temp. The common-build inline picks the width with tl_is_64(). A common build aliases TCGv_va to TCGv. Per-target builds still use TARGET_LONG_BITS unless the caller sets TCG_ADDRESS_BITS. Unit tests cover both fixed widths and a 32-bit VA with a 64-bit target long. Signed-off-by: Yonggang Luo --- include/tcg/tcg-op-mem.h | 114 +++++++++++++++++++++++-- include/tcg/tcg-op.h | 61 ------------- include/tcg/tcg.h | 51 +++++++++++ tests/unit/meson.build | 10 +++ tests/unit/test-tcg-op-mem-config32.h | 2 + tests/unit/test-tcg-op-mem-config64.h | 2 + tests/unit/test-tcg-op-mem-tl32.c | 26 ++++++ tests/unit/test-tcg-op-mem-tl64.c | 26 ++++++ tests/unit/test-tcg-op-mem-va32-tl64.c | 35 ++++++++ tests/unit/test-tcg-op-mem.c | 51 +++++++++++ 10 files changed, 310 insertions(+), 68 deletions(-) create mode 100644 tests/unit/test-tcg-op-mem-config32.h create mode 100644 tests/unit/test-tcg-op-mem-config64.h create mode 100644 tests/unit/test-tcg-op-mem-tl32.c create mode 100644 tests/unit/test-tcg-op-mem-tl64.c create mode 100644 tests/unit/test-tcg-op-mem-va32-tl64.c create mode 100644 tests/unit/test-tcg-op-mem.c diff --git a/include/tcg/tcg-op-mem.h b/include/tcg/tcg-op-mem.h index ea35a02fb40..82aa8a62caf 100644 --- a/include/tcg/tcg-op-mem.h +++ b/include/tcg/tcg-op-mem.h @@ -8,24 +8,57 @@ #ifndef TCG_TCG_OP_MEM_H #define TCG_TCG_OP_MEM_H =20 -#ifndef TCG_ADDRESS_BITS -#error TCG_ADDRESS_BITS must be defined -#endif - #include "tcg/tcg-op-common.h" +#include "qemu/target-info.h" + +static inline TCGv tcg_temp_new(void) +{ + if (tl_is_64()) { + return tcg_tl_from_i64(tcg_temp_new_i64()); + } + return tcg_tl_from_i32(tcg_temp_new_i32()); +} + +static inline TCGv tcg_global_mem_new(TCGv_ptr reg, intptr_t off, + const char *name) +{ + if (tl_is_64()) { + return tcg_tl_from_i64(tcg_global_mem_new_i64(reg, off, name)); + } + return tcg_tl_from_i32(tcg_global_mem_new_i32(reg, off, name)); +} + +#ifdef TCG_ADDRESS_BITS +# define TCG_VA_BITS TCG_ADDRESS_BITS +#elif defined(COMPILING_PER_TARGET) +# define TCG_VA_BITS TARGET_LONG_BITS +#endif =20 -#if TCG_ADDRESS_BITS =3D=3D 32 +#ifdef TCG_VA_BITS +# if TCG_VA_BITS =3D=3D 32 typedef TCGv_i32 TCGv_va; #define TCG_TYPE_VA TCG_TYPE_I32 #define tcgv_va_temp tcgv_i32_temp #define tcgv_va_temp_new tcg_temp_new_i32 -#elif TCG_ADDRESS_BITS =3D=3D 64 +# elif TCG_VA_BITS =3D=3D 64 typedef TCGv_i64 TCGv_va; #define TCG_TYPE_VA TCG_TYPE_I64 #define tcgv_va_temp tcgv_i64_temp #define tcgv_va_temp_new tcg_temp_new_i64 +# else +# error +# endif #else -#error +/* + * Without a fixed TCG_ADDRESS_BITS, the VA width follows tcg_type_tl() + * at translation time. TCGv_va names the address role in APIs, but it + * aliases TCGv because their runtime widths are identical. This is + * semantic separation, not C type separation. + */ +typedef TCGv TCGv_va; +#define TCG_TYPE_VA tcg_type_tl() +#define tcgv_va_temp tcgv_tl_temp +#define tcgv_va_temp_new tcg_temp_new #endif =20 static inline void @@ -125,4 +158,71 @@ DEF_ATOMIC2(tcg_gen_atomic_umax_fetch, i64) #undef DEF_ATOMIC2 #undef DEF_ATOMIC3 =20 +static inline void tcg_gen_qemu_ld_tl(TCGv v, TCGv_va a, TCGArg i, MemOp m) +{ + if (tl_is_64()) { + tcg_gen_qemu_ld_i64(tcg_i64_from_tl(v), a, i, m); + } else { + tcg_gen_qemu_ld_i32(tcg_i32_from_tl(v), a, i, m); + } +} + +static inline void tcg_gen_qemu_st_tl(TCGv v, TCGv_va a, TCGArg i, MemOp m) +{ + if (tl_is_64()) { + tcg_gen_qemu_st_i64(tcg_i64_from_tl(v), a, i, m); + } else { + tcg_gen_qemu_st_i32(tcg_i32_from_tl(v), a, i, m); + } +} + +#define DEF_ATOMIC2_TL(N) \ + static inline void N##_tl(TCGv r, TCGv_va a, TCGv v, \ + TCGArg i, MemOp m) \ + { \ + if (tl_is_64()) { \ + N##_i64(tcg_i64_from_tl(r), a, tcg_i64_from_tl(v), \ + i, m); \ + } else { \ + N##_i32(tcg_i32_from_tl(r), a, tcg_i32_from_tl(v), \ + i, m); \ + } \ + } + +#define DEF_ATOMIC3_TL(N) \ + static inline void N##_tl(TCGv r, TCGv_va a, TCGv o, \ + TCGv n, TCGArg i, MemOp m) \ + { \ + if (tl_is_64()) { \ + N##_i64(tcg_i64_from_tl(r), a, tcg_i64_from_tl(o), \ + tcg_i64_from_tl(n), i, m); \ + } else { \ + N##_i32(tcg_i32_from_tl(r), a, tcg_i32_from_tl(o), \ + tcg_i32_from_tl(n), i, m); \ + } \ + } + +DEF_ATOMIC3_TL(tcg_gen_atomic_cmpxchg) + +DEF_ATOMIC2_TL(tcg_gen_atomic_xchg) +DEF_ATOMIC2_TL(tcg_gen_atomic_fetch_add) +DEF_ATOMIC2_TL(tcg_gen_atomic_fetch_and) +DEF_ATOMIC2_TL(tcg_gen_atomic_fetch_or) +DEF_ATOMIC2_TL(tcg_gen_atomic_fetch_xor) +DEF_ATOMIC2_TL(tcg_gen_atomic_fetch_smin) +DEF_ATOMIC2_TL(tcg_gen_atomic_fetch_umin) +DEF_ATOMIC2_TL(tcg_gen_atomic_fetch_smax) +DEF_ATOMIC2_TL(tcg_gen_atomic_fetch_umax) +DEF_ATOMIC2_TL(tcg_gen_atomic_add_fetch) +DEF_ATOMIC2_TL(tcg_gen_atomic_and_fetch) +DEF_ATOMIC2_TL(tcg_gen_atomic_or_fetch) +DEF_ATOMIC2_TL(tcg_gen_atomic_xor_fetch) +DEF_ATOMIC2_TL(tcg_gen_atomic_smin_fetch) +DEF_ATOMIC2_TL(tcg_gen_atomic_umin_fetch) +DEF_ATOMIC2_TL(tcg_gen_atomic_smax_fetch) +DEF_ATOMIC2_TL(tcg_gen_atomic_umax_fetch) + +#undef DEF_ATOMIC2_TL +#undef DEF_ATOMIC3_TL + #endif /* TCG_TCG_OP_MEM_H */ diff --git a/include/tcg/tcg-op.h b/include/tcg/tcg-op.h index 6835ad97901..158df47bf18 100644 --- a/include/tcg/tcg-op.h +++ b/include/tcg/tcg-op.h @@ -16,37 +16,12 @@ #error must include QEMU headers #endif =20 -#define TCG_ADDRESS_BITS TARGET_LONG_BITS #include "tcg/tcg-op-mem.h" =20 -#if TARGET_LONG_BITS =3D=3D 32 -# define TCG_TYPE_TL TCG_TYPE_I32 -#elif TARGET_LONG_BITS =3D=3D 64 -# define TCG_TYPE_TL TCG_TYPE_I64 -#else -# error -#endif - #if INSN_START_WORDS !=3D 3 # error Mismatch with insn-start-words.h #endif =20 -#if TARGET_LONG_BITS =3D=3D 32 -#define tcg_temp_new() tcg_temp_new_i32() -#define tcg_global_mem_new tcg_global_mem_new_i32 -#define tcgv_tl_temp tcgv_i32_temp -#define tcg_gen_qemu_ld_tl tcg_gen_qemu_ld_i32 -#define tcg_gen_qemu_st_tl tcg_gen_qemu_st_i32 -#elif TARGET_LONG_BITS =3D=3D 64 -#define tcg_temp_new() tcg_temp_new_i64() -#define tcg_global_mem_new tcg_global_mem_new_i64 -#define tcgv_tl_temp tcgv_i64_temp -#define tcg_gen_qemu_ld_tl tcg_gen_qemu_ld_i64 -#define tcg_gen_qemu_st_tl tcg_gen_qemu_st_i64 -#else -#error Unhandled TARGET_LONG_BITS value -#endif - #if TARGET_LONG_BITS =3D=3D 64 #define tcg_gen_movi_tl tcg_gen_movi_i64 #define tcg_gen_mov_tl tcg_gen_mov_i64 @@ -152,24 +127,6 @@ #define tcg_gen_smax_tl tcg_gen_smax_i64 #define tcg_gen_umax_tl tcg_gen_umax_i64 #define tcg_gen_ussub_tl tcg_gen_ussub_i64 -#define tcg_gen_atomic_cmpxchg_tl tcg_gen_atomic_cmpxchg_i64 -#define tcg_gen_atomic_xchg_tl tcg_gen_atomic_xchg_i64 -#define tcg_gen_atomic_fetch_add_tl tcg_gen_atomic_fetch_add_i64 -#define tcg_gen_atomic_fetch_and_tl tcg_gen_atomic_fetch_and_i64 -#define tcg_gen_atomic_fetch_or_tl tcg_gen_atomic_fetch_or_i64 -#define tcg_gen_atomic_fetch_xor_tl tcg_gen_atomic_fetch_xor_i64 -#define tcg_gen_atomic_fetch_smin_tl tcg_gen_atomic_fetch_smin_i64 -#define tcg_gen_atomic_fetch_umin_tl tcg_gen_atomic_fetch_umin_i64 -#define tcg_gen_atomic_fetch_smax_tl tcg_gen_atomic_fetch_smax_i64 -#define tcg_gen_atomic_fetch_umax_tl tcg_gen_atomic_fetch_umax_i64 -#define tcg_gen_atomic_add_fetch_tl tcg_gen_atomic_add_fetch_i64 -#define tcg_gen_atomic_and_fetch_tl tcg_gen_atomic_and_fetch_i64 -#define tcg_gen_atomic_or_fetch_tl tcg_gen_atomic_or_fetch_i64 -#define tcg_gen_atomic_xor_fetch_tl tcg_gen_atomic_xor_fetch_i64 -#define tcg_gen_atomic_smin_fetch_tl tcg_gen_atomic_smin_fetch_i64 -#define tcg_gen_atomic_umin_fetch_tl tcg_gen_atomic_umin_fetch_i64 -#define tcg_gen_atomic_smax_fetch_tl tcg_gen_atomic_smax_fetch_i64 -#define tcg_gen_atomic_umax_fetch_tl tcg_gen_atomic_umax_fetch_i64 #define tcg_gen_dup_tl_vec tcg_gen_dup_i64_vec #define tcg_gen_dup_tl tcg_gen_dup_i64 #define dup_const_tl dup_const @@ -275,24 +232,6 @@ #define tcg_gen_smax_tl tcg_gen_smax_i32 #define tcg_gen_umax_tl tcg_gen_umax_i32 #define tcg_gen_ussub_tl tcg_gen_ussub_i32 -#define tcg_gen_atomic_cmpxchg_tl tcg_gen_atomic_cmpxchg_i32 -#define tcg_gen_atomic_xchg_tl tcg_gen_atomic_xchg_i32 -#define tcg_gen_atomic_fetch_add_tl tcg_gen_atomic_fetch_add_i32 -#define tcg_gen_atomic_fetch_and_tl tcg_gen_atomic_fetch_and_i32 -#define tcg_gen_atomic_fetch_or_tl tcg_gen_atomic_fetch_or_i32 -#define tcg_gen_atomic_fetch_xor_tl tcg_gen_atomic_fetch_xor_i32 -#define tcg_gen_atomic_fetch_smin_tl tcg_gen_atomic_fetch_smin_i32 -#define tcg_gen_atomic_fetch_umin_tl tcg_gen_atomic_fetch_umin_i32 -#define tcg_gen_atomic_fetch_smax_tl tcg_gen_atomic_fetch_smax_i32 -#define tcg_gen_atomic_fetch_umax_tl tcg_gen_atomic_fetch_umax_i32 -#define tcg_gen_atomic_add_fetch_tl tcg_gen_atomic_add_fetch_i32 -#define tcg_gen_atomic_and_fetch_tl tcg_gen_atomic_and_fetch_i32 -#define tcg_gen_atomic_or_fetch_tl tcg_gen_atomic_or_fetch_i32 -#define tcg_gen_atomic_xor_fetch_tl tcg_gen_atomic_xor_fetch_i32 -#define tcg_gen_atomic_smin_fetch_tl tcg_gen_atomic_smin_fetch_i32 -#define tcg_gen_atomic_umin_fetch_tl tcg_gen_atomic_umin_fetch_i32 -#define tcg_gen_atomic_smax_fetch_tl tcg_gen_atomic_smax_fetch_i32 -#define tcg_gen_atomic_umax_fetch_tl tcg_gen_atomic_umax_fetch_i32 #define tcg_gen_dup_tl_vec tcg_gen_dup_i32_vec #define tcg_gen_dup_tl tcg_gen_dup_i32 =20 diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h index 7790228eeef..61c0ea78946 100644 --- a/include/tcg/tcg.h +++ b/include/tcg/tcg.h @@ -30,6 +30,7 @@ #include "qemu/bitops.h" #include "qemu/plugin.h" #include "qemu/queue.h" +#include "qemu/target-info.h" #include "tcg/tcg-mo.h" #include "tcg/target-reg-bits.h" #include "tcg-target.h" @@ -520,6 +521,56 @@ static inline TCGTemp *tcgv_i64_temp(TCGv_i64 v) return tcgv_i32_temp((TCGv_i32)v); } =20 +static inline TCGType tcg_type_tl(void) +{ + return tl_is_64() ? TCG_TYPE_I64 : TCG_TYPE_I32; +} + +/* Runtime TCGType from tcg_type_tl(); not a compile-time constant. */ +#define TCG_TYPE_TL tcg_type_tl() + +static inline TCGv_i64 tcg_i64_from_tl(TCGv v) +{ + tcg_debug_assert(tl_is_64()); + return (TCGv_i64)v; +} + +static inline TCGv_i32 tcg_i32_from_tl(TCGv v) +{ + tcg_debug_assert(!tl_is_64()); + return (TCGv_i32)v; +} + +static inline TCGv tcg_tl_from_i64(TCGv_i64 v) +{ + tcg_debug_assert(tl_is_64()); + return (TCGv)v; +} + +static inline TCGv tcg_tl_from_i32(TCGv_i32 v) +{ + tcg_debug_assert(!tl_is_64()); + return (TCGv)v; +} + +#ifdef COMPILING_PER_TARGET +# if TARGET_LONG_BITS =3D=3D 32 +# define tcgv_tl_temp tcgv_i32_temp +# elif TARGET_LONG_BITS =3D=3D 64 +# define tcgv_tl_temp tcgv_i64_temp +# else +# error Unhandled TARGET_LONG_BITS value +# endif +#else +static inline TCGTemp *tcgv_tl_temp(TCGv v) +{ + if (tl_is_64()) { + return tcgv_i64_temp(tcg_i64_from_tl(v)); + } + return tcgv_i32_temp(tcg_i32_from_tl(v)); +} +#endif + static inline TCGTemp *tcgv_i128_temp(TCGv_i128 v) { return tcgv_i32_temp((TCGv_i32)v); diff --git a/tests/unit/meson.build b/tests/unit/meson.build index c806dbc4ffa..dc139889c1d 100644 --- a/tests/unit/meson.build +++ b/tests/unit/meson.build @@ -43,6 +43,16 @@ tests =3D { 'test-qgraph': ['../qtest/libqos/qgraph.c'], 'check-qom-interface': [qom], 'check-qom-proplist': [qom], + 'test-tcg-op-mem': [qom], + 'test-tcg-op-mem-tl32': [declare_dependency(compile_args: [ + '-DCOMPILING_PER_TARGET', + '-DCONFIG_TARGET=3D"test-tcg-op-mem-config32.h"'])], + 'test-tcg-op-mem-tl64': [declare_dependency(compile_args: [ + '-DCOMPILING_PER_TARGET', + '-DCONFIG_TARGET=3D"test-tcg-op-mem-config64.h"'])], + 'test-tcg-op-mem-va32-tl64': [declare_dependency(compile_args: [ + '-DCOMPILING_PER_TARGET', + '-DCONFIG_TARGET=3D"test-tcg-op-mem-config64.h"'])], 'test-target-info': [qom, declare_dependency( objects: target_info_def_objects.values(), compile_args: ['-DTARGET_INFO_DEF_COUNT=3D@0@'.format( diff --git a/tests/unit/test-tcg-op-mem-config32.h b/tests/unit/test-tcg-op= -mem-config32.h new file mode 100644 index 00000000000..37183223edc --- /dev/null +++ b/tests/unit/test-tcg-op-mem-config32.h @@ -0,0 +1,2 @@ +#define TARGET_LONG_BITS 32 +#define TARGET_BIG_ENDIAN 0 diff --git a/tests/unit/test-tcg-op-mem-config64.h b/tests/unit/test-tcg-op= -mem-config64.h new file mode 100644 index 00000000000..bcc429333bf --- /dev/null +++ b/tests/unit/test-tcg-op-mem-config64.h @@ -0,0 +1,2 @@ +#define TARGET_LONG_BITS 64 +#define TARGET_BIG_ENDIAN 0 diff --git a/tests/unit/test-tcg-op-mem-tl32.c b/tests/unit/test-tcg-op-mem= -tl32.c new file mode 100644 index 00000000000..1af53172cdb --- /dev/null +++ b/tests/unit/test-tcg-op-mem-tl32.c @@ -0,0 +1,26 @@ +/* + * tcg-op-mem.h with TARGET_LONG_BITS =3D=3D 32. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "tcg/tcg-op-mem.h" + +static void test_tl32_aliases(void) +{ + g_assert_cmpint(TARGET_LONG_BITS, =3D=3D, 32); + g_assert_true(__builtin_types_compatible_p(__typeof__(tcg_temp_new()), + TCGv_i32)); + g_assert_true(__builtin_types_compatible_p( + __typeof__(tcg_global_mem_new(NULL, 0, "t")), TCGv_i= 32)); + g_assert_true(__builtin_types_compatible_p(__typeof__(tcgv_tl_temp), + __typeof__(tcgv_i32_temp))); +} + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + g_test_add_func("/tcg/op-mem/tl32", test_tl32_aliases); + return g_test_run(); +} diff --git a/tests/unit/test-tcg-op-mem-tl64.c b/tests/unit/test-tcg-op-mem= -tl64.c new file mode 100644 index 00000000000..956c428fc31 --- /dev/null +++ b/tests/unit/test-tcg-op-mem-tl64.c @@ -0,0 +1,26 @@ +/* + * tcg-op-mem.h with TARGET_LONG_BITS =3D=3D 64. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "tcg/tcg-op-mem.h" + +static void test_tl64_aliases(void) +{ + g_assert_cmpint(TARGET_LONG_BITS, =3D=3D, 64); + g_assert_true(__builtin_types_compatible_p(__typeof__(tcg_temp_new()), + TCGv_i64)); + g_assert_true(__builtin_types_compatible_p( + __typeof__(tcg_global_mem_new(NULL, 0, "t")), TCGv_i= 64)); + g_assert_true(__builtin_types_compatible_p(__typeof__(tcgv_tl_temp), + __typeof__(tcgv_i64_temp))); +} + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + g_test_add_func("/tcg/op-mem/tl64", test_tl64_aliases); + return g_test_run(); +} diff --git a/tests/unit/test-tcg-op-mem-va32-tl64.c b/tests/unit/test-tcg-o= p-mem-va32-tl64.c new file mode 100644 index 00000000000..acb834f7cb5 --- /dev/null +++ b/tests/unit/test-tcg-op-mem-va32-tl64.c @@ -0,0 +1,35 @@ +/* + * tcg-op-mem.h with a 32-bit VA and a 64-bit target long. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" + +#define TCG_ADDRESS_BITS 32 +#include "tcg/tcg-op-mem.h" + +static void test_va32_tl64(void) +{ + g_assert_cmpint(TARGET_LONG_BITS, =3D=3D, 64); + g_assert_cmpint(TCG_ADDRESS_BITS, =3D=3D, 32); + g_assert_cmpint(tcg_type_tl(), =3D=3D, TCG_TYPE_I64); + g_assert_cmpint(TCG_TYPE_VA, =3D=3D, TCG_TYPE_I32); + g_assert_true(__builtin_types_compatible_p(__typeof__(tcg_temp_new()), + TCGv_i64)); + g_assert_true(__builtin_types_compatible_p( + __typeof__(tcg_global_mem_new(NULL, 0, "t")), TCGv_i= 64)); + g_assert_true(__builtin_types_compatible_p(__typeof__(tcgv_tl_temp), + __typeof__(tcgv_i64_temp))); + g_assert_true(__builtin_types_compatible_p(__typeof__(tcgv_va_temp_new= ()), + TCGv_i32)); + g_assert_true(__builtin_types_compatible_p(__typeof__(tcgv_va_temp), + __typeof__(tcgv_i32_temp))); +} + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + g_test_add_func("/tcg/op-mem/va32-tl64", test_va32_tl64); + return g_test_run(); +} diff --git a/tests/unit/test-tcg-op-mem.c b/tests/unit/test-tcg-op-mem.c new file mode 100644 index 00000000000..b6bda01e93b --- /dev/null +++ b/tests/unit/test-tcg-op-mem.c @@ -0,0 +1,51 @@ +/* + * Compile tcg-op-mem.h with no fixed VA width. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qemu/target-info-def.h" +#include "tcg/tcg-op-mem.h" + +static const TargetInfo tl32_info =3D { + .target_name =3D "tl32", + .long_bits =3D 32, +}; + +static const TargetInfo tl64_info =3D { + .target_name =3D "tl64", + .long_bits =3D 64, +}; + +static void test_runtime_tl_ops(void) +{ + TCGType expect =3D tl_is_64() ? TCG_TYPE_I64 : TCG_TYPE_I32; + + g_assert_cmpint(tcg_type_tl(), =3D=3D, expect); + g_assert_true(__builtin_types_compatible_p(__typeof__(tcg_temp_new()), + TCGv)); + g_assert_true(__builtin_types_compatible_p( + __typeof__(tcg_global_mem_new(NULL, 0, "t")), TCGv)); + g_assert_true(__builtin_types_compatible_p( + __typeof__(tcgv_tl_temp((TCGv)NULL)), TCGTemp *)); +} + +static void test_runtime_tl_width(void) +{ + target_info_select(&tl32_info); + g_assert_false(tl_is_64()); + g_assert_cmpint(tcg_type_tl(), =3D=3D, TCG_TYPE_I32); + + target_info_select(&tl64_info); + g_assert_true(tl_is_64()); + g_assert_cmpint(tcg_type_tl(), =3D=3D, TCG_TYPE_I64); +} + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + g_test_add_func("/tcg/op-mem/runtime-tl", test_runtime_tl_ops); + g_test_add_func("/tcg/op-mem/runtime-tl-width", test_runtime_tl_width); + return g_test_run(); +} --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406792; cv=none; d=zohomail.com; s=zohoarc; b=L3iltofp+Xos4YP4rT0b7A/Z0J/R4oap7i64O1xDNgcnqBgOgBAUld6vHMNTlXMT530zv/E7HVY2cI4Gm+SXiHIMZMgvbHRzzEqKZdPw04epElTR3tSaQO8IzZlA0zqR+dNAcw1Oozo0NaN+qm4pBQVRKW+n4VxKwbfnfnDIfiY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406792; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0zRIL5w+/7j7HI00vae8hs9ukAVd9SKBuffZMonHGDA=; b=DuW8EPVNMtqHNOI4ejyFKLtcSj9h5IbXIvSzoYXXxqcmwW15RJqwEYPzWRVbbN4OLtCs6tqBLkS2r4vnVHD67Ozmit5r5Lbzmh9kBzAXq9pAz8QL+cgVRWeuRqWOKS1P7OtyBqQp0/HbeTckKwduLuTv7WLilda/3pP3smL2wjE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406792749472.1346670601156; Sat, 26 Sep 2026 00:13:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMSP-0005bm-QJ; Sat, 26 Sep 2026 03:04:27 -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 1xAMQj-00036K-3m for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:43 -0400 Received: from mail-dl2-x25.google.com ([2607:f8b0:4864:38::25]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMQf-0000Xw-P8 for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:40 -0400 Received: by mail-dl2-x25.google.com with SMTP id a92af1059eb24-1438e88300cso1355302c88.0 for ; Sat, 26 Sep 2026 00:02:37 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.02.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:02:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406156; x=1791010956; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=0zRIL5w+/7j7HI00vae8hs9ukAVd9SKBuffZMonHGDA=; b=MPHcklvlg3/Lo5ycPa/cbeEZy79ZC7YF0HXBXKLOmCoX0DuiV1EW+Ft+RdNHNyRXCZ nmxRKcG7W2qpOqDiHqCL7InTWITv3VH3CJsl9LoBL8MHdhtUpBqcOfNd/axkSkG+T/Bs BuqEQfUqh/DOsmMZTWelfYxLneOTnCVR8HHkbRD8eO6ol1zmVyoLycHMp6oc/7D5vKBH weKFaQuhzZlcq96MWLBAyC7T8MUp11Gfz4lm4lOqTlOnj+CESWBkPaP1vv6NzpxcqEsr 1WRddiq/lvd7aoKH2OrZAgfuR4KKyS1vss5GqjNztgf0stozD3ns5Ignyb4y/4fI7KIR a61g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406156; x=1791010956; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=0zRIL5w+/7j7HI00vae8hs9ukAVd9SKBuffZMonHGDA=; b=Ji0LIf+saPxR2TiwlF5lffP85ATscPvbk+pdhgTPecUN8FUPp/Qq0g+3Po87CACGyU bjQmC0HJ6xYIxN6+r15YjOT+9bj4qBVdIOq3L6Mr840hQ17cK98TozM0xVy+CnPLH7aa vrPCNW3sl+ul6TM30IUQkr2pYJB4Xj3Vm1g2FRaWheFu0bQmMZtAdM9F0gE4FTqcQDDb dXG1oCC7CKMdb4XE0aOAbeEEruKfjWZdMUrTuu6RlTVlUehro+5HFkoyuhj+t3j1SvEb zA/vHSr/eNcCOFkrt+SJgjOBzmcFP+NtEmfL7CHGg2QU9zxSZb3cvgbs2YHvHmCC+s6T 72dQ== X-Gm-Message-State: AFuF++kyxigctDgKzw6dSYlK6bWFOWET00Z5sMAqPcQJdlWCc9Zh+bcT r0MCGdVrDRiQ83uX0ipiqeb1ldU8hU74d2BNZ4c3xOFVGMPcwsFHwBrmpqjetKaC X-Gm-Gg: AYBFou2Z3txc0hK+r4MhCholHlmCJq+WnbX9azAUi4eqFCGKPzTTtD+M8GCO/llgduq y+PzQ9pbj4RrUKkuokwkRVI1tV9FVJLXwOtyxgEq2XEm4g1301G1fV3No7ksqcs9/fESKzNUmnp x6so1g3n2RT2zVXn1o3Z8lsTE+pG6Cm1G9d1b72QdbBxYpT7w/ClyxZJZNRjEtyEa0vuLpqL0kT Ygi0GWGSZYgKXevtjeSRdn276z1mpukBh4SfhqydL1dcESWqaSNFpOnDkvnA91hPYPmYmAJSV// 3K3B2BljcBM1qYKyq9ZHhraIp12Quj+Hgt7A5ldEk4a/7Ebs00LeV3NC4um54JXVwFNJImczbbv rO5bMmrEcT8t8q1Uhv97tz8w5VuovFYFoL+S8PgxJL4rBj2L3SCzUmN7py/f303VLAaodqlu2eP FsOk3u3ISlZMCVv2OmiHQDyuIEzCgOfuYbXVqQsMWBijVozbNP7RctM8KONPsMbr9DyMOMqH7gL 2IHdxtH7/AmO2kbv+ahxpHlpm1gZYgs+VNu7UWzNg== X-Received: by 2002:a05:701b:4254:10b0:143:2982:1045 with SMTP id a92af1059eb24-146d02aa3b9mr1963884c88.38.1790406155693; Sat, 26 Sep 2026 00:02:35 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 23/55] tcg: dispatch tcg_gen_*_tl without TARGET_LONG_BITS Date: Sat, 26 Sep 2026 15:00:22 +0800 Message-ID: <20260926070057.1234-24-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:38::25; envelope-from=luoyonggang@gmail.com; helo=mail-dl2-x25.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406794611158500 Content-Type: text/plain; charset="utf-8" Replace the TARGET_LONG_BITS aliases in tcg-op.h with the runtime helpers in tcg-op-tl.h. The width follows tl_is_64(), and tcg-op.h no longer includes exec/target_long.h. Signed-off-by: Yonggang Luo --- include/tcg/tcg-op-tl.h | 568 ++++++++++++++++++++++++++++++++++++++++ include/tcg/tcg-op.h | 228 +--------------- 2 files changed, 569 insertions(+), 227 deletions(-) create mode 100644 include/tcg/tcg-op-tl.h diff --git a/include/tcg/tcg-op-tl.h b/include/tcg/tcg-op-tl.h new file mode 100644 index 00000000000..e05d00a9aaa --- /dev/null +++ b/include/tcg/tcg-op-tl.h @@ -0,0 +1,568 @@ +/* SPDX-License-Identifier: MIT */ +/* + * target_ulong TCG ops. Width follows target_long_bits() at + * translate time. Does not include exec/target_long.h. + */ + +#ifndef TCG_TCG_OP_TL_H +#define TCG_TCG_OP_TL_H + +#include "tcg/tcg-op-mem.h" + +/* Load: same callee name on i32 and i64. */ +#define DEF_TL_LD(NAME) \ + static inline void tcg_gen_##NAME##_tl(TCGv r, TCGv_ptr b, \ + tcg_target_long o) \ + { \ + if (tl_is_64()) { \ + tcg_gen_##NAME##_i64(tcg_i64_from_tl(r), b, o); \ + } else { \ + tcg_gen_##NAME##_i32(tcg_i32_from_tl(r), b, o); \ + } \ + } + +DEF_TL_LD(ld) +DEF_TL_LD(ld8u) +DEF_TL_LD(ld8s) +DEF_TL_LD(ld16u) +DEF_TL_LD(ld16s) +#undef DEF_TL_LD + +/* i32 target long is the full register, so a 32-bit load is ld. */ + +static inline void tcg_gen_ld32u_tl(TCGv r, TCGv_ptr b, tcg_target_long o) +{ + if (tl_is_64()) { + tcg_gen_ld32u_i64(tcg_i64_from_tl(r), b, o); + } else { + tcg_gen_ld_i32(tcg_i32_from_tl(r), b, o); + } +} + +static inline void tcg_gen_ld32s_tl(TCGv r, TCGv_ptr b, tcg_target_long o) +{ + if (tl_is_64()) { + tcg_gen_ld32s_i64(tcg_i64_from_tl(r), b, o); + } else { + tcg_gen_ld_i32(tcg_i32_from_tl(r), b, o); + } +} + +/* Store: same callee name on i32 and i64. */ +#define DEF_TL_ST(NAME) \ + static inline void tcg_gen_##NAME##_tl(TCGv v, TCGv_ptr b, \ + tcg_target_long o) \ + { \ + if (tl_is_64()) { \ + tcg_gen_##NAME##_i64(tcg_i64_from_tl(v), b, o); \ + } else { \ + tcg_gen_##NAME##_i32(tcg_i32_from_tl(v), b, o); \ + } \ + } + +DEF_TL_ST(st) +DEF_TL_ST(st8) +DEF_TL_ST(st16) +#undef DEF_TL_ST + +/* i32 target long is the full register, so a 32-bit store is st. */ + +static inline void tcg_gen_st32_tl(TCGv r, TCGv_ptr b, tcg_target_long o) +{ + if (tl_is_64()) { + tcg_gen_st32_i64(tcg_i64_from_tl(r), b, o); + } else { + tcg_gen_st_i32(tcg_i32_from_tl(r), b, o); + } +} + +static inline void tcg_gen_movi_tl(TCGv r, tcg_imm_tl i) +{ + if (tl_is_64()) { + tcg_gen_movi_i64(tcg_i64_from_tl(r), i); + } else { + tcg_gen_movi_i32(tcg_i32_from_tl(r), i); + } +} + +static inline void tcg_gen_discard_tl(TCGv v) +{ + if (tl_is_64()) { + tcg_gen_discard_i64(tcg_i64_from_tl(v)); + } else { + tcg_gen_discard_i32(tcg_i32_from_tl(v)); + } +} + +static inline void tcg_gen_subfi_tl(TCGv r, tcg_imm_tl i, TCGv x) +{ + if (tl_is_64()) { + tcg_gen_subfi_i64(tcg_i64_from_tl(r), i, tcg_i64_from_tl(x)); + } else { + tcg_gen_subfi_i32(tcg_i32_from_tl(r), i, tcg_i32_from_tl(x)); + } +} + +/* Unary: same callee name on i32 and i64. */ +#define DEF_TL_UNOP(NAME) \ + static inline void tcg_gen_##NAME##_tl(TCGv r, TCGv v) \ + { \ + if (tl_is_64()) { \ + tcg_gen_##NAME##_i64(tcg_i64_from_tl(r), tcg_i64_from_tl(v)); \ + } else { \ + tcg_gen_##NAME##_i32(tcg_i32_from_tl(r), tcg_i32_from_tl(v)); \ + } \ + } + +DEF_TL_UNOP(mov) +DEF_TL_UNOP(neg) +DEF_TL_UNOP(abs) +DEF_TL_UNOP(not) +DEF_TL_UNOP(ext8u) +DEF_TL_UNOP(ext8s) +DEF_TL_UNOP(ext16u) +DEF_TL_UNOP(ext16s) +DEF_TL_UNOP(clrsb) +DEF_TL_UNOP(ctpop) +DEF_TL_UNOP(hswap) +DEF_TL_UNOP(revbit8) +#undef DEF_TL_UNOP + +/* Binary: same callee name on i32 and i64. */ +#define DEF_TL_BINOP(NAME) \ + static inline void tcg_gen_##NAME##_tl(TCGv r, TCGv x, TCGv y) \ + { \ + if (tl_is_64()) { \ + tcg_gen_##NAME##_i64(tcg_i64_from_tl(r), tcg_i64_from_tl(x), \ + tcg_i64_from_tl(y)); \ + } else { \ + tcg_gen_##NAME##_i32(tcg_i32_from_tl(r), tcg_i32_from_tl(x), \ + tcg_i32_from_tl(y)); \ + } \ + } + +DEF_TL_BINOP(add) +DEF_TL_BINOP(sub) +DEF_TL_BINOP(and) +DEF_TL_BINOP(or) +DEF_TL_BINOP(xor) +DEF_TL_BINOP(andc) +DEF_TL_BINOP(eqv) +DEF_TL_BINOP(nand) +DEF_TL_BINOP(nor) +DEF_TL_BINOP(orc) +DEF_TL_BINOP(shl) +DEF_TL_BINOP(shr) +DEF_TL_BINOP(sar) +DEF_TL_BINOP(mul) +DEF_TL_BINOP(div) +DEF_TL_BINOP(rem) +DEF_TL_BINOP(divu) +DEF_TL_BINOP(remu) +DEF_TL_BINOP(clz) +DEF_TL_BINOP(ctz) +DEF_TL_BINOP(rotl) +DEF_TL_BINOP(rotr) +DEF_TL_BINOP(smin) +DEF_TL_BINOP(umin) +DEF_TL_BINOP(smax) +DEF_TL_BINOP(umax) +DEF_TL_BINOP(ussub) +#undef DEF_TL_BINOP + +/* Immediate: same callee name on i32 and i64. */ +#define DEF_TL_OPI(NAME) \ + static inline void tcg_gen_##NAME##_tl(TCGv r, TCGv x, tcg_imm_tl i) \ + { \ + if (tl_is_64()) { \ + tcg_gen_##NAME##_i64(tcg_i64_from_tl(r), tcg_i64_from_tl(x), i= ); \ + } else { \ + tcg_gen_##NAME##_i32(tcg_i32_from_tl(r), tcg_i32_from_tl(x), i= ); \ + } \ + } + +DEF_TL_OPI(addi) +DEF_TL_OPI(subi) +DEF_TL_OPI(andi) +DEF_TL_OPI(ori) +DEF_TL_OPI(xori) +DEF_TL_OPI(muli) +DEF_TL_OPI(shli) +DEF_TL_OPI(shri) +DEF_TL_OPI(sari) +DEF_TL_OPI(clzi) +DEF_TL_OPI(ctzi) +DEF_TL_OPI(rotli) +DEF_TL_OPI(rotri) +#undef DEF_TL_OPI + +static inline void tcg_gen_brcond_tl(TCGCond cond, TCGv x, TCGv y, + TCGLabel *l) +{ + if (tl_is_64()) { + tcg_gen_brcond_i64(cond, tcg_i64_from_tl(x), tcg_i64_from_tl(y), l= ); + } else { + tcg_gen_brcond_i32(cond, tcg_i32_from_tl(x), tcg_i32_from_tl(y), l= ); + } +} + +static inline void tcg_gen_brcondi_tl(TCGCond cond, TCGv x, tcg_imm_tl i, + TCGLabel *l) +{ + if (tl_is_64()) { + tcg_gen_brcondi_i64(cond, tcg_i64_from_tl(x), i, l); + } else { + tcg_gen_brcondi_i32(cond, tcg_i32_from_tl(x), i, l); + } +} + +#define DEF_TL_COND(NAME) \ + static inline void tcg_gen_##NAME##_tl(TCGCond cond, TCGv r, \ + TCGv x, TCGv y) \ + { \ + if (tl_is_64()) { \ + tcg_gen_##NAME##_i64(cond, tcg_i64_from_tl(r), \ + tcg_i64_from_tl(x), tcg_i64_from_tl(y)); \ + } else { \ + tcg_gen_##NAME##_i32(cond, tcg_i32_from_tl(r), \ + tcg_i32_from_tl(x), tcg_i32_from_tl(y)); \ + } \ + } + +DEF_TL_COND(setcond) +DEF_TL_COND(negsetcond) +#undef DEF_TL_COND + +#define DEF_TL_CONDI(NAME) \ + static inline void tcg_gen_##NAME##_tl(TCGCond cond, TCGv r, \ + TCGv x, tcg_imm_tl i) \ + { \ + if (tl_is_64()) { \ + tcg_gen_##NAME##_i64(cond, tcg_i64_from_tl(r), \ + tcg_i64_from_tl(x), i); \ + } else { \ + tcg_gen_##NAME##_i32(cond, tcg_i32_from_tl(r), \ + tcg_i32_from_tl(x), i); \ + } \ + } + +DEF_TL_CONDI(setcondi) +DEF_TL_CONDI(negsetcondi) +#undef DEF_TL_CONDI + +static inline void tcg_gen_movcond_tl(TCGCond cond, TCGv r, TCGv c1, + TCGv c2, TCGv v1, TCGv v2) +{ + if (tl_is_64()) { + tcg_gen_movcond_i64(cond, tcg_i64_from_tl(r), tcg_i64_from_tl(c1), + tcg_i64_from_tl(c2), tcg_i64_from_tl(v1), + tcg_i64_from_tl(v2)); + } else { + tcg_gen_movcond_i32(cond, tcg_i32_from_tl(r), tcg_i32_from_tl(c1), + tcg_i32_from_tl(c2), tcg_i32_from_tl(v1), + tcg_i32_from_tl(v2)); + } +} + +static inline void tcg_gen_trunc_tl_i32(TCGv_i32 r, TCGv v) +{ + if (tl_is_64()) { + tcg_gen_extrl_i64_i32(r, tcg_i64_from_tl(v)); + } else { + tcg_gen_mov_i32(r, tcg_i32_from_tl(v)); + } +} + +static inline void tcg_gen_trunc_i64_tl(TCGv r, TCGv_i64 v) +{ + if (tl_is_64()) { + tcg_gen_mov_i64(tcg_i64_from_tl(r), v); + } else { + tcg_gen_extrl_i64_i32(tcg_i32_from_tl(r), v); + } +} + +static inline void tcg_gen_extu_i32_tl(TCGv r, TCGv_i32 v) +{ + if (tl_is_64()) { + tcg_gen_extu_i32_i64(tcg_i64_from_tl(r), v); + } else { + tcg_gen_mov_i32(tcg_i32_from_tl(r), v); + } +} + +static inline void tcg_gen_ext_i32_tl(TCGv r, TCGv_i32 v) +{ + if (tl_is_64()) { + tcg_gen_ext_i32_i64(tcg_i64_from_tl(r), v); + } else { + tcg_gen_mov_i32(tcg_i32_from_tl(r), v); + } +} + +static inline void tcg_gen_extu_tl_i64(TCGv_i64 r, TCGv v) +{ + if (tl_is_64()) { + tcg_gen_mov_i64(r, tcg_i64_from_tl(v)); + } else { + tcg_gen_extu_i32_i64(r, tcg_i32_from_tl(v)); + } +} + +static inline void tcg_gen_ext_tl_i64(TCGv_i64 r, TCGv v) +{ + if (tl_is_64()) { + tcg_gen_mov_i64(r, tcg_i64_from_tl(v)); + } else { + tcg_gen_ext_i32_i64(r, tcg_i32_from_tl(v)); + } +} + +static inline void tcg_gen_ext32u_tl(TCGv r, TCGv v) +{ + if (tl_is_64()) { + tcg_gen_ext32u_i64(tcg_i64_from_tl(r), tcg_i64_from_tl(v)); + } else { + tcg_gen_mov_i32(tcg_i32_from_tl(r), tcg_i32_from_tl(v)); + } +} + +static inline void tcg_gen_ext32s_tl(TCGv r, TCGv v) +{ + if (tl_is_64()) { + tcg_gen_ext32s_i64(tcg_i64_from_tl(r), tcg_i64_from_tl(v)); + } else { + tcg_gen_mov_i32(tcg_i32_from_tl(r), tcg_i32_from_tl(v)); + } +} + +static inline void tcg_gen_ext_tl(TCGv r, TCGv v, MemOp opc) +{ + if (tl_is_64()) { + tcg_gen_ext_i64(tcg_i64_from_tl(r), tcg_i64_from_tl(v), opc); + } else { + tcg_gen_ext_i32(tcg_i32_from_tl(r), tcg_i32_from_tl(v), opc); + } +} + +static inline void tcg_gen_bswap16_tl(TCGv r, TCGv v, int flags) +{ + if (tl_is_64()) { + tcg_gen_bswap16_i64(tcg_i64_from_tl(r), tcg_i64_from_tl(v), flags); + } else { + tcg_gen_bswap16_i32(tcg_i32_from_tl(r), tcg_i32_from_tl(v), flags); + } +} + +static inline void tcg_gen_bswap32_tl(TCGv r, TCGv v, int flags) +{ + if (tl_is_64()) { + tcg_gen_bswap32_i64(tcg_i64_from_tl(r), tcg_i64_from_tl(v), flags); + } else { + tcg_gen_bswap32_i32(tcg_i32_from_tl(r), tcg_i32_from_tl(v)); + } +} + +static inline void tcg_gen_bswap64_tl(TCGv r, TCGv v) +{ + tcg_debug_assert(tl_is_64()); + tcg_gen_bswap64_i64(tcg_i64_from_tl(r), tcg_i64_from_tl(v)); +} + +static inline void tcg_gen_bswap_tl(TCGv r, TCGv v) +{ + if (tl_is_64()) { + tcg_gen_bswap64_i64(tcg_i64_from_tl(r), tcg_i64_from_tl(v)); + } else { + tcg_gen_bswap32_i32(tcg_i32_from_tl(r), tcg_i32_from_tl(v)); + } +} + +static inline void tcg_gen_wswap_tl(TCGv r, TCGv v) +{ + tcg_debug_assert(tl_is_64()); + tcg_gen_wswap_i64(tcg_i64_from_tl(r), tcg_i64_from_tl(v)); +} + +static inline void tcg_gen_revbit32_tl(TCGv r, TCGv v, int flags) +{ + if (tl_is_64()) { + tcg_gen_revbit32_i64(tcg_i64_from_tl(r), tcg_i64_from_tl(v), flags= ); + } else { + tcg_gen_revbit32_i32(tcg_i32_from_tl(r), tcg_i32_from_tl(v)); + } +} + +static inline void tcg_gen_revbit64_tl(TCGv r, TCGv v) +{ + tcg_debug_assert(tl_is_64()); + tcg_gen_revbit64_i64(tcg_i64_from_tl(r), tcg_i64_from_tl(v)); +} + +static inline void tcg_gen_revbit_tl(TCGv r, TCGv v) +{ + if (tl_is_64()) { + tcg_gen_revbit64_i64(tcg_i64_from_tl(r), tcg_i64_from_tl(v)); + } else { + tcg_gen_revbit32_i32(tcg_i32_from_tl(r), tcg_i32_from_tl(v)); + } +} + +static inline void tcg_gen_concat_tl_i64(TCGv_i64 r, TCGv lo, TCGv hi) +{ + if (tl_is_64()) { + tcg_gen_concat32_i64(r, tcg_i64_from_tl(lo), tcg_i64_from_tl(hi)); + } else { + tcg_gen_concat_i32_i64(r, tcg_i32_from_tl(lo), tcg_i32_from_tl(hi)= ); + } +} + +static inline void tcg_gen_extr_i64_tl(TCGv lo, TCGv hi, TCGv_i64 v) +{ + if (tl_is_64()) { + tcg_gen_extr32_i64(tcg_i64_from_tl(lo), tcg_i64_from_tl(hi), v); + } else { + tcg_gen_extr_i64_i32(tcg_i32_from_tl(lo), tcg_i32_from_tl(hi), v); + } +} + +static inline void tcg_gen_deposit_tl(TCGv r, TCGv x, TCGv y, unsigned pos, + unsigned len) +{ + if (tl_is_64()) { + tcg_gen_deposit_i64(tcg_i64_from_tl(r), tcg_i64_from_tl(x), + tcg_i64_from_tl(y), pos, len); + } else { + tcg_gen_deposit_i32(tcg_i32_from_tl(r), tcg_i32_from_tl(x), + tcg_i32_from_tl(y), pos, len); + } +} + +#define DEF_TL_EXTRACT(NAME) \ + static inline void tcg_gen_##NAME##_tl(TCGv r, TCGv v, \ + unsigned pos, unsigned len) \ + { \ + if (tl_is_64()) { \ + tcg_gen_##NAME##_i64(tcg_i64_from_tl(r), tcg_i64_from_tl(v), \ + pos, len); \ + } else { \ + tcg_gen_##NAME##_i32(tcg_i32_from_tl(r), tcg_i32_from_tl(v), \ + pos, len); \ + } \ + } + +DEF_TL_EXTRACT(deposit_z) +DEF_TL_EXTRACT(extract) +DEF_TL_EXTRACT(sextract) +#undef DEF_TL_EXTRACT + +static inline void tcg_gen_extract2_tl(TCGv r, TCGv lo, TCGv hi, + unsigned ofs) +{ + if (tl_is_64()) { + tcg_gen_extract2_i64(tcg_i64_from_tl(r), tcg_i64_from_tl(lo), + tcg_i64_from_tl(hi), ofs); + } else { + tcg_gen_extract2_i32(tcg_i32_from_tl(r), tcg_i32_from_tl(lo), + tcg_i32_from_tl(hi), ofs); + } +} + +static inline TCGv tcg_constant_tl(tcg_imm_tl val) +{ + if (tl_is_64()) { + return tcg_tl_from_i64(tcg_constant_i64(val)); + } + return tcg_tl_from_i32(tcg_constant_i32(val)); +} + +#define DEF_TL_ADD2(NAME) \ + static inline void tcg_gen_##NAME##_tl(TCGv rl, TCGv rh, TCGv al, \ + TCGv ah, TCGv bl, TCGv bh) \ + { \ + if (tl_is_64()) { \ + tcg_gen_##NAME##_i64(tcg_i64_from_tl(rl), tcg_i64_from_tl(rh),= \ + tcg_i64_from_tl(al), tcg_i64_from_tl(ah),= \ + tcg_i64_from_tl(bl), tcg_i64_from_tl(bh))= ; \ + } else { \ + tcg_gen_##NAME##_i32(tcg_i32_from_tl(rl), tcg_i32_from_tl(rh),= \ + tcg_i32_from_tl(al), tcg_i32_from_tl(ah),= \ + tcg_i32_from_tl(bl), tcg_i32_from_tl(bh))= ; \ + } \ + } + +DEF_TL_ADD2(add2) +DEF_TL_ADD2(sub2) +#undef DEF_TL_ADD2 + +static inline void tcg_gen_addcio_tl(TCGv r, TCGv co, TCGv x, TCGv y, + TCGv ci) +{ + if (tl_is_64()) { + tcg_gen_addcio_i64(tcg_i64_from_tl(r), tcg_i64_from_tl(co), + tcg_i64_from_tl(x), tcg_i64_from_tl(y), + tcg_i64_from_tl(ci)); + } else { + tcg_gen_addcio_i32(tcg_i32_from_tl(r), tcg_i32_from_tl(co), + tcg_i32_from_tl(x), tcg_i32_from_tl(y), + tcg_i32_from_tl(ci)); + } +} + +#define DEF_TL_MUL2(NAME) \ + static inline void tcg_gen_##NAME##_tl(TCGv rl, TCGv rh, \ + TCGv x, TCGv y) \ + { \ + if (tl_is_64()) { \ + tcg_gen_##NAME##_i64(tcg_i64_from_tl(rl), tcg_i64_from_tl(rh),= \ + tcg_i64_from_tl(x), tcg_i64_from_tl(y)); \ + } else { \ + tcg_gen_##NAME##_i32(tcg_i32_from_tl(rl), tcg_i32_from_tl(rh),= \ + tcg_i32_from_tl(x), tcg_i32_from_tl(y)); \ + } \ + } + +DEF_TL_MUL2(mulu2) +DEF_TL_MUL2(muls2) +DEF_TL_MUL2(mulsu2) +#undef DEF_TL_MUL2 + +static inline void tcg_gen_dup_tl_vec(unsigned vece, TCGv_vec r, TCGv v) +{ + if (tl_is_64()) { + tcg_gen_dup_i64_vec(vece, r, tcg_i64_from_tl(v)); + } else { + tcg_gen_dup_i32_vec(vece, r, tcg_i32_from_tl(v)); + } +} + +static inline void tcg_gen_dup_tl(unsigned vece, TCGv r, TCGv v) +{ + if (tl_is_64()) { + tcg_gen_dup_i64(vece, tcg_i64_from_tl(r), tcg_i64_from_tl(v)); + } else { + tcg_gen_dup_i32(vece, tcg_i32_from_tl(r), tcg_i32_from_tl(v)); + } +} + +static inline tcg_imm_tl dup_const_tl(unsigned vece, uint64_t c) +{ + if (tl_is_64()) { + return dup_const(vece, c); + } + if (__builtin_constant_p(vece)) { + switch (vece) { + case MO_8: + return 0x01010101ul * (uint8_t)c; + case MO_16: + return 0x00010001ul * (uint16_t)c; + case MO_32: + return 0x00000001ul * (uint32_t)c; + default: + qemu_build_not_reached(); + } + } + return (uint32_t)dup_const(vece, c); +} + +#endif /* TCG_TCG_OP_TL_H */ diff --git a/include/tcg/tcg-op.h b/include/tcg/tcg-op.h index 158df47bf18..99cd2779687 100644 --- a/include/tcg/tcg-op.h +++ b/include/tcg/tcg-op.h @@ -10,238 +10,12 @@ =20 #include "tcg/tcg-op-common.h" #include "tcg/insn-start-words.h" -#include "exec/target_long.h" - -#ifndef TARGET_LONG_BITS -#error must include QEMU headers -#endif =20 #include "tcg/tcg-op-mem.h" +#include "tcg/tcg-op-tl.h" =20 #if INSN_START_WORDS !=3D 3 # error Mismatch with insn-start-words.h #endif =20 -#if TARGET_LONG_BITS =3D=3D 64 -#define tcg_gen_movi_tl tcg_gen_movi_i64 -#define tcg_gen_mov_tl tcg_gen_mov_i64 -#define tcg_gen_ld8u_tl tcg_gen_ld8u_i64 -#define tcg_gen_ld8s_tl tcg_gen_ld8s_i64 -#define tcg_gen_ld16u_tl tcg_gen_ld16u_i64 -#define tcg_gen_ld16s_tl tcg_gen_ld16s_i64 -#define tcg_gen_ld32u_tl tcg_gen_ld32u_i64 -#define tcg_gen_ld32s_tl tcg_gen_ld32s_i64 -#define tcg_gen_ld_tl tcg_gen_ld_i64 -#define tcg_gen_st8_tl tcg_gen_st8_i64 -#define tcg_gen_st16_tl tcg_gen_st16_i64 -#define tcg_gen_st32_tl tcg_gen_st32_i64 -#define tcg_gen_st_tl tcg_gen_st_i64 -#define tcg_gen_add_tl tcg_gen_add_i64 -#define tcg_gen_addi_tl tcg_gen_addi_i64 -#define tcg_gen_sub_tl tcg_gen_sub_i64 -#define tcg_gen_neg_tl tcg_gen_neg_i64 -#define tcg_gen_abs_tl tcg_gen_abs_i64 -#define tcg_gen_subfi_tl tcg_gen_subfi_i64 -#define tcg_gen_subi_tl tcg_gen_subi_i64 -#define tcg_gen_and_tl tcg_gen_and_i64 -#define tcg_gen_andi_tl tcg_gen_andi_i64 -#define tcg_gen_or_tl tcg_gen_or_i64 -#define tcg_gen_ori_tl tcg_gen_ori_i64 -#define tcg_gen_xor_tl tcg_gen_xor_i64 -#define tcg_gen_xori_tl tcg_gen_xori_i64 -#define tcg_gen_not_tl tcg_gen_not_i64 -#define tcg_gen_shl_tl tcg_gen_shl_i64 -#define tcg_gen_shli_tl tcg_gen_shli_i64 -#define tcg_gen_shr_tl tcg_gen_shr_i64 -#define tcg_gen_shri_tl tcg_gen_shri_i64 -#define tcg_gen_sar_tl tcg_gen_sar_i64 -#define tcg_gen_sari_tl tcg_gen_sari_i64 -#define tcg_gen_brcond_tl tcg_gen_brcond_i64 -#define tcg_gen_brcondi_tl tcg_gen_brcondi_i64 -#define tcg_gen_setcond_tl tcg_gen_setcond_i64 -#define tcg_gen_setcondi_tl tcg_gen_setcondi_i64 -#define tcg_gen_negsetcond_tl tcg_gen_negsetcond_i64 -#define tcg_gen_negsetcondi_tl tcg_gen_negsetcondi_i64 -#define tcg_gen_mul_tl tcg_gen_mul_i64 -#define tcg_gen_muli_tl tcg_gen_muli_i64 -#define tcg_gen_div_tl tcg_gen_div_i64 -#define tcg_gen_rem_tl tcg_gen_rem_i64 -#define tcg_gen_divu_tl tcg_gen_divu_i64 -#define tcg_gen_remu_tl tcg_gen_remu_i64 -#define tcg_gen_discard_tl tcg_gen_discard_i64 -#define tcg_gen_trunc_tl_i32 tcg_gen_extrl_i64_i32 -#define tcg_gen_trunc_i64_tl tcg_gen_mov_i64 -#define tcg_gen_extu_i32_tl tcg_gen_extu_i32_i64 -#define tcg_gen_ext_i32_tl tcg_gen_ext_i32_i64 -#define tcg_gen_extu_tl_i64 tcg_gen_mov_i64 -#define tcg_gen_ext_tl_i64 tcg_gen_mov_i64 -#define tcg_gen_ext8u_tl tcg_gen_ext8u_i64 -#define tcg_gen_ext8s_tl tcg_gen_ext8s_i64 -#define tcg_gen_ext16u_tl tcg_gen_ext16u_i64 -#define tcg_gen_ext16s_tl tcg_gen_ext16s_i64 -#define tcg_gen_ext32u_tl tcg_gen_ext32u_i64 -#define tcg_gen_ext32s_tl tcg_gen_ext32s_i64 -#define tcg_gen_ext_tl tcg_gen_ext_i64 -#define tcg_gen_bswap16_tl tcg_gen_bswap16_i64 -#define tcg_gen_bswap32_tl tcg_gen_bswap32_i64 -#define tcg_gen_bswap64_tl tcg_gen_bswap64_i64 -#define tcg_gen_bswap_tl tcg_gen_bswap64_i64 -#define tcg_gen_hswap_tl tcg_gen_hswap_i64 -#define tcg_gen_wswap_tl tcg_gen_wswap_i64 -#define tcg_gen_revbit8_tl tcg_gen_revbit8_i64 -#define tcg_gen_revbit32_tl tcg_gen_revbit32_i64 -#define tcg_gen_revbit64_tl tcg_gen_revbit64_i64 -#define tcg_gen_revbit_tl tcg_gen_revbit64_i64 -#define tcg_gen_concat_tl_i64 tcg_gen_concat32_i64 -#define tcg_gen_extr_i64_tl tcg_gen_extr32_i64 -#define tcg_gen_andc_tl tcg_gen_andc_i64 -#define tcg_gen_eqv_tl tcg_gen_eqv_i64 -#define tcg_gen_nand_tl tcg_gen_nand_i64 -#define tcg_gen_nor_tl tcg_gen_nor_i64 -#define tcg_gen_orc_tl tcg_gen_orc_i64 -#define tcg_gen_clz_tl tcg_gen_clz_i64 -#define tcg_gen_ctz_tl tcg_gen_ctz_i64 -#define tcg_gen_clzi_tl tcg_gen_clzi_i64 -#define tcg_gen_ctzi_tl tcg_gen_ctzi_i64 -#define tcg_gen_clrsb_tl tcg_gen_clrsb_i64 -#define tcg_gen_ctpop_tl tcg_gen_ctpop_i64 -#define tcg_gen_rotl_tl tcg_gen_rotl_i64 -#define tcg_gen_rotli_tl tcg_gen_rotli_i64 -#define tcg_gen_rotr_tl tcg_gen_rotr_i64 -#define tcg_gen_rotri_tl tcg_gen_rotri_i64 -#define tcg_gen_deposit_tl tcg_gen_deposit_i64 -#define tcg_gen_deposit_z_tl tcg_gen_deposit_z_i64 -#define tcg_gen_extract_tl tcg_gen_extract_i64 -#define tcg_gen_sextract_tl tcg_gen_sextract_i64 -#define tcg_gen_extract2_tl tcg_gen_extract2_i64 -#define tcg_constant_tl tcg_constant_i64 -#define tcg_gen_movcond_tl tcg_gen_movcond_i64 -#define tcg_gen_add2_tl tcg_gen_add2_i64 -#define tcg_gen_sub2_tl tcg_gen_sub2_i64 -#define tcg_gen_addcio_tl tcg_gen_addcio_i64 -#define tcg_gen_mulu2_tl tcg_gen_mulu2_i64 -#define tcg_gen_muls2_tl tcg_gen_muls2_i64 -#define tcg_gen_mulsu2_tl tcg_gen_mulsu2_i64 -#define tcg_gen_smin_tl tcg_gen_smin_i64 -#define tcg_gen_umin_tl tcg_gen_umin_i64 -#define tcg_gen_smax_tl tcg_gen_smax_i64 -#define tcg_gen_umax_tl tcg_gen_umax_i64 -#define tcg_gen_ussub_tl tcg_gen_ussub_i64 -#define tcg_gen_dup_tl_vec tcg_gen_dup_i64_vec -#define tcg_gen_dup_tl tcg_gen_dup_i64 -#define dup_const_tl dup_const -#else -#define tcg_gen_movi_tl tcg_gen_movi_i32 -#define tcg_gen_mov_tl tcg_gen_mov_i32 -#define tcg_gen_ld8u_tl tcg_gen_ld8u_i32 -#define tcg_gen_ld8s_tl tcg_gen_ld8s_i32 -#define tcg_gen_ld16u_tl tcg_gen_ld16u_i32 -#define tcg_gen_ld16s_tl tcg_gen_ld16s_i32 -#define tcg_gen_ld32u_tl tcg_gen_ld_i32 -#define tcg_gen_ld32s_tl tcg_gen_ld_i32 -#define tcg_gen_ld_tl tcg_gen_ld_i32 -#define tcg_gen_st8_tl tcg_gen_st8_i32 -#define tcg_gen_st16_tl tcg_gen_st16_i32 -#define tcg_gen_st32_tl tcg_gen_st_i32 -#define tcg_gen_st_tl tcg_gen_st_i32 -#define tcg_gen_add_tl tcg_gen_add_i32 -#define tcg_gen_addi_tl tcg_gen_addi_i32 -#define tcg_gen_sub_tl tcg_gen_sub_i32 -#define tcg_gen_neg_tl tcg_gen_neg_i32 -#define tcg_gen_abs_tl tcg_gen_abs_i32 -#define tcg_gen_subfi_tl tcg_gen_subfi_i32 -#define tcg_gen_subi_tl tcg_gen_subi_i32 -#define tcg_gen_and_tl tcg_gen_and_i32 -#define tcg_gen_andi_tl tcg_gen_andi_i32 -#define tcg_gen_or_tl tcg_gen_or_i32 -#define tcg_gen_ori_tl tcg_gen_ori_i32 -#define tcg_gen_xor_tl tcg_gen_xor_i32 -#define tcg_gen_xori_tl tcg_gen_xori_i32 -#define tcg_gen_not_tl tcg_gen_not_i32 -#define tcg_gen_shl_tl tcg_gen_shl_i32 -#define tcg_gen_shli_tl tcg_gen_shli_i32 -#define tcg_gen_shr_tl tcg_gen_shr_i32 -#define tcg_gen_shri_tl tcg_gen_shri_i32 -#define tcg_gen_sar_tl tcg_gen_sar_i32 -#define tcg_gen_sari_tl tcg_gen_sari_i32 -#define tcg_gen_brcond_tl tcg_gen_brcond_i32 -#define tcg_gen_brcondi_tl tcg_gen_brcondi_i32 -#define tcg_gen_setcond_tl tcg_gen_setcond_i32 -#define tcg_gen_setcondi_tl tcg_gen_setcondi_i32 -#define tcg_gen_negsetcond_tl tcg_gen_negsetcond_i32 -#define tcg_gen_negsetcondi_tl tcg_gen_negsetcondi_i32 -#define tcg_gen_mul_tl tcg_gen_mul_i32 -#define tcg_gen_muli_tl tcg_gen_muli_i32 -#define tcg_gen_div_tl tcg_gen_div_i32 -#define tcg_gen_rem_tl tcg_gen_rem_i32 -#define tcg_gen_divu_tl tcg_gen_divu_i32 -#define tcg_gen_remu_tl tcg_gen_remu_i32 -#define tcg_gen_discard_tl tcg_gen_discard_i32 -#define tcg_gen_trunc_tl_i32 tcg_gen_mov_i32 -#define tcg_gen_trunc_i64_tl tcg_gen_extrl_i64_i32 -#define tcg_gen_extu_i32_tl tcg_gen_mov_i32 -#define tcg_gen_ext_i32_tl tcg_gen_mov_i32 -#define tcg_gen_extu_tl_i64 tcg_gen_extu_i32_i64 -#define tcg_gen_ext_tl_i64 tcg_gen_ext_i32_i64 -#define tcg_gen_ext8u_tl tcg_gen_ext8u_i32 -#define tcg_gen_ext8s_tl tcg_gen_ext8s_i32 -#define tcg_gen_ext16u_tl tcg_gen_ext16u_i32 -#define tcg_gen_ext16s_tl tcg_gen_ext16s_i32 -#define tcg_gen_ext32u_tl tcg_gen_mov_i32 -#define tcg_gen_ext32s_tl tcg_gen_mov_i32 -#define tcg_gen_ext_tl tcg_gen_ext_i32 -#define tcg_gen_bswap16_tl tcg_gen_bswap16_i32 -#define tcg_gen_bswap32_tl(D, S, F) tcg_gen_bswap32_i32(D, S) -#define tcg_gen_bswap_tl tcg_gen_bswap32_i32 -#define tcg_gen_hswap_tl tcg_gen_hswap_i32 -#define tcg_gen_revbit8_tl tcg_gen_revbit8_i32 -#define tcg_gen_revbit32_tl(D, S, F) tcg_gen_revbit32_i32(D, S) -#define tcg_gen_revbit_tl tcg_gen_revbit32_i32 -#define tcg_gen_concat_tl_i64 tcg_gen_concat_i32_i64 -#define tcg_gen_extr_i64_tl tcg_gen_extr_i64_i32 -#define tcg_gen_andc_tl tcg_gen_andc_i32 -#define tcg_gen_eqv_tl tcg_gen_eqv_i32 -#define tcg_gen_nand_tl tcg_gen_nand_i32 -#define tcg_gen_nor_tl tcg_gen_nor_i32 -#define tcg_gen_orc_tl tcg_gen_orc_i32 -#define tcg_gen_clz_tl tcg_gen_clz_i32 -#define tcg_gen_ctz_tl tcg_gen_ctz_i32 -#define tcg_gen_clzi_tl tcg_gen_clzi_i32 -#define tcg_gen_ctzi_tl tcg_gen_ctzi_i32 -#define tcg_gen_clrsb_tl tcg_gen_clrsb_i32 -#define tcg_gen_ctpop_tl tcg_gen_ctpop_i32 -#define tcg_gen_rotl_tl tcg_gen_rotl_i32 -#define tcg_gen_rotli_tl tcg_gen_rotli_i32 -#define tcg_gen_rotr_tl tcg_gen_rotr_i32 -#define tcg_gen_rotri_tl tcg_gen_rotri_i32 -#define tcg_gen_deposit_tl tcg_gen_deposit_i32 -#define tcg_gen_deposit_z_tl tcg_gen_deposit_z_i32 -#define tcg_gen_extract_tl tcg_gen_extract_i32 -#define tcg_gen_sextract_tl tcg_gen_sextract_i32 -#define tcg_gen_extract2_tl tcg_gen_extract2_i32 -#define tcg_constant_tl tcg_constant_i32 -#define tcg_gen_movcond_tl tcg_gen_movcond_i32 -#define tcg_gen_add2_tl tcg_gen_add2_i32 -#define tcg_gen_sub2_tl tcg_gen_sub2_i32 -#define tcg_gen_addcio_tl tcg_gen_addcio_i32 -#define tcg_gen_mulu2_tl tcg_gen_mulu2_i32 -#define tcg_gen_muls2_tl tcg_gen_muls2_i32 -#define tcg_gen_mulsu2_tl tcg_gen_mulsu2_i32 -#define tcg_gen_smin_tl tcg_gen_smin_i32 -#define tcg_gen_umin_tl tcg_gen_umin_i32 -#define tcg_gen_smax_tl tcg_gen_smax_i32 -#define tcg_gen_umax_tl tcg_gen_umax_i32 -#define tcg_gen_ussub_tl tcg_gen_ussub_i32 -#define tcg_gen_dup_tl_vec tcg_gen_dup_i32_vec -#define tcg_gen_dup_tl tcg_gen_dup_i32 - -#define dup_const_tl(VECE, C) \ - (__builtin_constant_p(VECE) \ - ? ( (VECE) =3D=3D MO_8 ? 0x01010101ul * (uint8_t)(C) \ - : (VECE) =3D=3D MO_16 ? 0x00010001ul * (uint16_t)(C) \ - : (VECE) =3D=3D MO_32 ? 0x00000001ul * (uint32_t)(C) \ - : (qemu_build_not_reached_always(), 0)) \ - : (target_long)dup_const(VECE, C)) - -#endif /* TARGET_LONG_BITS =3D=3D 64 */ #endif /* TCG_TCG_OP_H */ --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406325; cv=none; d=zohomail.com; s=zohoarc; b=cYPw7dIb0TdCfz/rWISPs41xffz8TL/IGmQ6ZVpg4NR+HL8wKZVunPDo8PgmFCkx0HR8kilY0YRqpgxgrFLBU/1yURH6xKPIKc9KVN0WITKow8TjwEe1zY7STTyrmOgki5TQOoIbnkylQMFUHMtIMIJ29j8cXTo3dIvspcR4Fjg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406325; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=jxrQ5VcJdTOUL5YWm4kLgy6rCzJqiug70440yB9Q+rE=; b=dIIOYpfsS4SJomf7LFDAc++A7mHpQ5n1B0DTSjS39VE26XdXJG+lEpojoYHjTKKotE4qwGIkxFd6g7EqX40MsQQkxLwVY7DKCY72lVyEzKSQrusP1K7LFDRAerDyiuqx5JMJzazAKSrn5bArizJBbKUkhwd4P1QOZQBs5Cz3w2A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406325040527.2269728347834; Sat, 26 Sep 2026 00:05:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMRN-0004Mt-EI; Sat, 26 Sep 2026 03:03: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 1xAMQl-00037e-AH for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:47 -0400 Received: from mail-dy2-x0e.google.com ([2607:f8b0:4864:36::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMQj-0000YH-S5 for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:43 -0400 Received: by mail-dy2-x0e.google.com with SMTP id 5a478bee46e88-341f6327b95so909370eec.0 for ; Sat, 26 Sep 2026 00:02:41 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.02.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:02:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406160; x=1791010960; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=jxrQ5VcJdTOUL5YWm4kLgy6rCzJqiug70440yB9Q+rE=; b=Z0qgd1r+0DnnGZia8Kw/h/nG2mK80X/EhBlXuALgkEVCB6VfeV+gWcdXMnA/Y3Holm a26g7ylSgnxYryrQcNm59F56mf2M6Dci/tRBFCC+CSvaXwkRWA2qt5geCGr24tb6Xx47 aDkX/i0ehFjqjaHP+UsIqpAvlXx22x1Q84gnoJ6dQupNI9MuUv2tKHWcgy0nULx1f+ox H6uqnYY7p94L1MwtJ+/H22VBpuztqifiVA2XbbM/26b0u/7Eo/ueY7U1BRi2n35TK/+9 Q3C0RUpgFpgFelwEfe0uye3jcITOUn13zoEc1X7iiJjft+qWiVHWov91YOOBaXUYegtL G8gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406160; x=1791010960; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=jxrQ5VcJdTOUL5YWm4kLgy6rCzJqiug70440yB9Q+rE=; b=1CuZMqslsNqH6u9OWvCJMokO9Xr1yiJ0+lbj5XMHt008X/o4fEy5MG3DE5gpAhjicZ MhrGr5vkDrZMkLGJr+YO/V+ak+wuQZCSarv+vJAUHBtGRASfzd1PE3a6krHYFfFdo8Kk aql1Xew7gBpnCOIj79L7W936XrgLVeQrKbd+O3b1hrq6ZkkvhED3cO1jos2GKycuC5D/ SDOHAwlveX66gJd69CTPo8C26G9YaSjqQyJsziooMpjMoElDAiohxgNKzlAtqC2Ll/lU 5VriQYc3OboKXjTCL6Dw08/CX09CdEhGpmwtKi4PrR+CCLPbYSmN+HVmFAZfyNVYVETN wYFw== X-Gm-Message-State: AFuF++ktuU/l4FvnITfq8AaA1q52CclaCH0wjIUKAFuPhM8ezpZ2r4FX 5ZHjnw1LZTSFCuPwAqkw2GufCPe7qfEvIyzgMgXi4u23VpSi/kO3w1pNCSOTdffP X-Gm-Gg: AYBFou37LB4m5ZfbZW9UJ795gU2ok/fbH4LledEpnCY3m50zwSYz603HCY6gqj/9SCe oMr2FsTqhCFpysILZ8irvoKhtnArQFA0KF5Pb7x99kmQTOiVF+YJ08+tUH4mIKhd8DyX5pPOpRz CkH+Npisnt4WkbWeypponQgf/RC1rX1qXVER5FCJkMRp1XzC7yvdv+TYIB5Bl1BBK5Kd/2fe8k3 NAmronGD8sO1AMiCVBfmcbLy6CXdxxN5FlbCCdROrklBDOATo4F8fxANvaRo81SIRCSxoNi7HWL SGKtS+80mbmC5/OuYic3G+5vKG/1WO3cR4Af6ALBsDwAqYyQ0oaR8q54FCx1zp4zwoB7qHBn7sZ 6R+NbxWUd2JGYGlCYQk8tg0KFYFzZrfw5Pfd9VHIJJyj/nFNY71Lv8J7xcvLSGspPDOFVT5TWzm TOLUytTHK8DmTJaZOXR8kWYcvggL+cP7GlxLELlqA8Hb9edRUgUWy2Y2BVy7MMUlQkyzZ9iA8rH CkZAb1kfG32HNIoPoT5J9m/M5sfTE8= X-Received: by 2002:a05:7301:71aa:b0:33b:ef77:a1c1 with SMTP id 5a478bee46e88-34271d8cce7mr1958172eec.22.1790406160457; Sat, 26 Sep 2026 00:02:40 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 24/55] tcg: dispatch tcg_gen_gvec_dup_tl at runtime Date: Sat, 26 Sep 2026 15:00:23 +0800 Message-ID: <20260926070057.1234-25-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::e; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0e.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406326872158500 Content-Type: text/plain; charset="utf-8" Replace the TARGET_LONG_BITS alias in tcg-op-gvec.h with a static inline. The duplicate follows tl_is_64() and casts through tcg_i64_from_tl and tcg_i32_from_tl. Signed-off-by: Yonggang Luo --- include/tcg/tcg-op-gvec.h | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/include/tcg/tcg-op-gvec.h b/include/tcg/tcg-op-gvec.h index d82ba6dfaac..96e73178558 100644 --- a/include/tcg/tcg-op-gvec.h +++ b/include/tcg/tcg-op-gvec.h @@ -9,17 +9,16 @@ #define TCG_TCG_OP_GVEC_H =20 #include "tcg/tcg-op-gvec-common.h" +#include "tcg/tcg-op-mem.h" =20 -#ifndef TARGET_LONG_BITS -#error must include QEMU headers -#endif - -#if TARGET_LONG_BITS =3D=3D 64 -#define tcg_gen_gvec_dup_tl tcg_gen_gvec_dup_i64 -#elif TARGET_LONG_BITS =3D=3D 32 -#define tcg_gen_gvec_dup_tl tcg_gen_gvec_dup_i32 -#else -# error -#endif +static inline void tcg_gen_gvec_dup_tl(unsigned vece, uint32_t dofs, + uint32_t s, uint32_t m, TCGv c) +{ + if (tl_is_64()) { + tcg_gen_gvec_dup_i64(vece, dofs, s, m, tcg_i64_from_tl(c)); + } else { + tcg_gen_gvec_dup_i32(vece, dofs, s, m, tcg_i32_from_tl(c)); + } +} =20 #endif --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406458; cv=none; d=zohomail.com; s=zohoarc; b=VGB+ZcAsp04/H0mUUSHTlgo39XRXL/h21mELUkSJ7pifS/eTVyNrE/I+KS4r+7Kcf1FBjPwp7mjJ+B1+lRXrnagYLiff7G2xE6fQ1rc1zjck5C1FyCpbWPSJvAkgPq/beCDH3fkdgnWOgXtRLICVvkbDG8UaElszooT2TDuhwvs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406458; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+/cSI9KSeYzGrYLevJhsdqe9Hab1ATMpzGrHMp6RW0U=; b=fTfvw8yH38F0xrv9ghd+1GcUqBWIImNmFGF2rUTgzaeCVjFt2o38pehJElrcBw6RFsPllssVhYZUoRym+oy4E+mb67Gojge+8hLeAtQ9Sph5m1Ybwy1fhaSHXGO/pGMD8FE5RQXRzDbtHlkD/cYmnG3Hd3Zst0zNDIlG2ztRomc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406458687640.0312128410717; Sat, 26 Sep 2026 00:07:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMTy-0007Ij-4S; Sat, 26 Sep 2026 03:06:04 -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 1xAMQq-0003Ci-9Q for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:48 -0400 Received: from mail-dy2-x27.google.com ([2607:f8b0:4864:36::27]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMQo-0000Ya-Dm for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:47 -0400 Received: by mail-dy2-x27.google.com with SMTP id 5a478bee46e88-3381a6a05c9so987993eec.1 for ; Sat, 26 Sep 2026 00:02:45 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.02.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:02:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406164; x=1791010964; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=+/cSI9KSeYzGrYLevJhsdqe9Hab1ATMpzGrHMp6RW0U=; b=sE3TPoYyy+w/5D1Rr+niiEDD5DEbfFd0GY55nP2glZrUwnP7Hu0w7YnG0sxXGjtlxC TqTilCeK2LseGqJRwGOinsJHVzzUArXoCHICBc8kx0wtdkHKwNcn5o+7EGiVVwfbvgnw UOPhxl6CDZPeHbKB4AdpMonUFTJwD7K3M90fiGG71Ux17OBBx8aZRZcDsDrSYusQKfr6 sI9Xgb7i3pKS4V6sNmzCCoMS2xUnyFDYzKQ18gG30Ukj78gUKvdeIFhZvFQtu+5mhmKq NAQlFPd2pQf2NGqWmf6+OlF4Azgl6GtQroVcKJAs3+xFnx1Hni3OuIrHXb0CGpdydkVn idLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406164; x=1791010964; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=+/cSI9KSeYzGrYLevJhsdqe9Hab1ATMpzGrHMp6RW0U=; b=A/sqNahLKT5EafKW4rjnIkR5s1biU1j60v3nATcRCjPPvBCjUMDeWbGQI26Om5dQzm i8GbSmRVZKqB8cOVDp7rIMDJrarT0NeA3bnfre6b0AdKecSDVA25XtqCt5ZI5OjbksQV qyMDk28kJ+B+wsQFe+CroocKykUQ2rK9tSe99H59/SAIdSoBrXA7A095Fgr5g1U00xJp YcQ6iALkCOVB9XFDl0ubdwL23HcsRVrlROeJ40dYMTIv/4L04pByzaAdZGUMmIBuq6gl YtSpd7AT9+jNIg2bIiuEyCZFuVWbAs9ubscsW4OYnCmzNsHVjH5Wuj30rjv4h+sJVvRm 2Jvw== X-Gm-Message-State: AFuF++kvjUK/Wjfr0RUAfQYz72C3xjhl5z3IzMyTjRzELBB8BCrhJ4Lq En6Vwar6Gl2eaG5naIRm8LjCbvBQrenjsjxVlX8xDM29J96w7M2AUAs4Ga1M97qk X-Gm-Gg: AYBFou1V93PZtpAcI4vqj42fmxJeKX9LxtDWEBrGb+CNqdmWNXMSYQcvnOhT/uZRH54 4mx8m6uLK0qITwClKS77ZxkkcSuLtwLFCCzlzgJ1uCLO1HST3lClqvoRX6asEfHE3kKiP98Px2m xLW2kXwgpiBYRuaGNFmxTeAVau7oKSwFdOYUerGsrnb7LAjfGjyqbBE41RWN2SIe4NE5AVcL0W9 +7AAymFcKWNiGeUIyZWdqJ8yN7i6wyu1qWXcvXJz6+NoJWSwglzs6NZbOk7fsmLcEyGz3JQG5bz njLncyOMDmaXAivTxcTdB44UkFPXuVnq1aLj0k1g/x8Q1j/vXP1qhTgX7E/nX3OqfmxPHJtFYGe 8kqaVv88sB+4WmGSaPLnRzrctchRivD26KtUYOxIMjZkNoUDLOHhF/K6Fbziv9qEIbvYfSWuPww IgM2Sqbydi7dJNExNLg9qRo/Hu2oilE4PeTzQD2RgFva3AV1iOfKgCeWfGSXwEdXH7p1Rs5eXtK LE0MbMBDr56jLnuZ1H3EFbF/LoUjeU= X-Received: by 2002:a05:7301:7e04:b0:33b:c122:6bd4 with SMTP id 5a478bee46e88-342701bed7amr1810144eec.6.1790406164340; Sat, 26 Sep 2026 00:02:44 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 25/55] tcg: give common-system helper tl an i64 slot Date: Sat, 26 Sep 2026 15:00:24 +0800 Message-ID: <20260926070057.1234-26-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::27; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x27.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1790406459573158500 Content-Type: text/plain; charset="utf-8" dh_alias_tl stays tl. In common-system code the helper C slot stays uint64_t and the typecode stays i64, because one typemask is shared by 32- and 64-bit guests. tcg_gen_callN zero-extends an I32 temp into that slot and truncates an i64 return. Signed-off-by: Yonggang Luo --- include/exec/helper-head.h.inc | 21 ++++++++++++++++++-- tcg/tcg.c | 35 ++++++++++++++++++++++++++++++++-- 2 files changed, 52 insertions(+), 4 deletions(-) diff --git a/include/exec/helper-head.h.inc b/include/exec/helper-head.h.inc index 7dec5f5b067..6612937c5ae 100644 --- a/include/exec/helper-head.h.inc +++ b/include/exec/helper-head.h.inc @@ -45,16 +45,29 @@ #define dh_ctype_noreturn G_NORETURN void #define dh_ctype(t) dh_ctype_##t =20 +#define dh_alias_tl tl #ifdef COMPILING_PER_TARGET # include "exec/target_long.h" # if TARGET_LONG_BITS =3D=3D 32 -# define dh_alias_tl i32 # define dh_typecode_tl dh_typecode_i32 # else -# define dh_alias_tl i64 # define dh_typecode_tl dh_typecode_i64 # endif # define dh_ctype_tl target_ulong +#else +/* + * Common-system helper FFI only: helper_info.typemask is compile-time + * and shared by 32- and 64-bit guests, so the C/libffi slot is + * max(i32, i64) -- always i64 / uint64_t. This is not the TCG temp + * width. TCGv_tl stays dynamic (I32 or I64 via tcg_type_tl()); + * tcgv_tl_temp() is the handle-to-TCGTemp accessor and is valid for + * either size. Call lowering zero-extends an I32 temp into this + * unsigned i64 slot (dh_typecode_tl is i64, not s64). A helper C + * body that needs a signed guest value must narrow to XLEN and + * sign-extend itself; (int64_t)arg is not a 32-bit sign-extend. + */ +# define dh_typecode_tl dh_typecode_i64 +# define dh_ctype_tl uint64_t #endif /* COMPILING_PER_TARGET */ =20 #if __SIZEOF_POINTER__ =3D=3D 4 @@ -76,6 +89,7 @@ #define dh_retvar_decl0_i64 TCGv_i64 retval #define dh_retval_decl0_i128 TCGv_i128 retval #define dh_retvar_decl0_ptr TCGv_ptr retval +#define dh_retvar_decl0_tl TCGv_tl retval #define dh_retvar_decl0(t) glue(dh_retvar_decl0_, dh_alias(t)) =20 #define dh_retvar_decl_void @@ -84,6 +98,7 @@ #define dh_retvar_decl_i64 TCGv_i64 retval, #define dh_retvar_decl_i128 TCGv_i128 retval, #define dh_retvar_decl_ptr TCGv_ptr retval, +#define dh_retvar_decl_tl TCGv_tl retval, #define dh_retvar_decl(t) glue(dh_retvar_decl_, dh_alias(t)) =20 #define dh_retvar_void NULL @@ -92,6 +107,7 @@ #define dh_retvar_i64 tcgv_i64_temp(retval) #define dh_retvar_i128 tcgv_i128_temp(retval) #define dh_retvar_ptr tcgv_ptr_temp(retval) +#define dh_retvar_tl tcgv_tl_temp(retval) #define dh_retvar(t) glue(dh_retvar_, dh_alias(t)) =20 #define dh_typecode_void 0 @@ -115,6 +131,7 @@ #define dh_callflag_i64 0 #define dh_callflag_i128 0 #define dh_callflag_ptr 0 +#define dh_callflag_tl 0 #define dh_callflag_void 0 #define dh_callflag_noreturn TCG_CALL_NO_RETURN #define dh_callflag(t) glue(dh_callflag_, dh_alias(t)) diff --git a/tcg/tcg.c b/tcg/tcg.c index ecc1f54c1bf..ba2a1127f92 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -2515,6 +2515,8 @@ static void tcg_gen_callN(void *func, TCGHelperInfo *= info, TCGTemp *ret, TCGTemp **args) { TCGv_i64 extend_free[MAX_CALL_IARGS]; + TCGv_i64 ret_temp =3D NULL; + TCGTemp *orig_ret =3D ret; int n_extend =3D 0; TCGOp *op; int i, n, pi =3D 0, total_args; @@ -2524,6 +2526,19 @@ static void tcg_gen_callN(void *func, TCGHelperInfo = *info, g_once_init_leave(HELPER_INFO_INIT(info), HELPER_INFO_INIT_VAL(inf= o)); } =20 + /* + * An I32 temp in an i64 slot is zero-extended; s64 is sign-extended. + * The call returns the wide temp, then extrl writes the I32 back. + */ + if (ret !=3D NULL && ret->type =3D=3D TCG_TYPE_I32) { + unsigned typecode =3D info->typemask & 7; + + if (typecode =3D=3D dh_typecode_i64 || typecode =3D=3D dh_typecode= _s64) { + ret_temp =3D tcg_temp_ebb_new_i64(); + ret =3D tcgv_i64_temp(ret_temp); + } + } + total_args =3D info->nr_out + info->nr_in + 2; op =3D tcg_op_alloc(INDEX_op_call, total_args); =20 @@ -2560,8 +2575,19 @@ static void tcg_gen_callN(void *func, TCGHelperInfo = *info, for (i =3D 0; i < n; i++) { const TCGCallArgumentLoc *loc =3D &info->in[i]; TCGTemp *ts =3D args[loc->arg_idx] + loc->tmp_subindex; + TCGCallArgumentKind kind =3D loc->kind; =20 - switch (loc->kind) { + if (kind =3D=3D TCG_CALL_ARG_NORMAL && ts->type =3D=3D TCG_TYPE_I3= 2) { + unsigned typecode =3D + extract32(info->typemask, (loc->arg_idx + 1) * 3, 3); + + if (typecode =3D=3D dh_typecode_i64 || + typecode =3D=3D dh_typecode_s64) { + kind =3D TCG_CALL_ARG_EXTEND_U + (typecode & 1); + } + } + + switch (kind) { case TCG_CALL_ARG_NORMAL: case TCG_CALL_ARG_BY_REF: case TCG_CALL_ARG_BY_REF_N: @@ -2574,7 +2600,7 @@ static void tcg_gen_callN(void *func, TCGHelperInfo *= info, TCGv_i64 temp =3D tcg_temp_ebb_new_i64(); TCGv_i32 orig =3D temp_tcgv_i32(ts); =20 - if (loc->kind =3D=3D TCG_CALL_ARG_EXTEND_S) { + if (kind =3D=3D TCG_CALL_ARG_EXTEND_S) { tcg_gen_ext_i32_i64(temp, orig); } else { tcg_gen_extu_i32_i64(temp, orig); @@ -2602,6 +2628,11 @@ static void tcg_gen_callN(void *func, TCGHelperInfo = *info, for (i =3D 0; i < n_extend; ++i) { tcg_temp_free_i64(extend_free[i]); } + + if (ret_temp !=3D NULL) { + tcg_gen_extrl_i64_i32(temp_tcgv_i32(orig_ret), ret_temp); + tcg_temp_free_i64(ret_temp); + } } =20 void tcg_gen_call0(void *func, TCGHelperInfo *info, TCGTemp *ret) --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406568; cv=none; d=zohomail.com; s=zohoarc; b=fJSsLovPg90HUkIktRWJuX9wu4NvDzbOdrW43bXvB5YUCQT2aEjZipJe9ZnATffdfugrZ7bFEEVcFkqYjE1GUjSBzISXkA7dlUM1wXP2a8SbfrLYeNSl/aewNvUZDSQbtShIsuHdiP7Pw0EPWd6xqTFVfMfFbeU7N1iy+nQOKtM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406568; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=13Vpk3slAVMN43yepfwDbpWXacf+qhSBumghvgGIwSM=; b=fc3TwkJJKff6iohGQbMfG9k9G57UL57/cUKc3WqsgkIrx75B3GetIVOXMuCttVbPEfjRWCsjzx5WjOyCD3vV4CfeSQndwCiSyoWUIORpGuSBTwqalZ4dCnLbc7p5I38CBK4B6EneX/fNbKY181aFlIrLx1HYnOE/yVDrXqgktD8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406568439947.5601686783683; Sat, 26 Sep 2026 00:09:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMRT-0004k8-TE; Sat, 26 Sep 2026 03:03:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAMQu-0003ON-3d for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:52 -0400 Received: from mail-dy2-x0e.google.com ([2607:f8b0:4864:36::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMQr-0000Z7-HT for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:51 -0400 Received: by mail-dy2-x0e.google.com with SMTP id 5a478bee46e88-341d0522b4dso1977550eec.1 for ; Sat, 26 Sep 2026 00:02:49 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.02.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:02:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406168; x=1791010968; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=13Vpk3slAVMN43yepfwDbpWXacf+qhSBumghvgGIwSM=; b=aImukoiPsd8QaqmSkWQ8Yfx04QlyvcSSqJHERoKN5XRz/BGoD7ssnv45JxxdmZ3gv/ PljWNuUEJx22pJ4nJU/gUqvc0/61R/NE7jj9ofrMD3XQxrU3Mrd8CYl7bvn54FlDPJ7n 9D6YXwPvncd7qpIbGSXmtpsB9KkRhmETSXgPZ01QawlufcQXk7xey4KIRxxr2bjsWIp3 ukZ9AuA+onhKBJc2bvqngyYeQnGzkpTC64mqwxBMNglszEjX3fvHUGsXi9ZZPQsfyFBB 76DOFtpJ9OVsoWFIBRtMMqko5pE0qQeDGuJvmFwUXnUhINDGviAm7iK29iRnUgRAaRXz wSFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406168; x=1791010968; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=13Vpk3slAVMN43yepfwDbpWXacf+qhSBumghvgGIwSM=; b=drvWbxuow+BHie20yxTuKfNhN/GnuvyQoszXJR0yky/Jm+CKuuiocKxa45hhHDUmsm tqXYAhmdd+eHgKGM9LQRP+13yxLJEuERY7/RjqjAv4zDATWD/O54RY2+P+3v0TyWbadU YsEHg4M75aBkQ/+3lAMfSLhwLioeHzjiUWi4jEUiA6OwCEMELMz7a+q91+lUtky2tdqk Da5YLCmiQl+XTOA0u659mUedt7bgItXv/IDa2MtfvGhqtPnmJyyrp0xECP1at+7+BwSr wX9F4f8+mg9jzGT+Xm2kB40CztcbPvABMt6YLpBSltTqOHlU+/R+INk/9MvCianqTbmR sUQg== X-Gm-Message-State: AFuF++nFN4gU/riOxOnIC2L4FuW4LUy4Pds299Uld5dzD4Uo/YFGb8Hw qyt9PMJLDPVhGUa1Z8vywNKaH1j5aLivBcejnP0qdKKR0G3D/fNjlYlCfqHDscxr X-Gm-Gg: AYBFou2yNlrLqt6B3cDZhHUxDFv8Cweq5/8KNkldryjYPZzDYKFQ1uSeJk9tkX+rLvR YHucfj8B3JPh3yf8gjqTyFV9YSdyKS1RfWpeEkHF97dgoLsOR0DG7bFco9/FNbJ4ZyB2ULohe2u XVf7D9Xu4Vwa4cyFmVXMLWTENlU2fRVWJvxKb5U2S2+76yo8pFlyiNAF1Ub1vgBD4bQMzZYi4cy fU6oOV15Ak8OEjo+TWH6NBf48MjgoG/tBVyyIxd7xj6Bq8Z6EKwqa5vNKEELxG/fJbP6PJG5KKn iUCxmr6tWBG7bfCGWrabQmMzt3+iPxPvO142dD0gFIWJDyHNe2MiZ5GFDkEEqToQAhnhgJTkbZc q/88STWCKVCjsIOvRFOUPoDeKhShjZTkTEEFBGnfpHcAGXSYarMdRpRaWHcyptLluYI41x8cR4F miFzXyaNec1CDaYkRQr06doqlREh66FfcvC2biDzxfLX7pq/yhMb8wFGs23qR3dyTbmOQaku5jQ z+tTzmR2/PTCTuTE/h9j9xmMDo9Q6w= X-Received: by 2002:a05:7300:ae0f:b0:33b:eadd:9013 with SMTP id 5a478bee46e88-342705b9cb5mr2029096eec.6.1790406168140; Sat, 26 Sep 2026 00:02:48 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 26/55] accel/tcg: move helper_exit_atomic next to cpu_loop_exit_atomic Date: Sat, 26 Sep 2026 15:00:25 +0800 Message-ID: <20260926070057.1234-27-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::e; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0e.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406569740158500 Content-Type: text/plain; charset="utf-8" helper_exit_atomic only forwards to cpu_loop_exit_atomic. Define it in cpu-exec-common.c with that function, and move its DEF_HELPER line to cpu-exec-common.h. That file emits helper_info_exit_atomic. tcg-runtime.c keeps the integer helpers. Signed-off-by: Yonggang Luo --- accel/tcg/cpu-exec-common.c | 10 ++++++++++ accel/tcg/cpu-exec-common.h | 1 + accel/tcg/tcg-runtime.c | 8 -------- accel/tcg/tcg-runtime.h | 2 -- include/exec/helper-gen-common.h | 4 ++++ include/exec/helper-proto-common.h | 4 ++++ 6 files changed, 19 insertions(+), 10 deletions(-) create mode 100644 accel/tcg/cpu-exec-common.h diff --git a/accel/tcg/cpu-exec-common.c b/accel/tcg/cpu-exec-common.c index 68077c8fd9d..d20cece1c5f 100644 --- a/accel/tcg/cpu-exec-common.c +++ b/accel/tcg/cpu-exec-common.c @@ -23,8 +23,13 @@ #include "qemu/plugin.h" #include "qemu/main-loop.h" #include "accel/tcg/cpu-loop.h" +#include "exec/helper-proto-common.h" #include "internal-common.h" =20 +#define HELPER_H "accel/tcg/cpu-exec-common.h" +#include "exec/helper-info.c.inc" +#undef HELPER_H + bool tcg_allowed; =20 /* @@ -120,3 +125,8 @@ void cpu_loop_exit_atomic(CPUState *cpu, uintptr_t pc) cpu->exception_index =3D EXCP_ATOMIC; cpu_loop_exit_restore(cpu, pc); } + +void HELPER(exit_atomic)(CPUArchState *env) +{ + cpu_loop_exit_atomic(env_cpu(env), GETPC()); +} diff --git a/accel/tcg/cpu-exec-common.h b/accel/tcg/cpu-exec-common.h new file mode 100644 index 00000000000..922acc2179d --- /dev/null +++ b/accel/tcg/cpu-exec-common.h @@ -0,0 +1 @@ +DEF_HELPER_FLAGS_1(exit_atomic, TCG_CALL_NO_WG, noreturn, env) diff --git a/accel/tcg/tcg-runtime.c b/accel/tcg/tcg-runtime.c index 7c0aab98a80..764c62c684d 100644 --- a/accel/tcg/tcg-runtime.c +++ b/accel/tcg/tcg-runtime.c @@ -23,10 +23,7 @@ */ #include "qemu/osdep.h" #include "qemu/host-utils.h" -#include "exec/cpu-common.h" #include "exec/helper-proto-common.h" -#include "accel/tcg/cpu-loop.h" -#include "accel/tcg/getpc.h" =20 #define HELPER_H "accel/tcg/tcg-runtime.h" #include "exec/helper-info.c.inc" @@ -129,8 +126,3 @@ uint64_t HELPER(ctpop_i64)(uint64_t arg) { return ctpop64(arg); } - -void HELPER(exit_atomic)(CPUArchState *env) -{ - cpu_loop_exit_atomic(env_cpu(env), GETPC()); -} diff --git a/accel/tcg/tcg-runtime.h b/accel/tcg/tcg-runtime.h index 0b832176b33..9b4c1c24916 100644 --- a/accel/tcg/tcg-runtime.h +++ b/accel/tcg/tcg-runtime.h @@ -22,8 +22,6 @@ DEF_HELPER_FLAGS_1(ctpop_i64, TCG_CALL_NO_RWG_SE, i64, i6= 4) =20 DEF_HELPER_FLAGS_1(lookup_tb_ptr, TCG_CALL_NO_WG_SE, cptr, env) =20 -DEF_HELPER_FLAGS_1(exit_atomic, TCG_CALL_NO_WG, noreturn, env) - #ifndef IN_HELPER_PROTO /* * Pass calls to memset directly to libc, without a thunk in qemu. diff --git a/include/exec/helper-gen-common.h b/include/exec/helper-gen-com= mon.h index 834590dc4e5..ed5521ad881 100644 --- a/include/exec/helper-gen-common.h +++ b/include/exec/helper-gen-common.h @@ -7,6 +7,10 @@ #ifndef HELPER_GEN_COMMON_H #define HELPER_GEN_COMMON_H =20 +#define HELPER_H "accel/tcg/cpu-exec-common.h" +#include "exec/helper-gen.h.inc" +#undef HELPER_H + #define HELPER_H "accel/tcg/tcg-runtime.h" #include "exec/helper-gen.h.inc" #undef HELPER_H diff --git a/include/exec/helper-proto-common.h b/include/exec/helper-proto= -common.h index 76e6c25becb..28afa7782d0 100644 --- a/include/exec/helper-proto-common.h +++ b/include/exec/helper-proto-common.h @@ -9,6 +9,10 @@ =20 #include "qemu/atomic128.h" /* for HAVE_CMPXCHG128 */ =20 +#define HELPER_H "accel/tcg/cpu-exec-common.h" +#include "exec/helper-proto.h.inc" +#undef HELPER_H + #define HELPER_H "accel/tcg/tcg-runtime.h" #include "exec/helper-proto.h.inc" #undef HELPER_H --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406362; cv=none; d=zohomail.com; s=zohoarc; b=QC0fGdAidl1mqlOjudtMCtfnVseGjY3nLAx+MPA8ZAFp4l51k+N2TgK1Bf6TcD4Y3cHuvTrOaJq43O+xNFl+/ZWrWADQjZwWPfOewNaTw/+1kPBq+AkuuajqyVfLSptZnb3j5vUlIwapXwNT9bYdqdtNzRT8qC5HnXLk6AeFZ+U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406362; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xi435pN97DW3z7AycQOykLlzIzDdtWj05eM4KODr8Q4=; b=aIPpD6pmtBK+Dbz6E+Eb2wMfAIGvP2B+p9qGEfsP2KAmKY3gCzznxcmT4srea5e2pA8212ejk7zQOWR1PNucv9B8fJs3dabmk38UWEaDuy9UTrr/nDSLD5I69ZTFiDXNhu6Tp34A+Q1y8k8kVZmLzo0+yi0v8TiB+J+RJ4Yq9PA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406362212762.5604346738978; Sat, 26 Sep 2026 00:06:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMSu-0006BP-9N; Sat, 26 Sep 2026 03:05:05 -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 1xAMQx-0003bd-IP for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:55 -0400 Received: from mail-dy2-x0f.google.com ([2607:f8b0:4864:36::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMQv-0000ZP-EZ for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:55 -0400 Received: by mail-dy2-x0f.google.com with SMTP id 5a478bee46e88-33e62211987so1752339eec.2 for ; Sat, 26 Sep 2026 00:02:53 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.02.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:02:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406172; x=1791010972; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=xi435pN97DW3z7AycQOykLlzIzDdtWj05eM4KODr8Q4=; b=Q6gHOW9KDdlqFTVPNXtXGppOAVSSN4FbzteYq261k0XJ+/GsxWFXlsPj19rlNoLcqs qD5t5phHn3HcfQ4KQNXnWpIiQrUDsBy/+Bdum0Bq7rLzruwEfKrp0aq8m6lAuX4pA1ng pSDbY8QHcDXc+RxwgWpnlE7BCeJ/g4zIwP4+6n/gLstTXPpeSI4P9RfKuS6rUBD2pXiZ nX3R+YOa/1IxjVxcE7TY3AJhcFpztZdGrQaA57hILz+0ZKOlGk6osiazZv5JPAo5GksW zJgho4as3HjqeYHJjlyp39fSXTxRNfz+EFO3/1r6Dirjkxk8EWjCARyLz275JUrLZj93 B88w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406172; x=1791010972; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=xi435pN97DW3z7AycQOykLlzIzDdtWj05eM4KODr8Q4=; b=v2beW/upUbR+gHQEo6IBn2k1b36gNp2TDuohzqXPv5Q9zdZ536Sc2RCpy/Mnig5N1P NM4kt7pJZ7Q1hQ2hoG9GQJVtaFsb1wlCEaS0hjINTVU19ftyeSVAJWpItjUBpLbu2DlC 27eJxdK+X61KZhx8QBXIyS8Mf83nlVX7pv8BgW6XEBpg7CCvlqfKRdllhRj/ogMboIYZ s+OX+f+xK/XuVZ3XfPKLKZnSlYKXK5X//ye4R2tPzkwa5cjsfTgf6A59TTOYcCBYTQD4 s4ZDV9ygFVqmCCLc9kPybwrUSj9bD2lkAxN/rV0miteJIqTiCzfqhiDLYQXB611DPv+G yxRA== X-Gm-Message-State: AFuF++nsrVAg+ts82LtohlBncW2sQL90mKwmBf4YG6YkiqGO+otJWXTj iKNh6xHVlwlpdWpPCQBhoNZaAJhQCZFv7jPnB6JJ86Ne0Yl8Jz7O7OyuGaduf0gO X-Gm-Gg: AYBFou10J2s9FZNwCl9ysg466AXD/a0MldVzkIJdvMzRt23I7K58ULaNj4zb8ytdapa aA0xfC0/Mc46m6ls7xXniN+KZ75xySTH0S/bN27fyctzdMF74P1DWHA+uZUIaqaxs3XLyA/JEaY wNQNMVhxKffsvRjZtQXNHSzzs/VokPEylJ5H6pJPxnrrWD0R0b6US+b4DqFBYcPiYlHC7g3yQo3 LqcnTnLQn6US322HJHMRmsMysUXsbvteYkLiN8VVVcZ9U2eZrsbgWPPIYxHVjkEQv5p6OlnFPm6 CcfYcbz6NOfUu/iyXObzkaGi2/YlnQcgSCGJTND0At62TRrkzH05td+y1Wx3EJUhjYMkGtn4aug JRJWAfHVa44Hr71/t13fi6+YFTMdMvCkHBoUAf/aZC10Tql1HCCf1GsbnjRwzRi7SD2ZqFcfQ+f CwTT8g/FH228oALiVJw9TMMiDYmWiL4tYt18MnP6lE24pKPobY0SSRmOYsim2WSQ0MrMtyp9kMZ mw1FvnL5YTiy9SlnjPxMAbndG4Olhk= X-Received: by 2002:a05:7301:1f06:b0:33b:fa13:61ca with SMTP id 5a478bee46e88-3427246bffbmr2590874eec.33.1790406171918; Sat, 26 Sep 2026 00:02:51 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 27/55] tcg: move dup_const into tcg.c Date: Sat, 26 Sep 2026 15:00:26 +0800 Message-ID: <20260926070057.1234-28-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::f; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0f.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406362926158500 Content-Type: text/plain; charset="utf-8" dup_const replicates a constant by element size. Define it next to tcg_constant_vec in tcg.c and drop the copy in tcg-op-gvec.c. Signed-off-by: Yonggang Luo --- tcg/tcg-op-gvec.c | 17 ----------------- tcg/tcg.c | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/tcg/tcg-op-gvec.c b/tcg/tcg-op-gvec.c index 0d649cc13b2..c30b9d5d6fc 100644 --- a/tcg/tcg-op-gvec.c +++ b/tcg/tcg-op-gvec.c @@ -417,23 +417,6 @@ static inline bool check_size_impl(uint32_t oprsz, uin= t32_t lnsz) =20 static void expand_clr(TCGv_ptr dbase, uint32_t dofs, uint32_t maxsz); =20 -/* Duplicate C as per VECE. */ -uint64_t (dup_const)(unsigned vece, uint64_t c) -{ - switch (vece) { - case MO_8: - return 0x0101010101010101ull * (uint8_t)c; - case MO_16: - return 0x0001000100010001ull * (uint16_t)c; - case MO_32: - return 0x0000000100000001ull * (uint32_t)c; - case MO_64: - return c; - default: - g_assert_not_reached(); - } -} - /* Duplicate IN into OUT as per VECE. */ void tcg_gen_dup_i32(unsigned vece, TCGv_i32 out, TCGv_i32 in) { diff --git a/tcg/tcg.c b/tcg/tcg.c index ba2a1127f92..6362eef36bd 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -2287,6 +2287,23 @@ TCGv_ptr tcg_constant_ptr_int(intptr_t val) return temp_tcgv_ptr(tcg_constant_internal(TCG_TYPE_PTR, val)); } =20 +/* Duplicate C as per VECE. */ +uint64_t (dup_const)(unsigned vece, uint64_t c) +{ + switch (vece) { + case MO_8: + return 0x0101010101010101ull * (uint8_t)c; + case MO_16: + return 0x0001000100010001ull * (uint16_t)c; + case MO_32: + return 0x0000000100000001ull * (uint32_t)c; + case MO_64: + return c; + default: + g_assert_not_reached(); + } +} + TCGv_vec tcg_constant_vec(TCGType type, unsigned vece, int64_t val) { val =3D dup_const(vece, val); --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406209; cv=none; d=zohomail.com; s=zohoarc; b=dHBhhfse0w+jeJgtVgZnNHt2tezBikQgPdh4M9tQwJqHsL7v3gPF1XeAP4eecImbowqKnZhPQjZZsA2pwLUkSdNxurdmrfAIs652Whd7HLI5s5BWE0AhoSEf0Fx3Vj10mDi9GHac4V1JeE6bxcd38fWSaL1oci92wPk6UWcPCkk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406209; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=awp3H7a2O80uyPRL2fhVcR6Bx9g9YW6vpgBv8R062bc=; b=mzdCZUPTIMoHza5yhIAYPpAmliwxuND37v8q5S9ef8EC6xj5xboY4K2Y+UdO2dx6TV+3zQoctOJWf4GqvKg7lcLXwlKxzAoltw0Nb1dkaAjUe20DxdxPa9BvQ3KWXIV2gZfz2Bcppo1lZJtJT5cHbmMeXhCjfPAbQDgxh8XS0Gc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406209982868.1866560032112; Sat, 26 Sep 2026 00:03:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMRR-0004a2-6Z; Sat, 26 Sep 2026 03:03:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAMR2-0003lz-5y for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:03 -0400 Received: from mail-dy2-x0f.google.com ([2607:f8b0:4864:36::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMR0-0000Zz-F8 for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:02:59 -0400 Received: by mail-dy2-x0f.google.com with SMTP id 5a478bee46e88-340fbf9c1c6so928476eec.3 for ; Sat, 26 Sep 2026 00:02:58 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.02.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:02:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406177; x=1791010977; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=awp3H7a2O80uyPRL2fhVcR6Bx9g9YW6vpgBv8R062bc=; b=FxwZOAbWXipUxV2X1xt6jXkNHuimGnt6IeuKRuqSoSRDsJf3IwbcQLgKgW6nwTqI+e YvuvYbbxmlPGjpK6qqq9hGhwL1Q1KA3apYv0zimwZE0gYz96DDsvRali+W5/8cwf5k1d fH60WPBmpa41Yaxz+eLBtRMiA1wdK/RBOpXJPFPuISxHsSfT6GA89YGpPNNMinm0ktl2 s8YTVVroRaBO5W45oZdStLVEmjrytnw8CpOpiFeGXRH22Y0mWkY07D2soZuM6nibLyRm sAIw0q6w6dj3l4iJYdTthrrH39FII/qOOGyXRohhxfd1AP5zo+YH0HSAYlR7gQo1Y7Ij drlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406177; x=1791010977; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=awp3H7a2O80uyPRL2fhVcR6Bx9g9YW6vpgBv8R062bc=; b=hu7gDejC+mLp8FUYz5N4Aaq1wa3znh97ZSwi+hLZCggDlNEK0Xhu4eSddoTrV4ELp9 H017OtY1D/YbDm+tT7ASto/IlY3n2o3dojLXtnlq+uxNc3gdJUGaMZg6wIYqvcA26ZNL VB51qOSLmIlxdIvNjlUfofQhTgz0fLujnr6i+T2qXnSnpdH7UqFlHcQrzO3RF+82VNfR jxRxPxo9S4B+lN+DymvvayLfJXrdbupydncBPlnokQ45TPsX9o7qaYg2YGCI5lnabDrC 6dny7LnqVE+Radakzf0SoF8WtheXMYwNdq7VXxzIs9ouUBBWCtzhMHKIPX7Y4aYqbMAO GrsQ== X-Gm-Message-State: AFuF++nKVBE1IyQtN7JTBFbhdOKSpha94zl4sXj4q+UJMlj0TeBuJZTY GFqQmEgtILcSWmKxsp1dODhGr1Ov+zmrYlOD6gHzJzkIMLU4LGO7o2pjArZ0UWH9 X-Gm-Gg: AYBFou03WFCTc3CM57zEOf476S8jelz0Y44Yv9ebcE0G9P7qqFxJhw0QNj/ubT9Rllu FxIbzN2IxGOdkLipckXJ25uLOLxitWJqvDbtN0MBu5ERmzV2P0Z+CXGsAyqtwAFfWszrV2bdAYp yx6lx8AU+NILQ7E6yRunJZSieUTWeOcrjvQL+dwjWQtewnCu3gHlydCURv5r8zuSkV9ROl1Fcd1 mxRxcTLXP6VbNjb3H4mQ4vMJR7YoibtNLWoJyQGW+rkBFBXNH7XxiYhZwxY0vS+wntwCnrEzxgA 1qKMFjqXKKD0LrswfF2/vvqox/36sjK8t1BOSsKi3RefChEAk9KTJ035/6gQgSSe/4ovUMyFshF EFT37E80qvRPH3j8xVf3nH1ia3KzoE03PTEy31lnAjYW0mX98NbaEpURi6vgtP8nK/2PmQKNrNE xSw548kBfYnCLNk3+yBiBjfUnzqn+9RnBwzBBVIDnL/DUbp+azeL/TEdQ40MZ3ql0d86whTKvvz vu4joZoy5OVJKURGambltEQQ6/Rqug= X-Received: by 2002:a05:7300:d10a:b0:33b:e1f2:fa10 with SMTP id 5a478bee46e88-34271d8d2fbmr1860726eec.24.1790406176444; Sat, 26 Sep 2026 00:02:56 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 28/55] tcg: move goto_tb helpers into tcg-op-ldst.c Date: Sat, 26 Sep 2026 15:00:27 +0800 Message-ID: <20260926070057.1234-29-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::f; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0f.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406210331158500 Content-Type: text/plain; charset="utf-8" tcg_gen_goto_tb and tcg_gen_lookup_and_goto_ptr call plugin and lookup_tb_ptr helpers. Define them in tcg-op-ldst.c. tcg_gen_op1i is static in tcg-op.c, so the moved calls use tcg_gen_op1. Signed-off-by: Yonggang Luo --- tcg/tcg-op-ldst.c | 31 +++++++++++++++++++++++++++++++ tcg/tcg-op.c | 32 -------------------------------- 2 files changed, 31 insertions(+), 32 deletions(-) diff --git a/tcg/tcg-op-ldst.c b/tcg/tcg-op-ldst.c index 22211ccb452..fb13c2f1523 100644 --- a/tcg/tcg-op-ldst.c +++ b/tcg/tcg-op-ldst.c @@ -1346,3 +1346,34 @@ GEN_ATOMIC_HELPER128(xchg, mov2, 0) =20 #undef GEN_ATOMIC_HELPER #undef GEN_ATOMIC_HELPER128 + +void tcg_gen_goto_tb(unsigned idx) +{ + /* We tested CF_NO_GOTO_TB in translator_use_goto_tb. */ + tcg_debug_assert(!(tcg_ctx->gen_tb->cflags & CF_NO_GOTO_TB)); + /* We only support two chained exits. */ + tcg_debug_assert(idx <=3D TB_EXIT_IDXMAX); +#ifdef CONFIG_DEBUG_TCG + /* Verify that we haven't seen this numbered exit before. */ + tcg_debug_assert((tcg_ctx->goto_tb_issue_mask & (1 << idx)) =3D=3D 0); + tcg_ctx->goto_tb_issue_mask |=3D 1 << idx; +#endif + plugin_gen_disable_mem_helpers(); + tcg_gen_op1(INDEX_op_goto_tb, 0, idx); +} + +void tcg_gen_lookup_and_goto_ptr(void) +{ + TCGv_ptr ptr; + + if (tcg_ctx->gen_tb->cflags & CF_NO_GOTO_PTR) { + tcg_gen_exit_tb(NULL, 0); + return; + } + + plugin_gen_disable_mem_helpers(); + ptr =3D tcg_temp_ebb_new_ptr(); + gen_helper_lookup_tb_ptr(ptr, tcg_env); + tcg_gen_op1(INDEX_op_goto_ptr, TCG_TYPE_PTR, tcgv_ptr_arg(ptr)); + tcg_temp_free_ptr(ptr); +} diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 2c88f4f7ca9..bd3bae37500 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -27,7 +27,6 @@ #include "tcg/tcg-temp-internal.h" #include "tcg/tcg-op-common.h" #include "exec/translation-block.h" -#include "exec/plugin-gen.h" #include "tcg-internal.h" #include "tcg-has.h" =20 @@ -2699,34 +2698,3 @@ void tcg_gen_exit_tb(const TranslationBlock *tb, uns= igned idx) =20 tcg_gen_op1i(INDEX_op_exit_tb, 0, val); } - -void tcg_gen_goto_tb(unsigned idx) -{ - /* We tested CF_NO_GOTO_TB in translator_use_goto_tb. */ - tcg_debug_assert(!(tcg_ctx->gen_tb->cflags & CF_NO_GOTO_TB)); - /* We only support two chained exits. */ - tcg_debug_assert(idx <=3D TB_EXIT_IDXMAX); -#ifdef CONFIG_DEBUG_TCG - /* Verify that we haven't seen this numbered exit before. */ - tcg_debug_assert((tcg_ctx->goto_tb_issue_mask & (1 << idx)) =3D=3D 0); - tcg_ctx->goto_tb_issue_mask |=3D 1 << idx; -#endif - plugin_gen_disable_mem_helpers(); - tcg_gen_op1i(INDEX_op_goto_tb, 0, idx); -} - -void tcg_gen_lookup_and_goto_ptr(void) -{ - TCGv_ptr ptr; - - if (tcg_ctx->gen_tb->cflags & CF_NO_GOTO_PTR) { - tcg_gen_exit_tb(NULL, 0); - return; - } - - plugin_gen_disable_mem_helpers(); - ptr =3D tcg_temp_ebb_new_ptr(); - gen_helper_lookup_tb_ptr(ptr, tcg_env); - tcg_gen_op1i(INDEX_op_goto_ptr, TCG_TYPE_PTR, tcgv_ptr_arg(ptr)); - tcg_temp_free_ptr(ptr); -} --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406825; cv=none; d=zohomail.com; s=zohoarc; b=G61Gc4vp5cuSjyTG+G7Mc1fZTuM2+Xw/JXScev2Yh3m+S8HtOJaUvD/m5NVWzC1cGMyMMAVmteBYC5bb8yHIDl7wZn0sb83ubHyfRnmb8xoJjWYqnRq63XrD1qywRd4DBr6KP3hKZz+MequyjbHw9SFSxGxGESwisEMjSISB3zo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406825; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=o68RHY+8I/fHBwtLuIUKNDGtiU+yJ8dKoStrzzdIylI=; b=H82aHVIVp/YKV/iSO4JGO0aSE2TqwlDl7k1Aqdau2J9JhVxglNEsmBdObIWtDHPu6zN7mUT24YerrMSEODAn9Y2pBMmYC/6iuFWqMg625is3LQ/AgK3dr0YknSvWBWyLMgTCK15Lmm5IPG3UqZgHzi+A6LLrOEXo3NCCjRfxES0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406825622693.5482580924138; Sat, 26 Sep 2026 00:13:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMTt-00074D-Nv; Sat, 26 Sep 2026 03:05:57 -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 1xAMR6-0003uG-PJ for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:05 -0400 Received: from mail-dy2-x0e.google.com ([2607:f8b0:4864:36::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMR3-0000aH-Qx for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:04 -0400 Received: by mail-dy2-x0e.google.com with SMTP id 5a478bee46e88-3427493501eso503880eec.1 for ; Sat, 26 Sep 2026 00:03:01 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.02.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:02:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406180; x=1791010980; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=o68RHY+8I/fHBwtLuIUKNDGtiU+yJ8dKoStrzzdIylI=; b=VSPEJN7aID+4kVqAXRomN0QBQhQ6Ie2bIrZeUevVKdhxc6++pv67w6laRI9sBZ3k0p p5Q3FF8wuxy25UXZGZM3Dp5+iBe4b9bMncib0GbwMxkUFq1puHd2tYkGRN4GL8XW7i+/ 0+XoxHm/HeLGLNgBnS1ce3ceDBQIBzFoNOADYtuG5y5tKwAncybznrfObQ+4Ql7AOE9F Pu9+gxFwCbBghSpxKXm+xCsvwjOPbucrMF0a0QSA8clCQEX7bFmi6eaRdWv9pk0YrPtF D4gHXU/P8YafHyYAZLZTeI+Mn27A+LnCmSOtHujMhg8cy90dFO+t2W2z9Zh4Sm96iC27 2G9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406180; x=1791010980; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=o68RHY+8I/fHBwtLuIUKNDGtiU+yJ8dKoStrzzdIylI=; b=C8XIwhyTUnT+805H2W8ftxn41UmZTfPqm7lMfYbXnjUXSsbSfTp6Lo3pVXzD9vbzVX f0bipgesOg9WCeK9uYI6K3vo8MhrIo0dGDqUvgt84Pz4BL7hPhMoIheVgmgi1OtoqMPQ TFYs2gJqw9Yi0OZeE0QC3TZIdtQUMumDdorVe2GCOOaJHBNyDRAWxog3IsGzyFJpM5k5 2gPhuXhLpYfqMjLBtpByld+hQT2rNJ9S0lTbBkXN5owoiqXla+UUuMTE2ywUWISeNWVF tLnBdcDdPxrwfzrQ4lyRfEn5BdqXKK3LFBvo0UqTEvEA6PVg+9ncp2AmgUANiJQiK32z dDmw== X-Gm-Message-State: AFuF++kE2ePSskqzbDS12fWJbQe0w7QNxJHma+fn/wH+S2bEl1eYR/9S Vbzde5Xcrl6CsFvPbGQc0GyUxCejXYnydff3R1dUKn8KcFJi3+jfJaZ4OmxNzm4U X-Gm-Gg: AYBFou0GjZ9UIf4zDUwP1FnMOw+Js96A3xKtGXVf/4rNgSOFHU3Gu8PbhZSaAFQe9Ib BD5jmMvWr2i8+VN/lIQ1iXMQQeP8y/b3ybCVEJFU8NI7MtqemW7f7lL5YaNPmQeQ6U5EpTiotNa 30Noghc8njJxLFzdhAHAjEAHgyhvJFpDEapSSOmuKen/IFBoIMFDTbkPwJadORHu4axWO+XSNkS hsl3acBIyyg2fOwMvAy/WWzJgiPEGMnnti8y2ye31G1oazN9brKFYdJRvM2ZRKMcQ+tqwYttaYT a+iGXwdYJ7sK1PKfTE2vuC1Kx92ZRkUJ/ZM0Ydn2KyGVECjrxzoGlQOdWwMOru+isXpS/1r7A+3 +5LbOjRTHnX6V6ksoOUwy3Cd54p8AkeRoc8/IPbPyiZAev9bKSLIeqOSXXquO4yEIe/eLxgOiue qthoSlTUq+ovWZT7ezkvSv1T0hhCnb/VMhCFXpGfOLmfQrjAQ5Aog+uRTDS/hAbQlxf+FkGH+3j 9PWK0T6rzEw+o/M7HhUXFyhQrp+Lu8= X-Received: by 2002:a05:7301:53c5:b0:33b:c23b:f2b7 with SMTP id 5a478bee46e88-34272c5c606mr1989923eec.30.1790406180277; Sat, 26 Sep 2026 00:03:00 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 29/55] accel/tcg: move gvec helpers into tcg-runtime-gvec.h Date: Sat, 26 Sep 2026 15:00:28 +0800 Message-ID: <20260926070057.1234-30-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::e; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0e.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406826726158500 Content-Type: text/plain; charset="utf-8" The gvec helpers are implemented in tcg-runtime-gvec.c. Move their DEF_HELPER lines to tcg-runtime-gvec.h and emit the helper_info records from that file. Signed-off-by: Yonggang Luo --- accel/tcg/tcg-runtime-gvec.c | 3 + .../tcg/{tcg-runtime.h =3D> tcg-runtime-gvec.h} | 109 ---------- accel/tcg/tcg-runtime.h | 204 ------------------ include/exec/helper-gen-common.h | 4 + include/exec/helper-proto-common.h | 4 + 5 files changed, 11 insertions(+), 313 deletions(-) copy accel/tcg/{tcg-runtime.h =3D> tcg-runtime-gvec.h} (71%) diff --git a/accel/tcg/tcg-runtime-gvec.c b/accel/tcg/tcg-runtime-gvec.c index 67a741e45e1..1bc8fbc31fa 100644 --- a/accel/tcg/tcg-runtime-gvec.c +++ b/accel/tcg/tcg-runtime-gvec.c @@ -22,6 +22,9 @@ #include "exec/helper-proto-common.h" #include "tcg/tcg-gvec-desc.h" =20 +#define HELPER_H "accel/tcg/tcg-runtime-gvec.h" +#include "exec/helper-info.c.inc" +#undef HELPER_H =20 static inline void clear_high(void *d, intptr_t oprsz, uint32_t desc) { diff --git a/accel/tcg/tcg-runtime.h b/accel/tcg/tcg-runtime-gvec.h similarity index 71% copy from accel/tcg/tcg-runtime.h copy to accel/tcg/tcg-runtime-gvec.h index 9b4c1c24916..603b0ba8590 100644 --- a/accel/tcg/tcg-runtime.h +++ b/accel/tcg/tcg-runtime-gvec.h @@ -1,112 +1,3 @@ -DEF_HELPER_FLAGS_2(div_i32, TCG_CALL_NO_RWG_SE, s32, s32, s32) -DEF_HELPER_FLAGS_2(rem_i32, TCG_CALL_NO_RWG_SE, s32, s32, s32) -DEF_HELPER_FLAGS_2(divu_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32) -DEF_HELPER_FLAGS_2(remu_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32) - -DEF_HELPER_FLAGS_2(div_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64) -DEF_HELPER_FLAGS_2(rem_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64) -DEF_HELPER_FLAGS_2(divu_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) -DEF_HELPER_FLAGS_2(remu_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) - -DEF_HELPER_FLAGS_2(mulsh_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64) -DEF_HELPER_FLAGS_2(muluh_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) - -DEF_HELPER_FLAGS_2(clz_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32) -DEF_HELPER_FLAGS_2(ctz_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32) -DEF_HELPER_FLAGS_2(clz_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) -DEF_HELPER_FLAGS_2(ctz_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) -DEF_HELPER_FLAGS_1(clrsb_i32, TCG_CALL_NO_RWG_SE, i32, i32) -DEF_HELPER_FLAGS_1(clrsb_i64, TCG_CALL_NO_RWG_SE, i64, i64) -DEF_HELPER_FLAGS_1(ctpop_i32, TCG_CALL_NO_RWG_SE, i32, i32) -DEF_HELPER_FLAGS_1(ctpop_i64, TCG_CALL_NO_RWG_SE, i64, i64) - -DEF_HELPER_FLAGS_1(lookup_tb_ptr, TCG_CALL_NO_WG_SE, cptr, env) - -#ifndef IN_HELPER_PROTO -/* - * Pass calls to memset directly to libc, without a thunk in qemu. - * Do not re-declare memset, especially since we fudge the type here; - * we assume sizeof(void *) =3D=3D sizeof(size_t), which is true for - * all supported hosts. - */ -#define helper_memset memset -DEF_HELPER_FLAGS_3(memset, TCG_CALL_NO_RWG, ptr, ptr, int, ptr) -#endif /* IN_HELPER_PROTO */ - -DEF_HELPER_FLAGS_3(ld_i128, TCG_CALL_NO_WG, i128, env, i64, i32) -DEF_HELPER_FLAGS_4(st_i128, TCG_CALL_NO_WG, void, env, i64, i128, i32) - -DEF_HELPER_FLAGS_5(atomic_cmpxchgb, TCG_CALL_NO_WG, - i32, env, i64, i32, i32, i32) -DEF_HELPER_FLAGS_5(atomic_cmpxchgw_be, TCG_CALL_NO_WG, - i32, env, i64, i32, i32, i32) -DEF_HELPER_FLAGS_5(atomic_cmpxchgw_le, TCG_CALL_NO_WG, - i32, env, i64, i32, i32, i32) -DEF_HELPER_FLAGS_5(atomic_cmpxchgl_be, TCG_CALL_NO_WG, - i32, env, i64, i32, i32, i32) -DEF_HELPER_FLAGS_5(atomic_cmpxchgl_le, TCG_CALL_NO_WG, - i32, env, i64, i32, i32, i32) -DEF_HELPER_FLAGS_5(atomic_cmpxchgq_be, TCG_CALL_NO_WG, - i64, env, i64, i64, i64, i32) -DEF_HELPER_FLAGS_5(atomic_cmpxchgq_le, TCG_CALL_NO_WG, - i64, env, i64, i64, i64, i32) -#if HAVE_CMPXCHG128 -DEF_HELPER_FLAGS_5(atomic_cmpxchgo_be, TCG_CALL_NO_WG, - i128, env, i64, i128, i128, i32) -DEF_HELPER_FLAGS_5(atomic_cmpxchgo_le, TCG_CALL_NO_WG, - i128, env, i64, i128, i128, i32) -DEF_HELPER_FLAGS_4(atomic_xchgo_be, TCG_CALL_NO_WG, - i128, env, i64, i128, i32) -DEF_HELPER_FLAGS_4(atomic_xchgo_le, TCG_CALL_NO_WG, - i128, env, i64, i128, i32) -DEF_HELPER_FLAGS_4(atomic_fetch_ando_be, TCG_CALL_NO_WG, - i128, env, i64, i128, i32) -DEF_HELPER_FLAGS_4(atomic_fetch_ando_le, TCG_CALL_NO_WG, - i128, env, i64, i128, i32) -DEF_HELPER_FLAGS_4(atomic_fetch_oro_be, TCG_CALL_NO_WG, - i128, env, i64, i128, i32) -DEF_HELPER_FLAGS_4(atomic_fetch_oro_le, TCG_CALL_NO_WG, - i128, env, i64, i128, i32) -#endif - -#define GEN_ATOMIC_HELPERS(NAME) \ - DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), b), \ - TCG_CALL_NO_WG, i32, env, i64, i32, i32) \ - DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), w_le), \ - TCG_CALL_NO_WG, i32, env, i64, i32, i32) \ - DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), w_be), \ - TCG_CALL_NO_WG, i32, env, i64, i32, i32) \ - DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), l_le), \ - TCG_CALL_NO_WG, i32, env, i64, i32, i32) \ - DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), l_be), \ - TCG_CALL_NO_WG, i32, env, i64, i32, i32) \ - DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), q_le), \ - TCG_CALL_NO_WG, i64, env, i64, i64, i32) \ - DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), q_be), \ - TCG_CALL_NO_WG, i64, env, i64, i64, i32) - -GEN_ATOMIC_HELPERS(fetch_add) -GEN_ATOMIC_HELPERS(fetch_and) -GEN_ATOMIC_HELPERS(fetch_or) -GEN_ATOMIC_HELPERS(fetch_xor) -GEN_ATOMIC_HELPERS(fetch_smin) -GEN_ATOMIC_HELPERS(fetch_umin) -GEN_ATOMIC_HELPERS(fetch_smax) -GEN_ATOMIC_HELPERS(fetch_umax) - -GEN_ATOMIC_HELPERS(add_fetch) -GEN_ATOMIC_HELPERS(and_fetch) -GEN_ATOMIC_HELPERS(or_fetch) -GEN_ATOMIC_HELPERS(xor_fetch) -GEN_ATOMIC_HELPERS(smin_fetch) -GEN_ATOMIC_HELPERS(umin_fetch) -GEN_ATOMIC_HELPERS(smax_fetch) -GEN_ATOMIC_HELPERS(umax_fetch) - -GEN_ATOMIC_HELPERS(xchg) - -#undef GEN_ATOMIC_HELPERS - DEF_HELPER_FLAGS_3(gvec_mov, TCG_CALL_NO_RWG, void, ptr, ptr, i32) =20 DEF_HELPER_FLAGS_3(gvec_dup8, TCG_CALL_NO_RWG, void, ptr, i32, i32) diff --git a/accel/tcg/tcg-runtime.h b/accel/tcg/tcg-runtime.h index 9b4c1c24916..c0626fa0e02 100644 --- a/accel/tcg/tcg-runtime.h +++ b/accel/tcg/tcg-runtime.h @@ -106,207 +106,3 @@ GEN_ATOMIC_HELPERS(umax_fetch) GEN_ATOMIC_HELPERS(xchg) =20 #undef GEN_ATOMIC_HELPERS - -DEF_HELPER_FLAGS_3(gvec_mov, TCG_CALL_NO_RWG, void, ptr, ptr, i32) - -DEF_HELPER_FLAGS_3(gvec_dup8, TCG_CALL_NO_RWG, void, ptr, i32, i32) -DEF_HELPER_FLAGS_3(gvec_dup16, TCG_CALL_NO_RWG, void, ptr, i32, i32) -DEF_HELPER_FLAGS_3(gvec_dup32, TCG_CALL_NO_RWG, void, ptr, i32, i32) -DEF_HELPER_FLAGS_3(gvec_dup64, TCG_CALL_NO_RWG, void, ptr, i32, i64) - -DEF_HELPER_FLAGS_4(gvec_add8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_add16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_add32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_add64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) - -DEF_HELPER_FLAGS_4(gvec_adds8, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_adds16, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_adds32, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_adds64, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) - -DEF_HELPER_FLAGS_4(gvec_sub8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_sub16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_sub32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_sub64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) - -DEF_HELPER_FLAGS_4(gvec_subs8, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_subs16, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_subs32, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_subs64, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) - -DEF_HELPER_FLAGS_4(gvec_mul8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_mul16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_mul32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_mul64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) - -DEF_HELPER_FLAGS_4(gvec_muls8, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_muls16, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_muls32, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_muls64, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) - -DEF_HELPER_FLAGS_4(gvec_ssadd8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_ssadd16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_ssadd32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_ssadd64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) - -DEF_HELPER_FLAGS_4(gvec_sssub8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_sssub16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_sssub32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_sssub64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) - -DEF_HELPER_FLAGS_4(gvec_usadd8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_usadd16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_usadd32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_usadd64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) - -DEF_HELPER_FLAGS_4(gvec_ussub8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_ussub16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_ussub32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_ussub64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) - -DEF_HELPER_FLAGS_4(gvec_smin8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_smin16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_smin32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_smin64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) - -DEF_HELPER_FLAGS_4(gvec_smax8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_smax16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_smax32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_smax64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) - -DEF_HELPER_FLAGS_4(gvec_umin8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_umin16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_umin32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_umin64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) - -DEF_HELPER_FLAGS_4(gvec_umax8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_umax16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_umax32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_umax64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) - -DEF_HELPER_FLAGS_3(gvec_neg8, TCG_CALL_NO_RWG, void, ptr, ptr, i32) -DEF_HELPER_FLAGS_3(gvec_neg16, TCG_CALL_NO_RWG, void, ptr, ptr, i32) -DEF_HELPER_FLAGS_3(gvec_neg32, TCG_CALL_NO_RWG, void, ptr, ptr, i32) -DEF_HELPER_FLAGS_3(gvec_neg64, TCG_CALL_NO_RWG, void, ptr, ptr, i32) - -DEF_HELPER_FLAGS_3(gvec_abs8, TCG_CALL_NO_RWG, void, ptr, ptr, i32) -DEF_HELPER_FLAGS_3(gvec_abs16, TCG_CALL_NO_RWG, void, ptr, ptr, i32) -DEF_HELPER_FLAGS_3(gvec_abs32, TCG_CALL_NO_RWG, void, ptr, ptr, i32) -DEF_HELPER_FLAGS_3(gvec_abs64, TCG_CALL_NO_RWG, void, ptr, ptr, i32) - -DEF_HELPER_FLAGS_3(gvec_not, TCG_CALL_NO_RWG, void, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_and, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_or, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_xor, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_andc, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_orc, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_nand, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_nor, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_eqv, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) - -DEF_HELPER_FLAGS_4(gvec_ands, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_andcs, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_xors, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_ors, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) - -DEF_HELPER_FLAGS_3(gvec_shl8i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) -DEF_HELPER_FLAGS_3(gvec_shl16i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) -DEF_HELPER_FLAGS_3(gvec_shl32i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) -DEF_HELPER_FLAGS_3(gvec_shl64i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) - -DEF_HELPER_FLAGS_3(gvec_shr8i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) -DEF_HELPER_FLAGS_3(gvec_shr16i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) -DEF_HELPER_FLAGS_3(gvec_shr32i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) -DEF_HELPER_FLAGS_3(gvec_shr64i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) - -DEF_HELPER_FLAGS_3(gvec_sar8i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) -DEF_HELPER_FLAGS_3(gvec_sar16i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) -DEF_HELPER_FLAGS_3(gvec_sar32i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) -DEF_HELPER_FLAGS_3(gvec_sar64i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) - -DEF_HELPER_FLAGS_3(gvec_rotl8i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) -DEF_HELPER_FLAGS_3(gvec_rotl16i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) -DEF_HELPER_FLAGS_3(gvec_rotl32i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) -DEF_HELPER_FLAGS_3(gvec_rotl64i, TCG_CALL_NO_RWG, void, ptr, ptr, i32) - -DEF_HELPER_FLAGS_4(gvec_shl8v, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_shl16v, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_shl32v, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_shl64v, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) - -DEF_HELPER_FLAGS_4(gvec_shr8v, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_shr16v, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_shr32v, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_shr64v, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) - -DEF_HELPER_FLAGS_4(gvec_sar8v, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_sar16v, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_sar32v, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_sar64v, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) - -DEF_HELPER_FLAGS_4(gvec_rotl8v, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_rotl16v, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_rotl32v, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_rotl64v, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) - -DEF_HELPER_FLAGS_4(gvec_rotr8v, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_rotr16v, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_rotr32v, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_rotr64v, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) - -DEF_HELPER_FLAGS_4(gvec_eq8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_eq16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_eq32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_eq64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) - -DEF_HELPER_FLAGS_4(gvec_ne8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_ne16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_ne32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_ne64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) - -DEF_HELPER_FLAGS_4(gvec_lt8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_lt16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_lt32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_lt64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) - -DEF_HELPER_FLAGS_4(gvec_le8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_le16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_le32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_le64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) - -DEF_HELPER_FLAGS_4(gvec_ltu8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_ltu16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_ltu32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_ltu64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) - -DEF_HELPER_FLAGS_4(gvec_leu8, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_leu16, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_leu32, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_4(gvec_leu64, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) - -DEF_HELPER_FLAGS_4(gvec_eqs8, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_eqs16, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_eqs32, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_eqs64, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) - -DEF_HELPER_FLAGS_4(gvec_lts8, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_lts16, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_lts32, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_lts64, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) - -DEF_HELPER_FLAGS_4(gvec_les8, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_les16, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_les32, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_les64, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) - -DEF_HELPER_FLAGS_4(gvec_ltus8, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_ltus16, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_ltus32, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_ltus64, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) - -DEF_HELPER_FLAGS_4(gvec_leus8, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_leus16, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_leus32, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) -DEF_HELPER_FLAGS_4(gvec_leus64, TCG_CALL_NO_RWG, void, ptr, ptr, i64, i32) - -DEF_HELPER_FLAGS_5(gvec_bitsel, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr,= i32) diff --git a/include/exec/helper-gen-common.h b/include/exec/helper-gen-com= mon.h index ed5521ad881..fa571d88147 100644 --- a/include/exec/helper-gen-common.h +++ b/include/exec/helper-gen-common.h @@ -15,4 +15,8 @@ #include "exec/helper-gen.h.inc" #undef HELPER_H =20 +#define HELPER_H "accel/tcg/tcg-runtime-gvec.h" +#include "exec/helper-gen.h.inc" +#undef HELPER_H + #endif /* HELPER_GEN_COMMON_H */ diff --git a/include/exec/helper-proto-common.h b/include/exec/helper-proto= -common.h index 28afa7782d0..1b098777e8d 100644 --- a/include/exec/helper-proto-common.h +++ b/include/exec/helper-proto-common.h @@ -17,6 +17,10 @@ #include "exec/helper-proto.h.inc" #undef HELPER_H =20 +#define HELPER_H "accel/tcg/tcg-runtime-gvec.h" +#include "exec/helper-proto.h.inc" +#undef HELPER_H + #include "accel/tcg/getpc.h" =20 #endif /* HELPER_PROTO_COMMON_H */ --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406560; cv=none; d=zohomail.com; s=zohoarc; b=hY6NdWMlRQG61iNB0FAnvSsXj1bGdWe7hendnbib/3scVFDk8WjNGKkktizPmWfjg00x3MI/wKDQzby2eaGDX9UNbDMJtozIfYVARuPGUU2NBv0mvWdpqSrZjdSw/ukgBUM+gDR2hufT1tW3TVMAcREmWEdU+NnxezTAxG/FepM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406560; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ALxUX35YxAT0/hMJem0o96GiSG/xYkkLx16debZXGzM=; b=kG8L4OEiiS9EGp9/FshONI+Qoep702MxfGk0XymRt/nWW4XlxYX3WyB/NQkwYc/CKnagxpQ22JDaXcLmCaOZhjhZL7/cGnPoo5k0iRWxZEHULL7NMoJ5E9bLld/Vr5EoAbwdvjcUhPjI84vw6hQFzcUW9nVt4pizjQ1LBT2KTG4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 179040656092899.38609325088657; Sat, 26 Sep 2026 00:09:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMT9-0006GQ-SQ; Sat, 26 Sep 2026 03:05:15 -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 1xAMRB-0003xS-CC for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:11 -0400 Received: from mail-dl2-x0f.google.com ([2607:f8b0:4864:38::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMR8-0000ak-39 for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:08 -0400 Received: by mail-dl2-x0f.google.com with SMTP id a92af1059eb24-1450541ab50so742989c88.3 for ; Sat, 26 Sep 2026 00:03:05 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.03.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:03:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406185; x=1791010985; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=ALxUX35YxAT0/hMJem0o96GiSG/xYkkLx16debZXGzM=; b=oi3EraHAxGMhb1L7SFTYbGlCxh22LqU9cVXiiI5EQ38PRDAlkz4UrjrQty/NKOknxB mHZj5XIT3CyzKagN2zbWNouFI2pAm46Oik7g6F1Wl7sPdFEDZEW54Ou6+QDMWXcVLgDY 4BNF8aoW1B7mCwwHn+loYz2nzbUwXY05ViAg/WDqMmn5tOKEAXZmwMVxwTe0Pb9a1Osa anLhonf4Pabw2KjjCUcHXAIuinu7QU64c+/3leFxn/dKV3fsz6TXIJnFEMY7VRVhHuuY jdMcd5cGh5N4qdFK/lS3fwNrSxI0hgnVLiuaKFIy7zKVH7f8mz0DMO60WhKi/Cpx5BE0 yDbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406185; x=1791010985; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=ALxUX35YxAT0/hMJem0o96GiSG/xYkkLx16debZXGzM=; b=ti4Kv4sbohSNIfyLPYxf6yAANZNOnJbSupJazVTfbgsYUIDAZVhlSAMQn2dt3EeBcS E8UOXtybKko4QQ0mSRn3VibZMJhAe+fCJE05sE/6IFPQlsnRnmLjMYZ0lKOBp5Fm6Jzt SSnxnNdZ4Cl0QCOW7d5mN+mwa3Q4mmLwnVysuj+18J9O1r/gWsvS7XpxiJlrk/9zLkwV upVEVGKHuoFqhWY1qaFrJvSNdPSSYBplLd73Ncq9b9O9AScnQYS3gMd0kER14/RcejjI LSFLSiBAN3rEmqhxTC5S350P0MAMIIkqAtp+cvCpXdt3H2OjmmvQhTghGJKMISm/UVIs Ep+A== X-Gm-Message-State: AFuF++ldJ3rsY+w9w6ERyyWAeBWHQ9W6fvHPoB8vEMSV1rFLnKz3w0AN AwYVXAMN6h22Q6OTHq0QXv3B6gfOEj0y6slhz+bLuKADXEZ0wJaPBjA4M3EzREc4 X-Gm-Gg: AYBFou32rnjyHzcYiUu+r8EhmYlfm58USa9/45zN2rLFW0cK4Wa3o4hoLfMebS1iWAc axhX6QzwJqTjq7ND/GVACeb167yn1f+Jp3GIcP9zO4CxRW/MN+8mMt/0rRFgJ57opj9iafb3gp8 bvqrw4Pyrxfv07vhHOLeMYAggyC1rSpkA3r/F9K5j+emFFj+WMQI+ftOgprWhpZFh4G1RiYngta BbTSCVGN0JabhQ0Ay4RlmbjnI5XVOKlNsBtAEimMpDP1H6/Whft2OCQw4tJt0HQ39TGq7nPCft6 AfjtSdf5oRkAXRdJ5nB29VgT3xfVVzHSqC0SgAFeqT1pZLWMb+p866sg7mjxWcDW3oO8qLZ3K+I w/Sf8q2TYom3SscVAooUyO+N3RHrGgZmn9gmf/PmVUueEsLQItlKFhhsgKr8GtBKhBfCid4FYzj rJBsamewjb3ldTWO4ZHy7LeLAjJ/Mrvx+/LNMEGPk7StuwewYKlnwgEyYgelHnGT0CdMYheyA7P LYt4C1IMhyL5siBcG57PdpYSmrYek4= X-Received: by 2002:a05:7022:f108:b0:144:fb42:52 with SMTP id a92af1059eb24-146cfdd1e08mr1944186c88.28.1790406184037; Sat, 26 Sep 2026 00:03:04 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 30/55] accel/tcg: move helper_lookup_tb_ptr into cpu-exec.h Date: Sat, 26 Sep 2026 15:00:29 +0800 Message-ID: <20260926070057.1234-31-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:38::f; envelope-from=luoyonggang@gmail.com; helo=mail-dl2-x0f.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406561725158500 Content-Type: text/plain; charset="utf-8" helper_lookup_tb_ptr is implemented in cpu-exec.c. Move its DEF_HELPER line to cpu-exec.h and emit helper_info_lookup_tb_ptr from that file. Signed-off-by: Yonggang Luo --- accel/tcg/cpu-exec.c | 5 +++++ accel/tcg/cpu-exec.h | 1 + accel/tcg/tcg-runtime.h | 2 -- include/exec/helper-gen-common.h | 4 ++++ include/exec/helper-proto-common.h | 4 ++++ 5 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 accel/tcg/cpu-exec.h diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c index 5b4bca5084f..021912dc022 100644 --- a/accel/tcg/cpu-exec.c +++ b/accel/tcg/cpu-exec.c @@ -40,6 +40,11 @@ #include "exec/replay-core.h" #include "system/tcg.h" #include "exec/helper-proto-common.h" + +#define HELPER_H "accel/tcg/cpu-exec.h" +#include "exec/helper-info.c.inc" +#undef HELPER_H + #include "tcg-accel-ops.h" #include "tb-jmp-cache.h" #include "tb-hash.h" diff --git a/accel/tcg/cpu-exec.h b/accel/tcg/cpu-exec.h new file mode 100644 index 00000000000..e4803ebc1a6 --- /dev/null +++ b/accel/tcg/cpu-exec.h @@ -0,0 +1 @@ +DEF_HELPER_FLAGS_1(lookup_tb_ptr, TCG_CALL_NO_WG_SE, cptr, env) diff --git a/accel/tcg/tcg-runtime.h b/accel/tcg/tcg-runtime.h index c0626fa0e02..26e0baeca51 100644 --- a/accel/tcg/tcg-runtime.h +++ b/accel/tcg/tcg-runtime.h @@ -20,8 +20,6 @@ DEF_HELPER_FLAGS_1(clrsb_i64, TCG_CALL_NO_RWG_SE, i64, i6= 4) DEF_HELPER_FLAGS_1(ctpop_i32, TCG_CALL_NO_RWG_SE, i32, i32) DEF_HELPER_FLAGS_1(ctpop_i64, TCG_CALL_NO_RWG_SE, i64, i64) =20 -DEF_HELPER_FLAGS_1(lookup_tb_ptr, TCG_CALL_NO_WG_SE, cptr, env) - #ifndef IN_HELPER_PROTO /* * Pass calls to memset directly to libc, without a thunk in qemu. diff --git a/include/exec/helper-gen-common.h b/include/exec/helper-gen-com= mon.h index fa571d88147..73e979a35f3 100644 --- a/include/exec/helper-gen-common.h +++ b/include/exec/helper-gen-common.h @@ -11,6 +11,10 @@ #include "exec/helper-gen.h.inc" #undef HELPER_H =20 +#define HELPER_H "accel/tcg/cpu-exec.h" +#include "exec/helper-gen.h.inc" +#undef HELPER_H + #define HELPER_H "accel/tcg/tcg-runtime.h" #include "exec/helper-gen.h.inc" #undef HELPER_H diff --git a/include/exec/helper-proto-common.h b/include/exec/helper-proto= -common.h index 1b098777e8d..3c32f95f4c1 100644 --- a/include/exec/helper-proto-common.h +++ b/include/exec/helper-proto-common.h @@ -13,6 +13,10 @@ #include "exec/helper-proto.h.inc" #undef HELPER_H =20 +#define HELPER_H "accel/tcg/cpu-exec.h" +#include "exec/helper-proto.h.inc" +#undef HELPER_H + #define HELPER_H "accel/tcg/tcg-runtime.h" #include "exec/helper-proto.h.inc" #undef HELPER_H --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406839; cv=none; d=zohomail.com; s=zohoarc; b=KerBGOuiHviXaecpQDcr8pT4cit+ChwpL/ioyH+feo6kYhzzcdCNi0vvMmsouBKz6hmZ9TUgktF8UHmzxUfS1FLklUNcGp7t6KBbrwaBDhL8jRliVeKslTGMfqNA1KbhePV+TjTzgX/NbRgZZ3iL0++23SgivebZmuBFj3DmCIk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406839; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=RDJx03fDpoFhoiEvP/bHkwDQkhcB3SmHYPY0Nad5xBI=; b=MW6gpGB1vxfDRIQ2x/f2+VMEOWRpwut5KhYxLLBdPydLKjjFHmSrJSR9CIwUH0ZNjr1ax5yTdRqah0EVlSwxtmZEtz+y1pkYMjkaEzuz3UzH8OUR0WfKSlu2+QivoFShJNwtlrxq7gULd/MvcIlOp5J2RYVZoPE80PGjeqZlFc8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406839146614.8054905466761; Sat, 26 Sep 2026 00:13:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMTV-0006b0-Bn; Sat, 26 Sep 2026 03:05: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 1xAMRD-00040a-KL for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:13 -0400 Received: from mail-dy2-x0f.google.com ([2607:f8b0:4864:36::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMRB-0000aw-GO for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:11 -0400 Received: by mail-dy2-x0f.google.com with SMTP id 5a478bee46e88-340fbf9c1c6so928524eec.3 for ; Sat, 26 Sep 2026 00:03:09 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.03.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:03:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406188; x=1791010988; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=RDJx03fDpoFhoiEvP/bHkwDQkhcB3SmHYPY0Nad5xBI=; b=NYQAlbXxLLb/cYt/nym8bUB+srWKZ1OXtCF1BKs8aZPsotwqqWdWdLEE28HsHHTXf7 /sTB4NDEeO0lXN0MfQPuL0EoMjZeU334ejlwKAfwTP73Pj+/zHgVD3tnNScbm8x4YoTs 3FgS6lRVsuwFi8Ei27qUeXZBFkJEECFbkpsmBZrXGxmkjdB7wAmNR24T80EMEVUvtDtS Y4C1cadHERJvNHF/2TdZufqfs3+cH4JxxPyWP4sLjBoY6UYK/DpnghNOdFd4Sa+83qgt /QxVqaBTg6qrJZQbLASlGsQMcETwPmMAaXxAne7JBTas/9tu7TNyCFvvrr8z9jrsm+/S oG9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406188; x=1791010988; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=RDJx03fDpoFhoiEvP/bHkwDQkhcB3SmHYPY0Nad5xBI=; b=qHhTvpuprYT5U3iDCWnmGQKvTM478LsmZ+bwP4ZAQQabFEQ5Va+DVA8zvueQOwQxM9 a4fEiLMGIuK1qNMV+yPKK/NXgsr9Mm/XLk4NZOvzepdno3mPoGJ7lJ4bKvP70WZRA0Iu rJremzAjha4Idiwus/8axxZ5kp0Xxh4eDOjXvjKb03kn2xbm0cxnawBawWfYQZmXnNvF a6OkgshlwJaQy9eKX8EeQbdeCHdCjo9/CJz1lyXNCS+rUHNP85OjdJBKI+gpyq9qkl0/ zWxhKyGYWG7OryligklZe4Q7oP/jvtGAQDie5bknKzsQ3A4DGLj66nIROqaqTwNKsNH+ nDxA== X-Gm-Message-State: AFuF++kpBHEVLoK0A4gAqPoKjuFPv3rwC2/SYzNUZXiEKte+aUPg/enL ulkCyWXaL2I5BE7MJJUcrAV7v5addNiANjdOVwLdC7cJnhJfOEv0SkuS3mOKgz7m X-Gm-Gg: AYBFou0luiA4RlndE1//n1Qs9pI6IwBJANw4EGlxm++HZLvYhk7RYOVYBEiejg095zp DojCQuX2M5PSDt21t+cuzaZ1mKRNh+AL154ocW0VhPLnYs2lYA+Lg5hG7fIq+JsrLAWHe2bAK6G JpHJrjetOEE34TJEB5/nlFvmLRVVXScdW6a/BJKgOtpdeTnw8DQwIWXvJJ6ENLLenQrS9W/sq0a g8RLtKeRIWwXUYIoFuCyADYr3P00a2byYWPiewjTLsnSg94arD1x2LAS8kTSNZqqMnrbP1PaejD s4eTm6MgcqkPq3afK1oBdZGCkQKaFbJWUF1Zwapdk3eNdPFbroieObRQfQr56hUonojT6f92vXK TLovE2mFbLIU8eYARXRbN7SBxVkaE0oBtRwPzBykOk/8Ha/XpDHikJTPMsLacFeCV4jGryDeU7S rH9q0QF7jrruu/vKaysZJXHCivlt3uRZe92/f7fZndvS6AnTPz3paThjORDPnKgJiyip4eAZcjg DLZKAL3H9yq6n8M8txAXFgRfThRfGo= X-Received: by 2002:a05:7301:4d0b:b0:341:4f3:8f84 with SMTP id 5a478bee46e88-342707b3fb2mr2095737eec.13.1790406187813; Sat, 26 Sep 2026 00:03:07 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 31/55] accel/tcg: move memory helpers out of tcg-runtime.h Date: Sat, 26 Sep 2026 15:00:30 +0800 Message-ID: <20260926070057.1234-32-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::f; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0f.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1790406840915158500 Content-Type: text/plain; charset="utf-8" memset, ld_i128, and st_i128 are declared in ldst_common.h, and ldst_common.c.inc emits their helper info. Atomic helpers move to atomic_common.h, with info records emitted from atomic_common.c.inc. tcg-runtime.h keeps the integer helpers implemented in tcg-runtime.c. Signed-off-by: Yonggang Luo --- accel/tcg/atomic_common.c.inc | 4 + accel/tcg/{tcg-runtime.h =3D> atomic_common.h} | 36 --------- accel/tcg/ldst_common.c.inc | 4 + accel/tcg/ldst_common.h | 13 +++ accel/tcg/tcg-runtime.h | 85 -------------------- include/exec/helper-gen-common.h | 8 ++ include/exec/helper-proto-common.h | 8 ++ 7 files changed, 37 insertions(+), 121 deletions(-) copy accel/tcg/{tcg-runtime.h =3D> atomic_common.h} (65%) create mode 100644 accel/tcg/ldst_common.h diff --git a/accel/tcg/atomic_common.c.inc b/accel/tcg/atomic_common.c.inc index 7d779dd51db..a24250be75e 100644 --- a/accel/tcg/atomic_common.c.inc +++ b/accel/tcg/atomic_common.c.inc @@ -101,3 +101,7 @@ ATOMIC_HELPER(fetch_oro_le, Int128) =20 #undef ATOMIC_HELPER #undef GEN_ATOMIC_HELPERS + +#define HELPER_H "accel/tcg/atomic_common.h" +#include "exec/helper-info.c.inc" +#undef HELPER_H diff --git a/accel/tcg/tcg-runtime.h b/accel/tcg/atomic_common.h similarity index 65% copy from accel/tcg/tcg-runtime.h copy to accel/tcg/atomic_common.h index 26e0baeca51..4fee73cf916 100644 --- a/accel/tcg/tcg-runtime.h +++ b/accel/tcg/atomic_common.h @@ -1,39 +1,3 @@ -DEF_HELPER_FLAGS_2(div_i32, TCG_CALL_NO_RWG_SE, s32, s32, s32) -DEF_HELPER_FLAGS_2(rem_i32, TCG_CALL_NO_RWG_SE, s32, s32, s32) -DEF_HELPER_FLAGS_2(divu_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32) -DEF_HELPER_FLAGS_2(remu_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32) - -DEF_HELPER_FLAGS_2(div_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64) -DEF_HELPER_FLAGS_2(rem_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64) -DEF_HELPER_FLAGS_2(divu_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) -DEF_HELPER_FLAGS_2(remu_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) - -DEF_HELPER_FLAGS_2(mulsh_i64, TCG_CALL_NO_RWG_SE, s64, s64, s64) -DEF_HELPER_FLAGS_2(muluh_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) - -DEF_HELPER_FLAGS_2(clz_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32) -DEF_HELPER_FLAGS_2(ctz_i32, TCG_CALL_NO_RWG_SE, i32, i32, i32) -DEF_HELPER_FLAGS_2(clz_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) -DEF_HELPER_FLAGS_2(ctz_i64, TCG_CALL_NO_RWG_SE, i64, i64, i64) -DEF_HELPER_FLAGS_1(clrsb_i32, TCG_CALL_NO_RWG_SE, i32, i32) -DEF_HELPER_FLAGS_1(clrsb_i64, TCG_CALL_NO_RWG_SE, i64, i64) -DEF_HELPER_FLAGS_1(ctpop_i32, TCG_CALL_NO_RWG_SE, i32, i32) -DEF_HELPER_FLAGS_1(ctpop_i64, TCG_CALL_NO_RWG_SE, i64, i64) - -#ifndef IN_HELPER_PROTO -/* - * Pass calls to memset directly to libc, without a thunk in qemu. - * Do not re-declare memset, especially since we fudge the type here; - * we assume sizeof(void *) =3D=3D sizeof(size_t), which is true for - * all supported hosts. - */ -#define helper_memset memset -DEF_HELPER_FLAGS_3(memset, TCG_CALL_NO_RWG, ptr, ptr, int, ptr) -#endif /* IN_HELPER_PROTO */ - -DEF_HELPER_FLAGS_3(ld_i128, TCG_CALL_NO_WG, i128, env, i64, i32) -DEF_HELPER_FLAGS_4(st_i128, TCG_CALL_NO_WG, void, env, i64, i128, i32) - DEF_HELPER_FLAGS_5(atomic_cmpxchgb, TCG_CALL_NO_WG, i32, env, i64, i32, i32, i32) DEF_HELPER_FLAGS_5(atomic_cmpxchgw_be, TCG_CALL_NO_WG, diff --git a/accel/tcg/ldst_common.c.inc b/accel/tcg/ldst_common.c.inc index 57f3e061924..bf74d65dd75 100644 --- a/accel/tcg/ldst_common.c.inc +++ b/accel/tcg/ldst_common.c.inc @@ -119,6 +119,10 @@ void helper_st_i128(CPUArchState *env, uint64_t addr, = Int128 val, MemOpIdx oi) helper_st16_mmu(env, addr, val, oi, GETPC()); } =20 +#define HELPER_H "accel/tcg/ldst_common.h" +#include "exec/helper-info.c.inc" +#undef HELPER_H + /* * Load helpers for cpu_ldst.h */ diff --git a/accel/tcg/ldst_common.h b/accel/tcg/ldst_common.h new file mode 100644 index 00000000000..cec4751ff16 --- /dev/null +++ b/accel/tcg/ldst_common.h @@ -0,0 +1,13 @@ +#ifndef IN_HELPER_PROTO +/* + * Pass calls to memset directly to libc, without a thunk in qemu. + * Do not re-declare memset, especially since we fudge the type here; + * we assume sizeof(void *) =3D=3D sizeof(size_t), which is true for + * all supported hosts. + */ +#define helper_memset memset +DEF_HELPER_FLAGS_3(memset, TCG_CALL_NO_RWG, ptr, ptr, int, ptr) +#endif /* IN_HELPER_PROTO */ + +DEF_HELPER_FLAGS_3(ld_i128, TCG_CALL_NO_WG, i128, env, i64, i32) +DEF_HELPER_FLAGS_4(st_i128, TCG_CALL_NO_WG, void, env, i64, i128, i32) diff --git a/accel/tcg/tcg-runtime.h b/accel/tcg/tcg-runtime.h index 26e0baeca51..d635e6b708b 100644 --- a/accel/tcg/tcg-runtime.h +++ b/accel/tcg/tcg-runtime.h @@ -19,88 +19,3 @@ DEF_HELPER_FLAGS_1(clrsb_i32, TCG_CALL_NO_RWG_SE, i32, i= 32) DEF_HELPER_FLAGS_1(clrsb_i64, TCG_CALL_NO_RWG_SE, i64, i64) DEF_HELPER_FLAGS_1(ctpop_i32, TCG_CALL_NO_RWG_SE, i32, i32) DEF_HELPER_FLAGS_1(ctpop_i64, TCG_CALL_NO_RWG_SE, i64, i64) - -#ifndef IN_HELPER_PROTO -/* - * Pass calls to memset directly to libc, without a thunk in qemu. - * Do not re-declare memset, especially since we fudge the type here; - * we assume sizeof(void *) =3D=3D sizeof(size_t), which is true for - * all supported hosts. - */ -#define helper_memset memset -DEF_HELPER_FLAGS_3(memset, TCG_CALL_NO_RWG, ptr, ptr, int, ptr) -#endif /* IN_HELPER_PROTO */ - -DEF_HELPER_FLAGS_3(ld_i128, TCG_CALL_NO_WG, i128, env, i64, i32) -DEF_HELPER_FLAGS_4(st_i128, TCG_CALL_NO_WG, void, env, i64, i128, i32) - -DEF_HELPER_FLAGS_5(atomic_cmpxchgb, TCG_CALL_NO_WG, - i32, env, i64, i32, i32, i32) -DEF_HELPER_FLAGS_5(atomic_cmpxchgw_be, TCG_CALL_NO_WG, - i32, env, i64, i32, i32, i32) -DEF_HELPER_FLAGS_5(atomic_cmpxchgw_le, TCG_CALL_NO_WG, - i32, env, i64, i32, i32, i32) -DEF_HELPER_FLAGS_5(atomic_cmpxchgl_be, TCG_CALL_NO_WG, - i32, env, i64, i32, i32, i32) -DEF_HELPER_FLAGS_5(atomic_cmpxchgl_le, TCG_CALL_NO_WG, - i32, env, i64, i32, i32, i32) -DEF_HELPER_FLAGS_5(atomic_cmpxchgq_be, TCG_CALL_NO_WG, - i64, env, i64, i64, i64, i32) -DEF_HELPER_FLAGS_5(atomic_cmpxchgq_le, TCG_CALL_NO_WG, - i64, env, i64, i64, i64, i32) -#if HAVE_CMPXCHG128 -DEF_HELPER_FLAGS_5(atomic_cmpxchgo_be, TCG_CALL_NO_WG, - i128, env, i64, i128, i128, i32) -DEF_HELPER_FLAGS_5(atomic_cmpxchgo_le, TCG_CALL_NO_WG, - i128, env, i64, i128, i128, i32) -DEF_HELPER_FLAGS_4(atomic_xchgo_be, TCG_CALL_NO_WG, - i128, env, i64, i128, i32) -DEF_HELPER_FLAGS_4(atomic_xchgo_le, TCG_CALL_NO_WG, - i128, env, i64, i128, i32) -DEF_HELPER_FLAGS_4(atomic_fetch_ando_be, TCG_CALL_NO_WG, - i128, env, i64, i128, i32) -DEF_HELPER_FLAGS_4(atomic_fetch_ando_le, TCG_CALL_NO_WG, - i128, env, i64, i128, i32) -DEF_HELPER_FLAGS_4(atomic_fetch_oro_be, TCG_CALL_NO_WG, - i128, env, i64, i128, i32) -DEF_HELPER_FLAGS_4(atomic_fetch_oro_le, TCG_CALL_NO_WG, - i128, env, i64, i128, i32) -#endif - -#define GEN_ATOMIC_HELPERS(NAME) \ - DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), b), \ - TCG_CALL_NO_WG, i32, env, i64, i32, i32) \ - DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), w_le), \ - TCG_CALL_NO_WG, i32, env, i64, i32, i32) \ - DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), w_be), \ - TCG_CALL_NO_WG, i32, env, i64, i32, i32) \ - DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), l_le), \ - TCG_CALL_NO_WG, i32, env, i64, i32, i32) \ - DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), l_be), \ - TCG_CALL_NO_WG, i32, env, i64, i32, i32) \ - DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), q_le), \ - TCG_CALL_NO_WG, i64, env, i64, i64, i32) \ - DEF_HELPER_FLAGS_4(glue(glue(atomic_, NAME), q_be), \ - TCG_CALL_NO_WG, i64, env, i64, i64, i32) - -GEN_ATOMIC_HELPERS(fetch_add) -GEN_ATOMIC_HELPERS(fetch_and) -GEN_ATOMIC_HELPERS(fetch_or) -GEN_ATOMIC_HELPERS(fetch_xor) -GEN_ATOMIC_HELPERS(fetch_smin) -GEN_ATOMIC_HELPERS(fetch_umin) -GEN_ATOMIC_HELPERS(fetch_smax) -GEN_ATOMIC_HELPERS(fetch_umax) - -GEN_ATOMIC_HELPERS(add_fetch) -GEN_ATOMIC_HELPERS(and_fetch) -GEN_ATOMIC_HELPERS(or_fetch) -GEN_ATOMIC_HELPERS(xor_fetch) -GEN_ATOMIC_HELPERS(smin_fetch) -GEN_ATOMIC_HELPERS(umin_fetch) -GEN_ATOMIC_HELPERS(smax_fetch) -GEN_ATOMIC_HELPERS(umax_fetch) - -GEN_ATOMIC_HELPERS(xchg) - -#undef GEN_ATOMIC_HELPERS diff --git a/include/exec/helper-gen-common.h b/include/exec/helper-gen-com= mon.h index 73e979a35f3..5943a3aedf0 100644 --- a/include/exec/helper-gen-common.h +++ b/include/exec/helper-gen-common.h @@ -19,6 +19,14 @@ #include "exec/helper-gen.h.inc" #undef HELPER_H =20 +#define HELPER_H "accel/tcg/ldst_common.h" +#include "exec/helper-gen.h.inc" +#undef HELPER_H + +#define HELPER_H "accel/tcg/atomic_common.h" +#include "exec/helper-gen.h.inc" +#undef HELPER_H + #define HELPER_H "accel/tcg/tcg-runtime-gvec.h" #include "exec/helper-gen.h.inc" #undef HELPER_H diff --git a/include/exec/helper-proto-common.h b/include/exec/helper-proto= -common.h index 3c32f95f4c1..eabe7828047 100644 --- a/include/exec/helper-proto-common.h +++ b/include/exec/helper-proto-common.h @@ -21,6 +21,14 @@ #include "exec/helper-proto.h.inc" #undef HELPER_H =20 +#define HELPER_H "accel/tcg/ldst_common.h" +#include "exec/helper-proto.h.inc" +#undef HELPER_H + +#define HELPER_H "accel/tcg/atomic_common.h" +#include "exec/helper-proto.h.inc" +#undef HELPER_H + #define HELPER_H "accel/tcg/tcg-runtime-gvec.h" #include "exec/helper-proto.h.inc" #undef HELPER_H --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406850; cv=none; d=zohomail.com; s=zohoarc; b=P10/jqF9eSgDKRRLKB17j6GMtakO1Ly/7gkLUNgypMjra4NQyMSLRXkdbSSBFPlYOnVltrGM+MxybrxWMo3IG8btJh0b5xVo3p/eQ814V33nMB4H2DrfbNlJKTN4PuGwymnnP1BfpcA990bEsKlsr5Q76AZRvuuId5bSY02FyaY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406850; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Hf+quUTqXyfAI8UGcbZlnEghgWyXicj/3euG/Dm4WTk=; b=elw0ueUGsLjbc+DanVvcYm/xRj89aTweLDZMvIkrk1vYzlwFJP5zC4XCpXRm71KOI9Uv70KppgwOoqxlRTVT1cc17trR+vTinJ9m2vYa3xrD65lBomfNfzchWEIMTtKZT1dAIdmMLFqN4wnuYEDvK7aVVoEJOk/WHE7TycG2goc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406850297144.82380554888323; Sat, 26 Sep 2026 00:14:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMU8-0007jg-K4; Sat, 26 Sep 2026 03:06:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAMRJ-0004DC-Nw for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:18 -0400 Received: from mail-dl2-x10.google.com ([2607:f8b0:4864:38::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMRG-0000bZ-56 for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:17 -0400 Received: by mail-dl2-x10.google.com with SMTP id a92af1059eb24-142dd05d97dso1139813c88.0 for ; Sat, 26 Sep 2026 00:03:13 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.03.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:03:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406192; x=1791010992; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Hf+quUTqXyfAI8UGcbZlnEghgWyXicj/3euG/Dm4WTk=; b=VSqdvU/V6kT8Ac5yu/OTA8FAx9ufxEyDBU6OD8RrVS5r2F/aOFwNR+UPdoQhNaLtTD emXgdMeXJoZn51jSKjEfjks1sf1/i2J8KqwLLMEaLF1K71jp2Ga5H7hmvWQWkNGMeyrQ Vra5SaYRd8uuTcRxXysb0JuWQnFQkSTcAghMVZNfmHvWjMdDpPelQamunQZ8z7tf/U7J 1FKDmEyLEsUur6H0qH61W6qXodMQ+zGBflBbG7W8zZL879sqd2H8OjDlmndryefiLEtj jqauZRZSagZLSEyIFUhTq0Mi6+SEbGi2F7prL9q8OfWzeipLXsj1jQJIGOZQid3bdm9j QAqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406192; x=1791010992; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Hf+quUTqXyfAI8UGcbZlnEghgWyXicj/3euG/Dm4WTk=; b=TCkslct8qzMKot9FLBsnnapKduNW/3OBLV0rvbvLdnYrSUbt6a3jYO1KwjmCB6vGpG SuprOefpkSsOELTbbrduOigLTIVociVLTNRUr192shKJMaMCiFyqWS7koUn+nxN/oiud QJxxcMUIRi9z7xSWKaW80RI+g6u8tlEPTDpU29Db7GDBM9kmS4qSL/O/oUbQ0RI572EW OzWzF8OncVGjLcBbe/lgzcjMaOQouWXC9RFbMnRZY1RO0KAu8DedaD0IAOoC4WOjRBNM Pdp78a9ffLlTUNoryj+CDULMRuIPM0dlvCT/2XrO5RHlGDCBkos9IRrvB5ixFQET3kAy aPlw== X-Gm-Message-State: AFuF++lMpqi5afWyBDN7+hL6D+AETzFns9TwZ0r3EshH7VZrvMwiHvVL F34qHSUZbMOtvz4wIHBoo4h2lVZnSHziLQQEuAtshQR3VP991kc5wfvJEYuaIpiY X-Gm-Gg: AYBFou2yKNyTeA6drmaYWRPBqMneq9amySruwtZdyQQyP0HpbvUdD6ih734gHZK23d/ biWPqTEsP1ULLmJyrHQii9zaOfGhbDQtRHRhbTKe+BQU79Zvuu8NcO+EnFK3KQgW/6qWrdsACot HhwZldxtNtsikuu+EPOoDEVZoQLQRcGzJgBPSTiq3O1LyssuR4RbiiksCtpeem8tmEMCMnrye+K 6oI6o1/gxKT7ItJOuoJSls2WCEZCM1EsLtRFXuYyCiWw+X4b+fcZONLfkMpDFYrXPpyTlVFMPw2 4uoRBmAnITyER0mCnJcaxofI5OTeaPlZvqrJhXTBDVWSWR1Be3sDxSoeW3m+NtQohRoXz9UnzXc WduR57TCbBphDouHubabtOmrZGblTFZ1wrTuxTgb3U1B7/nv504lpwn+P6GowhNDuOW/xZfkIuO fqBu0dTLQwTly5Isnq7f/ShejzAoOg9EGQnX+44MtSKw462SDKs6Vay3In93bVLvgp2SmZFsbFg 9//RoVmDtfkFYrUcQBZwZb3ixp7VO5QDMLmGKuMRA== X-Received: by 2002:a05:7022:418c:b0:13e:7202:5f09 with SMTP id a92af1059eb24-146ceb5574emr3689224c88.11.1790406191608; Sat, 26 Sep 2026 00:03:11 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 32/55] tests/unit: cover common-system tl dispatch and calls Date: Sat, 26 Sep 2026 15:00:31 +0800 Message-ID: <20260926070057.1234-33-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:38::10; envelope-from=luoyonggang@gmail.com; helo=mail-dl2-x10.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406851142158500 Content-Type: text/plain; charset="utf-8" test-tcg-op calls bswap32_tl, revbit32_tl, trunc, and ext from a common build and checks the i32 or i64 callee, including the 32-bit flag drop. dup_const_tl is checked for MO_8, MO_16, and MO_32. Per-target tests cover both fixed widths. The call test checks the tl alias and C type for a common build and for both per-target widths. tcg_gen_callN zero-extends an I32 temp into an i64 slot, sign-extends it into an s64 slot, and truncates an i64 return back to I32. Both tests link through tcg_core_deps. That list starts empty and, with TCG enabled, holds the tcg_core objects already built into libsystem, pagevary, and stubs for disas and the qemu ld/st helpers. Signed-off-by: Yonggang Luo --- accel/tcg/meson.build | 2 +- meson.build | 16 ++ tcg/meson.build | 9 +- tests/unit/meson.build | 20 ++ tests/unit/test-helper-tl.c | 20 ++ tests/unit/test-helper-tl.h | 25 +++ tests/unit/test-helper-tl32.c | 27 +++ tests/unit/test-helper-tl64.c | 27 +++ tests/unit/test-tcg-call-tl-stubs.c | 45 +++++ tests/unit/test-tcg-call-tl.c | 280 ++++++++++++++++++++++++++++ tests/unit/test-tcg-op-dispatch.h | 203 ++++++++++++++++++++ tests/unit/test-tcg-op-tl32.c | 24 +++ tests/unit/test-tcg-op-tl64.c | 24 +++ tests/unit/test-tcg-op.c | 66 +++++++ 14 files changed, 784 insertions(+), 4 deletions(-) create mode 100644 tests/unit/test-helper-tl.c create mode 100644 tests/unit/test-helper-tl.h create mode 100644 tests/unit/test-helper-tl32.c create mode 100644 tests/unit/test-helper-tl64.c create mode 100644 tests/unit/test-tcg-call-tl-stubs.c create mode 100644 tests/unit/test-tcg-call-tl.c create mode 100644 tests/unit/test-tcg-op-dispatch.h create mode 100644 tests/unit/test-tcg-op-tl32.c create mode 100644 tests/unit/test-tcg-op-tl64.c create mode 100644 tests/unit/test-tcg-op.c diff --git a/accel/tcg/meson.build b/accel/tcg/meson.build index 002aa8f4588..21da63c252f 100644 --- a/accel/tcg/meson.build +++ b/accel/tcg/meson.build @@ -3,11 +3,11 @@ if not have_tcg endif =20 tcg_ss =3D ss.source_set() +tcg_core.add(files('tcg-runtime.c')) =20 tcg_ss.add(files( 'cpu-exec.c', 'cpu-exec-common.c', - 'tcg-runtime.c', 'tcg-runtime-gvec.c', 'tb-maint.c', 'tcg-all.c', diff --git a/meson.build b/meson.build index 9485f4e97be..d5639a2d676 100644 --- a/meson.build +++ b/meson.build @@ -3731,6 +3731,8 @@ stub_ss =3D ss.source_set() trace_ss =3D ss.source_set() user_ss =3D ss.source_set() util_ss =3D ss.source_set() +tcg_core =3D ss.source_set() +tcg_core_deps =3D [] =20 # accel modules qtest_module_ss =3D ss.source_set() @@ -4139,6 +4141,20 @@ libsystem =3D static_library('system', dependencies: system_ss.all_dependencies(), build_by_default: false) =20 +if have_tcg + # tcg_core is compiled into libsystem. Reuse those objects. + # page-vary-common.c is in common_all, not tcg_core. + tcg_core_deps =3D files('tests/unit/test-tcg-call-tl-stubs.c') + [ + declare_dependency( + objects: libsystem.extract_objects(tcg_core.all_sources()), + compile_args: [ + '-DCOMPILING_SYSTEM_VS_USER', + '-DCONFIG_SOFTMMU', + ]), + ] + tcg_core_deps +=3D pagevary +endif + # Note that this library is never used directly (only through extract_obje= cts) # and is not built by default; therefore, source files not used by the bui= ld # configuration will be in build.ninja, but are never built by default. diff --git a/tcg/meson.build b/tcg/meson.build index 706a6eb260e..dced8eb781c 100644 --- a/tcg/meson.build +++ b/tcg/meson.build @@ -4,15 +4,17 @@ endif =20 tcg_ss =3D ss.source_set() =20 -tcg_ss.add(files( +tcg_core.add(files( 'optimize.c', 'region.c', 'tcg.c', 'tcg-common.c', 'tcg-op.c', + 'tcg-op-vec.c', +)) +tcg_ss.add(files( 'tcg-op-ldst.c', 'tcg-op-gvec.c', - 'tcg-op-vec.c', )) =20 if get_option('tcg_interpreter') @@ -24,8 +26,9 @@ endif =20 tcg_ss.add(when: libdw, if_true: files('debuginfo.c')) if host_os =3D=3D 'linux' - tcg_ss.add(files('perf.c')) + tcg_core.add(files('perf.c')) endif =20 +tcg_ss.add_all(tcg_core) user_ss.add_all(tcg_ss) system_ss.add_all(tcg_ss) diff --git a/tests/unit/meson.build b/tests/unit/meson.build index dc139889c1d..552f96e37dd 100644 --- a/tests/unit/meson.build +++ b/tests/unit/meson.build @@ -43,6 +43,13 @@ tests =3D { 'test-qgraph': ['../qtest/libqos/qgraph.c'], 'check-qom-interface': [qom], 'check-qom-proplist': [qom], + 'test-tcg-op': [qom] + tcg_core_deps, + 'test-tcg-op-tl32': [declare_dependency(compile_args: [ + '-DCOMPILING_PER_TARGET', + '-DCONFIG_TARGET=3D"test-tcg-op-mem-config32.h"'])], + 'test-tcg-op-tl64': [declare_dependency(compile_args: [ + '-DCOMPILING_PER_TARGET', + '-DCONFIG_TARGET=3D"test-tcg-op-mem-config64.h"'])], 'test-tcg-op-mem': [qom], 'test-tcg-op-mem-tl32': [declare_dependency(compile_args: [ '-DCOMPILING_PER_TARGET', @@ -53,6 +60,13 @@ tests =3D { 'test-tcg-op-mem-va32-tl64': [declare_dependency(compile_args: [ '-DCOMPILING_PER_TARGET', '-DCONFIG_TARGET=3D"test-tcg-op-mem-config64.h"'])], + 'test-helper-tl': [], + 'test-helper-tl32': [declare_dependency(compile_args: [ + '-DCOMPILING_PER_TARGET', + '-DCONFIG_TARGET=3D"test-tcg-op-mem-config32.h"'])], + 'test-helper-tl64': [declare_dependency(compile_args: [ + '-DCOMPILING_PER_TARGET', + '-DCONFIG_TARGET=3D"test-tcg-op-mem-config64.h"'])], 'test-target-info': [qom, declare_dependency( objects: target_info_def_objects.values(), compile_args: ['-DTARGET_INFO_DEF_COUNT=3D@0@'.format( @@ -67,6 +81,12 @@ tests =3D { 'test-envlist': [], } =20 +if have_tcg + tests +=3D { + 'test-tcg-call-tl': tcg_core_deps, + } +endif + if have_system or have_tools tests +=3D { 'test-qmp-event': [testqapi], diff --git a/tests/unit/test-helper-tl.c b/tests/unit/test-helper-tl.c new file mode 100644 index 00000000000..47719ccd95f --- /dev/null +++ b/tests/unit/test-helper-tl.c @@ -0,0 +1,20 @@ +/* + * Common-system tl helper slot stays an i64 C type. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "exec/helper-head.h.inc" + +#define HELPER_TL_EXPECT_TYPECODE dh_typecode_i64 +#define HELPER_TL_EXPECT_CTYPE uint64_t +#include "test-helper-tl.h" + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + g_test_add_func("/tcg/helper-tl/alias", test_helper_tl_alias); + g_test_add_func("/tcg/helper-tl/slot", test_helper_tl_slot); + return g_test_run(); +} diff --git a/tests/unit/test-helper-tl.h b/tests/unit/test-helper-tl.h new file mode 100644 index 00000000000..3ab660217f4 --- /dev/null +++ b/tests/unit/test-helper-tl.h @@ -0,0 +1,25 @@ +/* + * Shared checks for the tl helper slot. + * + * The including file defines HELPER_TL_EXPECT_TYPECODE and + * HELPER_TL_EXPECT_CTYPE after including exec/helper-head.h.inc. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +static void test_helper_tl_alias(void) +{ +#define HELPER_TL_ALIAS_PROBE_tl 1 +#define HELPER_TL_ALIAS_PROBE_i32 0 +#define HELPER_TL_ALIAS_PROBE_i64 0 + g_assert_cmpint(glue(HELPER_TL_ALIAS_PROBE_, dh_alias(tl)), =3D=3D, 1); +} + +static void test_helper_tl_slot(void) +{ + g_assert_cmpint(dh_typecode(tl), =3D=3D, HELPER_TL_EXPECT_TYPECODE); + g_assert_cmpint(dh_typemask(tl, 0), =3D=3D, HELPER_TL_EXPECT_TYPECODE); + g_assert_cmpint(dh_callflag(tl), =3D=3D, 0); + g_assert_true(__builtin_types_compatible_p(dh_ctype(tl), + HELPER_TL_EXPECT_CTYPE)); +} diff --git a/tests/unit/test-helper-tl32.c b/tests/unit/test-helper-tl32.c new file mode 100644 index 00000000000..1e99c22d6a9 --- /dev/null +++ b/tests/unit/test-helper-tl32.c @@ -0,0 +1,27 @@ +/* + * Per-target tl helper slot with TARGET_LONG_BITS =3D=3D 32. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "exec/helper-head.h.inc" + +#define HELPER_TL_EXPECT_TYPECODE dh_typecode_i32 +#define HELPER_TL_EXPECT_CTYPE uint32_t +#include "test-helper-tl.h" + +static void test_helper_tl32_ctype(void) +{ + g_assert_cmpint(TARGET_LONG_BITS, =3D=3D, 32); + g_assert_true(__builtin_types_compatible_p(dh_ctype(tl), target_ulong)= ); +} + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + g_test_add_func("/tcg/helper-tl/tl32-alias", test_helper_tl_alias); + g_test_add_func("/tcg/helper-tl/tl32-slot", test_helper_tl_slot); + g_test_add_func("/tcg/helper-tl/tl32-ctype", test_helper_tl32_ctype); + return g_test_run(); +} diff --git a/tests/unit/test-helper-tl64.c b/tests/unit/test-helper-tl64.c new file mode 100644 index 00000000000..499a84bbf62 --- /dev/null +++ b/tests/unit/test-helper-tl64.c @@ -0,0 +1,27 @@ +/* + * Per-target tl helper slot with TARGET_LONG_BITS =3D=3D 64. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "exec/helper-head.h.inc" + +#define HELPER_TL_EXPECT_TYPECODE dh_typecode_i64 +#define HELPER_TL_EXPECT_CTYPE uint64_t +#include "test-helper-tl.h" + +static void test_helper_tl64_ctype(void) +{ + g_assert_cmpint(TARGET_LONG_BITS, =3D=3D, 64); + g_assert_true(__builtin_types_compatible_p(dh_ctype(tl), target_ulong)= ); +} + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + g_test_add_func("/tcg/helper-tl/tl64-alias", test_helper_tl_alias); + g_test_add_func("/tcg/helper-tl/tl64-slot", test_helper_tl_slot); + g_test_add_func("/tcg/helper-tl/tl64-ctype", test_helper_tl64_ctype); + return g_test_run(); +} diff --git a/tests/unit/test-tcg-call-tl-stubs.c b/tests/unit/test-tcg-call= -tl-stubs.c new file mode 100644 index 00000000000..ec1414b88ba --- /dev/null +++ b/tests/unit/test-tcg-call-tl-stubs.c @@ -0,0 +1,45 @@ +/* + * Stubs for symbols referenced by extracted tcg_core objects. + * The call-slot test does not execute these paths. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "tcg/helper-info.h" + +void disas(FILE *out, const void *code, size_t size); +void helper_ldub_mmu(void); +void helper_lduw_mmu(void); +void helper_ldul_mmu(void); +void helper_ldq_mmu(void); +void helper_ld16_mmu(void); +void helper_ldsb_mmu(void); +void helper_ldsw_mmu(void); +void helper_ldsl_mmu(void); +void helper_stb_mmu(void); +void helper_stw_mmu(void); +void helper_stl_mmu(void); +void helper_stq_mmu(void); +void helper_st16_mmu(void); + +void disas(FILE *out, const void *code, size_t size) +{ + (void)out; + (void)code; + (void)size; +} + +void helper_ldub_mmu(void) {} +void helper_lduw_mmu(void) {} +void helper_ldul_mmu(void) {} +void helper_ldq_mmu(void) {} +void helper_ld16_mmu(void) {} +void helper_ldsb_mmu(void) {} +void helper_ldsw_mmu(void) {} +void helper_ldsl_mmu(void) {} +void helper_stb_mmu(void) {} +void helper_stw_mmu(void) {} +void helper_stl_mmu(void) {} +void helper_stq_mmu(void) {} +void helper_st16_mmu(void) {} diff --git a/tests/unit/test-tcg-call-tl.c b/tests/unit/test-tcg-call-tl.c new file mode 100644 index 00000000000..fc39bbaabae --- /dev/null +++ b/tests/unit/test-tcg-call-tl.c @@ -0,0 +1,280 @@ +/* + * Execute tcg_gen_callN when an I32 temp meets an i64 or s64 slot. + * + * The common-system tl helper uses a fixed i64 C slot. tcg_gen_callN + * zero-extends an I32 argument into that slot, sign-extends an I32 + * argument into an s64 slot, and truncates an i64 or s64 return back + * to an I32 temp. A matching width leaves the call op alone. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "tcg/tcg-op-common.h" + +static TCGContext *ctx; + +static void dummy_helper(void) +{ +} + +static void reset_ctx(void) +{ + if (!ctx) { + ctx =3D g_new0(TCGContext, 1); + tcg_ctx =3D ctx; + } + tcg_func_start(ctx); +} + +static TCGTemp *new_temp(TCGType type) +{ + if (type =3D=3D TCG_TYPE_I32) { + return tcgv_i32_temp(tcg_temp_new_i32()); + } + return tcgv_i64_temp(tcg_temp_new_i64()); +} + +static void prep_info(TCGHelperInfo *info, unsigned typemask) +{ + if (!info->func) { + info->func =3D dummy_helper; + info->typemask =3D typemask; + info->flags =3D TCG_CALL_NO_SIDE_EFFECTS; + } +} + +static int collect_ops(TCGOpcode *out, int max) +{ + TCGOp *op; + int n =3D 0; + + QTAILQ_FOREACH(op, &ctx->ops, link) { + g_assert_cmpint(n, <, max); + out[n++] =3D op->opc; + } + return n; +} + +static void assert_ops(const TCGOpcode *exp, int nexp) +{ + TCGOpcode got[8]; + int n =3D collect_ops(got, ARRAY_SIZE(got)); + int i; + + g_assert_cmpint(n, =3D=3D, nexp); + for (i =3D 0; i < n; i++) { + g_assert_cmpint(got[i], =3D=3D, exp[i]); + } +} + +static void assert_call_shape(int nr_out, int nr_in) +{ + TCGOp *op; + int calls =3D 0; + + QTAILQ_FOREACH(op, &ctx->ops, link) { + if (op->opc =3D=3D INDEX_op_call) { + g_assert_cmpint(TCGOP_CALLO(op), =3D=3D, nr_out); + g_assert_cmpint(TCGOP_CALLI(op), =3D=3D, nr_in); + calls++; + } + } + g_assert_cmpint(calls, =3D=3D, 1); +} + +static void emit_call1(TCGHelperInfo *info, bool has_ret, + TCGType ret_type, TCGType arg_type) +{ + TCGTemp *ret =3D NULL; + TCGTemp *arg; + + reset_ctx(); + if (has_ret) { + ret =3D new_temp(ret_type); + } + arg =3D new_temp(arg_type); + tcg_gen_call1(dummy_helper, info, ret, arg); +} + +static void emit_call2(TCGHelperInfo *info, TCGType arg0, TCGType arg1) +{ + TCGTemp *a0, *a1; + + reset_ctx(); + a0 =3D new_temp(arg0); + a1 =3D new_temp(arg1); + tcg_gen_call2(dummy_helper, info, NULL, a0, a1); +} + +static void test_i32_arg_i64_ret(void) +{ + static TCGHelperInfo info; + TCGOpcode exp[] =3D { + INDEX_op_extu_i32_i64, + INDEX_op_call, + INDEX_op_extrl_i64_i32, + }; + + prep_info(&info, dh_typemask(i64, 0) | dh_typemask(i64, 1)); + emit_call1(&info, true, TCG_TYPE_I32, TCG_TYPE_I32); + assert_ops(exp, ARRAY_SIZE(exp)); + assert_call_shape(1, 1); +} + +static void test_i32_arg_s64_ret(void) +{ + static TCGHelperInfo info; + TCGOpcode exp[] =3D { + INDEX_op_ext_i32_i64, + INDEX_op_call, + INDEX_op_extrl_i64_i32, + }; + + prep_info(&info, dh_typemask(s64, 0) | dh_typemask(s64, 1)); + emit_call1(&info, true, TCG_TYPE_I32, TCG_TYPE_I32); + assert_ops(exp, ARRAY_SIZE(exp)); + assert_call_shape(1, 1); +} + +static void test_i64_arg_i64_ret(void) +{ + static TCGHelperInfo info; + TCGOpcode exp[] =3D { INDEX_op_call }; + + prep_info(&info, dh_typemask(i64, 0) | dh_typemask(i64, 1)); + emit_call1(&info, true, TCG_TYPE_I64, TCG_TYPE_I64); + assert_ops(exp, ARRAY_SIZE(exp)); + assert_call_shape(1, 1); +} + +static void test_i64_arg_i32_ret(void) +{ + static TCGHelperInfo info; + TCGOpcode exp[] =3D { + INDEX_op_call, + INDEX_op_extrl_i64_i32, + }; + + prep_info(&info, dh_typemask(i64, 0) | dh_typemask(i64, 1)); + emit_call1(&info, true, TCG_TYPE_I32, TCG_TYPE_I64); + assert_ops(exp, ARRAY_SIZE(exp)); + assert_call_shape(1, 1); +} + +static void test_void_i32_arg_i64(void) +{ + static TCGHelperInfo info; + TCGOpcode exp[] =3D { + INDEX_op_extu_i32_i64, + INDEX_op_call, + }; + + prep_info(&info, dh_typemask(void, 0) | dh_typemask(i64, 1)); + emit_call1(&info, false, 0, TCG_TYPE_I32); + assert_ops(exp, ARRAY_SIZE(exp)); + assert_call_shape(0, 1); +} + +/* + * An i32 or s32 slot keeps the host ABI kind. tcg_gen_callN must not + * also apply the i64-slot extend, and must not truncate the return. + */ +static void test_i32_slot(void) +{ + static TCGHelperInfo info; + TCGOpcode exp[2]; + int n =3D 0; + + prep_info(&info, dh_typemask(i32, 0) | dh_typemask(i32, 1)); + emit_call1(&info, true, TCG_TYPE_I32, TCG_TYPE_I32); + if (info.in[0].kind =3D=3D TCG_CALL_ARG_EXTEND_U) { + exp[n++] =3D INDEX_op_extu_i32_i64; + } else if (info.in[0].kind =3D=3D TCG_CALL_ARG_EXTEND_S) { + exp[n++] =3D INDEX_op_ext_i32_i64; + } else { + g_assert_cmpint(info.in[0].kind, =3D=3D, TCG_CALL_ARG_NORMAL); + } + exp[n++] =3D INDEX_op_call; + assert_ops(exp, n); + assert_call_shape(1, 1); +} + +static void test_s32_slot(void) +{ + static TCGHelperInfo info; + TCGOpcode exp[2]; + int n =3D 0; + + prep_info(&info, dh_typemask(s32, 0) | dh_typemask(s32, 1)); + emit_call1(&info, true, TCG_TYPE_I32, TCG_TYPE_I32); + if (info.in[0].kind =3D=3D TCG_CALL_ARG_EXTEND_U) { + exp[n++] =3D INDEX_op_extu_i32_i64; + } else if (info.in[0].kind =3D=3D TCG_CALL_ARG_EXTEND_S) { + exp[n++] =3D INDEX_op_ext_i32_i64; + } else { + g_assert_cmpint(info.in[0].kind, =3D=3D, TCG_CALL_ARG_NORMAL); + } + exp[n++] =3D INDEX_op_call; + assert_ops(exp, n); + assert_call_shape(1, 1); +} + +static void test_i32_arg_ptr_slot(void) +{ + static TCGHelperInfo info; + TCGOpcode exp[] =3D { INDEX_op_call }; + + prep_info(&info, dh_typemask(ptr, 0) | dh_typemask(ptr, 1)); + emit_call1(&info, true, TCG_TYPE_PTR, TCG_TYPE_I32); + assert_ops(exp, ARRAY_SIZE(exp)); + assert_call_shape(1, 1); +} + +static void test_two_args_i32_then_i64(void) +{ + static TCGHelperInfo info; + TCGOpcode exp[] =3D { + INDEX_op_extu_i32_i64, + INDEX_op_call, + }; + + prep_info(&info, dh_typemask(void, 0) | dh_typemask(i64, 1) | + dh_typemask(i64, 2)); + emit_call2(&info, TCG_TYPE_I32, TCG_TYPE_I64); + assert_ops(exp, ARRAY_SIZE(exp)); + assert_call_shape(0, 2); +} + +static void test_two_args_i64_then_s64(void) +{ + static TCGHelperInfo info; + TCGOpcode exp[] =3D { + INDEX_op_ext_i32_i64, + INDEX_op_call, + }; + + prep_info(&info, dh_typemask(void, 0) | dh_typemask(i64, 1) | + dh_typemask(s64, 2)); + emit_call2(&info, TCG_TYPE_I64, TCG_TYPE_I32); + assert_ops(exp, ARRAY_SIZE(exp)); + assert_call_shape(0, 2); +} + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + g_test_add_func("/tcg/call-tl/i32-arg-i64-ret", test_i32_arg_i64_ret); + g_test_add_func("/tcg/call-tl/i32-arg-s64-ret", test_i32_arg_s64_ret); + g_test_add_func("/tcg/call-tl/i64-arg-i64-ret", test_i64_arg_i64_ret); + g_test_add_func("/tcg/call-tl/i64-arg-i32-ret", test_i64_arg_i32_ret); + g_test_add_func("/tcg/call-tl/void-i32-arg-i64", test_void_i32_arg_i64= ); + g_test_add_func("/tcg/call-tl/i32-slot", test_i32_slot); + g_test_add_func("/tcg/call-tl/s32-slot", test_s32_slot); + g_test_add_func("/tcg/call-tl/i32-arg-ptr-slot", test_i32_arg_ptr_slot= ); + g_test_add_func("/tcg/call-tl/two-args-i32-then-i64", + test_two_args_i32_then_i64); + g_test_add_func("/tcg/call-tl/two-args-i64-then-s64", + test_two_args_i64_then_s64); + return g_test_run(); +} diff --git a/tests/unit/test-tcg-op-dispatch.h b/tests/unit/test-tcg-op-dis= patch.h new file mode 100644 index 00000000000..991126b3743 --- /dev/null +++ b/tests/unit/test-tcg-op-dispatch.h @@ -0,0 +1,203 @@ +/* + * Intercept tcg_gen_* callees so tcg-op-tl.h dispatch can be called + * without a TCG context. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef TEST_TCG_OP_DISPATCH_H +#define TEST_TCG_OP_DISPATCH_H + +#include "tcg/tcg.h" + +static struct { + int bswap32_i32; + int bswap32_i64; + int bswap32_i64_flags; + int revbit32_i32; + int revbit32_i64; + int revbit32_i64_flags; + int mov_i32; + int mov_i64; + int extrl_i64_i32; + int extu_i32_i64; + int ext_i32_i64; +} tcg_op_test_saw; + +#define tcg_gen_bswap32_i32 tcg_op_test_record_bswap32_i32 +#define tcg_gen_bswap32_i64 tcg_op_test_record_bswap32_i64 +#define tcg_gen_revbit32_i32 tcg_op_test_record_revbit32_i32 +#define tcg_gen_revbit32_i64 tcg_op_test_record_revbit32_i64 +#define tcg_gen_mov_i32 tcg_op_test_record_mov_i32 +#define tcg_gen_mov_i64 tcg_op_test_record_mov_i64 +#define tcg_gen_extrl_i64_i32 tcg_op_test_record_extrl_i64_i32 +#define tcg_gen_extu_i32_i64 tcg_op_test_record_extu_i32_i64 +#define tcg_gen_ext_i32_i64 tcg_op_test_record_ext_i32_i64 + +#include "tcg/tcg-op.h" + +void tcg_op_test_record_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg) +{ + tcg_op_test_saw.bswap32_i32++; + (void)ret; + (void)arg; +} + +void tcg_op_test_record_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg, int flags) +{ + tcg_op_test_saw.bswap32_i64++; + tcg_op_test_saw.bswap32_i64_flags =3D flags; + (void)ret; + (void)arg; +} + +void tcg_op_test_record_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg) +{ + tcg_op_test_saw.revbit32_i32++; + (void)ret; + (void)arg; +} + +void tcg_op_test_record_revbit32_i64(TCGv_i64 ret, TCGv_i64 arg, int flags) +{ + tcg_op_test_saw.revbit32_i64++; + tcg_op_test_saw.revbit32_i64_flags =3D flags; + (void)ret; + (void)arg; +} + +void tcg_op_test_record_mov_i32(TCGv_i32 ret, TCGv_i32 arg) +{ + tcg_op_test_saw.mov_i32++; + (void)ret; + (void)arg; +} + +void tcg_op_test_record_mov_i64(TCGv_i64 ret, TCGv_i64 arg) +{ + tcg_op_test_saw.mov_i64++; + (void)ret; + (void)arg; +} + +void tcg_op_test_record_extrl_i64_i32(TCGv_i32 ret, TCGv_i64 arg) +{ + tcg_op_test_saw.extrl_i64_i32++; + (void)ret; + (void)arg; +} + +void tcg_op_test_record_extu_i32_i64(TCGv_i64 ret, TCGv_i32 arg) +{ + tcg_op_test_saw.extu_i32_i64++; + (void)ret; + (void)arg; +} + +void tcg_op_test_record_ext_i32_i64(TCGv_i64 ret, TCGv_i32 arg) +{ + tcg_op_test_saw.ext_i32_i64++; + (void)ret; + (void)arg; +} + +static void tcg_op_test_saw_reset(void) +{ + memset(&tcg_op_test_saw, 0, sizeof(tcg_op_test_saw)); +} + +G_GNUC_UNUSED +static void tcg_op_test_expect_i32(void) +{ + g_assert_false(tl_is_64()); + + tcg_op_test_saw_reset(); + tcg_gen_bswap32_tl((TCGv)NULL, (TCGv)NULL, 0x15); + g_assert_cmpint(tcg_op_test_saw.bswap32_i32, =3D=3D, 1); + g_assert_cmpint(tcg_op_test_saw.bswap32_i64, =3D=3D, 0); + + tcg_op_test_saw_reset(); + tcg_gen_revbit32_tl((TCGv)NULL, (TCGv)NULL, 0x15); + g_assert_cmpint(tcg_op_test_saw.revbit32_i32, =3D=3D, 1); + g_assert_cmpint(tcg_op_test_saw.revbit32_i64, =3D=3D, 0); + + tcg_op_test_saw_reset(); + tcg_gen_trunc_tl_i32(NULL, (TCGv)NULL); + g_assert_cmpint(tcg_op_test_saw.mov_i32, =3D=3D, 1); + g_assert_cmpint(tcg_op_test_saw.extrl_i64_i32, =3D=3D, 0); + + tcg_op_test_saw_reset(); + tcg_gen_trunc_i64_tl((TCGv)NULL, NULL); + g_assert_cmpint(tcg_op_test_saw.extrl_i64_i32, =3D=3D, 1); + g_assert_cmpint(tcg_op_test_saw.mov_i64, =3D=3D, 0); + + tcg_op_test_saw_reset(); + tcg_gen_extu_i32_tl((TCGv)NULL, NULL); + g_assert_cmpint(tcg_op_test_saw.mov_i32, =3D=3D, 1); + g_assert_cmpint(tcg_op_test_saw.extu_i32_i64, =3D=3D, 0); + + tcg_op_test_saw_reset(); + tcg_gen_ext_i32_tl((TCGv)NULL, NULL); + g_assert_cmpint(tcg_op_test_saw.mov_i32, =3D=3D, 1); + g_assert_cmpint(tcg_op_test_saw.ext_i32_i64, =3D=3D, 0); + + tcg_op_test_saw_reset(); + tcg_gen_extu_tl_i64(NULL, (TCGv)NULL); + g_assert_cmpint(tcg_op_test_saw.extu_i32_i64, =3D=3D, 1); + g_assert_cmpint(tcg_op_test_saw.mov_i64, =3D=3D, 0); + + tcg_op_test_saw_reset(); + tcg_gen_ext_tl_i64(NULL, (TCGv)NULL); + g_assert_cmpint(tcg_op_test_saw.ext_i32_i64, =3D=3D, 1); + g_assert_cmpint(tcg_op_test_saw.mov_i64, =3D=3D, 0); +} + +G_GNUC_UNUSED +static void tcg_op_test_expect_i64(void) +{ + g_assert_true(tl_is_64()); + + tcg_op_test_saw_reset(); + tcg_gen_bswap32_tl((TCGv)NULL, (TCGv)NULL, 0x15); + g_assert_cmpint(tcg_op_test_saw.bswap32_i64, =3D=3D, 1); + g_assert_cmpint(tcg_op_test_saw.bswap32_i64_flags, =3D=3D, 0x15); + g_assert_cmpint(tcg_op_test_saw.bswap32_i32, =3D=3D, 0); + + tcg_op_test_saw_reset(); + tcg_gen_revbit32_tl((TCGv)NULL, (TCGv)NULL, 0x15); + g_assert_cmpint(tcg_op_test_saw.revbit32_i64, =3D=3D, 1); + g_assert_cmpint(tcg_op_test_saw.revbit32_i64_flags, =3D=3D, 0x15); + g_assert_cmpint(tcg_op_test_saw.revbit32_i32, =3D=3D, 0); + + tcg_op_test_saw_reset(); + tcg_gen_trunc_tl_i32(NULL, (TCGv)NULL); + g_assert_cmpint(tcg_op_test_saw.extrl_i64_i32, =3D=3D, 1); + g_assert_cmpint(tcg_op_test_saw.mov_i32, =3D=3D, 0); + + tcg_op_test_saw_reset(); + tcg_gen_trunc_i64_tl((TCGv)NULL, NULL); + g_assert_cmpint(tcg_op_test_saw.mov_i64, =3D=3D, 1); + g_assert_cmpint(tcg_op_test_saw.extrl_i64_i32, =3D=3D, 0); + + tcg_op_test_saw_reset(); + tcg_gen_extu_i32_tl((TCGv)NULL, NULL); + g_assert_cmpint(tcg_op_test_saw.extu_i32_i64, =3D=3D, 1); + g_assert_cmpint(tcg_op_test_saw.mov_i32, =3D=3D, 0); + + tcg_op_test_saw_reset(); + tcg_gen_ext_i32_tl((TCGv)NULL, NULL); + g_assert_cmpint(tcg_op_test_saw.ext_i32_i64, =3D=3D, 1); + g_assert_cmpint(tcg_op_test_saw.mov_i32, =3D=3D, 0); + + tcg_op_test_saw_reset(); + tcg_gen_extu_tl_i64(NULL, (TCGv)NULL); + g_assert_cmpint(tcg_op_test_saw.mov_i64, =3D=3D, 1); + g_assert_cmpint(tcg_op_test_saw.extu_i32_i64, =3D=3D, 0); + + tcg_op_test_saw_reset(); + tcg_gen_ext_tl_i64(NULL, (TCGv)NULL); + g_assert_cmpint(tcg_op_test_saw.mov_i64, =3D=3D, 1); + g_assert_cmpint(tcg_op_test_saw.ext_i32_i64, =3D=3D, 0); +} + +#endif /* TEST_TCG_OP_DISPATCH_H */ diff --git a/tests/unit/test-tcg-op-tl32.c b/tests/unit/test-tcg-op-tl32.c new file mode 100644 index 00000000000..5d7cf05c5ea --- /dev/null +++ b/tests/unit/test-tcg-op-tl32.c @@ -0,0 +1,24 @@ +/* + * tcg-op.h with TARGET_LONG_BITS =3D=3D 32. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "test-tcg-op-dispatch.h" + +static void test_tl32(void) +{ + g_assert_cmpint(TARGET_LONG_BITS, =3D=3D, 32); + g_assert_false(tl_is_64()); + g_assert_true(__builtin_types_compatible_p(__typeof__(tcg_temp_new()), + TCGv_i32)); + tcg_op_test_expect_i32(); +} + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + g_test_add_func("/tcg/op/tl32-dispatch", test_tl32); + return g_test_run(); +} diff --git a/tests/unit/test-tcg-op-tl64.c b/tests/unit/test-tcg-op-tl64.c new file mode 100644 index 00000000000..0d9a7e2d0fc --- /dev/null +++ b/tests/unit/test-tcg-op-tl64.c @@ -0,0 +1,24 @@ +/* + * tcg-op.h with TARGET_LONG_BITS =3D=3D 64. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "test-tcg-op-dispatch.h" + +static void test_tl64(void) +{ + g_assert_cmpint(TARGET_LONG_BITS, =3D=3D, 64); + g_assert_true(tl_is_64()); + g_assert_true(__builtin_types_compatible_p(__typeof__(tcg_temp_new()), + TCGv_i64)); + tcg_op_test_expect_i64(); +} + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + g_test_add_func("/tcg/op/tl64-dispatch", test_tl64); + return g_test_run(); +} diff --git a/tests/unit/test-tcg-op.c b/tests/unit/test-tcg-op.c new file mode 100644 index 00000000000..92041349b47 --- /dev/null +++ b/tests/unit/test-tcg-op.c @@ -0,0 +1,66 @@ +/* + * Compile and call tcg-op.h with no TARGET_LONG_BITS. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qemu/target-info-def.h" +#include "test-tcg-op-dispatch.h" + +static const TargetInfo tl32_info =3D { + .target_name =3D "tl32", + .long_bits =3D 32, +}; + +static const TargetInfo tl64_info =3D { + .target_name =3D "tl64", + .long_bits =3D 64, +}; + +static void test_common_tl_types(void) +{ + g_assert_true(__builtin_types_compatible_p(__typeof__(tcg_temp_new()), + TCGv)); + g_assert_true(__builtin_types_compatible_p( + __typeof__(tcg_constant_tl(0)), TCGv)); +} + +static void test_dispatch_both_widths(void) +{ + target_info_select(&tl32_info); + tcg_op_test_expect_i32(); + + target_info_select(&tl64_info); + tcg_op_test_expect_i64(); +} + +static void test_dup_const_tl_width(void) +{ + target_info_select(&tl32_info); + g_assert_false(tl_is_64()); + g_assert_cmpint(tcg_type_tl(), =3D=3D, TCG_TYPE_I32); + g_assert_cmpuint((uint64_t)dup_const_tl(MO_8, 0xab), =3D=3D, 0xabababa= bu); + g_assert_cmpuint((uint64_t)dup_const_tl(MO_16, 0xabcd), =3D=3D, 0xabcd= abcdu); + g_assert_cmpuint((uint64_t)dup_const_tl(MO_32, 0x01020304), =3D=3D, + 0x01020304u); + + target_info_select(&tl64_info); + g_assert_true(tl_is_64()); + g_assert_cmpint(tcg_type_tl(), =3D=3D, TCG_TYPE_I64); + g_assert_cmpuint((uint64_t)dup_const_tl(MO_8, 0xab), =3D=3D, + 0xababababababababull); + g_assert_cmpuint((uint64_t)dup_const_tl(MO_16, 0xabcd), =3D=3D, + 0xabcdabcdabcdabcdull); + g_assert_cmpuint((uint64_t)dup_const_tl(MO_32, 0x01020304), =3D=3D, + 0x0102030401020304ull); +} + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + g_test_add_func("/tcg/op/common-tl-types", test_common_tl_types); + g_test_add_func("/tcg/op/dispatch-both-widths", test_dispatch_both_wid= ths); + g_test_add_func("/tcg/op/dup-const-tl-width", test_dup_const_tl_width); + return g_test_run(); +} --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406849; cv=none; d=zohomail.com; s=zohoarc; b=LFgLsJuoV58/C68oefN6y5yhMbDUhq4DHI1pdk1nDEwAA7QByqEmqSRq2vdkrZMTyEa53cCs7L1iE+Fr5syRlpURCv1A1rv1CFCCBUFS4+UgWqnr00TsqN3qqVyBpQFKLcTwOiGCoIWIT0+LTBP7oo4LNx/CBuhVYZ3p84GRKHA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406849; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=jzZaAkkKnBmPcCjdhFCa0BO5hawVQDowSY7mBjvBRFI=; b=KNgCpnn6Lb+uPi3TG9Pq8ruuyWepKpx/Y3Otygl+eGuHYHF3ArFlGJmK9uqIZAr9KDkV4p+z6p35tqzOZ6MEWFIgxuJoxqHxVi3WQHfRcwqLkjAZrGs+niHFBhuyGcCLOSzNFicuywYWilqSJszNkP5w+jVpuD+vRepzBsHWOic= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406849101620.2683731154855; Sat, 26 Sep 2026 00:14:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMU4-0007Qb-HF; Sat, 26 Sep 2026 03:06:09 -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 1xAMRL-0004IL-7J for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:19 -0400 Received: from mail-dy2-x1d.google.com ([2607:f8b0:4864:36::1d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMRJ-0000bm-49 for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:18 -0400 Received: by mail-dy2-x1d.google.com with SMTP id 5a478bee46e88-328664e061cso1770080eec.2 for ; Sat, 26 Sep 2026 00:03:16 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.03.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:03:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406195; x=1791010995; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=jzZaAkkKnBmPcCjdhFCa0BO5hawVQDowSY7mBjvBRFI=; b=HC/Cfw9OHCYoHRTwyJ2xgIMEmcD34TUmhb31mdAm7Mv0LfuIvfrXc/koaSpemLngyO gJyycHZSJOQfxK8vUdUbXnA+igZhtDV4V7ZyuLn85/oxeny9AKWw+aR13pLb7hcjRUbn nm7pTsgNkx+M6y4ZZvt9a515UYDs1pBhvFkF6ElMrienaD4zsecE1HR2Kr6UFWiN8O/k Hf3eyQe835en6a5U6DPC+Yz3yi53hRekf9hdDds4SwdMnJZvYavdH9kxzXuBAQBv3GHu XzbPziGAGQePq1b/Ux8ddz11PomFM+2qXNuJlGLlaixoIc38dtL4XzBIcU8vetAgBYgc k43A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406195; x=1791010995; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=jzZaAkkKnBmPcCjdhFCa0BO5hawVQDowSY7mBjvBRFI=; b=a6OWzU0rax3QMY0ECnNAd9efu4Pw2a0tUyQTiUA3ysK4duyVB1zDfcsfrb9W4nnshI mZX1jkcsnrvQNs5oSo27s4Ehs48ktmCGbfHhyMprmfuABpii5pNbxx/jyrISnlTEgliw 0dakdkhOEHfx1yVZQwINC3BZyHBGxWA3KdwHRzFNvPysVsycmccdQltKPCKFWcxrsX8j I5fyfAURqU68tQ87I6kuH8dNcYdZ/UgpdsPxO7INxNZh2T0gO3rJw0MKyLupp9VxiU5Q IrtqcvWtDRMR6GG+GTqsFlxbqS6kfhGpmoKU/1NTxedtYawkqMn/Y/oNeODkUeD6r62u OWWA== X-Gm-Message-State: AFuF++lAsuB7hNapY/xo01Y02v+BbImQsiZViqy3M/k9vKMCanOetgfA Cii5AfP2610MDtM4xr/Rrs9IvT9mkc7ymRhp0YHNwVYhjVQe4Mxh0b9B5zYK2JxX X-Gm-Gg: AYBFou19tj8mhHjQWA6PBy99BnfT2qs4x0yyAF6X0QBH5vSwuaobMgSp6IQami+D7PZ sVyvrxQJotMw+bhFZZpHu1Xv5J5/zzmSrqSul+xfPzeJ0enOLnkltRpg53GBfPuNxeaZFmkVqDx QvIGCpYtBojyqeM4/JdveOARJ7zzsZ7l8TFYU69txkdOFzeNXtJMlos6vHXL0CM9V0gYKc3jQE6 lFBklkQLSjJTqx2ewVrVAu3BGXrgDHuSPBs9EWCHf1X4QheGgB7+FSYQCNOzoE3G2ytGW3ziCGO PdqqHzfbQIkuHqmC8bcjgiEZZwWUJft6WBL+zMA1s/kFiNif1DSNGtjvyvvgqV5AU9++ydbC4Nh quYJ7XwYbCHMBpWErP/CLRF08pn3k8IE4iY8lO6d9ocCHt5vzlFmYA6RnERPGd+ESPk2VGZXYsY xNZI/jvNLZXvkQ83iV0wNg2O41x4tkEakaHqDq3CF2zt7MifpIKDpqxb1A8Ga0v7JmV+/fmpT1f JoVn7ubW8BwwJ34h2iDMtHOL8Vmmn0= X-Received: by 2002:a05:7300:6810:b0:334:2bee:348e with SMTP id 5a478bee46e88-3427236f2bbmr2301957eec.22.1790406195371; Sat, 26 Sep 2026 00:03:15 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 33/55] target/arm: fix A64 guest address width at 64 Date: Sat, 26 Sep 2026 15:00:32 +0800 Message-ID: <20260926070057.1234-34-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::1d; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x1d.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1790406851018158500 Content-Type: text/plain; charset="utf-8" Define TCG_ADDRESS_BITS 64 in translate-a64.h so A64 qemu_ld and qemu_st take a 64-bit address, matching TCG_ADDRESS_BITS 32 in translate.c. Signed-off-by: Yonggang Luo --- target/arm/tcg/translate-a64.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/target/arm/tcg/translate-a64.h b/target/arm/tcg/translate-a64.h index 35f8d4f82e3..d4265de9dcb 100644 --- a/target/arm/tcg/translate-a64.h +++ b/target/arm/tcg/translate-a64.h @@ -18,6 +18,9 @@ #ifndef TARGET_ARM_TRANSLATE_A64_H #define TARGET_ARM_TRANSLATE_A64_H =20 +/* A64 qemu_ld/st addresses are always 64-bit. Set before tcg-op.h. */ +#define TCG_ADDRESS_BITS 64 + TCGv_i64 cpu_reg(DisasContext *s, int reg); TCGv_i64 cpu_reg_sp(DisasContext *s, int reg); TCGv_i64 read_cpu_reg(DisasContext *s, int reg, int sf); --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406828; cv=none; d=zohomail.com; s=zohoarc; b=QdulWtD1UxJkndy3UAAluXMMidx4FGtOi/SJuHZxDYzaRmE5fysPxsJBOmkjER2s4J+dJ6nNEJeo0ffHuaz+L9acmN1/+5yEzIjC5YNfu5K6zhZNftnmppgRiVDdGQiMomnJtvGxm1kB2zA2gkdxuH4ckh8nZb4y7WWhATX1GwM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406828; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=mzk09wMbsBzxAEmjnfDm9veq+liYVS/t1qc3bHMs1F0=; b=KuGjL+Bws9oNebizFE3feRP0mjLwsw5keToJU4jmlOe4gHcuNCk2hGgswzDlyH7sPVE/vYnTSJ/pP5wHjgoUbWI+DqwE91UJBqSAAjEHGAZDNqqZinuf9uQWTiqisgf6q/2gw9gdUVCOC+8TkdItjXnXnSvAAheUlK0RB0FrqQw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406828490379.1567575429109; Sat, 26 Sep 2026 00:13:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMVs-0001XA-8h; Sat, 26 Sep 2026 03:08:00 -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 1xAMRO-0004Ti-G9 for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:22 -0400 Received: from mail-dy2-x0f.google.com ([2607:f8b0:4864:36::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMRM-0000cQ-JZ for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:22 -0400 Received: by mail-dy2-x0f.google.com with SMTP id 5a478bee46e88-33e62211987so1752506eec.2 for ; Sat, 26 Sep 2026 00:03:20 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.03.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:03:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406199; x=1791010999; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=mzk09wMbsBzxAEmjnfDm9veq+liYVS/t1qc3bHMs1F0=; b=h+mI2LJPI3oic+I1abmEHubcZggE3ROj6hbmrGOnwe507fY2+D3lf+wJoFt8W7WrnX EQ+8exmu1nkG/BwRJTGXUJC8UfMUOiOcL8/sbOkL3jZIKecorEKwUKhtVuw9146Q67oC V44EesJXHinZuPchPOaJa0MfULBdB6VzCahXBlTaOsS2RjfZWeuFNSPa7MItTcgCspCo Ph9/DCKyG/EaY/SclOvnAkbpWDE0d7Yd/dj0eaytOhqq2+WfA85vJf0g2rVKoYevLoyk KVLZ7KxPYiuL5Xex9RRyYmCaF7wUunLXBXuik3sFsBK7bsruzd42hYQ/8KKV00bAwrPG QX+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406199; x=1791010999; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=mzk09wMbsBzxAEmjnfDm9veq+liYVS/t1qc3bHMs1F0=; b=w448zeGs6seaCaYCYtHHvUOGojT0JkpmDbDIWjsAzwg3wzCrdxsVf8UVFJuXpzdQWv 7cgrTnjZxuLwOPRh/wPVTCqRVRJZhuioRDvWKOcCsVfY0spPyYOU4HPvhIgmSIiTIdLu hYaLQpWcXtWqc6hDLdkCQxSPp3ZGsBRxkYrGL0KaZ8ZNdw34qHIr8phpE//HaOpStBYD pEPyXt9AHorPDBMJNieJdKpiWrkb2/uEXyC/4bGUZFLb6KVrJCDK7jdqb86yhhSg7LwS U11CMtb+0OQtsArjv9NOftkCP11xvzB8a7nwjZwIByUddO9HmbmRxcG793FQl9dKnRP/ nyeA== X-Gm-Message-State: AFuF++nq2yR/hTC3VfVsi5JshGFkGHHqWdSV8icMqKFB0wOOTDAdG1i1 SLRmUn0tzX8hbvg3+417EoPL0GZis7EXGr5s1Hs0to0stqH2EGEkggJJXEJl3hWG X-Gm-Gg: AYBFou33Y/FPN+Wcd6ff3GbRz3wXa9CLB7hqTa5JXodbI8lAGI30W9jyn/DwRk0P6Tb vX/wJVuxQSELXdoP9eS7MVijQ3m6qpYtG7JRIl/gRVi4wvdPUF7wEo54CnYeqvpjGFdfCWzJPbY fEczLCH1W7daqgwBUABTof2UaUbbmKt6kDNl/gaaCjHeVrOuBtipJzdXEXZkzN4RIdQl1RU00r1 kvQs8JsuPt4id/0WWNEi+E6gT8gpVSCq/LMNTaDIcyUQO5xF6fl2pSCtGGF2Sfr6vzfcwWkMCJn 2DfJ5INPQSe+vA4JG3DTsOJfz4NvQkRh22WElbpPl8chHefjfstcyH6a5JV5HZVssrXdjiE5B6Y Px4fjRmzgaAs2wBWC2U/sCNKnJ8x9TsilmrMx8rEYPbekcejo/7pmTsxWCCei9fEpfom1jPy1IL wNEDwjgVe1TkEKk/4hPYLiFwGslV7jgf2siCkDbe5F1QDg9GhpAfVR9lNxO5SIz9Qcc7pNKX15C DLC48kIquhsn3nQkNxi7zvA3b69kMw= X-Received: by 2002:a05:7301:1506:b0:33b:e529:4446 with SMTP id 5a478bee46e88-3426febb75bmr2204414eec.5.1790406199112; Sat, 26 Sep 2026 00:03:19 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 34/55] target/arm: pass tl temps into SVE and SME helpers Date: Sat, 26 Sep 2026 15:00:33 +0800 Message-ID: <20260926070057.1234-35-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::f; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0f.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406828785158500 Content-Type: text/plain; charset="utf-8" SVE and SME helpers take tl, which is TCGv. A64 addresses and cpu_reg() are TCGv_i64, so convert with tcg_tl_from_i64. Truncate the SME tile index with extrl_i64_i32. Signed-off-by: Yonggang Luo --- target/arm/tcg/translate-sme.c | 5 +++-- target/arm/tcg/translate-sve.c | 18 ++++++++++-------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 08b25b0be9d..e34e7d8744f 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -64,7 +64,7 @@ static TCGv_ptr get_tile_rowcol(DisasContext *s, int esz,= int rs, =20 /* Compute the final index, which is Rs+imm. */ tmp =3D tcg_temp_new_i32(); - tcg_gen_trunc_tl_i32(tmp, cpu_reg(s, rs)); + tcg_gen_extrl_i64_i32(tmp, cpu_reg(s, rs)); /* * Round the vector index down to a multiple of vec_mod if necessary. * We do this before adding the offset, to handle cases like @@ -469,7 +469,8 @@ static bool trans_LDST1(DisasContext *s, arg_LDST1 *a) =20 desc =3D make_svemte_desc(s, streaming_vec_reg_size(s), 1, a->esz, a->= st, 0); =20 - fns[a->esz][be][a->v][mte][a->st](tcg_env, t_za, t_pg, addr, + fns[a->esz][be][a->v][mte][a->st](tcg_env, t_za, t_pg, + tcg_tl_from_i64(addr), tcg_constant_i64(desc)); return true; } diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 10375577b1e..9fd10168876 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -36,9 +36,9 @@ typedef void gen_helper_gvec_flags_3(TCGv_i32, TCGv_ptr, = TCGv_ptr, typedef void gen_helper_gvec_flags_4(TCGv_i32, TCGv_ptr, TCGv_ptr, TCGv_ptr, TCGv_ptr, TCGv_i32); =20 -typedef void gen_helper_gvec_mem(TCGv_env, TCGv_ptr, TCGv_i64, TCGv_i64); +typedef void gen_helper_gvec_mem(TCGv_env, TCGv_ptr, TCGv, TCGv_i64); typedef void gen_helper_gvec_mem_scatter(TCGv_env, TCGv_ptr, TCGv_ptr, - TCGv_ptr, TCGv_i64, TCGv_i64); + TCGv_ptr, TCGv, TCGv_i64); =20 /* * Helpers for extracting complex instruction fields. @@ -5378,7 +5378,7 @@ static void do_mem_zpa(DisasContext *s, int zt, int p= g, TCGv_i64 addr, t_pg =3D tcg_temp_new_ptr(); =20 tcg_gen_addi_ptr(t_pg, tcg_env, pred_full_reg_offset(s, pg)); - fn(tcg_env, t_pg, addr, tcg_constant_i64(desc)); + fn(tcg_env, t_pg, tcg_tl_from_i64(addr), tcg_constant_i64(desc)); } =20 /* Indexed by [mte][be][dtype][nreg] */ @@ -5861,7 +5861,7 @@ static void do_ldrq(DisasContext *s, int zt, int pg, = TCGv_i64 addr, int dtype) gen_helper_gvec_mem *fn =3D ldr_fns[s->mte_active[0]][s->be_data =3D=3D MO_BE][dtype][0]; desc =3D make_svemte_desc(s, 16, 1, dtype_msz(dtype), false, zt); - fn(tcg_env, t_pg, addr, tcg_constant_i64(desc)); + fn(tcg_env, t_pg, tcg_tl_from_i64(addr), tcg_constant_i64(desc)); =20 /* Replicate that first quadword. */ if (vsz > 16) { @@ -5945,7 +5945,7 @@ static void do_ldro(DisasContext *s, int zt, int pg, = TCGv_i64 addr, int dtype) gen_helper_gvec_mem *fn =3D ldr_fns[s->mte_active[0]][s->be_data =3D=3D MO_BE][dtype][0]; desc =3D make_svemte_desc(s, 32, 1, dtype_msz(dtype), false, zt); - fn(tcg_env, t_pg, addr, tcg_constant_i64(desc)); + fn(tcg_env, t_pg, tcg_tl_from_i64(addr), tcg_constant_i64(desc)); =20 /* * Replicate that first octaword. @@ -6286,7 +6286,8 @@ static void do_mem_zpz(DisasContext *s, int zt, int p= g, int zm, tcg_gen_addi_ptr(t_zt, tcg_env, vec_full_reg_offset(s, zt)); =20 desc =3D make_svemte_desc(s, vec_full_reg_size(s), 1, msz, is_write, s= cale); - fn(tcg_env, t_zt, t_pg, t_zm, scalar, tcg_constant_i64(desc)); + fn(tcg_env, t_zt, t_pg, t_zm, tcg_tl_from_i64(scalar), + tcg_constant_i64(desc)); } =20 /* Indexed by [mte][be][ff][xs][u][msz]. */ @@ -8682,7 +8683,7 @@ TRANS_FEAT(SQCVTUN_sh, aa64_sme2_or_sve2p1, gen_gvec_= ool_zz, static bool gen_ldst_c(DisasContext *s, TCGv_i64 addr, int zd, int png, MemOp esz, bool is_write, int n, bool strided) { - typedef void ldst_c_fn(TCGv_env, TCGv_ptr, TCGv_i64, + typedef void ldst_c_fn(TCGv_env, TCGv_ptr, TCGv, TCGv_i32, TCGv_i64); static ldst_c_fn * const f_ldst[2][2][4] =3D { { { gen_helper_sve2p1_ld1bb_c, @@ -8747,7 +8748,8 @@ static bool gen_ldst_c(DisasContext *s, TCGv_i64 addr= , int zd, int png, t_zd =3D tcg_temp_new_ptr(); tcg_gen_addi_ptr(t_zd, tcg_env, vec_full_reg_offset(s, zd)); =20 - f_ldst[is_write][be][esz](tcg_env, t_zd, addr, t_png, t_desc); + f_ldst[is_write][be][esz](tcg_env, t_zd, tcg_tl_from_i64(addr), + t_png, t_desc); return true; } =20 --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406639; cv=none; d=zohomail.com; s=zohoarc; b=gNDw6vtlRVngeeQJUxygfy+D+7jNPyQKWdt/RRdzQwMFbk7tGPuUiitJNOGZCau/4v0t4kMFasb8xKtp6ttKMAZIZOS9J3rIy6r6k9nJ0T7g3Wn+6itU0sj3YDVw+AF2xMmik06dPVLxf3sDWcyiidcwZkyGuern0964krTozt0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406639; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=qRAWcqy39t4YH/MXWwtDPnaCtpTkj9m6y8wjd7e4fZo=; b=mToiW7HTMrKhyNH5DQ5lffnOj/Oc+TbYsJGbXRT0fR9MNuiGEwbFjXL4jhxf6W1GTDJS2fS3t9szitlNYFG3MMK1xgXBBpPiijq+cXdk4yoTsTbDIFeNcLeMWr00Vsv6DTpatqDFu1QVMUUP5pMSFm28yvLspVkLNaN+13moEWU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 179040663952343.54664264300527; Sat, 26 Sep 2026 00:10:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMUz-0008Ji-2E; Sat, 26 Sep 2026 03:07:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAMRT-0004oT-OY for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:27 -0400 Received: from mail-dy1-x132c.google.com ([2607:f8b0:4864:20::132c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMRR-0000cv-2x for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:27 -0400 Received: by mail-dy1-x132c.google.com with SMTP id 5a478bee46e88-3425f2b24a4so534339eec.0 for ; Sat, 26 Sep 2026 00:03:24 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.03.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:03:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406203; x=1791011003; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=qRAWcqy39t4YH/MXWwtDPnaCtpTkj9m6y8wjd7e4fZo=; b=C8wmpiwhEz7phw8QlFBnP+Pn5SOv0Cf17oTCy2rKyqkm0bKSdb6Oxqi8oq8ut2Rofp oeJX6qxeZ2YxPDqAM42IZF1IgsPzbPDNK4zYusyortTF4WV5KvuMCHcHC7xbqdWKVmx2 XXDfMEQKyFwTfdT2vsCgtz2HGU3Kak0TRdhy8/2DGO5wuv9cjFq/tJvj5XmNwKh335dt Tjkh8bs59WwwwhavPXy7Lti/MSL4jrtUWPUtRPJml5037mGSYE1UCT44RIF8f1XrCLKm H1Vrbwfs3JrpKKSqn5W99ikh8GrRvqA+IQm/ULMNuHdrEOR9JP9nuJfl7VKly3q8RtGF tNvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406203; x=1791011003; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=qRAWcqy39t4YH/MXWwtDPnaCtpTkj9m6y8wjd7e4fZo=; b=rmkslsBQyf7DevETJd8/p+JcdROV1/BMB9ZZ8VmAsiZtoN3Y8Lg/zsDaM24N4f5+GC vJQHcFP2qBIDwsDo7MMRr4rqXrxorgFPrujf+6IcfjFt1VnsgyBrZeE/0ruBh13o4rCq Uwzcrf1wOnR/kYPm13+gr8VZ3FD8wISgr0RK+Pm6Kqn68D4q4jFrf4M7GTjLl9qu0TaX DjNOIPHIt1IzrIo40SUbtT1f6re1aOINJGTJDdIx98udlOCFiuOiMb3kosb2XQ7RmFF3 L95K/IXw0crf4BkuGvWUK8mag9tNgfCanQm/ci9GlhpCi18YiW/WfWq5WFah0hsGmjyO 6F3w== X-Gm-Message-State: AFuF++lJj8YEcG1bYv9Fd5fMIZKGcqfiP1PYT+IcLLq4W3QRMLPf/QRO i6cbcwEM0pK9WtKVDosyNtSU6ulFKdcGUvuimG/NM1dOwwrGmhjf88QHK2Btj92H X-Gm-Gg: AYBFou1t3XiS2+po9Tkc+0yKqEnRng3GrKYWzj6YIaXS9QX9cXqYoCT0YsQW39MTAse lIfjxtPpCyxIfjh3vO8W7wk+ad6BjqLTvna7JfkGgLdN7PWHEZRL/uiRP/JlR4UN/Gk19Pf0Rk0 mYl1KT6epqxOtZxT7zDXD2R35xR1IddCjBE/U+z52iIPUhW54Ur7rNkHmtLhqjDSYtMyEizCf0Y DpDUDiVhVFWbuajoeWqkkoY+TkWizemgqoGUhbnQF0UIXE9kTyCr31v3GgToNq9tDlp5ZEeR+OT W/tsxh7aCxGT39y36w5NG4dfwAWswLMqURE1LNMYlvfSGWIv9JcI49IOkh8qYigHM6cQZROwa8c djZ0Re30VJIuWQGprcvekjxkdIhkiYovfQGeFv46470hxwYdZ06+wUipOMSjqS+9dmJDEFrCmWx /MefieKc43m+hMaUUGvJoPPUQT4bt6RLab8V94gVt9yE0FTXMa/xXOgYEX6OHdcihmAEdjYTRfL 7FKgVvgLaDoyla1As2f+UDpffrBi0gi X-Received: by 2002:a05:7022:504:b0:144:eb3f:563a with SMTP id a92af1059eb24-146d02a9b40mr2755957c88.15.1790406203367; Sat, 26 Sep 2026 00:03:23 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 35/55] exec: provide target_ulong for softmmu common code Date: Sat, 26 Sep 2026 15:00:34 +0800 Message-ID: <20260926070057.1234-36-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::132c; envelope-from=luoyonggang@gmail.com; helo=mail-dy1-x132c.google.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, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1790406640152158500 Content-Type: text/plain; charset="utf-8" Softmmu common code gets a 64-bit target_ulong and a runtime MO_TL. target_long and TARGET_FMT_* stay per-target. The per-target half of target_long.h is unchanged. Signed-off-by: Yonggang Luo --- include/exec/target_long.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/include/exec/target_long.h b/include/exec/target_long.h index 3cd8e26a23f..c7bc65a60c9 100644 --- a/include/exec/target_long.h +++ b/include/exec/target_long.h @@ -10,6 +10,7 @@ #ifndef _TARGET_LONG_H_ #define _TARGET_LONG_H_ =20 +#if defined(COMPILING_PER_TARGET) /* * Usually this should only be included via cpu-defs.h however for * certain cases where we want to build only two versions of a binary @@ -40,5 +41,15 @@ typedef uint64_t target_ulong; #else #error TARGET_LONG_SIZE undefined #endif +#elif defined(CONFIG_SOFTMMU) +/* + * softmmu common: widest target_ulong and runtime MO_TL only. + * target_long, TARGET_LONG_SIZE, and TARGET_FMT_* stay per-target + * (TARGET_LONG_BITS / TARGET_FMT_* are poisoned here). + */ +#include "qemu/target-info.h" +typedef uint64_t target_ulong; +#define MO_TL (target_long_bits() =3D=3D 64 ? MO_64 : MO_32) +#endif =20 #endif /* _TARGET_LONG_H_ */ --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406792; cv=none; d=zohomail.com; s=zohoarc; b=QV6HL2JqZgV1GK+LX/kpBMAx/0zDyWPqpz1ng38dZEQSJpopMjcnNLtdCyKAffAdccTKUDrh3j/l0+dHOrC7yxzdt8IEdh8IsiXU6zrLYIkJCk8S63YTd20M0jOurjoSlVl9CpN6FKMU+xXG3lTzMum9ttqv/dxyo1a3YMBVlRs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406792; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=BiL+h4U+/0i4V9PGKop4ONI8GOLawX2pYUUOBevWvkI=; b=HpE/McpafHoxF4o1cx7YktfDIT+ZrF0mHbjOW1/Uq3EjgoAS6HR8NMvS7cvtKIIoIRL9tUYeqFO0XPVjEmn7mqn43MVJzZYubEpYPYHtf4rSNB59mMcXxalBY9huZ5PuKBh8AoUkjBbk6h01ht2GtKMqMTOmETQXoy8AY4xdzAE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406792273737.6464061107381; Sat, 26 Sep 2026 00:13:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMVn-0001AK-Lh; Sat, 26 Sep 2026 03:07:55 -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 1xAMRW-00051u-Rb for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:31 -0400 Received: from mail-dy2-x0e.google.com ([2607:f8b0:4864:36::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMRU-0000dZ-RG for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:30 -0400 Received: by mail-dy2-x0e.google.com with SMTP id 5a478bee46e88-341f6327b95so909560eec.0 for ; Sat, 26 Sep 2026 00:03:28 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.03.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:03:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406207; x=1791011007; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=BiL+h4U+/0i4V9PGKop4ONI8GOLawX2pYUUOBevWvkI=; b=AHIY2d/FdVRiOfEpzF9ho/cezuhSIQpceBP5YzWCnIIQ65vgj6KQ4RCBKT00+lSQOm H/zZxzPUi5af8EhZYFpzwg5Lcl5W5w0jbTNcA7fj1Sh12EBfivbFpQtB6kVzAuu09YY7 BdIvzVGVp4d6Wk3vyhp74NUmjNbcIp5L3YS4/pBajHxGiFvK22S9meZEyQOcBAUDQf/h bbaNp9Id6r+jN4I/polaEz13BZDjNYn9hQwgtlnSmHbDS14LhzGc0Iz+L2nG4q1kc/0q AtLUE+xNLjXbiaOoFm35RbXSt65AUbyx0IAcDVmzc6ELRkSbBfqGCQe4BW86iTnlqRQi iVBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406207; x=1791011007; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=BiL+h4U+/0i4V9PGKop4ONI8GOLawX2pYUUOBevWvkI=; b=XoWxAFCSRiyKlV4ouOr48xSp5lqjFUyoxWoPKiW9ln6iW+FN7M8hOQ7DdOe8QBLVbX BTylyhHFQKQVH1Z8Gu3hoCZuFOTxq5KMMjSonCJ5ARNH8lUrJxtCnix8j6eeKUj3LcD6 fiSN0J7E4V1IQWHXLW99VoO1PnAbv61faumryLUdkGMVqxHU+23C/5eDG57al5U1uQx7 kpR3FIJodasLwwymI1EC0iL2hGdHdALX+sEHo13lS7kw5YQ8wtr7mXEEmRvrpiO1g3FW Pu9CSHgTksOnR9LzMh/ENvZBS3DYOSQpLBn0vmiOiUxcwDz5wNDmhPoqrjrvYzwlOL25 kPqQ== X-Gm-Message-State: AFuF++nwDl4rcrhK1HKg3H1EGcbHSFyStjBExBZL6yspWgCy/M5xn0KC I6v2w/1mbxsNSF0uo1qZkLSnMEygWMlc7GA4J5FsohmpIf3I531/iYjo5TxOEURQ X-Gm-Gg: AYBFou1uVGLfK4AJAiFeRAJP+9Jg6B4xmtipUSmwAcccSDhphnuLk6fhgVBpcdzWckR pvQ3HnTP0W5yvIgymg0HES6p70mw+ODduwYfvVpctKnAmTGOzE/oH5076Eg6PDfZ2BD9Yi9r5vI 6eWdQw580dfzbj7EEBr85u+iOW6CjyshCWVYecypNq4G0PGBaWukFcGsNdT0FjbaRH2HpG9MmMA p7cJ30eugxeNjWXU8vyA2u5a3/YjLlERhXXjbZxET4PXBFNey3YvBxgIr/Pjrpbd4f+6WO2IqmN wbTh4KARLmZB/mx5WIRXw/XCC6co9WVsqYM5xdf5rAYuev16E0Wv6h1l8nHzaKZUroaVX7jnO2d fhHx+sgIRJGBLcJaP5z4naeq2b3+7ywJMhLfqu2XFrNDnFhq3OZLL1MUEV2vtvCINjeTfFA0Udi CIxVmiLLy791jaOoVOgmgLQxBi3zw+rO83Il6S70S/YQljWZfN8DUuWBBZIUENaayXWK9zUcfaB y25ZDHn8zI/myjb7zANEETDXA60jNM= X-Received: by 2002:a05:7300:f282:b0:33b:fa13:61bd with SMTP id 5a478bee46e88-34272853c94mr2057256eec.31.1790406207220; Sat, 26 Sep 2026 00:03:27 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 36/55] exec: compile abi_ptr.h without per-target cpu-param.h Date: Sat, 26 Sep 2026 15:00:35 +0800 Message-ID: <20260926070057.1234-37-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::e; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0e.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406792830158500 Content-Type: text/plain; charset="utf-8" Include cpu-param.h only for user-mode, where abi_ptr depends on TARGET_VIRT_ADDR_SPACE_BITS. Softmmu abi_ptr remains target_ulong, and its format is PRIx64 when COMPILING_PER_TARGET is unset. Signed-off-by: Yonggang Luo --- include/exec/abi_ptr.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/include/exec/abi_ptr.h b/include/exec/abi_ptr.h index 2aedcceb0c2..7e8a78bc980 100644 --- a/include/exec/abi_ptr.h +++ b/include/exec/abi_ptr.h @@ -6,13 +6,12 @@ #ifndef EXEC_ABI_PTR_H #define EXEC_ABI_PTR_H =20 -#include "cpu-param.h" - #if defined(CONFIG_USER_ONLY) /* * sparc32plus has 64bit long but 32bit space address * this can make bad result with g2h() and h2g() */ +#include "cpu-param.h" #if TARGET_VIRT_ADDR_SPACE_BITS <=3D 32 typedef uint32_t abi_ptr; #define TARGET_ABI_FMT_ptr "%x" @@ -26,7 +25,11 @@ typedef uint64_t abi_ptr; #include "exec/target_long.h" =20 typedef target_ulong abi_ptr; +#ifdef COMPILING_PER_TARGET #define TARGET_ABI_FMT_ptr TARGET_FMT_lx +#else +#define TARGET_ABI_FMT_ptr "%" PRIx64 +#endif =20 #endif /* !CONFIG_USER_ONLY */ =20 --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406565; cv=none; d=zohomail.com; s=zohoarc; b=BWXR7RhG0Him5kJOsGHaXiOzvOyXwntudxERqjsZnHVZ9r6Q/C7roTmWy9WfyDvac+CP5dR7h3sACgIL7Tywi+Gc+XY3h08IzkiQQi4yL3Gle7DlcLVU/qf1EWcLLp8UBn+1vyHeI+2wjIpqSizM1yys4oEVbWaIYgHjAZC4h4A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406565; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=rzW6PsmtOZwl+8GHz3e9WkPlmisOxZZN4sxAfBryYXI=; b=D0eyeW5rZBvJyAOYsWstwsYkD/t3XgcRG9Sd5TYNqXEvUpE/v0GeZB3GvbiaRlILlSSOabnlKu3Ae4J8Q6RGshmnc+LcR2cSENlT26S/pNi4Bzt139zUZGBLK0JQWG1liAwsASxEsGWYx4nQvOdBHRy2Z1Opj+qJOUgtU4NcMyQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406565525887.633328758486; Sat, 26 Sep 2026 00:09:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMVq-0001Pr-Fx; Sat, 26 Sep 2026 03:07:58 -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 1xAMRb-0005Fe-Rw for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:45 -0400 Received: from mail-dy2-x0e.google.com ([2607:f8b0:4864:36::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMRZ-0000e4-AY for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:34 -0400 Received: by mail-dy2-x0e.google.com with SMTP id 5a478bee46e88-3413069aa25so879270eec.0 for ; Sat, 26 Sep 2026 00:03:32 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.03.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:03:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406212; x=1791011012; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=rzW6PsmtOZwl+8GHz3e9WkPlmisOxZZN4sxAfBryYXI=; b=N9+U7WXcfYt2f/7Prz0O4CuygOC11I8l7ffunvkpL6OahOCQ1hUy7qwWIG8Er79URp khi/KiuNvCsL0Jh2g74FF+bHMQBBMrAkAJwZLNa3Y6PCGFaU5J/VJH+YhXlwbpz/Z6Yd yLhgnfUnzeKIfhsXozfkPloFpCgbdRt53FS3VACyLNg6eXIqSfiuKgRbyZ8ySi2qoDtA BpXczyoBbASRK7VylSCHqk5+/RFoqLzjHv44sZh2yLOAzlO5zHCnwzRKqUvJcFzkOLCu xZnxJBEsKiGacOCPVRPMS+ALdJVuue7DMEcEg3Dnl1UcoLqYrs8gft6Zrra24BDyqSip Gy/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406212; x=1791011012; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=rzW6PsmtOZwl+8GHz3e9WkPlmisOxZZN4sxAfBryYXI=; b=zykeMvWrmwAVStfLKxGetWAtWDivLGH7S16MWz4mXFtaVFRON26w3GOk5PEJs8P386 AWDWfaWjEn4C9yH/iX1OjxYDkG2MPVfEZsITkWvEgBQ9DL2rgWNG3nyrxzZm1JIsjtQB Id8dY79FXPnK8tHP+mqcqY9LJ57gfJrVC5VbXyJmhC0sC0FW3zxDmz4JK7zUIgbDbwB4 EPS0KtxGRnSh5emMRZJLPPPHwFCg42a5KKOxRuS48aBtF7o16aouGWUin0MsUaXrAHso iSPeMKKq3pt3phUdt/NqBss7qML4JMsZwWfxefp0PXo2YpSsFPVcpe0DkKPqGLrWGLiC u5vw== X-Gm-Message-State: AFuF++lo4yCMl1cUdmRA5DXEH0O8NQfndJ6GJeyxRRHRD4fL7N+CrWtQ JuNYHqx0YlNxE+Y9yx6SrisEBMJjSTeFIbcsMWJr73KH9AFR6r417ru96tdduc9i X-Gm-Gg: AYBFou3seXmxGFuHR/sJ1M/qfC7U/9NldDp20jj6uPTNbHVwuAqV7j++TSUoW4cjx6L uNCbHLvrz90gJrwgPhP76mlnibI57xoXnmepYIOWDiw90dzoXQSc3Q54IH3YbnC4YfLZQwJ8xkK wuDCaArYm59xLGOMgfLsBAoikH23Whu3tauhSw7SRpfFFWcAgAJqMlzPwY20vmAdfbHHVN1Mr0y yGIfocfHJ7PvRWpv2YDvC7JoIv5i0its5dLpM1m+FW7r5Mil0FQ33bKlGECUcppxd9R8jzMM/+7 dsVAFTwdtYC8U4U7Tc4sAy8RqsSbMfqwuHqmmwC74wIgEG9nreIlGfFnt9lnT4OAq4lE8sTGYNO yKEEb4UCU19h5AXzCkhT4WgrRAEzuDJfBQFiDdrEVD2HjPnT9tcAzm7B8UsIsgrXAPPZCsUz2xW MXEDyHUxnZtIrh613sEaZBFilk8XuEo6kZeGNEeyLocnjntopChdUGpp9ZxtgHNHRnFm/G+gtCK egODUpNSKW1dR9yKOYrrhgqPhGFWhw5 X-Received: by 2002:a05:7300:cacb:b0:33e:a0c3:4176 with SMTP id 5a478bee46e88-342738466b6mr1902861eec.27.1790406211560; Sat, 26 Sep 2026 00:03:31 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 37/55] accel/tcg: keep cpu-ldst endian aliases per-target Date: Sat, 26 Sep 2026 15:00:36 +0800 Message-ID: <20260926070057.1234-38-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::e; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0e.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406567727158500 Content-Type: text/plain; charset="utf-8" Wrap the TARGET_BIG_ENDIAN cpu_ld*_data aliases in COMPILING_PER_TARGET so common code can include cpu-ldst.h. Signed-off-by: Yonggang Luo --- include/accel/tcg/cpu-ldst.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/accel/tcg/cpu-ldst.h b/include/accel/tcg/cpu-ldst.h index 1facabccb23..e3082db53e5 100644 --- a/include/accel/tcg/cpu-ldst.h +++ b/include/accel/tcg/cpu-ldst.h @@ -1,5 +1,5 @@ /* - * Software MMU support (per-target) + * Software MMU support * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -423,6 +423,7 @@ cpu_stq_le_data(CPUArchState *env, abi_ptr addr, uint64= _t val) cpu_stq_le_data_ra(env, addr, val, 0); } =20 +#ifdef COMPILING_PER_TARGET #ifndef TARGET_NOT_USING_LEGACY_NATIVE_ENDIAN_API #if TARGET_BIG_ENDIAN # define cpu_lduw_data cpu_lduw_be_data @@ -470,5 +471,6 @@ cpu_stq_le_data(CPUArchState *env, abi_ptr addr, uint64= _t val) # define cpu_stq_mmuidx_ra cpu_stq_le_mmuidx_ra #endif #endif /* TARGET_NOT_USING_LEGACY_NATIVE_ENDIAN_API */ +#endif /* COMPILING_PER_TARGET */ =20 #endif /* ACCEL_TCG_CPU_LDST_H */ --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406537; cv=none; d=zohomail.com; s=zohoarc; b=ZUDDBo762/jS4WkCvWJcscS8C3KD5TKI0DfEsexLzxUF7LBrONtNKP5OSBZR4LKBza9002Bygxn8xyFzeaN1ocL9hkwuCC42bMC+A6+xscB9fdqv/KI+TdnSTMQiA47mbM+F2jFJatcvqeZrsEOZPqJ0jWpjRailcLU+VrWSE/k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406537; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=/KvXUSAQ15EFG7szh+0eupDvXY39FOdCzcgiBxzTtMs=; b=idUeiXcTfMkxHl6vEa7o3oweiOpV6anwIKj++U1UZm+zU+q9txUz1kUs8e1SS3B6+H6+o5tfjVUnd/DQdPfyJhLiL/HG745LRN/BbJClWtzCSM0Z4AZtmsGc23pEuunVrcUQXqEMbNZkDkGqTVvdjKe4ir+YGz8Ah5hS1KaXX4I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406537385250.0189273873425; Sat, 26 Sep 2026 00:08:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMVF-0000KB-9e; Sat, 26 Sep 2026 03:07:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAMRf-0005GO-PE for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:49 -0400 Received: from mail-dy2-x0e.google.com ([2607:f8b0:4864:36::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMRd-0000eZ-LB for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:39 -0400 Received: by mail-dy2-x0e.google.com with SMTP id 5a478bee46e88-3427493501eso504053eec.1 for ; Sat, 26 Sep 2026 00:03:36 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.03.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:03:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406215; x=1791011015; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=/KvXUSAQ15EFG7szh+0eupDvXY39FOdCzcgiBxzTtMs=; b=PaGqZ4XEVhhJwbToRMg02qHAktpd6QkoAb28dg20Cujr8xmrkagdemjJbMy0LH9WBc a3Mu8tKsAgpdq/kYWDPYs75sW7nG4VZNT6l4tI+KsG/TB1lmJduqCKaJmxqfWhP5IELz FpS+yo8NbvoVIoWVK5T72Z/URx224sxerpzbS2z+0reGu0RCx8uqp68EqktqHGBSvXmY xaHXyoHTUbRnUZGy5GTL0zEQ3H/XYKMnu23gEPEPx9tzSfCKzCu3p8QnVuHfnay3oTd+ 6S5XTC8BACecU4W4Dty69nfKjVWuWN+micYanHK94kSpQ47pK4FsJ9m23rzvcKlBSF91 VeKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406215; x=1791011015; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=/KvXUSAQ15EFG7szh+0eupDvXY39FOdCzcgiBxzTtMs=; b=N8Y6tGaPluF0t+UwyXWB8XPTgS1J4R1OIo0ljPhoV4UevE1e5EmVCeZqb4Mjp8kKzV 9WFfQ6i7IVqxlXpjanYfSdSCAwNuec1CQPKuPyeqBkpthwGb6jcM8pL60zTvE9aKRmCH fVsE2LWd+D9NiEwHsSalRApQaBM2zB6V0cUIQ8c5+mVTU9VuutSQqOOcH/lK/uEOPM0l cw4HU8clliTVApCH66qpATBXQ5Pz9S/xtZE0qTZnyzQ9kVHb208TFWC0CLgAwCmrcwCK zy1+BLI6KdUe0xp9D3saCvoZjAwEC+q4kohKTPx99ky/o0S2HaVFTMKdoy14fWDntydc 7kSw== X-Gm-Message-State: AFuF++n+CB1o+OuJzcImx9sp5rbmJAeMDzSlPWOUq/REDxj5sHbs07Sy oB0ggqdM0ZvNP7vYrxMDwKOo4i0cos9pduYN+NzLwxs3h590vBMY7q2wwpSE1iQY X-Gm-Gg: AYBFou0xklwNf5J/lMdDakGYvDA5bsZqEGLkVefsYHxN6vN4+ojU4QkMQsHeQsJsOk2 d2cd0z5qeFWO/iBoFX46Z4wG2sNgxa1orW3UsYGEOUvFzqbs6+tGjCLxmvMOe/4ZYT0eGM4+B+y eAK7SQH/A/IiZe/Ti8bvgwUItE+L2a9NrTd+TMtKzIR1/9VYPFSZ6OAek6J2pUu6LZDIqOkdXBP jDiimNzv0lVV0edTdpQ5PNW7qyOQZ4GFZ0NC7K8fGdVco5p+WS3KURIp/Q7389kys1vkyh6sR8H 16OecKcBOijzTU8ifa7FdERyAOIcSco+h2S3SdWAoDqXPNip1zVNkCiInutXmjXXB6rz7o4bd8z ouAFtbCY6esNq7mOFAA7zIqz6/SADBJseFEjiEfGdaYHmAXxrWzCohEPtyYbay0pTgnhZNdi25G GSeTvulpB0bUpgM6uVGvmESnu0qlTyf1JfZYKk/5oSH74Eo92ikRG6uvW+d+gx8llQQ5nKMKrfr wAaiXVrTQBE+6qi5Q6sLTU4li/Z+JI= X-Received: by 2002:a05:7300:f588:b0:333:f4ee:da89 with SMTP id 5a478bee46e88-34273347be9mr2169044eec.35.1790406215338; Sat, 26 Sep 2026 00:03:35 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 38/55] target/arm: fold arm_ss into common source sets Date: Sat, 26 Sep 2026 15:00:37 +0800 Message-ID: <20260926070057.1234-39-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::e; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0e.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406539616158500 Content-Type: text/plain; charset="utf-8" Add arm_ss to arm_common_user_system_ss and arm_system_ss to arm_common_system_ss. Drop target_arch and target_system_arch so ARM CPU objects are not built per target. Signed-off-by: Yonggang Luo --- target/arm/meson.build | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/arm/meson.build b/target/arm/meson.build index 0369f96b4cc..11815a0908d 100644 --- a/target/arm/meson.build +++ b/target/arm/meson.build @@ -68,11 +68,11 @@ if 'CONFIG_TCG' in config_all_accel subdir('tcg') endif =20 +arm_common_user_system_ss.add_all(arm_ss) arm_user_ss.add_all(arm_common_user_system_ss) arm_common_system_ss.add_all(arm_common_user_system_ss) +arm_common_system_ss.add_all(arm_system_ss) =20 -target_arch +=3D {'arm': arm_ss} -target_system_arch +=3D {'arm': arm_system_ss} target_user_arch +=3D {'arm': arm_user_ss} target_common_arch +=3D {'arm': arm_common_ss} target_common_system_arch +=3D {'arm': arm_common_system_ss} --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406599; cv=none; d=zohomail.com; s=zohoarc; b=XXsTX78uO0N6sBBWvcrf8oG3HUVn21dy2MWHynTN+QevQzol8D/Gm2oNoOJjiQ6kx4Q9NO3fxeHE+Y97eA4OhtcMbmFRU8LyHQq3ASwkT4pJ+L0V625oCJ9xE+dd3YhDIhnodcUKMZCIXIeWnfnw3VyMSwkc5sxzZMTu4gcWsmM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406599; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7wEmknfoBmg3TeWeQqrxAB6fpgRVpCKeiHIEFEVt1/A=; b=TM88OckwRBU8dWycNoCRolKvwNsdZ1SDgiiYPJDSF7rDLRE7VE+CV5BHMpXsKeQBCdnCGv2+vKwnP7cMj88UqkCg6y3mVyx4WWhfzpXO/qGnhigQ8dbm/km4Wj4dex3UgfvOG7uPdiwFFcet8JsVcA2MDYRs7evfpVRuzznaJXA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406599934131.25460382398182; Sat, 26 Sep 2026 00:09:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMWt-00042V-27; Sat, 26 Sep 2026 03:09:03 -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 1xAMRj-0005JU-1Q for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:51 -0400 Received: from mail-dy2-x10.google.com ([2607:f8b0:4864:36::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMRg-0000eo-AB for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:41 -0400 Received: by mail-dy2-x10.google.com with SMTP id 5a478bee46e88-33be7dfcfc1so2109987eec.1 for ; Sat, 26 Sep 2026 00:03:39 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.03.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:03:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406219; x=1791011019; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=7wEmknfoBmg3TeWeQqrxAB6fpgRVpCKeiHIEFEVt1/A=; b=Vu6gjm/6BrMZ/agQ3kP4OYimlBoDqmd5T8bMKJo7V/L+kxuXoGfu22bMRbJuBzPo86 bEuq3xAYRxBmiREk7PMG9KtXKuS3pgOjFhJ7GcmypqGVUml9kmYA2l3Ibp+LnVXQom2Y oH8uLRAnGPOEH3AtwWwDZ2ktBM0S88ilAqhOwdCH0wqtvYDobn31apzynlt7Cww76hxy lMhtAl9v7KYkvyNY9rbvMMATBM+9Zq1KD0Vl+r4ne765zgYUTyk5o6FQZ2vGlA8GK6Pf bydtRtSPviWFzXQRrNFU4gP5nZ7ZCZa6CB3sJUgRw4QfPyZuDikuU9Ho3QgiemiI7CcN e6Yg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406219; x=1791011019; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=7wEmknfoBmg3TeWeQqrxAB6fpgRVpCKeiHIEFEVt1/A=; b=uJAjavFK7anNbfUQHFn6rMeTinMsla+HzOex6m0sxd4xHiWRssjA5KpZrKPNumAYnq IwSzMWGPBFMUd3CcGs5rI3r0wkgHWHQCUOztsVnuCH68KOhlHTjUBNRvtXZTn42xABVv RS+k8y/S/jOMfKuukj0qOMIYtgLUDUu5rmkh/Pxk9Ouu3tfinwMV1xyyJcD98FZbiRe0 nbXj5YLfs0OrIr3x/5HiX2dlCfnoUkGau/ke2zAEay2p7sWlShMn2LFQpSO+GncrH+Bp 4/ELhYFILHQXTTPougj01RYpd4+n/XK7wu0UZqYTVtLtlcxHu3ffoplwHk3sQES0v0BQ ugZQ== X-Gm-Message-State: AFuF++mZag2y+YGscL0nHpqcg/XChMv+Q6r3hs0Pq70zjIdyrOioABak tU+KDOYB1cfK//cVbXzj+BAbPhWZTUrsVhr8OZngB7Q831HldNfkljW5h8kCLD1k X-Gm-Gg: AYBFou3PA6FVLWdghAwlrY4PA0cfD+X42QflODbWZkmKYLmaJNSX6H5FMa0y/dhf7jM yC7E6Xpy687QG9XIWcaCyzHGejbYvGOEHVhideBfyoWjsLgqmhIjFNRGWui2rkt1STg/FuspaOl 8MrieTI70k0w4lj+GdLxZWURypWxHYGFP5Rbn9xgoYWOtjd49L76hoXJA4I3OUcc5zuaFXXryDI J55KRzMziTjXxBtrf2y0E2JuI8jffTCfVAt25ZmhsbF17nUXoql6nI+d/lRua1nUCnO5rHUo3mO 2D6rtqhcj1idJ4MWLpBIGKXNPJDyIg7FaUtZXDZXg6bfToWJTeeN2Jghz8yw5HQovo7lsHTRYec 0ODWETw5fy2jLEgjd7hOQtIsRR/ndeJcei4KfOcz7N6QP1Y1hxJol7ww83dlk1m8h88z6Z8LmD0 y2TGysqTwBax99YJ7Uw3ijnHVhdSQkriqIviGo3Z3P4QTtksCHj2sHuLpuUDIAvveiJxVFcdoOj W7x6ScI35qsvL4UbaakIiBLDARl4aY= X-Received: by 2002:a05:7301:4201:b0:33b:ea8c:811b with SMTP id 5a478bee46e88-3426fbbeb5dmr2159328eec.5.1790406218912; Sat, 26 Sep 2026 00:03:38 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 39/55] target/microblaze: fold system sources into common source sets Date: Sat, 26 Sep 2026 15:00:38 +0800 Message-ID: <20260926070057.1234-40-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::10; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x10.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1790406601845158500 Content-Type: text/plain; charset="utf-8" Add microblaze_system_ss to microblaze_common_system_ss and drop target_system_arch so mmu.c and machine.c are not built per target. Signed-off-by: Yonggang Luo --- target/microblaze/meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/microblaze/meson.build b/target/microblaze/meson.build index 9c1ecd1cf1c..93138637bf2 100644 --- a/target/microblaze/meson.build +++ b/target/microblaze/meson.build @@ -21,7 +21,7 @@ microblaze_system_ss.add(files( 'mmu.c', 'machine.c', )) +microblaze_common_system_ss.add_all(microblaze_system_ss) =20 target_user_arch +=3D {'microblaze': microblaze_user_ss} -target_system_arch +=3D {'microblaze': microblaze_system_ss} target_common_system_arch +=3D {'microblaze': microblaze_common_system_ss} --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406487; cv=none; d=zohomail.com; s=zohoarc; b=dzEpiqZSiMJ0T8Q96Ro2MkTFXeK9x3Kn9vajZ/efzRlIUtgjWiouxDVM6rHXXBL8XANLpxcU4bWaN3cHq/jpNwNLi/sj2/s1yV2gh2BgD1ThWhR4l3uc50ngipHib2GBUAHlZ4thVOtdtVBPPl6CxLdY0rZUkDuO0CmEQIsbj94= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406487; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=riWdPmPaF6yCA+QpUvXi1H8TQEU17/hMGN1s+wRfSqw=; b=MhTSWLPoXo0LsuEPxOtCjv50wntjt9o5RTlMdDeST+vDcW9R67mNF46+yVNzcL38+Eb/a+SPDPEoa3vqgDXtIL+++TYDsdvbaOky612is9iw8N3KnTF6BESXQA4UaDM0L7L3GNyto18j4xESElFVdtHW0V3HW4oSFMn20Bd3iew= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406486997322.0898384132548; Sat, 26 Sep 2026 00:08:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMVN-0000ZP-HK; Sat, 26 Sep 2026 03:07:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAMRn-0005La-Qs for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:51 -0400 Received: from mail-dy2-x10.google.com ([2607:f8b0:4864:36::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMRl-0000fV-Ht for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:47 -0400 Received: by mail-dy2-x10.google.com with SMTP id 5a478bee46e88-33be7dfcfc1so2110057eec.1 for ; Sat, 26 Sep 2026 00:03:43 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.03.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:03:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406223; x=1791011023; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=riWdPmPaF6yCA+QpUvXi1H8TQEU17/hMGN1s+wRfSqw=; b=VllRqe6fi3Y7NyYAB2m7EgHLkeQJrshCMVrg2ipKvOSNP71EaCJ2v682MwU9Twtcho QqAxN1a+T8s8u1hc0NeqqCkgh1fyqYUJcSjAlt3lILOHbqlYldclrC/AB1QDEE2LkGOY TeEptIdz7CKCLF4gaW2ontOGH/lCDBjkedbz2S2ilsv6K9uAcoSdfPBZzTkDm2Za1hju Zoc5ytKnHAEIAImzc6HXX/dOa0+PYkcCZXE+lRsdd5OR1TXEs3NBAG1x+4155CDN68BQ SpwrSgcX53RFNC11bCq+N88doAAn8LNBZj13C6HF/JlQ449OAqKms+P1i/itu9TZ48XV ufuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406223; x=1791011023; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=riWdPmPaF6yCA+QpUvXi1H8TQEU17/hMGN1s+wRfSqw=; b=2l0aLHmXFwdlJ+NRdYqeKJbH3zu15vShkf4S0jDRSi6PauBE1EprWIVx3LfqxtGBzL nC/vlavHMAIQwO39vfaGoL8/8OkmXAqfXND+2Qau/xdD6JZg8iVKZjBXwgZs5jme/AIu pw/BnMtNULyNfNY77xJLx6c6917nXr/9dz6oi88X0WQJwpbVR2ncob8UQNGzs11HxFek iAn0EqInegds/qi8/LsCRBa8z8XIKNxGJcKYIeWrLFvCoX3wDVyzmgddrjAu8Q3jWQVA zf4PTYc7xImZLvmlHEvfQI/jSO8eZN+8Xn34ZVUsRKGa85+5ICx7c2YppRdyUXirGtO5 cNrQ== X-Gm-Message-State: AFuF++mk6cQQUVIANYLz0KHEFBVLi7AVqruchF5GpJJbHVRS/66LWHNl UU7w7bdWcpZxs9k8g0n5727dx2yzOPWp/tyYjAioONuQCNedvjzKFT7O2T4u2qfs X-Gm-Gg: AYBFou2xR1mDGQVkU0OtMeV8pjEX/+PPvhPjohQBR/nA14W00VLCFLoK7OQZ0mrJxHs Ui4PlPfshQEnsfwhki14WhN4+AcCNd8zctDlLf7pU6lRMZUzmIM2dBZOx9TPQYyDuATfGtMX16M D0ddzL+JlWMzon/AkjRcs6VIuYVUErlT96G/q9m2xsMFbmLQXSRPCPzJRjSki4tCcYe1JrHo2Zc 74dnlRZgpFtaqGpf4H692dh7qa8ob0hD4xp42mjCA6dlIpchKeWUpuYz2pcOzgXZwQF9VEjbMeh ArImL4qDcqnAb2OUebvc49rY1Sfp+TbT9CkMS6dsPjYwZKKpaYTqVlWM6Giw0/Hn1ZK1n9RQBD1 ekwmJ5ZzoPWKO6klG/mgtfHRFvI3ZtkJ28Rr0zzcP17ombS7kl44lydYpe3jmIyvx/aLQwY8bZb 5HpCcPEgl+nAvCsWyD3g02ETbsIw5ug+nCRSvNJ5tECDpsbokltBJXgadVjjrwa8H/wdvMfxnye yKAtrC+eZSB0vMMp5YTFiViBWZRyOw= X-Received: by 2002:a05:7301:4d0b:b0:341:d191:b838 with SMTP id 5a478bee46e88-34272562bc0mr2378558eec.31.1790406222673; Sat, 26 Sep 2026 00:03:42 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 40/55] meson: link shared objects into qemu-system Date: Sat, 26 Sep 2026 15:00:39 +0800 Message-ID: <20260926070057.1234-41-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::10; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x10.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406487499158500 Content-Type: text/plain; charset="utf-8" Extract common_ss, system_ss, and family-common objects into one qemu-system binary. Only arm, aarch64, microblaze-softmmu are listed; a new target must have arch_srcs equal to target_info_def only (target-info-def.c). Config headers stay in arch_genh. - Union non-TARGET_* keys with y taking precedence - Reject leftover arch_srcs on participating targets - Reject TARGET_* conditions on common_ss and system_ss - Link SDL, install the binary, and apply Darwin entitlements Adding a target that still has per-target sources fails meson, for example: combined qemu-system leftover for : expected: target-info-def.c arch_srcs: target/microblaze/mmu.c target/microblaze/machine.c target-info-def.c Signed-off-by: Yonggang Luo --- meson.build | 151 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 147 insertions(+), 4 deletions(-) diff --git a/meson.build b/meson.build index d5639a2d676..7ab5c7971a8 100644 --- a/meson.build +++ b/meson.build @@ -4288,15 +4288,30 @@ if host_os =3D=3D 'darwin' endif =20 traceable =3D [] +single_binary_target_info_objects =3D [] +single_binary_config =3D {} +single_binary_bases =3D {} +single_binary_deps =3D [] +single_binary_crates =3D [] +single_binary_available =3D false + +single_binary_supported_targets =3D [ + 'aarch64-softmmu', + 'arm-softmmu', + 'microblaze-softmmu', +] + emulators =3D {} -target_info_def =3D files('target-info-def.c') +target_info_def_src =3D 'target-info-def.c' +target_info_def =3D files(target_info_def_src) target_info_def_objects =3D {} foreach target : target_dirs config_target =3D config_target_mak[target] target_name =3D config_target['TARGET_NAME'] target_base_arch =3D config_target['TARGET_BASE_ARCH'] - arch_srcs =3D [config_target_h[target]] + arch_srcs =3D [] arch_deps =3D [] + arch_genh =3D [config_target_h[target]] c_args =3D ['-DCOMPILING_PER_TARGET', '-DCONFIG_TARGET=3D"@0@-config-target.h"'.format(target), ] @@ -4322,7 +4337,7 @@ foreach target : target_dirs endif =20 c_args +=3D ['-DCONFIG_DEVICES=3D"@0@-config-devices.h"'.format(target= )] - arch_srcs +=3D config_devices_h[target] + arch_genh +=3D config_devices_h[target] link_args +=3D enable_modules ? ['@block.syms', '@qemu.syms'] : [] else abi =3D config_target['TARGET_ABI_DIR'] @@ -4433,7 +4448,7 @@ foreach target : target_dirs endforeach =20 lib =3D static_library('qemu-' + target, - sources: arch_srcs + genh, + sources: arch_srcs + arch_genh + genh, dependencies: lib_deps, objects: objects, include_directories: target_inc, @@ -4443,6 +4458,45 @@ foreach target : target_dirs target_info_def_objects +=3D {target: lib.extract_objects(target_info_de= f)} =20 if target.endswith('-softmmu') + if target in single_binary_supported_targets + arch_src_rels =3D [] + foreach src : arch_srcs + arch_src_rels +=3D fs.relative_to(src, meson.project_source_root()) + endforeach + if arch_src_rels !=3D [target_info_def_src] + error('combined qemu-system leftover for ' + target + ':\n' + + 'expected:\n' + target_info_def_src + '\n' + + 'arch_srcs:\n' + '\n'.join(arch_src_rels)) + endif + single_target_config =3D {} + foreach k, v : config_target + if not k.startswith('TARGET_') + single_target_config +=3D {k: v} + if k not in single_binary_config or v =3D=3D 'y' + single_binary_config +=3D {k: v} + endif + endif + endforeach + target_common_no_target =3D common_ss.apply( + single_target_config, strict: false) + if (target_common.sources() !=3D target_common_no_target.sources() or + target_common.dependencies() !=3D target_common_no_target.depend= encies()) + error('common_ss must not use TARGET_* conditions') + endif + target_system =3D system_ss.apply(config_target, strict: false) + target_system_no_target =3D system_ss.apply( + single_target_config, strict: false) + if (target_system.sources() !=3D target_system_no_target.sources() or + target_system.dependencies() !=3D target_system_no_target.depend= encies()) + error('system_ss must not use TARGET_* conditions') + endif + single_binary_target_info_objects +=3D lib.extract_objects(target_in= fo_def) + single_binary_bases +=3D {target_base_arch: true} + single_binary_deps +=3D arch_deps + single_binary_deps +=3D target_stubs + single_binary_crates +=3D main_rs + single_binary_available =3D true + endif execs =3D [{ 'name': 'qemu-system-' + target_name, 'win_subsystem': 'console', @@ -4524,6 +4578,95 @@ foreach target : target_dirs endforeach endforeach =20 +# Combined qemu-system: one apply + extract, same sources as +# qemu-system-$target. +# +# common_ss / system_ss use single_binary_config, the non-TARGET_* union w= here +# 'y' takes precedence. +# Do not use when: 'TARGET_*' on these sets; those keys are dropped and th= e file +# would vanish from qemu-system. +# +# Family common/system libs use config_base_arch_mak[base] (every target o= f that +# TARGET_BASE_ARCH, including user-mode if enabled). +# +# Each qemu-* lib contributes target-info-def.c. Participating targets mus= t have +# arch_srcs equal to target_info_def only. +if single_binary_available + single_binary_objects =3D [] + target_common =3D common_ss.apply(single_binary_config, strict: false) + single_binary_objects +=3D common_all.extract_objects(target_common.sour= ces()) + single_binary_deps +=3D target_common.dependencies() + + target_system =3D system_ss.apply(single_binary_config, strict: false) + single_binary_objects +=3D libsystem.extract_objects(target_system.sourc= es()) + single_binary_deps +=3D target_system.dependencies() + + foreach base, _ : single_binary_bases + config_base =3D config_base_arch_mak[base] + if base in target_common_arch_libs + src =3D target_common_arch[base].apply(config_base, strict: false) + single_binary_objects +=3D target_common_arch_libs[base].extract_obj= ects( + src.sources()) + single_binary_deps +=3D src.dependencies() + endif + if base in target_common_system_arch_libs + src =3D target_common_system_arch[base].apply(config_base, strict: f= alse) + single_binary_objects +=3D target_common_system_arch_libs[base].extr= act_objects( + src.sources()) + single_binary_deps +=3D src.dependencies() + endif + endforeach + single_binary_objects +=3D single_binary_target_info_objects + + single_binary_link_args =3D emulator_link_args + single_binary_link_args +=3D enable_modules ? ['@block.syms', '@qemu.sym= s'] : [] + qemu_system_name =3D 'qemu-system' + if host_os =3D=3D 'darwin' + qemu_system_name +=3D '-unsigned' + endif + qemu_system =3D executable(qemu_system_name, + sources: [single_binary_crates, files('system/m= ain.c')], + dependencies: single_binary_deps + [sdl], + objects: single_binary_objects, + link_depends: [block_syms, qemu_syms], + link_args: single_binary_link_args, + build_by_default: true, + install: true) + if host_os =3D=3D 'darwin' + icon =3D 'pc-bios/qemu.rsrc' + build_input =3D [qemu_system, files(icon)] + install_input =3D [ + get_option('bindir') / qemu_system_name, + meson.current_source_dir() / icon + ] + if 'CONFIG_HVF' in single_binary_config + entitlements =3D 'accel/hvf/entitlements.plist' + build_input +=3D files(entitlements) + install_input +=3D meson.current_source_dir() / entitlements + endif + emulators +=3D {'qemu-system': custom_target('qemu-system', + input: build_input, + output: 'qemu-system', + build_by_default: true, + command: [entitlement, '@OUTPUT@', '@INPUT@']) + } + meson.add_install_script(entitlement, '--install', + get_option('bindir') / 'qemu-system', + install_input) + else + emulators +=3D {'qemu-system': qemu_system} + endif +else + error_str =3D f'''qemu-system only support targets: +@single_binary_supported_targets@ + +use ./configure --target-list=3D to choose at least one of them''' + t =3D custom_target(command: ['sh', '-c', 'echo "' + error_str + '" && e= xit 1'], + output: 'none', + build_by_default: false) + alias_target('qemu-system', t) +endif + # Other build targets =20 if get_option('plugins') --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406828; cv=none; d=zohomail.com; s=zohoarc; b=LIbdTC27LABlRZiYcovHwtQF8fIXCXDoL4hr9CbuQVYfRlxl+EIhYfPCmkW9/M+ZRykOzS4GBPo9zVQOtNkQ5AokOu/zleyEslxwFa1om4Rv4KKPivFMw9xuGEOpHUFXXuYNFR3+gEXgAkEAGI0wCYdKWHPmapwsAwXptUvX7OA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406828; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=rabEc0gRpcSRWEsbtg5lwnY1j5Y5VrXCH6Smb/etghU=; b=l4mLgMAJMLBsPIy54HkuxIl+tVM1sFPihzfwQKizzUGKUQ0a55pmg3DLk6MSl1547naTiPxiccmOcUFDWkqCwuaPMPsfO4CABxanTsnx234Rzl8r71X9zq049myp3jkBHYpKH0xkZmTQGSTUGvQ5PKCD2W6bT9XvOC9Y0Jx0rxk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406828111328.35654988555075; Sat, 26 Sep 2026 00:13:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMVo-0001Dr-Lu; Sat, 26 Sep 2026 03:07:57 -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 1xAMRp-0005Lo-Bj for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:51 -0400 Received: from mail-dy2-x0e.google.com ([2607:f8b0:4864:36::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMRn-0000fl-Or for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:49 -0400 Received: by mail-dy2-x0e.google.com with SMTP id 5a478bee46e88-3411e0ace58so1951061eec.0 for ; Sat, 26 Sep 2026 00:03:47 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.03.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:03:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406226; x=1791011026; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=rabEc0gRpcSRWEsbtg5lwnY1j5Y5VrXCH6Smb/etghU=; b=iGfqU0mzmX0RJQI8E82gHCSId9rVLmG1cGLOqJqNhsF7lx6QamNH9/VxMlY6DwsoFs HRu+Nre4w0FG+CnmdozcBukZPap9ymsoqvALfpKUNHDCWdP0jNKAibMjaZOEjRB1+eNT a7yuT/vE5UhHAU4LPPh7iyIFYA1IwDt0qBHIdcPp82HLuMeC8QF3F0JUv3EawJ3+zHn2 V0mrRJ8dTRvFdcHXqNDx1i3KEtE0jpG+AdFrClvQDad7txrmhtyRaD3RUHTyp2lkfcLb ibhBTvixuLfM8T0hz4h6+Wa/1BqqnRXjGtfVZ0gLpo5Zzzs5/dyB5k5RBpSujylQrwTD 0jdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406226; x=1791011026; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=rabEc0gRpcSRWEsbtg5lwnY1j5Y5VrXCH6Smb/etghU=; b=zxyjs6wDVvtw5WZw4/TdgoNcXn5yjd9kyX3ahYP6bQt0Jb4OQ7KO8F0+rJO6YIUAN/ z9rEkGGRiYdKs+fZy0+kLh0XS8qzL95iJJDYI4hidtGiPTSoiyB/zjh1aFlS5BQogLGL SxsY1rWS+mNVKyx+cOFsByRZsKp4HktOWZCvHm9XcSnensOPkqZdF0eEAr6v8YPeOKp9 rx2WaMBSWRQHqO+ykUIF/dKAUeDVof0T/ff4L0k1bkADikQ3srWl02Th03YLchyvgKSx JvrBH4WD7MnyYH5Plv5tj00w2mTHjd5zyM/fFBc/pVUosiyk+TQ42hzmGST1nGdHpODd TbeA== X-Gm-Message-State: AFuF++m+uUU8et77jpLPlafQ5YW/PHQSDCrYTT0FqvMO2clkmsuoVxvq OPSxXUNm0WFuMPFEwpng2zmzKvwP+coVAVMDm7mvaIYzzyHxxHbnFbfPNQ1aL0cV X-Gm-Gg: AYBFou3W9/i0v3jfW0vQAqzW+UANAkTN8DO+NBACK2zSbEShRtmmCMT68r4VzR4HzFv 5K5iRqwjm/3vI+4OyOgbD8vx6qMwl9mXxP3CxxrccOEuXktneErJZ+rvFp0TroXGb/5pvgjNKK0 Brxt7eWXDviJ/s37j1uPtSbI0ogIAP0W9XnCjFpLDga5Z0RrPH5rfFCo7D2Dc9KPTpvlCWlmKQD bcefQPNWiujZdDFB5Xa6U5mm4fDY7ypwN4n1x3HKdgookZj0jRRJBS2YNwABz4XdE1nbDVFJ8XQ 5L1bp/5iDdXHxD3/q7XaJB06yNJBB4c0YHfdF4xcE6/moNIuOaJPY3Lo9CCczqtJihbl6s3wDCF IjDKx9l27v4/A9drBJ4Z5m3lss3wKNlr4qR304tcyVCv5UhCA+X5DNaeABPDnCuz4J/aJ1XwNX0 gmLv9I2tS5+Wru/IPCRZbQSn49K11uBGdOyyGZoC45LeA4smIGIxnHd5uDRKMV+/Wa1KmSneOFC ZY9IKXQI+oq0EkX+XQpoZjdUKUThe4= X-Received: by 2002:a05:7300:d20c:b0:339:7b3b:236d with SMTP id 5a478bee46e88-34270ebf074mr2032360eec.15.1790406226335; Sat, 26 Sep 2026 00:03:46 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 41/55] target-info: add SysEmuTarget none Date: Sat, 26 Sep 2026 15:00:40 +0800 Message-ID: <20260926070057.1234-42-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::e; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0e.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406828766158500 Content-Type: text/plain; charset="utf-8" Add a none target for when no TargetInfo is selected. It is last so existing SYS_EMU_TARGET_* values stay put, and it is not a qemu-system- executable name. target_is_none() and target_none() report that state. Signed-off-by: Yonggang Luo --- include/qemu/target-info.h | 15 +++++++++++++++ qapi/machine.json | 13 +++++++++---- target-info.c | 10 ++++++++++ 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/include/qemu/target-info.h b/include/qemu/target-info.h index a5dcf60dd9e..812e4b04a7b 100644 --- a/include/qemu/target-info.h +++ b/include/qemu/target-info.h @@ -90,6 +90,21 @@ bool target_big_endian(void); */ bool target_is_any(const TargetInfo *ti); =20 +/** + * target_is_none: + * @ti: TargetInfo to inspect + * + * Returns whether @ti is SYS_EMU_TARGET_NONE. + */ +bool target_is_none(const TargetInfo *ti); + +/** + * target_none: + * + * Returns: %true if the current TargetInfo is SYS_EMU_TARGET_NONE. + */ +bool target_none(void); + /** * target_is_base_arm: * @ti: TargetInfo to inspect diff --git a/qapi/machine.json b/qapi/machine.json index b1be5608b61..6aaa2af709a 100644 --- a/qapi/machine.json +++ b/qapi/machine.json @@ -22,6 +22,10 @@ # The individual target constants are not documented here, for the # time being. # +# @none: no TargetInfo selected. Not a qemu-system- executable name. +# Last enumerator so existing SYS_EMU_TARGET_* values stay put. +# (since 11.2) +# # @rx: since 5.0 # # @avr: since 5.1 @@ -30,9 +34,10 @@ # # @hexagon: since 11.0 # -# .. note:: The resulting QMP strings can be appended to the -# "qemu-system-" prefix to produce the corresponding QEMU -# executable name. This is true even for "qemu-system-x86_64". +# .. note:: Except for ``none``, the resulting QMP strings can be +# appended to the "qemu-system-" prefix to produce the +# corresponding QEMU executable name. This is true even for +# "qemu-system-x86_64". # # Since: 3.0 ## @@ -42,7 +47,7 @@ 'mips64el', 'mipsel', 'or1k', 'ppc', 'ppc64', 'riscv32', 'riscv64', 'rx', 's390x', 'sh4', 'sh4eb', 'sparc', 'sparc64', 'tricore', - 'x86_64', 'xtensa', 'xtensaeb' ] } + 'x86_64', 'xtensa', 'xtensaeb', 'none' ] } =20 ## # @S390CpuState: diff --git a/target-info.c b/target-info.c index 1bdf3869605..b25e2ada438 100644 --- a/target-info.c +++ b/target-info.c @@ -112,6 +112,16 @@ bool target_is_any(const TargetInfo *ti) return true; } =20 +bool target_is_none(const TargetInfo *ti) +{ + return ti->target_arch =3D=3D SYS_EMU_TARGET_NONE; +} + +bool target_none(void) +{ + return target_is_none(target_info()); +} + bool target_is_base_arm(const TargetInfo *ti) { switch (ti->target_arch) { --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406501; cv=none; d=zohomail.com; s=zohoarc; b=AvRod3hQba1Q6QP/NHUHaM5Yu2GTOMkqDaKrjSWMYrJU0ciM4ZmvZN3/NYX4W+hANE6P3XwPexQwJDxnOVuEroX4hmxprvpaD0+3SuIVrrjSGLIBGPiYOl0Rge3FvJPudlfT/6vp6hjhi/3ZsGkrkBFhkEMhHctzxl9xzbFdwiw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406501; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=UC1ipmtg+SLu0sRvPQ2okBuPTuigAuP3T2b8CJdvCdg=; b=lmouPLR5tM6hSsbznfKIDm12U7bxp0dIwHkoOkCknRk9if+rCqGYPSKPEJoYojVWL1Hdqqai0wawEHtchKPO7euyEkPV37EgIhKJiDE/7OGJza1p4ovovvO2aRI4sOFxMkgkhxdh9m8Q4UsYBGgzgZcjcWc1QGfIHamwgf2B+v4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 179040650159990.19196654018742; Sat, 26 Sep 2026 00:08:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMUA-0007nk-BX; Sat, 26 Sep 2026 03:06:14 -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 1xAMRu-0005Pq-I0 for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:00 -0400 Received: from mail-dy2-x10.google.com ([2607:f8b0:4864:36::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMRr-0000gJ-Uo for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:54 -0400 Received: by mail-dy2-x10.google.com with SMTP id 5a478bee46e88-3396cec93b6so1847146eec.3 for ; Sat, 26 Sep 2026 00:03:51 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.03.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:03:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406231; x=1791011031; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=UC1ipmtg+SLu0sRvPQ2okBuPTuigAuP3T2b8CJdvCdg=; b=lCwwtoxDBfsIUU0LprAMRdNWVN0YQaKbKxywhA8frjPy5ekIYxLt11QJECMVQX3RKP kZOqnYwge/WqfzGkFKzo0ErlejKPfJF6KqqAxpKo3AJbNT5McJ213e3BzyLAkiouBpwH LhKkfEE9T3rYZ+hYe6AY4+mtoSGA00V+pDkgvMoH5a8tXqKMUUbN15I8knsw+83bG4wM mcksYnM0TQsFbdwbV2lcqja6TT3PCmPrwzprYmiyQ0svfI+ugI9qGhHurCnn7o53cUXB jOcDDVP7hiArsE5dupc2GYRwnVgsSG+FHEa7VBJ7cF+AxEdJsgQqhCG4DGogPywLOjpW WNfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406231; x=1791011031; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=UC1ipmtg+SLu0sRvPQ2okBuPTuigAuP3T2b8CJdvCdg=; b=kSbNkVQNEO1D4A1X8zu37uN/B/+4N+O+j++V+C1T5wqQ1f1LnVGKLcJFw+WbutDMGo fMZ5xKTwLVVsMqUUC1j+71dbzo70Kqk73NcdMtBvPPx33gi4dwZJg6+EGyWSCnFcDAPR ZVWsrHz/pLcGqC/CZ8pIf/OnZ3NcnHfgf7vVdb9IacTf8rfA2xi79JUhmGGxTnKg6RWP dbOziGowOAwj0C8Y8mcegJyd6cFtm28ua0yGAzAXdoZzXW5JliI+LTxcbOB65/wdy5e9 9+5O39p7oasq4ZffIz3CHCsYZWlZ00Mq/p1zrmCfmD9SsBLdJHqgpLOssJNZrJzr21/o 8Wfg== X-Gm-Message-State: AFuF++n3VNwLvAV/yAaxc/HGk677HKvBMTQNUZ04UwQIlhU+5BktkKcl RoNmOKS3Dx795YwDgl17t2YwsEVtVqqu9HZuFlRuMVnbqtZYmeV70zgnyVb6fa0I X-Gm-Gg: AYBFou3h65bMZYgBXO00cTx+xDcdt5CtpneTPBfKgs58Y6Tzm7QJoSRtnhYmljJgE6W ZFURTKwxx5J5y+hHPk/8mnsznG32sPSG562RMvjGdJ3FdiYRm545gm2oKPv5MBkRUkhtDXqOaqx cgM5eezmssXfbuYLd7ZEoYMZG6nogs9sfJHRlCV0eBwIIzdvMDWG8UThT4Jpm9TrG072J90jwU4 Cp9AMwLqW++LlVIbdn18oQuDlu/LXSPDB8BeWB7Aio1Jr08qR7k7JSaE12675mLGQdOYCzaKzsI nLL7krO2ID/rCX3Eo0z8xoNQr9ckQuBp9KEBXUY010gA+ULbcW1CYMWBu8BHm7U126O3UUtps2y 5W+CWU9Fx6WpkfVS5iykvMsxXF/m4FE2ttD/MFENToDpnPeaxKyuh1jVJ6wvuLityHuyAS3aXlQ 2oaPCS4Ga+EJ8Pu9l0LzpS0RLhjCgxvOhgJwh0uZAcwcvidm4947vDIowPnREYmItZoJug1WnYp R/UvxgMaWpke23FGOv/9J712RB5owd2RjMFGtBeyL4= X-Received: by 2002:a05:7300:bf9a:b0:33c:357c:d33e with SMTP id 5a478bee46e88-34272466706mr2128947eec.28.1790406230275; Sat, 26 Sep 2026 00:03:50 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 42/55] module: load every arch-tagged module when target is none Date: Sat, 26 Sep 2026 15:00:41 +0800 Message-ID: <20260926070057.1234-43-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::10; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x10.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1790406503469158500 Content-Type: text/plain; charset="utf-8" The none target allows every arch-tagged module, so modular qemu-system help can list devices from all architectures. Signed-off-by: Yonggang Luo --- util/module.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/util/module.c b/util/module.c index 8f8e6994f11..2e08c7f03a2 100644 --- a/util/module.c +++ b/util/module.c @@ -137,7 +137,9 @@ static bool module_check_arch(const QemuModinfo *modinf= o) /* no arch set -> ignore all */ return false; } - if (strcmp(module_arch, modinfo->arch) !=3D 0) { + /* "none" is SYS_EMU_TARGET_NONE: load every arch-tagged module. */ + if (strcmp(module_arch, "none") !=3D 0 && + strcmp(module_arch, modinfo->arch) !=3D 0) { /* mismatch */ return false; } --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406640; cv=none; d=zohomail.com; s=zohoarc; b=OTph1C+qJzM4m3MA15WtyVkSr0OmSVAxB5fTZiZIUpbHw59pnAvYahtmAz2q9RMiH9seOckwQxIWqSym4cvY6UFZpdGti58HWbLGgC18ZNIZfqXhJ89b37X3vRKnjCeYGnzJdfnHn64CxnvoGJZbppUOkitU1HE3L2VkLCzEaOo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406640; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=D2M0WhvqFMAcnKU8D314BNttBtcbqrejLVZUCvsEr2Q=; b=d/BAoAqVp4ZAHhD0QT3AK9W8/wH4hSY8LqZdOIE4Vb91VFV23LfISc5WQiqksRejdJPPmgtod12O1f3cLGbpSLrJ3l4l5Dd3pBi4MYDgc5BFcqGqSw0X6SdCXsl4fKCmoYkmpmSn0XcJnZmY6q2GbUv5mxsGI0FJjRhNE7/IAEo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406640561431.7321016128009; Sat, 26 Sep 2026 00:10:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMVy-00025i-EF; Sat, 26 Sep 2026 03:08:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAMRw-0005Ps-Ss for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:00 -0400 Received: from mail-dy2-x0e.google.com ([2607:f8b0:4864:36::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMRv-0000gc-CV for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:03:56 -0400 Received: by mail-dy2-x0e.google.com with SMTP id 5a478bee46e88-3411e0ace58so1951136eec.0 for ; Sat, 26 Sep 2026 00:03:55 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.03.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:03:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406234; x=1791011034; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=D2M0WhvqFMAcnKU8D314BNttBtcbqrejLVZUCvsEr2Q=; b=JJzeVTWFqeFp+1h3PlnBvbC5w7dGn6Eo2ZKP80pLNO8bSUstqOkmG6pittmXf1DpbY agaVDu7PSTWj73I6TZ4qJYQ9icWuRWqrp0i3iHH8ax1LVOUE+kamHzx7+s4x0TAuf5qn EiWYAigjXTUc5MsdvXFwlIcnbUX70uu+LDW1LdRsqL/Kbs1y3hZXFRl1TCjJyN5TchhG PvzpqUeV+rnyi31fRk5ZLkytuQG/3ALLY8+wPXH0MIUrZoKbZGz0efQg8QZ77fUtjBeT Qg8W1kxcrBA7ZEXRwH7Ko12RVcLi109crU3s11GlIAbAr9gE81FTo6SoAlViUntHydsw +smw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406234; x=1791011034; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=D2M0WhvqFMAcnKU8D314BNttBtcbqrejLVZUCvsEr2Q=; b=zzM0J9ASoz9vz3XAS1j6XTKxY+8Q8flFBNpO54bJIFQHqgmw7GI2ylT5DpVeNqMb0O APvf3y1+c63dNi0xrnC2+fv5api4IRBmPxVGTEMva5R/9CvEriinm4wonVxNF3zWZWtg tLXvb5p8ja/JPB/iZxmPaaZ1SifmoivXt2A1KCsr1EsIaNT72cup1Mwoawun2V1bBQPK pPIdIkBQdox2qpEBkbbSicZ84GW+jJMTJSwIKNyU3SVFI9b3IRB3kq5COwXfPaBUreZS loX0NXc7zLciinJvlTdYeVAl43Pp5wdTZX2YHbxHNMKzaSeJHHJYeVIE6/74RgWyUqv/ 6VgQ== X-Gm-Message-State: AFuF++l7ih7CQ1LhNnv+Z6LGYiruZZgYCBUb/CUie+g2VTilfIqRdBhr HYufZ9zK8n7qDjMJGKvuYXVJI3RPI8UHu1SysJdhkRZM5+Y9ffEWLZfHSbm09jab X-Gm-Gg: AYBFou0ZXjQrSP/R10G0/VVv8xRLs2yCOk1Yz36trnRwbUQpknzYuI63QUhS3BR1scj UCZ7cKZbYke70yT0XEilVtnTRY8OS/QnxXApNsitMpmYrbIyDgYBHTq16nYR7A8c0N5+poXVDF5 YNddv/jnSRyarpJZd2peDTm29Sb9Y/fnC+b5f7y8zWbG91P/FA/R9hOFeOeOuNUF+HPS85Ew/jn ZPzVtCZIvtD6L+QCmtLdbvYCy+XH7/k2MPMPb6oFmOhe8O1CQ+BON4yJqrwHBkaV4b7NxglJC/I pOd4NMhh8WS7tkJfTAW/8YlFWPSlF2XaVnRXH+g/Q6CTf8h1CZYjHbGdBGDHxHWcBiArcRQYOEG dbQLafft2XVTyEooeYHzjtHodV2LkzqzIDXMqDEenN09SDx00kG5pKI783SXdErZ5FCQjN1x196 AXHtZJhKD4dwMJ6iTPxfrtnpUaHeBCBrSZuL7MRLMGEDq5DKQR2S4D48aFQMiN7MwTdDLgySG5x aHkGXtWIg9It8m9hxWbJYHU/8xV0Jw= X-Received: by 2002:a05:7300:4f1c:b0:342:19b0:1c92 with SMTP id 5a478bee46e88-34273549d27mr2573139eec.35.1790406234000; Sat, 26 Sep 2026 00:03:54 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 43/55] accel/tcg: tolerate NULL target_cpu_type for -M none Date: Sat, 26 Sep 2026 15:00:42 +0800 Message-ID: <20260926070057.1234-44-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::e; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0e.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406642009158500 Content-Type: text/plain; charset="utf-8" Combined qemu-system -M none keeps SYS_EMU_TARGET_NONE, so target_cpu_type() is NULL. Skip the CPUClass lookup and leave MTTCG off instead of crashing in tcg_init_machine(). Signed-off-by: Yonggang Luo --- accel/tcg/tcg-all.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/accel/tcg/tcg-all.c b/accel/tcg/tcg-all.c index 767e8805552..e44856f8304 100644 --- a/accel/tcg/tcg-all.c +++ b/accel/tcg/tcg-all.c @@ -107,8 +107,13 @@ static int tcg_init_machine(AccelState *as, MachineSta= te *ms) unsigned max_threads =3D 1; =20 #ifndef CONFIG_USER_ONLY - CPUClass *cc =3D CPU_CLASS(object_class_by_name(target_cpu_type())); - bool mttcg_supported =3D cc->tcg_ops->mttcg_supported; + /* + * Combined qemu-system -M none keeps SYS_EMU_TARGET_NONE, so + * target_cpu_type() is NULL. MTTCG defaults off. + */ + ObjectClass *oc =3D object_class_by_name(target_cpu_type()); + CPUClass *cc =3D oc ? CPU_CLASS(oc) : NULL; + bool mttcg_supported =3D cc && cc->tcg_ops && cc->tcg_ops->mttcg_suppo= rted; =20 switch (s->mttcg_enabled) { case ON_OFF_AUTO_AUTO: --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406583; cv=none; d=zohomail.com; s=zohoarc; b=msmQRAEZOxH5k9ItGKcoj+TMzNAYgW53m61Zp3ik+A+BRbd7XTjMmZVbeDUEhhOpEfKWxhFFyDcSc0wMnrF1rh7m560kJQLkGwX/1PrPmvVDXznNRVU4TCqCeO7vcFWgVAs9utWvauekK+BI4zUsVxKUAQ6MwE8um3bPX4W3DEk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406583; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=qCXIFUQwlVnS7FqE0wXM3scWpVNsZr5+GJNgga1dkVI=; b=Wr60nL/cUc9toZvmw4YHPTkIDdzGQAJ1qilHGlB182+OVuPYLaP/Lj8ReRIhSz1JOUt5fL+svaU+ZVRdRq/5uLrvhGk7QOqVmbjD3TColXk7FZuxqRHzmUG65S5p8Xcouog7ZbMaL7pwYksCAR3dyTn3PSgtopHJgBcG7bOxGYs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406582959178.75726280894116; Sat, 26 Sep 2026 00:09:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMW1-0002Oi-5Q; Sat, 26 Sep 2026 03:08:09 -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 1xAMS4-0005Wz-A3 for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:09 -0400 Received: from mail-dy2-x10.google.com ([2607:f8b0:4864:36::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMS1-0000h4-0D for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:04 -0400 Received: by mail-dy2-x10.google.com with SMTP id 5a478bee46e88-33be7dfcfc1so2110291eec.1 for ; Sat, 26 Sep 2026 00:03:58 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.03.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:03:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406238; x=1791011038; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=qCXIFUQwlVnS7FqE0wXM3scWpVNsZr5+GJNgga1dkVI=; b=LzaZGrGuq955ASToIs59s71h7MI6S2QKxTySRo5dmv8RUmY08GEfLJG6UoGokdVoSJ 1rp67tSRlOvAU1LUSLWDgricPWCcdJCuASMopFgrY1WdOLnNh4l9eHpIlPpLOc0K9TTk JjfGTmfv6RcPFPyjZWZhQmLeZeTxh9YcUaOpkL48N5NUVbNZ4CVYjKUG65U5/i7BpFf9 S9APD2aoe2QOUDi9PeXBfVLx3eBYv6dSyaYRCYxKeA1MjoLbZK1etTpXNrysQxnO404k l3VQmpKKVy4C6qAA+ujTMx0P16BxJZLqgMLpCZlwC5/H3ZV0qeimi6p9NdUQWX+bFZ9O +2hQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406238; x=1791011038; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=qCXIFUQwlVnS7FqE0wXM3scWpVNsZr5+GJNgga1dkVI=; b=jpn3nCE6Czd4qDDIEQExPjkW2C3nTJevH4PRjOUgoXg7CQJTFAH39q5c9z+sGJ4x1O VSfL7mNE7o5RJ5ZnkZ7LAvPSfhWtHNbHj0q2EAUckhQsnjIbzBnRMoKkpL5PdZ3Vh8az YNooGul0ZNi9TmDS2WuX2aBohzFMDCtHAFlBrHtOh4yN3QrwsEwU5caNlRIlKZR4yuOr 0a16w3zNaLBMDPaXYm9Qv3bXSSPiOVyO5R9O8qLssVSGBc4LOXZi4D/trGk0fKw4geGg 2CHJWrJ8kQp7FYiiYaYtYXCwfQrOw8B/ennbKzwdtjOlLrbm3P/MxCvnqBmndF3zXeCy VSDQ== X-Gm-Message-State: AFuF++mOth65p1PZzplEEk7QtJYv5uX9W47cDgBw8+oE5NZE4QNSjBpf 0TktMw/cUq5wHe+ftvjVC+zDYPhz95bLKqod+3GD+6yxOufWLaudisXSPmQzO07q X-Gm-Gg: AYBFou3eBZn4fZasLuGGkchJ/QeTuewbuHJIW9fMv2fvC9UKLYGJ6cxzqrktxQP/HBG YmTIW5kUUMc+bAvNYnf+5wd47aXEiK+OqBQVlhcARR1o/vPnD+0gw9dUCEd1a2Qm2dK18RckW69 6pgiDjeipEwYV09e5hIMvbeXttwf3tpefezMAZrriFwD2nRQyXKwXX9TgUBx2S0eRYs2ZTWqIZI nPkwc435ExK2YPgffw2ly5JDT1WDPpHKaq6rmDs1dtDV9Q3g0LK9XwQqNAIwwZb53OFpXnjI5ll 0+QxRes1f3a6Sk2PUhX3udUa2+j8FkNdQeC+tcmJHfVVv9KZY7JJgzvZKMgr07jr7TY8RZyv6Zf udoieO4kb3C8Y/swbwpFInCUK7s5WTaTJ4S3SlHDZEatQsL38MIPIcXCj33wFEBhYtMWkc34KzB 0SS1jNOrDtk+sGTlRTJb79FIXTs6AkBdi6p7bJeIwy8bUWEz6sac3WcW2yrk2ePwd9kKBD7RE6p 6ossR2IYEDuRNJ6zMCBqCXzULfEzf8= X-Received: by 2002:a05:7300:d0a7:b0:33b:dab1:d6b5 with SMTP id 5a478bee46e88-342705aee26mr2037757eec.11.1790406237841; Sat, 26 Sep 2026 00:03:57 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 44/55] target-info: select combined qemu-system target by name Date: Sat, 26 Sep 2026 15:00:43 +0800 Message-ID: <20260926070057.1234-45-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::10; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x10.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1790406583890158500 Content-Type: text/plain; charset="utf-8" The combined qemu-system binary can select a registered target by name, or stay on SYS_EMU_TARGET_NONE. A single-target binary does not switch target. The none entry is the same target-info-def.c stub as other targets, compiled with TARGET_BASE_ARCH NONE. target/none/cpu.h supplies ArchCPU for that stub, and cpu-param.h sets TARGET_VIRT_ADDR_SPACE_BITS. TYPE_NONE_CPU is NULL because there is no none CPU QOM type. type_register_internal() keeps types on the combined binary and filters them with TypeInfo.is_available. A single-target binary still omits types that cannot run. Signed-off-by: Yonggang Luo --- include/qemu/target-info-select.h | 24 +++++++++++++++++++++ meson.build | 35 +++++++++++++++++++++++++++++++ qom/object.c | 8 ++++++- stubs/meson.build | 1 + stubs/target-info-select.c | 14 +++++++++++++ system/target-info-select.c | 26 +++++++++++++++++++++++ target/none/cpu-param.h | 7 +++++++ target/none/cpu-qom.h | 6 ++++++ target/none/cpu.h | 18 ++++++++++++++++ 9 files changed, 138 insertions(+), 1 deletion(-) create mode 100644 include/qemu/target-info-select.h create mode 100644 stubs/target-info-select.c create mode 100644 system/target-info-select.c create mode 100644 target/none/cpu-param.h create mode 100644 target/none/cpu-qom.h create mode 100644 target/none/cpu.h diff --git a/include/qemu/target-info-select.h b/include/qemu/target-info-s= elect.h new file mode 100644 index 00000000000..0659bb47567 --- /dev/null +++ b/include/qemu/target-info-select.h @@ -0,0 +1,24 @@ +#ifndef QEMU_TARGET_INFO_SELECT_H +#define QEMU_TARGET_INFO_SELECT_H + +/** + * target_combined_binary: + * + * Returns: %true if this is the combined qemu-system binary. + */ +bool target_combined_binary(void); + +typedef struct Error Error; + +/** + * target_info_select_by_name: + * @name: target_name to select, or NULL + * @errp: error location + * + * Combined qemu-system only. NULL selects "none". Every name, including + * "none", is looked up in target_info_list(). The stub is a no-op on + * single-target binaries. + */ +void target_info_select_by_name(const char *name, Error **errp); + +#endif diff --git a/meson.build b/meson.build index 7ab5c7971a8..96f493cb746 100644 --- a/meson.build +++ b/meson.build @@ -4618,6 +4618,41 @@ if single_binary_available endforeach single_binary_objects +=3D single_binary_target_info_objects =20 + none_config_target_data =3D configuration_data() + none_config_target_data.set_quoted('TARGET_NAME', 'none') + none_config_target_data.set('TARGET_ARCH', 'NONE') + none_config_target_data.set('TARGET_BASE_ARCH', 'NONE') + none_config_target_data.set('TARGET_LONG_BITS', 64) + none_config_target_data.set('TARGET_BIG_ENDIAN', 0) + none_config_target_h =3D configure_file(output: 'none-config-target.h', + configuration: none_config_target_= data) + none_config_devices_data =3D configuration_data() + foreach k, v : single_binary_config + if v =3D=3D 'y' + none_config_devices_data.set(k, 1) + endif + endforeach + none_config_devices_h =3D configure_file(output: 'none-config-devices.h', + configuration: none_config_device= s_data) + qemu_none_ss =3D ss.source_set() + qemu_none_ss.add(files('system/target-info-select.c')) + qemu_none_ss.add(target_info_def) + qemu_none_src =3D qemu_none_ss.apply(single_binary_config, strict: false) + qemu_none =3D static_library('qemu-none', + sources: qemu_none_src.sources() + genh + + [none_config_target_h, + none_config_devices_h], + dependencies: qemu_none_src.dependencies(), + include_directories: include_directories( + 'target' / 'none'), + c_args: [ + '-DCOMPILING_PER_TARGET', + '-DCONFIG_TARGET=3D"none-config-target.h"', + '-DCONFIG_DEVICES=3D"none-config-devices.h"= ', + ], + build_by_default: false) + single_binary_objects +=3D qemu_none.extract_objects(qemu_none_src.sourc= es()) + single_binary_link_args =3D emulator_link_args single_binary_link_args +=3D enable_modules ? ['@block.syms', '@qemu.sym= s'] : [] qemu_system_name =3D 'qemu-system' diff --git a/qom/object.c b/qom/object.c index 76b0b0806b3..2ce6c369df5 100644 --- a/qom/object.c +++ b/qom/object.c @@ -16,6 +16,7 @@ #include "qom/object.h" #include "qom/object_interfaces.h" #include "qemu/target-info-qapi.h" +#include "qemu/target-info-select.h" #include "qemu/cutils.h" #include "qemu/memalign.h" #include "qapi/visitor.h" @@ -171,7 +172,12 @@ static TypeImpl *type_register_internal(const TypeInfo= *info) abort(); } =20 - if (info->is_available && !info->is_available(target_info())) { + /* + * Single-target binaries omit types that cannot run. The combined + * binary keeps them and filters with is_available per target. + */ + if (!target_combined_binary() && info->is_available && + !info->is_available(target_info())) { return NULL; } =20 diff --git a/stubs/meson.build b/stubs/meson.build index 29b6644b254..3765537778d 100644 --- a/stubs/meson.build +++ b/stubs/meson.build @@ -3,6 +3,7 @@ # below, so that it is clear who needs the stubbed functionality. =20 stub_ss.add(files('cpu-get-clock.c')) +stub_ss.add(files('target-info-select.c')) stub_ss.add(files('fdset.c')) stub_ss.add(files('iothread-lock.c')) stub_ss.add(files('is-daemonized.c')) diff --git a/stubs/target-info-select.c b/stubs/target-info-select.c new file mode 100644 index 00000000000..5c9e8dc6e19 --- /dev/null +++ b/stubs/target-info-select.c @@ -0,0 +1,14 @@ +#include "qemu/osdep.h" +#include "qemu/target-info-select.h" +#include "qapi/error.h" + +bool target_combined_binary(void) +{ + return false; +} + +void target_info_select_by_name(const char *name, Error **errp) +{ + (void)name; + (void)errp; +} diff --git a/system/target-info-select.c b/system/target-info-select.c new file mode 100644 index 00000000000..4b4a9fdf256 --- /dev/null +++ b/system/target-info-select.c @@ -0,0 +1,26 @@ +#include "qemu/osdep.h" +#include "qemu/target-info-def.h" +#include "qemu/target-info-select.h" +#include "qapi/error.h" + +bool target_combined_binary(void) +{ + return true; +} + +void target_info_select_by_name(const char *name, Error **errp) +{ + TargetInfoNode *node; + + if (!name) { + name =3D "none"; + } + + QLIST_FOREACH(node, target_info_list(), next) { + if (!strcmp(name, node->info->target_name)) { + target_info_select(node->info); + return; + } + } + error_setg(errp, "target '%s' is not available", name); +} diff --git a/target/none/cpu-param.h b/target/none/cpu-param.h new file mode 100644 index 00000000000..3c0818a2f02 --- /dev/null +++ b/target/none/cpu-param.h @@ -0,0 +1,7 @@ +#ifndef NONE_CPU_PARAM_H +#define NONE_CPU_PARAM_H + +#define TARGET_PAGE_BITS 9 +#define TARGET_VIRT_ADDR_SPACE_BITS 64 + +#endif diff --git a/target/none/cpu-qom.h b/target/none/cpu-qom.h new file mode 100644 index 00000000000..114faa8077a --- /dev/null +++ b/target/none/cpu-qom.h @@ -0,0 +1,6 @@ +#ifndef QEMU_NONE_CPU_QOM_H +#define QEMU_NONE_CPU_QOM_H + +#define TYPE_NONE_CPU NULL + +#endif diff --git a/target/none/cpu.h b/target/none/cpu.h new file mode 100644 index 00000000000..ffb9a0d28dc --- /dev/null +++ b/target/none/cpu.h @@ -0,0 +1,18 @@ +#ifndef QEMU_NONE_CPU_H +#define QEMU_NONE_CPU_H + +#include "cpu-qom.h" +#include "hw/core/cpu.h" + +#define CPU_RESOLVING_TYPE TYPE_NONE_CPU + +typedef struct CPUArchState { + uint64_t unused; +} CPUArchState; + +struct ArchCPU { + CPUState parent_obj; + CPUArchState env; +}; + +#endif --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406790; cv=none; d=zohomail.com; s=zohoarc; b=EZry/oB50IPEZ1Yk0mQRpZzqydNohWeOTPun5MYVNqKtmsJI0E6k722jRWH/0TvtkkUfsTIxetrqHC9KTDL8ne+WhfCfHxQBjjdq3AxA0l/cTB3v2xHEmtDulDmfLeP3BANxGZy7rgWoYYNarH6wgX47BIAsprVeVSnNdnGkxaA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406790; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=mKOEnoJQ/ccsACw/aTGJU/jJy11AbBBe19tBMAh69fU=; b=kHlamzYbW7GCJogf3+OghMllgiw1QGhKYlVyi3T/faQD1x7kQc14yuiPQlWq8hJ2vm4gBj6qGZME/AzGVytoiDZwMk24XLltAGCnrWmOoy6GJaPQ9zUJtSLYM7jFgOSYoz0i5pwuoKW6QhFnBPlCUfNUTIgjUyFZOjfWIES3APE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406790722101.80851319004523; Sat, 26 Sep 2026 00:13:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMVr-0001TQ-DV; Sat, 26 Sep 2026 03:07:59 -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 1xAMS6-0005X2-Af for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:13 -0400 Received: from mail-dl2-x0f.google.com ([2607:f8b0:4864:38::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMS3-0000ha-Jd for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:06 -0400 Received: by mail-dl2-x0f.google.com with SMTP id a92af1059eb24-14354475e6cso249940c88.0 for ; Sat, 26 Sep 2026 00:04:03 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.03.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:04:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406242; x=1791011042; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=mKOEnoJQ/ccsACw/aTGJU/jJy11AbBBe19tBMAh69fU=; b=D9YbQbOiJfaj49divLuAT/tzj5U5Kc3Z31zMbVjfdj9l7vlMHStLp6KyZmEvRCuXC6 dC5yBmdfr98vZiOV876kpM3ddivdB2qjr3SvZckIjivz1bzayg/4FPscKPibyRKdsvzh 28sYmoQglq3rRZn/8xkaoPny9DEnLugmm/ZXoD2xzjOweSspjF0lTk2jYVBJ6WZ1deMN q2kGTGQJsi08pvXIXZNoh3/Dmu502lEiHcMi5svFERksvOrz4El6PwPOc20DjOoP6ZaI hlzLbMiggb5fPLHMR0SV/EeBVTVey9XJFl+3I/SUk5l2aQnWzqtazQPMKxMVw80uNoZo lb4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406242; x=1791011042; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=mKOEnoJQ/ccsACw/aTGJU/jJy11AbBBe19tBMAh69fU=; b=U5GlKVf+wDteSkOIEuJw9PsvaJx5ORIHqRtd5ObJZTcehQi/4VQK2x/rcqRgghXXfr QG+EDlGpjovLhB/BNrJYOtmU0dy2bNv5mb2+geHKlw2OozBP8PwepgpCzNA/nNmyGR3g C+KgYPwULJyp8Yjg4/P3MfMGLcifYVSqeBlRRBCJnI3sc4zATPDy0iEkopVU1FeNuWfS rc6whzr81Er5NeuS2NSuwsQNzA1LIfh4SNPAJ1iaCvX0Lsh6s4aeUiUrA/AdsUYhHN0x OJlJZh2IceI6IA1QP2gWXaCT1fGaxTXT42pfXKkmB9YL9uEC/yWTcQHzDMj3IrrLprUk BfRw== X-Gm-Message-State: AFuF++laiAvOtqHAvRt3lzGBr3gG8vgQ27cvmwh3NDpmhO9lMxcbi6DK Sl1bxUKVDjz/a5x1wT8RBLPpQEB2PQWZSuRC9MEvXIQm1T4ywJloZ1tqWjWBSLPK X-Gm-Gg: AYBFou0usWGOrv0W1qryzbz4zVz5/4HWCRZl+94TjqCAMr9sZsfcWVibXWs4fhePO3p WpHvtCBidtgT5wiML7Ut5/WL4i+d6mOib9kuYzXo9e39qZknQsfIQToSnpRp2grN+bppg2jux5O iY2tHi+cJpbD3y/DX3y6LBCnpCBxQNL4bDUpq+q9YCOyeNZ4BFaiP5DvDTWd3mWRDiPJkLDMceV +OrtRgT/Aen/59XSbbmhtcFUeznCsI1M17/lTYIRnu/DA/UJfOVWTwNFslmqQiBaB14+Gh/Fc8J EavQ3hmZ7YCs3heng/2tMW9QeZtsMZyTCDTrLOKOHJWdRHpDgCWGXOzXFgogbNDyt1DE/EBIbAu 0eRjI+ij1ogboiZc2WoLmbJe1NdvtW98gU2zDBHnw6AK4PeDIhUGO6VhxHPFBjLRvOOw6Ps2TmA HkSLSHOs/UsAtfGFg9qdAh3XvS2rny9YYZdTCIaXN7vxuNeKjQJCHSEEs1paiG+54WjMkaLrqRc TSh2eSeLjsYshgNIVf3NB/8Vb125II= X-Received: by 2002:a05:7022:f502:b0:141:aa71:6f4c with SMTP id a92af1059eb24-146ce1a9aacmr2071858c88.10.1790406241683; Sat, 26 Sep 2026 00:04:01 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 45/55] vl: parse arch: machine types on combined qemu-system Date: Sat, 26 Sep 2026 15:00:44 +0800 Message-ID: <20260926070057.1234-46-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:38::f; envelope-from=luoyonggang@gmail.com; helo=mail-dl2-x0f.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406792905158500 Content-Type: text/plain; charset="utf-8" The combined binary takes arch:name on -M/-machine and in a [machine] type from the default config file or -readconfig, and selects that target before QOM init. The default file is read first. -nouserconfig skips only that file. select_machine() matches the machine in the selected target. qemu_read_config_file_cb() supplies the callback for that early pass. qemu-options.hx documents arch:name and arch:help. - A later bare name keeps the last arch prefix - Last -M wins for help - Plain -M help lists every target; arch:help lists one target - qemu-system- still prints machine help after early options Signed-off-by: Yonggang Luo --- include/qemu/config-file.h | 2 + qemu-options.hx | 11 +- system/vl.c | 294 ++++++++++++++++++++++++++++++++++--- util/qemu-config.c | 10 +- 4 files changed, 291 insertions(+), 26 deletions(-) diff --git a/include/qemu/config-file.h b/include/qemu/config-file.h index 51b310fa3b4..f733b0e9769 100644 --- a/include/qemu/config-file.h +++ b/include/qemu/config-file.h @@ -22,6 +22,8 @@ int qemu_config_parse(FILE *fp, QemuOptsList **lists, con= st char *fname, void qemu_config_do_parse(const char *group, QDict *qdict, void *opaque, E= rror **errp); =20 int qemu_read_config_file(const char *filename, QEMUConfigCB *f, Error **e= rrp); +int qemu_read_config_file_cb(const char *filename, QEMUConfigCB *f, + void *opaque, Error **errp); =20 /* Parse QDict options as a replacement for a config file (allowing multip= le enumerated (0..(n-1)) configuration "sections") */ diff --git a/qemu-options.hx b/qemu-options.hx index 2f6863180b0..32be1ceeda2 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -27,6 +27,8 @@ ERST DEF("machine", HAS_ARG, QEMU_OPTION_machine, \ "-machine [type=3D]name[,prop=3Dvalue[,...]]\n" " selects emulated machine ('-machine help' for list)\n" + " use arch:name (e.g. aarch64:virt) on the combined bin= ary\n" + " '-machine help' lists all targets; use arch:help for = one\n" " property accel=3Daccel1[:accel2[:...]] selects accele= rator\n" " supported accelerators are kvm, xen, hvf, nitro, nvmm= , whpx, mshv or tcg (default: tcg)\n" " vmport=3Don|off|auto controls emulation of vmport (de= fault: auto)\n" @@ -53,7 +55,14 @@ DEF("machine", HAS_ARG, QEMU_OPTION_machine, \ SRST ``-machine [type=3D]name[,prop=3Dvalue[,...]]`` Select the emulated machine by name. Use ``-machine help`` to list - available machines. + available machines. On a single-target binary this lists that + target. On the combined qemu-system binary, ``-machine help`` + lists every target; pass ``arch:name`` (for example + ``aarch64:virt``) to select one, or ``arch:help`` (for example + ``aarch64:help``) to list that target only. A ``[machine]`` + ``type`` in the default config file or ``-readconfig`` uses the + same form. The default file is read first. A later bare name + keeps the last arch prefix. =20 For architectures which aim to support live migration compatibility across releases, each release will introduce a new versioned machine diff --git a/system/vl.c b/system/vl.c index 7f1381d84ff..1bdd5b2da05 100644 --- a/system/vl.c +++ b/system/vl.c @@ -28,6 +28,8 @@ #include "qemu/units.h" #include "qemu/module.h" #include "qemu/target-info.h" +#include "qemu/target-info-select.h" +#include "qemu/target-info-def.h" #include "exec/cpu-common.h" #include "exec/page-vary.h" #include "hw/core/qdev-properties.h" @@ -842,6 +844,12 @@ static bool usb_parse(const char *cmdline, Error **err= p) /***********************************************************/ /* machine registration */ =20 +/* Same grouping as -M help: each machine must have is_available. */ +static bool machine_class_in_target(MachineClass *mc, const TargetInfo *ti) +{ + return object_class_get_is_available(OBJECT_CLASS(mc))(ti); +} + static MachineClass *find_machine(const char *name, GSList *machines) { GSList *el; @@ -850,6 +858,9 @@ static MachineClass *find_machine(const char *name, GSL= ist *machines) MachineClass *mc =3D el->data; =20 if (!strcmp(mc->name, name) || !g_strcmp0(mc->alias, name)) { + if (!machine_class_in_target(mc, target_info())) { + continue; + } return mc; } } @@ -866,6 +877,9 @@ static MachineClass *find_default_machine(GSList *machi= nes) MachineClass *mc =3D el->data; =20 if (mc->is_default) { + if (!machine_class_in_target(mc, target_info())) { + continue; + } assert(default_machineclass =3D=3D NULL && "Multiple default m= achines"); default_machineclass =3D mc; } @@ -874,6 +888,106 @@ static MachineClass *find_default_machine(GSList *mac= hines) return default_machineclass; } =20 +/* + * Split "aarch64:virt". "aarch64:" binds arch and leaves an empty name. + * A leading colon is not a prefix. *machine_name always takes the latest + * parsed name; NULL type leaves it unchanged. keep_target leaves + * *machine_target unchanged when the new type has no prefix. + */ +static void machine_type_parse_target(const char *type, + char **machine_name, + char **machine_target, + bool keep_target) +{ + const char *colon =3D NULL; + const char *parsed_name =3D NULL; + const char *parsed_target =3D NULL; + + if (type) { + colon =3D strchr(type, ':'); + if (!colon || colon =3D=3D type) { + parsed_name =3D type; + } else { + parsed_target =3D type; + parsed_name =3D colon + 1; + } + } + + if (parsed_name) { + g_free(*machine_name); + *machine_name =3D g_strdup(parsed_name); + } + if (parsed_target || !keep_target) { + g_free(*machine_target); + *machine_target =3D parsed_target ? + g_strndup(parsed_target, colon - parsed_target) : NULL; + } +} + +typedef struct MachineTypeOpt { + char *type; + char *name; + char *target; + bool help; +} MachineTypeOpt; + +static void machine_type_opt_clear(MachineTypeOpt *opt) +{ + g_free(opt->type); + g_free(opt->name); + g_free(opt->target); + opt->type =3D NULL; + opt->name =3D NULL; + opt->target =3D NULL; +} + +G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(MachineTypeOpt, machine_type_opt_clear) + +/* A bare name keeps the previous arch prefix. */ +static void machine_type_opt_set(MachineTypeOpt *opt, const char *type, + bool help) +{ + if (!type && !help) { + return; + } + if (type) { + g_free(opt->type); + opt->type =3D g_strdup(type); + machine_type_parse_target(opt->type, &opt->name, &opt->target, tru= e); + } + opt->help =3D help || (type && opt->name && is_help_option(opt->name)); +} + +static void qemu_config_set_machine_type(const char *group, QDict *qdict, + void *opaque, Error **errp) +{ + MachineTypeOpt *opt =3D opaque; + + (void)errp; + if (strcmp(group, "machine") !=3D 0) { + return; + } + machine_type_opt_set(opt, qdict_get_try_str(qdict, "type"), false); +} + +static void machine_type_config_file(const char *filename, bool optional, + MachineTypeOpt *opt) +{ + Error *err =3D NULL; + int ret; + + ret =3D qemu_read_config_file_cb(filename, qemu_config_set_machine_typ= e, + opt, &err); + if (ret < 0) { + if (optional && ret =3D=3D -ENOENT) { + error_free(err); + return; + } + error_report_err(err); + exit(1); + } +} + static void version(void) { printf("QEMU emulator version " QEMU_FULL_VERSION "\n" @@ -1563,25 +1677,31 @@ static gint machine_class_cmp(gconstpointer a, gcon= stpointer b, gpointer d) object_class_get_name(OBJECT_CLASS(mc1))); } =20 -static void machine_help_func(const QDict *qdict) +static void machine_help_print_target(GSList *machines, const TargetInfo *= ti, + const char *machine_target) { - g_autoptr(GSList) machines =3D NULL; + bool printed =3D false; GSList *el; - const char *type =3D qdict_get_try_str(qdict, "type"); + bool combined =3D target_combined_binary(); + bool print_header =3D combined && !machine_target; =20 - machines =3D object_class_get_list(TYPE_MACHINE, false); - if (type) { - ObjectClass *machine_class =3D OBJECT_CLASS(find_machine(type, mac= hines)); - if (machine_class) { - type_print_class_properties(object_class_get_name(machine_clas= s)); - return; - } + if (!combined) { + g_assert(ti =3D=3D target_info()); + } else if (machine_target && ti !=3D target_info()) { + /* -M arch:help: skip every target except the selected one. */ + return; } =20 - printf("Supported machines are:\n"); - machines =3D g_slist_sort_with_data(machines, machine_class_cmp, NULL); for (el =3D machines; el; el =3D el->next) { MachineClass *mc =3D el->data; + + if (!machine_class_in_target(mc, ti)) { + continue; + } + if (print_header && !printed) { + printf("%s:\n", ti->target_name); + printed =3D true; + } if (mc->alias) { printf("%-20s %s (alias of %s)\n", mc->alias, mc->desc, mc->na= me); } @@ -1590,6 +1710,54 @@ static void machine_help_func(const QDict *qdict) mc->deprecation_reason ? " (deprecated)" : "", object_class_is_secure(OBJECT_CLASS(mc)) ? " (secure)" : ""= ); } + + if (print_header && printed) { + printf("\n"); + } +} + +static void machine_help_func(const char *type, + const char *machine_name, + const char *machine_target) +{ + g_autoptr(GSList) machines =3D NULL; + MachineClass *mc =3D NULL; + TargetInfoNode *node; + + machines =3D object_class_get_list(TYPE_MACHINE, false); + + if (machine_name && *machine_name && !is_help_option(machine_name)) { + mc =3D find_machine(machine_name, machines); + if (mc) { + type_print_class_properties(object_class_get_name(OBJECT_CLASS= (mc))); + return; + } + if (target_none()) { + error_report("machine type \"%s\" needs an arch: prefix", + machine_name); + exit(1); + } + error_report("unsupported machine type: \"%s\"", type); + exit(1); + } + + if (type && (!machine_name || !*machine_name)) { + if (!target_none()) { + mc =3D find_default_machine(machines); + if (!mc) { + error_report("No machine specified, and there is no defaul= t"); + exit(1); + } + type_print_class_properties(object_class_get_name(OBJECT_CLASS= (mc))); + return; + } + } + + printf("Supported machines are:\n"); + machines =3D g_slist_sort_with_data(machines, machine_class_cmp, NULL); + QLIST_FOREACH(node, target_info_list(), next) { + machine_help_print_target(machines, node->info, machine_target); + } } =20 static void @@ -1684,18 +1852,58 @@ static MachineClass *select_machine(QDict *qdict, E= rror **errp) const char *machine_type =3D qdict_get_try_str(qdict, "type"); g_autoptr(GSList) machines =3D object_class_get_list(TYPE_MACHINE, fal= se); MachineClass *machine_class =3D NULL; + g_autofree char *machine_target =3D NULL; + g_autofree char *machine_name =3D NULL; =20 if (machine_type) { - machine_class =3D find_machine(machine_type, machines); + machine_type_parse_target(machine_type, &machine_name, &machine_ta= rget, false); + if (machine_target && strcmp(target_name(), machine_target) !=3D 0= ) { + error_setg(errp, "machine type \"%s\" is not available " + "for target %s", machine_type, target_name()); + error_append_hint(errp, + "Use -machine help to list supported " + "machines\n"); + return NULL; + } + } + + if (machine_name && *machine_name) { + machine_class =3D find_machine(machine_name, machines); if (!machine_class) { - error_setg(errp, "unsupported machine type: \"%s\"", machine_t= ype); + if (machine_target && target_none()) { + error_setg(errp, "machine type \"%s\" is not available " + "for target %s", machine_type, target_name()); + } else if (target_none()) { + error_setg(errp, + "machine type \"%s\" needs an arch: prefix", + machine_name); + error_append_hint(errp, + "Use -M arch:name (e.g. aarch64:virt) " + "or -machine help\n"); + return NULL; + } else { + error_setg(errp, "unsupported machine type: \"%s\"", + machine_type); + } } - qdict_del(qdict, "type"); - } else { + } else if (!target_none()) { machine_class =3D find_default_machine(machines); if (!machine_class) { error_setg(errp, "No machine specified, and there is no defaul= t"); } + } else { + machine_class =3D find_machine("none", machines); + if (!machine_class) { + error_setg(errp, "No machine specified"); + error_append_hint(errp, + "Use -M arch:name (e.g. aarch64:virt) or " + "-machine help\n"); + return NULL; + } + } + + if (machine_type) { + qdict_del(qdict, "type"); } =20 if (!machine_class) { @@ -2872,6 +3080,9 @@ void qemu_init(int argc, char **argv) const char *optarg; MachineClass *machine_class; bool userconfig =3D true; + int parse_opt_pass =3D 0; + /* Combined: NULL target selects NONE. Single-target stub ignores this= . */ + g_auto(MachineTypeOpt) machine_opt =3D { }; FILE *vmstate_dump_file =3D NULL; =20 qemu_add_opts(&qemu_drive_opts); @@ -2911,9 +3122,23 @@ void qemu_init(int argc, char **argv) error_init(argv[0]); qemu_init_exec_dir(argv[0]); =20 - /* first pass of option parsing */ + /* + * Pass 0 records -nouserconfig. Pass 1 parses -M and -readconfig + * into machine_opt. The loop ends only after pass 1. + */ optind =3D 1; - while (optind < argc) { + for (parse_opt_pass =3D 0; parse_opt_pass < 2;) { + if (optind >=3D argc) { + if (parse_opt_pass =3D=3D 0 && userconfig) { + g_autofree char *file =3D + get_relocated_path(CONFIG_QEMU_CONFDIR "/qemu.conf"); + + machine_type_config_file(file, true, &machine_opt); + } + parse_opt_pass +=3D 1; + optind =3D 1; + continue; + } if (argv[optind][0] !=3D '-') { /* disk image */ optind++; @@ -2923,7 +3148,27 @@ void qemu_init(int argc, char **argv) popt =3D lookup_opt(argc, argv, &optarg, &optind); switch (popt->index) { case QEMU_OPTION_nouserconfig: - userconfig =3D false; + if (parse_opt_pass =3D=3D 0) { + userconfig =3D false; + } + break; + case QEMU_OPTION_M: + case QEMU_OPTION_machine: + if (parse_opt_pass =3D=3D 1) { + bool help =3D false; + g_autoptr(QDict) dict =3D qdict_new(); + const char *type; + + keyval_parse_into(dict, optarg, "type", &help, + &error_fatal); + type =3D qdict_get_try_str(dict, "type"); + machine_type_opt_set(&machine_opt, type, help); + } + break; + case QEMU_OPTION_readconfig: + if (parse_opt_pass =3D=3D 1) { + machine_type_config_file(optarg, false, &machine_opt); + } break; } } @@ -2931,6 +3176,8 @@ void qemu_init(int argc, char **argv) =20 os_setup_limits(); =20 + target_info_select_by_name(machine_opt.target, &error_fatal); + module_init_info(qemu_modinfo); module_allow_arch(target_name()); =20 @@ -3435,10 +3682,6 @@ void qemu_init(int argc, char **argv) bool help; =20 keyval_parse_into(machine_opts_dict, optarg, "type", &= help, &error_fatal); - if (help) { - machine_help_func(machine_opts_dict); - exit(EXIT_SUCCESS); - } break; } case QEMU_OPTION_accel: @@ -3770,6 +4013,11 @@ void qemu_init(int argc, char **argv) qemu_process_early_options(); =20 qemu_process_help_options(); + if (machine_opt.help) { + machine_help_func(machine_opt.type, machine_opt.name, + machine_opt.target); + exit(EXIT_SUCCESS); + } qemu_maybe_daemonize(pid_file); =20 /* diff --git a/util/qemu-config.c b/util/qemu-config.c index d1fc49c507d..f0ef711450e 100644 --- a/util/qemu-config.c +++ b/util/qemu-config.c @@ -183,7 +183,8 @@ int qemu_config_parse(FILE *fp, QemuOptsList **lists, c= onst char *fname, Error * return qemu_config_foreach(fp, qemu_config_do_parse, lists, fname, err= p); } =20 -int qemu_read_config_file(const char *filename, QEMUConfigCB *cb, Error **= errp) +int qemu_read_config_file_cb(const char *filename, QEMUConfigCB *cb, + void *opaque, Error **errp) { FILE *f =3D fopen(filename, "r"); int ret; @@ -193,11 +194,16 @@ int qemu_read_config_file(const char *filename, QEMUC= onfigCB *cb, Error **errp) return -errno; } =20 - ret =3D qemu_config_foreach(f, cb, vm_config_groups, filename, errp); + ret =3D qemu_config_foreach(f, cb, opaque, filename, errp); fclose(f); return ret; } =20 +int qemu_read_config_file(const char *filename, QEMUConfigCB *cb, Error **= errp) +{ + return qemu_read_config_file_cb(filename, cb, vm_config_groups, errp); +} + static bool config_parse_qdict_section(QDict *options, QemuOptsList *opts, Error **errp) { --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406580; cv=none; d=zohomail.com; s=zohoarc; b=i58bW1NMi8jNxc5WXqXwn+4iTYkbDQMeb1HdL1TMDPQ5K/wOarJrROkTsyRn9VH18xgx2qR64ccL9uCeOG8uJDnO6MBgwJjZnI8/gkMvRozVcfZhrurGYLszpW0wgfsMUWBxW9aQFqJksUmOlgEMwnHry9wyJO2YNzecyxZbO6U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406580; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=HQgaQ3pRlQZWTe+kZSuEPjW/N+yjSW5+B1zpZJSKnLc=; b=hl9mKXLKaUpDLSAhnbhPShbwbhfpmBliWmwYiC5eN9D1yOB3xy3WniS0RzmDt9y8g2nEK2FIXg3k3eN8sTJ/pskTeFzVeaByOyMACjxZznkCFkAVGDcgjTpxrp+I9X+/XlZvfqtLzKemL32RFEWdKCChbbDyIPnPDFZM4wVkQrw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406580375616.1083228937343; Sat, 26 Sep 2026 00:09:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMVu-0001gk-1S; Sat, 26 Sep 2026 03:08:02 -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 1xAMS9-0005Zz-R4 for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:15 -0400 Received: from mail-dy2-x0f.google.com ([2607:f8b0:4864:36::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMS6-0000i1-O1 for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:08 -0400 Received: by mail-dy2-x0f.google.com with SMTP id 5a478bee46e88-33e630052ebso1866070eec.0 for ; Sat, 26 Sep 2026 00:04:06 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.04.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:04:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406245; x=1791011045; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=HQgaQ3pRlQZWTe+kZSuEPjW/N+yjSW5+B1zpZJSKnLc=; b=Knn3nu/wtMFOMIx/KjBn2hMaV1fwTFKy05NruLC5V9jSszCmPsBTU2xMTGtRcUlmJZ SGOfbH/t8akw29iq+sVUM2KaFfahbiSVo+jlAhLs8/nRmhe7kg71gfIhwpHj4WS280xq bXHs39HH5ItbPXae8JZdT/3lRqfEUfBnGl7uj/8+2gzF7TZEoxMfmJDoBZpOGtleuDw4 CTOBniown60WBjsaxWsqpyKoehGe20RaQNnGRLXINHiDGxVTc04NTyIdjZC79E0Qyb+0 5Zrf73WGAtzHOQj+kD2DjQsgRVgP1wDx5N4YDudHd9INkMLZTJCuDAZPbKaEy0l5sv/B K7/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406245; x=1791011045; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=HQgaQ3pRlQZWTe+kZSuEPjW/N+yjSW5+B1zpZJSKnLc=; b=Aafu7XSGTiNPDiZV4fJpJHblWmFMZaJW5h9puupszSTkl79jNQCX/E6+AKE7wlO4KY Qbp03Kb13DfHt2oRUkJmmNaZ/XRTYyi6HI3ISw0ZfgRz22ZSX3wuya07YvTt+9e1h1p3 n+LsxiC/lasrhFypsxpaoaeOgKQ5XL/wenKMdFHoaVVy5cQMC+vhsNesbbK6mtlQPmL5 svshh/JU0DZhR9fNeVbRI57Kvmn+fRSL8pHEyPZ+fnM39T8IPxOzsq+xyXpTdKbH1dT5 3vZJMNIo7cpUwAJlgwZg32zRIY19oU3hi/B/1+vBbA5XYNJrI9ILCZU8Js/tq5YzzkAS EdyQ== X-Gm-Message-State: AFuF++kwWOU9sHn6JM1D5rk6iJYAnE6dEc0pL6WMLPPe8nRcQ8YPjQ6/ /qS89Xw/CX0uAzC36HJusTQsjxaobRoojAxibsWyk2UOgfFN+4HhfOnCZs9Yu7B1 X-Gm-Gg: AYBFou132ok+K+TVpYLPenAdzNpuNKtqy05QqgMZwOQrtHYi49gu9FynOalNJAPTWFK JL61ZAlvIIqdW0LbdfivtMqXAfkpSu5u0FUnc9M3ObjAsWs5zFgL4LCyGKhffELKiEm3zNODg+u eIBGjOsvzz7fMwVi6LhdOETb2VGZ1lXRkNbOixED4SROkF6Fjn5ONr0mrjd8f2czrZbyWMuoHNO tATqyx+3vasTh20gr43dTIxGJClrvxwKD5DQg+z2Uqxl+8Kg4J75YA4pLBViIW55a5VJXey5hRi zLu7SgLPuxpZmZKyhQ5+Vp2E+EYhgVcqiPoP6SzJobcR/W6EnOB1xM3BwFxdGcekDtwPdJ7zIyY 8hJWuxkPabzSLz4xHGg0IlPE15wtKOhfiaYCQBD9IY2x/ZTGsbPwgXJ1pxkWvxCqdXTON52TOXi vm7bYwSd7AGWpamUWc6yvB/XFikTvt5PcQet4QMR4Xl/PAwywOpAFvbx74vir9aiF6NWuUuIvh/ QjaND+dDCgeqrSoiRAiq09UG9Bfq1A= X-Received: by 2002:a05:7301:7191:b0:33c:35ec:c2b4 with SMTP id 5a478bee46e88-34271a9026dmr2161927eec.24.1790406245422; Sat, 26 Sep 2026 00:04:05 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 46/55] qapi: add query-targets Date: Sat, 26 Sep 2026 15:00:45 +0800 Message-ID: <20260926070057.1234-47-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::f; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0f.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1790406581958158500 Content-Type: text/plain; charset="utf-8" query-targets lists each linked target, including none, with its arch, endianness, and the machines that target accepts. Signed-off-by: Yonggang Luo --- hw/core/machine-qmp-cmds.c | 30 ++++++++++++++++++++++++++++++ qapi/machine.json | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) diff --git a/hw/core/machine-qmp-cmds.c b/hw/core/machine-qmp-cmds.c index 9c08b17510a..c7b73efa31d 100644 --- a/hw/core/machine-qmp-cmds.c +++ b/hw/core/machine-qmp-cmds.c @@ -21,6 +21,7 @@ #include "qapi/qobject-input-visitor.h" #include "qapi/type-helpers.h" #include "qemu/uuid.h" +#include "qemu/target-info-def.h" #include "qemu/target-info.h" #include "qemu/target-info-qapi.h" #include "qom/qom-qobject.h" @@ -173,6 +174,35 @@ QemuTargetInfo *qmp_query_target(Error **errp) return info; } =20 +TargetMachinesList *qmp_query_targets(Error **errp) +{ + TargetMachinesList *head =3D NULL; + TargetMachinesList **tail =3D &head; + GSList *machines, *el; + TargetInfoNode *node; + + machines =3D object_class_get_list(TYPE_MACHINE, false); + QLIST_FOREACH(node, target_info_list(), next) { + const TargetInfo *ti =3D node->info; + TargetMachines *row =3D g_new0(TargetMachines, 1); + strList **names =3D &row->machines; + + row->arch =3D ti->target_arch; + row->endianness =3D ti->endianness; + for (el =3D machines; el; el =3D el->next) { + MachineClass *mc =3D el->data; + + if (!object_class_get_is_available(OBJECT_CLASS(mc))(ti)) { + continue; + } + QAPI_LIST_APPEND(names, g_strdup(mc->name)); + } + QAPI_LIST_APPEND(tail, row); + } + g_slist_free(machines); + return head; +} + HotpluggableCPUList *qmp_query_hotpluggable_cpus(Error **errp) { MachineState *ms =3D MACHINE(qdev_get_machine()); diff --git a/qapi/machine.json b/qapi/machine.json index 6aaa2af709a..d8cdea6203e 100644 --- a/qapi/machine.json +++ b/qapi/machine.json @@ -307,6 +307,41 @@ ## { 'command': 'query-target', 'returns': 'QemuTargetInfo' } =20 +## +# @TargetMachines: +# +# One registered system target and the machines that can run on it. +# +# @arch: the target architecture +# +# @endianness: the target endianness +# +# @machines: machine type names, not aliases +# +# Since: 11.2 +## +{ 'struct': 'TargetMachines', + 'data': { 'arch': 'SysEmuTarget', + 'endianness': 'EndianMode', + 'machines': ['str'] } } + +## +# @query-targets: +# +# Return each target linked into this QEMU binary and the machines +# whose availability check accepts that target. +# +# Since: 11.2 +# +# .. qmp-example:: +# +# -> { "execute": "query-targets" } +# <- { "return": [ { "arch": "aarch64", "endianness": "little", +# "machines": [ "virt" ] } ] } +## +{ 'command': 'query-targets', + 'returns': ['TargetMachines'] } + ## # @UuidInfo: # --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406768; cv=none; d=zohomail.com; s=zohoarc; b=M+j0fD7XVuVKTEVu1PzCaPH80ELM0ESiv/UeBnzFWDKrt3IJ4UXpKcU9e5S5oXgj2ZYlaGOyucGOrK9TacRAOloaPM9yzWl/ud/3Y4arfas6GhT3hM/ktaximTCKGNbt/Ye6DY6yLyfhD+WuDZhOIQL6oSNUnAFi7Lhw1owQ/s0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406768; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=RNlqCeZxxjHAxzDk9z7qImwINCBhWsreM3aP9qjpGBI=; b=J+toDLxypZeWgi7TgVEm8FprF6aD2Rx4zvoAAHopRrKiaRJs87QWzaStrbHMDv6REJwj5WEdsSi0wGMNYEQsZGbMQh+nI70B+Y8AacUflBOL6vHNTTVs975MagYKSKKj6f6wDoVNKe6SNyHcZtvDpoxS76Xjgy2ytP2b3ffMVGk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406768738247.3627828924599; Sat, 26 Sep 2026 00:12:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMW4-0002Y9-Eq; Sat, 26 Sep 2026 03:08:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAMSE-0005db-KM for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:19 -0400 Received: from mail-dy2-x10.google.com ([2607:f8b0:4864:36::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMSB-0000ia-IU for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:13 -0400 Received: by mail-dy2-x10.google.com with SMTP id 5a478bee46e88-33be7dfcfc1so2110431eec.1 for ; Sat, 26 Sep 2026 00:04:10 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.04.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:04:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406249; x=1791011049; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=RNlqCeZxxjHAxzDk9z7qImwINCBhWsreM3aP9qjpGBI=; b=c0on/Pv0GVJ4/31GKofUVlJ4V0qM1Bms/ELoH87hLngFz0ZuvPO6qhoucDO2siqRCg GDqephXtY6fqfvrczM5wMwigUQ4zRX9hZ5yN7YOy7F8WTUOvSBsLlw3ZxiZZp5OxtkCO 8syg2x0Z3UXELkxmu+/jDqYaavFPP6kqW6MLd9Zez4aN/1n72eM4battLcUj8WRIUXpB Oi9eqUZtwRvnw4IAhnyRyMMnmDGyO2Y+JXGzxoMz0MnGBswyguCf/JRRCJwCT81eHUzJ VKJXu62WcIo6hOrC+47A1dDJWk3W/IyjFn5x7Lor69nj0jt8TNiFUOx/n7aPl/mjJm9q AHFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406249; x=1791011049; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=RNlqCeZxxjHAxzDk9z7qImwINCBhWsreM3aP9qjpGBI=; b=nrc6kj0Y91IHmu7ctv3afQKK5lJ0WahVxiFhJawdlSUSdgsXkx2SlaQy13x06zaQoI dbkIPlrhAfqac4iGcyZs4Ak03D6y0pcOGocfZPJcc6a2za0xD1kxvZ9EdW8aAr1Jl0B6 JiF0RWZJq8P45MNcnc4jDG7DHbon0uVhOkV5M4sxX8xFXxNtTuTBtMgcn9qt0C++DIBG 83tatnJ4RD/fOjdiWT6qina1s7feTYQWnTV2vHj/6sqpz5LHwIfmmECdPK+VpblF1xOB qGwpO9qA7DQLcFaRL55yvD4R1jxZV1Ly2JA22wbAu+qCYpz6JH4GV6bHcaKa2I0J/yYi kIEw== X-Gm-Message-State: AFuF++kokvn4nNYlH6wtNdfEiVA1Q2ZNr1p3x8V3j5uGVRq5oSBYhire j+dUbY94Zy0C3uR3LXGdfHGh3J61BqnfvBYZpJxW3xXevsPMiQyye7EiCnNsOspV X-Gm-Gg: AYBFou22MqhV8mHfmBJPawX+z81n02UDQKyr6BbELF8ZafTg+o2bUuwn7cJdUhi2zsU GCaQh1fyMrL3QVf0wSbyuhaiL9uW85pd5kvUQB435jTrU5yJIqf+6FwecxgcS6Is2+gY+ghrAsR ExCpdc2NAKlhQm7K8PmfeYDR1imZFROwNDnQm8IN0NuxohReSGnLAU4YleF8ZCTdOgG1T6cfQ11 RG4Qx+7XB+uVGlzGKyOA/n7IZasW09YSzKbqAi6abHsnfaDqkvT10qIrPetoSQ6LNBWDKPmBoFM HaEjWdNHwn+RVV1+PN00alqfTCr5Q72mOL8FVXxowELJyrqETVXHibWKF8xxFB/bzHkLlMe40Ps QfTvpBk8MjBLunLUAlA6ukpFWhtxX8Y4PXSZ8OBQTUPN2chHLQfeKpZ7U4Q64s5sHMLIyG3++nn a8sJewCgoVmYHz6l/4MFGPWXXO+GdOvIBcnVdb3tE6Q3VlY2EBqIgwqJsqOTikc4tJn/0A6w/1A Sk49vc4PIPt9Rb0mc5cQE6mKEUuuOI= X-Received: by 2002:a05:7300:a987:b0:333:fe81:85dd with SMTP id 5a478bee46e88-3426fbbe744mr3025019eec.3.1790406249289; Sat, 26 Sep 2026 00:04:09 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 47/55] target-info: add target_is_microblaze Date: Sat, 26 Sep 2026 15:00:46 +0800 Message-ID: <20260926070057.1234-48-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::10; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x10.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406770820158500 Content-Type: text/plain; charset="utf-8" Add target_is_microblaze() and target_microblaze(). The first reports SYS_EMU_TARGET_MICROBLAZE. The second checks the current TargetInfo. Signed-off-by: Yonggang Luo --- include/qemu/target-info.h | 15 +++++++++++++++ target-info.c | 10 ++++++++++ 2 files changed, 25 insertions(+) diff --git a/include/qemu/target-info.h b/include/qemu/target-info.h index 812e4b04a7b..17fafa0888e 100644 --- a/include/qemu/target-info.h +++ b/include/qemu/target-info.h @@ -210,6 +210,21 @@ bool target_is_s390x(const TargetInfo *ti); */ bool target_s390x(void); =20 +/** + * target_is_microblaze: + * @ti: TargetInfo to inspect + * + * Returns whether @ti is Microblaze. + */ +bool target_is_microblaze(const TargetInfo *ti); + +/** + * target_microblaze: + * + * Returns whether the target architecture is Microblaze. + */ +bool target_microblaze(void); + /** * target_is_base_riscv: * @ti: TargetInfo to inspect diff --git a/target-info.c b/target-info.c index b25e2ada438..0716e2021b8 100644 --- a/target-info.c +++ b/target-info.c @@ -204,6 +204,16 @@ bool target_s390x(void) return target_is_s390x(target_info()); } =20 +bool target_is_microblaze(const TargetInfo *ti) +{ + return ti->target_arch =3D=3D SYS_EMU_TARGET_MICROBLAZE; +} + +bool target_microblaze(void) +{ + return target_is_microblaze(target_info()); +} + bool target_is_base_riscv(const TargetInfo *ti) { switch (ti->target_arch) { --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406554; cv=none; d=zohomail.com; s=zohoarc; b=GapAisiFwHQtH4LzsCEdRC8HyMFu4/PnG2kkT8mvDj2gj1rR9C32WBdQG0GrLb0TGmiIJizIaw+048FDVQjLJSM5/0QGz3a4aLOphpZsZKioCH3SbSaZUrioMa7As7TOgEdF98WKlYz5LsXm8Qy65oeTn/1NaOOgWiGRvkAvvuc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406554; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+A6CkIwPfSE+JT/uIHV8BW74dusgH/Hp+auhmSJ5o/0=; b=DsEVdBKyIf22jbOZG2LrIqzCLtAufuPuGXwwo3cBPMyrmIXvPMfzdr/B/omyO0xTkB1MUwiIBx99KKMVNAOwRooPQc+EhTkGBlbdp25hdz7iqS7XoJxdRDSleG8I+vKIHRt6fXToqUESfWBIoK1toisofFU4Ta6G7e1jK2P4Xdk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406554673957.9152791903672; Sat, 26 Sep 2026 00:09:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMVF-0000Hy-2h; Sat, 26 Sep 2026 03:07:21 -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 1xAMSM-0005fE-Fj for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:25 -0400 Received: from mail-dy2-x0f.google.com ([2607:f8b0:4864:36::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMSF-0000im-4q for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:17 -0400 Received: by mail-dy2-x0f.google.com with SMTP id 5a478bee46e88-33e46a15703so1348988eec.0 for ; Sat, 26 Sep 2026 00:04:14 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.04.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:04:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406253; x=1791011053; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=+A6CkIwPfSE+JT/uIHV8BW74dusgH/Hp+auhmSJ5o/0=; b=Z2ysJGauR8mBKOClVRny1YqcbLp7eeCvLOzWLZVXvW9eL1GONr0A0As5u+B68Crgei Y4clUtq9JoN4WkfTCaleoyUSJJWNRl+wcVi5qcPEkCZIdrz/1PkxzeQfOCwlOmm2WJgQ sPX70FccT4C95keJePeylC/uYNpn+MMiQUsTU02oD/8aLQZ5a9xU7brwm2JNBqMjpphK XhaQkj0NtXFgbgaKIaCnbUHtX6OwApqWpxb51sBR6iWxENK7aBCxdkhuxR6W9QLqeTMI ZLFG6wSB5DojWtDbuZDwVOEmhT8KjrehBzGbyp6pC1d+jdmhgG5kgGOAsiE8JOBhQ6of 7HWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406253; x=1791011053; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=+A6CkIwPfSE+JT/uIHV8BW74dusgH/Hp+auhmSJ5o/0=; b=mGGN3+qSQlwGw8P+fbpqmKE6kapuYxJGZt4OIyjUDMUFW4TReXtLKmz6DW0czJXzYg 8lubX1CUkaej1zWKhGrroWNdK5zkMzI5piOyoyLWCfdrs4Wpeok/t4GYfgOWssWMnkyy mQHG2YaX1woDliqXv1GLKGeyRztwyQhvFMFYN/wiAGrZs6+O8o6bgVb2n7reB36FZAct 6WYnIkg8nBKkWtJJ/R7tLfwyH2i8OkTsCNU98oduRbA4baTMWFor9nITM5JjSmwtUjpv EGyGm2UGmKeVKwDNLgfxO4Uu80MOkHXFN9mSYI+Dx0O8vwTEMtfeZIfJWW5rt03a8qog 5BqQ== X-Gm-Message-State: AFuF++nkxxMPW7qsDklayHXvnuILE7/KwcTMEC1W8J93/ucAIpNtHOkX O4ke2ISBv07g9p5wvQ7ctw0Z3RTps5v/Q4qhoX9IWLncXhke0lhZGIwveGLD7NQg X-Gm-Gg: AYBFou3di0VKRb5/xvXjIHUgkbO3iWc8mVM8by18uEkkABIpue66WPoyFw7MNydOIkg wuicmsGNyeqfEScyUAqh/nqAauhFUH/6zxyGlHewA0XaByKTF1rZ1PLFC5otY44VkSxVB19XfpQ Wh9S/rOYaA9tKfPSe7pIbQJdfjaNF9r2rxYk21kwePYx/YUTy3vr9vGSCLX1ghlj4SmtB9QOxo8 KGW4MhiAO45d4AtcNfJ5ROPy78qMjCKd7IRt7AtJxeh6ypt9S6CFmWWsW0mb7O1vjiH3VXdnBZV HcpnfqlUY1nswcveX6bXJ6mgH6kh62a6PlHKzhNYqToQsiJRgJ/GQZygLXe4EGKjUJAUXeH9Vk/ QUTUT4aijwZfBB+ePYHmQfTGC2Hvu/tJYGZxdGJpxDOKGFRyosh5sQabfVL4JgacXFDXZgfLSj7 Dl3Sa5dRkI5Q+NngEz4k1FcFXNbIMISgCJfalIlWw/4cjP6NRk3C4i0dYDz6YvDeVJ3czWWFKGw I7CrHUsawJWTPhY/QUk2D24DNBb9lPvHPKd/U5CXQ== X-Received: by 2002:a05:7300:a987:b0:33c:1f00:358 with SMTP id 5a478bee46e88-34270ac690bmr2902731eec.17.1790406252918; Sat, 26 Sep 2026 00:04:12 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 48/55] hw/microblaze: set petalogix-s3adsp1800 TypeInfo.is_available Date: Sat, 26 Sep 2026 15:00:47 +0800 Message-ID: <20260926070057.1234-49-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::f; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0f.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1790406555673158500 Content-Type: text/plain; charset="utf-8" Set TypeInfo.is_available on the petalogix-s3adsp1800 leaf to target_is_microblaze. Signed-off-by: Yonggang Luo --- hw/microblaze/petalogix_s3adsp1800_mmu.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/microblaze/petalogix_s3adsp1800_mmu.c b/hw/microblaze/petal= ogix_s3adsp1800_mmu.c index c5f64319009..a1f41b10348 100644 --- a/hw/microblaze/petalogix_s3adsp1800_mmu.c +++ b/hw/microblaze/petalogix_s3adsp1800_mmu.c @@ -189,6 +189,7 @@ static const TypeInfo petalogix_s3adsp1800_machine_type= s[] =3D { .name =3D TYPE_PETALOGIX_S3ADSP1800_MACHINE, .parent =3D TYPE_MACHINE, .class_init =3D petalogix_s3adsp1800_machine_class_init, + .is_available =3D target_is_microblaze, .instance_size =3D sizeof(S3Adsp1800MachineState), }, }; --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406544; cv=none; d=zohomail.com; s=zohoarc; b=hoKjpop0zsiX1Sze70dvoQw4VgROOZ2HEEmSo+XZyYhErdUzqoijN1H8BwFHxlPKQ4QMe2NluDsBlCaClFh21ylsE+p3VWtNhAgX6XiJswKU6Qa3XM+s5WEEnKoyTjzAiqujeSlcAmOnpaDYHObR1qKiUgd0hE/L+H9LmDcmyOA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406544; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0cvIXglGfRA1jXahprL6v2Lr8S2XJ1LC0LkB99mN9UQ=; b=cLnvlyCUYBhlgunxKincPpadzNO1SLhpqbAlv9yHdHSL/eJfQWpvV+6iUBlCjv1wS3ZltWzWHDB7d2//Dfh8ORoC9hNQJHBKGuL6ZaweWfSbLPYot9sdauwMrxXMMEWxogwKWTG6RZcTjlXZt9JcvvGU8dEbIlkrSdHCWWLo++g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17904065442494.239441317857427; Sat, 26 Sep 2026 00:09:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMVW-0000mG-6e; Sat, 26 Sep 2026 03:07:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAMSO-0005hQ-F4 for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:25 -0400 Received: from mail-dy2-x0e.google.com ([2607:f8b0:4864:36::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMSK-0000jR-AY for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:23 -0400 Received: by mail-dy2-x0e.google.com with SMTP id 5a478bee46e88-34182b58d00so864397eec.2 for ; Sat, 26 Sep 2026 00:04:17 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.04.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:04:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406257; x=1791011057; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=0cvIXglGfRA1jXahprL6v2Lr8S2XJ1LC0LkB99mN9UQ=; b=g8HP5f8Y3E3rv9A4nPR1P6S3rkakcXp0sTY0h2Y3LyOZKlGiBw9BFBO2fe3/prTLgY xCSZtBRbaGi071H+Sb1VdTaa6f8737jqdtjBtyqkHrRbNifszl+OWBKUI267XsBt4Qen EA9wPyk6ut+VFfTrB9qEcxkKtXOnz8ggrqCsoqW/R/JeWoExHFEcvp2ZCglgaRvqDbmO xySBTCxuae6OiY4hPGuRvRdj5Ta/gw9UzamzGEjReKsaMNZzscKbCY+pUCttSx0KNX7i iJg39S71cn6CMy5X0egTOGpETI4mElTqnlXz7reNmefWVJP4+EQ8eEI+QsF8B509Nfup XULw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406257; x=1791011057; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=0cvIXglGfRA1jXahprL6v2Lr8S2XJ1LC0LkB99mN9UQ=; b=e2EgtzAPScW+894KG5u5dgYF0FYrEEEz0ayBg3xNniz+3mqF53O0mmE7Xc+b19pVTw /IYto5F+cGtbQJSggIxYZCfElqagI31efIC4++4IV4pXCPTWGjKwj8ImhE1i3l5czqEO 1et9/mTPjVg8DANIXo9s9wunihzFXNayA5b475LU3CJlvhiB/iQJVruMdP5KQFx1kvyc wdEn56PVQ25/BalXUw3j6v9MkxDUI8Arm0U3kWXdGXdFPvyYJfFRofc22A9SNwjQx8lZ xbRYvKrbUH/aDRUAVBkRlWl/4YW6b/dKMlbkaTy9q8sRlNG7Zzm2esFbBx4UrXS9Ta41 cMng== X-Gm-Message-State: AFuF++kRMRAd1kIRvBupNjERU15rMw0JYyPw2HCzwLPL1VglNTxlRSMT Y++A1pTlb/4KwhOGMgVxdQWNNVmHpqF6Zs/OOPavKlUgi7QMlyoVQQQ1yrP7jzXT X-Gm-Gg: AYBFou1PXT0N8dTC1WpYvJ1XmrLWJPFNHjLG8WUoCQH8WbJ8UuYFYwLPOncvw2UNvOT SALH1pkBTd3T9wEBYYkhyRdyo2qEDLABK9ge8GnE4hLKAC3H+TaBoHV33ZUOtx8c3oH7Zq2VSsm IgTsUo8vBBG7cOJrORs98egil49sVKrxtIjlFl5Oh+NXzsQJcTxbpeQNyU33cYPv/m0HxhKZHmV dwXFo+k0nh3Em0LmriRBO8MWk3CXvaOmRs3xCVG/4lpM10GC7Tgd6LdtTWdEgn9RqNqZkartw0B nnJj9n3yG9Y3/dwUcsWrecGrtxupXwrQDzukjesUfBnTc+7rvzcRfKPw9X5W2XbHXlR1unIZCPI 4vvY0TcrpIV+0/ABy1YkFRhA1N3LkKkNuXWZpPl476IthgibG4Wn7HYhe5NbO6zQe4ouxStT/FV xhn6ir+B2MiS88zRl17Va2YELE0Kqem0fV478xVLkcV8WnDwoA03hdceiJDGSLG7TqBjsH0lXSs vnhC/5wPC3YwgJDAbpwRTvWs+61sHc= X-Received: by 2002:a05:7300:8a24:b0:33c:c0e:76ec with SMTP id 5a478bee46e88-342742360a7mr2334739eec.35.1790406256679; Sat, 26 Sep 2026 00:04:16 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 49/55] hw/microblaze: expand petalogix-ml605 and xlnx-zynqmp-pmu to TypeInfo Date: Sat, 26 Sep 2026 15:00:48 +0800 Message-ID: <20260926070057.1234-50-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::e; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0e.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406545622158500 Content-Type: text/plain; charset="utf-8" Replace DEFINE_MACHINE with TypeInfo. Rename *_machine_init to *_machine_class_init and set is_available to target_is_microblaze. Signed-off-by: Yonggang Luo --- hw/microblaze/petalogix_ml605_mmu.c | 19 +++++++++++++++++-- hw/microblaze/xlnx-zynqmp-pmu.c | 19 +++++++++++++++++-- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/hw/microblaze/petalogix_ml605_mmu.c b/hw/microblaze/petalogix_= ml605_mmu.c index 8f9f54ff1e2..508a8005a63 100644 --- a/hw/microblaze/petalogix_ml605_mmu.c +++ b/hw/microblaze/petalogix_ml605_mmu.c @@ -26,6 +26,7 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/target-info.h" #include "qemu/units.h" #include "qapi/error.h" #include "target/microblaze/cpu.h" @@ -214,10 +215,24 @@ petalogix_ml605_init(MachineState *machine) =20 } =20 -static void petalogix_ml605_machine_init(MachineClass *mc) +static void petalogix_ml605_machine_class_init(ObjectClass *oc, const void= *data) { + MachineClass *mc =3D MACHINE_CLASS(oc); + mc->desc =3D "PetaLogix linux refdesign for xilinx ml605 (little endia= n)"; mc->init =3D petalogix_ml605_init; } =20 -DEFINE_MACHINE("petalogix-ml605", petalogix_ml605_machine_init) +static const TypeInfo petalogix_ml605_machine_class_init_typeinfo =3D { + .name =3D MACHINE_TYPE_NAME("petalogix-ml605"), + .parent =3D TYPE_MACHINE, + .class_init =3D petalogix_ml605_machine_class_init, + .is_available =3D target_is_microblaze, +}; + +static void petalogix_ml605_machine_class_init_register_types(void) +{ + type_register_static(&petalogix_ml605_machine_class_init_typeinfo); +} + +type_init(petalogix_ml605_machine_class_init_register_types) diff --git a/hw/microblaze/xlnx-zynqmp-pmu.c b/hw/microblaze/xlnx-zynqmp-pm= u.c index 00154236bf8..79b70eb5ad7 100644 --- a/hw/microblaze/xlnx-zynqmp-pmu.c +++ b/hw/microblaze/xlnx-zynqmp-pmu.c @@ -16,6 +16,7 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/target-info.h" #include "qapi/error.h" #include "system/address-spaces.h" #include "hw/core/boards.h" @@ -179,10 +180,24 @@ static void xlnx_zynqmp_pmu_init(MachineState *machin= e) NULL); } =20 -static void xlnx_zynqmp_pmu_machine_init(MachineClass *mc) +static void xlnx_zynqmp_pmu_machine_class_init(ObjectClass *oc, const void= *data) { + MachineClass *mc =3D MACHINE_CLASS(oc); + mc->desc =3D "Xilinx ZynqMP PMU machine (little endian)"; mc->init =3D xlnx_zynqmp_pmu_init; } =20 -DEFINE_MACHINE("xlnx-zynqmp-pmu", xlnx_zynqmp_pmu_machine_init) +static const TypeInfo xlnx_zynqmp_pmu_machine_class_init_typeinfo =3D { + .name =3D MACHINE_TYPE_NAME("xlnx-zynqmp-pmu"), + .parent =3D TYPE_MACHINE, + .class_init =3D xlnx_zynqmp_pmu_machine_class_init, + .is_available =3D target_is_microblaze, +}; + +static void xlnx_zynqmp_pmu_machine_class_init_register_types(void) +{ + type_register_static(&xlnx_zynqmp_pmu_machine_class_init_typeinfo); +} + +type_init(xlnx_zynqmp_pmu_machine_class_init_register_types) --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406555; cv=none; d=zohomail.com; s=zohoarc; b=IZAnld1AW87hilCQTy284NV7TuNNEyUI1hUW8KzeRtRzFybpS/LKD81fsPf71+vPzbUN0Z/Yvy0cgEo1vPYRMktPUD4jbNCWMSgFh0F305Uemvop7gg+ljrgL595+t5izsZuY+Cor4bq/daUrtoUhJGAxg4jRpPw4YVHThjMdic= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406555; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0u6v0Fz0eEopOq93fm9oJ1Po0gdhW3aHNUxjTbXaKJQ=; b=C0sFh1xidBJww8/Mb46o9dPOwn+p19NFuvhmwKlCKX2Wck1gwFDIU3ZAalta3twg0K9Hr/FR/KJDv7n72zkHxdjMHFPwHSogVXwu6A6MeMJP97iWd/hN148QpIopi/6+FhETKNscMhs2gT870Yq9F4I9cebAmjRAQh6+vCWGPG0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406555803560.0476902982953; Sat, 26 Sep 2026 00:09:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMWN-00034i-6B; Sat, 26 Sep 2026 03:08:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAMSR-0005ll-4B for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:29 -0400 Received: from mail-dy2-x0e.google.com ([2607:f8b0:4864:36::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMSM-0000jY-By for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:26 -0400 Received: by mail-dy2-x0e.google.com with SMTP id 5a478bee46e88-341f6327b95so909791eec.0 for ; Sat, 26 Sep 2026 00:04:21 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.04.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:04:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406261; x=1791011061; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=0u6v0Fz0eEopOq93fm9oJ1Po0gdhW3aHNUxjTbXaKJQ=; b=p0ZTnf2cvDAEw4MFxhl2kUxA0h3qSIoSONS/0GgS7DwfFolLBDhfXgRgaDvoem0mqg 9ncWhTsQ0tv3Ny6tT8LPcSbYAUpe5p+mTRCc28Xb7h3UK5JXJ6nbCyR+cSeD0XxRxYGZ 2P86h8yEtT6TfGFC+Nagl2xCmpfTpOlCJw8+/F/gCBdujIrDDiAPHXGvnWZknkz41aLS ouMtfrBCuxKZ0+y84WpBJPbIPWUCwzfHAN+hKIR922rvg65wsmcsZlMYZzL0rR4GBuec eNiY0PmWuLAcTSfLbrgdhfyrjurdo2tXJDlQHZP0S4Lq1lUqgqhUpe2QL/UIeb6S6x6J IixA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406261; x=1791011061; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=0u6v0Fz0eEopOq93fm9oJ1Po0gdhW3aHNUxjTbXaKJQ=; b=vxoYqT2ivpJjazQjwPA6Vz6f3YVzDPoTmj1Huv6UaA+PthqEJrkOioNhyVSki1mYTz NJhdX7i54xiZBD6LT+re0qGacpjHmssjU0ORKbnb7Dd5XivM7lcfhcTbi+Y3TV3Z/g2H 0ZiGHdGEHdXKqC7CcBWGBIASXT6o5QpK9GNA2AS2auM/NIMdSFJGGWWJLVTSVdTYJY/m XIJdEfT8JC1iEvY/ZTHqU0vl7c3wjrGh/Mkpc8AjaJJP0sfVVkUUyotDx04jenY2btVc q1f+B008NL59d07Av0CZulHhu4CSNCTX/Gtpb8GCY6jTiKR2GD4ExxE1bqIGXCQK+Q6a yAWg== X-Gm-Message-State: AFuF++lwfKpM013+m8uPaUSdGvq51hm2PRKCPEh5uMGkwFY05RPHfH0m IhPt8UN4SMiViPHq4DtZY2pGDoT24U7qiSoviqOn7nAMcSPibKOLbn5T5WJdL/+P X-Gm-Gg: AYBFou2dkwuhXlJJJSTy0TLpekqUkAvDaimunbkgZYM0XAw9QD5VEL6jcWiaOJmoXUW 9PLY1iCrbMHcXbV9VtHtqx8TsKEwODrDK2Kly4pO+pdpnw8EQaweMo6DRuNh+UTLX4+FX+ekaW8 7frAHhKCcuNCfNQeBl1htY2/JibU6IPOANhYGhhrOzdOuXaEPpJ78MVUvONVt1GODdYiP5qOcYI znUO8K8hobdR4kFsGwWrvzFNIhANzBsHXTeRAKtBtW977LxHFPBPZgxbNhKhqAVfOfNerQ8nSRQ YCVzHMnZIKv4vhnsn0giw+7/6NcU05uOOvvOrhwpy3tQeEsVeAWnO1w/eJi/r55IPMLd0ducnKX DKdTSwJ4YWfy3CvknhMMWFZj62adYzH1iYiHR57fg1m5UfudVy3HKgKNM8/M1lDqSmLS9PqYidh efTzWZer8x5In/2S1pF9y7UQWTetyx4GmM72q6XqqqDl4dErf/1xGO+N9gYcbAiokK3FA8bimxS /+rxkXKWPCSQhOfqAbMcUBy9uiIaYA= X-Received: by 2002:a05:7301:310:b0:341:bd7e:da35 with SMTP id 5a478bee46e88-342702bf0e8mr2173019eec.11.1790406260542; Sat, 26 Sep 2026 00:04:20 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 50/55] hw/arm: expand leftover 32-bit DEFINE_MACHINE to TypeInfo Date: Sat, 26 Sep 2026 15:00:49 +0800 Message-ID: <20260926070057.1234-51-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::e; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0e.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406557798158500 Content-Type: text/plain; charset="utf-8" Replace remaining 32-bit DEFINE_MACHINE and DEFINE_MACHINE_EXTENDED call sites with TypeInfo. Rename *_machine_init to *_machine_class_init and set is_available to target_is_base_arm. Signed-off-by: Yonggang Luo --- hw/arm/bananapi_m2u.c | 22 +++++++++++++++++++--- hw/arm/cubieboard.c | 23 +++++++++++++++++++---- hw/arm/digic_boards.c | 19 +++++++++++++++++-- hw/arm/imx25_pdk.c | 19 +++++++++++++++++-- hw/arm/integratorcp.c | 23 +++++++++++++++++++---- hw/arm/kzm.c | 19 +++++++++++++++++-- hw/arm/max78000fthr.c | 19 +++++++++++++++++-- hw/arm/mcimx6ul-evk.c | 19 +++++++++++++++++-- hw/arm/mcimx7d-sabre.c | 23 +++++++++++++++++++---- hw/arm/msf2-som.c | 19 +++++++++++++++++-- hw/arm/netduino2.c | 19 +++++++++++++++++-- hw/arm/netduinoplus2.c | 19 +++++++++++++++++-- hw/arm/olimex-stm32-h405.c | 19 +++++++++++++++++-- hw/arm/orangepi.c | 23 +++++++++++++++++++---- hw/arm/stm32vldiscovery.c | 19 +++++++++++++++++-- 15 files changed, 265 insertions(+), 39 deletions(-) diff --git a/hw/arm/bananapi_m2u.c b/hw/arm/bananapi_m2u.c index ccf60ba2955..a1d9105ce0d 100644 --- a/hw/arm/bananapi_m2u.c +++ b/hw/arm/bananapi_m2u.c @@ -18,6 +18,7 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/target-info.h" #include "qemu/units.h" #include "system/address-spaces.h" #include "qapi/error.h" @@ -133,8 +134,10 @@ static void bpim2u_init(MachineState *machine) arm_load_kernel(&r40->cpus[0], machine, &bpms->bootinfo); } =20 -static void bpim2u_machine_init(MachineClass *mc) +static void bpim2u_machine_class_init(ObjectClass *oc, const void *data) { + MachineClass *mc =3D MACHINE_CLASS(oc); + static const char * const valid_cpu_types[] =3D { ARM_CPU_TYPE_NAME("cortex-a7"), NULL @@ -152,5 +155,18 @@ static void bpim2u_machine_init(MachineClass *mc) mc->auto_create_sdcard =3D true; } =20 -DEFINE_MACHINE_EXTENDED("bpim2u", MACHINE, Bpim2uMachineState, - bpim2u_machine_init, false, false, NULL) +static const TypeInfo bpim2u_machine_class_init_typeinfo =3D { + .name =3D TYPE_BPIM2U_MACHINE, + .parent =3D TYPE_MACHINE, + .class_init =3D bpim2u_machine_class_init, + .instance_size =3D sizeof(Bpim2uMachineState), + .abstract =3D false, + .is_available =3D target_is_base_arm, +}; + +static void bpim2u_machine_class_init_register_types(void) +{ + type_register_static(&bpim2u_machine_class_init_typeinfo); +} + +type_init(bpim2u_machine_class_init_register_types) diff --git a/hw/arm/cubieboard.c b/hw/arm/cubieboard.c index e4fef9cd76b..6e14d0e3351 100644 --- a/hw/arm/cubieboard.c +++ b/hw/arm/cubieboard.c @@ -16,6 +16,7 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/target-info.h" #include "qapi/error.h" #include "qemu/error-report.h" #include "hw/core/boards.h" @@ -113,8 +114,10 @@ static void cubieboard_init(MachineState *machine) arm_load_kernel(&a10->cpu, machine, &cbs->bootinfo); } =20 -static void cubieboard_machine_init(MachineClass *mc) +static void cubieboard_machine_class_init(ObjectClass *oc, const void *dat= a) { + MachineClass *mc =3D MACHINE_CLASS(oc); + static const char * const valid_cpu_types[] =3D { ARM_CPU_TYPE_NAME("cortex-a8"), NULL @@ -132,6 +135,18 @@ static void cubieboard_machine_init(MachineClass *mc) mc->auto_create_sdcard =3D true; } =20 -DEFINE_MACHINE_EXTENDED("cubieboard", MACHINE, CubieboardMachineState, - cubieboard_machine_init, false, false, - NULL) +static const TypeInfo cubieboard_machine_class_init_typeinfo =3D { + .name =3D TYPE_CUBIEBOARD_MACHINE, + .parent =3D TYPE_MACHINE, + .class_init =3D cubieboard_machine_class_init, + .instance_size =3D sizeof(CubieboardMachineState), + .abstract =3D false, + .is_available =3D target_is_base_arm, +}; + +static void cubieboard_machine_class_init_register_types(void) +{ + type_register_static(&cubieboard_machine_class_init_typeinfo); +} + +type_init(cubieboard_machine_class_init_register_types) diff --git a/hw/arm/digic_boards.c b/hw/arm/digic_boards.c index 90c19106ad0..e92d3177039 100644 --- a/hw/arm/digic_boards.c +++ b/hw/arm/digic_boards.c @@ -24,6 +24,7 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/target-info.h" #include "qapi/error.h" #include "qemu/datadir.h" #include "hw/core/boards.h" @@ -136,8 +137,10 @@ static void canon_a1100_init(MachineState *machine) digic4_board_init(machine, &digic4_board_canon_a1100); } =20 -static void canon_a1100_machine_init(MachineClass *mc) +static void canon_a1100_machine_class_init(ObjectClass *oc, const void *da= ta) { + MachineClass *mc =3D MACHINE_CLASS(oc); + mc->desc =3D "Canon PowerShot A1100 IS (ARM946)"; mc->init =3D &canon_a1100_init; mc->ignore_memory_transaction_failures =3D true; @@ -145,4 +148,16 @@ static void canon_a1100_machine_init(MachineClass *mc) mc->default_ram_id =3D "ram"; } =20 -DEFINE_MACHINE("canon-a1100", canon_a1100_machine_init) +static const TypeInfo canon_a1100_machine_class_init_typeinfo =3D { + .name =3D MACHINE_TYPE_NAME("canon-a1100"), + .parent =3D TYPE_MACHINE, + .class_init =3D canon_a1100_machine_class_init, + .is_available =3D target_is_base_arm, +}; + +static void canon_a1100_machine_class_init_register_types(void) +{ + type_register_static(&canon_a1100_machine_class_init_typeinfo); +} + +type_init(canon_a1100_machine_class_init_register_types) diff --git a/hw/arm/imx25_pdk.c b/hw/arm/imx25_pdk.c index 243c30a67e7..c0c473e7103 100644 --- a/hw/arm/imx25_pdk.c +++ b/hw/arm/imx25_pdk.c @@ -24,6 +24,7 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/target-info.h" #include "qapi/error.h" #include "hw/core/qdev-properties.h" #include "hw/arm/fsl-imx25.h" @@ -140,8 +141,10 @@ static void imx25_pdk_init(MachineState *machine) } } =20 -static void imx25_pdk_machine_init(MachineClass *mc) +static void imx25_pdk_machine_class_init(ObjectClass *oc, const void *data) { + MachineClass *mc =3D MACHINE_CLASS(oc); + mc->desc =3D "ARM i.MX25 PDK board (ARM926)"; mc->init =3D imx25_pdk_init; mc->ignore_memory_transaction_failures =3D true; @@ -149,4 +152,16 @@ static void imx25_pdk_machine_init(MachineClass *mc) mc->auto_create_sdcard =3D true; } =20 -DEFINE_MACHINE("imx25-pdk", imx25_pdk_machine_init) +static const TypeInfo imx25_pdk_machine_class_init_typeinfo =3D { + .name =3D MACHINE_TYPE_NAME("imx25-pdk"), + .parent =3D TYPE_MACHINE, + .class_init =3D imx25_pdk_machine_class_init, + .is_available =3D target_is_base_arm, +}; + +static void imx25_pdk_machine_class_init_register_types(void) +{ + type_register_static(&imx25_pdk_machine_class_init_typeinfo); +} + +type_init(imx25_pdk_machine_class_init_register_types) diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c index b766edeeee1..94ab08591ce 100644 --- a/hw/arm/integratorcp.c +++ b/hw/arm/integratorcp.c @@ -8,6 +8,7 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/target-info.h" #include "qapi/error.h" #include "hw/core/sysbus.h" #include "migration/vmstate.h" @@ -691,8 +692,10 @@ static void integratorcp_init(MachineState *machine) arm_load_kernel(cpu, machine, &icms->bootinfo); } =20 -static void integratorcp_machine_init(MachineClass *mc) +static void integratorcp_machine_class_init(ObjectClass *oc, const void *d= ata) { + MachineClass *mc =3D MACHINE_CLASS(oc); + mc->desc =3D "ARM Integrator/CP (ARM926EJ-S)"; mc->init =3D integratorcp_init; mc->ignore_memory_transaction_failures =3D true; @@ -703,9 +706,21 @@ static void integratorcp_machine_init(MachineClass *mc) machine_add_audiodev_property(mc); } =20 -DEFINE_MACHINE_EXTENDED("integratorcp", MACHINE, IntegratorcpMachineState, - integratorcp_machine_init, false, false, - NULL) +static const TypeInfo integratorcp_machine_class_init_typeinfo =3D { + .name =3D TYPE_INTEGRATORCP_MACHINE, + .parent =3D TYPE_MACHINE, + .class_init =3D integratorcp_machine_class_init, + .instance_size =3D sizeof(IntegratorcpMachineState), + .abstract =3D false, + .is_available =3D target_is_base_arm, +}; + +static void integratorcp_machine_class_init_register_types(void) +{ + type_register_static(&integratorcp_machine_class_init_typeinfo); +} + +type_init(integratorcp_machine_class_init_register_types) =20 static const Property core_properties[] =3D { DEFINE_PROP_UINT32("memsz", IntegratorCMState, memsz, 0), diff --git a/hw/arm/kzm.c b/hw/arm/kzm.c index 387bf54ced1..aaff504564f 100644 --- a/hw/arm/kzm.c +++ b/hw/arm/kzm.c @@ -14,6 +14,7 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/target-info.h" #include "qapi/error.h" #include "hw/arm/fsl-imx31.h" #include "hw/arm/boot.h" @@ -129,12 +130,26 @@ static void kzm_init(MachineState *machine) } } =20 -static void kzm_machine_init(MachineClass *mc) +static void kzm_machine_class_init(ObjectClass *oc, const void *data) { + MachineClass *mc =3D MACHINE_CLASS(oc); + mc->desc =3D "ARM KZM Emulation Baseboard (ARM1136)"; mc->init =3D kzm_init; mc->ignore_memory_transaction_failures =3D true; mc->default_ram_id =3D "kzm.ram"; } =20 -DEFINE_MACHINE("kzm", kzm_machine_init) +static const TypeInfo kzm_machine_class_init_typeinfo =3D { + .name =3D MACHINE_TYPE_NAME("kzm"), + .parent =3D TYPE_MACHINE, + .class_init =3D kzm_machine_class_init, + .is_available =3D target_is_base_arm, +}; + +static void kzm_machine_class_init_register_types(void) +{ + type_register_static(&kzm_machine_class_init_typeinfo); +} + +type_init(kzm_machine_class_init_register_types) diff --git a/hw/arm/max78000fthr.c b/hw/arm/max78000fthr.c index ed50bb91979..dce29ccb6a1 100644 --- a/hw/arm/max78000fthr.c +++ b/hw/arm/max78000fthr.c @@ -7,6 +7,7 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/target-info.h" #include "qapi/error.h" #include "hw/core/boards.h" #include "hw/core/qdev-properties.h" @@ -35,8 +36,10 @@ static void max78000_init(MachineState *machine) 0x00000000, FLASH_SIZE); } =20 -static void max78000_machine_init(MachineClass *mc) +static void max78000_machine_class_init(ObjectClass *oc, const void *data) { + MachineClass *mc =3D MACHINE_CLASS(oc); + static const char * const valid_cpu_types[] =3D { ARM_CPU_TYPE_NAME("cortex-m4"), NULL @@ -47,4 +50,16 @@ static void max78000_machine_init(MachineClass *mc) mc->valid_cpu_types =3D valid_cpu_types; } =20 -DEFINE_MACHINE("max78000fthr", max78000_machine_init) +static const TypeInfo max78000_machine_class_init_typeinfo =3D { + .name =3D MACHINE_TYPE_NAME("max78000fthr"), + .parent =3D TYPE_MACHINE, + .class_init =3D max78000_machine_class_init, + .is_available =3D target_is_base_arm, +}; + +static void max78000_machine_class_init_register_types(void) +{ + type_register_static(&max78000_machine_class_init_typeinfo); +} + +type_init(max78000_machine_class_init_register_types) diff --git a/hw/arm/mcimx6ul-evk.c b/hw/arm/mcimx6ul-evk.c index 40071d2c7b9..30de24727ad 100644 --- a/hw/arm/mcimx6ul-evk.c +++ b/hw/arm/mcimx6ul-evk.c @@ -11,6 +11,7 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/target-info.h" #include "qapi/error.h" #include "hw/arm/fsl-imx6ul.h" #include "hw/arm/boot.h" @@ -68,8 +69,10 @@ static void mcimx6ul_evk_init(MachineState *machine) } } =20 -static void mcimx6ul_evk_machine_init(MachineClass *mc) +static void mcimx6ul_evk_machine_class_init(ObjectClass *oc, const void *d= ata) { + MachineClass *mc =3D MACHINE_CLASS(oc); + mc->desc =3D "Freescale i.MX6UL Evaluation Kit (Cortex-A7)"; mc->init =3D mcimx6ul_evk_init; mc->max_cpus =3D FSL_IMX6UL_NUM_CPUS; @@ -77,4 +80,16 @@ static void mcimx6ul_evk_machine_init(MachineClass *mc) mc->auto_create_sdcard =3D true; } =20 -DEFINE_MACHINE("mcimx6ul-evk", mcimx6ul_evk_machine_init) +static const TypeInfo mcimx6ul_evk_machine_class_init_typeinfo =3D { + .name =3D MACHINE_TYPE_NAME("mcimx6ul-evk"), + .parent =3D TYPE_MACHINE, + .class_init =3D mcimx6ul_evk_machine_class_init, + .is_available =3D target_is_base_arm, +}; + +static void mcimx6ul_evk_machine_class_init_register_types(void) +{ + type_register_static(&mcimx6ul_evk_machine_class_init_typeinfo); +} + +type_init(mcimx6ul_evk_machine_class_init_register_types) diff --git a/hw/arm/mcimx7d-sabre.c b/hw/arm/mcimx7d-sabre.c index 65fdb19c06f..14e6de8662a 100644 --- a/hw/arm/mcimx7d-sabre.c +++ b/hw/arm/mcimx7d-sabre.c @@ -13,6 +13,7 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/target-info.h" #include "qapi/error.h" #include "hw/arm/fsl-imx7.h" #include "hw/arm/boot.h" @@ -76,8 +77,10 @@ static void mcimx7d_sabre_init(MachineState *machine) } } =20 -static void mcimx7d_sabre_machine_init(MachineClass *mc) +static void mcimx7d_sabre_machine_class_init(ObjectClass *oc, const void *= data) { + MachineClass *mc =3D MACHINE_CLASS(oc); + mc->desc =3D "Freescale i.MX7 DUAL SABRE (Cortex-A7)"; mc->init =3D mcimx7d_sabre_init; mc->max_cpus =3D FSL_IMX7_NUM_CPUS; @@ -85,6 +88,18 @@ static void mcimx7d_sabre_machine_init(MachineClass *mc) mc->auto_create_sdcard =3D true; } =20 -DEFINE_MACHINE_EXTENDED("mcimx7d-sabre", MACHINE, Mcimx7dSabreMachineState, - mcimx7d_sabre_machine_init, false, false, - NULL) +static const TypeInfo mcimx7d_sabre_machine_class_init_typeinfo =3D { + .name =3D TYPE_MCIMX7D_SABRE_MACHINE, + .parent =3D TYPE_MACHINE, + .class_init =3D mcimx7d_sabre_machine_class_init, + .instance_size =3D sizeof(Mcimx7dSabreMachineState), + .abstract =3D false, + .is_available =3D target_is_base_arm, +}; + +static void mcimx7d_sabre_machine_class_init_register_types(void) +{ + type_register_static(&mcimx7d_sabre_machine_class_init_typeinfo); +} + +type_init(mcimx7d_sabre_machine_class_init_register_types) diff --git a/hw/arm/msf2-som.c b/hw/arm/msf2-som.c index 1372d7f628a..5dc30b54d7d 100644 --- a/hw/arm/msf2-som.c +++ b/hw/arm/msf2-som.c @@ -26,6 +26,7 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/target-info.h" #include "qemu/units.h" #include "qapi/error.h" #include "qemu/error-report.h" @@ -96,8 +97,10 @@ static void emcraft_sf2_s2s010_init(MachineState *machin= e) 0, soc->envm_size); } =20 -static void emcraft_sf2_machine_init(MachineClass *mc) +static void emcraft_sf2_machine_class_init(ObjectClass *oc, const void *da= ta) { + MachineClass *mc =3D MACHINE_CLASS(oc); + static const char * const valid_cpu_types[] =3D { ARM_CPU_TYPE_NAME("cortex-m3"), NULL @@ -108,4 +111,16 @@ static void emcraft_sf2_machine_init(MachineClass *mc) mc->valid_cpu_types =3D valid_cpu_types; } =20 -DEFINE_MACHINE("emcraft-sf2", emcraft_sf2_machine_init) +static const TypeInfo emcraft_sf2_machine_class_init_typeinfo =3D { + .name =3D MACHINE_TYPE_NAME("emcraft-sf2"), + .parent =3D TYPE_MACHINE, + .class_init =3D emcraft_sf2_machine_class_init, + .is_available =3D target_is_base_arm, +}; + +static void emcraft_sf2_machine_class_init_register_types(void) +{ + type_register_static(&emcraft_sf2_machine_class_init_typeinfo); +} + +type_init(emcraft_sf2_machine_class_init_register_types) diff --git a/hw/arm/netduino2.c b/hw/arm/netduino2.c index 0db8798b4bd..5cb7d05877f 100644 --- a/hw/arm/netduino2.c +++ b/hw/arm/netduino2.c @@ -23,6 +23,7 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/target-info.h" #include "qapi/error.h" #include "hw/core/boards.h" #include "hw/core/qdev-properties.h" @@ -52,8 +53,10 @@ static void netduino2_init(MachineState *machine) 0, FLASH_SIZE); } =20 -static void netduino2_machine_init(MachineClass *mc) +static void netduino2_machine_class_init(ObjectClass *oc, const void *data) { + MachineClass *mc =3D MACHINE_CLASS(oc); + static const char * const valid_cpu_types[] =3D { ARM_CPU_TYPE_NAME("cortex-m3"), NULL @@ -65,4 +68,16 @@ static void netduino2_machine_init(MachineClass *mc) mc->ignore_memory_transaction_failures =3D true; } =20 -DEFINE_MACHINE("netduino2", netduino2_machine_init) +static const TypeInfo netduino2_machine_class_init_typeinfo =3D { + .name =3D MACHINE_TYPE_NAME("netduino2"), + .parent =3D TYPE_MACHINE, + .class_init =3D netduino2_machine_class_init, + .is_available =3D target_is_base_arm, +}; + +static void netduino2_machine_class_init_register_types(void) +{ + type_register_static(&netduino2_machine_class_init_typeinfo); +} + +type_init(netduino2_machine_class_init_register_types) diff --git a/hw/arm/netduinoplus2.c b/hw/arm/netduinoplus2.c index 5ac0eb81637..7a750988f17 100644 --- a/hw/arm/netduinoplus2.c +++ b/hw/arm/netduinoplus2.c @@ -23,6 +23,7 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/target-info.h" #include "qapi/error.h" #include "hw/core/boards.h" #include "hw/core/qdev-properties.h" @@ -53,8 +54,10 @@ static void netduinoplus2_init(MachineState *machine) 0, FLASH_SIZE); } =20 -static void netduinoplus2_machine_init(MachineClass *mc) +static void netduinoplus2_machine_class_init(ObjectClass *oc, const void *= data) { + MachineClass *mc =3D MACHINE_CLASS(oc); + static const char * const valid_cpu_types[] =3D { ARM_CPU_TYPE_NAME("cortex-m4"), NULL @@ -65,4 +68,16 @@ static void netduinoplus2_machine_init(MachineClass *mc) mc->valid_cpu_types =3D valid_cpu_types; } =20 -DEFINE_MACHINE("netduinoplus2", netduinoplus2_machine_init) +static const TypeInfo netduinoplus2_machine_class_init_typeinfo =3D { + .name =3D MACHINE_TYPE_NAME("netduinoplus2"), + .parent =3D TYPE_MACHINE, + .class_init =3D netduinoplus2_machine_class_init, + .is_available =3D target_is_base_arm, +}; + +static void netduinoplus2_machine_class_init_register_types(void) +{ + type_register_static(&netduinoplus2_machine_class_init_typeinfo); +} + +type_init(netduinoplus2_machine_class_init_register_types) diff --git a/hw/arm/olimex-stm32-h405.c b/hw/arm/olimex-stm32-h405.c index de9ac4978ce..4e93a245998 100644 --- a/hw/arm/olimex-stm32-h405.c +++ b/hw/arm/olimex-stm32-h405.c @@ -24,6 +24,7 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/target-info.h" #include "qapi/error.h" #include "hw/core/boards.h" #include "hw/core/qdev-properties.h" @@ -56,8 +57,10 @@ static void olimex_stm32_h405_init(MachineState *machine) 0, FLASH_SIZE); } =20 -static void olimex_stm32_h405_machine_init(MachineClass *mc) +static void olimex_stm32_h405_machine_class_init(ObjectClass *oc, const vo= id *data) { + MachineClass *mc =3D MACHINE_CLASS(oc); + static const char * const valid_cpu_types[] =3D { ARM_CPU_TYPE_NAME("cortex-m4"), NULL @@ -71,4 +74,16 @@ static void olimex_stm32_h405_machine_init(MachineClass = *mc) mc->default_ram_size =3D 0; } =20 -DEFINE_MACHINE("olimex-stm32-h405", olimex_stm32_h405_machine_init) +static const TypeInfo olimex_stm32_h405_machine_class_init_typeinfo =3D { + .name =3D MACHINE_TYPE_NAME("olimex-stm32-h405"), + .parent =3D TYPE_MACHINE, + .class_init =3D olimex_stm32_h405_machine_class_init, + .is_available =3D target_is_base_arm, +}; + +static void olimex_stm32_h405_machine_class_init_register_types(void) +{ + type_register_static(&olimex_stm32_h405_machine_class_init_typeinfo); +} + +type_init(olimex_stm32_h405_machine_class_init_register_types) diff --git a/hw/arm/orangepi.c b/hw/arm/orangepi.c index 18ed174032b..c6b0906c980 100644 --- a/hw/arm/orangepi.c +++ b/hw/arm/orangepi.c @@ -18,6 +18,7 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/target-info.h" #include "qemu/units.h" #include "system/address-spaces.h" #include "qapi/error.h" @@ -111,8 +112,10 @@ static void orangepi_init(MachineState *machine) arm_load_kernel(&h3->cpus[0], machine, &opms->bootinfo); } =20 -static void orangepi_machine_init(MachineClass *mc) +static void orangepi_machine_class_init(ObjectClass *oc, const void *data) { + MachineClass *mc =3D MACHINE_CLASS(oc); + static const char * const valid_cpu_types[] =3D { ARM_CPU_TYPE_NAME("cortex-a7"), NULL @@ -132,6 +135,18 @@ static void orangepi_machine_init(MachineClass *mc) mc->auto_create_sdcard =3D true; } =20 -DEFINE_MACHINE_EXTENDED("orangepi-pc", MACHINE, OrangePiMachineState, - orangepi_machine_init, false, false, - NULL) +static const TypeInfo orangepi_machine_class_init_typeinfo =3D { + .name =3D TYPE_ORANGEPI_MACHINE, + .parent =3D TYPE_MACHINE, + .class_init =3D orangepi_machine_class_init, + .instance_size =3D sizeof(OrangePiMachineState), + .abstract =3D false, + .is_available =3D target_is_base_arm, +}; + +static void orangepi_machine_class_init_register_types(void) +{ + type_register_static(&orangepi_machine_class_init_typeinfo); +} + +type_init(orangepi_machine_class_init_register_types) diff --git a/hw/arm/stm32vldiscovery.c b/hw/arm/stm32vldiscovery.c index d899a134b38..3b439c80a67 100644 --- a/hw/arm/stm32vldiscovery.c +++ b/hw/arm/stm32vldiscovery.c @@ -24,6 +24,7 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/target-info.h" #include "qapi/error.h" #include "hw/core/boards.h" #include "hw/core/qdev-properties.h" @@ -56,8 +57,10 @@ static void stm32vldiscovery_init(MachineState *machine) 0, FLASH_SIZE); } =20 -static void stm32vldiscovery_machine_init(MachineClass *mc) +static void stm32vldiscovery_machine_class_init(ObjectClass *oc, const voi= d *data) { + MachineClass *mc =3D MACHINE_CLASS(oc); + static const char * const valid_cpu_types[] =3D { ARM_CPU_TYPE_NAME("cortex-m3"), NULL @@ -68,4 +71,16 @@ static void stm32vldiscovery_machine_init(MachineClass *= mc) mc->valid_cpu_types =3D valid_cpu_types; } =20 -DEFINE_MACHINE("stm32vldiscovery", stm32vldiscovery_machine_init) +static const TypeInfo stm32vldiscovery_machine_class_init_typeinfo =3D { + .name =3D MACHINE_TYPE_NAME("stm32vldiscovery"), + .parent =3D TYPE_MACHINE, + .class_init =3D stm32vldiscovery_machine_class_init, + .is_available =3D target_is_base_arm, +}; + +static void stm32vldiscovery_machine_class_init_register_types(void) +{ + type_register_static(&stm32vldiscovery_machine_class_init_typeinfo); +} + +type_init(stm32vldiscovery_machine_class_init_register_types) --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406559; cv=none; d=zohomail.com; s=zohoarc; b=gm4Sn1zXSbKc51LNPixG4qgO18jnhYyD0tYQ2ptYywh11CVxoae940KkFQ13a/hodmGs6WhgRoLpkNMgAfCofF93zDRClye1xdusKkHWtfSzZrSeTqblUmgGNkRVgceF54OZApvpJeRfa8k4K6FEPn1IG4MdP77EDfpy0bVBj3E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406559; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xBSqXEkr1ev4UBbYnYTwgul/tvqRWOfBQ9ClBL2I6+g=; b=DqQG0h3RPos+Y2Q9gOpSwUMev7cY0cZv3U7SlBNnzsgzCykuChbWm8ifWIJSFzddhnEVjnAQ9YIjfilxpFylPBRy+1rysZV3YKZQtUZKZNvIZIgRPYl/HxzrKbvOrZ/6ViU3iw1bRyd4yti8725hEWNlhPbvxxN8tSsdPER/iCg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406559865320.6980027069179; Sat, 26 Sep 2026 00:09:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMWk-0003O3-J6; Sat, 26 Sep 2026 03:08:54 -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 1xAMSS-0005o1-DA for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:30 -0400 Received: from mail-dy2-x0f.google.com ([2607:f8b0:4864:36::f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMSQ-0000kJ-GC for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:28 -0400 Received: by mail-dy2-x0f.google.com with SMTP id 5a478bee46e88-341027843a5so1049330eec.2 for ; Sat, 26 Sep 2026 00:04:25 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.04.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:04:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406264; x=1791011064; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=xBSqXEkr1ev4UBbYnYTwgul/tvqRWOfBQ9ClBL2I6+g=; b=OL151cEL7mwmL1sN6Wxb4lG9vwbSWY/j2qLkBjed82QtwxbshFYowB0MFxF5Mk4HJZ r8Xe+s+w7YmKo8SRNUOE46prnDOpdx0R4KTrWa7jQf7+rDq2arVZvm0zVzw0b2VSIUEF vwynV7fWMguRIA53YCSjutKpxmcuugsG9hrAUqwBezCPOm1OG1l9Q9d4XaU+cW2YVY06 twkIr61ahPrGB6niKZSUiSQW/gfE+oORb2/zItYygTBjsGG5Ig5Q15poqiOCgwWeBD+p BEeVKaMMAlBay5zXXPk044PX877ULiigfnz/dh0Pt9vuN/hqCIirdM9dIW/o4W76GmvZ gtJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406264; x=1791011064; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=xBSqXEkr1ev4UBbYnYTwgul/tvqRWOfBQ9ClBL2I6+g=; b=wCbPVm6CIpp+FbVKcPpEKEF/Upz5gVfKHHBSlnG7JRyQxAdDex75qUNVTyjig1AdHw abhuQk0g361sJHYa0vhI9UPkL73MiMe5W0vz8feJi6tU9MIPDM8tMawkbfRPmeNLKRz+ TTJN7zlNzw5iygx3TysTkkXV/eta0xcEhYIWQK7rq/ihRuWJWybcyzA6lDVkPAvCfOTA 5cFdS7skROT9jO0RUcgzNJBK3vP5ncHkhm3W1CpDFrR9xcLwuUlINT9/PvJTASUd9rUT HrX0u0ylyzWTTsKKgachMO8cGJpUX0LpS+mOXffXemKsn3FLX8UmTKpzJLSW1E/YnhMq SoYQ== X-Gm-Message-State: AFuF++kSM+Fmfd6MmDjl747dnlnLr9Ef3zLYqxpxn7OoiDgLV4LgKPOc axCUWuJLFjYYxzN01q01UE5D6/bZh0a++xDxxrW+sDGc37mTHXWNqD6ol9Stla6U X-Gm-Gg: AYBFou2uW456ZJwrZeh7cLj21AFY7wfRHhbl9HdDfeoZWWlJZGfkFMjgWvJmRn+qjhu 8ZYaiyQ+H3mx3wr0lO7cQjYrzZ0w6PMLctjHMDa5GbxZy/Vo2tO3s6ar9GRNYdyNg0BLgL+l1Zh c3wqZlzg12yU2IXUP6gLQlzCzq3YShkYmEQ/hEs1mE8lD7HCOup+Hvo2cpCbiwgltKzwRFsaJW+ aWZq31rauiemLfr3eu8eYkzkXYFvL8eUD2eVHirvm8pF3wiyZwufmez+6LjizteWeLrKej3RYLd SyQqy8EA+DsYZXAJtpfG2+3XsbmzMUZewHhfHuDtyK1vKhhon6G/nIT7O1rn50WzVJHEsza9cxs 55FhasMBF3klOtCCuM5UMLrW6T7q3Hg3xsDS/6Kun3VomZoy18PQ5PsW9qbyQliCV1lOA6LGOOH 7D/Lde1nx4YQ0ttdSxwZvXp4kOzqYjELMjQ2TUTmQXip84X1g2L8f0fTPbgN31tDR+fKObO/amy y2nb07q7Z+AZkP1e+Da91dBhFXbLW8tY3c86P20Ow== X-Received: by 2002:a05:7300:7fa7:b0:341:85c0:91ca with SMTP id 5a478bee46e88-3427217a1d7mr3157912eec.22.1790406264285; Sat, 26 Sep 2026 00:04:24 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 51/55] hw/arm: expand imx8mm-evk DEFINE_MACHINE to TypeInfo Date: Sat, 26 Sep 2026 15:00:50 +0800 Message-ID: <20260926070057.1234-52-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::f; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0f.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1790406561717158500 Content-Type: text/plain; charset="utf-8" Replace DEFINE_MACHINE_EXTENDED with a TypeInfo, rename imx8mm_evk_machine_init to imx8mm_evk_machine_class_init, and set is_available to target_is_aarch64. Signed-off-by: Yonggang Luo --- hw/arm/imx8mm-evk.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/hw/arm/imx8mm-evk.c b/hw/arm/imx8mm-evk.c index c3215b11cb9..5dfd8250459 100644 --- a/hw/arm/imx8mm-evk.c +++ b/hw/arm/imx8mm-evk.c @@ -8,6 +8,7 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/target-info.h" #include "system/address-spaces.h" #include "hw/arm/boot.h" #include "hw/arm/fsl-imx8mm.h" @@ -122,8 +123,10 @@ static const char *imx8mm_evk_get_default_cpu_type(con= st MachineState *ms) return ARM_CPU_TYPE_NAME("cortex-a53"); } =20 -static void imx8mm_evk_machine_init(MachineClass *mc) +static void imx8mm_evk_machine_class_init(ObjectClass *oc, const void *dat= a) { + MachineClass *mc =3D MACHINE_CLASS(oc); + mc->desc =3D "NXP i.MX 8MM EVK Board"; mc->init =3D imx8mm_evk_init; mc->max_cpus =3D FSL_IMX8MM_NUM_CPUS; @@ -133,6 +136,18 @@ static void imx8mm_evk_machine_init(MachineClass *mc) mc->get_default_cpu_type =3D imx8mm_evk_get_default_cpu_type; } =20 -DEFINE_MACHINE_EXTENDED("imx8mm-evk", MACHINE, Imx8mmEvkMachineState, - imx8mm_evk_machine_init, false, false, - NULL) +static const TypeInfo imx8mm_evk_machine_class_init_typeinfo =3D { + .name =3D TYPE_IMX8MM_EVK_MACHINE, + .parent =3D TYPE_MACHINE, + .class_init =3D imx8mm_evk_machine_class_init, + .instance_size =3D sizeof(Imx8mmEvkMachineState), + .abstract =3D false, + .is_available =3D target_is_aarch64, +}; + +static void imx8mm_evk_machine_class_init_register_types(void) +{ + type_register_static(&imx8mm_evk_machine_class_init_typeinfo); +} + +type_init(imx8mm_evk_machine_class_init_register_types) --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406652; cv=none; d=zohomail.com; s=zohoarc; b=UhEiPGlVHVRJ/FTlsNwFIHnVc+Av7RCkgXJ1fuZXGLoJQciIiyZgSorVR7of4wRNoaJrQYDMCRHJm2wgjWsZTKfgb/BZlDjz4nSadSkyEaW9hMPBlKMEKOckBfTXM4houJSVjUEKGozP9Q54U3nKdeDdouw0dGQLbhEcWzusyKY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406652; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VCuHWY6Hw+A4Xk8E6Eag+wxaYi6gJJVKssV/rB0uMSY=; b=KdW6RHpeaWmRB3XQFKlwZuoi4Pk4cR28qZKBiSFZkEB5RYIC1UwoyqOer8DXHKtKi5IVZds28pDkUhJACK90yfSuOfGLwhg27t8/VaU4dyebS3HDxA/P/lxdt3jAqNuZfSqiH6xJLiUH7zeFTALrzYUFkICnUhmWb4fZXHXEtis= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406652702167.2160579610795; Sat, 26 Sep 2026 00:10:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMVw-0001uq-KZ; Sat, 26 Sep 2026 03:08:04 -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 1xAMSV-0005sO-Nn for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:33 -0400 Received: from mail-dy2-x10.google.com ([2607:f8b0:4864:36::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMSU-0000l3-3B for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:31 -0400 Received: by mail-dy2-x10.google.com with SMTP id 5a478bee46e88-328664b7528so1431165eec.2 for ; Sat, 26 Sep 2026 00:04:29 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.04.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:04:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406269; x=1791011069; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=VCuHWY6Hw+A4Xk8E6Eag+wxaYi6gJJVKssV/rB0uMSY=; b=UeDX5Fjrat3UmTCrtOvJn0YSb3kiKZYXmS3GKyqTV1zwtOjBtzBV2PVhbOAAcZhBJV /tLtKXlqdpo/6Dfj3Yw1PBVZfxCGaJvwezw1QDQSa9TOonTV6cn+6fTweI4WSkpwdcUH CsJbhS+q6w3fVKOgbVlzYh62l0rKC8EdkYxtPusqRHbFoYHbmms0hPQDAY1JtE2qbwQx lmhsE+oxzXuMCX23XMS909cwqTHwYtSZgdVIumRllwIcs4PpUq6/OxYrk0Od5CzaHB8q yBgbaZ5AtgNv00XYsbqKqSxAcpsUglFyJ+sTykvlnsyi+U23IZsEP1D117dNVDWvo9eM jYIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406269; x=1791011069; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=VCuHWY6Hw+A4Xk8E6Eag+wxaYi6gJJVKssV/rB0uMSY=; b=LvX+lwOnNH7r80X5CVHK5Oj3s5XtMqzOGOXkmE9M50cTiu5f9fz1RM0aC5gtievGO+ +0Qmum4QcB7PFTRjYkn5t0oOLNnfQPaLforNrkhDgtFji6Xi3Up2VMaSJpm3YUyddbJW KMd4rSyk2E8WOlwbGZj8b9eC0TwzIxn25NcTh9G3ZWUjgnkn6RqLpCiLOn9QZV3RSq/6 B9cmXx+V4ZWHvKtTjM13kDauT4tw3mbkGwLGblrmp9uTs5HEJ6M0ZOFJxUuj0G/AgfsY iXvDnBGXclnx/43Yw/r6eV+FF2XiDpnS9KEVcz7qx84TRnNXw6c0u0GcienzQ7j3/8Kd mp/w== X-Gm-Message-State: AFuF++loegu7NEj8yC53vG8bpt3D5w8BLyj5cZTD6vk/0gbNTjL+mGau ywbxKGGijbpayM1HGOxlmgkGWWI89OZHjvoyE/owxWlAOmCEeopxSFkWJW7gHAtI X-Gm-Gg: AYBFou2xcqnHKZbIQKZH+YIVANEW+/kBhYx55DXf+SM/l1nL8gLgpS70oG6lFKUg5cY Rj7lMvV9Ax3qNyLr3qTHpj+Gqn0/zLVvi/o5eTUIk44PFqMFAwsacDDGdgjsZBfPaGz3AFpRLpm 1Vd+eUJHwkDxaBubd/vrZJE9TbHRUKNZHNnlUCaKwYLFByiDoVguuHFq/nwuuRZbHzoMEbzEmpq gCp/r09hTm5sUDW899T1E+3U28uwTUSUFrNCXplo7hWiobz/BUdKdI7NeKKUIjXQOsFYk9glLpw oHBJDEEWSJsScakhemsS7+BlYHeTK1rfuiV72y6E4YvFvppK8avTaY6cV98LmUBLJnyErNthaWd b0j0IBR6OjkGuiuUSfQoQws0Tmys7q6ntPAIv3C6X9BLvlk2FrvxhqacYbwoSdBg/NaG0MRkKjP ffkNKMl4WgcJoDjdr8LTYy93+C+x2xD+vkbyIOF+9DspcDlG356RT4AEwgl1pO/nJXK/55fMUnB l/9lQRIO40PcPLTB7XxDr59kVDc9YHk6m3X2AzCwA== X-Received: by 2002:a05:7300:d941:b0:328:3542:b73e with SMTP id 5a478bee46e88-342707b5de8mr1811320eec.15.1790406268100; Sat, 26 Sep 2026 00:04:28 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 52/55] hw/arm: set virt TypeInfo.is_available Date: Sat, 26 Sep 2026 15:00:51 +0800 Message-ID: <20260926070057.1234-53-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::10; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x10.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406654044158500 Content-Type: text/plain; charset="utf-8" Set TypeInfo.is_available to target_is_base_arm on DEFINE_VIRT_MACHINE_IMPL. Signed-off-by: Yonggang Luo --- hw/arm/virt.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 3eecf094bcc..a0a954ce693 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -132,6 +132,7 @@ static void arm_virt_compat_default_set(MachineClass *m= c) .name =3D MACHINE_VER_TYPE_NAME("virt", __VA_ARGS__), \ .parent =3D TYPE_VIRT_MACHINE, \ .class_init =3D MACHINE_VER_SYM(class_init, virt, __VA_ARGS__), \ + .is_available =3D target_is_base_arm, \ }; \ static void MACHINE_VER_SYM(register, virt, __VA_ARGS__)(void) \ { \ --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406791; cv=none; d=zohomail.com; s=zohoarc; b=E4a4ZwdKFk21Qzarba1flFexsMkSZQLTr8RmC7lVdRcORz8bcIH4i4RmvJ1QAIPJzsY/eW37C946Hqt19fGfCjXtyrsbf/q3ZzJeteb062rjL5pV7t6RHjIr/exOSfYB3mgJPNcC9JVBk4MXsSHJD6oGA6ayPFqZ7XuA5xxMyE0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406791; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=72h6q/XELQDZvfdIS5KzMm0xOjpWDOQFzwFtLUoCQz0=; b=QOExQWZTwbp5UVz/3aqNEoVm+NPBcoBgcsuFGfzo/GrtrdlZBC2utrFzbMnxo9a2yWDiqsVMRt1JNFrZ+3wki9AOQkMf9fj2DlZ1e+0KUUqEEWpsm0FozcDg/k5K6LPyQrPrFmTwUvykgLEsnpltlZ1eGcXCezvA7V2DvCHIHF4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406791222601.1634273596298; Sat, 26 Sep 2026 00:13:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMW7-0002eY-99; Sat, 26 Sep 2026 03:08: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 1xAMSb-0005zj-M5 for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:40 -0400 Received: from mail-dl2-x0e.google.com ([2607:f8b0:4864:38::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMSY-0000lQ-Bz for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:37 -0400 Received: by mail-dl2-x0e.google.com with SMTP id a92af1059eb24-144df39b6cfso1171430c88.1 for ; Sat, 26 Sep 2026 00:04:34 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.04.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:04:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406273; x=1791011073; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=72h6q/XELQDZvfdIS5KzMm0xOjpWDOQFzwFtLUoCQz0=; b=B7k3obt96ZSW2cjc7+jaTFQYc+JEX3uDWpqwgQTpv5mj9LzdEgdtvPNqEyKIf/jZly t3n1lZcFid9wv7DOXMBcoWX/F0OJ+RRecwNY8BvfoMyk/zIS7d/S0X/YOACP1BjeAYzx HwZtjArogk2AmlTlGL7ZkqR0SKfyeq/AxbpnKw0pS8gNFoLW//YvC0qGKWz+lCvXa+5J km4LGknBaKzLe9LbYKxv/GykvjxUfgRpJ1wSES/fCbq5jBIwPNL43bFZN2vDfituNLpd 0eTVvgcjtRQBbhL/hEAgr4q0GFVys8aQYnEjZH06fgW/6GzxkQN1XQ5fDIHUSD1f2A1R dd4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406273; x=1791011073; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=72h6q/XELQDZvfdIS5KzMm0xOjpWDOQFzwFtLUoCQz0=; b=tJD3UEW4UIeyqYSevlZjk16lmJsCU+veAVMYIhB3hPX12f7cr/LfHIix6zZeqVHJcT n5nQ6C7f9JQyJMCq1ALqLbQRxu0o0YJhgE3OXXW4yda7EAoF9ve8PcvU20hD1B9gDnF4 XgthWWiIAjqI4/1DqgHEqpCXL1Rb2niFrFghYKAuY7D+qqF5O9TJptPun8dPEqZCmsal 3mCo/TkZkaoAYoPt8p8WfKGbKCTuhrd0tBK/DwjiRIkRLUyfdJns1GWf2waR5I0fRGFR 9EjbRhieZ9YVYmaI5/xc+zgWNw6xMCUfCDx44kydHXZk9zAjodyGq9oGnkiJKuzk07bD K3JQ== X-Gm-Message-State: AFuF++lVWTcOLwGARlF0UHSOcxaBRUczUDmQuLYZpGpsDRIt7ASR07sE bexLevShiHJMFFx2GrpN7PqsA+m+hCLbhdObpBbp/krpnpP6TlfmPBUtIMs+zppP X-Gm-Gg: AYBFou25Q1jAlrPnsATsOglpLDRynnO4oNA9kNv8Ph7+zQIe7Fz02Kr+3P84+vogcBH bvsrBnKBPguQejbLNmpxMc/jvuD4u0ofhfjTuqU2fyMsI98jmampWT8Ocj224CKNaPzFxYDYjwg s/LfFpp8f/nosSO9TUxMygvripj+jMjjvGeWkwCcms7RQmGVSi+rSE5gNk5NL2jOwL9re2fYIqx izYVovrKmHXeslVA+/mSrb7+D8cXvBgxHDdk4ADmRfwLIeUY+7Kx43avGv00fEV7XJbnQgUOTt/ GBHYd8/Pu7Le+TByDfG3D8pNJZQ5DGvozzIP2ppuxNjXpeCh4RxfUCGaarVPW3UuuykOG7gp1NX PYpCP0ugD9fWh57pSVTGbz066ZxO9KohHp2h2Dwl0QaklMmnH5+sb7phw41CFjK9wIJp5U73uhB bSCV5daaaKBVhjVlzKI6eTfzLPBu7Usg40SVsnLFyP1xggpyeKlD6A+dbt1WcNiEYYrLvQXfzDn dXzU1ZGUWYLaePkbhspZrnlSKS79/c= X-Received: by 2002:a05:7300:ea11:b0:33b:f2f1:bc30 with SMTP id 5a478bee46e88-34272468f56mr2368131eec.31.1790406272566; Sat, 26 Sep 2026 00:04:32 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 53/55] hw/arm: set remaining 32-bit machine TypeInfo.is_available Date: Sat, 26 Sep 2026 15:00:52 +0800 Message-ID: <20260926070057.1234-54-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:38::e; envelope-from=luoyonggang@gmail.com; helo=mail-dl2-x0e.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1790406793001158500 Content-Type: text/plain; charset="utf-8" Set TypeInfo.is_available to target_is_base_arm on remaining 32-bit TypeInfo leaves, including aspeed, raspi0/1/2, mps, and npcm7xx. raspi3ap/3b use target_is_aarch64 in the same raspi TypeInfo array. Signed-off-by: Yonggang Luo --- hw/arm/aspeed_ast1040_evb.c | 1 + hw/arm/aspeed_ast10x0_evb.c | 2 ++ hw/arm/aspeed_ast2400_palmetto.c | 1 + hw/arm/aspeed_ast2400_quanta-q71l.c | 1 + hw/arm/aspeed_ast2400_supermicrox11.c | 1 + hw/arm/aspeed_ast2500_evb.c | 1 + hw/arm/aspeed_ast2500_g220a.c | 1 + hw/arm/aspeed_ast2500_romulus.c | 1 + hw/arm/aspeed_ast2500_supermicro-x11spi.c | 1 + hw/arm/aspeed_ast2500_tiogapass.c | 1 + hw/arm/aspeed_ast2500_witherspoon.c | 1 + hw/arm/aspeed_ast2500_yosemitev2.c | 1 + hw/arm/aspeed_ast2600_anacapa.c | 1 + hw/arm/aspeed_ast2600_bletchley.c | 1 + hw/arm/aspeed_ast2600_catalina.c | 1 + hw/arm/aspeed_ast2600_evb.c | 1 + hw/arm/aspeed_ast2600_fby35.c | 1 + hw/arm/aspeed_ast2600_fuji.c | 1 + hw/arm/aspeed_ast2600_gb200nvl.c | 1 + hw/arm/aspeed_ast2600_rainier.c | 1 + hw/arm/aspeed_ast2600_sanmiguel.c | 1 + hw/arm/b-l475e-iot01a.c | 1 + hw/arm/collie.c | 1 + hw/arm/exynos4_boards.c | 2 ++ hw/arm/microbit.c | 1 + hw/arm/mps2-tz.c | 5 +++++ hw/arm/mps2.c | 4 ++++ hw/arm/mps3r.c | 1 + hw/arm/musca.c | 2 ++ hw/arm/npcm7xx_boards.c | 5 +++++ hw/arm/omap_sx1.c | 2 ++ hw/arm/raspi.c | 3 +++ hw/arm/realview.c | 4 ++++ hw/arm/sabrelite.c | 1 + hw/arm/stellaris.c | 2 ++ hw/arm/versatilepb.c | 2 ++ hw/arm/vexpress.c | 2 ++ hw/arm/xilinx_zynq.c | 1 + 38 files changed, 61 insertions(+) diff --git a/hw/arm/aspeed_ast1040_evb.c b/hw/arm/aspeed_ast1040_evb.c index 486f0f6a1ba..d66847c602c 100644 --- a/hw/arm/aspeed_ast1040_evb.c +++ b/hw/arm/aspeed_ast1040_evb.c @@ -79,6 +79,7 @@ static const TypeInfo aspeed_ast1040_evb_types[] =3D { { .name =3D MACHINE_TYPE_NAME("ast1040-evb"), .parent =3D TYPE_ASPEED_MACHINE, + .is_available =3D target_is_base_arm, .class_init =3D aspeed_machine_ast1040_evb_class_init, } }; diff --git a/hw/arm/aspeed_ast10x0_evb.c b/hw/arm/aspeed_ast10x0_evb.c index c937bb74665..5b5adf7018e 100644 --- a/hw/arm/aspeed_ast10x0_evb.c +++ b/hw/arm/aspeed_ast10x0_evb.c @@ -117,10 +117,12 @@ static const TypeInfo aspeed_ast10x0_evb_types[] =3D { { .name =3D MACHINE_TYPE_NAME("ast1030-evb"), .parent =3D TYPE_ASPEED_MACHINE, + .is_available =3D target_is_base_arm, .class_init =3D aspeed_minibmc_machine_ast1030_evb_class_init, }, { .name =3D MACHINE_TYPE_NAME("ast1060-evb"), .parent =3D TYPE_ASPEED_MACHINE, + .is_available =3D target_is_base_arm, .class_init =3D aspeed_minibmc_machine_ast1060_evb_class_init, } }; diff --git a/hw/arm/aspeed_ast2400_palmetto.c b/hw/arm/aspeed_ast2400_palme= tto.c index e2350e5b6ca..f8abd041c3a 100644 --- a/hw/arm/aspeed_ast2400_palmetto.c +++ b/hw/arm/aspeed_ast2400_palmetto.c @@ -71,6 +71,7 @@ static const TypeInfo aspeed_ast2400_palmetto_types[] =3D= { { .name =3D MACHINE_TYPE_NAME("palmetto-bmc"), .parent =3D TYPE_ASPEED_MACHINE, + .is_available =3D target_is_base_arm, .class_init =3D aspeed_machine_palmetto_class_init, } }; diff --git a/hw/arm/aspeed_ast2400_quanta-q71l.c b/hw/arm/aspeed_ast2400_qu= anta-q71l.c index e8cbbb8a052..6636d19d142 100644 --- a/hw/arm/aspeed_ast2400_quanta-q71l.c +++ b/hw/arm/aspeed_ast2400_quanta-q71l.c @@ -77,6 +77,7 @@ static const TypeInfo aspeed_ast2400_quanta_q71l_types[] = =3D { { .name =3D MACHINE_TYPE_NAME("quanta-q71l-bmc"), .parent =3D TYPE_ASPEED_MACHINE, + .is_available =3D target_is_base_arm, .class_init =3D aspeed_machine_quanta_q71l_class_init, } }; diff --git a/hw/arm/aspeed_ast2400_supermicrox11.c b/hw/arm/aspeed_ast2400_= supermicrox11.c index c75898cc6d1..14a49c82c86 100644 --- a/hw/arm/aspeed_ast2400_supermicrox11.c +++ b/hw/arm/aspeed_ast2400_supermicrox11.c @@ -72,6 +72,7 @@ static const TypeInfo aspeed_ast2400_supermicrox11_types[= ] =3D { { .name =3D MACHINE_TYPE_NAME("supermicrox11-bmc"), .parent =3D TYPE_ASPEED_MACHINE, + .is_available =3D target_is_base_arm, .class_init =3D aspeed_machine_supermicrox11_bmc_class_init, } }; diff --git a/hw/arm/aspeed_ast2500_evb.c b/hw/arm/aspeed_ast2500_evb.c index 6ca2a36322c..58c6ed316f0 100644 --- a/hw/arm/aspeed_ast2500_evb.c +++ b/hw/arm/aspeed_ast2500_evb.c @@ -58,6 +58,7 @@ static const TypeInfo aspeed_ast2500_evb_types[] =3D { { .name =3D MACHINE_TYPE_NAME("ast2500-evb"), .parent =3D TYPE_ASPEED_MACHINE, + .is_available =3D target_is_base_arm, .class_init =3D aspeed_machine_ast2500_evb_class_init, } }; diff --git a/hw/arm/aspeed_ast2500_g220a.c b/hw/arm/aspeed_ast2500_g220a.c index 00bb1c61053..5deedad77cb 100644 --- a/hw/arm/aspeed_ast2500_g220a.c +++ b/hw/arm/aspeed_ast2500_g220a.c @@ -83,6 +83,7 @@ static const TypeInfo aspeed_ast2500_g220a_types[] =3D { { .name =3D MACHINE_TYPE_NAME("g220a-bmc"), .parent =3D TYPE_ASPEED_MACHINE, + .is_available =3D target_is_base_arm, .class_init =3D aspeed_machine_g220a_class_init, } }; diff --git a/hw/arm/aspeed_ast2500_romulus.c b/hw/arm/aspeed_ast2500_romulu= s.c index 340a74408b6..5668915db55 100644 --- a/hw/arm/aspeed_ast2500_romulus.c +++ b/hw/arm/aspeed_ast2500_romulus.c @@ -53,6 +53,7 @@ static const TypeInfo aspeed_ast2500_romulus_types[] =3D { { .name =3D MACHINE_TYPE_NAME("romulus-bmc"), .parent =3D TYPE_ASPEED_MACHINE, + .is_available =3D target_is_base_arm, .class_init =3D aspeed_machine_romulus_class_init, } }; diff --git a/hw/arm/aspeed_ast2500_supermicro-x11spi.c b/hw/arm/aspeed_ast2= 500_supermicro-x11spi.c index 5a7e49d6ccd..9e5e8c4246c 100644 --- a/hw/arm/aspeed_ast2500_supermicro-x11spi.c +++ b/hw/arm/aspeed_ast2500_supermicro-x11spi.c @@ -68,6 +68,7 @@ static const TypeInfo aspeed_ast2500_supermicro_x11spi_ty= pes[] =3D { { .name =3D MACHINE_TYPE_NAME("supermicro-x11spi-bmc"), .parent =3D TYPE_ASPEED_MACHINE, + .is_available =3D target_is_base_arm, .class_init =3D aspeed_machine_supermicro_x11spi_bmc_class_init, } }; diff --git a/hw/arm/aspeed_ast2500_tiogapass.c b/hw/arm/aspeed_ast2500_tiog= apass.c index 6cb567526c4..d9ecc98f96f 100644 --- a/hw/arm/aspeed_ast2500_tiogapass.c +++ b/hw/arm/aspeed_ast2500_tiogapass.c @@ -81,6 +81,7 @@ static const TypeInfo aspeed_ast2500_tiogapass_types[] = =3D { { .name =3D MACHINE_TYPE_NAME("tiogapass-bmc"), .parent =3D TYPE_ASPEED_MACHINE, + .is_available =3D target_is_base_arm, .class_init =3D aspeed_machine_tiogapass_class_init, } }; diff --git a/hw/arm/aspeed_ast2500_witherspoon.c b/hw/arm/aspeed_ast2500_wi= therspoon.c index 26ddb673470..e2bf25ee512 100644 --- a/hw/arm/aspeed_ast2500_witherspoon.c +++ b/hw/arm/aspeed_ast2500_witherspoon.c @@ -103,6 +103,7 @@ static const TypeInfo aspeed_ast2500_witherspoon_types[= ] =3D { { .name =3D MACHINE_TYPE_NAME("witherspoon-bmc"), .parent =3D TYPE_ASPEED_MACHINE, + .is_available =3D target_is_base_arm, .class_init =3D aspeed_machine_witherspoon_class_init, } }; diff --git a/hw/arm/aspeed_ast2500_yosemitev2.c b/hw/arm/aspeed_ast2500_yos= emitev2.c index 3ba1ed5f6fa..71375dbacd0 100644 --- a/hw/arm/aspeed_ast2500_yosemitev2.c +++ b/hw/arm/aspeed_ast2500_yosemitev2.c @@ -82,6 +82,7 @@ static const TypeInfo aspeed_ast2500_yosemitev2_types[] = =3D { { .name =3D MACHINE_TYPE_NAME("yosemitev2-bmc"), .parent =3D TYPE_ASPEED_MACHINE, + .is_available =3D target_is_base_arm, .class_init =3D aspeed_machine_yosemitev2_class_init, } }; diff --git a/hw/arm/aspeed_ast2600_anacapa.c b/hw/arm/aspeed_ast2600_anacap= a.c index 25578db5894..0d81ba069d5 100644 --- a/hw/arm/aspeed_ast2600_anacapa.c +++ b/hw/arm/aspeed_ast2600_anacapa.c @@ -366,6 +366,7 @@ static const TypeInfo aspeed_ast2600_anacapa_types[] = =3D { { .name =3D MACHINE_TYPE_NAME("anacapa-bmc"), .parent =3D TYPE_ASPEED_MACHINE, + .is_available =3D target_is_base_arm, .class_init =3D aspeed_machine_anacapa_class_init, } }; diff --git a/hw/arm/aspeed_ast2600_bletchley.c b/hw/arm/aspeed_ast2600_blet= chley.c index 6fa606c047e..abe59887d8f 100644 --- a/hw/arm/aspeed_ast2600_bletchley.c +++ b/hw/arm/aspeed_ast2600_bletchley.c @@ -88,6 +88,7 @@ static const TypeInfo aspeed_ast2600_bletchley_types[] = =3D { { .name =3D MACHINE_TYPE_NAME("bletchley-bmc"), .parent =3D TYPE_ASPEED_MACHINE, + .is_available =3D target_is_base_arm, .class_init =3D aspeed_machine_bletchley_class_init, } }; diff --git a/hw/arm/aspeed_ast2600_catalina.c b/hw/arm/aspeed_ast2600_catal= ina.c index 4f2b396f6f0..c98dd587f74 100644 --- a/hw/arm/aspeed_ast2600_catalina.c +++ b/hw/arm/aspeed_ast2600_catalina.c @@ -672,6 +672,7 @@ static const TypeInfo aspeed_ast2600_catalina_types[] = =3D { { .name =3D MACHINE_TYPE_NAME("catalina-bmc"), .parent =3D TYPE_ASPEED_MACHINE, + .is_available =3D target_is_base_arm, .class_init =3D aspeed_machine_catalina_class_init, } }; diff --git a/hw/arm/aspeed_ast2600_evb.c b/hw/arm/aspeed_ast2600_evb.c index 8a17c4453e9..b3930d13a7a 100644 --- a/hw/arm/aspeed_ast2600_evb.c +++ b/hw/arm/aspeed_ast2600_evb.c @@ -56,6 +56,7 @@ static const TypeInfo aspeed_ast2600_evb_types[] =3D { { .name =3D MACHINE_TYPE_NAME("ast2600-evb"), .parent =3D TYPE_ASPEED_MACHINE, + .is_available =3D target_is_base_arm, .class_init =3D aspeed_machine_ast2600_evb_class_init, } }; diff --git a/hw/arm/aspeed_ast2600_fby35.c b/hw/arm/aspeed_ast2600_fby35.c index 28c9c143d88..9c180470883 100644 --- a/hw/arm/aspeed_ast2600_fby35.c +++ b/hw/arm/aspeed_ast2600_fby35.c @@ -169,6 +169,7 @@ static const TypeInfo aspeed_ast2600_fby35_types[] =3D { { .name =3D MACHINE_TYPE_NAME("fby35-bmc"), .parent =3D MACHINE_TYPE_NAME("ast2600-evb"), + .is_available =3D target_is_base_arm, .class_init =3D aspeed_machine_fby35_class_init, } }; diff --git a/hw/arm/aspeed_ast2600_fuji.c b/hw/arm/aspeed_ast2600_fuji.c index 08d809b2fd9..6fc9dd7a2e6 100644 --- a/hw/arm/aspeed_ast2600_fuji.c +++ b/hw/arm/aspeed_ast2600_fuji.c @@ -129,6 +129,7 @@ static const TypeInfo aspeed_ast2600_fuji_types[] =3D { { .name =3D MACHINE_TYPE_NAME("fuji-bmc"), .parent =3D TYPE_ASPEED_MACHINE, + .is_available =3D target_is_base_arm, .class_init =3D aspeed_machine_fuji_class_init, } }; diff --git a/hw/arm/aspeed_ast2600_gb200nvl.c b/hw/arm/aspeed_ast2600_gb200= nvl.c index c9c0b6cb6e4..1b52cd42876 100644 --- a/hw/arm/aspeed_ast2600_gb200nvl.c +++ b/hw/arm/aspeed_ast2600_gb200nvl.c @@ -102,6 +102,7 @@ static const TypeInfo aspeed_ast2600_gb200nvl_types[] = =3D { { .name =3D MACHINE_TYPE_NAME("gb200nvl-bmc"), .parent =3D TYPE_ASPEED_MACHINE, + .is_available =3D target_is_base_arm, .class_init =3D aspeed_machine_gb200nvl_class_init, } }; diff --git a/hw/arm/aspeed_ast2600_rainier.c b/hw/arm/aspeed_ast2600_rainie= r.c index 43a8f01a9e7..812c801a095 100644 --- a/hw/arm/aspeed_ast2600_rainier.c +++ b/hw/arm/aspeed_ast2600_rainier.c @@ -189,6 +189,7 @@ static const TypeInfo aspeed_ast2600_rainier_types[] = =3D { { .name =3D MACHINE_TYPE_NAME("rainier-bmc"), .parent =3D TYPE_ASPEED_MACHINE, + .is_available =3D target_is_base_arm, .class_init =3D aspeed_machine_rainier_class_init, } }; diff --git a/hw/arm/aspeed_ast2600_sanmiguel.c b/hw/arm/aspeed_ast2600_sanm= iguel.c index 345a9c94167..b0979f3815f 100644 --- a/hw/arm/aspeed_ast2600_sanmiguel.c +++ b/hw/arm/aspeed_ast2600_sanmiguel.c @@ -396,6 +396,7 @@ static const TypeInfo aspeed_ast2600_sanmiguel_types[] = =3D { { .name =3D MACHINE_TYPE_NAME("sanmiguel-bmc"), .parent =3D TYPE_ASPEED_MACHINE, + .is_available =3D target_is_base_arm, .class_init =3D aspeed_machine_sanmiguel_class_init, } }; diff --git a/hw/arm/b-l475e-iot01a.c b/hw/arm/b-l475e-iot01a.c index de19212ab85..f7322eb8de8 100644 --- a/hw/arm/b-l475e-iot01a.c +++ b/hw/arm/b-l475e-iot01a.c @@ -129,6 +129,7 @@ static const TypeInfo bl475e_machine_type[] =3D { { .name =3D TYPE_B_L475E_IOT01A, .parent =3D TYPE_MACHINE, + .is_available =3D target_is_base_arm, .instance_size =3D sizeof(Bl475eMachineState), .class_init =3D bl475e_machine_init, } diff --git a/hw/arm/collie.c b/hw/arm/collie.c index ca6b3addb7b..0c81feaea16 100644 --- a/hw/arm/collie.c +++ b/hw/arm/collie.c @@ -83,6 +83,7 @@ static const TypeInfo collie_machine_typeinfo =3D { .name =3D TYPE_COLLIE_MACHINE, .parent =3D TYPE_MACHINE, .class_init =3D collie_machine_class_init, + .is_available =3D target_is_base_arm, .instance_size =3D sizeof(CollieMachineState), }; =20 diff --git a/hw/arm/exynos4_boards.c b/hw/arm/exynos4_boards.c index 78632877df8..6927bee5a33 100644 --- a/hw/arm/exynos4_boards.c +++ b/hw/arm/exynos4_boards.c @@ -168,6 +168,7 @@ static const TypeInfo nuri_type =3D { .name =3D MACHINE_TYPE_NAME("nuri"), .parent =3D TYPE_MACHINE, .class_init =3D nuri_class_init, + .is_available =3D target_is_base_arm, }; =20 static void smdkc210_class_init(ObjectClass *oc, const void *data) @@ -188,6 +189,7 @@ static const TypeInfo smdkc210_type =3D { .name =3D MACHINE_TYPE_NAME("smdkc210"), .parent =3D TYPE_MACHINE, .class_init =3D smdkc210_class_init, + .is_available =3D target_is_base_arm, }; =20 static void exynos4_machines_init(void) diff --git a/hw/arm/microbit.c b/hw/arm/microbit.c index c1a3f6903fe..d6e52c1865a 100644 --- a/hw/arm/microbit.c +++ b/hw/arm/microbit.c @@ -74,6 +74,7 @@ static const TypeInfo microbit_info =3D { .parent =3D TYPE_MACHINE, .instance_size =3D sizeof(MicrobitMachineState), .class_init =3D microbit_machine_class_init, + .is_available =3D target_is_base_arm, }; =20 static void microbit_machine_init(void) diff --git a/hw/arm/mps2-tz.c b/hw/arm/mps2-tz.c index 7f41a74df1a..08d875dc373 100644 --- a/hw/arm/mps2-tz.c +++ b/hw/arm/mps2-tz.c @@ -1621,30 +1621,35 @@ static const TypeInfo mps2tz_an505_info =3D { .name =3D TYPE_MPS2TZ_AN505_MACHINE, .parent =3D TYPE_MPS2TZ_MACHINE, .class_init =3D mps2tz_an505_class_init, + .is_available =3D target_is_base_arm, }; =20 static const TypeInfo mps2tz_an521_info =3D { .name =3D TYPE_MPS2TZ_AN521_MACHINE, .parent =3D TYPE_MPS2TZ_MACHINE, .class_init =3D mps2tz_an521_class_init, + .is_available =3D target_is_base_arm, }; =20 static const TypeInfo mps3tz_an524_info =3D { .name =3D TYPE_MPS3TZ_AN524_MACHINE, .parent =3D TYPE_MPS2TZ_MACHINE, .class_init =3D mps3tz_an524_class_init, + .is_available =3D target_is_base_arm, }; =20 static const TypeInfo mps3tz_an547_info =3D { .name =3D TYPE_MPS3TZ_AN547_MACHINE, .parent =3D TYPE_MPS2TZ_MACHINE, .class_init =3D mps3tz_an547_class_init, + .is_available =3D target_is_base_arm, }; =20 static const TypeInfo mps3tz_an555_info =3D { .name =3D TYPE_MPS3TZ_AN555_MACHINE, .parent =3D TYPE_MPS2TZ_MACHINE, .class_init =3D mps3tz_an555_class_init, + .is_available =3D target_is_base_arm, }; =20 static void mps2tz_machine_init(void) diff --git a/hw/arm/mps2.c b/hw/arm/mps2.c index 35d867328a9..c38d3f5ae6a 100644 --- a/hw/arm/mps2.c +++ b/hw/arm/mps2.c @@ -567,24 +567,28 @@ static const TypeInfo mps2_an385_info =3D { .name =3D TYPE_MPS2_AN385_MACHINE, .parent =3D TYPE_MPS2_MACHINE, .class_init =3D mps2_an385_class_init, + .is_available =3D target_is_base_arm, }; =20 static const TypeInfo mps2_an386_info =3D { .name =3D TYPE_MPS2_AN386_MACHINE, .parent =3D TYPE_MPS2_MACHINE, .class_init =3D mps2_an386_class_init, + .is_available =3D target_is_base_arm, }; =20 static const TypeInfo mps2_an500_info =3D { .name =3D TYPE_MPS2_AN500_MACHINE, .parent =3D TYPE_MPS2_MACHINE, .class_init =3D mps2_an500_class_init, + .is_available =3D target_is_base_arm, }; =20 static const TypeInfo mps2_an511_info =3D { .name =3D TYPE_MPS2_AN511_MACHINE, .parent =3D TYPE_MPS2_MACHINE, .class_init =3D mps2_an511_class_init, + .is_available =3D target_is_base_arm, }; =20 static void mps2_machine_init(void) diff --git a/hw/arm/mps3r.c b/hw/arm/mps3r.c index 4bd5d83d567..320eb518b79 100644 --- a/hw/arm/mps3r.c +++ b/hw/arm/mps3r.c @@ -626,6 +626,7 @@ static const TypeInfo mps3r_machine_types[] =3D { .name =3D TYPE_MPS3R_AN536_MACHINE, .parent =3D TYPE_MPS3R_MACHINE, .class_init =3D mps3r_an536_class_init, + .is_available =3D target_is_base_arm, }, }; =20 diff --git a/hw/arm/musca.c b/hw/arm/musca.c index 571bee1b72b..ebdebcd4495 100644 --- a/hw/arm/musca.c +++ b/hw/arm/musca.c @@ -657,12 +657,14 @@ static const TypeInfo musca_a_info =3D { .name =3D TYPE_MUSCA_A_MACHINE, .parent =3D TYPE_MUSCA_MACHINE, .class_init =3D musca_a_class_init, + .is_available =3D target_is_base_arm, }; =20 static const TypeInfo musca_b1_info =3D { .name =3D TYPE_MUSCA_B1_MACHINE, .parent =3D TYPE_MUSCA_MACHINE, .class_init =3D musca_b1_class_init, + .is_available =3D target_is_base_arm, }; =20 static void musca_machine_init(void) diff --git a/hw/arm/npcm7xx_boards.c b/hw/arm/npcm7xx_boards.c index 9c526a26839..6aa29b4d2a9 100644 --- a/hw/arm/npcm7xx_boards.c +++ b/hw/arm/npcm7xx_boards.c @@ -549,22 +549,27 @@ static const TypeInfo npcm7xx_machine_types[] =3D { .name =3D MACHINE_TYPE_NAME("npcm750-evb"), .parent =3D TYPE_NPCM7XX_MACHINE, .class_init =3D npcm750_evb_machine_class_init, + .is_available =3D target_is_base_arm, }, { .name =3D MACHINE_TYPE_NAME("quanta-gsj"), .parent =3D TYPE_NPCM7XX_MACHINE, .class_init =3D gsj_machine_class_init, + .is_available =3D target_is_base_arm, }, { .name =3D MACHINE_TYPE_NAME("quanta-gbs-bmc"), .parent =3D TYPE_NPCM7XX_MACHINE, .class_init =3D gbs_bmc_machine_class_init, + .is_available =3D target_is_base_arm, }, { .name =3D MACHINE_TYPE_NAME("kudo-bmc"), .parent =3D TYPE_NPCM7XX_MACHINE, .class_init =3D kudo_bmc_machine_class_init, + .is_available =3D target_is_base_arm, }, { .name =3D MACHINE_TYPE_NAME("mori-bmc"), .parent =3D TYPE_NPCM7XX_MACHINE, .class_init =3D mori_bmc_machine_class_init, + .is_available =3D target_is_base_arm, }, }; =20 diff --git a/hw/arm/omap_sx1.c b/hw/arm/omap_sx1.c index a7e469ea6a3..5d2aaacbbe4 100644 --- a/hw/arm/omap_sx1.c +++ b/hw/arm/omap_sx1.c @@ -224,6 +224,7 @@ static const TypeInfo sx1_machine_v2_type =3D { .name =3D MACHINE_TYPE_NAME("sx1"), .parent =3D TYPE_MACHINE, .class_init =3D sx1_machine_v2_class_init, + .is_available =3D target_is_base_arm, .instance_size =3D sizeof(Sx1MachineState), }; =20 @@ -244,6 +245,7 @@ static const TypeInfo sx1_machine_v1_type =3D { .name =3D MACHINE_TYPE_NAME("sx1-v1"), .parent =3D TYPE_MACHINE, .class_init =3D sx1_machine_v1_class_init, + .is_available =3D target_is_base_arm, .instance_size =3D sizeof(Sx1MachineState), }; =20 diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c index 22b06c6ca22..7ec650eada7 100644 --- a/hw/arm/raspi.c +++ b/hw/arm/raspi.c @@ -391,14 +391,17 @@ static const TypeInfo raspi_machine_types[] =3D { .name =3D MACHINE_TYPE_NAME("raspi0"), .parent =3D TYPE_RASPI_MACHINE, .class_init =3D raspi0_machine_class_init, + .is_available =3D target_is_base_arm, }, { .name =3D MACHINE_TYPE_NAME("raspi1ap"), .parent =3D TYPE_RASPI_MACHINE, .class_init =3D raspi1ap_machine_class_init, + .is_available =3D target_is_base_arm, }, { .name =3D MACHINE_TYPE_NAME("raspi2b"), .parent =3D TYPE_RASPI_MACHINE, .class_init =3D raspi2b_machine_class_init, + .is_available =3D target_is_base_arm, }, { .name =3D MACHINE_TYPE_NAME("raspi3ap"), .parent =3D TYPE_RASPI_MACHINE, diff --git a/hw/arm/realview.c b/hw/arm/realview.c index ceba0331b08..4cffa725d60 100644 --- a/hw/arm/realview.c +++ b/hw/arm/realview.c @@ -435,6 +435,7 @@ static const TypeInfo realview_eb_type =3D { .name =3D MACHINE_TYPE_NAME("realview-eb"), .parent =3D TYPE_MACHINE, .class_init =3D realview_eb_class_init, + .is_available =3D target_is_base_arm, .instance_size =3D sizeof(RealViewMachineState), }; =20 @@ -457,6 +458,7 @@ static const TypeInfo realview_eb_mpcore_type =3D { .name =3D MACHINE_TYPE_NAME("realview-eb-mpcore"), .parent =3D TYPE_MACHINE, .class_init =3D realview_eb_mpcore_class_init, + .is_available =3D target_is_base_arm, .instance_size =3D sizeof(RealViewMachineState), }; =20 @@ -477,6 +479,7 @@ static const TypeInfo realview_pb_a8_type =3D { .name =3D MACHINE_TYPE_NAME("realview-pb-a8"), .parent =3D TYPE_MACHINE, .class_init =3D realview_pb_a8_class_init, + .is_available =3D target_is_base_arm, .instance_size =3D sizeof(RealViewMachineState), }; =20 @@ -498,6 +501,7 @@ static const TypeInfo realview_pbx_a9_type =3D { .name =3D MACHINE_TYPE_NAME("realview-pbx-a9"), .parent =3D TYPE_MACHINE, .class_init =3D realview_pbx_a9_class_init, + .is_available =3D target_is_base_arm, .instance_size =3D sizeof(RealViewMachineState), }; =20 diff --git a/hw/arm/sabrelite.c b/hw/arm/sabrelite.c index 05dfabd9376..e8aa9f41925 100644 --- a/hw/arm/sabrelite.c +++ b/hw/arm/sabrelite.c @@ -151,6 +151,7 @@ static const TypeInfo sabrelite_machine_init_typeinfo = =3D { .instance_init =3D sabrelite_machine_instance_init, .instance_size =3D sizeof(SabreliteMachineState), .abstract =3D false, + .is_available =3D target_is_base_arm, }; =20 static void sabrelite_machine_init_register_types(void) diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c index f41315e1928..ec4faf26055 100644 --- a/hw/arm/stellaris.c +++ b/hw/arm/stellaris.c @@ -1427,6 +1427,7 @@ static const TypeInfo lm3s811evb_type =3D { .name =3D MACHINE_TYPE_NAME("lm3s811evb"), .parent =3D TYPE_MACHINE, .class_init =3D lm3s811evb_class_init, + .is_available =3D target_is_base_arm, }; =20 /* @@ -1448,6 +1449,7 @@ static const TypeInfo lm3s6965evb_type =3D { .name =3D MACHINE_TYPE_NAME("lm3s6965evb"), .parent =3D TYPE_MACHINE, .class_init =3D lm3s6965evb_class_init, + .is_available =3D target_is_base_arm, }; =20 static void stellaris_machine_init(void) diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c index f94bf96599e..99ff59ca418 100644 --- a/hw/arm/versatilepb.c +++ b/hw/arm/versatilepb.c @@ -437,6 +437,7 @@ static const TypeInfo versatilepb_type =3D { .parent =3D TYPE_MACHINE, .class_init =3D versatilepb_class_init, .instance_size =3D sizeof(VersatileMachineState), + .is_available =3D target_is_base_arm, }; =20 static void versatileab_class_init(ObjectClass *oc, const void *data) @@ -459,6 +460,7 @@ static const TypeInfo versatileab_type =3D { .parent =3D TYPE_MACHINE, .class_init =3D versatileab_class_init, .instance_size =3D sizeof(VersatileMachineState), + .is_available =3D target_is_base_arm, }; =20 static void versatile_machine_init(void) diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c index a4328ec74bd..a2ad870af85 100644 --- a/hw/arm/vexpress.c +++ b/hw/arm/vexpress.c @@ -842,6 +842,7 @@ static const TypeInfo vexpress_a9_info =3D { .parent =3D TYPE_VEXPRESS_MACHINE, .class_init =3D vexpress_a9_class_init, .instance_init =3D vexpress_a9_instance_init, + .is_available =3D target_is_base_arm, }; =20 static const TypeInfo vexpress_a15_info =3D { @@ -849,6 +850,7 @@ static const TypeInfo vexpress_a15_info =3D { .parent =3D TYPE_VEXPRESS_MACHINE, .class_init =3D vexpress_a15_class_init, .instance_init =3D vexpress_a15_instance_init, + .is_available =3D target_is_base_arm, }; =20 static void vexpress_machine_init(void) diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c index c1897ab1cf3..bc34cadfd11 100644 --- a/hw/arm/xilinx_zynq.c +++ b/hw/arm/xilinx_zynq.c @@ -477,6 +477,7 @@ static const TypeInfo zynq_machine_type =3D { .name =3D TYPE_ZYNQ_MACHINE, .parent =3D TYPE_MACHINE, .class_init =3D zynq_machine_class_init, + .is_available =3D target_is_base_arm, .instance_size =3D sizeof(ZynqMachineState), }; =20 --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406572; cv=none; d=zohomail.com; s=zohoarc; b=clXWIb2EGHyMJcHm+YlGVAGxg+HAeOSJMdW0vrDFXWtzTkt9ochjzy5pr3tVo0o356abfc94ba+iNyuBnE1NSJblF5/zSKrFYnJt+WCRUDQllrxBLwSmN5N7Y3w0vO40F0KPB2xfba8WxajRTv8gw1/FXhAxVO6SiOxbX6RejFo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406572; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=1Q4keI4TP8YVH/qoyQSJo+GdMMgFJJFdW1/lFaTcTQw=; b=DDUMxqGbC/EvR6mLlcnpgT28JchWCkeuhaTPrbKyXRRXCKt4LlifD/3Fp5+54+MXQr9EGkmjqs889tgt8d4VnAB141BbrBl/6lKPtHUv71eNwd0ZqBw/zuJNl+UN6jMaudkPkAi9sM4HmSQUUscIRAotruDgUJgPhGDSGJ56lzM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1790406572557819.0415209277818; Sat, 26 Sep 2026 00:09:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMWk-0003P3-US; Sat, 26 Sep 2026 03:08:55 -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 1xAMSe-000603-7L for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:46 -0400 Received: from mail-dy2-x17.google.com ([2607:f8b0:4864:36::17]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMSc-0000li-2I for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:39 -0400 Received: by mail-dy2-x17.google.com with SMTP id 5a478bee46e88-3413069aa25so879575eec.0 for ; Sat, 26 Sep 2026 00:04:37 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.04.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:04:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406276; x=1791011076; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=1Q4keI4TP8YVH/qoyQSJo+GdMMgFJJFdW1/lFaTcTQw=; b=PYl0VnY3ctOPDUMbs/Vbl7wQGOIU86ueoPCGuzzEKQhOJGq2qqwoshOGkljTeuZetB ujk7tLI5gplG1RkjF4JhDCSyPE31lkFYfTbJsRMsTbTQWb7lWHMyM+AU+LWH+DRVcVOF oB9w+YPMcVbIU7HkgT9ujYD5MGjSHlh6QGuyin+tC++lZUmim3fTtDs+L+FlHEtIh6mA igiMIV/wb1SKLRXAnHx2Ic1u+8zv3P3wLw3bo1lHRutMTjFnKOFxckNsrv4nTj27PYE0 RPUQMuHI2NHYvfexJeCdRJFqjo92F2ZQ44rBo7QZqtJnwgAyZ+icNtpxazPWCofZiiIa aL3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406276; x=1791011076; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=1Q4keI4TP8YVH/qoyQSJo+GdMMgFJJFdW1/lFaTcTQw=; b=XsdALlH0B1uCpEKwwPpZy30LcoMXvIlwwVea2t/3DH0TPqCNA8Ril5JT3Fay0MePtZ a5Zl50Im0IfMxH1SvUEA7Ye2O2dNbDBjlPmXjMzZA+U+9ThVJpsCiWTaIaJs11ny8lRI vjySd9sn36I4HstkyBeKXE/QXvUDiyRaQIhIz5bWnj7vEB1vaETdRlZ5E1hnpTx3CTRV l1wVeMhj9fcyVn9Yku/v7TtU8Bt9UQkpz5rfYQdex9drBZ26CPLiYZ61nJ6tCB3hlN59 GQfpUZCBgTNEVIDTCDjQdhRel3lk1D5Hmeq4at1jA296Wup1S7FfGukfF8Y9HMLAEbaS /Jww== X-Gm-Message-State: AFuF++lEn1EM6+uGHES16d05eX7fV2nI9YlRdAmX67OYDjiEKRmv0mC2 RiSVzHsZGRK9t1mdncgWYbwMPPjqdphKVz70sH+K5bALNEB3x2A217aF4swUzWcg X-Gm-Gg: AYBFou3ZCOB88L+dtWL7sngxGzr8LjSLsvF2SQVvLvwK+viI6vJaiUhSSmv1ZhWuFH3 jdk/eYSZDGl2xKelgWeDZSLeBwAF1w2bI36bF52VAXleN/3R8wTNFhJjFMVvJP2ochFZAUq8O9j VJ97DF//Q60kyGRxYd7NiPKPNawqXPeZmg9yZlEvi/6p5lhtEVJ7ciifjne0g1O1RjKVVR86scF AVcWhUJsqoPxwaQG/jEU2QERFbjvvEEjJmdSIdHcEzlewYdjfl026FIXXdV7KV8KjwiBRdC+I4j DUw+psJ72R4Kf/jhSMfgBhhPQbSMPJiU8hSw2L8LN2ymgGOmJ4/TjvFG3NZ684OOgcEj97eaCFI iDfbBvQCZAkZVxfyvb6heRLgskp/i+TVIi8AA6mmt+Nyw2l+4SVAvpnhsB6k2PyQlrub9924sbz NDFGwch6/Hl3RRTbsp58lL7fSRr84EOUJhxEbiCPzRiHqe5bkXbPu3VaFAbe27DxjKjPW71Zssp 3kE/b3QSkYL2mEGYg8U8bxVcLTdgeoM6Qv1eHyduA== X-Received: by 2002:a05:693c:8807:20b0:33b:e264:362a with SMTP id 5a478bee46e88-3427169e0acmr2042711eec.13.1790406276353; Sat, 26 Sep 2026 00:04:36 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 54/55] hw/arm: set aarch64-only machine TypeInfo.is_available Date: Sat, 26 Sep 2026 15:00:53 +0800 Message-ID: <20260926070057.1234-55-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::17; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x17.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1790406573802158500 Content-Type: text/plain; charset="utf-8" Set TypeInfo.is_available to target_is_aarch64 on sbsa-ref, versal leaves, xlnx-zcu102, imx8mp-evk, npcm845, axiado-scm3003, and ARM xen-pvh. Signed-off-by: Yonggang Luo --- hw/arm/ax3000-evk.c | 1 + hw/arm/imx8mp-evk.c | 1 + hw/arm/npcm8xx_boards.c | 1 + hw/arm/sbsa-ref.c | 1 + hw/arm/xen-pvh.c | 1 + hw/arm/xlnx-versal-virt.c | 2 ++ hw/arm/xlnx-zcu102.c | 1 + 7 files changed, 8 insertions(+) diff --git a/hw/arm/ax3000-evk.c b/hw/arm/ax3000-evk.c index a1708488710..0c3e53e4e7d 100644 --- a/hw/arm/ax3000-evk.c +++ b/hw/arm/ax3000-evk.c @@ -21,6 +21,7 @@ static const TypeInfo ax3000_evk_types[] =3D { .name =3D MACHINE_TYPE_NAME("axiado-scm3003"), .parent =3D TYPE_AX3000_MACHINE, .class_init =3D axiado_scm3003_class_init, + .is_available =3D target_is_aarch64, } }; =20 diff --git a/hw/arm/imx8mp-evk.c b/hw/arm/imx8mp-evk.c index 3f376f86d91..bac2f9cbedf 100644 --- a/hw/arm/imx8mp-evk.c +++ b/hw/arm/imx8mp-evk.c @@ -159,6 +159,7 @@ static const TypeInfo imx8mp_evk_machine_types[] =3D { .name =3D TYPE_IMX8MPEVK_MACHINE, .parent =3D TYPE_MACHINE, .class_init =3D imx8mp_evk_machine_class_init, + .is_available =3D target_is_aarch64, .instance_init =3D imx8mp_evk_machine_init, .instance_size =3D sizeof(FslImx8mpEvkState), }, diff --git a/hw/arm/npcm8xx_boards.c b/hw/arm/npcm8xx_boards.c index 4b3af165034..67b10843d88 100644 --- a/hw/arm/npcm8xx_boards.c +++ b/hw/arm/npcm8xx_boards.c @@ -248,6 +248,7 @@ static const TypeInfo npcm8xx_machine_types[] =3D { .name =3D MACHINE_TYPE_NAME("npcm845-evb"), .parent =3D TYPE_NPCM8XX_MACHINE, .class_init =3D npcm845_evb_machine_class_init, + .is_available =3D target_is_aarch64, }, }; =20 diff --git a/hw/arm/sbsa-ref.c b/hw/arm/sbsa-ref.c index 158b461eb48..426fa914e80 100644 --- a/hw/arm/sbsa-ref.c +++ b/hw/arm/sbsa-ref.c @@ -945,6 +945,7 @@ static const TypeInfo sbsa_ref_info =3D { .instance_finalize =3D sbsa_ref_instance_finalize, .class_init =3D sbsa_ref_class_init, .instance_size =3D sizeof(SBSAMachineState), + .is_available =3D target_is_aarch64, }; =20 static void sbsa_ref_machine_init(void) diff --git a/hw/arm/xen-pvh.c b/hw/arm/xen-pvh.c index f05956c1662..d9515f23e3b 100644 --- a/hw/arm/xen-pvh.c +++ b/hw/arm/xen-pvh.c @@ -95,6 +95,7 @@ static const TypeInfo xen_arm_machine_type =3D { .class_init =3D xen_arm_machine_class_init, .instance_size =3D sizeof(XenPVHMachineState), .instance_init =3D xen_arm_instance_init, + .is_available =3D target_is_aarch64, }; =20 static void xen_arm_machine_register_types(void) diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 4018f2bf7d1..c02aa011916 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -401,12 +401,14 @@ static const TypeInfo versal_virt_machine_init_typein= fo =3D { .name =3D TYPE_XLNX_VERSAL_VIRT_MACHINE, .parent =3D TYPE_XLNX_VERSAL_VIRT_BASE_MACHINE, .class_init =3D versal_virt_machine_class_init, + .is_available =3D target_is_aarch64, }; =20 static const TypeInfo versal2_virt_machine_init_typeinfo =3D { .name =3D TYPE_XLNX_VERSAL2_VIRT_MACHINE, .parent =3D TYPE_XLNX_VERSAL_VIRT_BASE_MACHINE, .class_init =3D versal2_virt_machine_class_init, + .is_available =3D target_is_aarch64, }; =20 static void versal_virt_machine_init_register_types(void) diff --git a/hw/arm/xlnx-zcu102.c b/hw/arm/xlnx-zcu102.c index bb596218540..03b03b8317c 100644 --- a/hw/arm/xlnx-zcu102.c +++ b/hw/arm/xlnx-zcu102.c @@ -302,6 +302,7 @@ static const TypeInfo xlnx_zcu102_machine_init_typeinfo= =3D { .class_init =3D xlnx_zcu102_machine_class_init, .instance_init =3D xlnx_zcu102_machine_instance_init, .instance_size =3D sizeof(XlnxZCU102), + .is_available =3D target_is_aarch64, }; =20 static void xlnx_zcu102_machine_init_register_types(void) --=20 2.52.0.windows.1 From nobody Sat Sep 26 19:16:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1790406663; cv=none; d=zohomail.com; s=zohoarc; b=B6XRz3avfQ39c4aTAstYpRBI9AQ+CrSbU8BEUTO1a2dOwl3ATxw0vtUwKQLYiVzryB+aEfaSHVh31PpqU9NxBMEduHEvu9NhZA3+O2EwqLI8WhzMPVHHPtbGX//1uKBR11rw5rs8Nn6La5dbP08WUl1/YCd+4q4uJrhoTBq6WTI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1790406663; h=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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=21fhjDvzKpky6Ku2sIynCg3uBBBTvKEqFg0qhvihs/4=; b=iiryRRmJKwao4bv/J46hWA/HgCjYiXJQS1P2Sb/f5xIOHqFe2AdTEttqtdWjawhUoHbCgK4yhX/YbfyIYn5ZLwtg3HyscS7TFw3nw5aqJChy93OYmhE97JDIHURjFFIuXp9opygOJeOx7THzz8MqOA7Cga1yZaEr9IhsjmsM6Uk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 179040666306483.88981793970015; Sat, 26 Sep 2026 00:11:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xAMWM-00032O-IQ; Sat, 26 Sep 2026 03:08:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xAMSk-00069W-Kp for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:50 -0400 Received: from mail-dy2-x0e.google.com ([2607:f8b0:4864:36::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xAMSg-0000mM-Pl for qemu-devel@nongnu.org; Sat, 26 Sep 2026 03:04:46 -0400 Received: by mail-dy2-x0e.google.com with SMTP id 5a478bee46e88-341fe27b718so1360879eec.0 for ; Sat, 26 Sep 2026 00:04:42 -0700 (PDT) Received: from WIN-BH9M8FJACR9 ([103.94.185.75]) by smtp.googlemail.com with ESMTPSA id 5a478bee46e88-34145c166cfsm10615141eec.28.2026.09.26.00.04.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Sep 2026 00:04:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790406281; x=1791011081; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=21fhjDvzKpky6Ku2sIynCg3uBBBTvKEqFg0qhvihs/4=; b=e6+0J5uBddHayJQw9IpRPeNOjf+b6lxuBcX+AjEVcbLGqX8zksP9zflEVwERDnENl+ Nb7hduXsHyJzj7O7c9/tceOUgF1zVk3CKvwA8aB5HLbY3wT2KgwKas2xc3IUZ/OTwtRl hCVreQ/VP5D6pmwqq4BEzcazVJEt8Io5x4Ub7VSI/7mxi+jX/65NxvBcf7a9t1P6ZGA0 S/s/4b3m5EZYnrOn5tL5QtVzJm9oLRIGpwKD8J7CWIdkCJN/cIWT7fcfHKbzWSlCgvM/ kglihz57rlZXLoy9gwLy0ZgZF9zzpRuTbVI8N5L9TumNv+tvpq4JuzCRoZfq4c9KoQiY 3rmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790406281; x=1791011081; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=21fhjDvzKpky6Ku2sIynCg3uBBBTvKEqFg0qhvihs/4=; b=m+xl7tkEdZMcdrjWxPDq5Y0nYum8MMTe7UaKBO1jrPK8OAo1qTP0jD3/tY8Q9jG6am G4uDpDmGyFeTvW+cVjmht8VRZ/Q3BakYvd5gq4A3h1I+GdJtPCPlLONCsMhD7/7ad6Ce c1FI4IHFHWl4Pc2zipdTR8/H16fiefrXblqqaeL9Hj89Ze5tCpYMbVuxF1UQIQiP6Egy t1gCZjs2VLDxmdNl7IAsxwcBE8jWvqK7/9II9/QLdfWlLTDU5btrNeQCTVRVdInKUUKa eO90PfiuaUTErQl5NKoCIyKG1NZm7eIxkEfQ2JCbDV9Auyh+izrWBtpK6GCLXM5L7HHN SEJQ== X-Gm-Message-State: AFuF++nfjwj+Y6i6xnUMV9r2n4HQO8ADsIZqdLNu4n+nAspvAe0EXbfH 3XjbdyTUCphyIYnMcC9esbOYAkDuB074Z9Sao8AGWsMU+WR+YDTCtRB7wdPR+nhd X-Gm-Gg: AYBFou05oIwXy3L3uDotYcpFvnWTfLOVXh9oKv8qHpprVxLrKyCw0lwduCFEKB/tc5L Kz1Hk8z4LY0rOo2I4r45ekDMT7IJasZGrUHNgWBhkymM4ZuEDIlUZTvUABEBE9iBiNzNcdToMeQ ypRkXoG7IDdefSMOclewkN+ToEI6/PxoOpNquY4HNReaabsvcetFSiqekAVrX236talS7gAlC4e nDqxWivunHJvgl30MI4C7nAWRIbtFIBkAUpWiOn7q6Pf990JQMF4YbbRAUVRCiPq1twNY1MXPZf wGX3dUiKN8FzPrxa13oW2tvjNe0UUaaaRpJwKV2CHcHsHb8m0oxZUjm+UM5XJ4sswPPi38oAePa 87WQfdDuh0rkKKWmOhi2WYkENb6XLgMlR4BbHEbJAEreVAyvdocONV9f6iboMhu5b39y2KHtz4I 7h8bOyHROsLQCvNfkJ8qWt4pYN1EML6m4l3gOpvamHPfEEaycQqYmcLpxstqQB9J4f/LiYUXKrs rgsRBopdlxasKuqOA9itX6/Jh8JHxo= X-Received: by 2002:a05:7301:fd06:b0:342:94b:aa28 with SMTP id 5a478bee46e88-3427236effamr2094539eec.27.1790406280135; Sat, 26 Sep 2026 00:04:40 -0700 (PDT) From: Yonggang Luo To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , "Edgar E. Iglesias" , Pierrick Bouvier , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Alistair Francis , Peter Maydell , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PATCH v4 55/55] tests/qtest: cover combined qemu-system machines Date: Sat, 26 Sep 2026 15:00:54 +0800 Message-ID: <20260926070057.1234-56-luoyonggang@gmail.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260926070057.1234-1-luoyonggang@gmail.com> References: <20260926070057.1234-1-luoyonggang@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:36::e; envelope-from=luoyonggang@gmail.com; helo=mail-dy2-x0e.google.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, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1790406664224158500 Content-Type: text/plain; charset="utf-8" The combined qemu-system qtests check the linked machine list and arch-prefixed -M help and errors. -readconfig [machine] type uses arch:name, and a later bare -M keeps that prefix. The expected arches come from single_binary_targets, plus none and the none machine. Single-target binaries keep the historic -M cases. Signed-off-by: Yonggang Luo --- meson.build | 2 + .../qtest/machine-list-combined-targets.h.in | 4 + tests/qtest/machine-list-combined-test.c | 104 +++ tests/qtest/machine-option-test.c | 714 ++++++++++++++++++ tests/qtest/meson.build | 38 + 5 files changed, 862 insertions(+) create mode 100644 tests/qtest/machine-list-combined-targets.h.in create mode 100644 tests/qtest/machine-list-combined-test.c create mode 100644 tests/qtest/machine-option-test.c diff --git a/meson.build b/meson.build index 96f493cb746..085151d65f8 100644 --- a/meson.build +++ b/meson.build @@ -4294,6 +4294,7 @@ single_binary_bases =3D {} single_binary_deps =3D [] single_binary_crates =3D [] single_binary_available =3D false +single_binary_targets =3D [] =20 single_binary_supported_targets =3D [ 'aarch64-softmmu', @@ -4496,6 +4497,7 @@ foreach target : target_dirs single_binary_deps +=3D target_stubs single_binary_crates +=3D main_rs single_binary_available =3D true + single_binary_targets +=3D target_name endif execs =3D [{ 'name': 'qemu-system-' + target_name, diff --git a/tests/qtest/machine-list-combined-targets.h.in b/tests/qtest/m= achine-list-combined-targets.h.in new file mode 100644 index 00000000000..ede99c53762 --- /dev/null +++ b/tests/qtest/machine-list-combined-targets.h.in @@ -0,0 +1,4 @@ +/* Generated from configured single_binary_supported_targets. */ +static const char * const combined_targets[] =3D { +@COMBINED_TARGETS@ +}; diff --git a/tests/qtest/machine-list-combined-test.c b/tests/qtest/machine= -list-combined-test.c new file mode 100644 index 00000000000..90c4ae7b377 --- /dev/null +++ b/tests/qtest/machine-list-combined-test.c @@ -0,0 +1,104 @@ +/* + * Combined qemu-system machine list tests. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" + +#include "libqtest.h" +#include "qobject/qdict.h" +#include "qobject/qlist.h" +#include "qobject/qstring.h" + +#include "machine-list-test.inc.h" + +#include "machine-list-combined-targets.h" + +static bool qemu_binary_is_combined(void) +{ + const char *bin =3D qtest_qemu_binary(NULL); + + return g_str_has_suffix(bin, "qemu-system") || + g_str_has_suffix(bin, "qemu-system.exe"); +} + +static QList *query_targets(QTestState *qts) +{ + QDict *resp; + QList *list; + + resp =3D qtest_qmp(qts, "{'execute': 'query-targets'}"); + g_assert(qdict_haskey(resp, "return")); + list =3D qdict_get_qlist(resp, "return"); + qobject_ref(list); + qobject_unref(resp); + return list; +} + +static QDict *target_entry(QList *targets, const char *arch, + const char *endianness) +{ + const QListEntry *e; + + for (e =3D qlist_first(targets); e; e =3D qlist_next(e)) { + QDict *t =3D qobject_to(QDict, qlist_entry_obj(e)); + + if (!strcmp(qdict_get_str(t, "arch"), arch) && + !strcmp(qdict_get_str(t, "endianness"), endianness)) { + return t; + } + } + return NULL; +} + +static void test_combined_machine_list(void) +{ + QTestState *qts; + g_autoptr(QList) targets =3D NULL; + size_t i; + + qts =3D qtest_init("-nodefaults -M none"); + read_accel_flags(qts); + targets =3D query_targets(qts); + qtest_quit(qts); + + g_assert_cmpuint(qlist_size(targets), =3D=3D, + G_N_ELEMENTS(combined_targets) + 1); + for (i =3D 0; i < G_N_ELEMENTS(combined_targets); i++) { + const struct ShippedTarget *t =3D lookup_shipped_target(combined_t= argets[i]); + QDict *tgt; + + g_assert_nonnull(t); + tgt =3D target_entry(targets, t->arch, t->endianness); + g_assert_nonnull(tgt); + assert_name_list(qdict_get_qlist(tgt, "machines"), t->name, + t->machines, t->n_machines); + } + { + QDict *none =3D target_entry(targets, "none", "little"); + QList *names; + const QListEntry *e; + bool saw_none =3D false; + + g_assert_nonnull(none); + names =3D qdict_get_qlist(none, "machines"); + for (e =3D qlist_first(names); e; e =3D qlist_next(e)) { + const char *name =3D qstring_get_str(qobject_to(QString, + qlist_entry_obj(= e))); + + if (!strcmp(name, "none")) { + saw_none =3D true; + } + } + g_assert_true(saw_none); + } +} + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + g_assert_true(qemu_binary_is_combined()); + g_test_add_func("/machine-list/combined", test_combined_machine_list); + return g_test_run(); +} diff --git a/tests/qtest/machine-option-test.c b/tests/qtest/machine-option= -test.c new file mode 100644 index 00000000000..4ccc854fba0 --- /dev/null +++ b/tests/qtest/machine-option-test.c @@ -0,0 +1,714 @@ +/* + * Combined and historic -M / -machine option tests. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" + +#include "libqtest.h" +#include "qobject/qdict.h" +#include "qobject/qlist.h" +#include "qobject/qstring.h" + +#include "machine-list-test.inc.h" + +static bool test_target_exists(const char *target_info); +static bool spawn_args_targets_exist(const char *const *args); +static bool cli_targets_exist(const char *cli); + +static bool qemu_binary_is_combined(void) +{ + const char *bin =3D qtest_qemu_binary(NULL); + + return g_str_has_suffix(bin, "qemu-system") || + g_str_has_suffix(bin, "qemu-system.exe"); +} + +static void spawn_qemu(gchar **out, gchar **err, int *code, + const char *const *argv_tail) +{ + g_autoptr(GPtrArray) argv =3D g_ptr_array_new(); + g_autofree gchar *stdout_buf =3D NULL; + g_autofree gchar *stderr_buf =3D NULL; + gint status =3D 0; + GError *gerr =3D NULL; + const char *const *p; + + g_ptr_array_add(argv, (gpointer)qtest_qemu_binary(NULL)); + for (p =3D argv_tail; *p; p++) { + g_ptr_array_add(argv, (gpointer)*p); + } + g_ptr_array_add(argv, NULL); + + g_assert(g_spawn_sync(NULL, (char **)argv->pdata, NULL, + G_SPAWN_DEFAULT, NULL, NULL, + &stdout_buf, &stderr_buf, &status, &gerr)); + g_assert_no_error(gerr); +#ifdef _WIN32 + *code =3D status; +#else + g_assert(WIFEXITED(status)); + *code =3D WEXITSTATUS(status); +#endif + if (out) { + *out =3D g_steal_pointer(&stdout_buf); + } + if (err) { + *err =3D g_steal_pointer(&stderr_buf); + } +} + +static void assert_spawn(const char *target_info, const char *const *args, + int expect_code, const char *out_need, + const char *err_need) +{ + g_autofree gchar *out =3D NULL; + g_autofree gchar *err =3D NULL; + int code; + + if (!test_target_exists(target_info) || + (target_info && !spawn_args_targets_exist(args))) { + return; + } + spawn_qemu(&out, &err, &code, args); + g_assert_cmpint(code, =3D=3D, expect_code); + if (out_need) { + g_assert_nonnull(strstr(out ? out : "", out_need)); + } + if (err_need) { + g_assert_nonnull(strstr(err ? err : "", err_need)); + } +} + +static void assert_spawn_not(const char *target_info, const char *const *a= rgs, + int expect_code, const char *out_need, + const char *out_forbid) +{ + g_autofree gchar *out =3D NULL; + g_autofree gchar *err =3D NULL; + int code; + + if (!test_target_exists(target_info) || + (target_info && !spawn_args_targets_exist(args))) { + return; + } + spawn_qemu(&out, &err, &code, args); + g_assert_cmpint(code, =3D=3D, expect_code); + g_assert_nonnull(strstr(out ? out : "", out_need)); + g_assert_null(strstr(out ? out : "", out_forbid)); +} + +static char *qom_machine_type(QTestState *qts) +{ + QDict *resp; + char *type; + + resp =3D qtest_qmp(qts, + "{'execute': 'qom-get', 'arguments':" + " {'path': '/machine', 'property': 'type'}}"); + g_assert(qdict_haskey(resp, "return")); + type =3D g_strdup(qdict_get_str(resp, "return")); + qobject_unref(resp); + return type; +} + +static char *query_target_arch(QTestState *qts) +{ + QDict *resp, *ret; + char *arch; + + resp =3D qtest_qmp(qts, "{'execute': 'query-target'}"); + g_assert(qdict_haskey(resp, "return")); + ret =3D qdict_get_qdict(resp, "return"); + arch =3D g_strdup(qdict_get_str(ret, "arch")); + qobject_unref(resp); + return arch; +} + +/* query-target "arch" is SysEmuTarget, not always TARGET_NAME. */ +static const char *query_arch_for_target(const char *target_info) +{ + static const struct { + const char *target_name; + const char *arch; + } map[] =3D { + { "armeb", "arm" }, + { "microblazeel", "microblaze" }, + { "mips64el", "mips64" }, + { "mipsel", "mips" }, + { "ppc64le", "ppc64" }, + { "sh4eb", "sh4" }, + { "xtensaeb", "xtensa" }, + }; + size_t i; + + for (i =3D 0; i < G_N_ELEMENTS(map); i++) { + if (!strcmp(target_info, map[i].target_name)) { + return map[i].arch; + } + } + return target_info; +} + +static const struct ShippedTarget *lookup_shipped_arch(const char *arch, + const char *endiann= ess) +{ + size_t i; + + for (i =3D 0; i < G_N_ELEMENTS(shipped_targets); i++) { + if (!strcmp(shipped_targets[i].arch, arch) && + !strcmp(shipped_targets[i].endianness, endianness)) { + return &shipped_targets[i]; + } + } + return NULL; +} + +static const char *preferred_machine(const struct ShippedTarget *t) +{ + size_t i; + + for (i =3D 0; i < t->n_machines; i++) { + if (!strcmp(t->machines[i], "virt")) { + return t->machines[i]; + } + } + return t->n_machines ? t->machines[0] : NULL; +} + +static bool help_section_header(const char *line, const char **name, + size_t *name_len) +{ + size_t n; + size_t i; + + if (!line[0]) { + return false; + } + n =3D strlen(line); + if (line[n - 1] !=3D ':') { + return false; + } + for (i =3D 0; i < n - 1; i++) { + char c =3D line[i]; + + if (!g_ascii_isalnum(c) && c !=3D '_' && c !=3D '-' && c !=3D '.')= { + return false; + } + } + *name =3D line; + *name_len =3D n - 1; + return true; +} + +/* First-column machine names. Aliases are omitted. + * only_section NULL keeps every section (historic help). + */ +static QList *names_from_help(const char *text, const char *only_section) +{ + g_auto(GStrv) lines =3D g_strsplit(text ? text : "", "\n", 0); + g_autofree char *section =3D NULL; + QList *names =3D qlist_new(); + int i; + + for (i =3D 0; lines[i]; i++) { + const char *line =3D lines[i]; + const char *header; + size_t header_len; + const char *sp; + g_autofree char *tok =3D NULL; + + if (help_section_header(line, &header, &header_len)) { + g_free(section); + section =3D g_strndup(header, header_len); + continue; + } + if (only_section && + (!section || strcmp(section, only_section))) { + continue; + } + if (!line[0] || g_str_has_prefix(line, "Supported machines")) { + continue; + } + if (strstr(line, "(alias of ")) { + continue; + } + sp =3D line; + while (*sp && !g_ascii_isspace(*sp)) { + sp++; + } + if (sp =3D=3D line) { + continue; + } + tok =3D g_strndup(line, sp - line); + qlist_append_str(names, tok); + } + return names; +} + +static QList *query_targets(QTestState *qts) +{ + QDict *resp; + QList *list; + + resp =3D qtest_qmp(qts, "{'execute': 'query-targets'}"); + g_assert(qdict_haskey(resp, "return")); + list =3D qdict_get_qlist(resp, "return"); + qobject_ref(list); + qobject_unref(resp); + return list; +} + +static void read_accels(void) +{ + QTestState *qts =3D qtest_init("-nodefaults -M none"); + + read_accel_flags(qts); + qtest_quit(qts); +} + +static bool combined_has_target(const char *target_info) +{ + g_autofree char *opt =3D g_strdup_printf("%s:help", target_info); + const char *args[] =3D { "-M", opt, NULL }; + g_autofree gchar *err =3D NULL; + int code =3D 1; + + spawn_qemu(NULL, &err, &code, args); + return code =3D=3D 0; +} + +static bool test_target_exists(const char *target_info) +{ + static GHashTable *cache; + gpointer cached; + gboolean have; + + if (!target_info) { + return true; + } + if (!strcmp(target_info, "none")) { + return true; + } + if (!qemu_binary_is_combined()) { + return strcmp(target_info, qtest_get_arch()) =3D=3D 0; + } + if (!cache) { + cache =3D g_hash_table_new(g_str_hash, g_str_equal); + } + if (g_hash_table_lookup_extended(cache, target_info, NULL, &cached)) { + return GPOINTER_TO_INT(cached); + } + have =3D combined_has_target(target_info); + g_hash_table_insert(cache, (gpointer)target_info, GINT_TO_POINTER(have= )); + return have; +} + +static bool machine_optarg_targets_exist(const char *optarg) +{ + const char *type =3D optarg; + const char *colon; + g_autofree char *prefix =3D NULL; + + if (!optarg) { + return true; + } + if (g_str_has_prefix(type, "type=3D")) { + type +=3D 5; + } + colon =3D strchr(type, ':'); + if (!colon || colon =3D=3D type) { + return true; + } + prefix =3D g_strndup(type, colon - type); + return test_target_exists(prefix); +} + +static bool spawn_args_targets_exist(const char *const *args) +{ + const char *const *p; + + for (p =3D args; *p; p++) { + if ((!strcmp(*p, "-M") || !strcmp(*p, "-machine")) && p[1]) { + if (!machine_optarg_targets_exist(p[1])) { + return false; + } + } + } + return true; +} + +static bool cli_targets_exist(const char *cli) +{ + g_auto(GStrv) tokens =3D g_strsplit(cli ? cli : "", " ", 0); + int i; + + for (i =3D 0; tokens[i]; i++) { + if ((!strcmp(tokens[i], "-M") || !strcmp(tokens[i], "-machine")) && + tokens[i + 1] && !machine_optarg_targets_exist(tokens[i + 1]))= { + return false; + } + } + return true; +} + +static void assert_run(const char *target_info, const char *cli, + const char *type_need) +{ + QTestState *qts; + g_autofree char *got_arch =3D NULL; + g_autofree char *got_type =3D NULL; + + if (!test_target_exists(target_info) || !cli_targets_exist(cli)) { + return; + } + qts =3D qtest_initf("-nodefaults %s", cli); + got_arch =3D query_target_arch(qts); + g_assert_cmpstr(got_arch, =3D=3D, query_arch_for_target(target_info)); + if (type_need) { + got_type =3D qom_machine_type(qts); + g_assert_nonnull(strstr(got_type, type_need)); + } + qtest_quit(qts); +} + +static void test_combined_help(void) +{ + const char *help[] =3D { "-M", "help", NULL }; + const char *qmark[] =3D { "-M", "?", NULL }; + const char *aarch64_help[] =3D { "-M", "aarch64:help", NULL }; + const char *aarch64_q[] =3D { "-M", "aarch64:?", NULL }; + const char *riscv64_help[] =3D { "-M", "riscv64:help", NULL }; + const char *none_help[] =3D { "-M", "none:help", NULL }; + + assert_spawn("none", help, 0, "none:\n", NULL); + assert_spawn("aarch64", help, 0, "aarch64:\n", NULL); + assert_spawn("none", qmark, 0, "none:\n", NULL); + assert_spawn("aarch64", aarch64_help, 0, "virt", NULL); + assert_spawn_not("aarch64", aarch64_help, 0, "virt", "q35"); + assert_spawn_not("aarch64", aarch64_help, 0, "virt", "none:\n"); + assert_spawn("aarch64", aarch64_q, 0, "virt", NULL); + assert_spawn("riscv64", riscv64_help, 0, "virt", NULL); + assert_spawn("none", none_help, 0, "none", NULL); + assert_spawn_not("none", none_help, 0, "empty machine", "aarch64:\n"); +} + +static void test_combined_props(void) +{ + const char *virt_help[] =3D { "-M", "aarch64:virt,help", NULL }; + const char *def_help[] =3D { "-M", "aarch64:,help", NULL }; + const char *bare_help[] =3D { "-M", "virt,help", NULL }; + const char *none_help[] =3D { "-M", "none,help", NULL }; + + assert_spawn("aarch64", virt_help, 0, "gic-version", NULL); + assert_spawn("aarch64", def_help, 1, NULL, + "No machine specified, and there is no default"); + assert_spawn(NULL, bare_help, 1, NULL, "needs an arch: prefix"); + assert_spawn("none", none_help, 0, "none-machine", NULL); +} + +static void test_combined_errors(void) +{ + const char *virt[] =3D { "-M", "virt", NULL }; + const char *riscv64[] =3D { "-M", "riscv64", NULL }; + const char *aarch64[] =3D { "-M", "aarch64", NULL }; + const char *q35[] =3D { "-M", "aarch64:q35", NULL }; + const char *sbsa[] =3D { "-M", "arm:sbsa-ref", NULL }; + const char *nosuch_m[] =3D { "-M", "aarch64:no-such", NULL }; + const char *nosuch_t[] =3D { "-M", "no-such:virt", NULL }; + const char *upper[] =3D { "-M", "AARCH64:virt", NULL }; + const char *none_virt[] =3D { "-M", "none:virt", NULL }; + const char *lead[] =3D { "-M", ":virt", NULL }; + const char *colon[] =3D { "-M", ":", NULL }; + const char *extra[] =3D { "-M", "aarch64:virt:extra", NULL }; + + assert_spawn(NULL, virt, 1, NULL, "needs an arch: prefix"); + assert_spawn(NULL, riscv64, 1, NULL, "needs an arch: prefix"); + assert_spawn(NULL, aarch64, 1, NULL, "needs an arch: prefix"); + assert_spawn("aarch64", q35, 1, NULL, + "unsupported machine type: \"aarch64:q35\""); + assert_spawn("arm", sbsa, 1, NULL, + "unsupported machine type: \"arm:sbsa-ref\""); + assert_spawn("aarch64", nosuch_m, 1, NULL, + "unsupported machine type: \"aarch64:no-such\""); + assert_spawn(NULL, nosuch_t, 1, NULL, "target 'no-such' is not availab= le"); + assert_spawn(NULL, upper, 1, NULL, "target 'AARCH64' is not available"= ); + assert_spawn("none", none_virt, 1, NULL, + "machine type \"none:virt\" is not available for target n= one"); + assert_spawn(NULL, lead, 1, NULL, "needs an arch: prefix"); + assert_spawn(NULL, colon, 1, NULL, "needs an arch: prefix"); + assert_spawn("aarch64", extra, 1, NULL, + "unsupported machine type: \"aarch64:virt:extra\""); +} + +static void test_combined_last_help(void) +{ + const char *run_then_help[] =3D { "-M", "aarch64:virt", "-M", "help", = NULL }; + + assert_spawn("aarch64", run_then_help, 0, "virt", NULL); + assert_spawn_not("aarch64", run_then_help, 0, "virt", "q35"); +} + +static void test_combined_run(void) +{ + const char *aarch64_def[] =3D { "-M", "aarch64:", NULL }; + const char *riscv64_def[] =3D { "-M", "riscv64:", NULL }; + const char *last_riscv_def[] =3D { + "-M", "aarch64:virt", "-M", "riscv64:", NULL + }; + + assert_run("aarch64", "-M aarch64:virt", "virt"); + assert_run("riscv64", "-M riscv64:virt", "virt"); + assert_run("aarch64", "-M type=3Daarch64:virt", "virt"); + assert_run("aarch64", "-machine aarch64:virt", "virt"); + assert_spawn("aarch64", aarch64_def, 1, NULL, + "No machine specified, and there is no default"); + assert_spawn("riscv64", riscv64_def, 1, NULL, + "No machine specified, and there is no default"); + assert_run("x86_64", "-M x86_64:q35", "q35"); + assert_run("x86_64", "-M x86_64:", NULL); + assert_run("x86_64", "-M aarch64:virt -M x86_64:q35", "q35"); + assert_run("i386", "-M i386:", NULL); + assert_run("none", "-M none:", "none"); + assert_run("none", "", "none"); + assert_run("none", "-M none", "none"); + assert_run("none", "-M none:none", "none"); + assert_run("aarch64", "-M aarch64:none", "none"); + assert_run("aarch64", "-M aarch64:virt -M none", "none"); + assert_run("riscv64", "-M aarch64:virt -M riscv64:virt", "virt"); + assert_run("aarch64", "-M aarch64:virt -M virt", "virt"); + assert_run("aarch64", "-M virt -M aarch64:virt", "virt"); + assert_run("aarch64", "-M aarch64: -M virt", "virt"); + assert_spawn("riscv64", last_riscv_def, 1, NULL, + "No machine specified, and there is no default"); + assert_run("aarch64", "-M help -M aarch64:virt", "virt"); +} + +static void test_historic_help(void) +{ + const char *target_info =3D qtest_get_arch(); + const struct ShippedTarget *t =3D lookup_shipped_target(target_info); + const char *help[] =3D { "-M", "help", NULL }; + g_autofree gchar *out =3D NULL; + g_autofree gchar *err =3D NULL; + g_autoptr(QList) names =3D NULL; + int code; + + spawn_qemu(&out, &err, &code, help); + g_assert_cmpint(code, =3D=3D, 0); + g_assert_nonnull(strstr(out ? out : "", "Supported machines are:")); + g_assert_null(strstr(out ? out : "", "none:\n")); + if (!t) { + return; + } + read_accels(); + names =3D names_from_help(out, NULL); + assert_name_list(names, t->name, t->machines, t->n_machines); +} + +static void test_historic_machine_help(void) +{ + const char *target_info =3D qtest_get_arch(); + const struct ShippedTarget *t =3D lookup_shipped_target(target_info); + const char *machine; + g_autofree char *opt =3D NULL; + const char *args[] =3D { "-M", NULL, NULL }; + size_t i; + bool have_virt =3D false; + + if (!t) { + return; + } + machine =3D preferred_machine(t); + if (!machine) { + return; + } + opt =3D g_strdup_printf("%s,help", machine); + args[1] =3D opt; + assert_spawn(target_info, args, 0, machine, NULL); + for (i =3D 0; i < t->n_machines; i++) { + if (!strcmp(t->machines[i], "virt")) { + have_virt =3D true; + break; + } + } + if (have_virt && + (!strcmp(target_info, "arm") || !strcmp(target_info, "aarch64"))) { + const char *virt_args[] =3D { "-M", "virt,help", NULL }; + + assert_spawn(target_info, virt_args, 0, "gic-version", NULL); + } +} + +static void test_historic_run(void) +{ + const char *target_info =3D qtest_get_arch(); + g_autofree char *match =3D g_strdup_printf("-M %s:none", target_info); + const char *mismatch[] =3D { "-M", "aarch64:virt", NULL }; + + assert_run(target_info, "-M none", "none"); + assert_run(target_info, match, "none"); + if (strcmp(target_info, "aarch64")) { + assert_spawn(target_info, mismatch, 1, NULL, + "is not available for target"); + } else { + assert_run(target_info, "-M virt", "virt"); + assert_run(target_info, "-M aarch64:virt", "virt"); + } +} + +static void test_combined_help_lists(void) +{ + const char *help[] =3D { "-M", "help", NULL }; + g_autofree gchar *out =3D NULL; + g_autofree gchar *err =3D NULL; + g_autoptr(QList) targets =3D NULL; + const QListEntry *e; + QTestState *qts; + int code; + + spawn_qemu(&out, &err, &code, help); + g_assert_cmpint(code, =3D=3D, 0); + qts =3D qtest_init("-nodefaults -M none"); + read_accel_flags(qts); + targets =3D query_targets(qts); + qtest_quit(qts); + g_assert_cmpuint(qlist_size(targets), >, 0); + for (e =3D qlist_first(targets); e; e =3D qlist_next(e)) { + QDict *tgt =3D qobject_to(QDict, qlist_entry_obj(e)); + const struct ShippedTarget *t; + g_autoptr(QList) names =3D NULL; + + g_assert_nonnull(tgt); + if (!strcmp(qdict_get_str(tgt, "arch"), "none")) { + QList *qmp_names =3D qdict_get_qlist(tgt, "machines"); + g_autoptr(QList) help_names =3D names_from_help(out, "none"); + const QListEntry *ne; + bool saw_none =3D false; + + g_assert_nonnull(strstr(out, "none:\n")); + g_assert_cmpuint(qlist_size(help_names), =3D=3D, qlist_size(qm= p_names)); + for (ne =3D qlist_first(qmp_names); ne; ne =3D qlist_next(ne))= { + const char *name =3D qstring_get_str(qobject_to(QString, + qlist_entry= _obj(ne))); + const QListEntry *he; + bool found =3D false; + + if (!strcmp(name, "none")) { + saw_none =3D true; + } + for (he =3D qlist_first(help_names); he; he =3D qlist_next= (he)) { + const char *hn =3D qstring_get_str( + qobject_to(QString, qlist_entry_obj(he))); + + if (!strcmp(name, hn)) { + found =3D true; + break; + } + } + g_assert_true(found); + } + g_assert_true(saw_none); + continue; + } + t =3D lookup_shipped_arch(qdict_get_str(tgt, "arch"), + qdict_get_str(tgt, "endianness")); + g_assert_nonnull(t); + names =3D names_from_help(out, t->name); + assert_name_list(names, t->name, t->machines, t->n_machines); + } +} + +static char *write_machine_config(const char *type) +{ + g_autofree char *text =3D g_strdup_printf("[machine]\ntype =3D \"%s\"\= n", type); + g_autofree char *path =3D NULL; + GError *err =3D NULL; + int fd; + + fd =3D g_file_open_tmp("qemu-m-XXXXXX", &path, &err); + g_assert_no_error(err); + g_assert_cmpint(fd, >=3D, 0); + close(fd); + g_assert_true(g_file_set_contents(path, text, -1, &err)); + g_assert_no_error(err); + return g_steal_pointer(&path); +} + +static void test_combined_readconfig(void) +{ + g_autofree char *aarch64_cfg =3D write_machine_config("aarch64:virt"); + g_autofree char *none_cfg =3D write_machine_config("none:"); + g_autofree char *riscv_cfg =3D write_machine_config("riscv64:virt"); + g_autofree char *from_cfg =3D NULL; + g_autofree char *then_none =3D NULL; + g_autofree char *cfg_none =3D NULL; + g_autofree char *then_riscv =3D NULL; + + from_cfg =3D g_strdup_printf("-readconfig \"%s\"", aarch64_cfg); + assert_run("aarch64", from_cfg, "virt"); + then_none =3D g_strdup_printf("-readconfig \"%s\" -M none", aarch64_cf= g); + assert_run("aarch64", then_none, "none"); + cfg_none =3D g_strdup_printf("-readconfig \"%s\"", none_cfg); + assert_run("none", cfg_none, "none"); + then_riscv =3D g_strdup_printf("-M aarch64:virt -readconfig \"%s\"", + riscv_cfg); + assert_run("riscv64", then_riscv, "virt"); + + unlink(aarch64_cfg); + unlink(none_cfg); + unlink(riscv_cfg); +} + +static void test_combined_run_listed(void) +{ + g_autoptr(QList) targets =3D NULL; + const QListEntry *e; + QTestState *qts; + + qts =3D qtest_init("-nodefaults -M none"); + targets =3D query_targets(qts); + qtest_quit(qts); + for (e =3D qlist_first(targets); e; e =3D qlist_next(e)) { + QDict *tgt =3D qobject_to(QDict, qlist_entry_obj(e)); + const struct ShippedTarget *t; + const char *machine; + g_autofree char *cli =3D NULL; + + g_assert_nonnull(tgt); + if (!strcmp(qdict_get_str(tgt, "arch"), "none")) { + assert_run("none", "-M none:none", "none"); + continue; + } + t =3D lookup_shipped_arch(qdict_get_str(tgt, "arch"), + qdict_get_str(tgt, "endianness")); + g_assert_nonnull(t); + machine =3D preferred_machine(t); + g_assert_nonnull(machine); + cli =3D g_strdup_printf("-M %s:%s", t->name, machine); + assert_run(t->name, cli, machine); + } +} + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + + if (qemu_binary_is_combined()) { + g_test_add_func("/machine-option/help", test_combined_help); + g_test_add_func("/machine-option/help-lists", test_combined_help_l= ists); + g_test_add_func("/machine-option/props", test_combined_props); + g_test_add_func("/machine-option/errors", test_combined_errors); + g_test_add_func("/machine-option/last-help", test_combined_last_he= lp); + g_test_add_func("/machine-option/run", test_combined_run); + g_test_add_func("/machine-option/readconfig", test_combined_readco= nfig); + g_test_add_func("/machine-option/run-listed", test_combined_run_li= sted); + } else { + qtest_add_func("machine-option/help", test_historic_help); + qtest_add_func("machine-option/machine-help", test_historic_machin= e_help); + qtest_add_func("machine-option/run", test_historic_run); + } + + return g_test_run(); +} diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build index aef99d2bf52..99b7b19283b 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build @@ -19,6 +19,11 @@ slow_qtests =3D { 'vmgenid-test': 610, } =20 +qtests_single_binary =3D [ + 'machine-option-test', + 'machine-list-combined-test', +] + qtests_generic =3D [ 'cdrom-test', 'device-introspect-test', @@ -527,3 +532,36 @@ foreach dir : target_dirs (slow_qtests.has_key(test) ? ['slow'] : [])) endforeach endforeach + +if is_variable('qemu_system') + qtest_env_sb =3D environment() + qtest_env_sb.set('G_TEST_DBUS_DAEMON', + meson.project_source_root() / 'tests/dbus-daemon.sh') + qtest_env_sb.set('QTEST_QEMU_BINARY', './qemu-system') + qtest_env_sb.set('PYTHON', python.full_path()) + combined_targets_text =3D [] + foreach name : single_binary_targets + combined_targets_text +=3D ' "@0@",'.format(name) + endforeach + combined_targets_conf =3D configuration_data() + combined_targets_conf.set('COMBINED_TARGETS', '\n'.join(combined_targets= _text)) + combined_targets_h =3D configure_file( + input: 'machine-list-combined-targets.h.in', + output: 'machine-list-combined-targets.h', + configuration: combined_targets_conf, + ) + foreach test : qtests_single_binary + qtest_executables +=3D { + test: executable(test, [test + '.c', combined_targets_h], + dependencies: [qemuutil, qos]) + } + test('qtest-single-binary/' + test, + qtest_executables[test], + depends: [qemu_system, emulator_modules], + env: qtest_env_sb, + args: ['--tap', '-k'], + protocol: 'tap', + timeout: test =3D=3D 'machine-option-test' ? 180 : 60, + suite: ['qtest', 'qtest-single-binary']) + endforeach +endif --=20 2.52.0.windows.1