slbie

Segment Lookaside Buffer Invalidate Entry

slbie RB

Invalidates an SLB entry. Critical for memory management on Power systems.

Encoding

Binary Layout
31
0:5
/
6:10
/
11:15
RB
16:20
434
21:30
/
31
 
Format X-form
Opcode 0x7C000364
Extension Privileged

Operands

  • RB
    Effective Address

Example

slbie r3

// Flush segment translation.

Registers Altered

RB

Related

More in Privileged

Reference

Description

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.

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.