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