
2:554
Volume 2, Part 2: Context Management
two “disabled” bits, PSR.dfl and PSR.dfh, are accessible to the privileged software
alone. Setting a “disabled” bit causes a fault into the disabled-fp vector upon first use
(read or write) of the corresponding register set.
As mentioned earlier, an involuntary kernel entry (e.g. interruption) needs to preserve
all scratch floating-point registers. Instead of blindly always spilling all registers, state
spills can be conditionalized upon the “modified” bits in the PSR. Additionally, the
“disabled” bits allow a deferred, or lazy, approach to both spills and fills. This is
particularly useful for “on demand” state motion in an involuntary interruption handler
that does not use many floating-point registers. To perform deferred spills on the high
set, the handler sets PSR.dfh immediately upon entry. Any reference to a floating-point
register in the high set will then fault into the disabled-fp vector which spills the
corresponding state to a prearranged store before allowing use within the handler. Lazy
state restoration is performed in a similar manner: the handler sets the “disabled” bit
just before exit, causing the first reference by the interrupted context to the disabled
set to fault into the kernel’s disabled floating-point vector which can then restore the
appropriate state. Note the importance of agreeing upon prearranged stores for
deferred spill/fill policies and the need for a mechanism to communicate a past fill or
spill.
At process or thread context switches all preserved floating-point registers need to be
context switched. The higher (scratch) set is also managed here if the context-switch
was occasioned by an involuntary interruption (e.g. timer interrupt) which did not
already spill the higher set. Use of the “modified” bits by the OS to determine if the
appropriate register set is “dirty” with previously unsaved data can help avoid needless
spills and fills.
The “modified” bits are intentionally accessible through the user mask so that a user
process can provide hints to the OS code about its register liveness requirements.
Clearing PSR.mfh, for instance, suggests that the user process does not see the higher
register set as containing useful data anymore.
4.3
Preserving ALAT Coherency
As described in
Section 4.4.5.3, “Detailed Functionality of the ALAT and Related
, software is required to explicitly invalidate the entire ALAT
using the
invala
instruction whenever the virtual to physical register mapping is
changed. Typically this occurs when the
clrrb
instruction is used, when a synchronous
backing store switch is performed (e.g. in a user-level or kernel thread context switch),
or when software “discontinuously” remaps the register to backing store mapping by
resetting BSPSTORE (e.g. by calling
longjmp()
).
When returning to a user-process after servicing an involuntary interruptions, an
Itanium architecture-based operating system is required to invalidate the entire ALAT
using the
invala
instruction. This is required because the operating system may have
targeted advanced loads at scratch registers, and thereby altered the user-visible ALAT
state.
When returning from a system call, however, full ALAT invalidations can be avoided by
using
invala.e
instructions to selectively invalidate ALAT entries of all preserved
registers (GR4-7, FR2-5, and FR16-31), or by ensuring that these registers where
Содержание 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 ...