cvs commit: src/lib/libc/i386/net htonl.S ntohl.S

Ruslan Ermilov ru at FreeBSD.org
Mon Oct 18 11:03:37 PDT 2004


On Mon, Oct 18, 2004 at 10:45:11AM -0700, David O'Brien wrote:
> On Mon, Oct 18, 2004 at 08:35:16PM +0300, Ruslan Ermilov wrote:
> > On Mon, Oct 18, 2004 at 05:19:36PM +0000, David E. O'Brien wrote:
> > > obrien      2004-10-18 17:19:36 UTC
> > >   FreeBSD src repository
> > >   Modified files:
> > >     lib/libc/i386/net    htonl.S ntohl.S 
> > >   Log:
> > >   Sync with sys/i386/include/endian.h: use the single instruction 'bswap'.
> > >   Revision  Changes    Path
> > >   1.10      +4 -0      src/lib/libc/i386/net/htonl.S
> > >   1.10      +4 -0      src/lib/libc/i386/net/ntohl.S
> > :  ENTRY(__htonl)
> > :         movl    4(%esp),%eax
> > : +#ifdef I386_CPU
> > :         xchgb   %al,%ah
> > :         roll    $16,%eax
> > :         xchgb   %al,%ah
> > : +#else
> > : +       bswap   %eax
> > : +#endif
> > :         ret
> > 
> > Ahem, but this makes this code unsuitable for i386.
> 
> Yes.  You missed the discussion in freebsd-current on this?  For
> 6-CURRENT and RELENG_5 running on a real I386 is not supported.
> 
Hmm.  I remember the plan was to decomission the i386 support
only in 6.0-CURRENT, as per sys/i386/conf/NOTES:

# Be sure to disable 'cpu I386_CPU' for SMP kernels.
# I386_CPU is mutually exclusive with the other CPU types.
# I386_CPU is deprecated and will be removed in 6.0-RELEASE.

And

  http://www.freebsd.org/releases/5.2.1R/hardware-i386.html#PROC

says i386 (except 386SX) is still supported.  I recall phk@
looking for the 386DX testers, but I don't remember what was
the result.

If you are burning 6.0-CURRENT bridges already, and this change
is the step in the I386_CPU deprecation direction, why not just
unifdef(1) this libc code, so that the "xchg" is always used?

> > I386_CPU
> > is only defined if kernel config file has "cpu I386_CPU", and
> > this has little relation to libc if at all.
> 
> I know.  Give me some other symbol then we can publish that one should
> add to /etc/make.conf CFLAGS to try to build a userland for an I386.
> "I386_CPU" looks as good a spelling as any and I didn't see any need to
> spell it differently than in the kernel.
> 
You can check for the CPUTYPE="i386" for ${MACHINE_ARCH} == "i386"
in libc/Makefile, and set I386_CPU in CFLAGS in this case.


Cheers,
-- 
Ruslan Ermilov
ru at FreeBSD.org
FreeBSD committer
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/cvs-src/attachments/20041018/3b4f19d5/attachment.bin


More information about the cvs-src mailing list