From patchwork Mon Mar 24 10:21:32 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 14027040 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2D2CDC36002 for ; Mon, 24 Mar 2025 10:24:17 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1twewi-0002tG-Me; Mon, 24 Mar 2025 06:22:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1twewI-0002iP-RM for qemu-devel@nongnu.org; Mon, 24 Mar 2025 06:21:50 -0400 Received: from mail-ed1-x52e.google.com ([2a00:1450:4864:20::52e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1twewE-0006yQ-7f for qemu-devel@nongnu.org; Mon, 24 Mar 2025 06:21:50 -0400 Received: by mail-ed1-x52e.google.com with SMTP id 4fb4d7f45d1cf-5e5c9662131so6578542a12.3 for ; Mon, 24 Mar 2025 03:21:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1742811704; x=1743416504; 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; bh=j0frMJFHURFqzSvkfeW8iN6QG7CZAG19LBjdMEoqvJI=; b=GPFox9bzWoeTiJS4c8LoAW3c2q685oWYl1sYHDZ+FzQvLXv4KXuNQ/DX/W0xY2ARPt LtNfpHIXXnapMn+UU+CBwSrexYPHP2R9E8pV8sigHhpujaNIeL1EUeccH2/8PUYPfXRN KSt8cbCLPwzN+E5q+FsnwXQ9PIMOOJizyGGLzDVqb+QWMbsJTU5SChNSpWF8MnPw/rEO N9HnNEv3nA8VNMV5qsh8ooiExCclhnGnzCRPJoKRLkAXcY0C3ghUxMgUB1zvc42VeCkI pqWjEz8taAxbrgabR90NW6VBA2zlRNKJS+v8ivzJQtDVboC7rKMYNGQC1F6zU6kzTTBn EK1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742811704; x=1743416504; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=j0frMJFHURFqzSvkfeW8iN6QG7CZAG19LBjdMEoqvJI=; b=I1JfvP2f+hL0nNll/u/onh0VEkwUeL+DMSVBYpjHr0FhBzGJDU4YYnKmvhgzqqG4fH 2Gvod71iqSK8wbEcz6sRoFZeNaBtQgiiTb19v7PzUzUMWDkdXLRpi/v9wh7+poG8anbR yBrUP49L/r9oFpIu/16djUIlKT6umeJgBLg2eGY56mvtucVizyROrmfmk0u0idBCdWU7 JHEh/WH9qsIznLf5UkHQ9Hgr+C3m2DZXAKpof7AVNv/WGwo9WIZV/pM/8COEOV/Quxm8 0s6Bx++xLtSGwYPVUNfsdK0eGDSxjK0otoKL0L5qztPjTvnfnVFqj0biQJSqwoW5mWZy 3diA== X-Gm-Message-State: AOJu0YwrCQ+zSGapGnU5a0gNOhgifvf2KERwKl9UDnEz96ouB9aR1en2 8QYLltYCClQjPJVCKr3uQpLw1Ggt4yjuMYHNt4nphLX3UNAR2nC/kjcd8aNuHIw= X-Gm-Gg: ASbGncvFiNNc/qUpbg9T+Az3V0mDgC3IvMASjttIpgsKhy0+SS1vQft9wwrk7b/ICll 5MblVSp8G/3CWpASzdDBk/mToaAPRqKtvIeFaiimKc+yewk1rCs4oMNJ+/JFAGn9jhB5T2cLzIi UcTebjb4TwaI1LSUezQhdTqH/0iZC4cVWMiycqvVuLQ/CErlmy/5SHOT/+l0+RggzAIZ7nchKi7 iix86dJTF9E1n1/NndbFeuDTlDDWUfR+AlruLZCoNk5SaejGhJTDFlMcH6SPDU7VByNBl0NB5fl IUylVsxNE4rCVh1jTs53vMPm9MTwYGYMeCJtwrsXunhf6G0= X-Google-Smtp-Source: AGHT+IHwSd6NzIfqKhQkug04WTcI9nAnPTul+n/Wo/urhoWHkFNugeCcE4XD5W1Ewaqi1uZ+cJjuwg== X-Received: by 2002:a05:6402:27cd:b0:5e6:6407:3b23 with SMTP id 4fb4d7f45d1cf-5ebcd4ef41emr9266584a12.21.1742811704252; Mon, 24 Mar 2025 03:21:44 -0700 (PDT) Received: from draig.lan ([185.126.160.109]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5ebccfae189sm5784268a12.37.2025.03.24.03.21.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Mar 2025 03:21:43 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id ACFDA5F90B; Mon, 24 Mar 2025 10:21:42 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Nicholas Piggin , "Edgar E. Iglesias" , Markus Armbruster , Akihiko Odaki , qemu-ppc@nongnu.org, Richard Henderson , Thomas Huth , David Gibson , Daniel Henrique Barboza , =?utf-8?q?Daniel_P=2E_Berr?= =?utf-8?q?ang=C3=A9?= , Ilya Leoshkevich , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?C?= =?utf-8?q?=C3=A9dric_Le_Goater?= , Peter Maydell , qemu-s390x@nongnu.org, Wainer dos Santos Moschetta , =?utf-8?q?Alex_Benn?= =?utf-8?q?=C3=A9e?= , David Hildenbrand , Pierrick Bouvier , Paolo Bonzini , Peter Xu Subject: [PATCH v2 01/11] include/exec: fix assert in size_memop Date: Mon, 24 Mar 2025 10:21:32 +0000 Message-Id: <20250324102142.67022-2-alex.bennee@linaro.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250324102142.67022-1-alex.bennee@linaro.org> References: <20250324102142.67022-1-alex.bennee@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::52e; envelope-from=alex.bennee@linaro.org; helo=mail-ed1-x52e.google.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org We can handle larger sized memops now, expand the range of the assert. Fixes: 4b473e0c60 (tcg: Expand MO_SIZE to 3 bits) Signed-off-by: Alex Bennée Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- v2 - instead of 128 use 1 << MO_SIZE for future proofing --- include/exec/memop.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/exec/memop.h b/include/exec/memop.h index 407a47d82c..6afe50a7d0 100644 --- a/include/exec/memop.h +++ b/include/exec/memop.h @@ -162,8 +162,8 @@ static inline unsigned memop_size(MemOp op) static inline MemOp size_memop(unsigned size) { #ifdef CONFIG_DEBUG_TCG - /* Power of 2 up to 8. */ - assert((size & (size - 1)) == 0 && size >= 1 && size <= 8); + /* Power of 2 up to 128. */ + assert((size & (size - 1)) == 0 && size >= 1 && size <= (1 << MO_SIZE)); #endif return (MemOp)ctz32(size); } From patchwork Mon Mar 24 10:21:33 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 14027031 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7B983C3600C for ; Mon, 24 Mar 2025 10:22:32 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1twewY-0002kE-25; Mon, 24 Mar 2025 06:22:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1twewH-0002hg-J0 for qemu-devel@nongnu.org; Mon, 24 Mar 2025 06:21:49 -0400 Received: from mail-ej1-x631.google.com ([2a00:1450:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1twewE-0006yb-Bf for qemu-devel@nongnu.org; Mon, 24 Mar 2025 06:21:49 -0400 Received: by mail-ej1-x631.google.com with SMTP id a640c23a62f3a-ac34257295dso877293266b.2 for ; Mon, 24 Mar 2025 03:21:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1742811705; x=1743416505; 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; bh=VZF6S8L3UqVuJFuyJwFnFTJvE8XTZ2YC1W6E4Xyum+w=; b=lz+Gr030+9bVEhfHV2GCVI3biXPzNmMNpfveF3ZsgjAe4kPcvY8gZRmLGn95C3x5xV rXAyZwcy89sgCssgQ6Ft5AfQ2xFVdojj8znvuibHvXLWBirNrd/gkHKI0FZSRbMhEhwu jaA6CR5z72n3vbFsKjv9quZ/D6uACTcai9+IuA3BrTINYdS30dfuohZmd7hUzxlhNa73 oIxLmphiG/KL2qcvUrltly6/k58U31ErBY+3ueuKBoQ0CHNV3UNTxVhYEEF4grk2LpqC tGC+N9HsXxFfnvELAalY7HAhXH6wvej3pW69xddGLbWbR5ikfeIAWIeWpRPrzETAWJDh a4kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742811705; x=1743416505; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VZF6S8L3UqVuJFuyJwFnFTJvE8XTZ2YC1W6E4Xyum+w=; b=KMJ4PK3vbhD0cXyzMmzWUk7kBFD1q/C3VP2wsL7GS791DNHQGFwW4U+joZEqTVdJyV iwc/177NOI0xcPgqiUkfm1f/CbSNf+mV96lfS4AUBgPW8fkNbiUH+wknbYTe+PL0MYNX AxuwW2jHCUt1/jxBVBD90hNOd+y7SOkRPibrfWR10EdzzY7vwlB+Pgsh5nEcMwfxspKu ABIK6UlKY9o6oI7MKaxGpPksKBQV+bc+8t2ox72N6xll0ysVk448rvt13NhhG5ouAYzp Q6OkKHYOPCSfRB/NKKLk+T9A938q3dBW8QmPT6eLcverg7BEN88dfF+LQjegaO44kzda cmcg== X-Gm-Message-State: AOJu0YwSQ1OqCHPV7Z6Lx19unzWBOj+HjgxfCxkPMyZYIOF2kskftDKf xOOx+AL7KxTKPduC25P35CpBlhypXFksVuZnqBMfjoo3iZ82F+wz7k6Y5ZZ3DDU= X-Gm-Gg: ASbGnctPFuelLl36bESa7ONsX0U8SW0yzrzRm61X02umxn6Gr1IB+TTKevN61hcDkBP gxwCrUXnFSlpa2nP2KoeOa5oev17DvvDzHrQYKCL7qtvBEWkgkb0No4aIhWzkIoFgW4jUoxFUWr WVTZvJ7qWin421e6Ny7iPief8dQe7A3ohAkYKBqLyhbpAt9loipxRnNUNN7mzcW/W7E9C/BORLb fllvsuWaITkwzaCTMc2QbvflC7GdHzt1t3mbQo7gtVH47RzlA2+AXuwTtPUor/ebPeT7PoKfF7f IhBaAiSN3S6eVMNnJ5vkWG8MWTFk3M5XSzsfEkOds2taVf+ERkDjwIorhA== X-Google-Smtp-Source: AGHT+IHClczt71SkQU4FdPrknV8YMuAkrJavOE2AdhKjNiinf7mK80vrbnuykoxBItOVEu3so2gwvg== X-Received: by 2002:a17:907:d17:b0:ac1:da09:5d32 with SMTP id a640c23a62f3a-ac3f20f81ffmr1184440566b.6.1742811704565; Mon, 24 Mar 2025 03:21:44 -0700 (PDT) Received: from draig.lan ([185.126.160.109]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5ebccf89240sm5803429a12.31.2025.03.24.03.21.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Mar 2025 03:21:43 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id C35515F953; Mon, 24 Mar 2025 10:21:42 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Nicholas Piggin , "Edgar E. Iglesias" , Markus Armbruster , Akihiko Odaki , qemu-ppc@nongnu.org, Richard Henderson , Thomas Huth , David Gibson , Daniel Henrique Barboza , =?utf-8?q?Daniel_P=2E_Berr?= =?utf-8?q?ang=C3=A9?= , Ilya Leoshkevich , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?C?= =?utf-8?q?=C3=A9dric_Le_Goater?= , Peter Maydell , qemu-s390x@nongnu.org, Wainer dos Santos Moschetta , =?utf-8?q?Alex_Benn?= =?utf-8?q?=C3=A9e?= , David Hildenbrand , Pierrick Bouvier Subject: [PATCH v2 02/11] include/gdbstub: fix include guard in commands.h Date: Mon, 24 Mar 2025 10:21:33 +0000 Message-Id: <20250324102142.67022-3-alex.bennee@linaro.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250324102142.67022-1-alex.bennee@linaro.org> References: <20250324102142.67022-1-alex.bennee@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::631; envelope-from=alex.bennee@linaro.org; helo=mail-ej1-x631.google.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Reviewed-by: Pierrick Bouvier Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée Reviewed-by: Pierrick Bouvier --- include/gdbstub/commands.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/gdbstub/commands.h b/include/gdbstub/commands.h index 40f0514fe9..bff3674872 100644 --- a/include/gdbstub/commands.h +++ b/include/gdbstub/commands.h @@ -1,5 +1,5 @@ #ifndef GDBSTUB_COMMANDS_H -#define GDBSTUB +#define GDBSTUB_COMMANDS_H typedef void (*GdbCmdHandler)(GArray *params, void *user_ctx); From patchwork Mon Mar 24 10:21:34 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 14027038 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id EB7CBC3600C for ; Mon, 24 Mar 2025 10:23:49 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1twewh-0002s9-Mg; Mon, 24 Mar 2025 06:22:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1twewL-0002jk-Jo for qemu-devel@nongnu.org; Mon, 24 Mar 2025 06:21:54 -0400 Received: from mail-ed1-x534.google.com ([2a00:1450:4864:20::534]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1twewF-0006zB-SZ for qemu-devel@nongnu.org; Mon, 24 Mar 2025 06:21:51 -0400 Received: by mail-ed1-x534.google.com with SMTP id 4fb4d7f45d1cf-5e61d91a087so6256941a12.0 for ; Mon, 24 Mar 2025 03:21:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1742811706; x=1743416506; 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; bh=EfOS5oo5Tg/ms5IkUOiNXbF4FjmC2l84J0aAY/Jvw9E=; b=cIh60no7tiXIdx9hLb9xy6zdmhor1lJAvCgNuTj5zLnwxzMC4Hd4KeQZsMYglGAAUx qu/C1zi2rqe/QvxvNbk0PF+vaij8z9whf8SuoadJyWJ3xMYZwRfE3cXtruujcIanC5Bu 0Id63CsMB3H45zNXGlcevUgF+D7fqlfsi1F6GC7phH0WtDWFsxvlrRM4j0bG2iP2W0jN wBvgtL+JdifXeD3iENT2MeaKOg3FMzWBXfBC86SvMrkh3jNuzKkR9SxmLTUE9UY4SyVH 1Q2no66JfDIsYQ8KhXnnHSvb18mCwfd9vYCXKY5NNktrpsvKBCoQW8JipsiXgrcJAIIo aohA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742811706; x=1743416506; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EfOS5oo5Tg/ms5IkUOiNXbF4FjmC2l84J0aAY/Jvw9E=; b=Q9hREJpos0D9UbMgaWpmcKdzKqLL9ycP2xqTgbAtPhIBhB0gGUgMd/D7mIJK35/DK4 YsY78kdSN7KXt/nbQ7WQSddz+cdxxUInfy1Zlh4Pfu10N7DppJs4GC5kRaH7yyGzeQzs 1hz5uvPv+ae4HnItygNA9LHcXrmmvQNYG58icfCBiHZEYiGLOzRh0TVfZD4537ysqeIS HGd4n7EBZaVqFKND2KCbWrlRPR4IsDQXV1HmTDZgQyluapHe8mTFfIi8M51DYCyD2tyY 0c4Y5v5w4gVdfPMWsw7sHwJ/bWGz+7JezJDoLX1qFPlUyPZ1RPOWTUcYJL3gpZuLmHtA ngGw== X-Gm-Message-State: AOJu0YyJiFf4OgPB8LTaygMwmmGvNKpJZf5CoXb0DspAl6hzeoamsp/k z9PZ7Ksyy5oA6PeLFJ6Hqcj0UW5IaTFKJlQy6T29+VL2CnIGAPH1dZpx2/y8D/4= X-Gm-Gg: ASbGnctL4u4rXScokpsJcVt6jwxfsWEEQQVUG+XNI7U2KQ1kAaQn9k5YKSVc9aGUtnL dWqMOnXFRj5yDZdAcLRlQm+VkniXg+I3Vs8Qgp6d1fQLLddPdkVCaYSIO002ImFcXQOTpwmp4Vm JBuhphzs0gdJ8PyLeLvXnCwH2I827VbImJ5S+3Tfdp/bQGjDtmFH1t97fJCdVjvqmggtfqV18V+ gSwC3i9aDguVKbnENi/r8I115r89Jgu0c7/lD6Kzyk9+tAyVUy0ReuoFaEQNSeXuFBsHaawZ4Pd J8uadz6lnWX3z86edEaxr1Tgsf5Hu1ddaaHwaiDzZHNG1Ik= X-Google-Smtp-Source: AGHT+IGL7guV/PyliaWYbxhpnWFl2b0Xg41mVXECfIj3DQgLRrOEQGwKtSGDKLmrxObXKy1VGk0pFg== X-Received: by 2002:a17:907:7fa5:b0:abf:5fa3:cf94 with SMTP id a640c23a62f3a-ac3f24d78cbmr1164505966b.22.1742811705823; Mon, 24 Mar 2025 03:21:45 -0700 (PDT) Received: from draig.lan ([185.126.160.109]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac3ef8d3cbcsm644126666b.49.2025.03.24.03.21.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Mar 2025 03:21:43 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id D9E2F5FABD; Mon, 24 Mar 2025 10:21:42 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Nicholas Piggin , "Edgar E. Iglesias" , Markus Armbruster , Akihiko Odaki , qemu-ppc@nongnu.org, Richard Henderson , Thomas Huth , David Gibson , Daniel Henrique Barboza , =?utf-8?q?Daniel_P=2E_Berr?= =?utf-8?q?ang=C3=A9?= , Ilya Leoshkevich , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?C?= =?utf-8?q?=C3=A9dric_Le_Goater?= , Peter Maydell , qemu-s390x@nongnu.org, Wainer dos Santos Moschetta , =?utf-8?q?Alex_Benn?= =?utf-8?q?=C3=A9e?= , David Hildenbrand , Pierrick Bouvier Subject: [PATCH v2 03/11] gdbstub: assert earlier in handle_read_all_regs Date: Mon, 24 Mar 2025 10:21:34 +0000 Message-Id: <20250324102142.67022-4-alex.bennee@linaro.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250324102142.67022-1-alex.bennee@linaro.org> References: <20250324102142.67022-1-alex.bennee@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::534; envelope-from=alex.bennee@linaro.org; helo=mail-ed1-x534.google.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org When things go wrong we want to assert on the register that failed to be able to figure out what went wrong. Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée Reviewed-by: Pierrick Bouvier --- gdbstub/gdbstub.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c index 282e13e163..b6d5e11e03 100644 --- a/gdbstub/gdbstub.c +++ b/gdbstub/gdbstub.c @@ -1328,8 +1328,8 @@ static void handle_read_all_regs(GArray *params, void *user_ctx) len += gdb_read_register(gdbserver_state.g_cpu, gdbserver_state.mem_buf, reg_id); + g_assert(len == gdbserver_state.mem_buf->len); } - g_assert(len == gdbserver_state.mem_buf->len); gdb_memtohex(gdbserver_state.str_buf, gdbserver_state.mem_buf->data, len); gdb_put_strbuf(); From patchwork Mon Mar 24 10:21:35 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 14027036 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id BEB2FC36002 for ; Mon, 24 Mar 2025 10:23:42 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1twewj-0002tj-9R; Mon, 24 Mar 2025 06:22:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1twewL-0002jm-MP for qemu-devel@nongnu.org; Mon, 24 Mar 2025 06:21:54 -0400 Received: from mail-ed1-x52d.google.com ([2a00:1450:4864:20::52d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1twewG-0006zm-N6 for qemu-devel@nongnu.org; Mon, 24 Mar 2025 06:21:52 -0400 Received: by mail-ed1-x52d.google.com with SMTP id 4fb4d7f45d1cf-5e5b6f3025dso6360617a12.1 for ; Mon, 24 Mar 2025 03:21:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1742811707; x=1743416507; 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; bh=gQxQFIFLKkSMaiU0IyJnJ1HI7neBwpu7NlcNgtElhLA=; b=plkzUrM+kJNKT0rJpwOLt6M3PjnXKCmW0qdRWznDoper23o8gIpYXYRjBh1yCSDucP FsJSjDpgtxQdOFg4QIfTtwVol60n+dx+VLVUNAeCXG8LjPqify75FWVDOG4hIhR4X5SO EogW7+5JqhyKfSxbJT3BQOtqaBPjAJ1ZvyygMAC4zdFqJsqclW04v9YIdmRr2e5VG1T/ stfmoe9rdMqyc90pSe7DxQjOfRiJcmXzwoGy/DAPQmifrC1kG09ntySU45TX0zQ5aMAl Ck5VM6X17uiA3qLPRXHNghQSUmv98gZWvRhlqFP78ST+0sA9hSoHzyROzkerlMcHaY2j TXTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742811707; x=1743416507; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gQxQFIFLKkSMaiU0IyJnJ1HI7neBwpu7NlcNgtElhLA=; b=ER5Ldg3hmWBnEGa/8AOVSLBUX/Fjm9BjvondhgohCQGZ/IcW1kG/iqU4soyAgeseMS oVlH/RV4kG1ippV4glvWu9/MARDMKlT3MA/IICmni07GbcDpVIO5o+h0IAuD/oAIYikQ W+0BbxhXSDVyv4FPo+Q6sKehz3I01ukztRj0UMekFimLiNVDPxgDg6Ll1UAZBOg/q3iE MFrObkV9iuqyr7Jca3N4JIWM6wPPgFRMo2SFiTybjDiTNmEU3HFzDkRAtBap5fkFQqdK N7+syLHZJL05UWwqYCrgb5eKI4u8XQZ37C2kC9Rzepb2lkqkbmQJzPCmgo4KkxhoXAJL pz0A== X-Gm-Message-State: AOJu0YznrWtA4CFArKO10NtH76wWOfCMiWoGXmTjT1/jBnla8Myi4euv c91DD7Qkl58n7nEIplfLTtudC/JuSM0qUZr9qnBajsrbdJ/FTrV+KBr+O2FsL9A= X-Gm-Gg: ASbGncsNwL8m8089TKhxXTT9bBEFOHokPjooWl3zFkhd+ez4JqePh7cVAGRksfTVp8v jC/52+I399kSNmFXtBmCxE2SQ63y0L+vMAvrtEzKOt81gu9YLnlBuWgSGISh0hZdwXBW6ckVOQ8 ZdaRdbJ2VbkZZSWhAcLYVlLEpxA//YHuhF1YcKhf54swUjNrj2cbaQIKx/BKHDCoN9eEDB/N2T2 9CqBeD6mqrKHwwPC/xK40XHXYZ/ucCM4P7g8QKZ+ukiZNd0yDazd4eSdpwmN0az0LcknvxM6429 Fkv8FRcHh9AaJJqRAwBMt+HXIcXnv7RGYEgOUXlFFfh98Kc= X-Google-Smtp-Source: AGHT+IG1NvIDnqPcUhX0DNHpjpgTWH/FxoPfqWOijYLg+UStAPD6cFivzQ1JCOsYqdQvZD5KZ+XV0g== X-Received: by 2002:a05:6402:42c6:b0:5e5:9a2b:167a with SMTP id 4fb4d7f45d1cf-5ebcd468ed3mr11530410a12.17.1742811706141; Mon, 24 Mar 2025 03:21:46 -0700 (PDT) Received: from draig.lan ([185.126.160.109]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5ebccf8ccb0sm5820322a12.30.2025.03.24.03.21.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Mar 2025 03:21:43 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id F1B335FB96; Mon, 24 Mar 2025 10:21:42 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Nicholas Piggin , "Edgar E. Iglesias" , Markus Armbruster , Akihiko Odaki , qemu-ppc@nongnu.org, Richard Henderson , Thomas Huth , David Gibson , Daniel Henrique Barboza , =?utf-8?q?Daniel_P=2E_Berr?= =?utf-8?q?ang=C3=A9?= , Ilya Leoshkevich , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?C?= =?utf-8?q?=C3=A9dric_Le_Goater?= , Peter Maydell , qemu-s390x@nongnu.org, Wainer dos Santos Moschetta , =?utf-8?q?Alex_Benn?= =?utf-8?q?=C3=A9e?= , David Hildenbrand , Pierrick Bouvier Subject: [PATCH v2 04/11] gdbstub: introduce target independent gdb register helper Date: Mon, 24 Mar 2025 10:21:35 +0000 Message-Id: <20250324102142.67022-5-alex.bennee@linaro.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250324102142.67022-1-alex.bennee@linaro.org> References: <20250324102142.67022-1-alex.bennee@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::52d; envelope-from=alex.bennee@linaro.org; helo=mail-ed1-x52d.google.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org The current helper.h functions rely on hard coded assumptions about target endianess to use the tswap macros. We also end up double swapping a bunch of values if the target can run in multiple endianess modes. Avoid this by getting the target to pass the endianess and size via a MemOp and fixing up appropriately. Reviewed-by: Pierrick Bouvier Signed-off-by: Alex Bennée --- v2 - use unsigned consistently - fix some rouge whitespace - add typed reg32/64 wrappers - pass void * to underlying helper to avoid casting --- include/gdbstub/registers.h | 55 +++++++++++++++++++++++++++++++++++++ gdbstub/gdbstub.c | 23 ++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 include/gdbstub/registers.h diff --git a/include/gdbstub/registers.h b/include/gdbstub/registers.h new file mode 100644 index 0000000000..2220f58efe --- /dev/null +++ b/include/gdbstub/registers.h @@ -0,0 +1,55 @@ +/* + * GDB Common Register Helpers + * + * Copyright (c) 2025 Linaro Ltd + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef GDB_REGISTERS_H +#define GDB_REGISTERS_H + +#include "exec/memop.h" + +/** + * gdb_get_register_value() - get register value for gdb + * mo: size and endian MemOp + * buf: GByteArray to store in target order + * val: pointer to value in host order + * + * This replaces the previous legacy read functions with a single + * function to handle all sizes. Passing @mo allows the target mode to + * be taken into account and avoids using hard coded tswap() macros. + * + * There are wrapper functions for the common sizes you can use to + * keep type checking. + * + * Returns the number of bytes written to the array. + */ +int gdb_get_register_value(MemOp op, GByteArray *buf, void *val); + +/** + * gdb_get_reg32_value() - type checked wrapper for gdb_get_register_value() + * mo: size and endian MemOp + * buf: GByteArray to store in target order + * val: pointer to uint32_t value in host order + */ +static inline int gdb_get_reg32_value(MemOp op, GByteArray *buf, uint32_t *val) { + g_assert((op & MO_SIZE) == MO_32); + return gdb_get_register_value(op, buf, val); +} + +/** + * gdb_get_reg64_value() - type checked wrapper for gdb_get_register_value() + * mo: size and endian MemOp + * buf: GByteArray to store in target order + * val: pointer to uint32_t value in host order + */ +static inline int gdb_get_reg64_value(MemOp op, GByteArray *buf, uint64_t *val) { + g_assert((op & MO_SIZE) == MO_64); + return gdb_get_register_value(op, buf, val); +} + +#endif /* GDB_REGISTERS_H */ + + diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c index b6d5e11e03..e799fdc019 100644 --- a/gdbstub/gdbstub.c +++ b/gdbstub/gdbstub.c @@ -32,6 +32,7 @@ #include "exec/gdbstub.h" #include "gdbstub/commands.h" #include "gdbstub/syscalls.h" +#include "gdbstub/registers.h" #ifdef CONFIG_USER_ONLY #include "accel/tcg/vcpu-state.h" #include "gdbstub/user.h" @@ -45,6 +46,7 @@ #include "system/runstate.h" #include "exec/replay-core.h" #include "exec/hwaddr.h" +#include "exec/memop.h" #include "internals.h" @@ -551,6 +553,27 @@ static int gdb_write_register(CPUState *cpu, uint8_t *mem_buf, int reg) return 0; } +/* + * Target helper function to read value into GByteArray, target + * supplies the size and target endianess via the MemOp. + */ +int gdb_get_register_value(MemOp op, GByteArray *buf, void *val) +{ + unsigned bytes = memop_size(op); + + if (op & MO_BSWAP) { + uint8_t *ptr = &((uint8_t *) val)[bytes - 1]; + for (unsigned i = bytes; i > 0; i--) { + g_byte_array_append(buf, ptr--, 1); + }; + } else { + g_byte_array_append(buf, val, bytes); + } + + return bytes; +} + + static void gdb_register_feature(CPUState *cpu, int base_reg, gdb_get_reg_cb get_reg, gdb_set_reg_cb set_reg, const GDBFeature *feature) From patchwork Mon Mar 24 10:21:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 14027039 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2DF3AC36002 for ; Mon, 24 Mar 2025 10:24:04 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1twewl-0002w4-VB; Mon, 24 Mar 2025 06:22:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1twewQ-0002l6-B5 for qemu-devel@nongnu.org; Mon, 24 Mar 2025 06:22:02 -0400 Received: from mail-ej1-x62b.google.com ([2a00:1450:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1twewH-0006zw-Mq for qemu-devel@nongnu.org; Mon, 24 Mar 2025 06:21:54 -0400 Received: by mail-ej1-x62b.google.com with SMTP id a640c23a62f3a-ac2bb7ca40bso934057366b.3 for ; Mon, 24 Mar 2025 03:21:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1742811707; x=1743416507; 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; bh=XjpRMxNrkVBin7ubrwGG1HVh+PO75FtdmPA/R4NJ0CI=; b=TkDIUzV5lYlMX/3iNusRqcEVOCqnwmXjcsUFkxxCSO6uN/cGBm8bklmF+N+iLsHAxS DIaIBOZYPFlK15ampgXUFliRj/YvOCbv9ARZllkrJZPbGAAmIVu3wCM2riryVGpyDMTt 9IanLYYKjxH2ZMihuLzHrYZxJlUaHNvxIpTpsX0Oy9Vl6vOYxnt9808QKIEeA33yAwhw 3/mhnr/GBim1DoYW0mu9JcfwnBIM3tug+bwYzH2mYbz/NQAe41XIEkqG2QoeFVLSi+RK Cry8vFwQDzfKEGyDTNoZ9Z48SImQEg0CP714MMtXZQagT297nCAgChcXNY4DbascX0Ft sVbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742811707; x=1743416507; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XjpRMxNrkVBin7ubrwGG1HVh+PO75FtdmPA/R4NJ0CI=; b=pvkYj1laxZ5EXJs0FJWeRtNEUhSQw4T7slQUgfDTq+FxCTTy3vZy3g6CVCGQMDo1lO XoYu5vJL8lTZ+s0WAOqM9CQ8tyENMhOYJ1aL/of5D7A8gvT6CDDd7eAzkPFODrznADLn 2LeXO8x1pTITKT7xA/NWIa0f81xn2hTik5wN5NbgE/GAYix+QZsY5HqEXTfgM6uTq2sC 3R4ENtwpX8UtK7fkAOOflqS1NpFfajEiO/c8KpRyG/Nc3rOu0cKy8PzBg4GITyzyBBfF RkAJ5Kp58HagZ/3m8nhsTKzSFziCUp4QiMeoEvTEAOvrAj8yJZI+EHQvd3mXvZWvUNYp q5uQ== X-Gm-Message-State: AOJu0YwOXnvq3G9j6N8+tzMugjbhtddxgR0xinD2wxMppaM2BTvhusVH HNpSsw9ng9pmv7cMc+gkr8ITIi3ZZTLECufxkpsVgn7AuZZv1278IVoS75l75jM= X-Gm-Gg: ASbGncvNB/2+5/8/q3TLOkS8hTXMbVAZywPdSjj6gDdLdtAukQR5Ig/NOVYx+ZXT5s2 Oi3ubedIKHoWJj5/dMZXuUeLt0tBG8I7cMxmRdZlxm+uzbATp5GJSF6/pt1uH0WfrCsyOoSU3aK 8N5f33D3mN3yev4/itwPO9GIPMLTtC7aEAG3AgNlQZ8Fi/G6JFnFQtGni56SJ2Lhc2i3RAE9nRx kK7KNstliAipEPNsuK8k6ldNGmuGAxzjhLL0AUeOOGQZeyZ7pkJJsT9mdvDyfRMRgHlCQPjHcWE /we6grJ5ES8GJ0ZAnVlUDj7yOX6ilnK0g+VuRgIXxMHCcOrtyUzQZscvJQ== X-Google-Smtp-Source: AGHT+IEeqeXGnv+FgmgF2VYDfGcTiZ/HHDBJqQBs+nkCWzneCes76V1qPeHoh5y+16Ha7awLmJcolA== X-Received: by 2002:a17:907:6d0f:b0:ac3:4487:6a99 with SMTP id a640c23a62f3a-ac3f2586dd2mr1234260066b.47.1742811707481; Mon, 24 Mar 2025 03:21:47 -0700 (PDT) Received: from draig.lan ([185.126.160.109]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac3ef8d3f17sm652317166b.63.2025.03.24.03.21.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Mar 2025 03:21:46 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id 1520F5FBC3; Mon, 24 Mar 2025 10:21:43 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Nicholas Piggin , "Edgar E. Iglesias" , Markus Armbruster , Akihiko Odaki , qemu-ppc@nongnu.org, Richard Henderson , Thomas Huth , David Gibson , Daniel Henrique Barboza , =?utf-8?q?Daniel_P=2E_Berr?= =?utf-8?q?ang=C3=A9?= , Ilya Leoshkevich , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?C?= =?utf-8?q?=C3=A9dric_Le_Goater?= , Peter Maydell , qemu-s390x@nongnu.org, Wainer dos Santos Moschetta , =?utf-8?q?Alex_Benn?= =?utf-8?q?=C3=A9e?= , David Hildenbrand , Pierrick Bouvier Subject: [PATCH v2 05/11] target/arm: convert 32 bit gdbstub to new helpers Date: Mon, 24 Mar 2025 10:21:36 +0000 Message-Id: <20250324102142.67022-6-alex.bennee@linaro.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250324102142.67022-1-alex.bennee@linaro.org> References: <20250324102142.67022-1-alex.bennee@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::62b; envelope-from=alex.bennee@linaro.org; helo=mail-ej1-x62b.google.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org For some of the helpers we need a temporary variable to copy from although we could add some helpers to return pointers into env in those cases if we wanted to. Reviewed-by: Pierrick Bouvier Signed-off-by: Alex Bennée --- v2 - use new wrappers - explicit MO_32 usage and reg32/64 helpers --- target/arm/gdbstub.c | 55 +++++++++++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 21 deletions(-) diff --git a/target/arm/gdbstub.c b/target/arm/gdbstub.c index 30068c2262..71d672ace5 100644 --- a/target/arm/gdbstub.c +++ b/target/arm/gdbstub.c @@ -20,7 +20,7 @@ #include "qemu/osdep.h" #include "cpu.h" #include "exec/gdbstub.h" -#include "gdbstub/helpers.h" +#include "gdbstub/registers.h" #include "gdbstub/commands.h" #include "system/tcg.h" #include "internals.h" @@ -33,12 +33,16 @@ typedef struct RegisterSysregFeatureParam { int n; } RegisterSysregFeatureParam; -/* Old gdb always expect FPA registers. Newer (xml-aware) gdb only expect - whatever the target description contains. Due to a historical mishap - the FPA registers appear in between core integer regs and the CPSR. - We hack round this by giving the FPA regs zero size when talking to a - newer gdb. */ - +/* + * Old gdb always expect FPA registers. Newer (xml-aware) gdb only + * expect whatever the target description contains. Due to a + * historical mishap the FPA registers appear in between core integer + * regs and the CPSR. We hack round this by giving the FPA regs zero + * size when talking to a newer gdb. + * + * While gdb cares about the memory endianess of the target all + * registers are passed in little-endian mode. + */ int arm_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n) { ARMCPU *cpu = ARM_CPU(cs); @@ -46,15 +50,17 @@ int arm_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n) if (n < 16) { /* Core integer register. */ - return gdb_get_reg32(mem_buf, env->regs[n]); + return gdb_get_reg32_value(MO_TE | MO_32, mem_buf, &env->regs[n]); } if (n == 25) { /* CPSR, or XPSR for M-profile */ + uint32_t reg; if (arm_feature(env, ARM_FEATURE_M)) { - return gdb_get_reg32(mem_buf, xpsr_read(env)); + reg = xpsr_read(env); } else { - return gdb_get_reg32(mem_buf, cpsr_read(env)); + reg = cpsr_read(env); } + return gdb_get_reg32_value(MO_TE | MO_32, mem_buf, ®); } /* Unknown register. */ return 0; @@ -115,19 +121,21 @@ static int vfp_gdb_get_reg(CPUState *cs, GByteArray *buf, int reg) /* VFP data registers are always little-endian. */ if (reg < nregs) { - return gdb_get_reg64(buf, *aa32_vfp_dreg(env, reg)); + return gdb_get_reg64_value(MO_TE | MO_64, buf, aa32_vfp_dreg(env, reg)); } if (arm_feature(env, ARM_FEATURE_NEON)) { /* Aliases for Q regs. */ nregs += 16; if (reg < nregs) { uint64_t *q = aa32_vfp_qreg(env, reg - 32); - return gdb_get_reg128(buf, q[0], q[1]); + return gdb_get_reg64_value(MO_TE | MO_64, buf, q); } } switch (reg - nregs) { + uint32_t fpcr; case 0: - return gdb_get_reg32(buf, vfp_get_fpscr(env)); + fpcr = vfp_get_fpscr(env); + return gdb_get_reg32_value(MO_TE | MO_32, buf, &fpcr); } return 0; } @@ -166,9 +174,11 @@ static int vfp_gdb_get_sysreg(CPUState *cs, GByteArray *buf, int reg) switch (reg) { case 0: - return gdb_get_reg32(buf, env->vfp.xregs[ARM_VFP_FPSID]); + return gdb_get_reg32_value(MO_TE | MO_32, buf, + &env->vfp.xregs[ARM_VFP_FPSID]); case 1: - return gdb_get_reg32(buf, env->vfp.xregs[ARM_VFP_FPEXC]); + return gdb_get_reg32_value(MO_TE | MO_32, buf, + &env->vfp.xregs[ARM_VFP_FPEXC]); } return 0; } @@ -196,7 +206,7 @@ static int mve_gdb_get_reg(CPUState *cs, GByteArray *buf, int reg) switch (reg) { case 0: - return gdb_get_reg32(buf, env->v7m.vpr); + return gdb_get_reg32_value(MO_TE | MO_32, buf, &env->v7m.vpr); default: return 0; } @@ -236,9 +246,11 @@ static int arm_gdb_get_sysreg(CPUState *cs, GByteArray *buf, int reg) ri = get_arm_cp_reginfo(cpu->cp_regs, key); if (ri) { if (cpreg_field_is_64bit(ri)) { - return gdb_get_reg64(buf, (uint64_t)read_raw_cp_reg(env, ri)); + uint64_t cpreg = read_raw_cp_reg(env, ri); + return gdb_get_register_value(MO_TEUQ, buf, (uint8_t *) &cpreg); } else { - return gdb_get_reg32(buf, (uint32_t)read_raw_cp_reg(env, ri)); + uint32_t cpreg = (uint32_t) read_raw_cp_reg(env, ri); + return gdb_get_register_value(MO_TEUL, buf, (uint8_t *) &cpreg); } } return 0; @@ -375,12 +387,12 @@ static uint32_t *m_sysreg_ptr(CPUARMState *env, MProfileSysreg reg, bool sec) static int m_sysreg_get(CPUARMState *env, GByteArray *buf, MProfileSysreg reg, bool secure) { - uint32_t *ptr = m_sysreg_ptr(env, reg, secure); + uint8_t *ptr = (uint8_t *) m_sysreg_ptr(env, reg, secure); if (ptr == NULL) { return 0; } - return gdb_get_reg32(buf, *ptr); + return gdb_get_register_value(MO_TEUL, buf, ptr); } static int arm_gdb_get_m_systemreg(CPUState *cs, GByteArray *buf, int reg) @@ -393,7 +405,8 @@ static int arm_gdb_get_m_systemreg(CPUState *cs, GByteArray *buf, int reg) * banked and non-banked bits. */ if (reg == M_SYSREG_CONTROL) { - return gdb_get_reg32(buf, arm_v7m_mrs_control(env, env->v7m.secure)); + uint32_t reg32 = arm_v7m_mrs_control(env, env->v7m.secure); + return gdb_get_register_value(MO_TEUL, buf, (uint8_t *) ®32); } return m_sysreg_get(env, buf, reg, env->v7m.secure); } From patchwork Mon Mar 24 10:21:37 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 14027034 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2D5B3C36002 for ; Mon, 24 Mar 2025 10:23:25 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1twewh-0002s6-9v; Mon, 24 Mar 2025 06:22:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1twewS-0002lY-ES for qemu-devel@nongnu.org; Mon, 24 Mar 2025 06:22:03 -0400 Received: from mail-ed1-x536.google.com ([2a00:1450:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1twewI-00070K-2w for qemu-devel@nongnu.org; Mon, 24 Mar 2025 06:21:55 -0400 Received: by mail-ed1-x536.google.com with SMTP id 4fb4d7f45d1cf-5e6ff035e9aso7771912a12.0 for ; Mon, 24 Mar 2025 03:21:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1742811708; x=1743416508; 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; bh=u48Ps24sxm/UA6HDLANAAPrFnpXIZhtYmXPm5ePf1Zo=; b=Zd9q2OoUyHnBJxZKAyTuM8aS3H0Rb7DJpDTWVTIOty47ZiHePwCDrOIufpU6iOjR2A b2ndvaiLot00onndqZmEakYXW5V3QrWVTuCf2qIs8YR5SiuCR47DhThXnvj90EBAbgg7 R6ZIAXpvRtVGOFPysfacAKN9kA2wnMYu921DdEY4DG9wXrlB01wow1arOSLY2vvPXzq/ lKUVneS8jLtsLpKwcmtpPSY4bUHH6IaNjhwLf5isCeCwYhzEYPpQdDBwTSbAwScQI9ky TbJniKEti7m8YXQOUDedbkq1ZFLdDyHssXwiIUxLh107gOKlmiXdR1HR9o4a0F1cE0u1 1zYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742811708; x=1743416508; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=u48Ps24sxm/UA6HDLANAAPrFnpXIZhtYmXPm5ePf1Zo=; b=MkOWiTWuQxTDsTI2yaoZIMG/o7HgLyfl4q+AwbI76XmfeE9ztr5dCH7HYoGZJFhvUl bQXMOLZQN8x5/oh5thQyZaCCiwtv0AwNgAB/knxnmdEZt6GATkyEa9E3DnZHrJJhMzYk d+PQBRM/psaQ+gewFmbVbOmWPICT4F8B7sTcwM9WSys4Nts2XMRHw1XaizBwF9FzXSEt pLFxceHVshnHf7Bjra3AivOygofKOXQFh+08qiQEvH/AcP+oM4AhatgZrdCPhmdz/fWY DzHyfDO5mNCnZqhDfYKOnoH6GAaPypoXRlICDFLNsihfSGV9Fh3fUUsQ7uPCj9IECsq3 6Yow== X-Gm-Message-State: AOJu0Yxz4f9FCWzBLlzuvYeTOe+Da3XX45qjp/Vlr3pE+m9xvmeAA9hr UhHW7saKEZKbhk8zaIgTNxkjWvM/AEHNM2s2JPl+1Y3gRTkVU4xcx+SMwrJFixo= X-Gm-Gg: ASbGncumD4SzfmW7vdXS9TidKqSaFB1fH2LX0+C5HaEN+0/Q/akBxDzpNUEp/y+yWae eTs0qVEPUXcaCvpOWcq3SXfmvfSmLTei+irhP4TLhvPS5vKO1ML/Romh0DJItZFJMw4OZc05lhW dDKfHQXpxik1Gj/VGSZiQztOXlmQY1yznXhTA182lPBiv89sgnbA1LyMS8JxB5PYWc25Qpo4Pde M/yTbevavLhAPKdSMf6s7SeEvjhuUTSXuBR8sSOREnO1PNCilFdF89wPBgZe5iqwVL4U35b9Biz ScvM+ej/t2xqPmrp/ZNjwWUUNVSi+4jlnLmUURszdfyFtE7Ib1pkcu+SRw== X-Google-Smtp-Source: AGHT+IEwua52C4RPesmyaGlRb+Z/zf/TNF62Ig2vgKkEa09zQ20VPcoOpjYfl+0DH8yyYAuYJZVM0w== X-Received: by 2002:a05:6402:5c9:b0:5e6:13a0:2321 with SMTP id 4fb4d7f45d1cf-5ebcd52d0dcmr9621665a12.32.1742811707977; Mon, 24 Mar 2025 03:21:47 -0700 (PDT) Received: from draig.lan ([185.126.160.109]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5ebccf68308sm5823794a12.5.2025.03.24.03.21.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Mar 2025 03:21:46 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id 2CD3B5FC1A; Mon, 24 Mar 2025 10:21:43 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Nicholas Piggin , "Edgar E. Iglesias" , Markus Armbruster , Akihiko Odaki , qemu-ppc@nongnu.org, Richard Henderson , Thomas Huth , David Gibson , Daniel Henrique Barboza , =?utf-8?q?Daniel_P=2E_Berr?= =?utf-8?q?ang=C3=A9?= , Ilya Leoshkevich , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?C?= =?utf-8?q?=C3=A9dric_Le_Goater?= , Peter Maydell , qemu-s390x@nongnu.org, Wainer dos Santos Moschetta , =?utf-8?q?Alex_Benn?= =?utf-8?q?=C3=A9e?= , David Hildenbrand , Pierrick Bouvier Subject: [PATCH v2 06/11] target/arm: convert 64 bit gdbstub to new helpers Date: Mon, 24 Mar 2025 10:21:37 +0000 Message-Id: <20250324102142.67022-7-alex.bennee@linaro.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250324102142.67022-1-alex.bennee@linaro.org> References: <20250324102142.67022-1-alex.bennee@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::536; envelope-from=alex.bennee@linaro.org; helo=mail-ed1-x536.google.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org For some of the helpers we need a temporary variable to copy from although we could add some helpers to return pointers into env in those cases if we wanted to. Signed-off-by: Alex Bennée --- v2 - use MO32/MO64 varients for reg sizes - use wrappers for 32/64 bit regs - do SVE Z registers in 128bit chunks --- target/arm/gdbstub64.c | 53 ++++++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 20 deletions(-) diff --git a/target/arm/gdbstub64.c b/target/arm/gdbstub64.c index 1a4dbec567..6ad10368e8 100644 --- a/target/arm/gdbstub64.c +++ b/target/arm/gdbstub64.c @@ -20,7 +20,7 @@ #include "qemu/log.h" #include "cpu.h" #include "internals.h" -#include "gdbstub/helpers.h" +#include "gdbstub/registers.h" #include "gdbstub/commands.h" #include "tcg/mte_helper.h" #if defined(CONFIG_USER_ONLY) && defined(CONFIG_LINUX) @@ -32,18 +32,21 @@ int aarch64_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n) { ARMCPU *cpu = ARM_CPU(cs); CPUARMState *env = &cpu->env; + MemOp mop = MO_TE; /* TE = LE for registers despite SCTLR.EE/E0E */ + uint32_t pstate; if (n < 31) { /* Core integer register. */ - return gdb_get_reg64(mem_buf, env->xregs[n]); + return gdb_get_reg64_value(mop | MO_64, mem_buf, &env->xregs[n]); } switch (n) { case 31: - return gdb_get_reg64(mem_buf, env->xregs[31]); + return gdb_get_reg64_value(mop | MO_64, mem_buf, &env->xregs[31]); case 32: - return gdb_get_reg64(mem_buf, env->pc); + return gdb_get_reg64_value(mop | MO_64, mem_buf, &env->pc); case 33: - return gdb_get_reg32(mem_buf, pstate_read(env)); + pstate = pstate_read(env); + return gdb_get_reg32_value(mop | MO_32, mem_buf, &pstate); } /* Unknown register. */ return 0; @@ -82,23 +85,27 @@ int aarch64_gdb_get_fpu_reg(CPUState *cs, GByteArray *buf, int reg) { ARMCPU *cpu = ARM_CPU(cs); CPUARMState *env = &cpu->env; + uint32_t fpr; switch (reg) { case 0 ... 31: { /* 128 bit FP register - quads are in LE order */ uint64_t *q = aa64_vfp_qreg(env, reg); - return gdb_get_reg128(buf, q[1], q[0]); + return gdb_get_register_value(MO_TE | MO_128, buf, q); } case 32: /* FPSR */ - return gdb_get_reg32(buf, vfp_get_fpsr(env)); + fpr = vfp_get_fpsr(env); + break; case 33: /* FPCR */ - return gdb_get_reg32(buf, vfp_get_fpcr(env)); + fpr = vfp_get_fpcr(env); + break; default: return 0; } + return gdb_get_reg32_value(MO_TE | MO_32, buf, &fpr); } int aarch64_gdb_set_fpu_reg(CPUState *cs, uint8_t *buf, int reg) @@ -132,30 +139,35 @@ int aarch64_gdb_get_sve_reg(CPUState *cs, GByteArray *buf, int reg) { ARMCPU *cpu = ARM_CPU(cs); CPUARMState *env = &cpu->env; + MemOp mop = MO_TE; /* TE = LE for registers despite SCTLR.EE/E0E */ + uint32_t fpr; switch (reg) { /* The first 32 registers are the zregs */ case 0 ... 31: { int vq, len = 0; + ARMVectorReg *zreg = &env->vfp.zregs[reg]; + for (vq = 0; vq < cpu->sve_max_vq; vq++) { - len += gdb_get_reg128(buf, - env->vfp.zregs[reg].d[vq * 2 + 1], - env->vfp.zregs[reg].d[vq * 2]); + len += gdb_get_register_value(mop | MO_128, buf, &zreg->d[vq * 2]); } return len; } case 32: - return gdb_get_reg32(buf, vfp_get_fpsr(env)); + fpr = vfp_get_fpsr(env); + return gdb_get_reg32_value(mop | MO_32, buf, &fpr); case 33: - return gdb_get_reg32(buf, vfp_get_fpcr(env)); + fpr = vfp_get_fpcr(env); + return gdb_get_reg32_value(mop | MO_32, buf, &fpr); /* then 16 predicates and the ffr */ case 34 ... 50: { int preg = reg - 34; int vq, len = 0; for (vq = 0; vq < cpu->sve_max_vq; vq = vq + 4) { - len += gdb_get_reg64(buf, env->vfp.pregs[preg].p[vq / 4]); + len += gdb_get_reg64_value(mop | MO_64, buf, + &env->vfp.pregs[preg].p[vq / 4]); } return len; } @@ -165,8 +177,8 @@ int aarch64_gdb_get_sve_reg(CPUState *cs, GByteArray *buf, int reg) * We report in Vector Granules (VG) which is 64bit in a Z reg * while the ZCR works in Vector Quads (VQ) which is 128bit chunks. */ - int vq = sve_vqm1_for_el(env, arm_current_el(env)) + 1; - return gdb_get_reg64(buf, vq * 2); + uint64_t vq = (sve_vqm1_for_el(env, arm_current_el(env)) + 1) * 2; + return gdb_get_reg64_value(mop | MO_64, buf, &vq); } default: /* gdbstub asked for something out our range */ @@ -248,10 +260,11 @@ int aarch64_gdb_get_pauth_reg(CPUState *cs, GByteArray *buf, int reg) bool is_data = !(reg & 1); bool is_high = reg & 2; ARMMMUIdx mmu_idx = arm_stage1_mmu_idx(env); - ARMVAParameters param; + ARMVAParameters param = aa64_va_parameters(env, -is_high, mmu_idx, + is_data, false); + uint64_t pauth_mask = pauth_ptr_mask(param); - param = aa64_va_parameters(env, -is_high, mmu_idx, is_data, false); - return gdb_get_reg64(buf, pauth_ptr_mask(param)); + return gdb_get_reg64_value(MO_TE | MO_64, buf, &pauth_mask); } default: return 0; @@ -399,7 +412,7 @@ int aarch64_gdb_get_tag_ctl_reg(CPUState *cs, GByteArray *buf, int reg) tcf0 = extract64(env->cp15.sctlr_el[1], 38, 2); - return gdb_get_reg64(buf, tcf0); + return gdb_get_reg64_value(MO_TE | MO_64, buf, &tcf0); } int aarch64_gdb_set_tag_ctl_reg(CPUState *cs, uint8_t *buf, int reg) From patchwork Mon Mar 24 10:21:38 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 14027041 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B956EC3600C for ; Mon, 24 Mar 2025 10:24:18 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1twewm-0002wG-6w; Mon, 24 Mar 2025 06:22:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1twewS-0002ld-Hn for qemu-devel@nongnu.org; Mon, 24 Mar 2025 06:22:04 -0400 Received: from mail-ed1-x529.google.com ([2a00:1450:4864:20::529]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1twewI-000719-JE for qemu-devel@nongnu.org; Mon, 24 Mar 2025 06:21:57 -0400 Received: by mail-ed1-x529.google.com with SMTP id 4fb4d7f45d1cf-5e5bc066283so6100477a12.0 for ; Mon, 24 Mar 2025 03:21:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1742811709; x=1743416509; 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; bh=anRXtUlHElY7q3eBibps8zhum/h3zcEOqynU32vgNmQ=; b=Mjk69l0DtWRbb5NyH/nSmM5U7TpOMFT7ZSgR8TrnB/MSdmace9C5GfA9haVMDIOcga z3pPrqsM7AfpwAC64gT8aqCZh3R+21xtT7lVBmuYwZovMUQGbV4IZasrDooJlGdllK/H TJ9DLaLOlZgh6bK+gBJeJqg4b3xMxQG9oltKK77pqscNmMZ5VhP02+qge/pJQF5vM3wX UvBdWFDql/qLAGlxIs3CVT8A3LTAsqPAbHQHSXiTbeAirmLTlZC+8ldeY9fTKPZYHh8A /Z3udvgQxNZL9twFWIKnklyi28vN7TL/WtpHFVZdVzFwVvDiqZdGI9rDVolESFakt+xa Ufjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742811709; x=1743416509; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=anRXtUlHElY7q3eBibps8zhum/h3zcEOqynU32vgNmQ=; b=tZfKGOm2+pbvjsVjWwpv/dDxkbbjAM1xzXXBeBQ4vnCzjo4BKIzUaOf7i1isD9n3t5 qr9lw298uRI/4uDTItQbZxZ4b9eM1mD7o9JKuUTLgzk9C6BP2x+T/RuV51ZcFvQKR7S7 K29/AjxnbHvf2p0P+65+Pa5FnOsG7maVNY5i9UhyU9vQzyhpvob4CyM3Rr5cr/iD3oOE 6jwML6541/rdtti88U5/sAQxAsNqin2kqZojSxIWsdB1Qtwio3Z0XgxpuKfYKoHgiQHY ipv1vG1QLYdbh6QyNfe/HKRemqXaShVr7nrUPtjkUArBPsHZUK4mJezPa20UdynUz1XL L2pA== X-Gm-Message-State: AOJu0YxRJcCEqLlC8Nv/TkqWVI7F2nA6KZpACh1qhoE2JU4Wm/ckmMh/ 6g0lzjBKoROEjecMzzIumAcsTFwPTVoZTJXemY+tJWrtSPJ/uiPbHBXlOn9E6wE= X-Gm-Gg: ASbGncuHyXgfpfLO+UzzMJw340SvoxlBKUNAgh59/xHHcsQQ3dmXKejq0JtDg5DPL2A /kzFuyxyIkAqGoqP6O81FNOuHz+VtTjF1uF/iqDnQZ42Lgv1DcDGfsJLQV8miNT7madOpL3Kd0o AXSEwjc9UBBF3vU5J8/qgUpCaeZhs1FQ2qaabEQ5xSiOUwdUCZ8W66936rcNaC492uEs0f7EKww gldJ//EeW4pQ+m9iVjnppjG6UmbrBRY/kDIlHZNRA5wtuSu0cZ297gMft1Bo0uON695R87w7XHn tGoD2ak+E6fO+IQ6r99NgBkLC2FMkkIdRumjjubqEbjTmwQ= X-Google-Smtp-Source: AGHT+IFOtION1xBThZUSS0Gi/bW/CsiHB5vJFSHH7hDjp4LaP6NYiBydytfxSLpMaxDcS97CrVw1tA== X-Received: by 2002:a17:907:2d14:b0:abf:75d7:72a2 with SMTP id a640c23a62f3a-ac3f24ada3dmr1066907666b.38.1742811708863; Mon, 24 Mar 2025 03:21:48 -0700 (PDT) Received: from draig.lan ([185.126.160.109]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac3efd47f39sm642345566b.169.2025.03.24.03.21.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Mar 2025 03:21:46 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id 457295FD05; Mon, 24 Mar 2025 10:21:43 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Nicholas Piggin , "Edgar E. Iglesias" , Markus Armbruster , Akihiko Odaki , qemu-ppc@nongnu.org, Richard Henderson , Thomas Huth , David Gibson , Daniel Henrique Barboza , =?utf-8?q?Daniel_P=2E_Berr?= =?utf-8?q?ang=C3=A9?= , Ilya Leoshkevich , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?C?= =?utf-8?q?=C3=A9dric_Le_Goater?= , Peter Maydell , qemu-s390x@nongnu.org, Wainer dos Santos Moschetta , =?utf-8?q?Alex_Benn?= =?utf-8?q?=C3=A9e?= , David Hildenbrand , Pierrick Bouvier Subject: [PATCH v2 07/11] target/ppc: expand comment on FP/VMX/VSX access functions Date: Mon, 24 Mar 2025 10:21:38 +0000 Message-Id: <20250324102142.67022-8-alex.bennee@linaro.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250324102142.67022-1-alex.bennee@linaro.org> References: <20250324102142.67022-1-alex.bennee@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::529; envelope-from=alex.bennee@linaro.org; helo=mail-ed1-x529.google.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Mainly as an aid to myself getting confused too many bswaps deep into the code. Reviewed-by: Pierrick Bouvier Signed-off-by: Alex Bennée Reviewed-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- target/ppc/cpu.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index efab54a068..1e833ade04 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -2906,7 +2906,12 @@ static inline bool lsw_reg_in_range(int start, int nregs, int rx) (start + nregs > 32 && (rx >= start || rx < start + nregs - 32)); } -/* Accessors for FP, VMX and VSX registers */ +/* + * Access functions for FP, VMX and VSX registers + * + * The register is stored as a 128 bit host endian value so we need to + * take that into account when accessing smaller parts of it. + */ #if HOST_BIG_ENDIAN #define VsrB(i) u8[i] #define VsrSB(i) s8[i] From patchwork Mon Mar 24 10:21:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 14027033 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CDAD6C36005 for ; Mon, 24 Mar 2025 10:23:15 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1twewk-0002uJ-8G; Mon, 24 Mar 2025 06:22:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1twewS-0002lb-HN for qemu-devel@nongnu.org; Mon, 24 Mar 2025 06:22:03 -0400 Received: from mail-ej1-x629.google.com ([2a00:1450:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1twewL-00071r-1L for qemu-devel@nongnu.org; Mon, 24 Mar 2025 06:21:58 -0400 Received: by mail-ej1-x629.google.com with SMTP id a640c23a62f3a-ac2a9a74d9cso854931166b.1 for ; Mon, 24 Mar 2025 03:21:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1742811710; x=1743416510; 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; bh=iW3Fn8eqm0D6+xTGEoDksVr71AgPRXfZU523o0DiCP4=; b=VBrvkZpkdOFOY96wtkxxFD9XOYmXzJYtln6RYHrAGHmjzb84XVKfudzr3xNZdYZOzi SBzHrMbjQkMvwrVtsfvUbhEcHrgwWP/J757IWQqtad1KWBvYkCvcufQ8F6aYXp5b4Cmp txO3u2fzCZjl2IDL0UJ6lMpM/DqvobEJY6ccIFNPTE+MLMpN41QB48IF1vC+aqW/qI+e 84xvtunpCciW9/1Cd6QhIhnagc1XkdyJu8ZNoJ4Xb+p7QT4xLG26nC3T0iIUG6wRY1IT jNvuDAI/sMoETn98vpqNm47yD/H5GUJWQ1oChHB/3vtEwSlCBjXK8IafhfdI+2V0tglT 76SA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742811710; x=1743416510; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=iW3Fn8eqm0D6+xTGEoDksVr71AgPRXfZU523o0DiCP4=; b=gn1//GbGtoHDfd8Eq1MREdYG1/gE9X5T+dUglCjUxcfutmbGI2Ejsan09y5Q+LbdoG mQo2cGOWBF/UZ0d86sAGMFMXVsYqlMLp5w6oX205QgjbdjfEvOI9kJT7cHCFBXmMUQjN vnD3kT3/Vv8aqGl7C5SSUzLfEHUYmT3sIA+xAukv1iKKdzqAH6GcM3VOkVYdrPFLpLV5 yi8Y9dymIayBRh4RMVQQNvSBHVtPrw1OEOqbSaKUcWF8jMxzhh3TgzZKxk1LI00UI4fg Xg7m1jxybrFmRGxscB7oyblldQINrq5lf3jN8ywyuibq7xYZJmmRDV/1fvnMttTJnRwX ejzQ== X-Gm-Message-State: AOJu0YymtnAGP+PpO3jwczg0RAnjMGKMsWNQR2kq48y7G5bDVuanUvnY jJ8RYskZ9FNkk+MwAXm6GLo67hbmLMrtF1hh78JyRzreiOZuYTXwy5A1dIBBhf4= X-Gm-Gg: ASbGnct8hjfQJTt68Qkle9jdPJdgp0reRbqIetvl59OOAp/oQsPyThZNy3zQL8qKVi/ ncm0Hv47Q/q8arQ1YDBpo6nR4Vxq2W+HfNk2uirZh7qOiy08MWhOnUZWiGBhNFcjRQYPx9YsX+V aEXxkWkBExe41xVyl0AtM5VJNUqrDr9llHdadmhxigXfkIu1OjEh06KiHIk+wrqS9n55CjI9srk ucIBjeIoNLDK1KXXg8uP9j+YpUHPaJTzHRSJeEoaQdBmkeCPUvtdx59opsKB/Dn9wC2r90QXcjQ Ln2CWqL97P9ZF0XJO8P7sgoJRyBueDc0rUSRaF4FiUclUsw= X-Google-Smtp-Source: AGHT+IHTbIoZ9tLGno6JURbszhYf9MxRehBTNDNSIVqj6/q4UcG2lHlak8H2DzY/HL+KYEfVcTRB4Q== X-Received: by 2002:a17:907:f50a:b0:abf:425d:5d3 with SMTP id a640c23a62f3a-ac3f251f180mr1253979066b.40.1742811709663; Mon, 24 Mar 2025 03:21:49 -0700 (PDT) Received: from draig.lan ([185.126.160.109]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac3ef868769sm651607566b.14.2025.03.24.03.21.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Mar 2025 03:21:46 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id 5C3C85FD17; Mon, 24 Mar 2025 10:21:43 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Nicholas Piggin , "Edgar E. Iglesias" , Markus Armbruster , Akihiko Odaki , qemu-ppc@nongnu.org, Richard Henderson , Thomas Huth , David Gibson , Daniel Henrique Barboza , =?utf-8?q?Daniel_P=2E_Berr?= =?utf-8?q?ang=C3=A9?= , Ilya Leoshkevich , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?C?= =?utf-8?q?=C3=A9dric_Le_Goater?= , Peter Maydell , qemu-s390x@nongnu.org, Wainer dos Santos Moschetta , =?utf-8?q?Alex_Benn?= =?utf-8?q?=C3=A9e?= , David Hildenbrand , Pierrick Bouvier Subject: [PATCH v2 08/11] target/ppc: make ppc_maybe_bswap_register static Date: Mon, 24 Mar 2025 10:21:39 +0000 Message-Id: <20250324102142.67022-9-alex.bennee@linaro.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250324102142.67022-1-alex.bennee@linaro.org> References: <20250324102142.67022-1-alex.bennee@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::629; envelope-from=alex.bennee@linaro.org; helo=mail-ej1-x629.google.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org It's not used outside of the gdbstub code. Reviewed-by: Pierrick Bouvier Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée Reviewed-by: Richard Henderson Reviewed-by: Pierrick Bouvier --- target/ppc/cpu.h | 1 - target/ppc/gdbstub.c | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 1e833ade04..950bb6e06c 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -3016,7 +3016,6 @@ static inline bool ppc_interrupts_little_endian(PowerPCCPU *cpu, bool hv) void dump_mmu(CPUPPCState *env); -void ppc_maybe_bswap_register(CPUPPCState *env, uint8_t *mem_buf, int len); void ppc_store_vscr(CPUPPCState *env, uint32_t vscr); uint32_t ppc_get_vscr(CPUPPCState *env); void ppc_set_cr(CPUPPCState *env, uint64_t cr); diff --git a/target/ppc/gdbstub.c b/target/ppc/gdbstub.c index 3b28d4e21c..c09e93abaf 100644 --- a/target/ppc/gdbstub.c +++ b/target/ppc/gdbstub.c @@ -81,7 +81,7 @@ static int ppc_gdb_register_len(int n) * TARGET_BIG_ENDIAN is always set, and we must check the current * mode of the chip to see if we're running in little-endian. */ -void ppc_maybe_bswap_register(CPUPPCState *env, uint8_t *mem_buf, int len) +static void ppc_maybe_bswap_register(CPUPPCState *env, uint8_t *mem_buf, int len) { #ifndef CONFIG_USER_ONLY if (!FIELD_EX64(env->msr, MSR, LE)) { From patchwork Mon Mar 24 10:21:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 14027037 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C3C92C36002 for ; Mon, 24 Mar 2025 10:23:48 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1twewq-00032u-Ep; Mon, 24 Mar 2025 06:22:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1twewU-0002lo-3d for qemu-devel@nongnu.org; Mon, 24 Mar 2025 06:22:06 -0400 Received: from mail-ej1-x629.google.com ([2a00:1450:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1twewL-00072g-Sq for qemu-devel@nongnu.org; Mon, 24 Mar 2025 06:22:01 -0400 Received: by mail-ej1-x629.google.com with SMTP id a640c23a62f3a-abbb12bea54so509651966b.0 for ; Mon, 24 Mar 2025 03:21:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1742811710; x=1743416510; 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; bh=sKRs4BLeOk1m6YkwKmGBAfW8cTZegbhEme+UuM3G2r8=; b=QlOQ6ezo1HY7o6LBqUFj1DNwDE5Mgzx6KjAMYGbpUyHeC4IPSCoZro6UmLB2sge2g8 QnGmHcq2nBH1nbgnnOY4+DyG4AbVUKaA4EVVt+R9UA9CYnNzDWcUDntUPSnbiPq8I/VL ybyrcY9FGnI43SVB/ZBrsZyU/Ln6wO+1VG+TbMoa82H2swZtUEi1qM+NVrIy4s8qscW3 9cDOb8fD1w3Qqf0hhi4uh68w2+mzb/oYa0m+zbbP0ho3NIYqtUb8Fkx84eRLkTEZAblo jcPavX9Zgzqi9KsHLHatwLx2HGfNft1Ml14lsexxDjH98f5FMfMq9z3aDgM86vRUHRov 8Xtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742811710; x=1743416510; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sKRs4BLeOk1m6YkwKmGBAfW8cTZegbhEme+UuM3G2r8=; b=bJq94al3cacib28KeFjQ19pxRtZoeNdTTqiV1nwGh18j4hEncFfj2GQOd2BxcuXxSk eEvfadgjUg+UMB7CrHh6tqs+HhPs/qnm4kwRrmnMb6Hwh7W+mT2DewZjCbSyJjEBlbSl NFzuqB5SGpA4FnV12Sk+I25sJ7Tah9ckjKCnfigzjt7nPVhLy2pc0aUPyfs6kICRraxp hmGElbWxoHmHgAZW/9p9GG89nAJpbVSxdfC1QPAHEsscNnqlFl/BPr0k6R1SNDAheZst 2hHEWgO+v1kqJwmAvCm94KFBzO8157LqpcD/D27Snf2LkUGq3v0Viut3asiup0MHsFwt b5Mg== X-Gm-Message-State: AOJu0YyDpf8meuH/dCGnJ7F9hp3g52Gpaz01BHbo9qAA7ZqxjTU8ABpu olwNDIGgtZodVkReXtkWzh3ALxpdYVsL3xS5NMwTv6Kl64RYmd1SQTGBp3uUQt0= X-Gm-Gg: ASbGnct/MHzbSZFFx1ASY0i8RecFaQPTiaq9ugV3jXGValvnxnJkB515FdBy9ie/5lx zsMpPpEsWi2fpjGzaS33cuWDxRo4+RNpHkF23qiz8TtPxSoCfB+RRaWv6X4keAzA9OTadE0s6fW o724mD2EaI28kXZhz6u0MNdh6nvTAU8S1rcDbl8Tz7nUICyCSflJ2eW8xPRPIT4uhMa+G4qUiA+ P4UOtFhroYxEMhNUnE6LeVPGRx/Kr58eEyWbujhbt9CC1aVnCsM9C1WzMoEwNfj22lGnWFrbdiV 6g1gtQ5NLjAXf5jd35JbCgl8eVuPNnUZ8jS3RDjW4RN4RPE= X-Google-Smtp-Source: AGHT+IEd1ubeA6VqHngadLwmANX9ge6i6Mz02m9+49Zlw0aFd38rf0JaBY4Z476t3W2qbHGeY8IWDg== X-Received: by 2002:a17:907:1b1e:b0:ac3:c7bd:e436 with SMTP id a640c23a62f3a-ac3f252f763mr1248300266b.51.1742811710381; Mon, 24 Mar 2025 03:21:50 -0700 (PDT) Received: from draig.lan ([185.126.160.109]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac3ef8d3f17sm652319266b.63.2025.03.24.03.21.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Mar 2025 03:21:46 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id 70E845FD7E; Mon, 24 Mar 2025 10:21:43 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Nicholas Piggin , "Edgar E. Iglesias" , Markus Armbruster , Akihiko Odaki , qemu-ppc@nongnu.org, Richard Henderson , Thomas Huth , David Gibson , Daniel Henrique Barboza , =?utf-8?q?Daniel_P=2E_Berr?= =?utf-8?q?ang=C3=A9?= , Ilya Leoshkevich , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?C?= =?utf-8?q?=C3=A9dric_Le_Goater?= , Peter Maydell , qemu-s390x@nongnu.org, Wainer dos Santos Moschetta , =?utf-8?q?Alex_Benn?= =?utf-8?q?=C3=A9e?= , David Hildenbrand , Pierrick Bouvier Subject: [PATCH v2 09/11] target/ppc: convert gdbstub to new helpers Date: Mon, 24 Mar 2025 10:21:40 +0000 Message-Id: <20250324102142.67022-10-alex.bennee@linaro.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250324102142.67022-1-alex.bennee@linaro.org> References: <20250324102142.67022-1-alex.bennee@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::629; envelope-from=alex.bennee@linaro.org; helo=mail-ej1-x629.google.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org By passing the explicit state of LE/BE via the memop we can avoid the messing about we do with ppc_maybe_bswap_register() at least for supplying register values to gdbstub. The fact we still need the helper for setting the values probably indicates we could do with a reverse helper, possibly to setting env vars directly? This is complicated by aliasing though. We also have to deal with heavy usage of target_ulong so we copy some macro stuff from the old helpers.h and add a gdb_get_regl_value() helper. Signed-off-by: Alex Bennée --- v2 - use new helpers - fix bunch of target_ulong cases --- target/ppc/gdbstub.c | 195 ++++++++++++++++++++++++------------------- 1 file changed, 111 insertions(+), 84 deletions(-) diff --git a/target/ppc/gdbstub.c b/target/ppc/gdbstub.c index c09e93abaf..b96c3ac5b8 100644 --- a/target/ppc/gdbstub.c +++ b/target/ppc/gdbstub.c @@ -20,7 +20,7 @@ #include "qemu/osdep.h" #include "cpu.h" #include "exec/gdbstub.h" -#include "gdbstub/helpers.h" +#include "gdbstub/registers.h" #include "internal.h" static int ppc_gdb_register_len_apple(int n) @@ -74,12 +74,12 @@ static int ppc_gdb_register_len(int n) } /* - * We need to present the registers to gdb in the "current" memory - * ordering. For user-only mode we get this for free; - * TARGET_BIG_ENDIAN is set to the proper ordering for the - * binary, and cannot be changed. For system mode, - * TARGET_BIG_ENDIAN is always set, and we must check the current - * mode of the chip to see if we're running in little-endian. + * We need to map the target endian registers from gdb in the + * "current" memory ordering. For user-only mode we get this for free; + * TARGET_BIG_ENDIAN is set to the proper ordering for the binary, and + * cannot be changed. For system mode, TARGET_BIG_ENDIAN is always + * set, and we must check the current mode of the chip to see if we're + * running in little-endian. */ static void ppc_maybe_bswap_register(CPUPPCState *env, uint8_t *mem_buf, int len) { @@ -98,6 +98,41 @@ static void ppc_maybe_bswap_register(CPUPPCState *env, uint8_t *mem_buf, int len #endif } +/* + * We need to present the registers to gdb in the "current" memory + * ordering. For user-only mode this is hardwired by TARGET_BIG_ENDIAN + * and cannot be changed. For system mode we must check the current + * mode of the chip to see if we're running in little-endian. + */ +static MemOp ppc_gdb_memop(CPUPPCState *env, int len) +{ +#ifndef CONFIG_USER_ONLY + MemOp end = FIELD_EX64(env->msr, MSR, LE) ? MO_LE : MO_BE; +#else + #ifdef TARGET_BIG_ENDIAN + MemOp end = MO_BE; + #else + MemOp end = MO_LE; + #endif +#endif + + return size_memop(len) | end; +} + +/* + * Helpers copied from helpers.h just for handling target_ulong values + * from gdbstub's GByteArray based on what the build config is. This + * will need fixing for single-binary. + */ + +#if TARGET_LONG_BITS == 64 +#define ldtul_p(addr) ldq_p(addr) +#define gdb_get_regl_value(m, b, v) gdb_get_reg64_value(m, b, v) +#else +#define ldtul_p(addr) ldl_p(addr) +#define gdb_get_regl_value(m, b, v) gdb_get_reg32_value(m, b, v) +#endif + /* * Old gdb always expects FP registers. Newer (xml-aware) gdb only * expects whatever the target description contains. Due to a @@ -109,51 +144,50 @@ static void ppc_maybe_bswap_register(CPUPPCState *env, uint8_t *mem_buf, int len int ppc_cpu_gdb_read_register(CPUState *cs, GByteArray *buf, int n) { CPUPPCState *env = cpu_env(cs); - uint8_t *mem_buf; int r = ppc_gdb_register_len(n); + MemOp mo; if (!r) { return r; } + mo = ppc_gdb_memop(env, r); + if (n < 32) { /* gprs */ - gdb_get_regl(buf, env->gpr[n]); + return gdb_get_regl_value(mo, buf, &env->gpr[n]); } else { switch (n) { case 64: - gdb_get_regl(buf, env->nip); - break; + return gdb_get_regl_value(mo, buf, &env->nip); case 65: - gdb_get_regl(buf, env->msr); - break; + return gdb_get_regl_value(mo, buf, &env->msr); case 66: { uint32_t cr = ppc_get_cr(env); - gdb_get_reg32(buf, cr); - break; + return gdb_get_register_value(ppc_gdb_memop(env, 4), buf, &cr); } case 67: - gdb_get_regl(buf, env->lr); + return gdb_get_regl_value(mo, buf, &env->lr); break; case 68: - gdb_get_regl(buf, env->ctr); + return gdb_get_regl_value(mo, buf, &env->ctr); break; case 69: - gdb_get_reg32(buf, cpu_read_xer(env)); - break; + uint32_t val = cpu_read_xer(env); + return gdb_get_register_value(ppc_gdb_memop(env, 4), buf, &val); } } - mem_buf = buf->data + buf->len - r; - ppc_maybe_bswap_register(env, mem_buf, r); - return r; + + return 0; } int ppc_cpu_gdb_read_register_apple(CPUState *cs, GByteArray *buf, int n) { CPUPPCState *env = cpu_env(cs); - uint8_t *mem_buf; int r = ppc_gdb_register_len_apple(n); + MemOp mo = ppc_gdb_memop(env, r); + int actual = 0; if (!r) { return r; @@ -161,44 +195,48 @@ int ppc_cpu_gdb_read_register_apple(CPUState *cs, GByteArray *buf, int n) if (n < 32) { /* gprs */ - gdb_get_reg64(buf, env->gpr[n]); + actual = gdb_get_regl_value(mo, buf, &env->gpr[n]); } else if (n < 64) { /* fprs */ - gdb_get_reg64(buf, *cpu_fpr_ptr(env, n - 32)); + actual = gdb_get_reg64_value(mo, buf, cpu_fpr_ptr(env, n - 32)); } else if (n < 96) { - /* Altivec */ - gdb_get_reg64(buf, n - 64); - gdb_get_reg64(buf, 0); + /* Altivec - where are they? ppc_vsr_t vsr[64]? */ + uint64_t empty = 0; + actual = gdb_get_reg64_value(mo, buf, &empty); + actual = gdb_get_reg64_value(mo, buf, &empty); } else { switch (n) { case 64 + 32: - gdb_get_reg64(buf, env->nip); + actual = gdb_get_regl_value(mo, buf, &env->nip); break; case 65 + 32: - gdb_get_reg64(buf, env->msr); + actual = gdb_get_regl_value(mo, buf, &env->msr); break; case 66 + 32: - { - uint32_t cr = ppc_get_cr(env); - gdb_get_reg32(buf, cr); - break; - } + { + uint32_t cr = ppc_get_cr(env); + actual = gdb_get_reg32_value(mo, buf, &cr); + break; + } case 67 + 32: - gdb_get_reg64(buf, env->lr); + actual = gdb_get_regl_value(mo, buf, &env->lr); break; case 68 + 32: - gdb_get_reg64(buf, env->ctr); + actual = gdb_get_regl_value(mo, buf, &env->ctr); break; case 69 + 32: - gdb_get_reg32(buf, cpu_read_xer(env)); + { + uint32_t xer = cpu_read_xer(env); + actual = gdb_get_reg32_value(mo, buf, &xer); break; + } case 70 + 32: - gdb_get_reg64(buf, env->fpscr); + actual = gdb_get_regl_value(mo, buf, &env->fpscr); break; } } - mem_buf = buf->data + buf->len - r; - ppc_maybe_bswap_register(env, mem_buf, r); + + g_assert(r == actual); return r; } @@ -210,6 +248,9 @@ int ppc_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n) if (!r) { return r; } + + g_assert(r == n); + ppc_maybe_bswap_register(env, mem_buf, r); if (n < 32) { /* gprs */ @@ -367,18 +408,16 @@ static int gdb_get_spr_reg(CPUState *cs, GByteArray *buf, int n) { PowerPCCPU *cpu = POWERPC_CPU(cs); CPUPPCState *env = &cpu->env; + MemOp mo = ppc_gdb_memop(env, TARGET_LONG_SIZE); + target_ulong val; int reg; - int len; reg = gdb_find_spr_idx(env, n); if (reg < 0) { return 0; } - len = TARGET_LONG_SIZE; - /* Handle those SPRs that are not part of the env->spr[] array */ - target_ulong val; switch (reg) { #if defined(TARGET_PPC64) case SPR_CFAR: @@ -400,10 +439,7 @@ static int gdb_get_spr_reg(CPUState *cs, GByteArray *buf, int n) default: val = env->spr[reg]; } - gdb_get_regl(buf, val); - - ppc_maybe_bswap_register(env, gdb_get_reg_ptr(buf, len), len); - return len; + return gdb_get_regl_value(mo, buf, &val); } static int gdb_set_spr_reg(CPUState *cs, uint8_t *mem_buf, int n) @@ -441,18 +477,14 @@ static int gdb_get_float_reg(CPUState *cs, GByteArray *buf, int n) { PowerPCCPU *cpu = POWERPC_CPU(cs); CPUPPCState *env = &cpu->env; - uint8_t *mem_buf; + MemOp mo; if (n < 32) { - gdb_get_reg64(buf, *cpu_fpr_ptr(env, n)); - mem_buf = gdb_get_reg_ptr(buf, 8); - ppc_maybe_bswap_register(env, mem_buf, 8); - return 8; + mo = ppc_gdb_memop(env, 8); + return gdb_get_reg64_value(mo, buf, cpu_fpr_ptr(env, n)); } if (n == 32) { - gdb_get_reg32(buf, env->fpscr); - mem_buf = gdb_get_reg_ptr(buf, 4); - ppc_maybe_bswap_register(env, mem_buf, 4); - return 4; + mo = ppc_gdb_memop(env, TARGET_LONG_SIZE); + return gdb_get_regl_value(mo, buf, &env->fpscr); } return 0; } @@ -479,26 +511,21 @@ static int gdb_get_avr_reg(CPUState *cs, GByteArray *buf, int n) { PowerPCCPU *cpu = POWERPC_CPU(cs); CPUPPCState *env = &cpu->env; - uint8_t *mem_buf; + MemOp mo; if (n < 32) { ppc_avr_t *avr = cpu_avr_ptr(env, n); - gdb_get_reg128(buf, avr->VsrD(0), avr->VsrD(1)); - mem_buf = gdb_get_reg_ptr(buf, 16); - ppc_maybe_bswap_register(env, mem_buf, 16); - return 16; + mo = ppc_gdb_memop(env, 16); + return gdb_get_register_value(mo, buf, avr); } if (n == 32) { - gdb_get_reg32(buf, ppc_get_vscr(env)); - mem_buf = gdb_get_reg_ptr(buf, 4); - ppc_maybe_bswap_register(env, mem_buf, 4); - return 4; + uint32_t vscr = ppc_get_vscr(env); + mo = ppc_gdb_memop(env, 4); + return gdb_get_reg32_value(mo, buf, &vscr); } if (n == 33) { - gdb_get_reg32(buf, (uint32_t)env->spr[SPR_VRSAVE]); - mem_buf = gdb_get_reg_ptr(buf, 4); - ppc_maybe_bswap_register(env, mem_buf, 4); - return 4; + mo = ppc_gdb_memop(env, TARGET_LONG_SIZE); + return gdb_get_regl_value(mo, buf, &env->spr[SPR_VRSAVE]); } return 0; } @@ -532,25 +559,25 @@ static int gdb_get_spe_reg(CPUState *cs, GByteArray *buf, int n) { PowerPCCPU *cpu = POWERPC_CPU(cs); CPUPPCState *env = &cpu->env; + MemOp mo; if (n < 32) { #if defined(TARGET_PPC64) - gdb_get_reg32(buf, env->gpr[n] >> 32); - ppc_maybe_bswap_register(env, gdb_get_reg_ptr(buf, 4), 4); + uint32_t low = env->gpr[n] >> 32; + mo = ppc_gdb_memop(env, 4); + return gdb_get_reg32_value(mo, buf, &low); #else - gdb_get_reg32(buf, env->gprh[n]); + mo = ppc_gdb_memop(env, 4); + return gdb_get_reg32_value(mo, buf, &env->gprh[n]); #endif - return 4; } if (n == 32) { - gdb_get_reg64(buf, env->spe_acc); - ppc_maybe_bswap_register(env, gdb_get_reg_ptr(buf, 8), 8); - return 8; + mo = ppc_gdb_memop(env, 8); + return gdb_get_reg64_value(mo, buf, &env->spe_acc); } if (n == 33) { - gdb_get_reg32(buf, env->spe_fscr); - ppc_maybe_bswap_register(env, gdb_get_reg_ptr(buf, 4), 4); - return 4; + mo = ppc_gdb_memop(env, 4); + return gdb_get_reg32_value(mo, buf, &env->spe_fscr); } return 0; } @@ -593,9 +620,9 @@ static int gdb_get_vsx_reg(CPUState *cs, GByteArray *buf, int n) CPUPPCState *env = &cpu->env; if (n < 32) { - gdb_get_reg64(buf, *cpu_vsrl_ptr(env, n)); - ppc_maybe_bswap_register(env, gdb_get_reg_ptr(buf, 8), 8); - return 8; + return gdb_get_reg64_value(ppc_gdb_memop(env, 8), + buf, + cpu_vsrl_ptr(env, n)); } return 0; } From patchwork Mon Mar 24 10:21:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 14027032 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 47ED2C36002 for ; Mon, 24 Mar 2025 10:23:14 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1twewn-0002yb-Tq; Mon, 24 Mar 2025 06:22:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1twewQ-0002l5-AW for qemu-devel@nongnu.org; Mon, 24 Mar 2025 06:22:02 -0400 Received: from mail-ed1-x529.google.com ([2a00:1450:4864:20::529]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1twewI-00070b-36 for qemu-devel@nongnu.org; Mon, 24 Mar 2025 06:21:54 -0400 Received: by mail-ed1-x529.google.com with SMTP id 4fb4d7f45d1cf-5e66407963fso7481435a12.2 for ; Mon, 24 Mar 2025 03:21:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1742811708; x=1743416508; 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; bh=bvEFguP/n+l5iVEh8y4wIJsiJEQKzDjI+RP2AOZVDdk=; b=IMLDehX5gru1Lz+NCnyenpbRBbO7CUE5E9xIT7+rIp7jfIo+BAgoF3lLhjKRo1QVkE EqmSNYHZybU8MBBuGX8F9yru+N1nJmcHLoSviMHvWj8r+miHr4pbMZiOOzEu03ivLoYj jr6YJxkHe6FDGK3dfTQQflKh4gLiiospe1iJ5JZrgLhV5PJhfwtk31ytNXHHhCQ4D7kE IO/z+q0f6tCImHvS2z7QnK2rIyempiClVHsmS1gq0UUFvPnWbtQhKQwk2uYZMbpEF/ra FuV+D2EwENvenX4cAwrnjxqhSpEaDO6duAgcJ9foPjWm7mpBPFkZIAxd0NZkIvKU7+Y6 lRiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742811708; x=1743416508; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bvEFguP/n+l5iVEh8y4wIJsiJEQKzDjI+RP2AOZVDdk=; b=GOoTcmE2jCVaaqPUh2HToXj0x101nTRg3dyYvLzetlMop1Ga5Y0QBYOSZKSLHb4oeq 38pKjIrLJx+p5mynLPFFGpdm4D1cubCrHvmXcFltFNH2sGd5K8H6OnlbCdgGKhFTsHlX JCjtJlGkoyz0o3aKMCDFlym23yhjpX9riMZoSfuU/BY1MDavKNKWhYQX2i/g1OuorjpK keVaSpgmRZ0c1mPwQjmgZjZ6U97SZ8KuWutwzVoLZQCTAMYXCQM6GFJP0XeKFPgCHdoT KcN9BIOb5ZH6CGZVh7c3HdOq59RJK9Fndj9LK1VvwDKAEknE3MmYKKbLGtvp8ZwQStGr j+7Q== X-Gm-Message-State: AOJu0Ywz9gQdfrB8upXidCzBv8lOBv13Pw75z1OJ2vR2JxqTz4zw1Tj/ wvdSWPZBB945fK58p5QvluL5UYWcaVB73cjspL/P2f7ZgzLVmRtFjGuRLW4flWM= X-Gm-Gg: ASbGnctM/R3YpTz2g74ePY/gJlOvVq/FhcMmXBHWRIcbPs81tfyplnybIk35rlUtBUt qY08IrRQk218Ka1nA8uuPSWhjcgDypg5+OlV6BW3bRZ0EbzEY3MFzqk0Zu++fEYFHI2lf7vxhji Y7eY77yNzYI+ZUGfh1Yxad7XdOtFzjhR7pHm8k6gycNGsYCGUJ5dVFNl0Gc+RwG0ChBJweF388I yhb54hraK5ovv6+wp6lcORYG8hkBl13yuopBq7B6KVaIpGNzKWNR3fnSRrnsC3mdLKKxHWcqfBi MwQvxhiQF+/AafW+O+ffJZbsnDHf1qS3of28JB15cQ/eEQE= X-Google-Smtp-Source: AGHT+IGDWfMgXm172gFM5ZpT6y6QkIuB1n5uMp/jbE/z3hdwtHdmnqQIj2lu/wPvy5IDInyyRqUiQA== X-Received: by 2002:a17:907:7fab:b0:ac3:ed4e:6b5 with SMTP id a640c23a62f3a-ac3f20ffb1amr1136013666b.10.1742811708276; Mon, 24 Mar 2025 03:21:48 -0700 (PDT) Received: from draig.lan ([185.126.160.109]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac3efd3aab3sm636836466b.156.2025.03.24.03.21.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Mar 2025 03:21:46 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id 85D915FDAC; Mon, 24 Mar 2025 10:21:43 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Nicholas Piggin , "Edgar E. Iglesias" , Markus Armbruster , Akihiko Odaki , qemu-ppc@nongnu.org, Richard Henderson , Thomas Huth , David Gibson , Daniel Henrique Barboza , =?utf-8?q?Daniel_P=2E_Berr?= =?utf-8?q?ang=C3=A9?= , Ilya Leoshkevich , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?C?= =?utf-8?q?=C3=A9dric_Le_Goater?= , Peter Maydell , qemu-s390x@nongnu.org, Wainer dos Santos Moschetta , =?utf-8?q?Alex_Benn?= =?utf-8?q?=C3=A9e?= , David Hildenbrand , Pierrick Bouvier Subject: [PATCH v2 10/11] target/microblaze: convert gdbstub to new helper Date: Mon, 24 Mar 2025 10:21:41 +0000 Message-Id: <20250324102142.67022-11-alex.bennee@linaro.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250324102142.67022-1-alex.bennee@linaro.org> References: <20250324102142.67022-1-alex.bennee@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::529; envelope-from=alex.bennee@linaro.org; helo=mail-ed1-x529.google.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org This is a pretty simple conversion given a single set of registers and an existing helper to probe endianess. Signed-off-by: Alex Bennée Reviewed-by: Pierrick Bouvier --- v2 - use mb_cpu_is_big_endian - use explicit MO_32 size - handle differing size of env->ear between user/system --- target/microblaze/gdbstub.c | 49 +++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 27 deletions(-) diff --git a/target/microblaze/gdbstub.c b/target/microblaze/gdbstub.c index d493681d38..dbaf7ecb9c 100644 --- a/target/microblaze/gdbstub.c +++ b/target/microblaze/gdbstub.c @@ -19,7 +19,7 @@ */ #include "qemu/osdep.h" #include "cpu.h" -#include "gdbstub/helpers.h" +#include "gdbstub/registers.h" /* * GDB expects SREGs in the following order: @@ -50,62 +50,57 @@ int mb_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n) { MicroBlazeCPU *cpu = MICROBLAZE_CPU(cs); CPUMBState *env = &cpu->env; - uint32_t val; + MemOp mo = mb_cpu_is_big_endian(cs) ? MO_BE : MO_LE; + uint32_t msr; switch (n) { case 1 ... 31: - val = env->regs[n]; - break; + return gdb_get_reg32_value(mo | MO_32, mem_buf, &env->regs[n]); case GDB_PC: - val = env->pc; - break; + return gdb_get_reg32_value(mo | MO_32, mem_buf, &env->pc); case GDB_MSR: - val = mb_cpu_read_msr(env); - break; + msr = mb_cpu_read_msr(env); + return gdb_get_reg32_value(mo | MO_32, mem_buf, &msr); case GDB_EAR: - val = env->ear; - break; +#if TARGET_LONG_BITS == 64 + return gdb_get_reg64_value(mo | MO_64, mem_buf, &env->ear); +#else + return gdb_get_reg32_value(mo | MO_32, mem_buf, &env->ear); +#endif case GDB_ESR: - val = env->esr; - break; + return gdb_get_reg32_value(mo | MO_32, mem_buf, &env->esr); case GDB_FSR: - val = env->fsr; - break; + return gdb_get_reg32_value(mo | MO_32, mem_buf, &env->fsr); case GDB_BTR: - val = env->btr; - break; + return gdb_get_reg32_value(mo | MO_32, mem_buf, &env->btr); case GDB_PVR0 ... GDB_PVR11: /* PVR12 is intentionally skipped */ - val = cpu->cfg.pvr_regs[n - GDB_PVR0]; - break; + return gdb_get_reg32_value(mo | MO_32, mem_buf, + &cpu->cfg.pvr_regs[n - GDB_PVR0]); case GDB_EDR: - val = env->edr; - break; + return gdb_get_reg32_value(mo | MO_32, mem_buf, &env->edr); default: /* Other SRegs aren't modeled, so report a value of 0 */ - val = 0; - break; + return 0; } - return gdb_get_reg32(mem_buf, val); } int mb_cpu_gdb_read_stack_protect(CPUState *cs, GByteArray *mem_buf, int n) { MicroBlazeCPU *cpu = MICROBLAZE_CPU(cs); CPUMBState *env = &cpu->env; - uint32_t val; + MemOp mo = TARGET_BIG_ENDIAN ? MO_BEUL : MO_LEUL; switch (n) { case GDB_SP_SHL: - val = env->slr; + return gdb_get_reg32_value(mo, mem_buf, &env->slr); break; case GDB_SP_SHR: - val = env->shr; + return gdb_get_reg32_value(mo, mem_buf, &env->shr); break; default: return 0; } - return gdb_get_reg32(mem_buf, val); } int mb_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n) From patchwork Mon Mar 24 10:21:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 14027035 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D1075C36005 for ; Mon, 24 Mar 2025 10:23:42 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1twewp-00030a-3b; Mon, 24 Mar 2025 06:22:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1twewU-0002lp-3q for qemu-devel@nongnu.org; Mon, 24 Mar 2025 06:22:06 -0400 Received: from mail-ej1-x630.google.com ([2a00:1450:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1twewM-00072y-7a for qemu-devel@nongnu.org; Mon, 24 Mar 2025 06:22:01 -0400 Received: by mail-ej1-x630.google.com with SMTP id a640c23a62f3a-ac3fcf5ab0dso389520066b.3 for ; Mon, 24 Mar 2025 03:21:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1742811711; x=1743416511; 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; bh=R/w+IEuyBCGdAvV9kPBGIFRRowKLnLTxEQYA10TL7J4=; b=Y3VaRFpCRmAeIgJBOdTu1NSAG0IHMwWXzHylPUubmnNjQCV5ygyj5/3mD77QZoy2kE tk2Tis3kAqTBLYIIomaIJnEKVaxXb4khDYQJNKcJ9EAcWAfj7O7R3fD3skTbdKujzlnn YDTINS53jGL33iTRpXqt3voTtH8U8987VRfbglRuwYW3lMCyi140XZJ0DoVBjCE4G+n4 cI1gDzlRNeR12UOuptoLIkPfS9bGZnyxxagA5boP7el9wasRUM50vbpCBbxbyc+vGfyd 63ajVmJpQbRAYy60/6ze190MyY2W/HgIqvv8Zi53vSO/99QUwY325TewLmyM9mbXQ+VW ZQeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742811711; x=1743416511; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=R/w+IEuyBCGdAvV9kPBGIFRRowKLnLTxEQYA10TL7J4=; b=FY88w5vov1g9f2oyOary9gSBpWPTbNN3+i9oxL4yWYUdfN/oiVL+17+5+ESCHg8JDL M6PCc2a/RuQZDjflbdvVhGQlALO5g5PeypHWwIZwgEtEsOvdohup81bhhnhGKAsQ3AF4 LOeuL7NjRyrq9yPnsiti/cneKu5G8sFT+8lZFYBnGqKmH7b+L+/Zm5WJ8KSngKRJ8X+b gGY8KA8Pni8TmjO7peKtFkvS3ZUszu/9zQF5Hj7M1/OiLxox0WDtS2RHwP0YnJIC2LlF QKeVDsR/DpQaGno2dmOcjTiC9XoXr5oBMWCv0SZqqEAcodEkmgntYyWlHU+WJhbdSTQa eYnQ== X-Gm-Message-State: AOJu0YxjCI9OfhJpne3lCoDNJwsQBo0Bm5XqTKcQGwfQN3fcfve1STnF P/5C1xttmTeFeujJ1MXlFkBO5OPYzNqArS39HIywArXiVu6wMGR6/NBEjpwygA8= X-Gm-Gg: ASbGncu+YCGlxTwUd32S5wVITzlf6TwDI3BefPbXeq/Iql7rDbfY1onc+0rokGN7nVA dmn6qx3oUikSIBv+9t0zW9ESOwvI3IPDW38ZL0Q+2zBNSIrbh6WAX28UONDpN6MJ/XuSMzYvDXe 7aCZY9br+7IJa7AygCUDq1WECfUsDaeblkfNaCGG/ykxFdrFNOvS+UGyvAV4RxQYQ1LOfAC1vyV mMs6QJkjzgXycqL+rCtfAuh9p6DFhTEvk/TH5TL31uwbkrtWJSx9dP7tt9wv0Ps71vpVcll/AFN 8U9Q+7vugY3F97k7boNmTYy0wCoxr3COZ86UZiktJATDyzs= X-Google-Smtp-Source: AGHT+IEniK14YB2uRUb1E6OC100FQO95BAmaJkBYJCb+Wq6fYMp5GJ0YIEzBU+rFNUDjVp0Abz4i6A== X-Received: by 2002:a17:907:3f24:b0:ac3:3e40:e183 with SMTP id a640c23a62f3a-ac3f20d30e8mr1200077766b.3.1742811711010; Mon, 24 Mar 2025 03:21:51 -0700 (PDT) Received: from draig.lan ([185.126.160.109]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac3ef8e5152sm646514266b.47.2025.03.24.03.21.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Mar 2025 03:21:50 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id 9CAA85FE0C; Mon, 24 Mar 2025 10:21:43 +0000 (GMT) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Nicholas Piggin , "Edgar E. Iglesias" , Markus Armbruster , Akihiko Odaki , qemu-ppc@nongnu.org, Richard Henderson , Thomas Huth , David Gibson , Daniel Henrique Barboza , =?utf-8?q?Daniel_P=2E_Berr?= =?utf-8?q?ang=C3=A9?= , Ilya Leoshkevich , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?C?= =?utf-8?q?=C3=A9dric_Le_Goater?= , Peter Maydell , qemu-s390x@nongnu.org, Wainer dos Santos Moschetta , =?utf-8?q?Alex_Benn?= =?utf-8?q?=C3=A9e?= , David Hildenbrand , Pierrick Bouvier Subject: [PATCH v2 11/11] include/gdbstub: add note to helpers.h Date: Mon, 24 Mar 2025 10:21:42 +0000 Message-Id: <20250324102142.67022-12-alex.bennee@linaro.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250324102142.67022-1-alex.bennee@linaro.org> References: <20250324102142.67022-1-alex.bennee@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::630; envelope-from=alex.bennee@linaro.org; helo=mail-ej1-x630.google.com X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org We've not yet deprecated but we should steer users away from these helpers if they want to be in a single/heterogeneous binary. Signed-off-by: Alex Bennée --- include/gdbstub/helpers.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/gdbstub/helpers.h b/include/gdbstub/helpers.h index 6f7cc48adc..9b3a535b03 100644 --- a/include/gdbstub/helpers.h +++ b/include/gdbstub/helpers.h @@ -2,7 +2,9 @@ * gdbstub helpers * * These are all used by the various frontends and have to be host - * aware to ensure things are store in target order. + * aware to ensure things are store in target order. Consider using + * the endian neutral registers.h if you want the architecture to be + * included in an eventual single QEMU binary. * * Copyright (c) 2022 Linaro Ltd *