gcc/libgcc
Georg-Johann Lay 2da8c1adcf re PR target/52261 ([avr] Add support for AVR Xmega cores)
libgcc/
	PR target/52261
	* config/avr/lib1funcs.S (__prologue_saves__): Handle AVR_XMEGA
	(__epilogue_restores__): Ditto.

gcc/
	PR target/52261
	* config/avr/avr-devices.c (avr_arch_types): Add avrxmega2,
	avrxmega4, avrxmega5, avrxmega6, avrxmega7.
	Rewrite initializers for .macro.
	* config/avr/avr-mcus.def (AVR_MCU): Add known MCUs:
	avrxmega2: atxmega16a4, atxmega16d4, atxmega16x1, atxmega32a4
	atxmega32d4, atxmega32x1.
	avrxmega4: atxmega64a3, atxmega64d3.
	avrxmega5: atxmega64a1, atxmega64a1u.
	avrxmega6: atxmega128a3, atxmega128d3, atxmega192a3, atxmega192d3,
	atxmega256a3, atxmega256a3b, atxmega256a3bu, atxmega256d3.
	avrxmega7: atxmega128a1, atxmega128a1u.

	* config/avr/multilib.h: Regenerate.
	* config/avr/t-multilib: Regenerate.
	* config/avr/avr-tables.opt: Regenerate.

	* config/avr/avr.h (enum avr_arch): Add: ARCH_AVRXMEGA2,
	ARCH_AVRXMEGA4,	ARCH_AVRXMEGA5, ARCH_AVRXMEGA6, ARCH_AVRXMEGA7.
	(struct base_arch_s): Rename reserved to xmega_p.
	Rename reserved2 to have_rampd.
	(AVR_XMEGA): New define.
	(AVR_HAVE_RAMPD, AVR_HAVE_RAMPX, AVR_HAVE_RAMPY): New defines.
	(AVR_HAVE_RAMPZ): Change definition to fit xmega.

	* config/avr/predicates.md (io_address_operand): Take into
	account SFR offset.
	(low_io_address_operand): Ditto.
	(high_io_address_operand): Ditto.
	
	* config/avr/avr.md (isa): Add alternatives no_xmega, xmega.
	(enabled, movhi_sp_r): Use them.

	* config/avr/avr-c.c (avr_cpu_cpp_builtins): Use
	cpp_define_formatted to built-in define __AVR_ARCH__.
	(__AVR_XMEGA__): New built-in define.
	(__AVR_HAVE_RAMPD__): New built-in define.
	(__AVR_HAVE_RAMPX__): New built-in define.
	(__AVR_HAVE_RAMPY__): New built-in define.
	(__AVR_HAVE_RAMPZ__): Change condition when to built-in define it.

	* config/avr/avr.c (avr_addr_t): Add ccp, rampd, rampx, rampy.
	(avr_option_override): Initialize them.
	(sreg_rtx, rampd_rtx, rampx_rtx, rampy_rtx): New GTY rtx.
	(avr_init_expanders): Initialize them. No more block several calls.
	(emit_push_sfr): New static function.
	(avr_prologue_setup_frame): Use it to push SREG, RAMPD/X/Y/Z as needed.
	Handle AVR_XMEGA.
	(expand_epilogue): Handle AVR_XMEGA. Pop RAMPD/X/Y/Z as needed.
	(avr_print_operand): Print addreeses as symbols for
	RAMPX, RAMPY, RAMPD, CCP.
	(output_movhi): Handle AVR_XMEGA when writing to SP.
	(avr_out_movhi_mr_r_xmega): New static function.
	(out_movhi_mr_r): Forward to avr_out_movhi_mr_r_xmega for AVR_XMEGA.
	(avr_file_start): Print symbol defines for __RAMPX__,  __RAMPY__,
	__RAMPD__,  __CCP__ as needed.


Co-Authored-By: Anatoly Sokolov <aesok@post.ru>
Co-Authored-By: Eric Weddington <eric.weddington@atmel.com>

From-SVN: r184269
2012-02-15 13:15:56 +00:00
..
config re PR target/52261 ([avr] Add support for AVR Xmega cores) 2012-02-15 13:15:56 +00:00
soft-fp soft-fp: Move to ../libgcc. 2011-08-05 15:13:48 +00:00
ChangeLog re PR target/52261 ([avr] Add support for AVR Xmega cores) 2012-02-15 13:15:56 +00:00
Makefile.in Makefile.in ($(srcdir)/emutls.c): Explain why it's in LIB2ADDEH et al. 2011-11-22 03:01:02 +00:00
config.host Add ports for TILE-Gx and TILEPro. 2012-02-14 10:02:21 +00:00
configure Interix resurrection 2012-01-23 06:25:28 +00:00
configure.ac Return gthr-posix.h to libgcc (PR bootstrap/50982) 2011-11-07 16:34:31 +00:00
crtstuff.c crtstuff.c (__do_global_dtors_aux_fini_array_entry): Align to the size of func_ptr. 2011-12-06 13:35:41 -08:00
dfp-bit.c dfp-bit.c, dfp-bit.h: Move to ../libgcc. 2011-07-11 14:40:56 +00:00
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-empty.c (__enable_execute_stack): Add prototype. 2011-06-22 13:20:07 +02:00
enable-execute-stack-mprotect.c re PR bootstrap/51006 (bootstrap fails on NetBSD 5.1) 2012-01-03 21:39:46 +00:00
fixed-bit.c Move libgcc_tm_file to toplevel libgcc 2011-11-02 15:26:35 +00:00
fixed-bit.h Makefile.in (LIBGCC_VER_FIXEDPOINT_GNU_PREFIX): New. 2011-08-01 12:02:45 +00:00
fixed-obj.mk fixed-bit.c, [...]: Move to ../libgcc. 2011-07-08 11:18:38 +00:00
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 fixed-obj.mk: New file to support fine-grain fixed-point functions. 2007-09-17 22:18:13 +00:00
generic-morestack-thread.c Move libgcc_tm_file to toplevel libgcc 2011-11-02 15:26:35 +00:00
generic-morestack.c Check __GLIBC__ when using __SIGRTMIN 2011-12-14 10:49:16 -08:00
generic-morestack.h common.opt (fsplit-stack): New option. 2010-09-27 19:48:20 +00:00
gstdint.h dfp.c (WORDS_BIGENDIAN): Define to 0 if not defined. 2008-06-11 00:43:09 +01:00
gthr-posix.h re PR libstdc++/51296 (Several 30_threads tests FAIL on Tru64 UNIX) 2012-02-07 09:19:27 +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
libgcc-std.ver.in generic-morestack.c (__splitstack_find): Check for NULL old stack value. 2011-11-28 05:44:31 +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
libgcov.c * libgcov.c (__gcov_init): Ignore objects with no functions. 2012-01-11 18:50:21 +00:00
longlong.h Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +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 shared-object.mk (c_flags-$o): Save c_flags. 2011-06-21 14:26:13 +00:00
siditi-object.mk Move libgcc2 to toplevel libgcc 2011-11-02 15:23:48 +00:00
static-object.mk static-object.mk (c_flags-$o): Save c_flags. 2011-11-21 00:41:12 +00:00
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: Include `tconfig.h', `tsystem.h' and `sys/sdt.h'. 2011-12-20 20:54:25 +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