4.3.10.5 Io Attribute
Objects defined using the io(address)
attribute
represent memory-mapped peripherals in the I/O space and at the address indicated.
Example:
volatile int porta __attribute__((io(0x22)));
When used without an address, the object it is not assigned an address,
but the compiler will still use in
and out
instructions where applicable, assuming some other module will assign the object an
address. For example:
extern volatile int porta __attribute__((io));