| System instructions | |||||
| Name | Description | Code | Operation | operands | operand size |
|---|---|---|---|---|---|
| lmsw | Load machine status word | lmsw source | Loads source into machine status word of CR0(bits0-15) | reg mem |
word |
| smsw | Store machine status word | smsw dest | Store machine status word to dest | ||
| lgdt | Load global descriptor table (GDT) register | lgdt source | Load source into GDTR | mem | pword |
| sgdt | Store global descriptor table (GDT) register | sgdt dest | Store GDTR to dest | ||
| lidt | Load interrupt descriptor table (IDT) register | lidt source | Load source into IDTR | ||
| sidt | Store interrupt descriptor table (IDT) register | sidt dest | Store IDTR to dest | ||
| lldt | Load local descriptor table (LDT) register | lldt source | Load segment selector source into LDTR | reg mem |
word |
| sldt | Store local descriptor table (LDT) register | sldt dest | Stores segment selector from LDTR in dest | ||
| ltr | Load task register | ltr source | Load source into task register | reg mem |
word |
| str | Store task register | str dest | Stores segment selector from TR in dest | ||
| lar | Load access rights | lar dest,source | load access rights from segment descriptor specified by the selector in source into dest and set ZF | reg,reg reg,mem |
word dword |
| lsl | Load segment limit | lsl dest,source | load segment limit from segement descriptor specified by selector in source int dest and set ZF | ||
| verr | Verify segment for reading | verr op | SET ZF=1 if segment specified with op can be read | reg |
word |
| verw | Verify segment for writing | verw op | SET ZF=1 if segment specified with op can be written | ||
| arpl | Adjust requested privilege level | arpl op1,op2 | Adjust RPL of op1 to not less than RPL of op2 | reg,reg mem,reg |
word |
| clts | Clear the task-switched flag | clts | Clears TS flag in CR0 | ||
| lock | Lock Bus | lock | Asserts LOCK# signal for duration of the accompanying instruction | ||
| hlt | Halt processor | hlt | Halt | ||
| invlpg | Invalidate TLB Entry | invlpg m | Invalidate TLB Entry for page that contains m | mem | |
| invd | Invalidate cache, no writeback | invd | Flush internal caches; initiate flushing of external caches. | ||
| wbinvd | Invalidate cache, with writeback | wbinvd | Write back and flush Internal caches; initiate writing-back and flushing of external caches. | ||
| rdpmc | Read performance monitoring counters | rdpmc | Read performance-monitoring counter specified by ECX into EDX:EAX | ||
| rdtsc | Read time stamp counter | rdtsc | Read time-stamp counter into EDX:EAX | ||
| rsm | Return from system management mode (SSM) | rsm | Resume operation of interrupted program | ||
| rdmsr | Read model-specific register | rdmsr | Load MSR specified by ECX into EDX:EAX | ||
| wrmsr | Write model-specific register | wrmsr | Write the value in EDX:EAX to MSR specified by ECX | ||
| sysenter | Fast System Call, transfers to a flat protected mode kernel at CPL=0. | sysenter | Fast call to privilege level 0 system procedures | ||
| sysexit | Fast System Call, transfers to a flat protected mode kernel at CPL=3. | sysexit | Fast return to privilege level 3 user code | ||