Hardware Reference Manual 173
Intel
®
IXP2800 Network Processor
Microengines
It is also possible to make use of both or one LM_Addrs as global by setting
CTX_Enable[LM_Addr_0_Global] and/or CTX_Enable[LM_Addr_1_Global]. When used
globally, all Contexts use the working copy of LM_Addr in place of their own Context specific
one; the Context specific ones are unused.
4.1.4 Addressing Modes
GPRs can be accessed in two different addressing modes: Context-Relative and Absolute. Some
instructions can specify either mode; other instructions can specify only Context-Relative mode.
• Transfer and Next Neighbor registers can be accessed in Context-Relative and Indexed modes.
• Local Memory is accessed in Indexed mode.
• The addressing mode in use is encoded directly into each instruction, for each source and
destination specifier.
4.1.4.1 Context-Relative Addressing Mode
The GPRs are logically subdivided into equal regions such that each Context has exclusive access
to one of the regions. The number of regions (four or eight) is configured in the CTX_Enable CSR.
Thus, a Context-Relative register name is actually associated with multiple different physical
registers. The actual register to be accessed is determined by the Context making the access request
(the Context number is concatenated with the register number specified in the instruction — see
Table 57). Context-Relative addressing is a powerful feature that enables eight different contexts to
share the same microcode, yet maintain separate data.
Table 57 shows how the Context number is used in selecting the register number in relative mode.
The register number in Table 57 is the Absolute GPR address, or Transfer or Next Neighbor Index
number to use to access the specific Context-Relative register. For example, with eight active
Contexts, Context-Relative Register 0 for Context 2 is Absolute Register Number 32.
Table 57. Registers Used by Contexts in Context-Relative Addressing Mode
Number of
Active
Contexts
Active
Context
Number
GPR
Absolute Register Numbers
S_Transfer or
Neighbor
Index Number
D_Transfer
Index Number
A Port B Port
8
0 0 – 15 0 – 15 0 – 15 0 – 15
1 16 – 31 16 – 31 16 – 31 16 – 31
2 32 – 47 32 – 47 32 – 47 32 – 47
3 48 – 63 48 – 63 48 – 63 48 – 63
4 64 – 79 64 – 79 64 – 79 64 – 79
5 80 – 95 80 – 95 80 – 95 80 – 95
6 96 – 111 96 – 111 96 – 111 96 – 111
7 112 – 127 112 – 127 112 – 127 112 – 127
4
0 0 – 31 0 – 31 0 – 31 0 – 31
2 32 – 63 32 – 63 32 – 63 32 – 63
4 64 – 95 64 – 95 64 – 95 64 – 95
6 96 – 127 96 – 127 96 – 127 96 – 127