
Volume 2, Part 2: Context Management
2:555
never accessible to software during the system call (see
for details). This
works, because at the system call entry user-code may not have any dependencies on
the state of the scratch registers.
4.4
System Calls
Reducing the overhead associated with system calls becomes more important as
processor efficiency increases. As processor frequencies and pipeline lengths increase,
the typical overhead associated with flushing the processor pipeline to effect privilege
domain crossings is increased. To reduce system call overhead, the Itanium
architecture provides an efficient “enter privileged code” (
epc
) instruction (
)
that can be paired with the demoting branch return. Additionally, the Itanium
architecture provides the traditional
break
instruction (
) to enter privileged
mode, that is typically paired with the
rfi
instruction (
) to return to user
mode.
The
epc
instruction offers higher efficiency than the
break
instruction for invoking a
kernel system call. Whereas a
break
instruction will always cause a pipeline flush to
change privilege level, the
epc
is designed not to. The
break
instruction also passes the
system call number as a parameter, and requires a table lookup with an indirect branch
to the system call. With the
epc
instruction, the user application can directly branch to
the system call code.
More information about
epc
-based system calls is provided in
information about
break
-based system calls is provided in
. Regardless of
whether the
epc
or
break
instruction are used, an Itanium architecture-based
operating system needs to check the integrity of system call parameters. In addition to
traditional integrity checking of the passed parameter values, the system call handler
should inspect system call parameters for set NaT bits as described in
.
4.4.1
epc/Demoting Branch Return
To execute a system call with
epc
, a user system call stub branches to an execute-only
kernel page containing the system call, using the
br.call
instruction. The kernel page
executes an
epc
to raise the privilege level. The privilege level is raised to the privilege
level of the page mapping corresponding to the instruction address of the
epc
instruction. The page mapping must be execute-only (see
for details).
After the kernel completes its system call, it returns to the user system call stub with a
br.ret
instruction. The
br.ret
demotes the privilege level, by restoring the privilege
level contained within the PFS application register (PFS.ppl). To ensure operating
system integrity
epc
checks that the PFS.ppl field is no greater than the PSR.cpl at the
time the
epc
is executed.
As described in
, interruptions and system calls in a typical Itanium
architecture-based operating system need to switch to the kernel register stack backing
store upon kernel entry. The
epc
instruction does not disable interrupts nor does it
switch the processor to the kernel backing store. As a result, code directly following the
epc
instruction that runs at increased privilege level is still running on the caller’s
backing store. It is recommended that software disable external interrupts right after
Содержание 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 ...