From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: None (no SPF record) identity=mailfrom; client-ip=134.134.136.100; helo=mga07.intel.com; envelope-from=ryszard.knop@linux.intel.com; receiver=edk2-devel@lists.01.org Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 29A6C2194D3B8 for ; Wed, 6 Feb 2019 01:46:13 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Feb 2019 01:46:13 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.58,339,1544515200"; d="scan'208";a="144592676" Received: from linux.intel.com ([10.54.29.200]) by fmsmga001.fm.intel.com with ESMTP; 06 Feb 2019 01:46:12 -0800 Received: from torii (torii.igk.intel.com [10.102.24.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by linux.intel.com (Postfix) with ESMTPS id 739025803DC; Wed, 6 Feb 2019 01:46:10 -0800 (PST) Message-ID: From: Ryszard Knop To: Andrew Fish Cc: Ard Biesheuvel , edk2-devel@lists.01.org, "Carsey, Jaben" , Mike Kinney , Harry Hsiung , eric.jin@intel.com, pawel.orlowski@intel.com, kamil.kacperski@intel.com Date: Wed, 06 Feb 2019 10:46:08 +0100 In-Reply-To: <9050A2BF-DB7E-48DA-8C7E-490C1B2F1958@apple.com> References: <20181115023353.20159-1-ard.biesheuvel@linaro.org> <20181115023353.20159-11-ard.biesheuvel@linaro.org> <5d96a29db8d2bc102e1765be3c52bc3cbab3e958.camel@linux.intel.com> <9050A2BF-DB7E-48DA-8C7E-490C1B2F1958@apple.com> Organization: Intel Corporation User-Agent: Evolution 3.30.5 MIME-Version: 1.0 Subject: Re: [PATCH edk2-staging 10/20] IntelUndiPkg/XGigUndiDxe: drop StdLibC library class reference X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Feb 2019 09:46:14 -0000 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Andrew, Unfortunately, not assigning something too large or using math functions is not an option for us, as we share a significant amount of code with Linux/FreeBSD drivers and maintainers of that code don't want changes similar to the ones below (especially that, for all the other drivers, intrinsics just work). Intrinsic lib for IA32 and others would be very much preferred (and one that just works on any architecture, so that we wouldn't have to add extra arch-specific LibraryClasses). Thanks, Richard On Wed, 2019-01-30 at 10:34 -0800, Andrew Fish wrote: > > On Jan 30, 2019, at 9:26 AM, Ryszard Knop < > > ryszard.knop@linux.intel.com> wrote: > > > > That's actually not quite correct - we need this package to build > > on > > IA32. It's named rather unfortunately, since it's not the EDK2 > > StdLibC, > > but rather a package in this repository - see IntelUndiPkg/LibC. It > > contains the bare minimum of functionality required to fix missing > > 64- > > bit math/shifts on IA32 and missing memcpy/memset intrinsics. We > > can't > > prevent MSVC from yielding memcpy/memset either, so this was the > > nasty > > solution for build issues. You have included CompilerIntrinsicsLib > > for > > the same reason, too :) > > > > Ryszard, > > For IA32/X64 we avoid the compiler intrinsic libs via the coding > standard. > 1) If you don't assign something too large at execution time with an > = the compiler will not inline memcpy()/memset() > 2) BaseLib.h has all the math functions that generate intrinsics that > your code can call explicitly: > https://github.com/tianocore/edk2/blob/master/MdePkg/Include/Library/BaseLib.h#L3533 > > UINT64 X=0x100000000; > UINT64 Y=2; > > So: > Y = X*Y; > should be: > Y = MultU64x64 (X, Y); > > When ARM got added much later and some versions of ARM did not even > have a divide instruction we gave up on trying to add more functions > into all the existing IA32 code, and add the intrinsic lib. > > If we are going to add an intrinsic lib for x86 then we should > probably add it to the MdePkg and it needs to support MSVC and GCC > (as far as I can tell clang should work with the GCC intrinsics). > > Thanks, > > Andrew Fish > > > > I'm not aware of any X64/IA32 equivalent of your > > CompilerIntrinsicsLib, > > but I'd be happy to be proven wrong here. I'm off for the rest of > > the > > week - I'll continue with reviews and merging early next week. > > > > Thanks, Richard. > > > > On Wed, 2018-11-14 at 18:33 -0800, ard.biesheuvela wrote: > > > StdLibc should not be used in drivers (it has dependencies on > > > Shell > > > protocols), but in fact, we don't appear to rely on it in the > > > first > > > place, so just drop the reference. > > > > > > Contributed-under: TianoCore Contribution Agreement 1.1 > > > Signed-off-by: Ard Biesheuvel > > > --- > > > IntelUndiPkg/XGigUndiDxe/XGigUndiDxe.inf | 1 - > > > 1 file changed, 1 deletion(-) > > > > > > diff --git a/IntelUndiPkg/XGigUndiDxe/XGigUndiDxe.inf > > > b/IntelUndiPkg/XGigUndiDxe/XGigUndiDxe.inf > > > index beee8aa8134e..b5747565fbea 100644 > > > --- a/IntelUndiPkg/XGigUndiDxe/XGigUndiDxe.inf > > > +++ b/IntelUndiPkg/XGigUndiDxe/XGigUndiDxe.inf > > > @@ -132,7 +132,6 @@ GCC:*_*_*_CC_FLAGS = -DEFI32 > > > PrintLib > > > UefiLib > > > HiiLib > > > - StdLibC > > > > > > [LibraryClasses.X64] > > > > > > > _______________________________________________ > > edk2-devel mailing list > > edk2-devel@lists.01.org > > https://lists.01.org/mailman/listinfo/edk2-devel > >