
2:556
Volume 2, Part 2: Context Management
the
epc
until the switch to the kernel backing store has been completed. Additionally,
low-level operating system handlers should not only use IPSR.cpl, but should also
check BSPSTORE, to determine whether they are running on the kernel backing store
(imagine an external interrupt being delivered on the first instruction after the
epc
).
4.4.2
break/rfi
The
break
instruction, when issued in the
i
,
f
, and
m
syllables, specifies an arbitrary
21-bit immediate value. The kernel can choose a specific
break
immediate value to
differentiate system calls from other usage of the
break
instruction (such as debug).
The
break
instruction jumps to the
break
fault handler, which should be a valid address
mapping for each user application, and raises the privilege mode to the most privileged
level.
The system call number is an additional parameter passed to the kernel when invoking
a system call via the
break
instruction. The system call number must reside in a fixed
location. If stored within GR32, then the system call stub must rearrange its input
parameters to map to the register stack starting at GR33. This register jostling can be
avoided by passing the system call number through a scratch static general register or
by using the
break
immediate itself. Additionally, the system call can utilize all eight
input registers of the register stack for system call parameters.
4.4.3
NaT Checking for NaTs in System Calls
In addition to regular range/value checking on system call arguments, Itanium
architecture-based operating systems need to additionally ensure that system call
arguments passed in by a user application do not have any NaT bits set. The following
code fragment can be used:
mov mask = 0xff
clrrrb
;;
// create register stack frame with only output registers for system call args
alloc tmp = ar.pfs, 0, 0, 8, 0
shl mask = mask, syscall_arg_count
;;
mov pr = mask, 0xff00
// define p8 .. p15
;;
cmp.eq p7 = r0, r0
// set p7 to true
;;
// test for NaT bits in the input arguments
(p8)
cmp.eq.and p7 = r32, r32
// and type compare clears p7 if r32 is NaT
(p9)
cmp.eq.and p7 = r33, r33
(p10) cmp.eq.and p7 = r34, r34
(p11) cmp.eq.and p7 = r35, r35
(p12) cmp.eq.and p7 = r36, r36
(p13) cmp.eq.and p7 = r37, r37
(p14) cmp.eq.and p7 = r38, r38
(p15) cmp.eq.and p7 = r39, r39
(p7) br.cond.sptk ok_arguments
// No NaTs found
;;
// p7 was cleared by at least one NaT argument
Содержание 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 ...