Sun Microsystems UltraSPARC-I User Manual page 86

Table of Contents

Advertisement

Code Example 6-1
Pseudo-code for
int64 GenerateTSBPointer(
int64 va,
PointerType type, // 8K_POINTER or 64K_POINTER
int64 TSBBase,
Boolean split,
int TSBSize)
{
int64 vaPortion;
int64 TSBBaseMask;
int64 splitMask;
// TSBBaseMask marks the bits from TSB Base Reg
TSBBaseMask = 0xffffffffffffe000 <<
(split? (TSBSize + 1) : TSBSize);
// Shift va towards lsb appropriately and
// zero out the original va page offset
vaPortion = (va >> ((type == 8K_POINTER)? 9: 12)) &
0xfffffffffffffff0;
if (split) {
// There's only one bit in question for split
splitMask = 1 << (13 + TSBSize);
if (type == 8K_POINTER)
// Make sure we're in the lower half
vaPortion &= ~splitMask;
else
// Make sure we're in the upper half
vaPortion |= splitMask;
}
return (TSBBase & TSBBaseMask) | (vaPortion & ~TSBBaseMask);
}
Artisan Technology Group - Quality Instrumentation ... Guaranteed | (888) 88-SOURCE | www.artisantg.com
UltraSPARC
D-MMU Pointer Logic
// Missing virtual address
// TSB Register<63:13> << 13
// TSB Register<12>
// TSB Register<2:0>
6. MMU Internal Architecture
Sun Microelectronics
71

Advertisement

Table of Contents
loading
Need help?

Need help?

Do you have a question about the UltraSPARC-I and is the answer not in the manual?

Questions and answers

Subscribe to Our Youtube Channel

This manual is also suitable for:

Ultrasparc-ii

Table of Contents