LDS/LES/LFS/LGS/LSS—Load Far Pointer (Continued)
SS SegmentDescriptor([SRC]);
ELSE IF DS, ES, FS, or GS is loaded with non-null segment selector
THEN IF Segment selector index is not within descriptor table limits
OR Access rights indicate segment neither data nor readable code segment
OR (Segment is data or nonconforming-code segment
FI;
ELSE IF Segment marked not present
FI;
SegmentRegister SegmentSelector(SRC) AND RPL;
SegmentRegister SegmentDescriptor([SRC]);
ELSE IF DS, ES, FS or GS is loaded with a null selector:
SegmentRegister NullSelector;
SegmentRegister(DescriptorValidBit) 0; (*hidden flag; not accessible by software*)
FI;
FI;
IF (Real-Address or Virtual 8086 Mode)
THEN
SS SegmentSelector(SRC);
FI;
DEST Offset(SRC);
Flags Affected
None.
Additional Itanium System Environment Exceptions
Itanium Reg Faults NaT Register Consumption Abort.
Itanium Mem FaultsVHPT Data Fault, Nested TLB Fault, Data TLB Fault, Alternate Data
Protected Mode Exceptions
#UD
#GP(0)
#GP(selector)
4:256
AND both RPL and CPL > DPL)
THEN #GP(selector);
THEN #NP(selector);
TLB Fault, Data Page Not Present Fault, Data NaT Page Consumption
Abort, Data Key Miss Fault, Data Key Permission Fault, Data Access
Rights Fault, Data Access Bit Fault, Data Dirty Bit Fault
If source operand is not a memory location.
If a null selector is loaded into the SS register.
If a memory operand effective address is outside the CS, DS, ES, FS,
or GS segment limit.
If the DS, ES, FS, or GS register is used to access memory and it
contains a null segment selector.
If the SS register is being loaded and any of the following is true:
the segment selector index is not within the descriptor table limits,
the segment selector RPL is not equal to CPL, the segment is a
nonwritable data segment, or DPL is not equal to CPL.
Volume 4: Base IA-32 Instruction Reference