Implement attribute progmem on reduced Tiny cores by adding flash offset 0x4000 to...
authorGeorg-Johann Lay <avr@gjlay.de>
Wed, 20 Jul 2016 14:12:16 +0000 (14:12 +0000)
committerGeorg-Johann Lay <gjl@gcc.gnu.org>
Wed, 20 Jul 2016 14:12:16 +0000 (14:12 +0000)
commitc25e1d82bf149151af72a8a38db2160b1ca46002
tree2bc4015645e9b395fa0a3e6e1abc9653b4d1d21b
parent25e08379b869ba2f2def6d0e9d8443e053f8c3be
Implement attribute progmem on reduced Tiny cores by adding flash offset 0x4000 to respective symbols.

gcc/
Implement attribute progmem on reduced Tiny cores by adding
flash offset 0x4000 to respective symbols.

PR target/71948
* doc/extend.texi (AVR Variable Attributes) [progmem]: Add
documentation how it works on reduced Tiny cores.
(AVR Named Address Spaces): No support for reduced Tiny.
* config/avr/avr.c (AVR_SYMBOL_FLAG_TINY_PM): New macro.
(avr_address_tiny_pm_p): New static function.
(avr_print_operand_address) [AVR_TINY]: Add AVR_TINY_PM_OFFSET
if the address is in progmem.
(avr_assemble_integer): Same.
(avr_encode_section_info) [AVR_TINY]: Set AVR_SYMBOL_FLAG_TINY_PM
for symbol_ref in progmem.
* config/avr/avr.h (AVR_TINY_PM_OFFSET): New macro.
* config/avr/avr-c.c (avr_cpu_cpp_builtins): Use it instead of
magic 0x4000 when built-in def'ing __AVR_TINY_PM_BASE_ADDRESS__.
gcc/testsuite/
PR target/71948
* gcc.target/avr/torture/tiny-progmem.c: New test.

From-SVN: r238525
gcc/ChangeLog
gcc/config/avr/avr-c.c
gcc/config/avr/avr.c
gcc/config/avr/avr.h
gcc/doc/extend.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/avr/torture/tiny-progmem.c [new file with mode: 0644]