Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 10 Jan 2002 20:45:55 -0700 (MST)
From:      "M. Warner Losh" <imp@village.org>
To:        tmoestl@gmx.net
Cc:        freebsd-arch@FreeBSD.ORG
Subject:   Re: adding more endian conversion and bus space functions
Message-ID:  <20020110.204555.14845956.imp@village.org>
In-Reply-To: <20020111005207.GA7246@crow.dom2ip.de>
References:  <20020111005207.GA7246@crow.dom2ip.de>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <20020111005207.GA7246@crow.dom2ip.de>
            Thomas Moestl <tmoestl@gmx.net> writes:
: I'd like to propose some additions to the kernel endian conversion and
: bus space functions to aid the sparc64 port, taken from NetBSD:
: 
: 1. htobe16(), htobe32(), htobe64(), htole16(), htole32(), htole64()
:    be16toh(), be32toh(), be64toh(), le16toh(), le32toh() and le64toh(),
:    to convert from the host byte order to big or little endian order
:    and vice versa.
: 2. bswap16(), bswap32() and bswap64() to swap the endianess. The above
:    functions could be implemented using these.

I think this is an excellent idea.  We have some of the *le* functions
defined in the wi driver now.

: 3. stream variants of the bus space access functions; these become
:    needed in the case where a bus system uses another endianess than
:    the process, as is the case with PCI on sparc64. The normal bus
:    space functions will perform byte-swapping as appropriate to convert
:    the data to the host byte order (supported by hardware on sparc64).
:    However if 16- or 32-bit accesses are used for stream data,
:    i.e. data that should not be byte-swapped, these functions need be
:    used instead.
:    These will simply be defined to their non-stream counterparts on
:    architectures where bus and processor byte order do not differ,
:    i.e. all other currently supported architectures. 

I think this may be a good thing...

: I would also like to make most of the machine/endian.h files MI, as
: sys/endian.h. The only thing that the MD files would still contain are
: the definintion of BYTE_ORDER and inline implementations of some
: functions. sys/endian.h would implemented the interfaces listed in 1.
: as well as htonl and friends for both BYTE_ORDERs.

I think that is a good idea.

Warner

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020110.204555.14845956.imp>