Date: Tue, 21 Aug 2012 13:26:55 +0200 From: Marius Strobl <marius@alchemy.franken.de> To: Warner Losh <imp@bsdimp.com> Cc: Wojciech Puchar <wojtek@wojtek.tensor.gdynia.pl>, freebsd-net@freebsd.org, Mitya <mitya@cabletv.dp.ua>, freebsd-hackers@freebsd.org Subject: Re: Replace bcopy() to update ether_addr Message-ID: <20120821112655.GA90066@alchemy.franken.de> In-Reply-To: <5452BF37-3658-4C1F-B965-CE3EA28B6EA5@bsdimp.com> References: <50324DB4.6080905@cabletv.dp.ua> <alpine.BSF.2.00.1208201844220.35173@wojtek.tensor.gdynia.pl> <B2BB7724-57A9-40C9-AE9F-FFEC83D9DE9A@bsdimp.com> <alpine.BSF.2.00.1208202117230.19372@wojtek.tensor.gdynia.pl> <5452BF37-3658-4C1F-B965-CE3EA28B6EA5@bsdimp.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Aug 20, 2012 at 01:20:29PM -0600, Warner Losh wrote: > > On Aug 20, 2012, at 1:17 PM, Wojciech Puchar wrote: > > >>> or use ++. > >>> > >>> i think it is always aligned to 2 bytes and this should produce usable code on any CPU? should be 6 instructions on MIPS and PPC IMHO. > >> > >> We should tag it as __aligned(2) then, no? If so, then the compiler should generate the code you posted. > > should is the most important word in Your post. what it actually do - i don't know. > > If we are requiring this to be __aligned(2), we should tag it as such to enforce this. > > Even without this tagging, the code to do a structure level copy of 6 bytes is going to be tiny... > While the __aligned(2) approach certainly works, I've actually rather mixed experiences on x86 with it as the compiler doesn't necessarily produce the small and efficient one would expect from code it. Such a change certainly shouldn't be done just on the assumption that the compiler has all hints required to produce good code from it but the resulting asm should be verified across all affected architectures. Marius
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120821112655.GA90066>