Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B, Instruction Set Reference, N-Z

Vol. 2B 4-261
INSTRUCTION SET REFERENCE, N-Z
information also loaded *)
CS(RPL) CPL;
ESP ESP + SRC; (* Release parameters from called procedure’s stack *)
tempESP Pop();
tempSS Pop(); (* 32-bit pop, high-order 16 bits discarded, segment descriptor
information also loaded *)
ESP tempESP;
SS tempSS;
ELSE
IF OperandSize = 16
THEN
EIP Pop();
EIP EIP AND 0000FFFFH;
CS Pop(); (* 16-bit pop; segment descriptor information also loaded *)
CS(RPL) CPL;
ESP ESP + SRC; (* release parameters from called
procedure’s stack *)
tempESP Pop();
tempSS Pop(); (* 16-bit pop; segment descriptor information loaded *)
ESP tempESP;
SS tempSS;
ELSE (* OperandSize
= 64 *)
RIP Pop();
CS Pop(); (* 64-bit pop; high-order 48 bits discarded; segment
descriptor information loaded *)
CS(RPL) CPL;
ESP ESP + SRC; (* Release parameters from called procedure’s
stack *)
tempESP Pop();
tempSS Pop(); (* 64-bit pop; high-order 48 bits discarded; segment
descriptor information also loaded *)
ESP tempESP;
SS tempSS;
FI;
FI;
FOR each of segment register (ES, FS, GS, and DS)
DO
IF segment register points to data or non-conforming code segment
and CPL > segment descriptor DPL; (* DPL in hidden part of segment register *)
THEN SegmentSelector 0; (* SegmentSelector invalid *)
FI;
OD;