|
COP0 010000 |
CO 1 |
0 000 0000 0000 0000 0000 |
TLBWI 000010 |
|
6 |
1 |
19 |
6 |
TLBWI |
MIPS32 |
Write Indexed TLB Entry |
Write Indexed TLB Entry
To write a TLB entry indexed by the Index register.
The TLBWI instruction is unmodiied from the base architecture, except in an implementation supporting GuestID:
When executing in Guest mode, GuestCtl1ID is written in the guest TLB entry.
When executing in Root mode GuestCtl1RID is written in the root TLB entry.
It is expected that a Guest entry in the Root TLB must have its Global(G) bit set to 1 on a TLB write. This is because the ASID ield is not applicable for a Guest entry in the Root TLB.
If EHINV is implemented, the TLBWI instruction also acts as an explicit TLB entry invalidate operation. The TLB entry pointed to by the Index register is marked invalid when EntryHIEHINV=1.
When EntryHIEHINV=1, no machine check generating error conditions exist.
Unmodiied from the base architecture.
if IsCoprocessorEnabled(0) then
i = Index
if ( Config4IE >= 2) then
TLB[i]hardware_invalid = 0
if (EntryHIEHINV=1) then
TLB[i]hardware_invalid = 1
endif
endif
TLB[i]Mask = PageMaskMask
TLB[i]R = EntryHiR
TLB[i]VPN2 = EntryHiVPN2 and not PageMaskMask # Implementation dependent
TLB[i]ASID = EntryHiASID
if (GuestCtl0G1) then
if ((GuestCtl0RAD=0) and IsRootMode() and (GuestCtl1RID != 0))
TLB[i]G = 1
else
TLB[i]G = EntryLo1G and EntryLo0G
endif
else
TLB[i]G = EntryLo1G and EntryLo0G
endif
if ( IsRootMode() ) then
TLB[i]GuestID = GuestCtl1RID
TLB[i]GuestID = GuestCtl1ID
endif
TLB[i]PFN1 = EntryLo1PFN and not PageMaskMask # Implementation dependent
TLB[i]C1 = EntryLo1C
TLB[i]D1 = EntryLo1D
TLB[i]V1 = EntryLo1V
TLB[i]PFN0 = EntryLo0PFN and not PageMaskMask # Implementation dependent
TLB[i]C0 = EntryLo0C
TLB[i]D0 = EntryLo0D
TLB[i]V0 = EntryLo0V
else
SignalException(CoprocessorUnusable, 0)
endif
Unmodiied from the base architecture.