From nobody Mon Sep 28 01:15:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786239268; cv=none; d=zohomail.com; s=zohoarc; b=NjkAdYGL/dmUxJUG71XEFSoUQnTWBMQ9snkcVu9SRUZg0w50EbqpHMWPf+6N7pP8KGtRDYxRo8DF8RExpqX2O5mqwIPLqgk7zFAXtNJW3VEhEZLlgViniUbmdBW1cPMxLQ+TJA0WIMh3BBL48ZILDEz68cOplX1EOnPbugB7Tso= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786239268; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=KIM92dYKj4IImhb6gA2mCC61KUGnHOCCs2e0Y+4NqIo=; b=j8t1rMWx57Cxxky6Vq1kCvg4tH80OAEMvDytLz4A5xLrzIc4qUBG+7bEysOSLVXI/8bZJN5kKEvfNv2PgRmueLD9FMDlafk2A5R9NSBcrAmRqPew6BuLkLtT3hL3s7bTgLCBQk2rckzodnpp4EkRpnh9MrSKrVAt0ayt20cmB0c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178623926894057.31707738200987; Sat, 8 Aug 2026 18:34:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wssQB-0000Hg-K9; Sat, 08 Aug 2026 21:33:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wssQA-0000Gq-80 for qemu-devel@nongnu.org; Sat, 08 Aug 2026 21:33:50 -0400 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wssQ7-0002Hj-Vc for qemu-devel@nongnu.org; Sat, 08 Aug 2026 21:33:49 -0400 Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-38dc4553f62so829134a91.0 for ; Sat, 08 Aug 2026 18:33:47 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39085de8ddcsm10067927a91.6.2026.08.08.18.33.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Aug 2026 18:33:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786239226; x=1786844026; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=KIM92dYKj4IImhb6gA2mCC61KUGnHOCCs2e0Y+4NqIo=; b=tBt6XCW4pcFEqCwX0WnFIufNY0GxdAHUBJGxv5qLZdWkoT6kkm+P0GkoZidwdPBKiI as3DxjcmOE9zlCOCF2mnx09q/pyxtfhRae4STieekCPCgwGwBDN562I7lZhOvq8LslGM loGwzm0JHSKx1ycLjwAEtr2OOzc2w4xQeW6uuYebxbGWhoZrSgSB8sBy/xIqFRSxrGS4 xzxkn8bWBYBzU1qJg/Y4BloypCTaWrdlnNaWYo7YY4fW/21QGfHS2ZFjgCljVzl0Qu2/ IQjUswJS4ke8TGYhQ6K3E61A5PZY31XTulAzSzcKrhzStT1ih7XUSa4nrBY8AVCqNifS KhWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786239226; x=1786844026; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=KIM92dYKj4IImhb6gA2mCC61KUGnHOCCs2e0Y+4NqIo=; b=P75jOYt7GTmuagdm4m/zxOfEMp+dnWW/hkrkl+hCvhH6M1RloNFvnUL6rRG0hsKRdw IJpnCA99cXNfrrXH2qDRf/PWpYVijsFxbKrjpGun0ADQFM1iXi99TB4s5I3+LVVMw5CU WDOUJuLD4N21X5+/Nt5eD6cH34Zfvl8ASwYCTMBtGWXy0l+dVq420osIUevtF1Scyoxc s6AR7lA1AAmVxv3o2+6OziRDouApMZCnTHT5+BKxokFZtVKBnBkAV2ItJm/RiSQMn/TV q7Fat9Mz2uEwdyrEvXCCeA0jIteGNbYehWC6c1iqeTNkNDywtKpMkBs+rsMy/1lqMmAU lO8A== X-Gm-Message-State: AOJu0YwkFaSmfAn+gQuHO5rsqBblBqXBw2ilZnn7lKgcGbdNmjSnyWzd wBVJ83d/szrpK/pYpqF/6qKK+7Dt2AxSXWCrM3X4u1XKD+lrM5YA9w8slQ8+LWRBKYwut61wEuy lTwxq X-Gm-Gg: AR+sD11Bf2Yc+YdZcxP4ROtQR6UhHkCMT6WQm8UsZ1Ob3o9kIJlzwRHSdjQ30feaEzv CtsyOEFX8siYT1P+VZXkdQTRcJL9KKTczF/t0xMfZVEK9S8Mk3erI80ADwQRJMx803EIz03xau4 W0g8o4Mn4vylRtWSsGPBZ7mY7BRBuV22oaWfDN6u4sowW6XVvLdC4t7BxBDdtgNfnIgU2rKQ70V ACpD+9A8jWRF/w3GLv6tPE483KA3PTODwwnGgXnlAJvFnWW7Ar72qKVrZUjcXLoqdofttzVSzSH huI0BYhyxihAo1x6uU2vkDzJLo2LBa84SpQbj4zQH4q1rWvamjaBB7sJ9rO8DgyucXXENQBcFRH INkWToNY1BzL13HToBNtU3gGtUXy9U4XHQJpOhxCFJc93/Qw9ZQuPGlras4w1PvHPV/P+lO6zGM 5JLTLGxLPSDKHrNOcMupnBngNeqYwTFBCUkA/lUbmTlxl4dlS2ezIW4Gd37DURRPPB/64Wosmjt yL6c4fupXfIu/ovVrYT X-Received: by 2002:a17:90b:1e53:b0:381:a766:efcb with SMTP id 98e67ed59e1d1-3903c54cf2bmr31311730a91.4.1786239226433; Sat, 08 Aug 2026 18:33:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: 17746591750@163.com, laurent@vivier.eu, philmd@mailo.com, qemu-riscv@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 1/9] target/riscv: Improve riscv_has_ext Date: Sat, 8 Aug 2026 18:33:35 -0700 Message-ID: <20260809013343.664966-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809013343.664966-1-richard.henderson@linaro.org> References: <20260809013343.664966-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1030; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1030.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786239271662158500 Content-Type: text/plain; charset="utf-8" Constify the env pointer and return bool. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- target/riscv/cpu.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index c9dfa7daff..376cff656f 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -615,7 +615,7 @@ struct RISCVCPUClass { RISCVCPUDef *def; }; =20 -static inline int riscv_has_ext(CPURISCVState *env, uint32_t ext) +static inline bool riscv_has_ext(const CPURISCVState *env, uint32_t ext) { return (env->misa_ext & ext) !=3D 0; } --=20 2.43.0 From nobody Mon Sep 28 01:15:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786239311; cv=none; d=zohomail.com; s=zohoarc; b=Jsy3HkX72bZX/5iMbSCqblboUtesLckBeVf3bhr7DSDdrE7j08Z0DD67MSnmroJvZIrqAYnuKQmaz29pKQCRK8WaBXWbiqVoYXfoP/knVqPG1tLB0fXOB3hCJqZciQNqoBBK9bgqIEPBckIp4uGir/+BNi9C6xdUOQw/zMhd06A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786239311; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=24nbi+Yp05sHv97Lvb7bmm3DBsKexstLCmuszK87+YI=; b=U8CxaYSXb5qnEtvy2FDwKuEIBJOEjZ15L40yqn1nQU1jRUyMYxzMjGq8LLmrE03KrBe//X0An8Q+gfQX1w3XYHdt5buN4aHksYdurMQ2HqZUs1L34D3U0Jkgt8Of76G8wpi6LbIquFokkfhZ8GPK5mKelLl9gFU9OHZnr7oJwFI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786239311299168.1776535252427; Sat, 8 Aug 2026 18:35:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wssQD-0000KG-Ii; Sat, 08 Aug 2026 21:33:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wssQA-0000HF-Ko for qemu-devel@nongnu.org; Sat, 08 Aug 2026 21:33:50 -0400 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wssQ8-0002Ih-Tf for qemu-devel@nongnu.org; Sat, 08 Aug 2026 21:33:50 -0400 Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-38125cebfdaso947042a91.1 for ; Sat, 08 Aug 2026 18:33:48 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39085de8ddcsm10067927a91.6.2026.08.08.18.33.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Aug 2026 18:33:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786239227; x=1786844027; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=24nbi+Yp05sHv97Lvb7bmm3DBsKexstLCmuszK87+YI=; b=O3BzhbMvpJ/kTAvazx6tY7+5FsnqVAO9Wx6Xn+WVbYM/y69qMP4AgEp7dtu7OgwxOl WeaJx1ZA/94erz13Hobuzby1T96v+EiLJwkSBZ9E+K99+mN329B43hgJjijGv9Y0guX+ v6ITxZPHpc1cUqJKGG5EEecBHXlffYX2YgaLRHGeQlmxD3e8COZWqFLcgVFgK3d3y5ZY o4DY3HE80sTEXMIHtMnLjDvpltG8oj3WSygrnTNNySWjvWWXo23pVQijr90A/Mw+MoYW vw9e3a9hm+XT8Y8yyJD1OtBJQcNR1njj3QrjtzDSmQaMfL6eIg5JosldEQs3ZpUV3Qvb 0DGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786239227; x=1786844027; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=24nbi+Yp05sHv97Lvb7bmm3DBsKexstLCmuszK87+YI=; b=R5wNdardKMBcYlByp1AlE243TaaW38HilOR1rJnpj3NciwkCBvRLZCLYahnYRkEy45 nBSXGYOB2P6r/fnUDaRHlz/R28kAS6WlPHI2SOyiWKHHp4WVJ2J9TMPHlRBoZyPXGYtf FIGjl1TZJ8AxuZw1Mkxix+yIKnzYMloqsAjBHBNdnHfLWvT4/3MJI2QPkdDWM20WCISJ HEY5qmQZD2RodOKtPTp3q0gR0zxX4sApQ3R/DeTeW1MoR4Q6mh+b+7ZoR4tDsVVU07fI 8aw1Jm3bw216/0Zq8tV0TXQZJZXUJcKK9v6n82a3juAbz8YN1LzbWPamiLtyTB7PMiF9 GygQ== X-Gm-Message-State: AOJu0YyQxeMpNV3RBZT/CnpEfOZvzhpu8aMchtKAb3iVSIUe18zwMegu 3Ri+Ix1xaP/+VZu63hDB6rsRwKU/ygWcQkfiHSNm7WQ1RJJfIC0Rp7NdqM1w784tptaVJghZXHW ZxoKn X-Gm-Gg: AR+sD11NFkJcvjzm7UMYx8p69hK0dVJrHsHbPgldD2d/GU9WcKXfdeOTZRPjqPaEiWJ zHkby2/oi1k0KdhCQPMqZO4WlVYseA4ltA2ek8OEZJ6smSCJQxtLMhAnv9z/wgP/SJPl1lx1Mjp ycWQiAyLi3zSp8A7ReGkUKagubq27+8MUX3j0nYle241BSZZL68wASE6aSnJgU9rCk9t9L+2u8p 3s1SDSbreLONgfykzaEokUvwybJPvbl9vN9bKamXNwOa+3zKTtuvfb9g9FtezyEYbc4nw7meFSO /BPr8G82M0Ek10eisdoPyzUmDbXeiYaIAk6ERJniURI3HDImum1Q5OeCvXDYt6FOY+NgeI5Ryh+ lq6pdT6BoH9SIkESvw+VoYbCVxX9ypOKMn3h/zHlicv6zRYoCfPQ9VkfI6LGEuw0+jllEhVX50G AO4x7wW82Rn541HastzNJh/3eglSLb5CttmMzvfh/MTr4G/osZmKWtuJRM6Fq20oNtjUWtk+2fH PflJ/zulmv9Qt+PMz1x X-Received: by 2002:a17:90b:2dc7:b0:380:fead:448d with SMTP id 98e67ed59e1d1-392620e6e25mr16119106a91.13.1786239227423; Sat, 08 Aug 2026 18:33:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: 17746591750@163.com, laurent@vivier.eu, philmd@mailo.com, qemu-riscv@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 2/9] disas/capstone: Allow for cap_insn_unit > length Date: Sat, 8 Aug 2026 18:33:36 -0700 Message-ID: <20260809013343.664966-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809013343.664966-1-richard.henderson@linaro.org> References: <20260809013343.664966-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1033.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786239311785158500 Content-Type: text/plain; charset="utf-8" cap_insn_unit is designed for targets like arm thumb2 and s390x where 4 and 6-byte insns are displayed in 2-byte chunks. For riscv, we prefer 4-byte insns to display as one 4-byte unit, rather than 2x 2-byte units. So we will want to set cap_insn_unit to 4, but allow for insns that are smaller than 4. Emit padding to match. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- disas/capstone.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/disas/capstone.c b/disas/capstone.c index fe3efb0d3c..8fb8d0724c 100644 --- a/disas/capstone.c +++ b/disas/capstone.c @@ -107,8 +107,9 @@ static void cap_dump_insn_units(disassemble_info *info,= cs_insn *insn, { fprintf_function print =3D info->fprintf_func; FILE *stream =3D info->stream; + int unit =3D MIN(info->cap_insn_unit, n - i); =20 - switch (info->cap_insn_unit) { + switch (unit) { case 4: if (info->endian =3D=3D BFD_ENDIAN_BIG) { for (; i < n; i +=3D 4) { @@ -140,6 +141,11 @@ static void cap_dump_insn_units(disassemble_info *info= , cs_insn *insn, } break; } + + if (unit < info->cap_insn_unit) { + int width =3D (info->cap_insn_unit - unit) * 2; + print(stream, "%*s", width, ""); + } } =20 static void cap_dump_insn(disassemble_info *info, cs_insn *insn) --=20 2.43.0 From nobody Mon Sep 28 01:15:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786239329; cv=none; d=zohomail.com; s=zohoarc; b=Hn7NWyK+2jKZfG74IaeNsmFna9sGr3n8KbJcnR0+wGG0oCEwSbh4yaLqRXSNlPTUCGVUd+nBhz3+PAJcbxm/Dl6kciKQquEVKLct8h62P4zn8Kz0M1ZPXPybUlg1ghi6Z3V4SKXk3IyWDT+RJqE47eJLKEwKd2aWWrs4jgaCT3g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786239329; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=3f9Ac7OlBEkyz59lnyXFdyvLMnTSbAqV+WB14jXB64w=; b=VLL2km2mQp7TRDEVh0rG+0dzIXM0qwNhmZ8Pirf20h5n71hKoTLqfXqkByyXiLKtskwoH4Z7Ex9SGaf0I5xAZuzxJcBUeSseLAYKiP3ZEhMPgP8Nk88Tx7K+CzcWoefVnDvSgcFq9PeBqP2m9coEqaABXnZednIrH68mqDkj0bU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786239329277223.37289327599638; Sat, 8 Aug 2026 18:35:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wssQE-0000Kb-0W; Sat, 08 Aug 2026 21:33:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wssQB-0000Hu-VK for qemu-devel@nongnu.org; Sat, 08 Aug 2026 21:33:51 -0400 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wssQ9-0002JY-QR for qemu-devel@nongnu.org; Sat, 08 Aug 2026 21:33:51 -0400 Received: by mail-pj1-x102e.google.com with SMTP id 98e67ed59e1d1-384930ca5e2so787861a91.3 for ; Sat, 08 Aug 2026 18:33:49 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39085de8ddcsm10067927a91.6.2026.08.08.18.33.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Aug 2026 18:33:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786239228; x=1786844028; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=3f9Ac7OlBEkyz59lnyXFdyvLMnTSbAqV+WB14jXB64w=; b=e1/m91dzysrfwGvTuhegPGE67RODJzLyOc6Cp1i7goutYzgmHKa4EV3wT+hG18k3gl TT1OB74cklYk8QLtywyjBKwNlU4WV6Qjinyfybh4RAQYziElanYl6cC0FWQYz+ySc/Xe 7xedCoLw/AH45yc5g13fPmvA0hec8DW3sK7QkVsi8Y5ou2FG3l+JD5AC/itrRnBeS0aI mjdai4eAudlZFxZM5Jvn6M7OjGbY5Lv9kQJ1gilq/n3MluTGslPGGY8mmPHtjjheHXVB FAEGnVsRllBq2jjJncJgJvdLu0E90af9dz1flGuYMv1ksgT/Q5rZjqIfOOPF8VPnAbsO ymgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786239228; x=1786844028; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=3f9Ac7OlBEkyz59lnyXFdyvLMnTSbAqV+WB14jXB64w=; b=kplHEOAfYydSThQoxv7s5fEMbauMOWbJq5NI/1p0Rn+Xw6j2pNU+4DMon1NB2Z8Mk/ m0z8Z3XWGXzM6Z8TWhQfh3mvoe3KxXqW/GCfTYi7SB5Xmw8pJIvt8xgPIQrknidwczTT K2lb9U1JFPAhk1s5TXjJ8/BOioj610Rq8sF/lvDWjnF+cKYbNCZ5568yYjSJkYLGSSj6 Jvw+Mvp/svH0FqtfKxlrim2q9B6bwsH59v/gTmOw/USnbaDG0z1pK6skbWvPeXeunKzL TrLPQ3uBASo2iXcgj2PStQRN0ZrASkaPJN1lq3c2au1jfaVy1y33R39xYIJPRctOGErf pmcA== X-Gm-Message-State: AOJu0Yzk4FppDNcxhh+YIYQO9Gsgw2qQkHlpPzvLRXUf0SEg/djEnB/0 BVIBHTQ+3Q4zLV+SXXENav3ceQIIhAVrA9tHRZtGSj/FihNhftfWxqK+Ud0dNveWtjlrrGmlr0n ugsVI X-Gm-Gg: AR+sD105Og0j1sqTzumpQ0+o9UrYlIcDHHSlCk+qh3RoQtyM3yqbvXUjzPouslqfSBM erh+KsU9tExE2T4ok4G62jm3Bw5tKycAmrrken8J9+gPmiuZRSouThOPFdcBJal8yo6EDHbfwn+ bFrVXrzCN+wV9LyVsMfIBYlUk3waE+6T0x1XLx3ESCNgxatLnNf3jhXbSRRZ1d9FNI6CxgFEZin xJIYNfo5iV0Jfl7pQGlsPJvwEir7iZm8eb1P6JxX661FUy50u8p8YRjPZKmKKiColx4FP2FH/5l YYaZWSS75XT0e6PU3+3tUqhr5+O/46hstFUNNNEE3k6Q/OiTQavS2x+/kqwoR6Eb45nDKmzdJxz /c0XKGzuIq0XAIIc69oi1IWKsAdYUNlKJ+KTsxmUAKTGwJ85Ofes0Rx43hUkomlsIDtjjHI34p5 sErIs4EblnRJ+YtUMncpAuXOJc6SgaQmhgK/HqCgo5K0HGxVY8AUFsAWe6lbH+ZJXocQSZwICJQ iZ0QTTt71AzWedZ6O6i X-Received: by 2002:a17:90b:2782:b0:36a:8240:2477 with SMTP id 98e67ed59e1d1-3903c60c488mr31941160a91.19.1786239228438; Sat, 08 Aug 2026 18:33:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: 17746591750@163.com, laurent@vivier.eu, philmd@mailo.com, qemu-riscv@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 3/9] target/riscv: Enable disassembly via capstone Date: Sat, 8 Aug 2026 18:33:37 -0700 Message-ID: <20260809013343.664966-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809013343.664966-1-richard.henderson@linaro.org> References: <20260809013343.664966-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102e; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786239330056158500 Content-Type: text/plain; charset="utf-8" In capstone v5, riscv support is spare, but v6 is pretty good. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/disas/capstone.h | 34 +++++++++++++++++ disas/capstone.c | 19 ++++++++++ target/riscv/cpu.c | 81 +++++++++++++++++++++++++++++++++++++++- 3 files changed, 133 insertions(+), 1 deletion(-) diff --git a/include/disas/capstone.h b/include/disas/capstone.h index c43033f7f6..5c78824da2 100644 --- a/include/disas/capstone.h +++ b/include/disas/capstone.h @@ -11,6 +11,8 @@ =20 /* Just enough to allow backends to init without ifdefs. */ =20 +#define CS_API_MAJOR 0 + #define CS_ARCH_ARM -1 #define CS_ARCH_ARM64 -1 #define CS_ARCH_MIPS -1 @@ -37,4 +39,36 @@ #define CS_MODE_MIPS64 0 =20 #endif /* CONFIG_CAPSTONE */ + +#if CS_API_MAJOR < 5 +#define CS_ARCH_RISCV -1 +#define CS_MODE_RISCV32 0 +#define CS_MODE_RISCV64 0 +#define CS_MODE_RISCV_C 0 +#elif CS_API_MAJOR =3D=3D 5 +/* The C symbol name changed between v5 and v6 */ +#define CS_MODE_RISCV_C CS_MODE_RISCVC +#endif +#if CS_API_MAJOR < 6 +#define CS_MODE_RISCV_FD 0 +#define CS_MODE_RISCV_V 0 +#define CS_MODE_RISCV_ZFINX 0 +#define CS_MODE_RISCV_ZCMP_ZCMT_ZCE 0 +#define CS_MODE_RISCV_ZICFISS 0 +#define CS_MODE_RISCV_E 0 +#define CS_MODE_RISCV_A 0 +#define CS_MODE_RISCV_COREV 0 +#define CS_MODE_RISCV_THEAD 0 +#define CS_MODE_RISCV_SIFIVE 0 +#define CS_MODE_RISCV_BITMANIP 0 +#define CS_MODE_RISCV_ZBA 0 +#define CS_MODE_RISCV_ZBB 0 +#define CS_MODE_RISCV_ZBC 0 +#define CS_MODE_RISCV_ZBKB 0 +#define CS_MODE_RISCV_ZBKC 0 +#define CS_MODE_RISCV_ZBKX 0 +#define CS_MODE_RISCV_ZBS 0 +#define CS_MODE_RISCV_VENTANA 0 +#endif + #endif /* QEMU_CAPSTONE_H */ diff --git a/disas/capstone.c b/disas/capstone.c index 8fb8d0724c..78062339d0 100644 --- a/disas/capstone.c +++ b/disas/capstone.c @@ -49,6 +49,20 @@ static const cs_opt_skipdata cap_skipdata_s390x =3D { .callback =3D cap_skipdata_s390x_cb }; =20 +/* Similarly for RISCV */ +static size_t CAPSTONE_API +cap_skipdata_riscv_cb(const uint8_t *code, size_t code_size, + size_t offset, void *user_data) +{ + /* See insn_len() from target/riscv/internals.h */ + return (code[offset] & 3) =3D=3D 3 ? 4 : 2; +} + +static const cs_opt_skipdata cap_skipdata_riscv =3D { + .mnemonic =3D ".byte", + .callback =3D cap_skipdata_riscv_cb +}; + /* * Initialize the Capstone library. * @@ -76,6 +90,11 @@ static cs_err cap_disas_start(disassemble_info *info, cs= h *handle) cs_option(*handle, CS_OPT_SKIPDATA, CS_OPT_ON); =20 switch (info->cap_arch) { + case CS_ARCH_RISCV: + cs_option(*handle, CS_OPT_SKIPDATA_SETUP, + (uintptr_t)&cap_skipdata_riscv); + break; + case CS_ARCH_SYSZ: cs_option(*handle, CS_OPT_SKIPDATA_SETUP, (uintptr_t)&cap_skipdata_s390x); diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 5a82e6563b..a1a6c17b98 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -39,6 +39,7 @@ #include "system/tcg.h" #include "kvm/kvm_riscv.h" #include "tcg/tcg-cpu.h" +#include "disas/capstone.h" #if !defined(CONFIG_USER_ONLY) #include "target/riscv/tcg/debug.h" #endif @@ -1099,6 +1100,7 @@ static void riscv_cpu_disas_set_info(const CPUState *= s, disassemble_info *info) { const RISCVCPU *cpu =3D RISCV_CPU(s); const CPURISCVState *env =3D &cpu->env; + int cap_mode; =20 info->target_info =3D &cpu->cfg; =20 @@ -1111,16 +1113,93 @@ static void riscv_cpu_disas_set_info(const CPUState= *s, disassemble_info *info) switch (env->xl) { case MXL_RV32: info->print_insn =3D print_insn_riscv32; + cap_mode =3D CS_MODE_RISCV32; break; case MXL_RV64: info->print_insn =3D print_insn_riscv64; + cap_mode =3D CS_MODE_RISCV64; break; case MXL_RV128: info->print_insn =3D print_insn_riscv128; - break; + /* capstone v6 doesn't support RV128 */ + return; default: g_assert_not_reached(); } + + info->cap_arch =3D CS_ARCH_RISCV; + info->cap_insn_unit =3D 4; + info->cap_insn_split =3D 4; + + /* + * Capstone compresses some features together. See RISCV_getFeatureBit= s, + * which maps LLVM feature bits to capstone bits. + */ + if (riscv_has_ext(env, RVC) || cpu->cfg.ext_zca) { + cap_mode |=3D CS_MODE_RISCV_C; + } + if (riscv_has_ext(env, RVF)) { + cap_mode |=3D CS_MODE_RISCV_FD; + } + if (riscv_has_ext(env, RVV)) { + cap_mode |=3D CS_MODE_RISCV_V; + } + if (cpu->cfg.ext_zfinx || cpu->cfg.ext_zdinx || cpu->cfg.ext_zhinx) { + cap_mode |=3D CS_MODE_RISCV_ZFINX; + } + if (cpu->cfg.ext_zcmp || cpu->cfg.ext_zcmt || cpu->cfg.ext_zce) { + cap_mode |=3D CS_MODE_RISCV_ZCMP_ZCMT_ZCE; + } + if (cpu->cfg.ext_zicfiss) { + cap_mode |=3D CS_MODE_RISCV_ZICFISS; + } + if (riscv_has_ext(env, RVE)) { + cap_mode |=3D CS_MODE_RISCV_E; + } + if (riscv_has_ext(env, RVA)) { + cap_mode |=3D CS_MODE_RISCV_A; + } + if (cpu->cfg.ext_xlrbr) { + cap_mode |=3D CS_MODE_RISCV_BITMANIP; + } + if (cpu->cfg.ext_zba) { + cap_mode |=3D CS_MODE_RISCV_ZBA; + } + if (cpu->cfg.ext_zbb) { + cap_mode |=3D CS_MODE_RISCV_ZBB; + } + if (cpu->cfg.ext_zbc) { + cap_mode |=3D CS_MODE_RISCV_ZBC; + } + if (cpu->cfg.ext_zbkb) { + cap_mode |=3D CS_MODE_RISCV_ZBKB; + } + if (cpu->cfg.ext_zbkc) { + cap_mode |=3D CS_MODE_RISCV_ZBKC; + } + if (cpu->cfg.ext_zbkx) { + cap_mode |=3D CS_MODE_RISCV_ZBKX; + } + if (cpu->cfg.ext_zbs) { + cap_mode |=3D CS_MODE_RISCV_ZBS; + } + if (cpu->cfg.ext_xtheadba || + cpu->cfg.ext_xtheadbb || + cpu->cfg.ext_xtheadbs || + cpu->cfg.ext_xtheadcmo || + cpu->cfg.ext_xtheadcondmov || + cpu->cfg.ext_xtheadfmemidx || + cpu->cfg.ext_xtheadfmv || + cpu->cfg.ext_xtheadmac || + cpu->cfg.ext_xtheadmemidx || + cpu->cfg.ext_xtheadmempair || + cpu->cfg.ext_xtheadsync) { + cap_mode |=3D CS_MODE_RISCV_THEAD; + } + if (cpu->cfg.ext_XVentanaCondOps) { + cap_mode |=3D CS_MODE_RISCV_VENTANA; + } + info->cap_mode =3D cap_mode; } =20 #ifndef CONFIG_USER_ONLY --=20 2.43.0 From nobody Mon Sep 28 01:15:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786239309; cv=none; d=zohomail.com; s=zohoarc; b=f0FBoHBCbWByuHYbtq53aW2vuzbVshK334XYM6Dy+2xabBnMHcQmcPjD0rmoQqY+KKP/lqLfPpPyiZrsKtorhFC7rZIDRB2hc4t9mwdHus8SE8xh+xjVGHKcB042CPCiD1skZfrq+hJgCkikTwpEDB1oSflGiWSHpeyHntKzGi8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786239309; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xMgsCAzpsxr99VprhfKZkcv1OibNXXEBZ1Rt/1CfLY0=; b=KoxQ3asiOK8e+3nWIVhAaZGjAK7ke2Elgss9+/0Vt5zJTMBoSbzs8BcYw57N19CSn4nQfMBv1loYf2w22kczWCnTxDPnQ6V/P8PzDrv0Oa+BkuwVJM+21ksyRVcTD1BHMf6PSZBr9o4vBgCwJBRnopDkeUgHbsl+wlToVhbXdio= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786239309903798.5976165202653; Sat, 8 Aug 2026 18:35:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wssQD-0000KT-R3; Sat, 08 Aug 2026 21:33:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wssQC-0000JV-Qp for qemu-devel@nongnu.org; Sat, 08 Aug 2026 21:33:52 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wssQB-0002KM-0o for qemu-devel@nongnu.org; Sat, 08 Aug 2026 21:33:52 -0400 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-38f620399a0so652421a91.2 for ; Sat, 08 Aug 2026 18:33:50 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39085de8ddcsm10067927a91.6.2026.08.08.18.33.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Aug 2026 18:33:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786239230; x=1786844030; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=xMgsCAzpsxr99VprhfKZkcv1OibNXXEBZ1Rt/1CfLY0=; b=Pj89OhqxmREy0XuKX0uWHoGhbr/IJ5SX8VWBKnE7aXcxymn+21Zofhgn+H11S4rvoI HQWUE7O9D87pT40ILoVUrQinI/6ZoAzl9JmtBW1AoSoOavinuCDH71rgNYQiFXBcCg8W Q7tmuiWuPyhqNbcbrSdPxmOYl7Z+5cYD7/0WRHgdkUyZhblWoTJQj+EeECXo3fb1sfpj 7qTxN+d9nRcpZBlIS8feC6sMOYpKWsm0lr0f6Fp5E8frH5Yu1nj5Aq8q+s7zE7c626o0 JHjKjYTeM7C+lFU0l38qIXczzqwSuFdHZg+7oQ1Ao+ophA5UvSc9WtB3ErM+bFLgxifH 5ISQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786239230; x=1786844030; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=xMgsCAzpsxr99VprhfKZkcv1OibNXXEBZ1Rt/1CfLY0=; b=YeXrk1MP3k620/tjvEWZK7AGVFEYxt41BvlbM52lhmKa+PxGQQby6Ae9GsR6Skt9s9 PlSqZVUHPGnNFv459LNv7qrNuuA3fF4WNmdwKUR3WtvGsTrG3//fNfVVrPb3TZ0Q10m1 vwxoeJykeXQxutelmHQzaz8AQ98Qm9YGueOJPKGou1jBl7s6IeVyvoqqUW5Q9fDEQ5+H JcyKSwfBktzaKHKpqABbnClT+ZxhNuAZBobL6Ezq1nN/7SuV0cvHbZ2HI6cJbDqbDcQa ai+CfkTrV5zzHiGlyZze/wmj6K5HX98fOmjMQEYQvtm89f0NiuWpHhfEZGbMf7tzLjTa 0nHw== X-Gm-Message-State: AOJu0YyylLP8AysBZuhnlRpMxavBLP0NiKGflvHoqlqk32Vb25dPHg8V vS3KGya/aeeGcI1l1YE8VTnWYpWJBoLPqhot8jqsqaADkMAP/ALONcU1W3lCAuaQiHewYiGe0Ks pTMKR X-Gm-Gg: AR+sD11EbdoAZA9iqu9/7gBpY0rczIKD3Za6xyAxczVk9ObQ08JdH/ojpN0s7hhW4xn xY+AtQtF+0ukwX7D9JReZZi7lnxLDRFce9t6TpDV5oJsUbCPiwkYB0m5jB//5Uw6hm0auif8Ol8 E7STDEY6c6la6Ge0a89JbKDnn+QbQXYIy83H0qThc3GgPfdm9niEHTxC1Cl4J7XRa/AIvBJP1W2 vNn0rlSLJY3CVDvXbknA2/xGhc5OpiNz9w5I/7BO1zi2WFFawver16tCC473enoLqEuWqvfOeWf fvxpi0ReymNraA6WqQTsylrPS8QHANj9Z3JmGItWErwwzOHaSnM7GEfs7RD5m5wjkTj+7nu69FI fr3Ns4MlxIPG3pnGGsfZQwcXwpyqyM68uSoH80wURZiwDFjrjkQzgIhLzEQp9LVi5DscfZh5pKw pXonlhmrif9+SpMUJhFTWHLKPOuHHpeq//Pk75tmZ2b7wH+b2ixih7+mlD/Y4E+R1nvZ9bw8y7P WDkf5mRVpOOpQG72B8Q98onM/hb44g= X-Received: by 2002:a17:90b:580b:b0:38e:9e9d:9209 with SMTP id 98e67ed59e1d1-3903c5c51cdmr34482563a91.17.1786239229585; Sat, 08 Aug 2026 18:33:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: 17746591750@163.com, laurent@vivier.eu, philmd@mailo.com, qemu-riscv@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 4/9] target/sh4: Enable disassembly via capstone Date: Sat, 8 Aug 2026 18:33:38 -0700 Message-ID: <20260809013343.664966-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809013343.664966-1-richard.henderson@linaro.org> References: <20260809013343.664966-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1034.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786239311771158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/disas/capstone.h | 7 +++++++ target/sh4/cpu.c | 14 ++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/include/disas/capstone.h b/include/disas/capstone.h index 5c78824da2..788f90771a 100644 --- a/include/disas/capstone.h +++ b/include/disas/capstone.h @@ -71,4 +71,11 @@ #define CS_MODE_RISCV_VENTANA 0 #endif =20 +#if CS_API_MAJOR < 5 +#define CS_ARCH_SH -1 +#define CS_MODE_SHFPU 0 +#define CS_MODE_SH4 0 +#define CS_MODE_SH4A 0 +#endif + #endif /* QEMU_CAPSTONE_H */ diff --git a/target/sh4/cpu.c b/target/sh4/cpu.c index 763424695c..7593062993 100644 --- a/target/sh4/cpu.c +++ b/target/sh4/cpu.c @@ -28,6 +28,7 @@ #include "fpu/softfloat-helpers.h" #include "accel/tcg/cpu-ops.h" #include "tcg/tcg.h" +#include "disas/capstone.h" =20 static void superh_cpu_set_pc(CPUState *cs, vaddr value) { @@ -167,10 +168,23 @@ static void superh_cpu_reset_hold(Object *obj, ResetT= ype type) static void superh_cpu_disas_set_info(const CPUState *cpu, disassemble_info *info) { + const CPUSH4State *env =3D cpu_env((CPUState *)cpu); + info->endian =3D TARGET_BIG_ENDIAN ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE; info->mach =3D bfd_mach_sh4; info->print_insn =3D print_insn_sh; + + info->cap_arch =3D CS_ARCH_SH; + info->cap_insn_unit =3D 2; + info->cap_insn_split =3D 2; + /* + * Possible capstone bug: the isa levels are not additive: + * least significant bit wins, so SH4 overrides SH4A. + * Work around by settiing one or the other but not both. + */ + info->cap_mode =3D CS_MODE_SHFPU + | (env->features & SH_FEATURE_SH4A ? CS_MODE_SH4A : CS_MODE_SH4); } =20 static ObjectClass *superh_cpu_class_by_name(const char *cpu_model) --=20 2.43.0 From nobody Mon Sep 28 01:15:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786239268; cv=none; d=zohomail.com; s=zohoarc; b=V0AMdZxrAvdcE3zZVhA9iACbiZWICPrInItnogb+EwgFJs70o03dIsm6+CK1CtU0OPc6fUC6jRpAfAkwQhkUBrUUXJdDh2C6XaBH5If+PITUVI7KrV8HjR9/k+Mn+Q31Lymh1A57Hd1Af3WmQk14l0S6XYEBQbTdGYQKjKIlQnQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786239268; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9CMjhGAouHGBJW/4hNYHsxuO6VLA75iUJaQ3M13HdXA=; b=TWy5gswqPgZzKzYTTz4UUNLW7LLU8SqzxB+D1A1m2jwGLh9tUKGhSNgGQ0Zu8jyr8pWdbvc9Vk5ftvxJq5hmDlqXrEfYDIRw/lKP1RP2E9N1pfkwpk5iw59pGGxiy7qEYWDDOeX93K6wXwK6q3o/CL5p2uZQmDD583JYft9sqPA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786239268837120.70906141087028; Sat, 8 Aug 2026 18:34:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wssQF-0000Mc-Tm; Sat, 08 Aug 2026 21:33:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wssQE-0000Km-76 for qemu-devel@nongnu.org; Sat, 08 Aug 2026 21:33:54 -0400 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wssQC-0002L5-8m for qemu-devel@nongnu.org; Sat, 08 Aug 2026 21:33:53 -0400 Received: by mail-pj1-x102e.google.com with SMTP id 98e67ed59e1d1-38a0c7e841fso1034979a91.2 for ; Sat, 08 Aug 2026 18:33:51 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39085de8ddcsm10067927a91.6.2026.08.08.18.33.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Aug 2026 18:33:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786239231; x=1786844031; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=9CMjhGAouHGBJW/4hNYHsxuO6VLA75iUJaQ3M13HdXA=; b=U3k809V8Njf08omCmoxMBcqnLkWemSDPXVBR7GMj9Q3RahLCRLGVSIN+x7tGg4G8TP XQYdjNgP3rpZ5WFzfWdIymNLdb3cnNorrZxnlURvEZOXDATS3zEBv4FZAv4NmlOYQJku 19U8XlANC5ubgVz5OUSXyYQEp0qvoljgEWnmX5AzbLQv3PJ38F50MBWoVCkZTxYyKLyP l8gB5xMZtCx4S4s4Pm7+wme8gp+ttnDQ3glmetYpQYW5oDwx/gprw0W1GtlpYgfMO9wQ WNHEAydJWaViQcmVy2t6Yzuswly0spLdBZbv0GXpvPOl/OwakukUG+uLgfpIA0ubUW5P aBVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786239231; x=1786844031; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=9CMjhGAouHGBJW/4hNYHsxuO6VLA75iUJaQ3M13HdXA=; b=cKTCkpkZm0P3HBzyzSTkFezQeb+0umFmT0nC+7+PSxfcDc3mnJQCWoG/tEU+lC/vEn v7GEzujvMzdFMjmvDgkq/ixPuwOnhRzkc+s/iCTitINlW7wk4fYO5w5BpjoZo8aehUt5 sw6NGdkWv6mRaALSHsGfqVEAAQ6hZYGp/Mdzh9rEcsUW3f9HDYL9PUA1R+6i0ww20NFK WSNvdIn5mZAYAFvSLw5kTRzFQY1+eqsSc0Ov/KtWuDfdtwkGD8i01/mQj92MFsMAK94H fdC+40GhsrAZO8kms8gpu7RGGtti4md3qv8vMTLJHQy9U8P/RkizjyfFr4XKwfu+tXYT 3ssg== X-Gm-Message-State: AOJu0YyUFQ+nKUASNeyas7Zp95FlqLaoKeZ1WLWHtizJKt2Mv1D+TEZx ym6ez+XtAHLBdMsYBQQRSdWVa6EH+DbNuJ9M3hIHpxQXnenU0GKdOktgQpCSKq7XJO2NoJiXzbL 3DqLi X-Gm-Gg: AR+sD10tGEjzeU5Zkw75XZ5FXAWV3+XcnPAqqnj0PdgoWjlT+mBF2MLnVp8aZEDCryw KzegTVxdGza4hALAskGmA4xLoeI0+5BR0I3gmBPo+lQNP197qUz8VMMOGIPU/wEeJMda8TS4GQP Lrv+UsarvhlXHzNWk/jR+MfWbc1k9Oz9zeJTMCfIpiviioAtryzFy1lkZGplFrAh/fCCsET0ThR 9saN2y502dQcci5DfwyOi0tjMNpI8zhd3dwC+Q9R0ONcUJctpqc7cH8jmyjlSAVBC7QezdWVUm5 DrKQNKf1BWizOjBgo+YCWOim1Lp6d+TmcPZ95uZEv8BzBp6wUzkZlOTZpSlVCTVoU9b/ngJqSru ZmEFs7sE85L55lnFEJHUpnsDq59WhCtKyZ0bPptq13IMGUfHGmOkRNJSgZrN6zTwi+RNC7co1M7 qSRgvSwMSJbO96u/LEwm6P3EP/3ybevxTlbMa0VwuxdGk0rkt/SRRcoqa1h9MDz3U5Q32y/3Rfv RnbYN2zyrSQdqbRAVyl X-Received: by 2002:a17:90a:d445:b0:381:20b:a9ee with SMTP id 98e67ed59e1d1-3926213f22emr14128526a91.14.1786239230705; Sat, 08 Aug 2026 18:33:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: 17746591750@163.com, laurent@vivier.eu, philmd@mailo.com, qemu-riscv@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 5/9] target/tricore: Enable disassembly via capstone Date: Sat, 8 Aug 2026 18:33:39 -0700 Message-ID: <20260809013343.664966-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809013343.664966-1-richard.henderson@linaro.org> References: <20260809013343.664966-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102e; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786239271677158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/disas/capstone.h | 11 +++++++++++ target/tricore/cpu.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/include/disas/capstone.h b/include/disas/capstone.h index 788f90771a..db1abe7f70 100644 --- a/include/disas/capstone.h +++ b/include/disas/capstone.h @@ -78,4 +78,15 @@ #define CS_MODE_SH4A 0 #endif =20 +#if CS_API_MAJOR < 5 +#define CS_ARCH_TRICORE -1 +#define CS_MODE_TRICORE_110 0 +#define CS_MODE_TRICORE_120 0 +#define CS_MODE_TRICORE_130 0 +#define CS_MODE_TRICORE_131 0 +#define CS_MODE_TRICORE_160 0 +#define CS_MODE_TRICORE_161 0 +#define CS_MODE_TRICORE_162 0 +#endif + #endif /* QEMU_CAPSTONE_H */ diff --git a/target/tricore/cpu.c b/target/tricore/cpu.c index 472c24ae32..c3c9b7ef02 100644 --- a/target/tricore/cpu.c +++ b/target/tricore/cpu.c @@ -24,6 +24,7 @@ #include "qemu/error-report.h" #include "tcg/debug-assert.h" #include "accel/tcg/cpu-ops.h" +#include "disas/capstone.h" =20 static inline void set_feature(CPUTriCoreState *env, int feature) { @@ -35,6 +36,35 @@ static const gchar *tricore_gdb_arch_name(CPUState *cs) return "tricore"; } =20 +static void tricore_disas_set_info(const CPUState *cpu, disassemble_info *= info) +{ + CPUTriCoreState *env =3D cpu_env((CPUState *)cpu); + + info->endian =3D BFD_ENDIAN_LITTLE; + info->cap_arch =3D CS_ARCH_TRICORE; + info->cap_insn_unit =3D 4; + info->cap_insn_split =3D 4; + + /* + * Possible capstone bug: the isa levels are not additive. + * Work around by settiing only one. + * Note that TriCore 1.3.0 is the earliest we support. + */ + if (tricore_has_feature(env, TRICORE_FEATURE_162)) { + info->cap_mode =3D CS_MODE_TRICORE_162; + } else if (tricore_has_feature(env, TRICORE_FEATURE_161)) { + info->cap_mode =3D CS_MODE_TRICORE_161; + } else if (tricore_has_feature(env, TRICORE_FEATURE_16)) { + info->cap_mode =3D CS_MODE_TRICORE_160; + } else if (tricore_has_feature(env, TRICORE_FEATURE_131)) { + info->cap_mode =3D CS_MODE_TRICORE_131; + } else if (tricore_has_feature(env, TRICORE_FEATURE_13)) { + info->cap_mode =3D CS_MODE_TRICORE_130; + } else { + g_assert_not_reached(); + } +} + static void tricore_cpu_set_pc(CPUState *cs, vaddr value) { cpu_env(cs)->PC =3D value & ~1; @@ -214,6 +244,7 @@ static void tricore_cpu_class_init(ObjectClass *c, cons= t void *data) cc->gdb_write_register =3D tricore_cpu_gdb_write_register; cc->gdb_num_core_regs =3D 44; cc->gdb_arch_name =3D tricore_gdb_arch_name; + cc->disas_set_info =3D tricore_disas_set_info; =20 cc->dump_state =3D tricore_cpu_dump_state; cc->set_pc =3D tricore_cpu_set_pc; --=20 2.43.0 From nobody Mon Sep 28 01:15:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786239286; cv=none; d=zohomail.com; s=zohoarc; b=fY7ZfGieGSuVpTLAOvLg3ac93WFKtvjiPmPkkfleei+Wvv8hc7JS74GxW3DwFhCJX3UW+ceJFNT1m29M7djHa0QaYHmuTaaBhlEtK2k1TJSTs7t0jyqOBuWvxDST4aeIj55mRTlgJdewD0n0si6a46RfF9K/8Uy6GHWAluIwm58= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786239286; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=4jhjL0sYTcEwoMlXIeDPnxkRkvt5ThgU+Lk3I6u8abI=; b=Us6R4RsN22NwHkT11Wd7k/hA+pD4JtWAC3zLWXclNR25SyuSb2aJUGkIVMqrGgRB9XH4qLJ3YrFTkwdPToAV1KAjoix3nQzLwNYS3BdvQf/zTwcgvvlS/fhuX/iIzs9YmTiuNkXjqKjKsfYucdGhAbgYNr7VHnEmh3mz15+7VPA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786239286413554.3703064842545; Sat, 8 Aug 2026 18:34:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wssQG-0000Mu-Hf; Sat, 08 Aug 2026 21:33:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wssQE-0000Lc-Tj for qemu-devel@nongnu.org; Sat, 08 Aug 2026 21:33:54 -0400 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wssQD-0002Lh-7l for qemu-devel@nongnu.org; Sat, 08 Aug 2026 21:33:54 -0400 Received: by mail-pj1-x1029.google.com with SMTP id 98e67ed59e1d1-38e88b60121so644531a91.3 for ; Sat, 08 Aug 2026 18:33:52 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39085de8ddcsm10067927a91.6.2026.08.08.18.33.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Aug 2026 18:33:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786239232; x=1786844032; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=4jhjL0sYTcEwoMlXIeDPnxkRkvt5ThgU+Lk3I6u8abI=; b=PuL86wKbOZC8u14jEO2eNJ0m4SAW3TyFyF5L1LjyJIz7X7TrGUB+T5zzCi1D8b7Gcu H1abtRjcpzTsqiYYlmkxJH/Nep9JubWx1ZdwIxKdHpuVSOZrQJBh2/st+c/IurWOjMBB MUxlggBeJAJSIFhZ4Jm1fNp4QNR7rwTvyf75eIRYw3bXccobw93YFrt2ixhohlsrs4VJ q+oH0nRU40hf6K9eUOf/N9eyJK8x6+bm2mKChRuP1HZ2n4AN9AAXsI8ZauHH65vbtiYp K+W7yAbGay/yvIAXlJpzWeXri/F1Nz8eXqqU1ICLDrypNwgOQ24ugQkBXSXPRseefVNX aaEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786239232; x=1786844032; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=4jhjL0sYTcEwoMlXIeDPnxkRkvt5ThgU+Lk3I6u8abI=; b=QakikvHEnOvUuDu8T8sZTIlDZ/zxGi5VbItFvVmGWlPOKgPaETgIu5Tk1GVAzK9iy5 x2kb4TI0ntB3LL00W+Pn62WXtDhM4+mQ+o5W4hz4hBSN7K6VRjTz6u1XPSnLYKfJopWk k7elBD5+wcLg7BhDl8OGG875y6m4uwOwrp2alChEQu6LT7Ye8Ph6G2UCkpNT8T7F94Bw 1owZIk8JXFVrH4VRih31Uxp4zhgF6u4qQ+1ReJSU7ZphnPfL//lbvin5bXgndQIbjDZv b3hl311lL8dkhK4f1ESsfsldfjO9QiSVkaR69U9V75/a4SX9RgEmpQBrFZ5zym7xzgzZ TMNA== X-Gm-Message-State: AOJu0YwY2kcNEsuk/e+BNcTFGN+jqvCviGv3l+C/RtmOlFMHlKlpVGJ5 FkxTPa1mPNvdvytIaQj4vX9CruAcxR6vKnRcQIj7MOzmnEht03luERSQypOI9eot/qrgOSDNIwM BmNzY X-Gm-Gg: AR+sD12N3/as+16t8TWY28vXGsQ3EwKVnsmPqgjqLV5Doek/KiFEalJ8BWge63TBpvc 5CjDFIE4YN7UqHb4qGOdoiXfDXCevXeuxf5gGg7a8YYMd8XhltD1xIUSlQcXJAKmJu/ON40u9lb LT0iElr31Bl1rcuCBjj7xDjgu+kyy55uvsu8pBZ8rGRk3Zku7HI6tkZT5qmpjQfBUMlECzSufWi VYrxcocJhnj44Nb+z14CPHHb8wZ+N1fsW8NuB9S6DBpJ8hUyurt/vFpFmK33gDzWSrhxAa+LbQT Uj8TBZ7c2Dcj+twxce27dbdqB8ZZi8NWw/a8zoS+F5Xi0ZsJL12A0S1r4O0wK+WckTaIbvFAEHA AAdaNPm2yLcKK0oecwL+ovViI5MMEMt+fyUl2pAuuI3ppBofZI1NXoVPrIl8gG250WghXtYFY48 z8FpabsP6d/nU4CFjdv2YbvtJ2OPr6hPfX17ZaU+OpodkFBsgBH4JShOnPdHD+cRzfVeFDlhn05 KI3C6Jzw+2cE5NZlPUw X-Received: by 2002:a17:90b:4c84:b0:381:c500:b0d1 with SMTP id 98e67ed59e1d1-39282554a40mr9570798a91.20.1786239231660; Sat, 08 Aug 2026 18:33:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: 17746591750@163.com, laurent@vivier.eu, philmd@mailo.com, qemu-riscv@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 6/9] target/loongarch: Enable disassembly via capstone Date: Sat, 8 Aug 2026 18:33:40 -0700 Message-ID: <20260809013343.664966-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809013343.664966-1-richard.henderson@linaro.org> References: <20260809013343.664966-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1029.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786239287918158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by:=C2=A0 Song Gao <17746591750@163.com> --- include/disas/capstone.h | 6 ++++++ target/loongarch/cpu.c | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/include/disas/capstone.h b/include/disas/capstone.h index db1abe7f70..a922f7627f 100644 --- a/include/disas/capstone.h +++ b/include/disas/capstone.h @@ -40,6 +40,12 @@ =20 #endif /* CONFIG_CAPSTONE */ =20 +#if CS_API_MAJOR < 6 +#define CS_ARCH_LOONGARCH -1 +#define CS_MODE_LOONGARCH32 0 +#define CS_MODE_LOONGARCH64 0 +#endif + #if CS_API_MAJOR < 5 #define CS_ARCH_RISCV -1 #define CS_MODE_RISCV32 0 diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c index fb03424ffa..7007622630 100644 --- a/target/loongarch/cpu.c +++ b/target/loongarch/cpu.c @@ -29,6 +29,7 @@ #include #endif #include "tcg/tcg_loongarch.h" +#include "disas/capstone.h" =20 const char * const regnames[32] =3D { "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", @@ -694,8 +695,15 @@ static void loongarch_cpu_reset_hold(Object *obj, Rese= tType type) static void loongarch_cpu_disas_set_info(const CPUState *cs, disassemble_info *info) { + CPULoongArchState *env =3D cpu_env((CPUState *)cs); + info->endian =3D BFD_ENDIAN_LITTLE; info->print_insn =3D print_insn_loongarch; + + info->cap_arch =3D CS_ARCH_LOONGARCH; + info->cap_insn_unit =3D 4; + info->cap_insn_split =3D 4; + info->cap_mode =3D is_la64(env) ? CS_MODE_LOONGARCH64 : CS_MODE_LOONGA= RCH32; } =20 static void loongarch_cpu_realizefn(DeviceState *dev, Error **errp) --=20 2.43.0 From nobody Mon Sep 28 01:15:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786239374; cv=none; d=zohomail.com; s=zohoarc; b=OhcI3dwsYs/SJv1yfM9OltPN7HjY0oeW1dj4IMJfmH+qOkVQNpLMbNiqBIY/b+7WQo4+CTVR3vx4J/PNzXSBbIBCF6u/Zi1gYjD8OzBdNkkK3Eb6vO2GDyfO3U7QA/f9xbt/8/l/i96wnFjPLHPDjxDStEDGUhud2JytIUUJyuc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786239374; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=GU/L2JcroJNHA+KY28DNLnCmO+j8k/C0lmalv2aUq0M=; b=U/TrNDCmquszSqd+s1gLAhLLhFZZhGxSWojRInPyOWT06jq58yfzTZLtACh2i+76NAWreFrEq4nf7J97y3SQVz993baStvwvCGIoEMAM3OYTmnTLfkjd7W+nPks0XjtCgz7A8Xet7FZd1qMjTa7zACygFJYmBmKZXijUSEccoEw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1786239374291322.03564147714417; Sat, 8 Aug 2026 18:36:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wssQI-0000PG-4g; Sat, 08 Aug 2026 21:33:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wssQG-0000Mv-LZ for qemu-devel@nongnu.org; Sat, 08 Aug 2026 21:33:56 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wssQE-0002Ng-Ux for qemu-devel@nongnu.org; Sat, 08 Aug 2026 21:33:56 -0400 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-38a0c7e841fso1035003a91.2 for ; Sat, 08 Aug 2026 18:33:54 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39085de8ddcsm10067927a91.6.2026.08.08.18.33.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Aug 2026 18:33:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786239233; x=1786844033; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=GU/L2JcroJNHA+KY28DNLnCmO+j8k/C0lmalv2aUq0M=; b=DT2l6yERyOrTZ/+fGv+Iy2ylNBIMJaSNtK0ssXIxGQnog2i5klal0JClkItTj5XNz/ SMYr3ZNIwaIyBauOJ+9bCgbKxOW4aP84lCcCCcngo62r9/JpmqV6LQmKkeXU/sokI6JL NB1Amt7/mQhfHWcRw8pm1HEk5twftWy+FX3NjgpY3xRxuH542BHBzVCzflqki6J96KWE Cu8X9Z8/5urZOJy4HGGozKPZ733s/NXQdp0Ik1V3R1Ngv+28r3Z4aYYiuJbYwNn3f4TC qjO/sAWyyn/Oi6FNTE55/F6eHHa8IZZMpssUvy0LTorJCOkEvYshEYwshDhASnxMvIIa bUsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786239233; x=1786844033; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=GU/L2JcroJNHA+KY28DNLnCmO+j8k/C0lmalv2aUq0M=; b=plu8q21k3l5hqioTExIcC3llCmezm0Zfx+JhUptfmfoxxEEw7At/GHvZf1nWWLYG6v nGnk/Q4ZwiXZCDnmO7KtY41oTrApzI9SAVtdX0kQCsKouw43FK2YNcChN1MTLA0/WLPq 2bA10LkfDrkeKbD+P75rRrt5zjYow5xnNDKzWVHYfac5PqC8/Mz8Wan0W1v9zXxkY3n/ 7gakIS/Ld1JD4FDJJzNuHGW2V8YD5Zyx1peqkPv34MnP9OTQ/Jt7TYbuvCx8b+vdczwp GbSu6T78XfqgU0KQq5VHFf2f88eDTYs7sIY+upv0Rryw0D/wX5jw65uZLUR9hXfQQbm6 3Zhg== X-Gm-Message-State: AOJu0Yy9Hh6kKuisHOL1CixHTKRvMlhk/+QxQZWsqqNt8NWGgn66rjO3 CUqXwRy0oJnBfBN0jYeAt9lWpoRpwfv4zybJgd8pXpOIWZLZHDHpOdDmm2Ls5yXnUZqHeYmi5s6 +RSnb X-Gm-Gg: AR+sD13CWujZkA7fTRpFdvRE+WLy8PR/JfP7Jus4MESHheYZAT2A5SayLt07yyZVMdr il9duLc3MNVBDuED6Isn8F9G0pGvP5FGhPoDoTOIdpS/ldHCLdwLqk9P//afKtDaVDXHu7Z/7wH a9o6+YT2ffSEVcj7Pk/WDYCsyRxKXbvJhCPPpcY1oeDen/oj2DVt7UzvjMtGDfrh4kkjqEORCRK krLY5IhS9X41V26JCVx1ZOV6BYpXwzPlntxKYAkqSV1Nn5hW5rOaoInBKblengLUuvRFip1bm7H PLSvw/ItZeqCIGv4vPHEMgETHygmlgTNhraIlXOdRZJj9XV/4vMR7+wtILL9P3XG1q7lyYHnBrB wFfmzKYGlsOC0S6RimFLSyavicB2Sgn9qy4SWhMOT9FfG4Yw4y4eCGawPPhlxGUxUne1IseJLJs Svc8g6Zwbfy/U3yhud6Own8ZEcwI6fLrayc/gFMbiK5Md03oqhfTGrfB9REh9TlyGlSCleg7Axn 1M2cV00bMnQh7hPZHih X-Received: by 2002:a17:90b:3b45:b0:38e:4f41:83df with SMTP id 98e67ed59e1d1-392621444f0mr13898722a91.15.1786239233399; Sat, 08 Aug 2026 18:33:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: 17746591750@163.com, laurent@vivier.eu, philmd@mailo.com, qemu-riscv@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 7/9] target/s390x: Update capstone disassembly to v6 Date: Sat, 8 Aug 2026 18:33:41 -0700 Message-ID: <20260809013343.664966-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809013343.664966-1-richard.henderson@linaro.org> References: <20260809013343.664966-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1034.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786239376102158500 Content-Type: text/plain; charset="utf-8" In particular, this enables many more vector insns. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/disas/capstone.h | 11 +++++++++-- disas/capstone.c | 2 +- target/s390x/cpu.c | 4 +++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/include/disas/capstone.h b/include/disas/capstone.h index a922f7627f..87f8f6181f 100644 --- a/include/disas/capstone.h +++ b/include/disas/capstone.h @@ -4,7 +4,6 @@ #ifdef CONFIG_CAPSTONE =20 #define CAPSTONE_AARCH64_COMPAT_HEADER -#define CAPSTONE_SYSTEMZ_COMPAT_HEADER #include =20 #else @@ -19,7 +18,6 @@ #define CS_ARCH_X86 -1 #define CS_ARCH_PPC -1 #define CS_ARCH_SPARC -1 -#define CS_ARCH_SYSZ -1 =20 #define CS_MODE_LITTLE_ENDIAN 0 #define CS_MODE_BIG_ENDIAN 0 @@ -84,6 +82,15 @@ #define CS_MODE_SH4A 0 #endif =20 +#if CS_API_MAJOR =3D=3D 0 +#define CS_ARCH_SYSTEMZ -1 +#elif CS_API_MAJOR < 6 +#define CS_ARCH_SYSTEMZ CS_ARCH_SYSZ +#endif +#if CS_API_MAJOR < 6 +#define CS_MODE_SYSTEMZ_ARCH14 0 +#endif + #if CS_API_MAJOR < 5 #define CS_ARCH_TRICORE -1 #define CS_MODE_TRICORE_110 0 diff --git a/disas/capstone.c b/disas/capstone.c index 78062339d0..a5bd91890b 100644 --- a/disas/capstone.c +++ b/disas/capstone.c @@ -95,7 +95,7 @@ static cs_err cap_disas_start(disassemble_info *info, csh= *handle) (uintptr_t)&cap_skipdata_riscv); break; =20 - case CS_ARCH_SYSZ: + case CS_ARCH_SYSTEMZ: cs_option(*handle, CS_OPT_SKIPDATA_SETUP, (uintptr_t)&cap_skipdata_s390x); break; diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c index c074e12ba2..e81cf16ac3 100644 --- a/target/s390x/cpu.c +++ b/target/s390x/cpu.c @@ -225,10 +225,12 @@ static void s390_cpu_reset_hold(Object *obj, ResetTyp= e type) static void s390_cpu_disas_set_info(const CPUState *cpu, disassemble_info = *info) { info->mach =3D bfd_mach_s390_64; - info->cap_arch =3D CS_ARCH_SYSZ; + info->cap_arch =3D CS_ARCH_SYSTEMZ; info->endian =3D BFD_ENDIAN_BIG; info->cap_insn_unit =3D 2; info->cap_insn_split =3D 6; + /* Disassemble everything, even if the cpu would trap on the insn. */ + info->cap_mode =3D CS_MODE_SYSTEMZ_ARCH14; } =20 static void s390_cpu_realizefn(DeviceState *dev, Error **errp) --=20 2.43.0 From nobody Mon Sep 28 01:15:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786239303; cv=none; d=zohomail.com; s=zohoarc; b=Drl+e3g6P5rCVn/VMVigI4C/+4eWMK9NcL3hWSmkE17+q9mLw1Y0dk3jpJ0QR9OqYP9FbkCDG68TuW44vVWzT4Cx9k2VgeVl1+J3q0urdwLaJoQr4JhhPTClt8/xVLHgYsB3FGZ8aF9/tnvz0mfG4gkgb5QTHxakGqQms8WjL6M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786239303; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=vP07yqpkjRyDv/S/nnmckw5rlPZxwQxqznXafIp0aFM=; b=ME8Z5GKPn5IX41msI854DXxNKawO/jKLBYmUIfLAIBoNXsdqwDgE94PDcRBtfe0kXlBzzG3Vquf/SY3BJV0xE4gx1iGRr9hWm4hv6kng42Kxar1eoEXEv2kufEaXF790O5cXkoH63J8kTXItxVGd1LVkMi7mH1lPOgHcVhlj2Hw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178623930356010.701377431104447; Sat, 8 Aug 2026 18:35:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wssQJ-0000QS-GM; Sat, 08 Aug 2026 21:33:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wssQI-0000Pz-H5 for qemu-devel@nongnu.org; Sat, 08 Aug 2026 21:33:58 -0400 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wssQG-0002OH-IM for qemu-devel@nongnu.org; Sat, 08 Aug 2026 21:33:58 -0400 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-384930ca5e2so787907a91.3 for ; Sat, 08 Aug 2026 18:33:56 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39085de8ddcsm10067927a91.6.2026.08.08.18.33.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Aug 2026 18:33:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786239235; x=1786844035; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=vP07yqpkjRyDv/S/nnmckw5rlPZxwQxqznXafIp0aFM=; b=q9rMHV8EwNicDKSG9UiV0GMEho+kIbWgyDrnWyivBMwKoK6EtHq44Gf0XWK9Ve9K+D SaHC4+EfNA+bT4EntoYu7rqgKOSAjMG1Yo2HHjDR53V6ex4HvPFTC9fcTs1a4sTx/1Ly JJPQveI/r+j1em6edgFBfcVQHP2xxrvqMdVhKeZ93j8d3wUORMmmHaeYUXuFjGqwge1M nLSRfW+FPFbivLCI/k0NTBkx4+5XYZz7/wqZxGXk2WyqxGdiEJPm3CzIJ4orPEkvFl/7 LK7Wi31gaT5kbFoWSRlLmZKYYN4gxeD7OAkaWXMBUic+rV4MZ6JSFBaYqLaq0l71yUfc RiGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786239235; x=1786844035; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=vP07yqpkjRyDv/S/nnmckw5rlPZxwQxqznXafIp0aFM=; b=mWaIO2gwfovtgfb/+eHR/OoM/izx2mVU98yw51yLeJ5s1/pAowueVWvVC5jsBnfLCW edkFOiwETTD/5TE7wzGj8JXecIMiDv7EfVwHyG2FxZGk5GlwZwpt6WkeZdY5wYqNANd7 gjND88JICJHVkUplBqL+cLiWrqs2V6/YLccW+9n43BMsV/ZagFOhEs/YJG92UONO4FsB 0kBR6mYhe38smDjMuVXWVy9WwW+ItQ1YiRHSKQiW5zklZ6aa/xk4hizy2pvfkoC9mhbx +Miuxk4yAHnDpEF7wKVB36dbN0+qpgY3eLcJUXt8Gc4WQpEOTcimlj9QmBEl36F1sKy0 6XpQ== X-Gm-Message-State: AOJu0YyWSGBE+2//S0ynSnnkdZTTV8IFRNRXh2GWVnqfRY9NDG9EZdzE rkX7Ia+/0pDt5OeY7hGeyTUZMaWt5jAUC3EW6CFvFfGeCtJByS4HHcUSuG9LfMdYTOqukZ20C6l ofqTc X-Gm-Gg: AR+sD106xMjLVTNF0CEVHwS8/96UMaBfOd+buh6pFb4tiolVltEr82PCygtg2le1FTR jPZCukG8tXuAwksl5+pIOaq+Aw7AwvSZrrB51EcSCmuUiDizYAaTmgmdwaYJ89Asaf5TnIwTrcL yqG+NRoUZuNF0pvcOSpC+Co5Yuc59o8EgIykcnR2BMjPWLieMG7/gxzeBRXj8i9B2F9RVs302Y5 TQTnOqWXprClNDqSTg1RJvSOjbn3yNMdQYBij3+hNPM5zDs0B+oCTK8e3p72yYRcna5AMPy9oFH Ik8EfDCZAqg/Sn9AEy4r6pECH2X2KJhy+E2CsTD04toagu6pngUTTK130rYy6LlOKpDHbK1bU/M 6xtLyjsCAaztzblakQc82/d/cGordqK6DmP5agqueIAL8dO83D2N3LuDlY4MVM8QHM9FHCppB1z grKWfngChDGdnkC008Ux3kdDdJNsV0B8P38Jjc/ebav6c0IfhLQW8LhYO+H4qJxFuVvCfgELZ09 Xyptv/70o+tPeZr9NSI X-Received: by 2002:a17:90b:28cf:b0:381:1c96:829b with SMTP id 98e67ed59e1d1-3903c53496dmr38916550a91.3.1786239235124; Sat, 08 Aug 2026 18:33:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: 17746591750@163.com, laurent@vivier.eu, philmd@mailo.com, qemu-riscv@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 8/9] target/m68k: Enable disassembly via capstone Date: Sat, 8 Aug 2026 18:33:42 -0700 Message-ID: <20260809013343.664966-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809013343.664966-1-richard.henderson@linaro.org> References: <20260809013343.664966-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102d; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786239306009158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/disas/capstone.h | 20 +++++++++++++ target/m68k/cpu.c | 65 +++++++++++++++++++++++++++++++++++++++- 2 files changed, 84 insertions(+), 1 deletion(-) diff --git a/include/disas/capstone.h b/include/disas/capstone.h index 87f8f6181f..3d6f90d816 100644 --- a/include/disas/capstone.h +++ b/include/disas/capstone.h @@ -14,6 +14,7 @@ =20 #define CS_ARCH_ARM -1 #define CS_ARCH_ARM64 -1 +#define CS_ARCH_M68K -1 #define CS_ARCH_MIPS -1 #define CS_ARCH_X86 -1 #define CS_ARCH_PPC -1 @@ -28,6 +29,12 @@ #define CS_MODE_THUMB 0 #define CS_MODE_MCLASS 0 #define CS_MODE_V8 0 +#define CS_MODE_M68K_000 0 +#define CS_MODE_M68K_010 0 +#define CS_MODE_M68K_020 0 +#define CS_MODE_M68K_030 0 +#define CS_MODE_M68K_040 0 +#define CS_MODE_M68K_060 0 #define CS_MODE_MICRO 0 #define CS_MODE_MIPS3 0 #define CS_MODE_MIPS32R6 0 @@ -44,6 +51,19 @@ #define CS_MODE_LOONGARCH64 0 #endif =20 +#if CS_API_MAJOR < 6 +#define CS_MODE_M68K_CF_ISA_A 0 +#define CS_MODE_M68K_CF_ISA_A_PLUS 0 +#define CS_MODE_M68K_CF_ISA_B 0 +#define CS_MODE_M68K_CF_ISA_C 0 +#define CS_MODE_M68K_CF_USP 0 +#define CS_MODE_M68K_CF_DIV 0 +#define CS_MODE_M68K_CF_MAC 0 +#define CS_MODE_M68K_CF_EMAC 0 +#define CS_MODE_M68K_CF_EMAC_B 0 +#define CS_MODE_M68K_CF_FPU 0 +#endif + #if CS_API_MAJOR < 5 #define CS_ARCH_RISCV -1 #define CS_MODE_RISCV32 0 diff --git a/target/m68k/cpu.c b/target/m68k/cpu.c index 9ad3057d91..6acf23b29b 100644 --- a/target/m68k/cpu.c +++ b/target/m68k/cpu.c @@ -22,7 +22,7 @@ #include "accel/tcg/cpu-ops.h" #include "fpu/softfloat.h" #include "qapi/error.h" - +#include "disas/capstone.h" #ifndef CONFIG_USER_ONLY #include "migration/vmstate.h" #include "monitor/hmp.h" @@ -182,9 +182,72 @@ static void m68k_cpu_reset_hold(Object *obj, ResetType= type) =20 static void m68k_cpu_disas_set_info(const CPUState *cs, disassemble_info *= info) { + CPUM68KState *env =3D cpu_env((CPUState *)cs); + int cap_mode =3D 0; + info->print_insn =3D print_insn_m68k; info->endian =3D BFD_ENDIAN_BIG; info->mach =3D 0; + + /* m68k support in capstone prior to v6 is unusably bad */ + if (CS_API_MAJOR < 6) { + return; + } + + info->cap_arch =3D CS_ARCH_M68K; + info->cap_insn_unit =3D 2; + + if (m68k_feature(env, M68K_FEATURE_M68K)) { + /* + * m68k insns may have up to 11 words, and 5 words are common. + * Choosing 12 bytes splits after 6 words and disassembly + * uses no more than 2 lines. + */ + info->cap_insn_split =3D 12; + if (m68k_feature(env, M68K_FEATURE_M68060)) { + cap_mode =3D CS_MODE_M68K_060; + } else if (m68k_feature(env, M68K_FEATURE_M68040)) { + cap_mode =3D CS_MODE_M68K_040; + } else if (m68k_feature(env, M68K_FEATURE_M68030)) { + cap_mode =3D CS_MODE_M68K_030; + } else if (m68k_feature(env, M68K_FEATURE_M68020)) { + cap_mode =3D CS_MODE_M68K_020; + } else if (m68k_feature(env, M68K_FEATURE_M68010)) { + cap_mode =3D CS_MODE_M68K_010; + } else { + cap_mode =3D CS_MODE_M68K_000; + } + } else { + /* ColdFire insns may have up to 3 words. */ + info->cap_insn_split =3D 6; + if (m68k_feature(env, M68K_FEATURE_CF_ISA_A)) { + cap_mode |=3D CS_MODE_M68K_CF_ISA_A; + cap_mode |=3D CS_MODE_M68K_CF_DIV; + } + if (m68k_feature(env, M68K_FEATURE_CF_ISA_B)) { + cap_mode |=3D CS_MODE_M68K_CF_ISA_B; + } + if (m68k_feature(env, M68K_FEATURE_CF_ISA_APLUSC)) { + cap_mode |=3D CS_MODE_M68K_CF_ISA_A_PLUS; + cap_mode |=3D CS_MODE_M68K_CF_ISA_C; + } + if (m68k_feature(env, M68K_FEATURE_USP)) { + cap_mode |=3D CS_MODE_M68K_CF_USP; + } + if (m68k_feature(env, M68K_FEATURE_CF_FPU)) { + cap_mode |=3D CS_MODE_M68K_CF_FPU; + } + if (m68k_feature(env, M68K_FEATURE_CF_MAC)) { + cap_mode |=3D CS_MODE_M68K_CF_MAC; + } + if (m68k_feature(env, M68K_FEATURE_CF_EMAC)) { + cap_mode |=3D CS_MODE_M68K_CF_EMAC; + } + if (m68k_feature(env, M68K_FEATURE_CF_EMAC_B)) { + cap_mode |=3D CS_MODE_M68K_CF_EMAC_B; + } + } + info->cap_mode =3D cap_mode; } =20 /* CPU models */ --=20 2.43.0 From nobody Mon Sep 28 01:15:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1786239269; cv=none; d=zohomail.com; s=zohoarc; b=NHOvj4SpB+/IC/en9hxOGQvGFeqOoL1aHGeI22vXNGJpNck2Q3gLdXAXaNeWhaoCnfPydhww7Nl0WQ0ZpW8KmWTl3G+BIJ//T3OIWxXk1F7IDjWq4+j8piKryz9HM9T51wsDTLJyxiC1m1VBXCY+hR/as5i9mcguy8TeVoCRR3E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1786239269; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dWl2kF+BI1wwEWisHRuE5gHiRiAwOOJORcz274ON1PI=; b=FxF3PTxsz/SbdlO7k/R2gOOHzUi+mhigdaWeGnxdVMfRkqFPXFCeNw6W1qXEN5a0tR1HS6PYm6JLlzPCvB25uxTDYEq28rDIvBuaO1o2aQ4YfBNSU+ZMaGIZO2xwcUjWrw7alhilXnsFCOt0lSfi1PS56XmLtShxIe+YbIxh92g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178623926905495.2992213301527; Sat, 8 Aug 2026 18:34:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wssQL-0000SY-1V; Sat, 08 Aug 2026 21:34:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wssQK-0000Ro-2D for qemu-devel@nongnu.org; Sat, 08 Aug 2026 21:34:00 -0400 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wssQI-0002Of-0z for qemu-devel@nongnu.org; Sat, 08 Aug 2026 21:33:59 -0400 Received: by mail-pj1-x102c.google.com with SMTP id 98e67ed59e1d1-3811f512167so1115393a91.3 for ; Sat, 08 Aug 2026 18:33:57 -0700 (PDT) Received: from stoup.. (174-21-93-59.tukw.qwest.net. [174.21.93.59]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39085de8ddcsm10067927a91.6.2026.08.08.18.33.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Aug 2026 18:33:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1786239236; x=1786844036; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=dWl2kF+BI1wwEWisHRuE5gHiRiAwOOJORcz274ON1PI=; b=vzoKRK+TUYMFypegU1M9VojcwQuV6IGY/7NH8vwLL7IrtYxsRqBhJVZXlW1qRMzCPF yFZQLnEUY+4bpMCdx5FmVyKgcKhWwqkKbGo67eC4CMIFiHjc3PCSbSA8YALCxoS6VoZf 8JL30lJ3dzV0Xd+CpoUxOOT1k258FpEiILn7qrPD/mHLvTThuP/eAty3tUigCQpKh2Mh UJMnx5pxtRzsiVdB5P/ojT3bN+DYMI0dc8v0eHxLA+Ub7k9gBKgfPHyTaPQUkerGpb3/ pOBKyprydf4bqDwloknFUo7lQP6a+0x4kSZQEaH/HYodTLPgZdxCZ90wPRXDVUOceAQO EQQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786239236; x=1786844036; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=dWl2kF+BI1wwEWisHRuE5gHiRiAwOOJORcz274ON1PI=; b=AYKQNCQaMPC8CiUdLIYT6Asr4UKzTiBFiuW0qeNTmj7UTMfsYhUvYiXSST95LECCb2 2lEhG1yy5ZuC0UsxJyzL+rCRMCcfHlZyj6rYNBQqqKabeUaEQDj9iCouUAyzoAZi7Jqq 4JUxDE+ZoK9nXSXeuN11FYKdmAFr/K1F+eqyw8uQeqXyWiYYYKDnTvdpixQl0RBh40oK nwIuoisrFbTFd8xoZ8mSGyTQT/OnBkBUVCwTmG2l3UxfCL/jKRsKK7B+MNT2OUcEKJcF Y90CXQkuywwe0gxm7Cwsiv8y9ZLgNEsXM3H2IaTQaOt+cnSgLDGZB5wjRGGZ9PQ0sWYb RTUQ== X-Gm-Message-State: AOJu0Yzv2cTdrMQ0XYcLZp287h/kwBpfpD7yi1QHItamv/Va00Qpjk29 LrBkMGHIyw4Hic0ESQRPgfwE5buZC3ITDe9PfXI0rurwhuH6H4PYk+3CnnuC/SFlfCsCzCdKLDj BbqUu X-Gm-Gg: AR+sD139KtqZ1G0DsLL/0Luygj7GoBrVNnatnuEuN5L3IjKMQib3cV1oAE5TkUim9Qu AizO1RZKie3/PPWY6kId5gk/nHKHRw9bhluggm92rGOqD0W7evPRZFQiXQjJS300X2Jv059RwQz hsTWcqkgJQGZsGFHcbeVx72vPgaAD6ckez4teUSXO+sVPTulo3Ytestna1mH4AtTcSWF2isU1aB 73vNSYIcjfe8BL2/5+3DV7/47nQ17CYn8LQFkIErabsqx7QWJqICZFh+cGLSsNmEdEPT1DeTjky diUlsLFK3bBi+uT5EB4uYbwt0KzhqCgvue+VqApY8bOi66eOeELrqFXcKVRTlMjdLtsoisOHnzt Z4w8EeOqQhD1Zeh5fKrlEthY+eqp67uPtpocO6psHNw6FdnrA4XCPsM9gZyx/DUB0dk5ICfv1kQ 8RFz+QVxvQHB/B2l65OYDbumKzE3ycsIm7NVUKKDlvjtsj7cUU8AjPGMxg++vk1gUnR5+xE6GeF ohZGzP6JGdsMjHSYhUP X-Received: by 2002:a17:90b:5683:b0:38e:6aa7:68ad with SMTP id 98e67ed59e1d1-3903c54fbc4mr33971012a91.5.1786239236257; Sat, 08 Aug 2026 18:33:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: 17746591750@163.com, laurent@vivier.eu, philmd@mailo.com, qemu-riscv@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH 9/9] target/mips: Enable disassembly via capstone Date: Sat, 8 Aug 2026 18:33:43 -0700 Message-ID: <20260809013343.664966-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260809013343.664966-1-richard.henderson@linaro.org> References: <20260809013343.664966-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102c; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1786239270610158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/disas/capstone.h | 24 ++++++++++++++-- target/mips/cpu.c | 60 +++++++++++++++++++++++++++++++++++++--- 2 files changed, 77 insertions(+), 7 deletions(-) diff --git a/include/disas/capstone.h b/include/disas/capstone.h index 3d6f90d816..e72faf8179 100644 --- a/include/disas/capstone.h +++ b/include/disas/capstone.h @@ -29,6 +29,7 @@ #define CS_MODE_THUMB 0 #define CS_MODE_MCLASS 0 #define CS_MODE_V8 0 +#define CS_MODE_V9 0 #define CS_MODE_M68K_000 0 #define CS_MODE_M68K_010 0 #define CS_MODE_M68K_020 0 @@ -36,11 +37,10 @@ #define CS_MODE_M68K_040 0 #define CS_MODE_M68K_060 0 #define CS_MODE_MICRO 0 +#define CS_MODE_MIPS2 0 #define CS_MODE_MIPS3 0 -#define CS_MODE_MIPS32R6 0 -#define CS_MODE_MIPSGP64 0 -#define CS_MODE_V9 0 #define CS_MODE_MIPS32 0 +#define CS_MODE_MIPS32R6 0 #define CS_MODE_MIPS64 0 =20 #endif /* CONFIG_CAPSTONE */ @@ -64,6 +64,24 @@ #define CS_MODE_M68K_CF_FPU 0 #endif =20 +#if CS_API_MAJOR < 6 +#define CS_MODE_MIPS16 0 +#define CS_MODE_MIPS1 0 +#define CS_MODE_MIPS32R2 0 +#define CS_MODE_MIPS32R3 0 +#define CS_MODE_MIPS32R5 0 +#define CS_MODE_MIPS4 0 +#define CS_MODE_MIPS5 0 +#define CS_MODE_MIPS64R2 0 +#define CS_MODE_MIPS64R3 0 +#define CS_MODE_MIPS64R5 0 +#define CS_MODE_MIPS64R6 0 +#define CS_MODE_OCTEON 0 +#define CS_MODE_OCTEONP 0 +#define CS_MODE_NANOMIPS 0 +#define CS_MODE_MIPS_PTR64 0 +#endif + #if CS_API_MAJOR < 5 #define CS_ARCH_RISCV -1 #define CS_MODE_RISCV32 0 diff --git a/target/mips/cpu.c b/target/mips/cpu.c index d72044aef6..7c1e4827b9 100644 --- a/target/mips/cpu.c +++ b/target/mips/cpu.c @@ -30,6 +30,7 @@ #include "system/qtest.h" #include "hw/core/qdev-properties.h" #include "hw/core/qdev-clock.h" +#include "disas/capstone.h" #include "fpu_helper.h" #ifndef CONFIG_USER_ONLY #include "semihosting/semihost.h" @@ -488,15 +489,66 @@ static void mips_cpu_disas_set_info(const CPUState *c= s, disassemble_info *info) { const MIPSCPU *cpu =3D MIPS_CPU(cs); const CPUMIPSState *env =3D &cpu->env; + bool is64 =3D env->hflags & MIPS_HFLAG_64; + int cap_mode =3D 0; =20 - if (!(env->insn_flags & ISA_NANOMIPS32)) { + if (env->insn_flags & ISA_NANOMIPS32) { + info->print_insn =3D print_insn_nanomips; + info->endian =3D BFD_ENDIAN_LITTLE; + /* nanomips has 16, 32 and 48-bit insns */ + info->cap_insn_unit =3D 2; + info->cap_insn_split =3D 6; + cap_mode =3D CS_MODE_NANOMIPS; + } else { info->endian =3D TARGET_BIG_ENDIAN ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE; info->print_insn =3D TARGET_BIG_ENDIAN ? print_insn_big_mips : print_insn_little_mips; - } else { - info->print_insn =3D print_insn_nanomips; - info->endian =3D BFD_ENDIAN_LITTLE; + + if (env->hflags & MIPS_HFLAG_M16) { + cap_mode =3D (env->insn_flags & ASE_MICROMIPS + ? CS_MODE_MICRO : CS_MODE_MIPS16); + /* Beware unsupported capstone mode */ + if (cap_mode =3D=3D 0) { + return; + } + info->cap_insn_unit =3D 2; + } else { + info->cap_insn_unit =3D 4; + } + info->cap_insn_split =3D 4; + + cap_mode |=3D is64 ? CS_MODE_MIPS64 : CS_MODE_MIPS32; + if (env->insn_flags & ISA_MIPS_R6) { + cap_mode |=3D is64 ? CS_MODE_MIPS64R6 : CS_MODE_MIPS32R6; + } else if (env->insn_flags & ISA_MIPS_R5) { + cap_mode |=3D is64 ? CS_MODE_MIPS64R5 : CS_MODE_MIPS32R5; + } else if (env->insn_flags & ISA_MIPS_R3) { + cap_mode |=3D is64 ? CS_MODE_MIPS64R3 : CS_MODE_MIPS32R3; + } else if (env->insn_flags & ISA_MIPS_R2) { + cap_mode |=3D is64 ? CS_MODE_MIPS64R2 : CS_MODE_MIPS32R2; + } else if (env->insn_flags & ISA_MIPS5) { + cap_mode |=3D CS_MODE_MIPS5; + } else if (env->insn_flags & ISA_MIPS4) { + cap_mode |=3D CS_MODE_MIPS4; + } else if (env->insn_flags & ISA_MIPS3) { + cap_mode |=3D CS_MODE_MIPS3; + } else if (env->insn_flags & ISA_MIPS2) { + cap_mode |=3D CS_MODE_MIPS2; + } else if (env->insn_flags & ISA_MIPS1) { + cap_mode |=3D CS_MODE_MIPS1; + } + if (env->insn_flags & INSN_OCTEON) { + cap_mode |=3D CS_MODE_OCTEON | CS_MODE_OCTEONP; + } + if (is64 && !(env->hflags & MIPS_HFLAG_AWRAP)) { + cap_mode |=3D CS_MODE_MIPS_PTR64; + } + } + /* Beware unsupported capstone mode */ + if (cap_mode) { + info->cap_arch =3D CS_ARCH_MIPS; + info->cap_mode =3D cap_mode; } } =20 --=20 2.43.0