From patchwork Thu Nov 2 00:24:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Gavin Shan X-Patchwork-Id: 740334 Delivered-To: patch@linaro.org Received: by 2002:a5d:538f:0:b0:32d:baff:b0ca with SMTP id d15csp575535wrv; Wed, 1 Nov 2023 17:27:25 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFKfj6JX89AxFTyL8WUneFmUmaQjg7brB+1fdUS6oCxS8v8aGR1rsnZpypoADxnsDM1kck7 X-Received: by 2002:a05:6830:448b:b0:6d3:2018:cea8 with SMTP id r11-20020a056830448b00b006d32018cea8mr2279261otv.10.1698884844784; Wed, 01 Nov 2023 17:27:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698884844; cv=none; d=google.com; s=arc-20160816; b=eRdGEdRI7Vw2Ck4w1updDG7imy/SKxuYqw6D2X4YTjSh11hmw3aPt6C91btfbd0O0a fUJzQXtQxgfZjdmZnWOsy7Lbg6PFKT5mwD/hiHV+seknJMXpYObSo12Whc5Z+aQL8RwT xuaPpyN4hwAhcNfkRmJxSNDSbBiG4CBIffjoqZSGmElMpyoK8PyF25pxs42JWIVsQBqv RDmQN218mPtO/QhWx6yuWqcWyAXIOjhypER03BBe5NZ/1UOJ1Fn+4Bn6jRAWM7lCyQPZ z9rZnwozOobmRIyFo9aoLUULd6DsxTTcCO0LHTRZyKmfMuJFWY4w8jYjs0/ZzzWXkeVX 7UnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:mime-version:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=NMeEfKVcgbyI1G4rAH+CJjbX1SxoTX2qtk/NXIun/eE=; fh=rgQPcVbcOjZgL6aK5WmEt+m6+w+zLiqfGJUo4Bg6NIA=; b=RnTEpuf16kUE9LShdNhylHovIoeoKBveGGIK3pgoKl3Y3zMZoa7iSvjwVXbM7fxeak NJM6rXG9AT2Z+wDDInY5EYg5zvsiLGZQn/wev92deAzfdaihQpyfn3lvtR6dB1WKT6/G 7wOOnqI14UYaEGFNWxQH+d5QkxBL5KlNPLoOfsGk3agaq7e5kwf/PUBu856u7teaxR+t kM2x2jO6edA323/Pqa5Vs/vViZsCAkQcp3wY3dZfjdRcWcboLT7OaeMp4yIduLDluU0q DGoivl/BKG/S7ICSnZMn2GbcdhPia4g/Ob3yLXFmbj9kv+KEyOF8EmFC9W/t36bsPJuo la7w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=dGXFk005; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id q7-20020a05622a030700b00417cc2f9946si3529772qtw.153.2023.11.01.17.27.24 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Wed, 01 Nov 2023 17:27:24 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=dGXFk005; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qyLXU-0000f7-4J; Wed, 01 Nov 2023 20:26: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 1qyLXF-0000Z9-T2 for qemu-devel@nongnu.org; Wed, 01 Nov 2023 20:26:10 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qyLXE-0008Lv-D1 for qemu-devel@nongnu.org; Wed, 01 Nov 2023 20:26:09 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1698884767; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=NMeEfKVcgbyI1G4rAH+CJjbX1SxoTX2qtk/NXIun/eE=; b=dGXFk005fxutX2PBzPLvJOQIHZ9ckTLPvo/kzTO4CpjQJYplGlOp0SYmF9xZy9QjlejcF+ YvWLy7/0gNOpCMk541egYMExLXnhaVNexGvTNHAB5y08ZjcNmQk/DNdOw1ixB6kNLT8iZz NqNiOuXaggIyCaEwXeotTS65xiuu6pc= Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-672-_8_6y1BdMh6TW4UQx5hhBg-1; Wed, 01 Nov 2023 20:26:03 -0400 X-MC-Unique: _8_6y1BdMh6TW4UQx5hhBg-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 87A9F28B72EF; Thu, 2 Nov 2023 00:26:01 +0000 (UTC) Received: from gshan.redhat.com (unknown [10.64.136.70]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E68F7C1290F; Thu, 2 Nov 2023 00:25:44 +0000 (UTC) From: Gavin Shan To: qemu-arm@nongnu.org Cc: qemu-devel@nongnu.org, qemu-riscv@nongnu.org, qemu-ppc@nongnu.org, qemu-s390x@nongnu.org, philmd@linaro.org, clg@kaod.org, imammedo@redhat.com, imp@bsdimp.com, kevans@freebsd.org, richard.henderson@linaro.org, pbonzini@redhat.com, peter.maydell@linaro.org, b.galvani@gmail.com, strahinja.p.jankovic@gmail.com, sundeep.lkml@gmail.com, kfting@nuvoton.com, wuhaotsh@google.com, nieklinnenbank@gmail.com, rad@semihalf.com, quic_llindhol@quicinc.com, marcin.juszkiewicz@linaro.org, eduardo@habkost.net, marcel.apfelbaum@gmail.com, wangyanan55@huawei.com, laurent@vivier.eu, vijai@behindbytes.com, palmer@dabbelt.com, alistair.francis@wdc.com, bin.meng@windriver.com, liweiwei@iscas.ac.cn, dbarboza@ventanamicro.com, zhiwei_liu@linux.alibaba.com, mrolnik@gmail.com, edgar.iglesias@gmail.com, bcain@quicinc.com, gaosong@loongson.cn, aurelien@aurel32.net, jiaxun.yang@flygoat.com, aleksandar.rikalo@syrmia.com, chenhuacai@kernel.org, crwulff@gmail.com, marex@denx.de, shorne@gmail.com, npiggin@gmail.com, ysato@users.sourceforge.jp, david@redhat.com, thuth@redhat.com, iii@linux.ibm.com, kbastian@mail.uni-paderborn.de, jcmvbkbc@gmail.com, shan.gavin@gmail.com Subject: [PATCH v4 01/33] target/alpha: Tidy up alpha_cpu_class_by_name() Date: Thu, 2 Nov 2023 10:24:28 +1000 Message-ID: <20231102002500.1750692-2-gshan@redhat.com> In-Reply-To: <20231102002500.1750692-1-gshan@redhat.com> References: <20231102002500.1750692-1-gshan@redhat.com> MIME-Version: 1.0 MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.8 Received-SPF: pass client-ip=170.10.133.124; envelope-from=gshan@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.393, 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_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org From: Philippe Mathieu-Daudé For target/alpha, the default CPU model name is "ev67". The default CPU model is used when no matching CPU model is found. The conditions to fall back to the default CPU model can be combined so that the code looks a bit simplified. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Gavin Shan --- target/alpha/cpu.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/target/alpha/cpu.c b/target/alpha/cpu.c index 51b7d8d1bf..c7ae4d6a41 100644 --- a/target/alpha/cpu.c +++ b/target/alpha/cpu.c @@ -142,13 +142,10 @@ static ObjectClass *alpha_cpu_class_by_name(const char *cpu_model) typename = g_strdup_printf(ALPHA_CPU_TYPE_NAME("%s"), cpu_model); oc = object_class_by_name(typename); g_free(typename); - if (oc != NULL && object_class_is_abstract(oc)) { - oc = NULL; - } /* TODO: remove match everything nonsense */ - /* Default to ev67; no reason not to emulate insns by default. */ - if (!oc) { + if (!oc || object_class_is_abstract(oc)) { + /* Default to ev67, no reason not to emulate insns by default */ oc = object_class_by_name(ALPHA_CPU_TYPE_NAME("ev67")); } From patchwork Thu Nov 2 00:24:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Gavin Shan X-Patchwork-Id: 740336 Delivered-To: patch@linaro.org Received: by 2002:a5d:538f:0:b0:32d:baff:b0ca with SMTP id d15csp576136wrv; Wed, 1 Nov 2023 17:29:43 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG82cQe4T2bkYuiSHq3vtbLAO0KgbV0kRq36Hrmqf5LP1cKwHDEU86R6IUDdVCQcNHiQRic X-Received: by 2002:a05:620a:4492:b0:773:e2cc:5ff8 with SMTP id x18-20020a05620a449200b00773e2cc5ff8mr6611202qkp.30.1698884983150; Wed, 01 Nov 2023 17:29:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698884983; cv=none; d=google.com; s=arc-20160816; b=N/i9hpLL3yVHoaRtXW7sok5TiMB2z55YPDiTxrvyXYTn6zUuTEZfmE9gF2nydO+1a5 HR2mqzJuNduVp0XAjETVEy9Ja0WW8cEdRpYXyWO+tIIOi+33RH3Ho5Z/TAOET1Iosa9n N0SLORblvmGufgkyuOUlacBUCfkCyoXJ3Q719x+1q3gEgx2zMYLrRt6F5YfPVGotyHpt XkbxdZLAjq6yxDXXfcKptbtMakgpuFW+8am+Wha3R3ibnMMzm82QPkzmlLG+Sfaav1FT Bv6BLr0YIDmdnuShS0Rtst4BonEGlwlrqaeGgocgBQ7KINI7dK2l95Hz1oFLnu2WH90S fhRQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:mime-version:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=Fdwsdg9xMPpFL242HTsTKI5/3qWGOT7NqszjRSdnRvw=; fh=rgQPcVbcOjZgL6aK5WmEt+m6+w+zLiqfGJUo4Bg6NIA=; b=C+ZiNPt+VC5uJnUy/TxVuAnxrG4fRIPoTZtjexOM8szesmDmpyc2xogG8n37nQ4p1z DK2fPAItWFZ8I+3LqEtklx5Rez3nKJLlq/lRogutMxyBHaRGzx8HBH28XqZDVxSms+jP QryALN0uw4xLc1KeB95DK0/RSLuwtQ1V7AucmyLJlppnlkrZJguN+T2+6Y7zlW+6oZwB EhCwzzTDJSfPaItepjoh5crYAA7I2WZPvtzLXIZIXqmKSs2TMIMMHAqSSzbr0C2Fqs3Q EiwBjnTzPTe6Bz541hQQCZSzzBJTodh1kL0SAmh+15TiOyp4ljvZKs7SDnxtoX20I6kN 4M+Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=gP3PUwyg; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id o14-20020a05620a22ce00b00777754136c6si3283874qki.192.2023.11.01.17.29.42 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Wed, 01 Nov 2023 17:29:43 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=gP3PUwyg; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qyLXn-0000ph-3I; Wed, 01 Nov 2023 20:26:43 -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 1qyLXk-0000nG-FK for qemu-devel@nongnu.org; Wed, 01 Nov 2023 20:26:40 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qyLXV-0008Of-2a for qemu-devel@nongnu.org; Wed, 01 Nov 2023 20:26:40 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1698884784; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Fdwsdg9xMPpFL242HTsTKI5/3qWGOT7NqszjRSdnRvw=; b=gP3PUwygXD3aLQGwp3FWiKjf+9pe6RFxs8XURhMF29Q04XCF+OMwbBEJxeEFGfpYIqqMa2 vY0XMklbn5jkoj9vwtcpIxj9zsVF12xrUMp/Zlmi1YbbppeDhiRVyTGu2fW6gq5wFeDu4R c0/rY7KhJZIdk66eE7RAdU+JzfnS+u8= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-408-FH4h3Lo4PLaZG0qI5xtByw-1; Wed, 01 Nov 2023 20:26:18 -0400 X-MC-Unique: FH4h3Lo4PLaZG0qI5xtByw-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 58431185A780; Thu, 2 Nov 2023 00:26:16 +0000 (UTC) Received: from gshan.redhat.com (unknown [10.64.136.70]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1369AC1290F; Thu, 2 Nov 2023 00:26:01 +0000 (UTC) From: Gavin Shan To: qemu-arm@nongnu.org Cc: qemu-devel@nongnu.org, qemu-riscv@nongnu.org, qemu-ppc@nongnu.org, qemu-s390x@nongnu.org, philmd@linaro.org, clg@kaod.org, imammedo@redhat.com, imp@bsdimp.com, kevans@freebsd.org, richard.henderson@linaro.org, pbonzini@redhat.com, peter.maydell@linaro.org, b.galvani@gmail.com, strahinja.p.jankovic@gmail.com, sundeep.lkml@gmail.com, kfting@nuvoton.com, wuhaotsh@google.com, nieklinnenbank@gmail.com, rad@semihalf.com, quic_llindhol@quicinc.com, marcin.juszkiewicz@linaro.org, eduardo@habkost.net, marcel.apfelbaum@gmail.com, wangyanan55@huawei.com, laurent@vivier.eu, vijai@behindbytes.com, palmer@dabbelt.com, alistair.francis@wdc.com, bin.meng@windriver.com, liweiwei@iscas.ac.cn, dbarboza@ventanamicro.com, zhiwei_liu@linux.alibaba.com, mrolnik@gmail.com, edgar.iglesias@gmail.com, bcain@quicinc.com, gaosong@loongson.cn, aurelien@aurel32.net, jiaxun.yang@flygoat.com, aleksandar.rikalo@syrmia.com, chenhuacai@kernel.org, crwulff@gmail.com, marex@denx.de, shorne@gmail.com, npiggin@gmail.com, ysato@users.sourceforge.jp, david@redhat.com, thuth@redhat.com, iii@linux.ibm.com, kbastian@mail.uni-paderborn.de, jcmvbkbc@gmail.com, shan.gavin@gmail.com Subject: [PATCH v4 02/33] hw/cpu: Call object_class_is_abstract() once in cpu_class_by_name() Date: Thu, 2 Nov 2023 10:24:29 +1000 Message-ID: <20231102002500.1750692-3-gshan@redhat.com> In-Reply-To: <20231102002500.1750692-1-gshan@redhat.com> References: <20231102002500.1750692-1-gshan@redhat.com> MIME-Version: 1.0 MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.8 Received-SPF: pass client-ip=170.10.133.124; envelope-from=gshan@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.393, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org From: Philippe Mathieu-Daudé Let CPUClass::class_by_name() handlers to return abstract classes, and filter them once in the public cpu_class_by_name() method. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Gavin Shan --- hw/core/cpu-common.c | 8 +++++++- include/hw/core/cpu.h | 7 ++++--- target/alpha/cpu.c | 2 +- target/arm/cpu.c | 3 +-- target/avr/cpu.c | 3 +-- target/cris/cpu.c | 3 +-- target/hexagon/cpu.c | 3 +-- target/loongarch/cpu.c | 3 +-- target/m68k/cpu.c | 3 +-- target/openrisc/cpu.c | 3 +-- target/riscv/cpu.c | 3 +-- target/rx/cpu.c | 5 +---- target/sh4/cpu.c | 3 --- target/tricore/cpu.c | 3 +-- target/xtensa/cpu.c | 3 +-- 15 files changed, 23 insertions(+), 32 deletions(-) diff --git a/hw/core/cpu-common.c b/hw/core/cpu-common.c index bab8942c30..bca0323e9f 100644 --- a/hw/core/cpu-common.c +++ b/hw/core/cpu-common.c @@ -150,9 +150,15 @@ static bool cpu_common_has_work(CPUState *cs) ObjectClass *cpu_class_by_name(const char *typename, const char *cpu_model) { CPUClass *cc = CPU_CLASS(object_class_by_name(typename)); + ObjectClass *oc; assert(cpu_model && cc->class_by_name); - return cc->class_by_name(cpu_model); + oc = cc->class_by_name(cpu_model); + if (oc && !object_class_is_abstract(oc)) { + return oc; + } + + return NULL; } static void cpu_common_parse_features(const char *typename, char *features, diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h index 18593db5b2..ee85aafdf5 100644 --- a/include/hw/core/cpu.h +++ b/include/hw/core/cpu.h @@ -102,7 +102,7 @@ struct SysemuCPUOps; /** * CPUClass: * @class_by_name: Callback to map -cpu command line model name to an - * instantiatable CPU type. + * instantiatable CPU type. * @parse_features: Callback to parse command line arguments. * @reset_dump_flags: #CPUDumpFlags to use for reset logging. * @has_work: Callback for checking if there is work to do. @@ -772,9 +772,10 @@ void cpu_reset(CPUState *cpu); * @typename: The CPU base type. * @cpu_model: The model string without any parameters. * - * Looks up a CPU #ObjectClass matching name @cpu_model. + * Looks up a concrete CPU #ObjectClass matching name @cpu_model. * - * Returns: A #CPUClass or %NULL if not matching class is found. + * Returns: A concrete #CPUClass or %NULL if no matching class is found + * or if the matching class is abstract. */ ObjectClass *cpu_class_by_name(const char *typename, const char *cpu_model); diff --git a/target/alpha/cpu.c b/target/alpha/cpu.c index c7ae4d6a41..9436859c7b 100644 --- a/target/alpha/cpu.c +++ b/target/alpha/cpu.c @@ -126,7 +126,7 @@ static ObjectClass *alpha_cpu_class_by_name(const char *cpu_model) int i; oc = object_class_by_name(cpu_model); - if (oc != NULL && object_class_dynamic_cast(oc, TYPE_ALPHA_CPU) != NULL && + if (object_class_dynamic_cast(oc, TYPE_ALPHA_CPU) && !object_class_is_abstract(oc)) { return oc; } diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 954328d72a..8c622d6b59 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -2399,8 +2399,7 @@ static ObjectClass *arm_cpu_class_by_name(const char *cpu_model) oc = object_class_by_name(typename); g_strfreev(cpuname); g_free(typename); - if (!oc || !object_class_dynamic_cast(oc, TYPE_ARM_CPU) || - object_class_is_abstract(oc)) { + if (!object_class_dynamic_cast(oc, TYPE_ARM_CPU)) { return NULL; } return oc; diff --git a/target/avr/cpu.c b/target/avr/cpu.c index 14d8b9d1f0..113d522f75 100644 --- a/target/avr/cpu.c +++ b/target/avr/cpu.c @@ -157,8 +157,7 @@ static ObjectClass *avr_cpu_class_by_name(const char *cpu_model) ObjectClass *oc; oc = object_class_by_name(cpu_model); - if (object_class_dynamic_cast(oc, TYPE_AVR_CPU) == NULL || - object_class_is_abstract(oc)) { + if (!object_class_dynamic_cast(oc, TYPE_AVR_CPU)) { oc = NULL; } return oc; diff --git a/target/cris/cpu.c b/target/cris/cpu.c index be4a44c218..1cb431cd46 100644 --- a/target/cris/cpu.c +++ b/target/cris/cpu.c @@ -95,8 +95,7 @@ static ObjectClass *cris_cpu_class_by_name(const char *cpu_model) typename = g_strdup_printf(CRIS_CPU_TYPE_NAME("%s"), cpu_model); oc = object_class_by_name(typename); g_free(typename); - if (oc != NULL && (!object_class_dynamic_cast(oc, TYPE_CRIS_CPU) || - object_class_is_abstract(oc))) { + if (!object_class_dynamic_cast(oc, TYPE_CRIS_CPU)) { oc = NULL; } return oc; diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index 1adc11b713..bd5adb7acd 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -63,8 +63,7 @@ static ObjectClass *hexagon_cpu_class_by_name(const char *cpu_model) oc = object_class_by_name(typename); g_strfreev(cpuname); g_free(typename); - if (!oc || !object_class_dynamic_cast(oc, TYPE_HEXAGON_CPU) || - object_class_is_abstract(oc)) { + if (!object_class_dynamic_cast(oc, TYPE_HEXAGON_CPU)) { return NULL; } return oc; diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c index ef1bf89dac..06d1b9bb95 100644 --- a/target/loongarch/cpu.c +++ b/target/loongarch/cpu.c @@ -648,8 +648,7 @@ static ObjectClass *loongarch_cpu_class_by_name(const char *cpu_model) } } - if (object_class_dynamic_cast(oc, TYPE_LOONGARCH_CPU) - && !object_class_is_abstract(oc)) { + if (object_class_dynamic_cast(oc, TYPE_LOONGARCH_CPU)) { return oc; } return NULL; diff --git a/target/m68k/cpu.c b/target/m68k/cpu.c index 538d9473c2..fe381cc5d3 100644 --- a/target/m68k/cpu.c +++ b/target/m68k/cpu.c @@ -111,8 +111,7 @@ static ObjectClass *m68k_cpu_class_by_name(const char *cpu_model) typename = g_strdup_printf(M68K_CPU_TYPE_NAME("%s"), cpu_model); oc = object_class_by_name(typename); g_free(typename); - if (oc != NULL && (object_class_dynamic_cast(oc, TYPE_M68K_CPU) == NULL || - object_class_is_abstract(oc))) { + if (!object_class_dynamic_cast(oc, TYPE_M68K_CPU)) { return NULL; } return oc; diff --git a/target/openrisc/cpu.c b/target/openrisc/cpu.c index f5a3d5273b..cc94f37e77 100644 --- a/target/openrisc/cpu.c +++ b/target/openrisc/cpu.c @@ -164,8 +164,7 @@ static ObjectClass *openrisc_cpu_class_by_name(const char *cpu_model) typename = g_strdup_printf(OPENRISC_CPU_TYPE_NAME("%s"), cpu_model); oc = object_class_by_name(typename); g_free(typename); - if (oc != NULL && (!object_class_dynamic_cast(oc, TYPE_OPENRISC_CPU) || - object_class_is_abstract(oc))) { + if (!object_class_dynamic_cast(oc, TYPE_OPENRISC_CPU)) { return NULL; } return oc; diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index ac4a6c7eec..018bad6f82 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -636,8 +636,7 @@ static ObjectClass *riscv_cpu_class_by_name(const char *cpu_model) oc = object_class_by_name(typename); g_strfreev(cpuname); g_free(typename); - if (!oc || !object_class_dynamic_cast(oc, TYPE_RISCV_CPU) || - object_class_is_abstract(oc)) { + if (!object_class_dynamic_cast(oc, TYPE_RISCV_CPU)) { return NULL; } return oc; diff --git a/target/rx/cpu.c b/target/rx/cpu.c index 4d0d3a0c8c..0063837e93 100644 --- a/target/rx/cpu.c +++ b/target/rx/cpu.c @@ -111,16 +111,13 @@ static ObjectClass *rx_cpu_class_by_name(const char *cpu_model) char *typename; oc = object_class_by_name(cpu_model); - if (oc != NULL && object_class_dynamic_cast(oc, TYPE_RX_CPU) != NULL && + if (object_class_dynamic_cast(oc, TYPE_RX_CPU) && !object_class_is_abstract(oc)) { return oc; } typename = g_strdup_printf(RX_CPU_TYPE_NAME("%s"), cpu_model); oc = object_class_by_name(typename); g_free(typename); - if (oc != NULL && object_class_is_abstract(oc)) { - oc = NULL; - } return oc; } diff --git a/target/sh4/cpu.c b/target/sh4/cpu.c index 788e41fea6..a8ec98b134 100644 --- a/target/sh4/cpu.c +++ b/target/sh4/cpu.c @@ -152,9 +152,6 @@ static ObjectClass *superh_cpu_class_by_name(const char *cpu_model) typename = g_strdup_printf(SUPERH_CPU_TYPE_NAME("%s"), s); oc = object_class_by_name(typename); - if (oc != NULL && object_class_is_abstract(oc)) { - oc = NULL; - } out: g_free(s); diff --git a/target/tricore/cpu.c b/target/tricore/cpu.c index 5ca666ee12..47e1c272cf 100644 --- a/target/tricore/cpu.c +++ b/target/tricore/cpu.c @@ -132,8 +132,7 @@ static ObjectClass *tricore_cpu_class_by_name(const char *cpu_model) typename = g_strdup_printf(TRICORE_CPU_TYPE_NAME("%s"), cpu_model); oc = object_class_by_name(typename); g_free(typename); - if (!oc || !object_class_dynamic_cast(oc, TYPE_TRICORE_CPU) || - object_class_is_abstract(oc)) { + if (!object_class_dynamic_cast(oc, TYPE_TRICORE_CPU)) { return NULL; } return oc; diff --git a/target/xtensa/cpu.c b/target/xtensa/cpu.c index ea1dae7390..5d1c090467 100644 --- a/target/xtensa/cpu.c +++ b/target/xtensa/cpu.c @@ -141,8 +141,7 @@ static ObjectClass *xtensa_cpu_class_by_name(const char *cpu_model) typename = g_strdup_printf(XTENSA_CPU_TYPE_NAME("%s"), cpu_model); oc = object_class_by_name(typename); g_free(typename); - if (oc == NULL || !object_class_dynamic_cast(oc, TYPE_XTENSA_CPU) || - object_class_is_abstract(oc)) { + if (!object_class_dynamic_cast(oc, TYPE_XTENSA_CPU)) { return NULL; } return oc; From patchwork Thu Nov 2 00:24:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Gavin Shan X-Patchwork-Id: 740335 Delivered-To: patch@linaro.org Received: by 2002:a5d:538f:0:b0:32d:baff:b0ca with SMTP id d15csp575791wrv; Wed, 1 Nov 2023 17:28:28 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGlFSS/z0QqWEODpl4VXtudApmdHWbBKYntt0lJOq8aeMd4Y0nhVGqnyidYOcSEGTc8E4E6 X-Received: by 2002:ae9:e00d:0:b0:76f:f11:7d1 with SMTP id m13-20020ae9e00d000000b0076f0f1107d1mr16616966qkk.77.1698884907823; Wed, 01 Nov 2023 17:28:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698884907; cv=none; d=google.com; s=arc-20160816; b=vCzDgR1XMFA8PnPv2LG9QoXibR06jvY0Kkyx1I75cqKDcBvOP6kiLqOzE8U9Sjg4hd 4brw9oc8SsV3Zw0GE6Yvdsbg4yvCYZFpXGHikh/15k2ZovaAPrjMCMqFQcBOtbTPbmeK /psN3kEy07a1KQVGESWfdqwCHypr2NwHm4qphi5akRnCaqwpAP8jwklwjBpiirSujHNU fCkeUJitQBmdkrtf8ZSHrZSp570UECV0JEPMJOkUt6cQR8B/d9fnC0+fJk3ImVg5wp6n Hz+h4rTPigAG7CXkGrVrhzWtuO53bAXXT7CTGaDR+62CZ32XtTHyWkh0jIHgslahGJMC LHEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:mime-version:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=8uJyglK7vgL432BP6OO5ELd0iDtmc4xQmrd3D40v+yI=; fh=rgQPcVbcOjZgL6aK5WmEt+m6+w+zLiqfGJUo4Bg6NIA=; b=Kip80TI32njzImxkTprNLMF6uWFFZzmFRhAekBP2sz2oiHfk+XcSOnWHpmCLC0ZlCX PLY0aZezKUUfwzufzq1uHe6pxfxmAzMIOmwicV0MGzAzV0yzVLrrcJ+wrhc5RyMWn9Qk D8uOHj3J1kF3RX3V8fcy2XEiwQpOpA5Cw+ISSOKmRuTxPpAyltwIb4Ciusyh10T5eB+o 9HvvEMQgfkma7SazzhdcAGSWX1TFnqR2Ael1JiQwIbiQxKgD7uFy7QU61PXITj5lGGyu xE7vGWpqgd1BlJ3jCDYFPvsyxKxLBhGxm/R+0ITvjZNW1nSCcwWUNNogie4MQYDEefAm juQQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=fP998wxK; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id q14-20020ae9e40e000000b0076f19d66ddfsi3356156qkc.138.2023.11.01.17.28.27 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Wed, 01 Nov 2023 17:28:27 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=fP998wxK; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qyLXp-0000qd-Rr; Wed, 01 Nov 2023 20:26:46 -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 1qyLXm-0000pj-Tb for qemu-devel@nongnu.org; Wed, 01 Nov 2023 20:26:42 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qyLXk-0008Pv-GD for qemu-devel@nongnu.org; Wed, 01 Nov 2023 20:26:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1698884798; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=8uJyglK7vgL432BP6OO5ELd0iDtmc4xQmrd3D40v+yI=; b=fP998wxKgCo1OEDiQuTy+Ye7TTzhbXSD+aEgDf9RnaKCPwqGggL2cp4AswQmxA2JX5Plvm 0nBeolIwviW8pbp0xZ0uY6mjo/katCIOOYqEYU9OKP89xb6hxzgHwD+wb9U/mQN9q085Q+ XQSj+1pUvMkNbyxe6aKOWKzZxCMPd98= Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-685-xbcJORs9Pj6TJyD6vJLMlA-1; Wed, 01 Nov 2023 20:26:33 -0400 X-MC-Unique: xbcJORs9Pj6TJyD6vJLMlA-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 7B2A73821563; Thu, 2 Nov 2023 00:26:31 +0000 (UTC) Received: from gshan.redhat.com (unknown [10.64.136.70]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D45D7C1290F; Thu, 2 Nov 2023 00:26:16 +0000 (UTC) From: Gavin Shan To: qemu-arm@nongnu.org Cc: qemu-devel@nongnu.org, qemu-riscv@nongnu.org, qemu-ppc@nongnu.org, qemu-s390x@nongnu.org, philmd@linaro.org, clg@kaod.org, imammedo@redhat.com, imp@bsdimp.com, kevans@freebsd.org, richard.henderson@linaro.org, pbonzini@redhat.com, peter.maydell@linaro.org, b.galvani@gmail.com, strahinja.p.jankovic@gmail.com, sundeep.lkml@gmail.com, kfting@nuvoton.com, wuhaotsh@google.com, nieklinnenbank@gmail.com, rad@semihalf.com, quic_llindhol@quicinc.com, marcin.juszkiewicz@linaro.org, eduardo@habkost.net, marcel.apfelbaum@gmail.com, wangyanan55@huawei.com, laurent@vivier.eu, vijai@behindbytes.com, palmer@dabbelt.com, alistair.francis@wdc.com, bin.meng@windriver.com, liweiwei@iscas.ac.cn, dbarboza@ventanamicro.com, zhiwei_liu@linux.alibaba.com, mrolnik@gmail.com, edgar.iglesias@gmail.com, bcain@quicinc.com, gaosong@loongson.cn, aurelien@aurel32.net, jiaxun.yang@flygoat.com, aleksandar.rikalo@syrmia.com, chenhuacai@kernel.org, crwulff@gmail.com, marex@denx.de, shorne@gmail.com, npiggin@gmail.com, ysato@users.sourceforge.jp, david@redhat.com, thuth@redhat.com, iii@linux.ibm.com, kbastian@mail.uni-paderborn.de, jcmvbkbc@gmail.com, shan.gavin@gmail.com Subject: [PATCH v4 03/33] cpu: Call object_class_dynamic_cast() once in cpu_class_by_name() Date: Thu, 2 Nov 2023 10:24:30 +1000 Message-ID: <20231102002500.1750692-4-gshan@redhat.com> In-Reply-To: <20231102002500.1750692-1-gshan@redhat.com> References: <20231102002500.1750692-1-gshan@redhat.com> MIME-Version: 1.0 MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.8 Received-SPF: pass client-ip=170.10.129.124; envelope-from=gshan@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.393, 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_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org From: Philippe Mathieu-Daudé For all targets, the CPU class returned from CPUClass::class_by_name() and object_class_dynamic_cast(oc, CPU_RESOLVING_TYPE) need to be compatible. Lets apply the check in cpu_class_by_name() for once, instead of having the check in CPUClass::class_by_name() for individual target. In order to make CPU_RESOLVING_TYPE visible to cpu_class_by_name(), the helper has to be moved to cpu-target.c Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Gavin Shan Reviewed-by: Igor Mammedov --- cpu-target.c | 15 +++++++++++++++ hw/core/cpu-common.c | 14 -------------- target/arm/cpu.c | 4 +--- target/avr/cpu.c | 8 +------- target/cris/cpu.c | 4 +--- target/hexagon/cpu.c | 4 +--- target/loongarch/cpu.c | 8 +------- target/m68k/cpu.c | 4 +--- target/openrisc/cpu.c | 4 +--- target/riscv/cpu.c | 4 +--- target/tricore/cpu.c | 4 +--- target/xtensa/cpu.c | 4 +--- 12 files changed, 25 insertions(+), 52 deletions(-) diff --git a/cpu-target.c b/cpu-target.c index 79363ae370..876b498233 100644 --- a/cpu-target.c +++ b/cpu-target.c @@ -250,6 +250,21 @@ void cpu_exec_initfn(CPUState *cpu) #endif } +ObjectClass *cpu_class_by_name(const char *typename, const char *cpu_model) +{ + CPUClass *cc = CPU_CLASS(object_class_by_name(typename)); + ObjectClass *oc; + + assert(cpu_model && cc->class_by_name); + oc = cc->class_by_name(cpu_model); + if (oc && !object_class_is_abstract(oc) && + object_class_dynamic_cast(oc, CPU_RESOLVING_TYPE)) { + return oc; + } + + return NULL; +} + const char *parse_cpu_option(const char *cpu_option) { ObjectClass *oc; diff --git a/hw/core/cpu-common.c b/hw/core/cpu-common.c index bca0323e9f..1024de53bb 100644 --- a/hw/core/cpu-common.c +++ b/hw/core/cpu-common.c @@ -147,20 +147,6 @@ static bool cpu_common_has_work(CPUState *cs) return false; } -ObjectClass *cpu_class_by_name(const char *typename, const char *cpu_model) -{ - CPUClass *cc = CPU_CLASS(object_class_by_name(typename)); - ObjectClass *oc; - - assert(cpu_model && cc->class_by_name); - oc = cc->class_by_name(cpu_model); - if (oc && !object_class_is_abstract(oc)) { - return oc; - } - - return NULL; -} - static void cpu_common_parse_features(const char *typename, char *features, Error **errp) { diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 8c622d6b59..4942239b34 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -2399,9 +2399,7 @@ static ObjectClass *arm_cpu_class_by_name(const char *cpu_model) oc = object_class_by_name(typename); g_strfreev(cpuname); g_free(typename); - if (!object_class_dynamic_cast(oc, TYPE_ARM_CPU)) { - return NULL; - } + return oc; } diff --git a/target/avr/cpu.c b/target/avr/cpu.c index 113d522f75..a36cc48aae 100644 --- a/target/avr/cpu.c +++ b/target/avr/cpu.c @@ -154,13 +154,7 @@ static void avr_cpu_initfn(Object *obj) static ObjectClass *avr_cpu_class_by_name(const char *cpu_model) { - ObjectClass *oc; - - oc = object_class_by_name(cpu_model); - if (!object_class_dynamic_cast(oc, TYPE_AVR_CPU)) { - oc = NULL; - } - return oc; + return object_class_by_name(cpu_model); } static void avr_cpu_dump_state(CPUState *cs, FILE *f, int flags) diff --git a/target/cris/cpu.c b/target/cris/cpu.c index 1cb431cd46..a5083a0077 100644 --- a/target/cris/cpu.c +++ b/target/cris/cpu.c @@ -95,9 +95,7 @@ static ObjectClass *cris_cpu_class_by_name(const char *cpu_model) typename = g_strdup_printf(CRIS_CPU_TYPE_NAME("%s"), cpu_model); oc = object_class_by_name(typename); g_free(typename); - if (!object_class_dynamic_cast(oc, TYPE_CRIS_CPU)) { - oc = NULL; - } + return oc; } diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index bd5adb7acd..aa48f5fe89 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -63,9 +63,7 @@ static ObjectClass *hexagon_cpu_class_by_name(const char *cpu_model) oc = object_class_by_name(typename); g_strfreev(cpuname); g_free(typename); - if (!object_class_dynamic_cast(oc, TYPE_HEXAGON_CPU)) { - return NULL; - } + return oc; } diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c index 06d1b9bb95..c6712e13f9 100644 --- a/target/loongarch/cpu.c +++ b/target/loongarch/cpu.c @@ -643,15 +643,9 @@ static ObjectClass *loongarch_cpu_class_by_name(const char *cpu_model) g_autofree char *typename = g_strdup_printf(LOONGARCH_CPU_TYPE_NAME("%s"), cpu_model); oc = object_class_by_name(typename); - if (!oc) { - return NULL; - } } - if (object_class_dynamic_cast(oc, TYPE_LOONGARCH_CPU)) { - return oc; - } - return NULL; + return oc; } void loongarch_cpu_dump_state(CPUState *cs, FILE *f, int flags) diff --git a/target/m68k/cpu.c b/target/m68k/cpu.c index fe381cc5d3..6cd5b56d6f 100644 --- a/target/m68k/cpu.c +++ b/target/m68k/cpu.c @@ -111,9 +111,7 @@ static ObjectClass *m68k_cpu_class_by_name(const char *cpu_model) typename = g_strdup_printf(M68K_CPU_TYPE_NAME("%s"), cpu_model); oc = object_class_by_name(typename); g_free(typename); - if (!object_class_dynamic_cast(oc, TYPE_M68K_CPU)) { - return NULL; - } + return oc; } diff --git a/target/openrisc/cpu.c b/target/openrisc/cpu.c index cc94f37e77..f7d53c592a 100644 --- a/target/openrisc/cpu.c +++ b/target/openrisc/cpu.c @@ -164,9 +164,7 @@ static ObjectClass *openrisc_cpu_class_by_name(const char *cpu_model) typename = g_strdup_printf(OPENRISC_CPU_TYPE_NAME("%s"), cpu_model); oc = object_class_by_name(typename); g_free(typename); - if (!object_class_dynamic_cast(oc, TYPE_OPENRISC_CPU)) { - return NULL; - } + return oc; } diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 018bad6f82..8b4024338c 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -636,9 +636,7 @@ static ObjectClass *riscv_cpu_class_by_name(const char *cpu_model) oc = object_class_by_name(typename); g_strfreev(cpuname); g_free(typename); - if (!object_class_dynamic_cast(oc, TYPE_RISCV_CPU)) { - return NULL; - } + return oc; } diff --git a/target/tricore/cpu.c b/target/tricore/cpu.c index 47e1c272cf..8acacdf0c0 100644 --- a/target/tricore/cpu.c +++ b/target/tricore/cpu.c @@ -132,9 +132,7 @@ static ObjectClass *tricore_cpu_class_by_name(const char *cpu_model) typename = g_strdup_printf(TRICORE_CPU_TYPE_NAME("%s"), cpu_model); oc = object_class_by_name(typename); g_free(typename); - if (!object_class_dynamic_cast(oc, TYPE_TRICORE_CPU)) { - return NULL; - } + return oc; } diff --git a/target/xtensa/cpu.c b/target/xtensa/cpu.c index 5d1c090467..93e782a6e0 100644 --- a/target/xtensa/cpu.c +++ b/target/xtensa/cpu.c @@ -141,9 +141,7 @@ static ObjectClass *xtensa_cpu_class_by_name(const char *cpu_model) typename = g_strdup_printf(XTENSA_CPU_TYPE_NAME("%s"), cpu_model); oc = object_class_by_name(typename); g_free(typename); - if (!object_class_dynamic_cast(oc, TYPE_XTENSA_CPU)) { - return NULL; - } + return oc; }