Intel ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS MANUAL VOLUME 1 REV 2.3 Manual page 1611

Hide thumbs Also See for ITANIUM ARCHITECTURE - SOFTWARE DEVELOPERS MANUAL VOLUME 1 REV 2.3:
Table of Contents

Advertisement

OUTS/OUTSB/OUTSW/OUTSD—Output String to Port (Continued)
In the Itanium System Environment, I/O port references are mapped into the
64-bit virtual address pointed to by the IOBase register, with four ports per
4K-byte virtual page. Operating systems can utilize TLBs in the Itanium
architecture to grant or deny permission to any four I/O ports. The I/O port
space can be mapped into any arbitrary 64-bit physical memory location by
operating system code. If CFLG.io is 1 and CPL>IOPL, the TSS is consulted for
I/O permission. If CFLG.io is 0 or CPL<=IOPL, permission is granted
regardless of the state of the TSS I/O permission bitmap (the bitmap is not
referenced).
If the referenced I/O port is mapped to an unimplemented virtual address (via
the I/O Base register) or if data translations are disabled (PSR.dt is 0) a
GPFault is generated on the referencing OUTS instruction.
Operation
IF ((PE = 1) AND ((VM = 1) OR (CPL > IOPL)))
THEN (* Protected mode or virtual-8086 mode with CPL > IOPL *)
IF (CFLG.io AND Any I/O Permission Bit for I/O port being accessed = 1)
FI;
ELSE ( * I/O operation is allowed *)
FI;
IF (Itanium_System_Environment) THEN
DEST_VA = IOBase | (Port{15:2}<<12) | Port{11:0};
DEST_PA = translate(DEST_VA);
[DEST_PA]  SRC; (* Writes to selected I/O port *)
FI;
memory_fence();
[DEST_PA]  SRC; (* Writes to selected I/O port *)
memory_fence();
IF (byte operation)
THEN IF DF = 0
FI;
FI;
Volume 4: Base IA-32 Instruction Reference
THEN #GP(0);
THEN (E)DI  1;
ELSE (E)DI  -1;
FI;
ELSE IF (word operation)
THEN IF DF = 0
THEN DI  2;
ELSE DI  -2;
FI;
ELSE (* doubleword operation *)
THEN IF DF = 0
THEN EDI  4;
ELSE EDI  -4;
FI;
FI;
4:309

Advertisement

Table of Contents
loading

This manual is also suitable for:

Itanium architecture 2.3

Table of Contents