![Intel ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS VOLUME 3 REV 2.3 Manual Download Page 392](http://html.mh-extra.com/html/intel/itanium-architecture-software-developers-volume-3-rev-2-3/itanium-architecture-software-developers-volume-3-rev-2-3_manual_2073404392.webp)
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
Summary of Contents for ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS VOLUME 3 REV 2.3
Page 1: ......
Page 11: ...x Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 13: ...1 2 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 33: ...1 22 Volume 1 Part 1 Introduction to the Intel Itanium Architecture ...
Page 57: ...1 46 Volume 1 Part 1 Execution Environment ...
Page 147: ...1 136 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 149: ...1 138 Volume 1 Part 2 About the Optimization Guide ...
Page 191: ...1 180 Volume 1 Part 2 Predication Control Flow and Instruction Stream ...
Page 230: ......
Page 248: ...236 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 250: ...2 2 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 264: ...2 16 Volume 2 Part 1 Intel Itanium System Environment ...
Page 380: ...2 132 Volume 2 Part 1 Interruptions ...
Page 398: ...2 150 Volume 2 Part 1 Register Stack Engine ...
Page 486: ...2 238 Volume 2 Part 1 IA 32 Interruption Vector Descriptions ...
Page 750: ...2 502 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 754: ...2 506 Volume 2 Part 2 About the System Programmer s Guide ...
Page 796: ...2 548 Volume 2 Part 2 Interruptions and Serialization ...
Page 808: ...2 560 Volume 2 Part 2 Context Management ...
Page 842: ...2 594 Volume 2 Part 2 Floating point System Software ...
Page 850: ...2 602 Volume 2 Part 2 IA 32 Application Support ...
Page 862: ...2 614 Volume 2 Part 2 External Interrupt Architecture ...
Page 870: ...2 622 Volume 2 Part 2 Performance Monitoring Support ...
Page 891: ......
Page 1099: ...3 200 Volume 3 Instruction Reference padd Interruptions Illegal Operation fault ...
Page 1295: ...3 396 Volume 3 Resource and Dependency Semantics ...
Page 1296: ......
Page 1302: ...402 Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 1494: ...4 192 Volume 4 Base IA 32 Instruction Reference FWAIT Wait See entry for WAIT ...
Page 1647: ...Volume 4 Base IA 32 Instruction Reference 4 345 ROL ROR Rotate See entry for RCL RCR ROL ROR ...
Page 1884: ...4 582 Volume 4 IA 32 SSE Instruction Reference ...
Page 1885: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 Index ...
Page 1886: ...Index Intel Itanium Architecture Software Developer s Manual Rev 2 3 ...
Page 1898: ...INDEX Index 12 Index for Volumes 1 2 3 and 4 ...