https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99435

Georg-Johann Lay <gjl at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|WAITING                     |RESOLVED
         Resolution|---                         |INVALID

--- Comment #3 from Georg-Johann Lay <gjl at gcc dot gnu.org> ---
Closed as invalid.

The linked ATmega16U4 states on page 26:

> 5. AVR Memories
> 5.4 I/O Memory
> [...]
> I/O Registers within the address range 0x00 - 0x1F are directly bit-accessible
> using the SBI and CBI instructions. In these registers, the value of single
> bits can be checked by using the SBIS and SBIC instructions. Refer to the
> instruction set section for more details. When using the I/O specific commands
> IN and OUT, the I/O addresses 0x00 - 0x3F must be used. When addressing I/O
> Registers as data space using LD and ST instructions, 0x20 must be added to
> these addresses. The device is a complex microcontroller with more peripheral
> units than can be supported within the 64 location reserved in Opcode for the
> IN and OUT instructions. For the Extended I/O space from 0x60 - 0xFF in SRAM,
> only the ST/STS/STD and LD/LDS/LDD instructions can be used.

So the lower I/O has a range of 5 bits (CBI, SBI, SBIC, SBIS), and the I/O
addressable by IN and OUT has a range of 6 bits.

Reply via email to