Read from and write to I/O registers and memory (QNX Neutrino)
io width[*number[+]] [options] address[range] [value]
QNX Neutrino
The arguments must appear in the following order:
On x86 and x86_64 systems, a width of 64 bits is available only as a memory access.
If the width is followed by an asterisk (*), the value that follow is the number of successive, incremental reads or writes to do. A plus sign (+) specifies that each successive write increments the value to be written. This has a meaning only when you specify a write value.
After the address, you can provide a range in square brackets that specifies that the operation occurs only on part of the bit range of the selected register(s). For example, to operate only on the first byte of a register, specify [0:7] for the range.
The io utility reads and writes memory and I/O registers.
Read 32 bits from address 0x80000000 and display them:
io 32 0x80000000
Write a value of 0xAA00AA00F000F000 to the address 0x80000000:
io 64 0x80000000 0xAA00AA00F000F000
Write 0 to 0x80000000, 1 to 0x80000002, and so on (four 16-bit writes):
io s*4+ 0x80000000 0
Set the thirty-first bit of 0x80000000:
io 32 0x80000000[31] 1
Request privileged access and do a big-endian write to the first two bytes of 0x80000000:
io 32 be,priv 0x80000000[:15] 0x501F
The effects of this command on memory are as follows: