CPU virtual address translation takes place in one of two ways: via direct mapping or through the translation lookaside buffer (TLB). Virtual address translation is explained in the table below. When running in kernel mode (as applications do on the Nintendo 64 platform) the address ranges have the behavior described in Table 9-1.
Beginning | Ending | Name | Behavior |
---|---|---|---|
0x00000000 | 0x7fffffff | KUSEG | TLB mapped |
0x80000000 | 0x9fffffff | KSEG0 | Direct mapped, cached |
0xa0000000 | 0xbfffffff | KSEG1 | Direct mapped, uncached |
0xc0000000 | 0xdfffffff | KSSEG | TLB mapped |
0xe0000000 | 0xffffffff | KSEG3 | TLB mapped |
The KSEG0 address space is expected to be the most widely used, if not only, address space used. In this address space, the physical memory locations corresponding to be KSEG0 address can be determined by stripping off the upper three bits of the virtual address. For example, virtual address 0x80000000 corresponds to physical address 0x0000000, and so on.