AMD CS5536 Computer Hardware User Manual


 
14 AMD Geode™ LX Processor/CS5536 Companion Device GeodeROM Porting Guide
GeodeLink™ Architecture
40680B
3.1 GeodeLink™ MSR Addressing
The Geode LX processor’s MSRs are addressed from the source module to the port of the target module. The topology of
the processor must be understood to derive the address. An MSR address is parsed into two fields, the port address (18
bits) and the index (14 bits). The port address is further parsed into six 3-bit channel address fields. Each 3-bit field repre-
sents, from the perspective of the source module, the GLIU channels that are used to get to the destination module, starting
from the closest GLIU to the source (left most 3-bit field), to the farthest GLIU (right most 3-bit field). When the GLIU gets
the cycle, it reads the three MSBs of the address register, shifts those three bits of the 18 MSBs of the address register off,
and passes the transaction to the port indicated by the next three bits.
MSR addresses that are outside the module address spaces are invalid; meaning RDMSR/WRMSR instructions attempting
to use the address within the CPU core will cause a General Protection Fault. Unimplemented MSR accesses not in periph-
eral modules go to the bit bucket.
3.1.1 Addressing Example
LX Processor GeodeLink Modules/Addresses
Source: CPU Core -> Destination: GeodeLink Control Processor (GLCP)
2.3.0.0.0.0 -> 4C00xxxxh
CS5536 Companion Device GeodeLink Module/Addresses
Source: CPU Core -> Destination: SB_GLCP
2.4.2.7.0.0 -> 5170xxxxh
GLPCI acts like another GLIU
3.2 Descriptors
Descriptors are used to route memory or I/O resources through GLIUs to a processor module. Memory and I/O addresses
that do not have descriptors are subtractively decoded through the GLIUs and out to the PCI. It is important that no descrip-
tors overlap each other. The result is indeterminate.
3.2.1 Memory Descriptor Types
Range - Covers a memory range in 4 KB granularity.
Range Offset - Covers a memory range in 4 KB granularity with the destination address translated by an offset.
Base Mask - Covers a memory range that is a power of 2 in size.
Base Mask Offset - Covers a memory range that is a power of 2 in size with the destination address translated by an
offset.
Swiss Cheese - Covers a 256 KB region split into 16 KB pieces to a module or the subtractive port.
3.2.2 I/O Descriptor Types
Base Mask - Covers an I/O range that is a power of 2 in size.
Swiss Cheese - Covers an 8-byte region split into 1-byte pieces to a module or the subtractive port.