From nobody Sat Sep 6 17:00:59 2025 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=1756973855; cv=none; d=zohomail.com; s=zohoarc; b=XG7iZaLGmdHLSVCx7vD3AD6EGrhVT+sMOnh9gk32e89qqUplRK/cDdtbkF3Rbgps2yPC7XkyM0MVjC93X7LKO29Ijez13xi7EN1kVje5Kq8oSlZRZLTyMjC/eOOyXo3/sRmYXhMBZ9PiXIVaW4fh1PoAcq4bdSCTbkx0IY5DCII= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756973855; 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=TRlsHGqvmjF2Vf3U8TOAt/9n2Jks0amzBlUrbfofXWc=; b=FXCPl9mz0zqAWk36inPa289VGAcCdbRSMHClT1XUSx8gTL+pROfScmLGmKzuoR6q/xN31GHpq8RDUp0VBlqorPvLTbBr+wOfyQ/yOnAVQePAMudJC4XLF0JbyqmNZNqg8oVDm1fd14QwTsOul/Byk8cBpjH3TDdvGoH5DE8G56M= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756973855274562.5222056422397; Thu, 4 Sep 2025 01:17:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uu59Z-0004zm-QZ; Thu, 04 Sep 2025 04:17:10 -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 1uu55C-0006f2-74 for qemu-devel@nongnu.org; Thu, 04 Sep 2025 04:12:44 -0400 Received: from mail-ej1-x633.google.com ([2a00:1450:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uu54b-0004Dd-QM for qemu-devel@nongnu.org; Thu, 04 Sep 2025 04:12:36 -0400 Received: by mail-ej1-x633.google.com with SMTP id a640c23a62f3a-b0449b1b56eso111706866b.1 for ; Thu, 04 Sep 2025 01:12:01 -0700 (PDT) Received: from draig.lan ([185.126.160.19]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b0432937d7esm869790666b.17.2025.09.04.01.11.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Sep 2025 01:11:55 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id 9C0DE60363; Thu, 04 Sep 2025 09:11:35 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756973519; x=1757578319; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=TRlsHGqvmjF2Vf3U8TOAt/9n2Jks0amzBlUrbfofXWc=; b=QI+cZspRjrpy3CvOuDYgZuKvrx1UpTP+Ydr27eM91ovS2np+ZU/ijhXONbGIEMTeSp lBlpzoFqOuNuKyE3tiW4MM3V5S1N9MiIezdHF72Z2zb91Crgx5exCu18+FAATovq3SH5 J5MCTT+HEf2cMv1Z94WW3esJDS2ySdL0ZdIo6r/JCHljCHxiNLqAWBBcOGGtadpVLahT DPzJQQhjLZ2hNY/AIl3mIW6/Dvc4shzM/26/Ey1WTxjDxsqMheQjL2ctz3Qe4RRA4RAS hpWLhMsFQUhZms35B9DeBL3pnFIqRDFw13TadUYOdZpv0VfD7wCjRcHs069t8eYapzEw 614Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756973519; x=1757578319; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TRlsHGqvmjF2Vf3U8TOAt/9n2Jks0amzBlUrbfofXWc=; b=nk3zqZCHPGfo5zqzrgk5wptKAjedb4USok/+PaSvssP+kKOeuRK2Zuhb1BciF+SxXo T1GJHc6myCrHsbTC11XDbbROroEdcIGibB76JHpSLYov99SNXs6Ra7vubNi+2elgqwch NwD9u9K809bW/89HR3wYfaeBYHZ/tIOk3C9GxPS9oll1geq7Xf1M3H5hdpc3Uey4KPyG fjBI5290HWvSj3mdNyQU2h85HvvLhDgZ6JzR/MTtcCky5ZJSUqGPgLPX3urrUOfbjpQO 92fFl+4Xi8siZ6mjhtJEPMu4xCMo4Ozd1OHf50s1B0lhlEv4B1dkRYNEM46FV+yZGrAs g2mg== X-Gm-Message-State: AOJu0YxWFYHyN5aFgwsCsva0pJGp8sGko3ZUGC7FFKceU/4LSiKRC3p5 FkBl6maSuW1Bkd2nK2Hum/ehd1eWyg7FsHafRl9wYcEXUWxNeOVAC5WS5bcNSBzPkiVqR9acII4 +udWnsMVYXA== X-Gm-Gg: ASbGnctDyCRoXxGOMmLpdXGftJ+JMPM4gvX5hkBMZcL7mj8eqr2nKQ0/u9C+R8/fP0c nj620Ud3waQRgUZRbUGen+rRq0InpIWwFgQDLD+YpU2Z/+9IyvN9Lpr/1wwN6vKvn2sIY6Y1Idn nYGA+/N7ICoIPsYBnPoC3OwWo+bizGoj3niShRLXjnUo2wtfxaQkKh3zReUqKM0N7cvVoaW4lHc jI6VGToi4RVY7W2dhNkeSx2oPHCtBdcx4eT06YbCqLkvj0lmIU5LCV7iXqBUJ+mE3Xb5c9eU0ik gIvH+H2RsfeLkfL8/1BXvMGQC4vZ8bNHcKv+OVmInQjBIylfWLdL1239ySb7457GnqVpdyiVx/w JP7Bg6m03Tc4HzVng4DRwGZo= X-Google-Smtp-Source: AGHT+IHiB61XSQJ8aB9kXr4pJ7kTktTaOCm5+fM0Vksx2NmfVFmOxv3vcmFjV8pk0rEQY7r1+KjTyw== X-Received: by 2002:a17:907:3cca:b0:b04:354e:47a5 with SMTP id a640c23a62f3a-b04354e4b78mr1354661066b.17.1756973519415; Thu, 04 Sep 2025 01:11:59 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: Reinoud Zandijk , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Huacai Chen , Zhao Liu , Paolo Bonzini , Alistair Francis , qemu-arm@nongnu.org, Fam Zheng , Helge Deller , Matthew Rosato , Fabiano Rosas , qemu-rust@nongnu.org, Bibo Mao , qemu-riscv@nongnu.org, Thanos Makatos , Liu Zhiwei , Riku Voipio , Cameron Esfahani , Alexander Graf , Laurent Vivier , Harsh Prateek Bora , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , qemu-ppc@nongnu.org, Stafford Horne , Sunil Muthuswamy , Jagannathan Raman , Igor Mammedov , Brian Cain , Phil Dennis-Jordan , devel@lists.libvirt.org, Mads Ynddal , Elena Ufimtseva , Peter Xu , Jason Herne , Michael Rolnik , Weiwei Li , Laurent Vivier , Ilya Leoshkevich , qemu-block@nongnu.org, Peter Maydell , Kostiantyn Kostiuk , Kyle Evans , David Hildenbrand , "Edgar E. Iglesias" , Warner Losh , Daniel Henrique Barboza , John Snow , Yoshinori Sato , Aleksandar Rikalo , Alistair Francis , Marcelo Tosatti , Yonggang Luo , Radoslaw Biernacki , Artyom Tarasenko , Yanan Wang , Eduardo Habkost , Aurelien Jarno , Richard Henderson , qemu-s390x@nongnu.org, Alex Williamson , "Michael S. Tsirkin" , Ani Sinha , Roman Bolshakov , Manos Pitsidianakis , Chinmay Rath , Thomas Huth , Cleber Rosa , kvm@vger.kernel.org, Song Gao , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Halil Pasic , Eric Farman , Palmer Dabbelt , Leif Lindholm , Christian Borntraeger , Michael Roth , Mauro Carvalho Chehab , Jiaxun Yang , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Mark Cave-Ayland , Marcel Apfelbaum , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Nicholas Piggin , John Levon Subject: [PATCH v2 057/281] linux-user: Move get_elf_hwcap to loongarch64/elfload.c Date: Thu, 4 Sep 2025 09:07:31 +0100 Message-ID: <20250904081128.1942269-58-alex.bennee@linaro.org> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250904081128.1942269-1-alex.bennee@linaro.org> References: <20250904081128.1942269-1-alex.bennee@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=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::633; envelope-from=alex.bennee@linaro.org; helo=mail-ej1-x633.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: 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: 1756973858428124100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Change the return type to abi_ulong, and pass in the cpu. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/loader.h | 3 +- linux-user/loongarch64/target_elf.h | 2 ++ linux-user/elfload.c | 49 +---------------------------- linux-user/loongarch64/elfload.c | 47 +++++++++++++++++++++++++++ 4 files changed, 52 insertions(+), 49 deletions(-) diff --git a/linux-user/loader.h b/linux-user/loader.h index 818c5e6d7d7..92b6d41145e 100644 --- a/linux-user/loader.h +++ b/linux-user/loader.h @@ -102,7 +102,8 @@ extern unsigned long guest_stack_size; const char *get_elf_cpu_model(uint32_t eflags); =20 #if defined(TARGET_I386) || defined(TARGET_X86_64) || defined(TARGET_ARM) \ - || defined(TARGET_SPARC) || defined(TARGET_PPC) + || defined(TARGET_SPARC) || defined(TARGET_PPC) \ + || defined(TARGET_LOONGARCH64) abi_ulong get_elf_hwcap(CPUState *cs); abi_ulong get_elf_hwcap2(CPUState *cs); #endif diff --git a/linux-user/loongarch64/target_elf.h b/linux-user/loongarch64/t= arget_elf.h index 39a08d35d9b..037740d36f2 100644 --- a/linux-user/loongarch64/target_elf.h +++ b/linux-user/loongarch64/target_elf.h @@ -6,4 +6,6 @@ #ifndef LOONGARCH_TARGET_ELF_H #define LOONGARCH_TARGET_ELF_H =20 +#define HAVE_ELF_HWCAP 1 + #endif diff --git a/linux-user/elfload.c b/linux-user/elfload.c index 843b1f7b6cc..574b37a22c1 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -725,54 +725,7 @@ static void elf_core_copy_regs(target_elf_gregset_t *r= egs, #define USE_ELF_CORE_DUMP #define ELF_EXEC_PAGESIZE 4096 =20 -#define ELF_HWCAP get_elf_hwcap() - -/* See arch/loongarch/include/uapi/asm/hwcap.h */ -enum { - HWCAP_LOONGARCH_CPUCFG =3D (1 << 0), - HWCAP_LOONGARCH_LAM =3D (1 << 1), - HWCAP_LOONGARCH_UAL =3D (1 << 2), - HWCAP_LOONGARCH_FPU =3D (1 << 3), - HWCAP_LOONGARCH_LSX =3D (1 << 4), - HWCAP_LOONGARCH_LASX =3D (1 << 5), - HWCAP_LOONGARCH_CRC32 =3D (1 << 6), - HWCAP_LOONGARCH_COMPLEX =3D (1 << 7), - HWCAP_LOONGARCH_CRYPTO =3D (1 << 8), - HWCAP_LOONGARCH_LVZ =3D (1 << 9), - HWCAP_LOONGARCH_LBT_X86 =3D (1 << 10), - HWCAP_LOONGARCH_LBT_ARM =3D (1 << 11), - HWCAP_LOONGARCH_LBT_MIPS =3D (1 << 12), -}; - -static uint32_t get_elf_hwcap(void) -{ - LoongArchCPU *cpu =3D LOONGARCH_CPU(thread_cpu); - uint32_t hwcaps =3D 0; - - hwcaps |=3D HWCAP_LOONGARCH_CRC32; - - if (FIELD_EX32(cpu->env.cpucfg[1], CPUCFG1, UAL)) { - hwcaps |=3D HWCAP_LOONGARCH_UAL; - } - - if (FIELD_EX32(cpu->env.cpucfg[2], CPUCFG2, FP)) { - hwcaps |=3D HWCAP_LOONGARCH_FPU; - } - - if (FIELD_EX32(cpu->env.cpucfg[2], CPUCFG2, LAM)) { - hwcaps |=3D HWCAP_LOONGARCH_LAM; - } - - if (FIELD_EX32(cpu->env.cpucfg[2], CPUCFG2, LSX)) { - hwcaps |=3D HWCAP_LOONGARCH_LSX; - } - - if (FIELD_EX32(cpu->env.cpucfg[2], CPUCFG2, LASX)) { - hwcaps |=3D HWCAP_LOONGARCH_LASX; - } - - return hwcaps; -} +#define ELF_HWCAP get_elf_hwcap(thread_cpu) =20 #define ELF_PLATFORM "loongarch" =20 diff --git a/linux-user/loongarch64/elfload.c b/linux-user/loongarch64/elfl= oad.c index 874dc4c2304..ee4a85b8d6c 100644 --- a/linux-user/loongarch64/elfload.c +++ b/linux-user/loongarch64/elfload.c @@ -9,3 +9,50 @@ const char *get_elf_cpu_model(uint32_t eflags) { return "la464"; } + +/* See arch/loongarch/include/uapi/asm/hwcap.h */ +enum { + HWCAP_LOONGARCH_CPUCFG =3D (1 << 0), + HWCAP_LOONGARCH_LAM =3D (1 << 1), + HWCAP_LOONGARCH_UAL =3D (1 << 2), + HWCAP_LOONGARCH_FPU =3D (1 << 3), + HWCAP_LOONGARCH_LSX =3D (1 << 4), + HWCAP_LOONGARCH_LASX =3D (1 << 5), + HWCAP_LOONGARCH_CRC32 =3D (1 << 6), + HWCAP_LOONGARCH_COMPLEX =3D (1 << 7), + HWCAP_LOONGARCH_CRYPTO =3D (1 << 8), + HWCAP_LOONGARCH_LVZ =3D (1 << 9), + HWCAP_LOONGARCH_LBT_X86 =3D (1 << 10), + HWCAP_LOONGARCH_LBT_ARM =3D (1 << 11), + HWCAP_LOONGARCH_LBT_MIPS =3D (1 << 12), +}; + +abi_ulong get_elf_hwcap(CPUState *cs) +{ + LoongArchCPU *cpu =3D LOONGARCH_CPU(cs); + abi_ulong hwcaps =3D 0; + + hwcaps |=3D HWCAP_LOONGARCH_CRC32; + + if (FIELD_EX32(cpu->env.cpucfg[1], CPUCFG1, UAL)) { + hwcaps |=3D HWCAP_LOONGARCH_UAL; + } + + if (FIELD_EX32(cpu->env.cpucfg[2], CPUCFG2, FP)) { + hwcaps |=3D HWCAP_LOONGARCH_FPU; + } + + if (FIELD_EX32(cpu->env.cpucfg[2], CPUCFG2, LAM)) { + hwcaps |=3D HWCAP_LOONGARCH_LAM; + } + + if (FIELD_EX32(cpu->env.cpucfg[2], CPUCFG2, LSX)) { + hwcaps |=3D HWCAP_LOONGARCH_LSX; + } + + if (FIELD_EX32(cpu->env.cpucfg[2], CPUCFG2, LASX)) { + hwcaps |=3D HWCAP_LOONGARCH_LASX; + } + + return hwcaps; +} --=20 2.47.2