4.3.10.2 Address Attribute

The address(addr) attribute is used to alias an object identifier to a peripheral address that may lie outside the IO address range. Such identifiers can then be used to address these memory-mapped peripherals. For example:
volatile int porta __attribute__((address (0x600)));
will internally equate porta to the address 0x600.

This attribute does not affect the allocation of any ordinary object in memory. To place objects at a specified address in the ordinary data memory, use the __at() specifier (see 4.4.4 Absolute Variables).