Specifications
Intel
®
 Quark Core—Architectural Overview
Intel
®
 Quark SoC X1000 Core
Developer’s Manual October 2013
34 Order Number: 329679-001US
Exceptions are classified as faults, traps, or aborts, depending on the way they are 
reported, and whether or not restart of the instruction causing the exception is 
supported. Faults are exceptions that are detected and serviced before the execution 
of the faulting instruction. A fault would occur in a virtual memory system when the 
processor referenced a page or a segment that was not present. The operating system 
would fetch the page or segment from disk, and then the Intel
®
 Quark Core would 
restart the instruction. Traps are exceptions that are reported immediately after the 
execution of the instruction that caused the problem. User defined interrupts are 
examples of traps. Aborts are exceptions that do not permit the precise location of the 
instruction causing the exception to be determined. Aborts are used to report severe 
errors, such as a hardware error or illegal values in system tables.
Thus, when an interrupt service routine has been completed, execution proceeds from 
the instruction immediately following the interrupted instruction. On the other hand, 
the return address from an exception fault routine will always point at the instruction 
causing the exception and include any leading instruction prefixes. Table 5 and Table 6 
summarize the possible interrupts for Intel
®
 Quark SoC X1000 Core and shows where 
the return address points.
Intel
®
 Quark SoC X1000 Core can handle up to 256 different interrupts and/or 
exceptions. In order to service the interrupts, a table with up to 256 interrupt vectors 
must be defined. The interrupt vectors are simply pointers to the appropriate interrupt 
service routine. In Real Mode (see Chapter 5.0, “Real Mode Architecture”), the vectors 
are 4-byte quantities, a Code Segment plus a 16-bit offset; in Protected Mode, the 
interrupt vectors are 8-byte quantities, which are put in an Interrupt Descriptor Table 
(see Section 6.2.3.4, “Interrupt Descriptor Table” on page 71). Of the 256 possible 
interrupts, 32 are reserved for use by Intel, the remaining 224 are free to be used by 
the system designer.
3.7.2 Interrupt Processing
When an interrupt occurs, the following actions happen. First, the current program 
address and the Flags are saved on the stack to allow resumption of the interrupted 
program. Next, an 8-bit vector is supplied to the Intel
®
 Quark Core which identifies the 
appropriate entry in the interrupt table. The table contains the starting address of the 
interrupt service routine. Then, the user supplied interrupt service routine is executed. 
Finally, when an IRET instruction is executed the old Intel
®
 Quark Core state is 
restored and program execution resumes at the appropriate instruction.
The 8-bit interrupt vector is supplied to the Intel
®
 Quark Core in several different 
ways: exceptions supply the interrupt vector internally; software INT instructions 
contain or imply the vector; maskable hardware interrupts supply the 8-bit vector via 
the interrupt acknowledge bus sequence. Non-maskable hardware interrupts are 
assigned to interrupt vector 2.
3.7.3 Maskable Interrupt
Maskable interrupts are the most common way used by the Intel
®
 Quark Core to 
respond to asynchronous external hardware events. A hardware interrupt occurs when 
the INTR is pulled high and the Interrupt Flag bit (IF) is enabled. The Intel
®
 Quark Core 
only responds to interrupts between instructions, (REPeat String instructions, have an 
“interrupt window,” between memory moves, which allows interrupts during long string 
moves). When an interrupt occurs, the Intel
®
 Quark Core reads an 8-bit vector 
supplied by the hardware which identifies the source of the interrupt, (one of 224 user 
defined interrupts). The exact nature of the interrupt sequence is discussed in Section 
10.3.10, “Interrupt Acknowledge” on page 219. 










