
Volume 2, Part 2: External Interrupt Architecture
2:607
c. Software must preserve IIP and IPSR prior to re-enabling PSR.ic and PSR.i
which will re-enable taking of exceptions and higher priority external
interrupts.
d. Issue a
srlz.d
instruction. This ensures that updated PSR.ic and PSR.i
settings are visible, and it also makes sure that the IVR read side effect of
masking lower or equal priority interrupts is visible when PSR.i becomes 1.
e. Dispatch the appropriate interrupt service routine.
f.
Disable external interrupts by clearing PSR.i with an
rsm 0x4000
instruction.This ensures that external interrupts are disabled prior to the EOI
write in the next step.
g. Notify the processor that interrupt handling for this vector is completed by
writing to the EOI register. This will unmask any pending lower priority
interrupts. If this was a level triggered interrupt, write to the I/O SAPIC EOI
register.
h. Lower TPR register to Old Task Priority (optional).
i.
Issue a
srlz.d
instruction. This ensures that ensure the EOI write from step
2g is reflected in the future IVR read (in step 2a). It also ensures that the TPR
update from step 2h unmasks any interrupts in the priority classes (including
the current task priority level) that were masked by the previous value of
TPR.
j.
Return to top of loop (step 2a).
These steps assume that the routine’s caller already performed the required state
preservation of interruption resources. Therefore the focus of the steps above is to
check the IVR to acquire the vector so the operating system can determine what device
the interrupt is associated with. The code is setup to loop, servicing interrupts until the
spurious interrupt vector (15) is returned. Looping and harvesting outstanding
interrupts reduces the time wasted by returning to the previous state just to get
interrupted again. The benefit of interrupt harvesting is that the processor pipeline is
not unnecessarily flushed and that the interrupted context is only saved/restored once
for a sequence of external interrupts. Once the vector is obtained the specific interrupt
service routine is called to service the device request. Upon return from the interrupt
service routine, an EOI is written and the IVR is checked once again.
If the operating system does not implement priority levels then there is no need to save
and restore the task priority level (steps 1, 2b, and 2h are optional). As described in
above, an IVR read automatically masks interrupts at the current
in-service level and below until the corresponding EOI is issued. For level triggered
interrupts, the programmer must not only inform the processor, but the external
interrupt controller that the level triggered interrupt has been serviced.
10.5
Interrupt Control Register Usage Examples
The examples in this section provide an overview of using the Itanium external
interrupt control registers. Actual and pseudo code fragments are listed to aid in the
development of OS code which will utilize these registers. It is up to the operating
system and its writer to determine what minimum set of control registers are required
to be used.
Содержание 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 ...