Encoding:

POOL32A

000000

0

0000000000

TLBR

0001001101

POOL32AXf

111100

6

10

10

6

Format:

TLBR 

microMIPS

Read Indexed TLB Entry

Purpose:

Read Indexed TLB Entry

To read an entry from the TLB.

Description:

The EntryHi, EntryLo0, EntryLo1, and PageMask registers are loaded with the contents of the TLB entry pointed to by the Index register.

TLBR. However, implementations are strongly encouraged to report multiple TLB matches only on a TLB write.

In an implementation supporting TLB entry invalidation (Config4IE >= 1), reading an invalidated TLB entry causes

EntryLo0 and EntryLo1 to be set to 0, EntryHiEHINV to be set to 1, all other EntryHi bits to be set to 0, and

PageMask to be set to a value representing the minimum supported page size..

The value written to the EntryHi, EntryLo0, and EntryLo1 registers may be different from the original written value to the TLB via these registers in that:

The value returned in the VPN2 field of the EntryHi register may have those bits set to zero corresponding to the

The value returned in the PFN field of the EntryLo0 and EntryLo1 registers may have those bits set to zero cor-

The value returned in the G bit in both the EntryLo0 and EntryLo1 registers comes from the single G bit in the

Restrictions:

The operation is UNDEFINED if the contents of the Index register are greater than or equal to the number of TLB entries in the processor.

If access to Coprocessor 0 is not enabled, a Coprocessor Unusable Exception is signaled. Release 6: Processors that include a Block Address Translation (BAT) or Fixed Mapping (FM) MMU (ConfigMT = 2 or 3), the operation of this instruction causes a Reserved Instruction exception (RI).

Operation:

i = Index
if i > (TLBEntries - 1) then
   UNDEFINED
endif
if ( (Config4IE >= 1) and TLB[i]VPN2_invalid = 1) then
   PagemaskMask = 0 // or value representing minimum page size
   EntryHi = 0
   EntryLo1 = 0
   EntryLo0 = 0
   EntryHiEHINV = 1
else
   PageMaskMask = TLB[i]Mask
   EntryHi = TLB[i]R || 0Fill ||
             (TLB[i]VPN2 and not TLB[i]Mask) || # Masking implem dependent
             05 || TLB[i]ASID
   EntryLo1 = 0Fill ||
             (TLB[i]PFN1 and not TLB[i]Mask) || # Masking mplem dependent
             TLB[i]C1 || TLB[i]D1 || TLB[i]V1 || TLB[i]G
   EntryLo0 = 0Fill ||
          (TLB[i]PFN0 and not TLB[i]Mask) || # Masking mplem dependent
          TLB[i]C0 || TLB[i]D0 || TLB[i]V0 || TLB[i]G
endif

Exceptions:

Coprocessor Unusable, Machine Check