slbie
Segment Lookaside Buffer Invalidate Entry
Invalidates an SLB entry. Critical for memory management on Power systems.
Details
The instruction terminates any Segment Table walks being performed on behalf of the thread that executes it. The hardware ignores the contents of RB listed below, and software must set them to 0s.
Pseudocode Operation
if 'slbie' then
RB0:35 ← (RB)0:35
if, for SLB entry that translates or most recently translated ea,
entry_class = (RB)36 and entry_seg_size = size specified in (RB)37:38,
then for SLB entry (if any) that translates ea
SLBEV ←0
all other fields of SLBE ←undefined
else
s ←log_base_2(entry_seg_size)
esid ←(RB)0:63-s
u ←undefined 1-bit value
if u then
if an SLB entry translates esid
SLBEV ←0
all other fields of SLBE ←undefined
Programming Note
slbie does not affect SLBs on other threads. The class value specified by slbie must be the same as the Class value that is or was in the relevant SLB entry. The reason for this is that the hardware may use these values to optimize invalidation of implementation-specific lookaside information used in address translation. If the value specified by slbie differs from the value that is or was in the relevant SLB entry, these optimizations may produce incorrect results. When switching tasks in certain cases, it may be advantageous to preserve some implementation-specific lookaside entries while invalidating others. The slbia instruction specifying IH value 0b001 or 0b011 can be used for this purpose if SLB class values are appropriately assigned.
Example
Encoding
Operands
-
RB
Effective Address