THE 80286 INSTRUCTION SET

Set CPL to the RPL of the CS selector in the newTSS

If new stack selector is null #TS(SS)

SSselector must be within its descriptor table limits else #TS(SS) SS selector RPL must be equal to CPL else #TS(SS)

OPL of SS descriptor must equal CPL else #TS(SS)

SS descriptor AR byte must indicate writable data segment else #TS(SS) SS descriptor AR byte must indicate PRESENT else #SS(SS)

Load SS cache with new stack segment and set valid bit New CS selector must not be null else #TS(CS)

CS selector must be within its descriptor table limits else #TS(CS) CS descriptor AR byte must indicate code segment else #TS(CS) If non-conforming then OPL must equal CPL else #TS(CS)

If conforming then OPL must be :::; CPL else #TS(CS)

CS descriptor AR byte must indicate PRESENT else #NP(CS) Load CS cache with new code segment descriptor and set valid bit For OS and ES:

If new selector is not null then perform following checks:

Index must be within its descriptor table limits else #TS(segment selector) AR byte must indicate data or readable code else #TS(segment selector) If data or non-conforming code then:

OPL must be 2': CPL else #TS(segment selector)

OPL must be 2': RPL else #TS(segment selector)

AR byte must indicate PRESENT else #NP(segment selector) Load cache with new segment descriptor and set valid bit

8-13

Page 223
Image 223
Intel 80286, 80287 manual Instruction SET