N64® Functions Menu

al - Audio Library Functions
gDP - DP GBI Macros
gdSP - General GBI Macros
gSP - SP GBI Macros
gt - Turbo Microcode RDP
gu - Graphics Utilities
Math - Math Functions
nuSys - NuSystem
os - N64 Operating System
sp - Sprite Library Functions
uh - Host to Target IO
64DD - N64 Disk Drive

Nintendo® Confidential





osMapTLB

Syntax

#include <ultra64.h>

void osMapTLB(s32 index, OSPageMask pm, void *vaddr, u32 evenpaddr, u32 oddpaddr, s32 asid);


Explanation
The osMapTLB, osUnmapTLB, osUnmapTLBAll, and osSetTLBASID functions manage CPU virtual address mapping. These calls provide low-level access to the CPU Translation Lookaside Buffer (TLB). The remainder of the CPU virtual address space outside of the direct mapped address spaces KSEG0 and KSEG1 are mapped address spaces that use the TLB to specify the mapping to physical memory on a per-page basis. The CPU TLB consists of 32 entries, which provide mapping to 32 odd/even physical page pairs (64 total pages). Each TLB entry is associated with a particular page size that varies from 4096 bytes to as much as 16 megabytes.

The osMapTLB function sets the TLB entry index, where index ranges from 0 to 31. The pm argument specifies the page size; it can be one of the following defined constants:

   OS_PM_4K    4096 byte page size
   OS_PM_16K   16384 byte page size
   OS_PM_64K   65536 byte page size
   OS_PM_256K  262144 byte page size
   OS_PM_1M    1048576 byte page size
   OS_PM_4M    4194304 byte page size
   OS_PM_16M   16777216 byte page size
The vaddr argument specifies the beginning virtual address to map, and the evenpaddr and oddpaddr arguments specify the corresponding odd and even physical page addresses. A value of -1 for evenpaddr or oddpaddr indicates that no mapping is to be made for the even or odd page, respectively. The asid argument specifies an address space identifier that makes the mappings valid only when a specific address space identifier register is loaded. (See osSetTLBASID.) A value of -1 for asid specifies a global mapping that is always valid. For example, the following call specifies a global mapping of the virtual address range [0x2000, 0x3000] to the physical address range [0xab000, 0xac000] and the virtual address range [0x3000, 0x4000] to the physical address range [0xcd000, 0xce000]:

osMapTLB(0, (void *)0x2000, 0xab000, 0xcd000, -1);

See Also
osMapTLB
osUnmapTLB
osUnmapTLBAll
osSetTLBASID
osVirtualToPhysical



Nintendo® Confidential

Warning: all information in this document is confidential and covered by a non-disclosure agreement. You are responsible for keeping this information confidential and protected. Nintendo will vigorously enforce this responsibility.


Copyright © 1998
Nintendo of America Inc. All rights reserved
Nintendo and N64 are registered trademarks of Nintendo
Last updated March 1998