From nobody Fri Oct 18 05:18:53 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+114528+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+114528+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1706250502; cv=none; d=zohomail.com; s=zohoarc; b=PTTFGApjWmYTNlmO5zaRtlV2nAGEDxWvN2zzMP4Brn8I79jOgNSGqWQBcSpp1pXwKn3opihFuGBbOKIsZKDayy22W7FSUB32dKSgbC62JtTUlzaZPfdMA25T3ltSl6CC3SgNWjk6YsZ4nr8FR+TbvjYTGkCv5s8ZYH9m7uh6WcU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1706250502; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=kgi0/RoiLpi3q6aUBu/uGSqXVyDqY2940w7GgPqSxs0=; b=grMktsmQz/EwhnYafuXRSCeET1WPytPmYlrtvMHq2h6ulwPOITM6GwTPFduYm0oSJzbl4AzfWXhPU9n9bj/IR/Z5VOd7fLCg80SB/5OpXqvKPItVfOUj91O/gjXvlwfCFhUlo0XpF5YEXF8k/StEljif6hqmau+37VnZ+QMe8rE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+114528+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1706250502008620.5269971043654; Thu, 25 Jan 2024 22:28:22 -0800 (PST) Return-Path: DKIM-Signature: a=rsa-sha256; bh=qo4X5xI7iMSkgeiK+eDJ0eCJc0aJfIhGgl4lnezX53c=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding; s=20140610; t=1706250501; v=1; b=mhksBt2YWLemwNCwO6Sa/iG/Nxf6iaPelzyzFvWK48r/oQZpserYyhMJMxtgF9SnquLDXmBw fST22fI4r9MuEWoCzIvojTqm/T3dBiw69K0nyzUWbdIshsnltwNRdcl+oFGYAiw34vBQbHJWHmc C9cRZzrBzI9XC/cUx+s12C84= X-Received: by 127.0.0.2 with SMTP id IAUAYY1788612xEM2MVOhFct; Thu, 25 Jan 2024 22:28:21 -0800 X-Received: from mail.loongson.cn (mail.loongson.cn [114.242.206.163]) by mx.groups.io with SMTP id smtpd.web10.10112.1706250500182668021 for ; Thu, 25 Jan 2024 22:28:21 -0800 X-Received: from loongson.cn (unknown [10.2.9.245]) by gateway (Coremail) with SMTP id _____8AxOOgAUbNljB0GAA--.2150S3; Fri, 26 Jan 2024 14:28:16 +0800 (CST) X-Received: from code-server.gen (unknown [10.2.9.245]) by localhost.localdomain (Coremail) with SMTP id AQAAf8AxRMz_ULNlR3EbAA--.44258S2; Fri, 26 Jan 2024 14:28:15 +0800 (CST) From: "Chao Li" To: devel@edk2.groups.io Cc: Michael D Kinney , Liming Gao , Zhiguang Liu Subject: [edk2-devel] [PATCH v8 02/37] MdePkg: Add LoongArch64 FPU function set into BaseCpuLib Date: Fri, 26 Jan 2024 14:28:14 +0800 Message-Id: <20240126062814.3100910-1-lichao@loongson.cn> In-Reply-To: <20240126062715.3099433-1-lichao@loongson.cn> References: <20240126062715.3099433-1-lichao@loongson.cn> MIME-Version: 1.0 X-CM-TRANSID: AQAAf8AxRMz_ULNlR3EbAA--.44258S2 X-CM-SenderInfo: xolfxt3r6o00pqjv00gofq/1tbiAQAICGWyG+ALOQA5sm X-Coremail-Antispam: 1Uk129KBjDUn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7KY7 ZEXasCq-sGcSsGvfJ3UbIjqfuFe4nvWSU5nxnvy29KBjDU0xBIdaVrnUUvcSsGvfC2Kfnx nUUI43ZEXa7xR_UUUUUUUUU== Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,lichao@loongson.cn List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: XCZFVPQDryY1gc22BAaPHq88x1787277AA= Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1706250504089100003 Content-Type: text/plain; charset="utf-8" Adding InitializeFloatingPointUnits, EnableFloatingPointUnits and DisableFloatingPointUnits functions for LoongArch64. BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3D4584 Cc: Michael D Kinney Cc: Liming Gao Cc: Zhiguang Liu Signed-off-by: Chao Li Acked-by: Michael D Kinney Reviewed-by: Liming Gao --- MdePkg/Include/Library/CpuLib.h | 43 ++++++++++++++-- MdePkg/Library/BaseCpuLib/BaseCpuLib.inf | 7 ++- .../Library/BaseCpuLib/LoongArch/DisableFpu.S | 17 +++++++ .../Library/BaseCpuLib/LoongArch/EnableFpu.S | 17 +++++++ .../BaseCpuLib/LoongArch/InitializeFpu.S | 51 +++++++++++++++++++ 5 files changed, 128 insertions(+), 7 deletions(-) create mode 100644 MdePkg/Library/BaseCpuLib/LoongArch/DisableFpu.S create mode 100644 MdePkg/Library/BaseCpuLib/LoongArch/EnableFpu.S create mode 100644 MdePkg/Library/BaseCpuLib/LoongArch/InitializeFpu.S diff --git a/MdePkg/Include/Library/CpuLib.h b/MdePkg/Include/Library/CpuLi= b.h index 3f29937dc7..27f3f82ab9 100644 --- a/MdePkg/Include/Library/CpuLib.h +++ b/MdePkg/Include/Library/CpuLib.h @@ -8,6 +8,7 @@ As a result, these services could not be defined in the Base Library. =20 Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+Copyright (c) 2024, Loongson Technology Corporation Limited. All rights re= served.
SPDX-License-Identifier: BSD-2-Clause-Patent =20 **/ @@ -41,14 +42,16 @@ CpuFlushTlb ( VOID ); =20 -#if defined (MDE_CPU_IA32) || defined (MDE_CPU_X64) +#if defined (MDE_CPU_IA32) || defined (MDE_CPU_X64) || defined (MDE_CPU_LO= ONGARCH64) =20 /** + Initialize the CPU floating point units. + Initializes floating point units for requirement of UEFI specification. - This function initializes floating-point control word to 0x027F (all exc= eptions - masked,double-precision, round-to-nearest) and multimedia-extensions con= trol word - (if supported) to 0x1F80 (all exceptions masked, round-to-nearest, flush= to zero - for masked underflow). + For IA32 and X64, this function initializes floating-point control word = to 0x027F + (all exceptions masked,double-precision, round-to-nearest) and multimedi= a-extensions + control word (if supported) to 0x1F80 (all exceptions masked, round-to-n= earest, + flush to zero for masked underflow). **/ VOID EFIAPI @@ -56,6 +59,10 @@ InitializeFloatingPointUnits ( VOID ); =20 +#endif + +#if defined (MDE_CPU_IA32) || defined (MDE_CPU_X64) + /** Determine if the standard CPU signature is "AuthenticAMD". @retval TRUE The CPU signature matches. @@ -89,4 +96,30 @@ GetCpuSteppingId ( =20 #endif =20 +#if defined (MDE_CPU_LOONGARCH64) + +/** + Enable the CPU floating point units. + + Enable the CPU floating point units. +**/ +VOID +EFIAPI +EnableFloatingPointUnits ( + VOID + ); + +/** + Disable the CPU floating point units. + + Disable the CPU floating point units. +**/ +VOID +EFIAPI +DisableFloatingPointUnits ( + VOID + ); + +#endif + #endif diff --git a/MdePkg/Library/BaseCpuLib/BaseCpuLib.inf b/MdePkg/Library/Base= CpuLib/BaseCpuLib.inf index 9a162afe6d..89f6272f11 100644 --- a/MdePkg/Library/BaseCpuLib/BaseCpuLib.inf +++ b/MdePkg/Library/BaseCpuLib/BaseCpuLib.inf @@ -65,8 +65,11 @@ RiscV/Cpu.S =20 [Sources.LOONGARCH64] - LoongArch/CpuFlushTlb.S | GCC - LoongArch/CpuSleep.S | GCC + LoongArch/CpuFlushTlb.S | GCC + LoongArch/CpuSleep.S | GCC + LoongArch/InitializeFpu.S | GCC + LoongArch/EnableFpu.S | GCC + LoongArch/DisableFpu.S | GCC =20 [Packages] MdePkg/MdePkg.dec diff --git a/MdePkg/Library/BaseCpuLib/LoongArch/DisableFpu.S b/MdePkg/Libr= ary/BaseCpuLib/LoongArch/DisableFpu.S new file mode 100644 index 0000000000..33c6bf3411 --- /dev/null +++ b/MdePkg/Library/BaseCpuLib/LoongArch/DisableFpu.S @@ -0,0 +1,17 @@ +#-------------------------------------------------------------------------= ----- +# +# DisableFloatingPointUnits() for LoongArch64 +# +# Copyright (c) 2024, Loongson Technology Corporation Limited. All rights = reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +#-------------------------------------------------------------------------= ----- +ASM_GLOBAL ASM_PFX(DisableFloatingPointUnits) + +ASM_PFX(DisableFloatingPointUnits): + li.w $t0, 0x1 + csrxchg $zero, $t0, 0x2 + + jirl $zero, $ra, 0 + .end diff --git a/MdePkg/Library/BaseCpuLib/LoongArch/EnableFpu.S b/MdePkg/Libra= ry/BaseCpuLib/LoongArch/EnableFpu.S new file mode 100644 index 0000000000..3e4f7411f1 --- /dev/null +++ b/MdePkg/Library/BaseCpuLib/LoongArch/EnableFpu.S @@ -0,0 +1,17 @@ +#-------------------------------------------------------------------------= ----- +# +# EnableFloatingPointUnits() for LoongArch64 +# +# Copyright (c) 2024, Loongson Technology Corporation Limited. All rights = reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +#-------------------------------------------------------------------------= ----- +ASM_GLOBAL ASM_PFX(EnableFloatingPointUnits) + +ASM_PFX(EnableFloatingPointUnits): + li.w $t0, 0x1 + csrxchg $t0, $t0, 0x2 + + jirl $zero, $ra, 0 + .end diff --git a/MdePkg/Library/BaseCpuLib/LoongArch/InitializeFpu.S b/MdePkg/L= ibrary/BaseCpuLib/LoongArch/InitializeFpu.S new file mode 100644 index 0000000000..2cea5558a6 --- /dev/null +++ b/MdePkg/Library/BaseCpuLib/LoongArch/InitializeFpu.S @@ -0,0 +1,51 @@ +#-------------------------------------------------------------------------= ----- +# +# InitializeFloatingPointUnits() for LoongArch64 +# +# Copyright (c) 2024, Loongson Technology Corporation Limited. All rights = reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +#-------------------------------------------------------------------------= ----- +ASM_GLOBAL ASM_PFX(InitializeFloatingPointUnits) + +ASM_PFX(InitializeFloatingPointUnits): + li.d $t0, 0x0 // RNE mode + movgr2fcsr $r0, $t0 + li.d $t1, -1 // SNaN + + movgr2fr.d $f0, $t1 + movgr2fr.d $f1, $t1 + movgr2fr.d $f2, $t1 + movgr2fr.d $f3, $t1 + movgr2fr.d $f4, $t1 + movgr2fr.d $f5, $t1 + movgr2fr.d $f6, $t1 + movgr2fr.d $f7, $t1 + movgr2fr.d $f8, $t1 + movgr2fr.d $f9, $t1 + movgr2fr.d $f10, $t1 + movgr2fr.d $f11, $t1 + movgr2fr.d $f12, $t1 + movgr2fr.d $f13, $t1 + movgr2fr.d $f14, $t1 + movgr2fr.d $f15, $t1 + movgr2fr.d $f16, $t1 + movgr2fr.d $f17, $t1 + movgr2fr.d $f18, $t1 + movgr2fr.d $f19, $t1 + movgr2fr.d $f20, $t1 + movgr2fr.d $f21, $t1 + movgr2fr.d $f22, $t1 + movgr2fr.d $f23, $t1 + movgr2fr.d $f24, $t1 + movgr2fr.d $f25, $t1 + movgr2fr.d $f26, $t1 + movgr2fr.d $f27, $t1 + movgr2fr.d $f28, $t1 + movgr2fr.d $f29, $t1 + movgr2fr.d $f30, $t1 + movgr2fr.d $f31, $t1 + + jirl $zero, $ra, 0 + .end --=20 2.27.0 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#114528): https://edk2.groups.io/g/devel/message/114528 Mute This Topic: https://groups.io/mt/103971634/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-