Intel® IXP400 Software
Endianness in Intel® IXP400 Software
April 2005 IXP400 Software Version 2.0 Programmer’s Guide
354 Document Number: 252539, Revision: 007
When adding support for Little-Endian, there were two factors taken into account in deciding
where to use Address Coherency and Data Coherency Little-Endian modes.
1. The initial IXP400 software releases and Board Support Packages were all Big-Endian.
2. IXP400 software support for Little-Endian was required to operate on all the supported Little-
Endian operating systems.
The implications of this can be seen in two key Little-Endian implementation decisions.
1. The Little-Endian VxWorks Board Support Package uses Address Coherency. One of the
properties of Address Coherency is that 32-bit accesses do not need to be swapped. Most of
the processor register accesses in the BSP are 32-bit accesses, so it made sense to port the
existing Big-Endian BSP to Address Coherant Little-Endian.
2. The IXP400 software Little-Endian implementation uses Data Coherency and all memory is
mapped as Data Coherent. We did not want to have different Little-Endian implementations of
the IXP400 software for the different operating systems supported, and therefore chose Data
Coherency as the common implementation for all currently supported operating systems.
It should be noted that the IXP400 software Little-Endian implementation is designed in such a
way that the coherency mode for any Access-Layer component can be changed if desired. The
same is true for the memory map. There is no restriction placed on mapping memory as either
Address or Data Coherent once that model is facilitated by the chosen operating-system MMU
requirements. The choice of coherency mode is principally determined by the way the Operating
System uses the memory management unit.
The files to consult within the IXP400 software are:
\ixp_osal\include\modules\ioMem\IxOsalIoMem.h
\ixp_osal\include\modules\ioMem\IxOsalMemAccess.h
\ixp_osal\include\modules\ioMem\IxOsalEndianess.h
\ixp_osal\os\vxworks\include\platforms\ixp400\IxOsalOsIxp400CustomizedMapping.h
\ixp_osal\os\linux\include\platforms\ixp400\IxOsalOsIxp400CustomizedMapping.h
The remainder of this chapter details the processor Little-Endian implementation . It identifies the
appropriate coherency mode per hardware component and explains the implications of each
selection. It also contains a detailed look at the implications of the various endianness modes and
how they relate to TCP/IP stack expectations.
Details on every component are not included, but an overview of certain components is included to
provide insight on which coherency modes are used. Further details on the currently supported
modes of each component are available in the code comments included in the IXP400 software.
Note: Linux Little-Endian support utilizes the existing IXP400 software components, principally using
the same VxWorks modifications as documented in following sections. Other changes are
contained within the Linux board support package.
27.5.1 APB Peripherals
The Advanced Peripheral Bus (APB) provides access to the following peripherals:
Blocks specific to BSP
—UARTs