Replace bcopy() to update ether_addr

Warner Losh imp at bsdimp.com
Tue Aug 21 14:31:07 UTC 2012


On Aug 21, 2012, at 5:26 AM, Marius Strobl wrote:

> 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.

Very true...  I would have thought that went without saying...

Warner


More information about the freebsd-net mailing list