Interrupt 13-general protection exception (#gp) – Intel IA-32 User Manual

Page 223

Advertising
background image

Vol. 3A 5-47

INTERRUPT AND EXCEPTION HANDLING

Interrupt 13—General Protection Exception (#GP)

Exception Class

Fault.

Description

Indicates that the processor detected one of a class of protection violations called “general-
protection violations.” The conditions that cause this exception to be generated comprise all the
protection violations that do not cause other exceptions to be generated (such as, invalid-TSS,
segment-not-present, stack-fault, or page-fault exceptions). The following conditions cause
general-protection exceptions to be generated:

•

Exceeding the segment limit when accessing the CS, DS, ES, FS, or GS segments.

•

Exceeding the segment limit when referencing a descriptor table (except during a task
switch or a stack switch).

•

Transferring execution to a segment that is not executable.

•

Writing to a code segment or a read-only data segment.

•

Reading from an execute-only code segment.

•

Loading the SS register with a segment selector for a read-only segment (unless the
selector comes from a TSS during a task switch, in which case an invalid-TSS exception
occurs).

•

Loading the SS, DS, ES, FS, or GS register with a segment selector for a system segment.

•

Loading the DS, ES, FS, or GS register with a segment selector for an execute-only code
segment.

•

Loading the SS register with the segment selector of an executable segment or a null
segment selector.

•

Loading the CS register with a segment selector for a data segment or a null segment
selector.

•

Accessing memory using the DS, ES, FS, or GS register when it contains a null segment
selector.

•

Switching to a busy task during a call or jump to a TSS.

•

Using a segment selector on a non-IRET task switch that points to a TSS descriptor in the
current LDT. TSS descriptors can only reside in the GDT. This condition causes a #TS
exception during an IRET task switch.

•

Violating any of the privilege rules described in Chapter 4, “Protection.”

•

Exceeding the instruction length limit of 15 bytes (this only can occur when redundant
prefixes are placed before an instruction).

•

Loading the CR0 register with a set PG flag (paging enabled) and a clear PE flag
(protection disabled).

Advertising