2013/1/7 Georg-Johann Lay <a...@gjlay.de> > > Currently, data in address space __memx is allocated to .progmem.data, i.e. > the > same section as for __flash resp. progmem. However, there os no need that > __memx goes onto the same section and wastes precious memory in the first 64 > Ki. > > The patch puts __memx data into .progmemx.data so that a linker script can > allocate it after .text and it can be distinguished from data in __flash or > progmem. > > The current default linker script contains .progmem* so that the patch does > not > change anything here. A new default script is still to come (binutils > PR14406). > > Moreover, there is some code clean-up like avoid magic "6" and use > ADDR_SPACE_COUNT instead. > > Ok to apply? > > Johann > > > PR target/55897 > * config/avr/avr.h (ADDR_SPACE_COUNT): New enum. > (avr_addrspace_t): Add .section_name field. > * config/avr/avr.c (progmem_section): Use ADDR_SPACE_COUNT as > array size. > (avr_addrspace): Same. Initialize .section_name. Remove last > NULL entry. Put __memx into .progmemx.data. > (progmem_section_prefix): Remove. > (avr_asm_init_sections): No need to initialize progmem_section. > (avr_asm_named_section): Use avr_addrspace[].section_name to get > section name prefix. > (avr_asm_select_section): Ditto. And use get_unnamed_section to > retrieve the progmem section. > * avr-c.c (avr_cpu_cpp_builtins): Use ADDR_SPACE_COUNT as loop > boundary to run over avr_addrspace[]. > (avr_register_target_pragmas): Ditto.
Approved. Denis.