
NXP Semiconductors
PNX15xx/952x Series
Volume 1 of 1
Chapter 29: Endian Mode
PNX15XX_PNX952X_SER_N_4
NXP B.V. 2007. All rights reserved.
Product data sheet
Rev. 4.0 — 03 December 2007
29-805
The TM3260 CPU on the PNX15xx/952x Series both support 8, 16 and 32-bit data
types and a memory system that is byte addressable. The CPU support a big-endian
and little-endian mode of operation. The effect of a CPU store instruction on memory
is dened in
Table 1. As an example, a 16-bit store operation always stores the 16-bit
quantity contained in the 16 lsbits of the CPU register. And the memory locations
affected are “a” and “a+1.” But which byte goes where is dependent upon endian
mode.
The effect of a CPU load instruction on a register is dened for unsigned and signed
loads in
Table 2 and
Table 3. Note that a load always sets all bits of the CPU register.
In the case of an unsigned load, higher order bits are lled with zeroes. In the case of
a signed load, higher order bits are lled with the sign bit of the data item loaded.
Figure 3:
Little-Endian Layout of DMA_Descriptor
Table 1: Memory Result of a Store to Address ‘a(chǎn)’ Instruction
Endian
Mode
R13
Content
Data
Size
Result of Storesize(R13, Address a)
little
0x04050607
8 bits
m[a] = 0x07
little
0x04050607
16 bits
m[a] = 0x07; m[a+1] = 0x06
little
0x04050607
32 bits
m[a] = 0x07; m[a+1] = 0x06; m[a+2] = 0x05; m[a+3] = 0x04
big
0x04050607
8 bits
m[a] = 0x07
big
0x04050607
16 bits
m[a] = 0x06; m[a+1] = 0x07
big
0x04050607
32 bits
m[a] = 0x04; m[a+1] = 0x05; m[a+2] = 0x06; m[a+3] = 0x07
C
F
L
A
0
1
2
4
Word 2
Word 1
Table 2: Register Result of an (Unsigned) Load Instruction
Memory Content
Endian
Mode
Data Size
Register Value Result of
Loadsize(Address a)
m[a] = 0xAA; m[a+1] = 0xBB; m[a+2] = 0xCC; m[a+3] = 0xDD
little
8 bits
0x000000AA
m[a] = 0xAA; m[a+1] = 0xBB; m[a+2] = 0xCC; m[a+3] = 0xDD
little
16 bits
0x0000BBAA
m[a] = 0xAA; m[a+1] = 0xBB; m[a+2] = 0xCC; m[a+3] = 0xDD
little
32 bits
0xDDCCBBAA
m[a] = 0xAA; m[a+1] = 0xBB; m[a+2] = 0xCC; m[a+3] = 0xDD
big
8 bits
0x000000AA
m[a] = 0xAA; m[a+1] = 0xBB; m[a+2] = 0xCC; m[a+3] = 0xDD
big
16 bits
0x0000AABB
m[a] = 0xAA; m[a+1] = 0xBB; m[a+2] = 0xCC; m[a+3] = 0xDD
big
32 bits
0xAABBCCDD