From 7123e27894e989f8de24990accdafc63dd061bf3 Mon Sep 17 00:00:00 2001
From: John Criswell
+These intrinsics are provided by LLVM to support the implementation of +operating system level code. +
+ +- call sbyte (ushort address)* %llvm.readport(ushort <address>) - call ubyte (ushort address)* %llvm.readport(ushort <address>) - call short (ushort address)* %llvm.readport(ushort <address>) - call ushort (ushort address)* %llvm.readport(ushort <address>) - call int (ushort address)* %llvm.readport(ushort <address>) - call uint (ushort address)* %llvm.readport(ushort <address>) + call <integer type> (<integer type>)* %llvm.readport (<integer type> <address>)
-The 'llvm.readport' intrinsic reads data from the specified I/O port. +The 'llvm.readport' intrinsic reads data from the specified hardware +I/O port.
-The argument to this intrinsic indicates the I/O address from which to read -the data. The address is in the I/O address namespace; it is not a memory -location. +The argument to this intrinsic indicates the hardware I/O address from which +to read the data. The address is in the hardware I/O address namespace (as +opposed to being a memory location for memory mapped I/O).
-The 'llvm.readport' intrinsic reads data from the I/O port specified -by address and returns the value. The address and return value must -be integers, but the size is dependent upon the platform upon which the -program is code generated. For example, on x86, the address must be a -ushort, and the return value must be 8, 16, or 32 bits. +The 'llvm.readport' intrinsic reads data from the hardware I/O port +specified by address and returns the value. The address and return +value must be integers, but the size is dependent upon the platform upon which +the program is code generated. For example, on x86, the address must be an +unsigned 16 bit value, and the return value must be 8, 16, or 32 bits.
- call void (ushort address, sbyte value)* %llvm.writeport(ushort <address>, sbyte <value>) - call void (ushort address, ubyte value)* %llvm.writeport(ushort <address>, ubyte <value>) - call void (ushort address, short value)* %llvm.writeport(ushort <address>, short <value>) - call void (ushort address, ushort value)* %llvm.writeport(ushort <address>, ushort <value>) - call void (ushort address, int value)* %llvm.writeport(ushort <address>, int <value>) - call void (ushort address, uint value)* %llvm.writeport(ushort <address>, uint <value>) + call void (<integer type>, <integer type>)* %llvm.writeport (<integer type> <value>, <integer type> <address>)
-The 'llvm.writeport' intrinsic writes data to the specified I/O port. +The 'llvm.writeport' intrinsic writes data to the specified hardware +I/O port.
-The first argument to this intrinsic indicates the I/O address to which data -should be written. The address is in the I/O address namespace; it is not a -memory location. +The first argument to this intrinsic indicates the hardware I/O address to +which data should be written. The address is in the hardware I/O address +namespace (as opposed to being a memory location for memory mapped I/O).
@@ -2082,8 +2089,8 @@ The second argument is the value to write to the I/O port. The 'llvm.writeport' intrinsic writes value to the I/O port specified by address. The address and value must be integers, but the size is dependent upon the platform upon which the program is code generated. -For example, on x86, the address must be a ushort, and the value written must -be 8, 16, or 32 bits in length. +For example, on x86, the address must be an unsigned 16 bit value, and the +value written must be 8, 16, or 32 bits in length.
-- 2.34.1