Volume 3: Pseudo-Code Functions
3:287
rse_load(type)
Restores a register or NaT collection from the backing store (
load_address
=
RSE.BspLoad
-
8
). If
load_address{8:3}
is equal to 0x3f then a NaT collection is
loaded into a NaT dispersal register. (
dispersal register
may not be the same
as
AR[RNAT]
.) If
load_address{8:3}
is not equal to 0x3f then the register
RSE.LoadReg
-
1
is loaded and the NaT bit for that register is set to
dispersal_register{load_address{8:3}}
. If the load is successful
RSE.BspLoad
is decremented by 8. If the load is successful and a register was
loaded
RSE.LoadReg
is decremented by 1 (possibly wrapping in the stacked
registers). The load moves a register from the invalid partition to the current frame if
RSE.CFLE is 1, or to the clean partition if RSE.CFLE is 0. For mandatory RSE loads,
type
is MANDATORY. Mandatory RSE loads may cause interruptions. See
Table 6-6, “RSE Interruption Summary” on page 6-145
.
rse_new_frame(current_frame_size,
new_frame_size)
A new frame is defined without changing any register renaming. The new frame size
is completely defined by the
new_frame_size
parameter (successive calls are not
cumulative). If
new_frame_size
is larger than
current_frame_size
and the
number of registers in the invalid and clean partitions is less than the size of frame
growth then mandatory RSE stores are issued until enough registers are available.
The resulting sequence of RSE stores may be interrupted. Mandatory RSE stores
may cause interruptions; see
Table 6-6, “RSE Interruption Summary” on page 6-145
rse_preserve_frame(preserved_frame_si
ze)
The number of registers specified by
preserved_frame_size
are marked to be
preserved by the RSE. Register renaming causes the
preserved_frame_size
registers after
GR[32]
to be renamed to
GR[32]
.
AR[BSP]
is updated to contain the
backing store address where the new
GR[32]
will be stored.
rse_restore_frame(preserved_sol,
growth, current_frame_size)
The first two parameters define how the current frame is about to be updated by a
branch return or
rfi
:
preserved_sol
defines how many registers need to be
restored below RSE.BOF;
growth
defines by how many registers the top of the
current frame will grow (growth will generally be negative). The number of registers
specified by
preserved_sol
are marked to be restored. Register renaming causes
the
preserved_sol
registers before
GR[32]
to be renamed to
GR[32]
.
AR[BSP]
is
updated to contain the backing store address where the new
GR[32]
will be stored. If
the number of dirty and clean registers is less than
preserved_sol
then mandatory
RSE loads must be issued before the new current frame is considered valid. This
function does not perform mandatory RSE loads. This function returns TRUE if the
preserved frame grows beyond the invalid and clean regions into the dirty region. In
this case the third argument,
current_frame_size
, is used to force the returned to
frame to zero (see
Section 6.5.5, “Bad PFS used by Branch Return” on page 2:143
rse_store(type)
Saves a register or NaT collection to the backing store (store_address =
AR[BSPSTORE]). If store_address{8:3} is equal to 0x3f then the NaT collection
AR[RNAT] is stored. If store_address{8:3} is not equal to 0x3f then the register
RSE.StoreReg is stored and the NaT bit from that register is deposited in
AR[RNAT]{store_address{8:3}}. If the store is successful AR[BSPSTORE] is
incremented by 8. If the store is successful and a register was stored RSE.StoreReg
is incremented by 1 (possibly wrapping in the stacked registers). This store moves a
register from the dirty partition to the clean partition. For mandatory RSE stores,
type
is MANDATORY. Mandatory RSE stores may cause interruptions. See
“RSE Interruption Summary” on page 6-145
.
rse_update_internal_stack_pointers(new
_store_pointer)
Given a new value for
AR[BSPSTORE]
(
new_store_pointer
) this function
computes the new value for
AR[BSP].
This value is equal to
new_store_pointer
plus the number of dirty registers plus the number of intervening NaT collections. This
means that the size of the dirty partition is the same before and after a write to
AR[BSPSTORE]
. All clean registers are moved to the invalid partition.
sign_ext(value, pos)
Returns a 64 bit number with bits
pos
-1 through 0 taken from
value
and bit
pos
-1 of
value
replicated in bit positions
pos
through 63. If
pos
is greater than or equal to 64,
value
is returned.
Table 3-1.
Pseudo-code Functions (Continued)
Function
Operation
Содержание 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 ...