
2:606
Volume 2, Part 2: External Interrupt Architecture
10.4
External Interrupt Delivery
The architectural interrupt model in
defines how each interrupt vector
cycles through one of four states:
•
Inactive
: there is no interrupt
pending
on this vector.
•
Pending
: an interrupt has been received by the processor on this vector, but has
not been
accepted
by the processor and has not been
acquired
by software. The
processor hardware will
accept
the interrupt when this vector’s priority level is
higher than the highest currently in-service vector, PSR.i is one, and TPR settings
do not mask the interrupt. This will cause the processor to transfer control flow to
the external interrupt handler. Software can then
acquire
the highest priority,
pending, unmasked vector by reading the IVR control register. The IVR read returns
the 8-bit vector number in a register and masks all vectors that have equal or lower
priority. This vector now enters the In-Service/None Pending state.
•
In-Service/None Pending
: an interrupt has been received by the processor on this
vector, and has been acquired by software (by reading the IVR control register), but
software has not
completed servicing
this interrupt. In this state, the processor
masks all vectors that have equal or lower priority. In this state, the processor can
receive and remember a second interrupt on this vector. If this happens, the
processor transitions this vector to the “In-Service/One Pending” state. If software
completes the interrupt
service routine (indicated to the processor by writing the
EOI register) before another interrupt is received on this vector, then the processor
returns this vector to the Inactive state, and all vectors with equal or lower priority
are unmasked.
•
In-Service/One Pending
: an interrupt has been received by the processor on this
vector, and has been acquired by software (by reading the IVR control register),
and software has not completed servicing this interrupt. Additionally, the processor
received a second interrupt on this vector, which is now held pending. If additional
interrupts on this vector are received by the processor while this vector is in the
“In-Service/One Pending” state, those additional interrupts are not distinguishable
by the processor hardware. When software completes the interrupt service routine
for the original interrupt on this vector (indicated to the processor by writing the
EOI register), then the processor returns this interrupt vector to the Pending state
for the second interrupt that was received on this vector. Additionally, all vectors
with equal or lower priority are unmasked.
It is recommended the following structure for an Itanium architecture-based external
interrupt handler:
1. Read and Save TPR, i.e. save Old Task Priority variable (optional).
2. External Interrupt Harvest Loop:
a. Read the IVR control register to determine which vector is being delivered. If
the returned IVR value is 15, then this is a spurious interrupt and it can be
can ignored; software can now clear PSR.ic, restore IPSR and IIP and then
rfi
to the interrupted context. If the returned IVR value is not 15, continue
with step 2b.
b. Raise TPR register to the interrupt class to which the level read out of IVR
belongs (optional).
Содержание ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS VOLUME 3 REV 2.3
Страница 1: ......
Страница 11: ...x Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 12: ...1 1 Intel Itanium Architecture Software Developer s Manual Rev 2 3 Part I Application Architecture Guide ...
Страница 13: ...1 2 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 33: ...1 22 Volume 1 Part 1 Introduction to the Intel Itanium Architecture ...
Страница 57: ...1 46 Volume 1 Part 1 Execution Environment ...
Страница 147: ...1 136 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 149: ...1 138 Volume 1 Part 2 About the Optimization Guide ...
Страница 191: ...1 180 Volume 1 Part 2 Predication Control Flow and Instruction Stream ...
Страница 230: ......
Страница 248: ...236 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 249: ...2 1 Intel Itanium Architecture Software Developer s Manual Rev 2 3 Part I System Architecture Guide ...
Страница 250: ...2 2 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 264: ...2 16 Volume 2 Part 1 Intel Itanium System Environment ...
Страница 380: ...2 132 Volume 2 Part 1 Interruptions ...
Страница 398: ...2 150 Volume 2 Part 1 Register Stack Engine ...
Страница 486: ...2 238 Volume 2 Part 1 IA 32 Interruption Vector Descriptions ...
Страница 749: ...2 501 Intel Itanium Architecture Software Developer s Manual Rev 2 3 Part II System Programmer s Guide ...
Страница 750: ...2 502 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 754: ...2 506 Volume 2 Part 2 About the System Programmer s Guide ...
Страница 796: ...2 548 Volume 2 Part 2 Interruptions and Serialization ...
Страница 808: ...2 560 Volume 2 Part 2 Context Management ...
Страница 842: ...2 594 Volume 2 Part 2 Floating point System Software ...
Страница 850: ...2 602 Volume 2 Part 2 IA 32 Application Support ...
Страница 862: ...2 614 Volume 2 Part 2 External Interrupt Architecture ...
Страница 870: ...2 622 Volume 2 Part 2 Performance Monitoring Support ...
Страница 891: ......
Страница 941: ...3 42 Volume 3 Instruction Reference cmp illegal_operation_fault PR p1 0 PR p2 0 Interruptions Illegal Operation fault ...
Страница 1099: ...3 200 Volume 3 Instruction Reference padd Interruptions Illegal Operation fault ...
Страница 1191: ...3 292 Volume 3 Pseudo Code Functions Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 1295: ...3 396 Volume 3 Resource and Dependency Semantics ...
Страница 1296: ......
Страница 1302: ...402 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 1494: ...4 192 Volume 4 Base IA 32 Instruction Reference FWAIT Wait See entry for WAIT ...
Страница 1564: ...4 262 Volume 4 Base IA 32 Instruction Reference LES Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 1565: ...Volume 4 Base IA 32 Instruction Reference 4 263 LFS Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 1568: ...4 266 Volume 4 Base IA 32 Instruction Reference LGS Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 1583: ...Volume 4 Base IA 32 Instruction Reference 4 281 LSS Load Full Pointer See entry for LDS LES LFS LGS LSS ...
Страница 1647: ...Volume 4 Base IA 32 Instruction Reference 4 345 ROL ROR Rotate See entry for RCL RCR ROL ROR ...
Страница 1663: ...Volume 4 Base IA 32 Instruction Reference 4 361 SHL SHR Shift Instructions See entry for SAL SAR SHL SHR ...
Страница 1668: ...4 366 Volume 4 Base IA 32 Instruction Reference SIDT Store Interrupt Descriptor Table Register See entry for SGDT SIDT ...
Страница 1884: ...4 582 Volume 4 IA 32 SSE Instruction Reference ...
Страница 1885: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 Index ...
Страница 1886: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Страница 1898: ...INDEX Index 12 Index for Volumes 1 2 3 and 4 ...