slbie

Segment Lookaside Buffer Invalidate Entry

slbie RB

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

slbie r3

Encoding

Binary Layout
31
0
/
6
/
30
RB
31
434
/
 
Format X-form
Opcode 0x7C000364
Extension Privileged
Registers Altered RB

Operands

  • RB
    Effective Address