Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 20 Aug 2012 13:05:51 -0600
From:      Warner Losh <imp@bsdimp.com>
To:        Wojciech Puchar <wojtek@wojtek.tensor.gdynia.pl>
Cc:        freebsd-hackers@freebsd.org, Mitya <mitya@cabletv.dp.ua>, freebsd-net@freebsd.org
Subject:   Re: Replace bcopy() to update ether_addr
Message-ID:  <B2BB7724-57A9-40C9-AE9F-FFEC83D9DE9A@bsdimp.com>
In-Reply-To: <alpine.BSF.2.00.1208201844220.35173@wojtek.tensor.gdynia.pl>
References:  <50324DB4.6080905@cabletv.dp.ua> <alpine.BSF.2.00.1208201844220.35173@wojtek.tensor.gdynia.pl>

next in thread | previous in thread | raw e-mail | index | archive | help

On Aug 20, 2012, at 10:48 AM, Wojciech Puchar wrote:

>> #if defined(__i386__) || defined(__amd64__)
>>   *dst =3D *src;
>> #else
>>   bcopy(src, dst, ETHER_ADDR_LEN);
> #else
> short *tmp1=3D((*short)src),*tmp2=3D((*short)dst);
> *tmp2=3D*tmp1; *(tmp2+1)=3D*(tmp1+1); *(tmp2+2)=3D*(tmp1+2);
>=20
> or use ++.
>=20
> 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.

Warner




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?B2BB7724-57A9-40C9-AE9F-FFEC83D9DE9A>