Volume 2, Part 1: Itanium
®
Architecture-based Operating System Interaction Model with IA-32 Applications
2:269
For IA-32 IN and OUT instructions a port’s virtual address is computed as:
port_virtual_address = IOBase | (port{15:2}<<12) | port{11:0}
This address computation places 4 ports on each 4K page and expands the space to
64MB, with the ports being at a relative offset specified by port{11:0} within each
4K-byte virtual page. IOBase is a kernel register
(KR)
maintained by the operating
system that points to the base of the 64MB Virtual I/O port space.
The value in IOBase
must be aligned on a 64MB boundary otherwise port address aliasing will occur and
processor operation is undefined.
For Itanium load and stores accesses to the I/O port space, a port’s virtual address can
be computed in the same manner, specifically.
port_virtual_address = IOBase | (port{15:2}<<12) | port{11:0}
In practice this address is a constant for any given physical I/O device.
Note:
In the generation of the I/O port virtual address, software MUST ensure that
port_virtual_address{11:2} are equal to port{11:2} bits. Otherwise, some pro-
cessors implementations may place the port data on the wrong bytes of the
processor’s bus and the port will not be correctly accessed.
IA-32 IN and OUT instructions and Itanium or IA-32 load/store instructions can
reference I/O ports in 1, 2, or 4-byte transactions. References to the legacy I/O port
space cannot be performed with greater than 4 byte transactions due to bus limitations
in most systems. Since an IA-32 IN/OUT instruction can access up to 4 bytes at port
address 0xFFFF, the I/O port space effectively extends 3 bytes beyond the 64KB
boundary. Operating systems can; 1) not map the excess 3 bytes, resulting in denial of
permission for the excess 3 bytes, or 2) map via the TLB the excess 3 bytes back to
port address 0 effectively wrapping the I/O port space at 64KB.
Operating system code can map each virtual I/O port space page anywhere within the
physical address space using the Data Translation Registers or the Data Translation
Cache. Large page translations can be used to reduce the number of mappings required
in the TLB to map the I/O port space. For example, one 64MB translation is sufficient to
map the entire expanded 64MB I/O port space. The
UC memory attribute
must be
used for all I/O port space mappings to avoid speculative processor references to I/O
devices, otherwise processor and platform operation is undefined.
Figure 10-2. I/O Port Space Addressing
I/O Port
64-bit
IA-32
TLB
64-bit Virtual
Address
Physical Address
OR
Shift
Left
12-bits
Port{15:2}
Port{11:0}
IN,
I/O Port
Load,
Store
OUT
IOBase
Intel
®
Itanium
®
Number
Address
Содержание 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 ...