gcc/libgcc
Georg-Johann Lay 7bc6df2ca1 re PR target/49868 (Implement named address space to place/access data in flash memory)
gcc/
	PR target/49868
	* config/avr/avr.h (base_arch_s): Add field n_segments.
	(ADDR_SPACE_PGM1, ADDR_SPACE_PGM2, ADDR_SPACE_PGM3,
	ADDR_SPACE_PGM4, ADDR_SPACE_PGM5, ADDR_SPACE_PGMX): New address spaces.
	(AVR_HAVE_ELPM, AVR_HAVE_ELPMX): New defines.
	(INIT_EXPANDERS): New define.
	* config/avr/avr-protos.h (avr_mem_pgmx_p): New.
	(avr_init_expanders): New.
	(avr_emit_movmemhi, avr_out_movmem): New.
	(avr_xload_libgcc_p): New.
	* config/avr/avr-c.c (avr_register_target_pragmas): Register
	address spaces __pgm1, __pgm2,  __pgm3,  __pgm4  __pgm5,  __pgmx.
	(avr_cpu_cpp_builtins): Add built-in defines __PGM1,
	__PGM2, __PGM3, __PGM4, __PGM5, __PGMX.
	* config/avr/avr-devices.c (avr_arch_types): Set field n_segments.

	* config/avr/avr.c (AVR_SECTION_PROGMEM): Change define to cover
	3 bits instead of just 1.
	(xstring_empty, xstring_e, rampz_rtx): New static GTYed variables.
	(progmem_section): Change from section to array of sections.
	(progmem_section_prefix): New static variable.
	(avr_file_start): Print set for __RAMPZ__
	(avr_option_override): Move initialization of RTXes from here...
	(avr_init_expanders): ...to this new function.
	(avr_pgm_segment): New static function.
	(avr_decl_pgm_p): Handle error_mark_node.
	(avr_mem_pgmx_p, avr_decl_pgmx_p): New static functions.
	(avr_out_xload,	avr_find_unused_d_reg): New static functions.
	(expand_prologue, expand_epilogue): Use rampz_rtx.
	(print_operand): Hande CONST_STRING.
	(avr_xload_libgcc_p): New static function.
	(avr_out_lpm_no_lpmx, avr_out_lpm): Handle ELPM.
	(avr_progmem_p): Return 2 for 24-bit flash address space.
	(avr_out_sbxx_branch): Clean-up code from ASn macros.
	(out_movqi_r_mr, out_movqi_mr_r): Ditto. And recognize RAMPZ's
	address and print symbolically.
	(avr_asm_named_section, avr_section_type_flags,
	avr_encode_section_info, avr_asm_select_section,
	avr_addr_space_address_mode, avr_addr_space_pointer_mode,
	avr_addr_space_legitimate_address_p, avr_addr_space_convert,
	avr_addr_space_legitimize_address): Handle new address spaces.
	(avr_output_progmem_section_asm_op): New static function.
	(avr_asm_init_sections): Initialize progmem_section[].
	(adjust_insn_length): Handle ADJUST_LEN_XLOAD, ADJUST_LEN_MOVMEM.
	(avr_const_address_lo16): New static function.
	(avr_assemble_integer): Use it to handle 3-byte integers.
	(avr_emit_movmemhi, avr_out_movmem): New functions.
	
	* config/avr/predicates.md (nox_general_operand): Handle new
	address spaces.
	* config/avr/avr.md (unspec): Add UNSPEC_MOVMEM.
	(adjust_len): Add xload, movmem.
	(SP_ADDR): New define_constants.
	(isa): Add "lpm", "lpmx", "elpm", "elpmx".
	(enabled): Handle them.
	(load<mode>_libgcc): New expander.
	(*load.<mode>.libgcc): Rename to load_<mode>_libgcc.
	(xload8_A, xload<mode>_A): New insn-and-splits.
	(xload_8, xload_<mode>_libgcc, xload_<mode>, loadmem_elpm): New insns.
	(mov<mode>): Handle new address spaces.
	(movmemhi): Rewrite using avr_emit_movmemhi.
	(MOVMEM_r_d): New mode attribute.
	(movmem_<mode>, movmem_qi_elpm): New insns.
	(setmemhi, *clrmemqi, *clrmemhi, strlenhi, *strlenhi): Unquote
	C-code.  Use label instead of hard-coded instrunction lengths.
	
libgcc/
	PR target/49868
	* config/avr/t-avr (LIB1ASMFUNCS): Add _xload_2 _xload_3 _xload_4.
	* config/avr/lib1funcs.S (__xload_2, __xload_3, __xload_4):
	New functions.

From-SVN: r181482
2011-11-18 16:44:00 +00:00
..
config re PR target/49868 (Implement named address space to place/access data in flash memory) 2011-11-18 16:44:00 +00:00
soft-fp soft-fp: Move to ../libgcc. 2011-08-05 15:13:48 +00:00
ChangeLog re PR target/49868 (Implement named address space to place/access data in flash memory) 2011-11-18 16:44:00 +00:00
config.host config.host (hppa*64*-*-hpux11*): Remove pa/t-stublib64 from tmake_file list. 2011-11-13 20:17:01 +00:00
configure Return gthr-posix.h to libgcc (PR bootstrap/50982) 2011-11-07 16:34:31 +00:00
configure.ac Return gthr-posix.h to libgcc (PR bootstrap/50982) 2011-11-07 16:34:31 +00:00
crtstuff.c Move libgcc_tm_file to toplevel libgcc 2011-11-02 15:26:35 +00:00
dfp-bit.c
dfp-bit.h Move libgcc_tm_file to toplevel libgcc 2011-11-02 15:26:35 +00:00
divmod.c Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
empty.mk
emutls.c Move libgcc_tm_file to toplevel libgcc 2011-11-02 15:26:35 +00:00
enable-execute-stack-empty.c
enable-execute-stack-mprotect.c
fixed-bit.c Move libgcc_tm_file to toplevel libgcc 2011-11-02 15:26:35 +00:00
fixed-bit.h
fixed-obj.mk
floatunsidf.c Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
floatunsisf.c Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
floatunsitf.c Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
floatunsixf.c Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
fp-bit.c Move libgcc_tm_file to toplevel libgcc 2011-11-02 15:26:35 +00:00
fp-bit.h Makefile.in (FPBIT_FUNCS, [...]): Remove. 2011-08-05 14:53:09 +00:00
gbl-ctors.h Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
gen-fixed.sh
generic-morestack-thread.c Move libgcc_tm_file to toplevel libgcc 2011-11-02 15:26:35 +00:00
generic-morestack.c generic-morestack.c: Include <string.h>. 2011-11-09 20:06:31 +00:00
generic-morestack.h
gstdint.h
gthr-posix.h Return gthr-posix.h to libgcc (PR bootstrap/50982) 2011-11-07 16:34:31 +00:00
gthr-single.h Move gthr to toplevel libgcc 2011-11-02 15:28:43 +00:00
gthr.h Move gthr to toplevel libgcc 2011-11-02 15:28:43 +00:00
libgcc2.c Move libgcc_tm_file to toplevel libgcc 2011-11-02 15:26:35 +00:00
libgcc2.h Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
libgcc-std.ver.in generic-morestack.c: Include <string.h>. 2011-11-09 20:06:31 +00:00
libgcov.c libgcov.c (struct gcov_fn_buffer): New struct. 2011-11-07 18:14:46 +00:00
longlong.h Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
Makefile.in re PR other/50991 (crtstuff.c:65:23: fatal error: libgcc_tm.h: No such file or directory) 2011-11-06 19:24:19 +00:00
memcmp.c Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
memcpy.c Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
memmove.c Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
memset.c Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
mkheader.sh Move libgcc_tm_file to toplevel libgcc 2011-11-02 15:26:35 +00:00
mkmap-flat.awk Move shlib support to toplevel libgcc 2011-11-02 10:49:46 +00:00
mkmap-symver.awk Move shlib support to toplevel libgcc 2011-11-02 10:49:46 +00:00
shared-object.mk
siditi-object.mk Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
static-object.mk
sync.c sync.c: Move to ../libgcc. 2011-08-09 15:40:30 +00:00
udivmod.c Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
udivmodsi4.c Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
unwind-arm-common.inc * unwind-arm-common.inc: Handle ID3/4 unwinding data. 2011-10-21 21:00:11 +00:00
unwind-c.c arm.h (ASM_PREFERRED_EH_DATA_FORMAT): Define. 2011-09-13 12:48:33 +00:00
unwind-compat.c Makefile.in (UNWIND_H): Remove. 2011-08-05 14:37:48 +00:00
unwind-compat.h Makefile.in (UNWIND_H): Remove. 2011-08-05 14:37:48 +00:00
unwind-dw2-fde-compat.c Makefile.in (UNWIND_H): Remove. 2011-08-05 14:37:48 +00:00
unwind-dw2-fde-dip.c Move libgcc_tm_file to toplevel libgcc 2011-11-02 15:26:35 +00:00
unwind-dw2-fde.c Move libgcc_tm_file to toplevel libgcc 2011-11-02 15:26:35 +00:00
unwind-dw2-fde.h Makefile.in (UNWIND_H): Remove. 2011-08-05 14:37:48 +00:00
unwind-dw2.c Move libgcc_tm_file to toplevel libgcc 2011-11-02 15:26:35 +00:00
unwind-dw2.h Makefile.in (UNWIND_H): Remove. 2011-08-05 14:37:48 +00:00
unwind-generic.h Makefile.in (UNWIND_H): Remove. 2011-08-05 14:37:48 +00:00
unwind-pe.h Makefile.in (UNWIND_H): Remove. 2011-08-05 14:37:48 +00:00
unwind-sjlj.c Move libgcc_tm_file to toplevel libgcc 2011-11-02 15:26:35 +00:00
unwind.inc Makefile.in (UNWIND_H): Remove. 2011-08-05 14:37:48 +00:00