User’s Manual

IBM PowerPC 750GX and 750GL RISC Microprocessor

5.4.6 Page Table Updates

When TLBs are implemented (as in the 750GX), they are defined as noncoherent caches of the page tables. TLB entries must be flushed explicitly with the TLB invalidate entry instruction (tlbie) whenever the corresponding PTE is modified. As the 750GX is intended primarily for uniprocessor environments, it does not provide coherency of TLBs between multiple processors. If the 750GX is used in a multiprocessor environment where TLB coherency is required, all synchronization must be implemented in software.

Processors can write referenced and changed bits with unsynchronized, atomic byte store operations. Note that the valid (V), R, and C bits each reside in a distinct byte of a PTE. Therefore, extreme care must be taken to use byte writes when updating only one of these bits.

Explicitly altering certain MSR bits (using the mtmsr instruction), or explicitly altering PTEs, or certain system registers, can have the side effect of changing the effective or physical addresses from which the current instruction stream is being fetched. This kind of side effect is defined as an implicit branch. Implicit branches are not supported, and an attempt to perform one causes boundedly-undefined results. Therefore, PTEs must not be changed in a manner that causes an implicit branch.

Chapter 2, “PowerPC Register Set” in the PowerPC Microprocessor Family: The Programming Environments Manual lists the possible implicit branch conditions that can occur when system registers and MSR bits are changed.

5.4.7 Segment Register Updates

Synchronization requirements for using the Move-to Segment Register instructions are described in “Synchronization Requirements for Special Registers and for Lookaside Buffers” in Chapter 2, “PowerPC Register Set” in the PowerPC Microprocessor Family: The Programming Environments Manual.

gx_05.fm.(1.2)

Memory Management

March 27, 2006

Page 207 of 377