From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from walk.intel-email.com (walk.intel-email.com [101.227.64.242]) by mx.groups.io with SMTP id smtpd.web08.2657.1665711988395419363 for ; Thu, 13 Oct 2022 18:46:29 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@byosoft.com.cn header.s=cloud-union header.b=pyzv8BSY; spf=pass (domain: byosoft.com.cn, ip: 101.227.64.242, mailfrom: gaoliming@byosoft.com.cn) Received: from walk.intel-email.com (localhost [127.0.0.1]) by walk.intel-email.com (Postfix) with ESMTP id E67A1CD1F772 for ; Fri, 14 Oct 2022 09:46:23 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=byosoft.com.cn; s=cloud-union; t=1665711984; bh=SzlA0lzDzF+1D7wfFq34dFBQ9LErYrraBQ+OiHlDeE8=; h=From:To:Cc:References:In-Reply-To:Subject:Date; b=pyzv8BSY4PZmc4+VET/rmYDCnnntgpk8VGwjO+kdZxiHaV7lxV/7CfEeOxi2QJ2Ek YjHF1FxZ9wHumAiSnJYRqQ8mZF5/KIN4na1xWpmBE8ZNENHYV8ukWZdUUXGOLGEVzj AsR8aZacps4ZV697q3xva6qdkMHAZPUP6JtVwIA4= Received: from localhost (localhost [127.0.0.1]) by walk.intel-email.com (Postfix) with ESMTP id E1866CD1F71A for ; Fri, 14 Oct 2022 09:46:23 +0800 (CST) Received: from walk.intel-email.com (localhost [127.0.0.1]) by walk.intel-email.com (Postfix) with ESMTP id A8E98CD1F66F for ; Fri, 14 Oct 2022 09:46:23 +0800 (CST) Authentication-Results: walk.intel-email.com; none Received: from mail.byosoft.com.cn (mail.byosoft.com.cn [58.240.74.242]) by walk.intel-email.com (Postfix) with SMTP id 0BCE2CD1F796 for ; Fri, 14 Oct 2022 09:46:19 +0800 (CST) Received: from DESKTOPS6D0PVI ([101.86.146.168]) (envelope-sender ) by 192.168.6.13 with ESMTP for ; Fri, 14 Oct 2022 09:46:17 +0800 X-WM-Sender: gaoliming@byosoft.com.cn X-Originating-IP: 101.86.146.168 X-WM-AuthFlag: YES X-WM-AuthUser: gaoliming@byosoft.com.cn From: "gaoliming" To: , Cc: "'\"Ray_Ni\"'" , "'\"Michael_D_Kinney\"'" , "'\"Guomin_Jiang\"'" , "'\"Wei6_Xu\"'" , "'\"Maciej_Rabeda\"'" , "'\"Jiaxin_Wu\"'" , "'\"Jiewen_Yao\"'" , "'\"Jian_J_Wang\"'" , "'\"Xiaoyu_Lu\"'" , "'\"Zhiguang_Liu\"'" , "'\"Zhichao_Gao\"'" , "'\"Bob_Feng\"'" , "'\"Yuwei_Chen\"'" References: <01b501d8ddd0$80a06140$81e123c0$@byosoft.com.cn> <88A9D77B-7F20-48BC-8DD5-FFE005E0F669@getmailspring.com> In-Reply-To: <88A9D77B-7F20-48BC-8DD5-FFE005E0F669@getmailspring.com> Subject: =?UTF-8?B?5Zue5aSNOiBbZWRrMi1kZXZlbF0g5Zue5aSNOiBlZGsyLWRldmVsXSBbUEFUQ0ggdjMgMDAvMzRdIEFkZCBhIG5ldyBhcmNoaXRlY3R1cmUgY2FsbGVkIExvb25nQXJjaCBpbiBFREsgSUk=?= Date: Fri, 14 Oct 2022 09:46:18 +0800 Message-ID: <03c601d8df6e$c17b27a0$447176e0$@byosoft.com.cn> MIME-Version: 1.0 X-Mailer: Microsoft Outlook 16.0 Thread-Index: AQHOQfsmdtceJyK4yJzTRTINdHScgQIfUG9UrhFe6BA= Sender: "gaoliming" Content-Type: multipart/alternative; boundary="----=_NextPart_000_03C7_01D8DFB1.CFA349A0" Content-Language: zh-cn ------=_NextPart_000_03C7_01D8DFB1.CFA349A0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Chao: =20 I create PR https://github.com/tianocore/edk2/pull/3474 to merge this patch= set.=20 =20 Thanks Liming =E5=8F=91=E4=BB=B6=E4=BA=BA: devel@edk2.groups.io = =E4=BB=A3=E8=A1=A8 Chao Li =E5=8F=91=E9=80=81=E6=97=B6=E9=97=B4: 2022=E5=B9=B410=E6=9C=8813=E6=97=A5 9= :55 =E6=94=B6=E4=BB=B6=E4=BA=BA: "gaoliming" =E6=8A=84=E9=80=81: devel@edk2.groups.io; "Ray_Ni" ; "Mic= hael_D_Kinney" ; "Guomin_Jiang" ; "Wei6_Xu" ; "Maciej_Rabeda" ; "Jiaxin_Wu" ; "Jiewen_Yao" ; "Jian_J_Wang" ; "Xiaoyu_Lu" ; "Zhiguang_Liu" ; "Zhichao_Gao" ; "Bob_Feng" ; "Yuwei_Chen" =E4=B8=BB=E9=A2=98: Re: [edk2-devel] =E5=9B=9E=E5=A4=8D: edk2-devel] [PATCH= v3 00/34] Add a new architecture called LoongArch in EDK II =20 Liming, Thank you. If EDK2 have merged new commit, I will rebase the PR in a few da= ys. Please let me know if you have any questions. =20 Thanks, Chao -------- On 10=E6=9C=88 12 2022, at 8:20 =E6=97=A9=E4=B8=8A, "gaoliming" > wrote: Chao: =20 I will check this PR, and merge it this week if no other comment. =20 =20 =20 Thanks =20 Liming =20 =E5=8F=91=E4=BB=B6=E4=BA=BA: devel@edk2.groups.io > =E4=BB=A3=E8=A1= =A8 Chao Li =E5=8F=91=E9=80=81=E6=97=B6=E9=97=B4: 2022=E5=B9=B410=E6=9C=8811=E6=97=A5 1= 1:33 =E6=94=B6=E4=BB=B6=E4=BA=BA: devel@edk2.groups.io ; lichao@loongson.cn =20 =E6=8A=84=E9=80=81: " devel@edk2.groups.io "= >; "Ray_Ni" >; "Liming_Gao" >; "Michael_D_Kinney" >; "Guomin_Jiang" >; "Wei6_Xu" >; "Maciej_Rabeda" >; "Jiaxin_Wu" >; "Siyuan_Fu" >; "Jiewen_Yao" >; "Jian_J_Wang" >; "Xiaoyu_Lu" >; "Zhiguang_Liu" >; "Zhichao_Gao" >= ; "Bob_Feng" >; "Yuwei_= Chen" > =E4=B8=BB=E9=A2=98: Re: [edk2-devel] [PATCH v3 00/34] Add a new architectur= e called LoongArch in EDK II =20 =20 Hi All, I have created a PR in EDK2 repo: https://github.com/tianocore/edk2/pull/34= 57 , and all the EDK2 CI passed, so I think LoongArch port is = ready to be enabled, I request to merge the LoongArch base code into EDK2 m= aster branch. =20 =20 =20 Thanks, Chao -------- On 10=E6=9C=88 8 2022, at 12:18 =E4=B8=AD=E5=8D=88, "Chao Li" > wrote: Hi All, I have updated LoongArch repo, the CI has passed, please check again: https://dev.azure.com/kilaterlee/LoongArch_edk2/_build/results?buildId=3D77= &view=3Dresults =20 =20 =20 =20 Thanks, Chao -------- =20 On 10=E6=9C=88 1 2022, at 8:54 =E6=97=A9=E4=B8=8A, "Chao Li" > wrote: Hi All, Today, all of LoongArch patches have been approved, a big thank you to all = the maintainers! =20 =20 I have updated the LoongArch code repo to the EDK2 latest commit, applied t= he LoongArch patches based on it, and CI passed. =20 =20 LoongArch repo URL: https://github.com/loongson/edk2/tree/LoongArch =20 CI results: https://dev.azure.com/kilaterlee/LoongArch_edk2/_build/results?= buildId=3D75 &view=3Dresults =20 =20 I think the LoongArch port is ready to merge into the EDK2 master branch, i= f so please help me merge them. Please let me know if something should I do= next. =20 =20 -- Thanks, Chao =20 =20 > -----=E5=8E=9F=E5=A7=8B=E9=82=AE=E4=BB=B6----- > =E5=8F=91=E4=BB=B6=E4=BA=BA: "Chao Li" > > =E5=8F=91=E9=80=81=E6=97=B6=E9=97=B4:2022-09-27 19:13:20 (=E6=98=9F=E6=9C= =9F=E4=BA=8C) > =E6=94=B6=E4=BB=B6=E4=BA=BA: devel@edk2.groups.io =20 > =E6=8A=84=E9=80=81: "Ray Ni" = >, "Liming Gao" >, "Michael D Kinney" >, "Guomin Jiang" >, "Wei6 Xu" >, "Maciej Rabeda" >, "Jiaxin Wu" >, "Siyuan Fu" >, "Jiewen Yao" >,= "Jian J Wang" >, "= Xiaoyu Lu" >, "Zhigua= ng Liu" >, "Zhich= ao Gao" >, "Bob Fen= g" >, "Yuwei Chen" > > =E4=B8=BB=E9=A2=98: [edk2-devel] [PATCH v3 00/34] Add a new architecture = called LoongArch in EDK II >=20 > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D4053 =20 >=20 > UEFI Spec V2.10 already supports LoongArch and all changes of this > commit passwed Azure CI testing, so let's enable it in EDK2. This commit > contains 35 patches, with patch 0 is the cover and the rest being the > LoongArch base code. >=20 > Changes from v1 to v2: > 1. For patch 0008, added IANA website link in the commit message and > Dhcp.h. > 2. Added IANA, Microsft and UEFI specification links in every patch > commit message that uses them. > 3. For patch 0023, LoongArch64 supports unaligned access operations, so > use the unaligned read/write generic implementation. Added Barrier.S > file to provide barrier operations for LoongArch. > 4. For patch 0024, convert inline assembly code to ASM code. > 5. Added the BZ link in every patch commit message. >=20 > Changes from v2 to v3: > 1. Added all reviewer in the correspondings patches. > 2. For patch 0029, converted LoongArch synchronization operations from > inline assembly code to ASM code. > 3. For patch 0015, 0016, 0017, changed the commit message for more > clarity. > 4. For patch 0034, move it to patch 0018, as it also changes the BaseTool= s. >=20 > Please refer to this URL for the code repo of LoongArch64: > https://github.com/loongson/edk2/tree/LoongArch =20 >=20 > Fore more documents of LoongArch please refer to following URL: > https://loongson.github.io/LoongArch-Documentation/README-EN.html =20 >=20 > Modified modules: FatPkg, FmpDevicePkg, NetworkPkg, > NetworkPkg/HttpBootDxe, CryptoPkg, MdePkg/Include, SecurityPkg, > ShellPkg, UnitTestFrameworkPkg, MdePkg/DxeServicesLib, MdeModulePkg, > .python/SpellCheck, BaseTools, .azurepipelines, .pytool, MdePkg, > MdeModulePkg and MdePkg/MdePkg.ci.yaml. >=20 > Cc: Ray Ni > > Cc: Liming Gao > > Cc: Michael D Kinney > > Cc: Guomin Jiang > > Cc: Wei6 Xu > > Cc: Maciej Rabeda > > Cc: Jiaxin Wu > > Cc: Siyuan Fu > > Cc: Jiewen Yao > > Cc: Jian J Wang > > Cc: Xiaoyu Lu > > Cc: Zhiguang Liu > > Cc: Zhichao Gao > > Cc: Bob Feng > > Cc: Yuwei Chen > >=20 > Chao Li (34): > MdePkg: Added file of DebugSupport.h to MdePkg.ci.yaml > MdePkg: Added LoongArch jump buffer register definition to > MdePkg.ci.yaml > FatPkg: Add LOONGARCH64 architecture for EDK2 CI. > FmpDevicePkg: Add LOONGARCH64 architecture for EDK2 CI. > NetworkPkg: Add LOONGARCH64 architecture for EDK2 CI. > NetworkPkg/HttpBootDxe: Add LOONGARCH64 architecture for EDK2 CI. > CryptoPkg: Add LOONGARCH64 architecture for EDK2 CI. > MdePkg/Include: Add LOONGARCH related definitions EDK2 CI. > SecurityPkg: Add LOONGARCH64 architecture for EDK2 CI. > ShellPkg: Add LOONGARCH64 architecture for EDK2 CI. > UnitTestFrameworkPkg: Add LOONGARCH64 architecture for EDK2 CI. > MdePkg/DxeServicesLib: Add LOONGARCH64 architecture > MdeModulePkg: Use LockBoxNullLib for LOONGARCH64 > .python/SpellCheck: Add "Loongson" and "LOONGARCH" to "words" section > BaseTools: Update GenFw/GenFv to support LoongArch platform. > BaseTools: Updated for GCC5 tool chain for LoongArch platfrom. > BaseTools: Updated build tools to support new LoongArch. > BaseTools: Add LoongArch64 binding. > BaseTools: Enable LoongArch64 architecture for LoongArch64 EDK2 CI. > .azurepipelines: Add LoongArch64 architecture on LoongArch64 EDK2 CI. > .pytool: Add LoongArch64 architecture on LoongArch64 EDK2 CI. > MdePkg: Add LoongArch LOONGARCH64 binding > MdePkg/Include: LoongArch definitions. > MdePkg/BaseLib: BaseLib for LOONGARCH64 architecture. > MdePkg/BaseCacheMaintenanceLib: LoongArch cache maintenance > implementation. > MdePkg/BaseIoLibIntrinsic: IoLibNoIo for LoongArch architecture. > MdePkg/BasePeCoff: Add LoongArch PE/Coff related code. > MdePkg/BaseCpuLib: LoongArch Base CPU library implementation. > MdePkg/BaseSynchronizationLib: LoongArch cache related code. > MdePkg/BaseSafeIntLib: Add LoongArch64 architecture for > BaseSafeIntLib. > MdeModulePkg/Logo: Add LoongArch64 architecture. > MdeModulePkg/CapsuleRuntimeDxe: Add LoongArch64 architecture. > MdeModulePkg/DxeIplPeim : LoongArch DxeIPL implementation. > NetworkPkg: Add LoongArch64 architecture. >=20 > .azurepipelines/Ubuntu-GCC5.yml | 3 +- > .pytool/CISettings.py | 5 +- > .pytool/Plugin/SpellCheck/cspell.base.yaml | 4 +- > ...gcc_loongarch64_unknown_linux_ext_dep.yaml | 22 ++ > BaseTools/Conf/tools_def.template | 54 +++- > .../LinuxGcc5ToolChain/LinuxGcc5ToolChain.py | 31 ++ > BaseTools/Source/C/Common/BasePeCoff.c | 15 +- > BaseTools/Source/C/Common/PeCoffLoaderEx.c | 79 +++++ > BaseTools/Source/C/GNUmakefile | 3 + > BaseTools/Source/C/GenFv/GenFvInternalLib.c | 125 +++++++- > BaseTools/Source/C/GenFw/Elf64Convert.c | 293 +++++++++++++++++- > BaseTools/Source/C/GenFw/elf_common.h | 94 ++++++ > .../C/Include/IndustryStandard/PeImage.h | 57 ++-- > .../C/Include/LoongArch64/ProcessorBind.h | 80 +++++ > BaseTools/Source/C/Makefiles/header.makefile | 6 + > BaseTools/Source/Python/Common/DataType.py | 21 +- > .../Source/Python/UPT/Library/DataType.py | 24 +- > BaseTools/Source/Python/build/buildoptions.py | 3 +- > CryptoPkg/CryptoPkg.dsc | 3 +- > .../Library/BaseCryptLib/BaseCryptLib.inf | 6 +- > .../Library/BaseCryptLib/RuntimeCryptLib.inf | 4 + > .../BaseCryptLibNull/BaseCryptLibNull.inf | 3 +- > .../BaseCryptLibOnProtocolPpi/DxeCryptLib.inf | 3 +- > .../BaseCryptLibOnProtocolPpi/PeiCryptLib.inf | 3 +- > CryptoPkg/Library/Include/CrtLibSupport.h | 3 +- > CryptoPkg/Library/OpensslLib/OpensslLib.inf | 2 + > .../Library/OpensslLib/OpensslLibCrypto.inf | 2 + > CryptoPkg/Library/TlsLib/TlsLib.inf | 3 +- > CryptoPkg/Library/TlsLibNull/TlsLibNull.inf | 3 +- > FatPkg/FatPkg.dsc | 3 +- > FmpDevicePkg/FmpDevicePkg.dsc | 3 +- > MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf | 6 +- > .../Core/DxeIplPeim/LoongArch64/DxeLoadFunc.c | 63 ++++ > MdeModulePkg/Logo/Logo.inf | 3 +- > MdeModulePkg/MdeModulePkg.dsc | 4 +- > .../CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf | 9 +- > MdePkg/Include/IndustryStandard/Dhcp.h | 45 +-- > MdePkg/Include/IndustryStandard/PeImage.h | 9 + > MdePkg/Include/Library/BaseLib.h | 24 ++ > MdePkg/Include/LoongArch64/ProcessorBind.h | 120 +++++++ > MdePkg/Include/Protocol/DebugSupport.h | 107 ++++++- > MdePkg/Include/Protocol/PxeBaseCode.h | 3 + > MdePkg/Include/Uefi/UefiBaseType.h | 14 + > MdePkg/Include/Uefi/UefiSpec.h | 16 +- > .../BaseCacheMaintenanceLib.inf | 6 +- > .../BaseCacheMaintenanceLib/LoongArchCache.c | 254 +++++++++++++++ > MdePkg/Library/BaseCpuLib/BaseCpuLib.inf | 7 +- > MdePkg/Library/BaseCpuLib/BaseCpuLib.uni | 5 +- > .../BaseCpuLib/LoongArch/CpuFlushTlb.S | 15 + > .../Library/BaseCpuLib/LoongArch/CpuSleep.S | 15 + > .../BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf | 10 +- > MdePkg/Library/BaseIoLibIntrinsic/IoLibNoIo.c | 3 +- > MdePkg/Library/BaseLib/BaseLib.inf | 16 +- > MdePkg/Library/BaseLib/LoongArch64/Barrier.S | 28 ++ > .../BaseLib/LoongArch64/CpuBreakpoint.S | 24 ++ > MdePkg/Library/BaseLib/LoongArch64/CpuPause.S | 31 ++ > .../BaseLib/LoongArch64/DisableInterrupts.S | 21 ++ > .../BaseLib/LoongArch64/EnableInterrupts.S | 21 ++ > .../BaseLib/LoongArch64/GetInterruptState.S | 35 +++ > .../BaseLib/LoongArch64/InternalSwitchStack.c | 58 ++++ > .../Library/BaseLib/LoongArch64/MemoryFence.S | 18 ++ > .../BaseLib/LoongArch64/SetJumpLongJump.S | 49 +++ > .../Library/BaseLib/LoongArch64/SwitchStack.S | 39 +++ > MdePkg/Library/BasePeCoffLib/BasePeCoff.c | 3 +- > .../Library/BasePeCoffLib/BasePeCoffLib.inf | 5 + > .../Library/BasePeCoffLib/BasePeCoffLib.uni | 2 + > .../BasePeCoffLib/LoongArch/PeCoffLoaderEx.c | 137 ++++++++ > .../Library/BaseSafeIntLib/BaseSafeIntLib.inf | 9 +- > .../BaseSynchronizationLib.inf | 6 + > .../LoongArch64/AsmSynchronization.S | 122 ++++++++ > .../LoongArch64/Synchronization.c | 233 ++++++++++++++ > .../Library/DxeServicesLib/DxeServicesLib.inf | 4 +- > MdePkg/MdePkg.ci.yaml | 13 + > MdePkg/MdePkg.dec | 4 + > MdePkg/MdePkg.dsc | 3 +- > NetworkPkg/HttpBootDxe/HttpBootDhcp4.h | 3 + > NetworkPkg/Network.dsc.inc | 3 +- > NetworkPkg/NetworkPkg.dsc | 3 +- > SecurityPkg/SecurityPkg.dsc | 3 +- > ShellPkg/ShellPkg.dsc | 3 +- > UnitTestFrameworkPkg/UnitTestFrameworkPkg.dsc | 3 +- > 81 files changed, 2478 insertions(+), 119 deletions(-) > create mode 100644 BaseTools/Bin/gcc_loongarch64_unknown_linux_ext_dep.ya= ml > create mode 100644 BaseTools/Source/C/Include/LoongArch64/ProcessorBind.h > create mode 100644 MdeModulePkg/Core/DxeIplPeim/LoongArch64/DxeLoadFunc.c > create mode 100644 MdePkg/Include/LoongArch64/ProcessorBind.h > create mode 100644 MdePkg/Library/BaseCacheMaintenanceLib/LoongArchCache.= c > create mode 100644 MdePkg/Library/BaseCpuLib/LoongArch/CpuFlushTlb.S > create mode 100644 MdePkg/Library/BaseCpuLib/LoongArch/CpuSleep.S > create mode 100644 MdePkg/Library/BaseLib/LoongArch64/Barrier.S > create mode 100644 MdePkg/Library/BaseLib/LoongArch64/CpuBreakpoint.S > create mode 100644 MdePkg/Library/BaseLib/LoongArch64/CpuPause.S > create mode 100644 MdePkg/Library/BaseLib/LoongArch64/DisableInterrupts.S > create mode 100644 MdePkg/Library/BaseLib/LoongArch64/EnableInterrupts.S > create mode 100644 MdePkg/Library/BaseLib/LoongArch64/GetInterruptState.S > create mode 100644 MdePkg/Library/BaseLib/LoongArch64/InternalSwitchStack= .c > create mode 100644 MdePkg/Library/BaseLib/LoongArch64/MemoryFence.S > create mode 100644 MdePkg/Library/BaseLib/LoongArch64/SetJumpLongJump.S > create mode 100644 MdePkg/Library/BaseLib/LoongArch64/SwitchStack.S > create mode 100644 MdePkg/Library/BasePeCoffLib/LoongArch/PeCoffLoaderEx.= c > create mode 100644 MdePkg/Library/BaseSynchronizationLib/LoongArch64/AsmS= ynchronization.S > create mode 100644 MdePkg/Library/BaseSynchronizationLib/LoongArch64/Sync= hronization.c >=20 > -- > 2.27.0 >=20 >=20 >=20 >=20 >=20 =20 =20 =E6=9C=AC=E9=82=AE=E4=BB=B6=E5=8F=8A=E5=85=B6=E9=99=84=E4=BB=B6=E5=90=AB=E6= =9C=89=E9=BE=99=E8=8A=AF=E4=B8=AD=E7=A7=91=E7=9A=84=E5=95=86=E4=B8=9A=E7=A7= =98=E5=AF=86=E4=BF=A1=E6=81=AF=EF=BC=8C=E4=BB=85=E9=99=90=E4=BA=8E=E5=8F=91= =E9=80=81=E7=BB=99=E4=B8=8A=E9=9D=A2=E5=9C=B0=E5=9D=80=E4=B8=AD=E5=88=97=E5= =87=BA=E7=9A=84=E4=B8=AA=E4=BA=BA=E6=88=96=E7=BE=A4=E7=BB=84=E3=80=82=E7=A6= =81=E6=AD=A2=E4=BB=BB=E4=BD=95=E5=85=B6=E4=BB=96=E4=BA=BA=E4=BB=A5=E4=BB=BB= =E4=BD=95=E5=BD=A2=E5=BC=8F=E4=BD=BF=E7=94=A8=EF=BC=88=E5=8C=85=E6=8B=AC=E4= =BD=86=E4=B8=8D=E9=99=90=E4=BA=8E=E5=85=A8=E9=83=A8=E6=88=96=E9=83=A8=E5=88= =86=E5=9C=B0=E6=B3=84=E9=9C=B2=E3=80=81=E5=A4=8D=E5=88=B6=E6=88=96=E6=95=A3= =E5=8F=91=EF=BC=89=E6=9C=AC=E9=82=AE=E4=BB=B6=E5=8F=8A=E5=85=B6=E9=99=84=E4= =BB=B6=E4=B8=AD=E7=9A=84=E4=BF=A1=E6=81=AF=E3=80=82=E5=A6=82=E6=9E=9C=E6=82= =A8=E9=94=99=E6=94=B6=E6=9C=AC=E9=82=AE=E4=BB=B6=EF=BC=8C=E8=AF=B7=E6=82=A8= =E7=AB=8B=E5=8D=B3=E7=94=B5=E8=AF=9D=E6=88=96=E9=82=AE=E4=BB=B6=E9=80=9A=E7= =9F=A5=E5=8F=91=E4=BB=B6=E4=BA=BA=E5=B9=B6=E5=88=A0=E9=99=A4=E6=9C=AC=E9=82= =AE=E4=BB=B6=E3=80=82 This email and its attachments contain confidential information from Loongs= on Technology , which is intended only for the person or entity whose addre= ss is listed above. Any use of the information contained herein in any way = (including, but not limited to, total or partial disclosure, reproduction o= r dissemination) by persons other than the intended recipient(s) is prohibi= ted. If you receive this email in error, please notify the sender by phone = or email immediately and delete it. =20 =20 =20 ------=_NextPart_000_03C7_01D8DFB1.CFA349A0 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

Chao:

&nb= sp;

I create PR https://github.com/tianocore/edk2/pull/= 3474 to merge this patch set.

 

Thanks

Liming

=E5=8F=91=E4=BB=B6=E4=BA=BA:<= /span> devel@edk2.groups.io <devel@edk2.groups.io> = =E4=BB=A3= =E8=A1=A8 Chao Li
=E5=8F=91=E9=80=81=E6=97=B6=E9=97=B4: 2022=E5=B9=B410=E6= =9C=8813=E6=97=A5 9:55
=E6=94=B6=E4=BB=B6=E4=BA=BA: "gaoliming" <gaoliming@byosoft.com.cn>
= =E6=8A=84=E9=80=81: dev= el@edk2.groups.io; "Ray_Ni" <ray.ni@intel.com>; "Micha= el_D_Kinney" <michael.d.kinney@intel.com>; "Guomin_Jiang&qu= ot; <guomin.jiang@intel.com>; "Wei6_Xu" <wei6.xu@intel.c= om>; "Maciej_Rabeda" <maciej.rabeda@linux.intel.com>; &q= uot;Jiaxin_Wu" <jiaxin.wu@intel.com>; "Jiewen_Yao" <= ;jiewen.yao@intel.com>; "Jian_J_Wang" <jian.j.wang@intel.co= m>; "Xiaoyu_Lu" <xiaoyu1.lu@intel.com>; "Zhiguang_L= iu" <zhiguang.liu@intel.com>; "Zhichao_Gao" <zhicha= o.gao@intel.com>; "Bob_Feng" <bob.c.feng@intel.com>; &qu= ot;Yuwei_Chen" <yuwei.chen@intel.com>
=E4=B8=BB=E9= =A2=98: Re: [edk2-devel] <= /span>=E5=9B=9E=E5=A4=8D: edk2-devel] [PATCH v3 00/34] A= dd a new architecture called LoongArch in EDK II

 

Liming,

Thank you. If EDK2= have merged new commit, I will rebase the PR in a few days. Please let me = know if you have any questions.

 

Thanks,
Chao
--------

On 10=E6=9C=88 12 2022,= at 8:20 =E6=97=A9=E4=B8=8A, "gaoliming"= ; <gaoliming@byosoft.com.cn<= /a>> wrote:

 

 

 

 

 

=

=E5=8F=91=E4=BB=B6=E4=BA=BA:=  deve= l@edk2.groups.io <devel@edk2= .groups.io> =E4=BB=A3=E8=A1=A8 Chao Li<= span lang=3DEN-US>

=E5=8F= =91=E9=80=81=E6=97=B6=E9=97=B4:=  2022=E5=B9=B410=E6=9C=8811= =E6=97=A5 11:33<= o:p>

=E6=94=B6=E4=BB=B6=E4=BA= =BA: devel@edk2.groups.io; lichao@loongson.cn<= /p>

=E6=8A=84=E9=80=81: " de= vel@edk2.groups.io " <d= evel@edk2.groups.io>; "Ray_Ni" <ray.ni@intel.com>; "Liming_Gao" <gaoliming@byosoft.com.cn>; &quo= t;Michael_D_Kinney" <= michael.d.kinney@intel.com>; "Guomin_Jiang" <guomin.jiang@intel.com>; "Wei6_= Xu" <wei6.xu@intel.com>= ; "Maciej_Rabeda" <maciej.rabeda@linux.intel.com>; "Jiaxin_Wu" <jiaxin.wu@intel.com>; "Siyua= n_Fu" <siyuan.fu@intel.com>; "Jiewen_Yao" <= jiewen.yao@intel.com>; "Jian_J_Wang" <jian.j.wang@intel.com>; "Xiaoyu_Lu"= ; <xiaoyu1.lu@intel.com>;= "Zhiguang_Liu" <zhi= guang.liu@intel.com>; "Zhichao_Gao" <zhichao.gao@intel.com>; "Bob_Feng" = <bob.c.feng@intel.com>; &= quot;Yuwei_Chen" <yuwei.che= n@intel.com>

=E4=B8=BB=E9=A2=98: Re: [edk2-devel] [PATCH v3 00/34] Add a new architecture c= alled LoongArch in EDK II

 

&nbs= p;

Hi All= ,

I have created a PR in EDK2 repo: https://gi= thub.com/tianocore/edk2/pull/3457, and all the EDK2 CI passed, so I thi= nk LoongArch port is ready to be enabled, I request to merge the LoongArch = base code into EDK2 master branch.

 

 

=

 

Thanks,

Chao

--------

O= n 10=E6=9C=88 8 2022, at 12:18 =E4=B8=AD= =E5=8D=88, "Chao Li" <lichao@loongson.c= n> wrote:

Hi All,

I have updated LoongArch repo, the CI has passed, = please check again:

 

 

=

 

<= p class=3DMsoNormal> 

Thanks,=

Chao

--------

 

On 10=E6=9C=88= 1 2022, at 8:54 =E6=97=A9=E4=B8=8A, "Chao L= i" <lichao@loongson.cn> wrote:

Hi All,

Today, all o= f LoongArch patches have been approved, a big thank you to all the maintain= ers!

 

 

I have updated the LoongArch code repo to the EDK2 latest commi= t, applied the LoongArch patches based on it, and CI passed.

 =

 <= /o:p>

 

 

I think the LoongArch port is ready to merge into t= he EDK2 master branch, if so please help me merge them. Please let me know = if something should I do next.

 

 

--

Thanks,

Chao

&nbs= p;

=  

&g= t; -----=E5=8E=9F=E5=A7=8B=E9=82=AE=E4=BB=B6-----=

> =E5=8F=91=E4=BB=B6=E4=BA=BA: "= Chao Li" <lichao@loongson.cn>

> =E5=8F= =91=E9=80=81=E6=97=B6=E9=97=B4:2022-09-27 19:13:20 (=E6=98=9F=E6=9C=9F=E4=BA=8C)

> =E6= =94=B6=E4=BB=B6=E4=BA=BA: devel@edk2.groups.io

> =E6=8A=84=E9=80=81: "Ray Ni&= quot; <ray.ni@intel.com>, "Liming Gao" <gaoliming@byosoft.com.cn>, "Michael D Kinney" <michael.d.kinney@intel.com>, "Guomin Jiang&quo= t; <guomin.jiang@intel.com>, "Wei6 Xu" <= ;wei6.xu@intel.com>, "Maciej Rabeda" <maciej.rabeda@linux.intel.com>, "Jiaxin Wu" &= lt;jiaxin.wu@intel.com>, "Siyuan Fu" <siy= uan.fu@intel.com>, "Jiewen Yao" <jiewen.yao@in= tel.com>, "Jian J Wang" <jian.j.wang@intel.c= om>, "Xiaoyu Lu" <xiaoyu1.lu@intel.com>= , "Zhiguang Liu" <zhiguang.liu@intel.com>,= "Zhichao Gao" <zhichao.gao@intel.com>, &quo= t;Bob Feng" <bob.c.feng@intel.com>, "Yuwei Che= n" <yuwei.chen@intel.com>

> =E4= =B8=BB=E9=A2=98: [edk2-devel] [PATCH v3 00/34] Add a new= architecture called LoongArch in EDK II

<= div>

> UEFI Spec V2.10 already supports LoongArch and all changes of thi= s

> commit passwed Azure CI testing, so let's enable it in EDK2.= This commit

> contains 35 patches, with patch 0 is the cover an= d the rest being the

> LoongArch base code.

> Changes from v1 to v2:

=

> 1. For patch 0008, added = IANA website link in the commit message and

> Dhcp.h.=

&g= t; 2. Added IANA, Microsft and UEFI specification links in every patch=

> commit message that uses them.

> 3. For patch 0023, Loo= ngArch64 supports unaligned access operations, so

> use the unal= igned read/write generic implementation. Added Barrier.S<= /p>

> file = to provide barrier operations for LoongArch.

> 4. For patch 0024= , convert inline assembly code to ASM code.

> 5. Added the BZ li= nk in every patch commit message.

<= /div>

> Changes f= rom v2 to v3:

> 1. Added all reviewer in the correspondings patc= hes.

> 2. For patch 0029, converted LoongArch synchronization op= erations from

> inline assembly code to ASM code.

> 3= . For patch 0015, 0016, 0017, changed the commit message for more

&= gt; clarity.

> 4. For patch 0034, move it to patch 0018, as it a= lso changes the BaseTools.

> Please refer to = this URL for the code repo of LoongArch64:

<= div>

> Fore more documents of Loo= ngArch please refer to following URL:

>&= nbsp;

> Modified modules: FatPkg, FmpDevicePkg, NetworkPkg,=

> NetworkPkg/HttpBootDxe, CryptoPkg, MdePkg/Include, SecurityPkg,

> ShellPkg, UnitTestFrameworkPkg, MdePkg/DxeServicesLib, MdeModule= Pkg,

> .python/SpellCheck, BaseTools, .azurepipelines, .pytool, = MdePkg,

> MdeModulePkg and MdePkg/MdePkg.ci.yaml.

>&n= bsp;

> Cc: Ray Ni <ray.ni@intel.com>

> Cc:= Liming Gao <gaoliming@byosoft.com.cn>

&= gt; Cc: Michael D Kinney <michael.d.kinney@intel.co= m>

<= span lang=3DEN-US>> Cc: Guomin Jiang <guomin.jiang@intel= .com>

> Cc: Wei6 Xu <wei6.xu@intel.com>=

> Cc: Maciej Rabeda <maciej.rabeda@lin= ux.intel.com>

> Cc: Jiaxin Wu <jiaxin.wu@intel.= com>

> Cc: Siyuan Fu <siyuan.fu@intel.com&g= t;

> Cc: Jiewen Yao <jiewen.yao@intel.com><= o:p>

> Cc: Jian J Wang <jian.j.wang@intel.com><= o:p>

> Cc: Xiaoyu Lu <xiaoyu1.lu@intel.com><= /o:p>

> Cc: Zhiguang Liu <zhiguang.liu@intel.com>

> Cc: Zhichao Gao <zhichao.gao@intel.com>

> Cc: Bob Feng <bob.c.feng@intel.com>=

&g= t; Cc: Yuwei Chen <yuwei.chen@intel.com>

>&= nbsp;

> Chao Li (34):

> MdePkg: Added file of DebugSu= pport.h to MdePkg.ci.yaml

> MdePkg: Added LoongArch jump buffer = register definition to

> MdePkg.ci.yaml

> FatPkg: Ad= d LOONGARCH64 architecture for EDK2 CI.

> FmpDevicePkg: Add LOON= GARCH64 architecture for EDK2 CI.

> NetworkPkg: Add LOONGARCH64 = architecture for EDK2 CI.

> NetworkPkg/HttpBootDxe: Add LOONGARC= H64 architecture for EDK2 CI.

> CryptoPkg: Add LOONGARCH64 archi= tecture for EDK2 CI.

> MdePkg/Include: Add LOONGARCH related def= initions EDK2 CI.

> SecurityPkg: Add LOONGARCH64 architecture fo= r EDK2 CI.

= > ShellPkg: Add LOONGARCH64 architecture for EDK2 CI.=

> UnitTestFrameworkPkg: Add LOONGARCH64 architecture for EDK2 C= I.

> MdePkg/DxeServicesLib: Add LOONGARCH64 architecture

> MdeModulePkg: Use LockBoxNullLib for LOONGARCH64

> .python= /SpellCheck: Add "Loongson" and "LOONGARCH" to "wo= rds" section

> BaseTools: Update GenFw/GenFv to support Loo= ngArch platform.

> BaseTools: Updated for GCC5 tool chain for Lo= ongArch platfrom.

> BaseTools: Updated build tools to support ne= w LoongArch.

> BaseTools: Add LoongArch64 binding.

> = BaseTools: Enable LoongArch64 architecture for LoongArch64 EDK2 CI.

> .azurepipelines: Add LoongArch64 architecture on LoongArch64 EDK2 CI.=

> .pytool: Add LoongArch64 architecture on LoongArch64 EDK2 CI.=

> MdePkg: Add LoongArch LOONGARCH64 binding

> MdePkg= /Include: LoongArch definitions.

> MdePkg/BaseLib: BaseLib for L= OONGARCH64 architecture.

> MdePkg/BaseCacheMaintenanceLib: Loong= Arch cache maintenance

> implementation.

<= /div>

> MdePkg/Ba= seIoLibIntrinsic: IoLibNoIo for LoongArch architecture.

> MdePkg= /BasePeCoff: Add LoongArch PE/Coff related code.

> MdePkg/BaseCp= uLib: LoongArch Base CPU library implementation.

> MdePkg/BaseSy= nchronizationLib: LoongArch cache related code.

=

> MdePkg/BaseSaf= eIntLib: Add LoongArch64 architecture for

=

> BaseSafeIntLib.=

> MdeModulePkg/Logo: Add LoongArch64 architecture.=

> MdeM= odulePkg/CapsuleRuntimeDxe: Add LoongArch64 architecture.=

> MdeM= odulePkg/DxeIplPeim : LoongArch DxeIPL implementation.

> Network= Pkg: Add LoongArch64 architecture.

=

> .azurepi= pelines/Ubuntu-GCC5.yml | 3 +-

<= p class=3DMsoNormal>> .pytool/CISettings.py | 5 +-

> .pytool/Plugin/SpellCheck/cspell.base.yaml | 4 +-

> .= ..gcc_loongarch64_unknown_linux_ext_dep.yaml | 22 ++

<= /div>

> BaseTools= /Conf/tools_def.template | 54 +++-

> .../LinuxGcc5ToolChain/Linu= xGcc5ToolChain.py | 31 ++

> BaseTools/Source/C/Common/BasePeCoff= .c | 15 +-

= > BaseTools/Source/C/Common/PeCoffLoaderEx.c | 79 +++= ++

> BaseTools/Source/C/GNUmakefile | 3 +

<= /div>

> BaseTools= /Source/C/GenFv/GenFvInternalLib.c | 125 +++++++-

> BaseTools/So= urce/C/GenFw/Elf64Convert.c | 293 +++++++++++++++++-

<= /div>

> BaseTools= /Source/C/GenFw/elf_common.h | 94 ++++++

<= div>

> .../C/Include/Industr= yStandard/PeImage.h | 57 ++--

> .../C/Include/LoongArch64/Proces= sorBind.h | 80 +++++

> BaseTools/Source/C/Makefiles/header.makef= ile | 6 +

<= span lang=3DEN-US>> BaseTools/Source/Python/Common/DataType.py | 21 +-

> .../Source/Python/UPT/Library/DataType.py | 24 +-<= /span>

>= ; BaseTools/Source/Python/build/buildoptions.py | 3 +-

> CryptoP= kg/CryptoPkg.dsc | 3 +-

> .../Library/BaseCryptLib/BaseCryptLib.= inf | 6 +-

= > .../Library/BaseCryptLib/RuntimeCryptLib.inf | 4 +<= o:p>

> .../BaseCryptLibNull/BaseCryptLibNull.inf | 3 +-

>= .../BaseCryptLibOnProtocolPpi/DxeCryptLib.inf | 3 +-

=

> .../Base= CryptLibOnProtocolPpi/PeiCryptLib.inf | 3 +-

> CryptoPkg/Library= /Include/CrtLibSupport.h | 3 +-

=

> CryptoPkg/Library/OpensslLib/O= pensslLib.inf | 2 +

> .../Library/OpensslLib/OpensslLibCrypto.in= f | 2 +

> CryptoPkg/Library/TlsLib/TlsLib.inf | 3 +-<= /span>

>= ; CryptoPkg/Library/TlsLibNull/TlsLibNull.inf | 3 +-

<= /div>

> FatPkg/Fa= tPkg.dsc | 3 +-

> FmpDevicePkg/FmpDevicePkg.dsc | 3 +-

&= gt; MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf | 6 +-

> .../Core/Dx= eIplPeim/LoongArch64/DxeLoadFunc.c | 63 ++++

> MdeModulePkg/Logo= /Logo.inf | 3 +-

> MdeModulePkg/MdeModulePkg.dsc | 4 +-

= > .../CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf | 9 +-

> MdePkg= /Include/IndustryStandard/Dhcp.h | 45 +--

=

> MdePkg/Include/Indus= tryStandard/PeImage.h | 9 +

> MdePkg/Include/Library/BaseLib.h |= 24 ++

> MdePkg/Include/LoongArch64/ProcessorBind.h | 120 ++++++= +

> MdePkg/Include/Protocol/DebugSupport.h | 107 ++++++-

> MdePkg/Include/Protocol/PxeBaseCode.h | 3 +

> MdePkg/Inclu= de/Uefi/UefiBaseType.h | 14 +

> MdePkg/Include/Uefi/UefiSpec.h |= 16 +-

> .../BaseCacheMaintenanceLib.inf | 6 +-

> ...= /BaseCacheMaintenanceLib/LoongArchCache.c | 254 +++++++++++++++<= /span>

>= ; MdePkg/Library/BaseCpuLib/BaseCpuLib.inf | 7 +-

> MdePkg/Libra= ry/BaseCpuLib/BaseCpuLib.uni | 5 +-

<= div>

> .../BaseCpuLib/LoongArch/C= puFlushTlb.S | 15 +

> .../Library/BaseCpuLib/LoongArch/CpuSleep.= S | 15 +

> .../BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf | 10 +-=

> MdePkg/Library/BaseIoLibIntrinsic/IoLibNoIo.c | 3 +-

= > MdePkg/Library/BaseLib/BaseLib.inf | 16 +-

=

> MdePkg/Library= /BaseLib/LoongArch64/Barrier.S | 28 ++

> .../BaseLib/LoongArch64= /CpuBreakpoint.S | 24 ++

> MdePkg/Library/BaseLib/LoongArch64/Cp= uPause.S | 31 ++

> .../BaseLib/LoongArch64/DisableInterrupts.S |= 21 ++

> .../BaseLib/LoongArch64/EnableInterrupts.S | 21 ++=

> .../BaseLib/LoongArch64/GetInterruptState.S | 35 +++

> = .../BaseLib/LoongArch64/InternalSwitchStack.c | 58 ++++

> .../Li= brary/BaseLib/LoongArch64/MemoryFence.S | 18 ++

=

> .../BaseLib/Lo= ongArch64/SetJumpLongJump.S | 49 +++

=

> .../Library/BaseLib/Loong= Arch64/SwitchStack.S | 39 +++

> MdePkg/Library/BasePeCoffLib/Bas= ePeCoff.c | 3 +-

> .../Library/BasePeCoffLib/BasePeCoffLib.inf |= 5 +

> .../Library/BasePeCoffLib/BasePeCoffLib.uni | 2 +

> .../BasePeCoffLib/LoongArch/PeCoffLoaderEx.c | 137 ++++++++

&= gt; .../Library/BaseSafeIntLib/BaseSafeIntLib.inf | 9 +-<= /p>

> .../B= aseSynchronizationLib.inf | 6 +

=

> .../LoongArch64/AsmSynchroniza= tion.S | 122 ++++++++

> .../LoongArch64/Synchronization.c | 23= 3 ++++++++++++++

> .../Library/DxeServicesLib/DxeServicesLib.inf= | 4 +-

> MdePkg/MdePkg.ci.yaml | 13 +

> MdePkg/MdePk= g.dec | 4 +

> MdePkg/MdePkg.dsc | 3 +-

> NetworkPkg/H= ttpBootDxe/HttpBootDhcp4.h | 3 +

> NetworkPkg/Network.dsc.inc | = 3 +-

> NetworkPkg/NetworkPkg.dsc | 3 +-

> SecurityPkg= /SecurityPkg.dsc | 3 +-

> ShellPkg/ShellPkg.dsc | 3 +-

&= gt; UnitTestFrameworkPkg/UnitTestFrameworkPkg.dsc | 3 +-<= /p>

> 81 fi= les changed, 2478 insertions(+), 119 deletions(-)

> create mode = 100644 BaseTools/Bin/gcc_loongarch64_unknown_linux_ext_dep.yaml<= /span>

>= ; create mode 100644 BaseTools/Source/C/Include/LoongArch64/ProcessorBind.h=

> create mode 100644 MdeModulePkg/Core/DxeIplPeim/LoongArch64/D= xeLoadFunc.c

> create mode 100644 MdePkg/Include/LoongArch64/Pro= cessorBind.h

> create mode 100644 MdePkg/Library/BaseCacheMainte= nanceLib/LoongArchCache.c

> create mode 100644 MdePkg/Library/Ba= seCpuLib/LoongArch/CpuFlushTlb.S

> create mode 100644 MdePkg/Lib= rary/BaseCpuLib/LoongArch/CpuSleep.S

=

> create mode 100644 MdePkg= /Library/BaseLib/LoongArch64/Barrier.S

> create mode 100644 MdeP= kg/Library/BaseLib/LoongArch64/CpuBreakpoint.S

<= /div>

> create mode 100= 644 MdePkg/Library/BaseLib/LoongArch64/CpuPause.S

> create mode = 100644 MdePkg/Library/BaseLib/LoongArch64/DisableInterrupts.S

> = create mode 100644 MdePkg/Library/BaseLib/LoongArch64/EnableInterrupts.S

> create mode 100644 MdePkg/Library/BaseLib/LoongArch64/GetInterru= ptState.S

<= span lang=3DEN-US>> create mode 100644 MdePkg/Library/BaseLib/LoongArch6= 4/InternalSwitchStack.c

> create mode 100644 MdePkg/Library/Base= Lib/LoongArch64/MemoryFence.S

> create mode 100644 MdePkg/Librar= y/BaseLib/LoongArch64/SetJumpLongJump.S

> create mode 100644 Mde= Pkg/Library/BaseLib/LoongArch64/SwitchStack.S

> create mode 1006= 44 MdePkg/Library/BasePeCoffLib/LoongArch/PeCoffLoaderEx.c

> cre= ate mode 100644 MdePkg/Library/BaseSynchronizationLib/LoongArch64/AsmSynchr= onization.S

> create mode 100644 MdePkg/Library/BaseSynchronizat= ionLib/LoongArch64/Synchronization.c

=

> --

> 2.27.0

<= div>

 

 

<= div>

=E6=9C=AC=E9=82=AE=E4=BB=B6=E5=8F=8A=E5=85=B6=E9= =99=84=E4=BB=B6=E5=90=AB=E6=9C=89=E9=BE=99=E8=8A=AF=E4=B8=AD=E7=A7=91=E7=9A= =84=E5=95=86=E4=B8=9A=E7=A7=98=E5=AF=86=E4=BF=A1=E6=81=AF=EF=BC=8C=E4=BB=85= =E9=99=90=E4=BA=8E=E5=8F=91=E9=80=81=E7=BB=99=E4=B8=8A=E9=9D=A2=E5=9C=B0=E5= =9D=80=E4=B8=AD=E5=88=97=E5=87=BA=E7=9A=84=E4=B8=AA=E4=BA=BA=E6=88=96=E7=BE= =A4=E7=BB=84=E3=80=82=E7=A6=81=E6=AD=A2=E4=BB=BB=E4=BD=95=E5=85=B6=E4=BB=96= =E4=BA=BA=E4=BB=A5=E4=BB=BB=E4=BD=95=E5=BD=A2=E5=BC=8F=E4=BD=BF=E7=94=A8=EF= =BC=88=E5=8C=85=E6=8B=AC=E4=BD=86=E4=B8=8D=E9=99=90=E4=BA=8E=E5=85=A8=E9=83= =A8=E6=88=96=E9=83=A8=E5=88=86=E5=9C=B0=E6=B3=84=E9=9C=B2=E3=80=81=E5=A4=8D= =E5=88=B6=E6=88=96=E6=95=A3=E5=8F=91=EF=BC=89=E6=9C=AC=E9=82=AE=E4=BB=B6=E5= =8F=8A=E5=85=B6=E9=99=84=E4=BB=B6=E4=B8=AD=E7=9A=84=E4=BF=A1=E6=81=AF=E3=80= =82=E5=A6=82=E6=9E=9C=E6=82=A8=E9=94=99=E6=94=B6=E6=9C=AC=E9=82=AE=E4=BB=B6= =EF=BC=8C=E8=AF=B7=E6=82=A8=E7=AB=8B=E5=8D=B3=E7=94=B5=E8=AF=9D=E6=88=96=E9= =82=AE=E4=BB=B6=E9=80=9A=E7=9F=A5=E5=8F=91=E4=BB=B6=E4=BA=BA=E5=B9=B6=E5=88= =A0=E9=99=A4=E6=9C=AC=E9=82=AE=E4=BB=B6=E3=80=82

This email and its attachments contain confidential information from Loong= son Technology , which is intended only for the person or entity whose addr= ess is listed above. Any use of the information contained herein in any way= (including, but not limited to, total or partial disclosure, reproduction = or dissemination) by persons other than the intended recipient(s) is prohib= ited. If you receive this email in error, please notify the sender by phone= or email immediately and delete it.

=

 

<= /div>

 

3D"Sent

=
------=_NextPart_000_03C7_01D8DFB1.CFA349A0--