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));