-
- Downloads
re PR target/49868 (Implement named address space to place/access data in flash memory)
libgcc/ PR target/49868 Extend __pgmx semantics to linearize memory. * config/avr/t-avr (LIB1ASMFUNCS): Add _xload_1, _movmemx. * config/avr/lib1funcs.S (__xload_1): New function. (__movmemx_qi, __movmemx_hi): New functions. (__xload_2, __xload_3, __xload_4): Rewrite to fit new __pgmx semantics. gcc/ PR target/49868 Extend __pgmx semantics to linearize memory. * config/avr/avr.md (mov<mode>): Use avr_xload_libgcc_p to determine if code comes inline or from libgcc. (MOVMEM_r_d:HI): Add "w" to constraint for better preference. (movmem_qi, movmem_qi): Set constraint #2 to "n". (movmem_qi_elpm, movmem_hi_elpm): Remove insns. (movmemx_qi, movmemx_hi): New insns. (xload_<mode>_libgcc): Rewrite to new insn condition. (xload_<mode>): Remove insns. * config/avr/avr.c (avr_out_xload): Rewrite: Only need to handle cases that don't satisfy avr_xload_libgcc_p(). (avr_addr_space_convert): Allow converting in any direction. (avr_addr_space_subset_p): Return always true. (avr_xload_libgcc_p): Rewrite to fit new __pgmx semantics. (avr_emit_movmemhi): Ditto. (avr_out_lpm): No need to handle ADDR_SPACE_PGMX any more. (avr_out_movmem): Ditto. (AVR_SYMBOL_FLAG_PROGMEM): New macro. (AVR_SYMBOL_SET_ADDR_SPACE): New macro. (AVR_SYMBOL_GET_ADDR_SPACE): New macro. (avr_encode_section_info): Encode 'progmem' in symbol flags. (output_reload_in_const): Don't zero-extend any 24-bit symbols. From-SVN: r183058
Showing
- gcc/ChangeLog 26 additions, 0 deletionsgcc/ChangeLog
- gcc/config/avr/avr.c 131 additions, 173 deletionsgcc/config/avr/avr.c
- gcc/config/avr/avr.md 35 additions, 71 deletionsgcc/config/avr/avr.md
- libgcc/ChangeLog 10 additions, 0 deletionslibgcc/ChangeLog
- libgcc/config/avr/lib1funcs.S 141 additions, 21 deletionslibgcc/config/avr/lib1funcs.S
- libgcc/config/avr/t-avr 2 additions, 1 deletionlibgcc/config/avr/t-avr
Loading
Please register or sign in to comment