
2:144
Volume 2, Part 1: Register Stack Engine
• The CFM (after the return) is forced to zero; i.e., all CFM fields (including CFM.sof
and CFM.sol) are set to zero.
• The registers from the returned-from frame and the preserved registers from the
returned-to frame are added to the invalid partition of the register stack.
• The dirty partition of the register stack is shrunk by AR[PFS].pfm.sol.
• The clean partition of the register stack remains unchanged. RSE.BspLoad and
RSE.LoadReg remain unchanged.
• No other indication is given to software.
Since the size of the current frame is set to zero, the contents of some (possibly all)
stacked GRs may be overwritten by subsequent eager RSE operations or by subsequent
instructions allocating a new stack frame and then targeting a stacked GR. Therefore,
explicit register stack management sequences that manipulate PFS, use the
cover
instruction, or use the
loadrs
instruction must avoid this situation by executing one of
the two following code sequences prior to a
br.ret
:
• Use a
flushrs
instruction prior to the
br.ret
. This preserves all dirty registers to
memory, and sets RSE.ndirty to zero, which avoids the condition.
• Use a
loadrs
instruction with an AR[RSC].loadrs value in the following range:
AR[RSC].loadrs <= 8*(ndir ((62 - AR[BSP]{8:3} + ndirty_max) / 63)),
where ndirty_max = (RSE.N_STACKED_PHYS - (AR[PFS].sof - AR[PFS].sol))
This adjusts the size of the dirty partition appropriately to avoid the condition. A
loadrs
with RSC.loadrs=0 works on all processor models, regardless of the number of
implemented stacked physical registers. Note that
loadrs
may cause registers in the
dirty partition to be lost.
6.6
RSE Interruptions
Although the RSE runs asynchronously to processor execution, RSE related
interruptions are delivered synchronously with the instruction stream. These RSE
interruptions are a direct consequence of register stack-related instructions such as:
alloc
,
br.ret
,
rfi
,
flushrs
,
loadrs
, or
mov to/from
BSP, BSPSTORE, RSC, PFS, IFS,
or RNAT. Register spills and fills that are executed by the RSE in the background (eager
RSE loads or stores) do not raise interruptions. If a faulting/trapping register spill or fill
operation is required for software to make forward progress (mandatory RSE load or
store) then the RSE will raise an interruption.
Mandatory RSE stores occur in the context of
alloc
and
flushrs
instructions only. Any
faults raised by these instructions are delivered on the issuing instruction. Faults raised
by mandatory RSE loads caused by a
loadrs
are delivered on the issuing instruction.
Mandatory RSE loads which fault while restoring the frame for a
br.ret
or
rfi
deliver
the fault on the target instruction, and the ISR.ir (incomplete register frame) bit is set.
When a mandatory RSE load faults, AR[BSPSTORE] points to a backing store location
above the faulting address reported in CR[IFA]. This allows handlers that service RSE
load faults to use the backing store switch routine described in
Interrupted Context” on page 2:148
.
The
br.ret
and the
rfi
instructions set the RSE Current Frame Load Enable bit
(RSE.CFLE) to one if the register stack frame being returned to is not entirely contained
in the stacked register file. This enables the RSE to restore registers for the current
Содержание 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 ...