From: Piotr Ziecik Date: Tue, 14 Aug 2012 18:59:54 +0000 (+0200) Subject: crossavr-gcc: Synchronized with official AVR toolchain 3.4.0.663. X-Git-Tag: auto/th/crossavr-gcc-4.6.2-1 X-Git-Url: http://git.pld-linux.org/?p=packages%2Fcrossavr-gcc.git;a=commitdiff_plain;h=6ef8d4808ff93999964b8cd19a9f4e5503de4d50 crossavr-gcc: Synchronized with official AVR toolchain 3.4.0.663. --- diff --git a/200-gcc-4.5.1-libiberty-Makefile.in.patch b/200-gcc-4.5.1-libiberty-Makefile.in.patch deleted file mode 100644 index d274878..0000000 --- a/200-gcc-4.5.1-libiberty-Makefile.in.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -Naurp libiberty/Makefile.in libiberty/Makefile.in ---- libiberty/Makefile.in 2010-03-02 00:09:56.000000000 -0600 -+++ libiberty/Makefile.in 2011-01-18 17:27:57.000000000 -0600 -@@ -321,7 +321,8 @@ libiberty.html : $(srcdir)/libiberty.tex - @MAINT@ echo stamp > stamp-functions - - INSTALL_DEST = @INSTALL_DEST@ --install: install_to_$(INSTALL_DEST) install-subdir -+#install: install_to_$(INSTALL_DEST) install-subdir -+install: - - # This is tricky. Even though CC in the Makefile contains - # multilib-specific flags, it's overridden by FLAGS_TO_PASS from the diff --git a/200-gcc-libiberty-Makefile.in.patch b/200-gcc-libiberty-Makefile.in.patch new file mode 100644 index 0000000..ff42fed --- /dev/null +++ b/200-gcc-libiberty-Makefile.in.patch @@ -0,0 +1,13 @@ +diff -aurp libiberty/Makefile.in libiberty/Makefile.in +--- libiberty/Makefile.in 2010-11-21 01:07:08.000000000 +0530 ++++ libiberty/Makefile.in 2011-06-21 12:26:09.000000000 +0530 +@@ -340,7 +340,8 @@ libiberty.html : $(srcdir)/libiberty.tex + @MAINT@ echo stamp > stamp-functions + + INSTALL_DEST = @INSTALL_DEST@ +-install: install_to_$(INSTALL_DEST) install-subdir ++#install: install_to_$(INSTALL_DEST) install-subdir ++install: + install-strip: install + + .PHONY: install install-strip diff --git a/300-gcc-4.5.1-fixedpoint-3-4-2010.patch b/300-gcc-fixedpoint-3-4-2010.patch similarity index 95% rename from 300-gcc-4.5.1-fixedpoint-3-4-2010.patch rename to 300-gcc-fixedpoint-3-4-2010.patch index 41d7cca..04c52d3 100644 --- a/300-gcc-4.5.1-fixedpoint-3-4-2010.patch +++ b/300-gcc-fixedpoint-3-4-2010.patch @@ -1,9 +1,9 @@ -diff -rupN gcc/config/avr/avr.c gcc/config/avr/avr.c ---- gcc/config/avr/avr.c 2010-04-02 14:54:46.000000000 -0500 -+++ gcc/config/avr/avr.c 2010-09-21 14:31:30.000000000 -0500 -@@ -192,6 +192,19 @@ static const struct attribute_spec avr_a - #undef TARGET_CAN_ELIMINATE - #define TARGET_CAN_ELIMINATE avr_can_eliminate +diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c +--- gcc/config/avr/avr.c 2011-10-27 16:45:17.000000000 +0530 ++++ gcc/config/avr/avr.c 2011-10-27 16:55:55.000000000 +0530 +@@ -236,6 +236,19 @@ static const struct default_options avr_ + #undef TARGET_EXCEPT_UNWIND_INFO + #define TARGET_EXCEPT_UNWIND_INFO sjlj_except_unwind_info +#undef TARGET_SCALAR_MODE_SUPPORTED_P +#define TARGET_SCALAR_MODE_SUPPORTED_P avr_scalar_mode_supported_p @@ -20,8 +20,8 @@ diff -rupN gcc/config/avr/avr.c gcc/config/avr/avr.c + struct gcc_target targetm = TARGET_INITIALIZER; - void -@@ -1609,9 +1622,9 @@ output_movqi (rtx insn, rtx operands[], + static void +@@ -1767,9 +1780,9 @@ output_movqi (rtx insn, rtx operands[], *l = 1; @@ -33,7 +33,7 @@ diff -rupN gcc/config/avr/avr.c gcc/config/avr/avr.c { if (test_hard_reg_class (STACK_REG, dest)) return AS2 (out,%0,%1); -@@ -1699,9 +1712,9 @@ output_movhi (rtx insn, rtx operands[], +@@ -1857,9 +1870,9 @@ output_movhi (rtx insn, rtx operands[], if (!l) l = &dummy; @@ -45,7 +45,7 @@ diff -rupN gcc/config/avr/avr.c gcc/config/avr/avr.c { if (test_hard_reg_class (STACK_REG, dest)) { -@@ -2424,6 +2437,14 @@ output_movsisf(rtx insn, rtx operands[], +@@ -2582,6 +2595,14 @@ output_movsisf(rtx insn, rtx operands[], { if (test_hard_reg_class (LD_REGS, dest)) /* ldi d,i */ { @@ -60,7 +60,7 @@ diff -rupN gcc/config/avr/avr.c gcc/config/avr/avr.c *l = 4; return (AS2 (ldi,%A0,lo8(%1)) CR_TAB AS2 (ldi,%B0,hi8(%1)) CR_TAB -@@ -4354,6 +4375,196 @@ avr_rotate_bytes (rtx operands[]) +@@ -4527,6 +4548,196 @@ avr_rotate_bytes (rtx operands[]) return true; } @@ -257,9 +257,9 @@ diff -rupN gcc/config/avr/avr.c gcc/config/avr/avr.c /* Modifies the length assigned to instruction INSN LEN is the initially computed length of the insn. */ -diff -rupN gcc/config/avr/avr-fixed.md gcc/config/avr/avr-fixed.md ---- gcc/config/avr/avr-fixed.md 1969-12-31 18:00:00.000000000 -0600 -+++ gcc/config/avr/avr-fixed.md 2010-09-21 14:31:30.000000000 -0500 +diff -Naurp gcc/config/avr/avr-fixed.md gcc/config/avr/avr-fixed.md +--- gcc/config/avr/avr-fixed.md 1970-01-01 05:30:00.000000000 +0530 ++++ gcc/config/avr/avr-fixed.md 2011-10-27 16:55:55.000000000 +0530 @@ -0,0 +1,338 @@ +;; -*- Mode: Scheme -*- +;; This file contains instructions that support fixed-point operations @@ -599,10 +599,10 @@ diff -rupN gcc/config/avr/avr-fixed.md gcc/config/avr/avr-fixed.md + neg %0" + [(set_attr "length" "2") + (set_attr "cc" "clobber")]) -diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md ---- gcc/config/avr/avr.md 2010-04-02 14:54:46.000000000 -0500 -+++ gcc/config/avr/avr.md 2010-09-21 14:33:24.000000000 -0500 -@@ -66,6 +66,15 @@ +diff -Naurp gcc/config/avr/avr.md gcc/config/avr/avr.md +--- gcc/config/avr/avr.md 2011-10-27 16:45:17.000000000 +0530 ++++ gcc/config/avr/avr.md 2011-10-27 16:55:55.000000000 +0530 +@@ -65,6 +65,15 @@ (include "predicates.md") (include "constraints.md") @@ -618,29 +618,29 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md ;; Condition code settings. (define_attr "cc" "none,set_czn,set_zn,set_n,compare,clobber" (const_string "none")) -@@ -181,9 +190,9 @@ +@@ -179,28 +188,27 @@ + DONE; }) - +- -(define_insn "*pushqi" -- [(set (mem:QI (post_dec (reg:HI REG_SP))) +- [(set (mem:QI (post_dec:HI (reg:HI REG_SP))) - (match_operand:QI 0 "reg_or_0_operand" "r,L"))] +(define_insn "*push" -+ [(set (mem:ALLQ (post_dec (reg:HI REG_SP))) -+ (match_operand:ALLQ 0 "reg_or_0_operand" "r,L"))] ++ [(set (mem:ALLQ (post_dec:HI (reg:HI REG_SP))) ++ (match_operand:ALLQ 0 "reg_or_0_operand" "r,L"))] "" "@ push %0 -@@ -191,18 +200,18 @@ + push __zero_reg__" [(set_attr "length" "1,1")]) - -(define_insn "*pushhi" -- [(set (mem:HI (post_dec (reg:HI REG_SP))) +- [(set (mem:HI (post_dec:HI (reg:HI REG_SP))) - (match_operand:HI 0 "reg_or_0_operand" "r,L"))] +(define_insn "*push" -+ [(set (mem:ALLH (post_dec (reg:HI REG_SP))) -+ (match_operand:ALLH 0 "reg_or_0_operand" "r,L"))] ++ [(set (mem:ALLH (post_dec:HI (reg:HI REG_SP))) ++ (match_operand:ALLH 0 "reg_or_0_operand" "r,L"))] "" "@ push %B0\;push %A0 @@ -648,15 +648,15 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md [(set_attr "length" "2,2")]) -(define_insn "*pushsi" -- [(set (mem:SI (post_dec (reg:HI REG_SP))) +- [(set (mem:SI (post_dec:HI (reg:HI REG_SP))) - (match_operand:SI 0 "reg_or_0_operand" "r,L"))] +(define_insn "*push" -+ [(set (mem:ALLS (post_dec (reg:HI REG_SP))) -+ (match_operand:ALLS 0 "reg_or_0_operand" "r,L"))] ++ [(set (mem:ALLS (post_dec:HI (reg:HI REG_SP))) ++ (match_operand:ALLS 0 "reg_or_0_operand" "r,L"))] "" "@ push %D0\;push %C0\;push %B0\;push %A0 -@@ -228,21 +237,21 @@ +@@ -226,21 +234,21 @@ ;; are call-saved registers, and most of LD_REGS are call-used registers, ;; so this may still be a win for registers live across function calls. @@ -689,7 +689,7 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md "* return output_movqi (insn, operands, NULL);" [(set_attr "length" "1,1,5,5,1,1,4") (set_attr "cc" "none,none,clobber,clobber,none,none,clobber")]) -@@ -274,17 +283,17 @@ +@@ -272,17 +280,17 @@ ;;============================================================================ ;; move word (16 bit) @@ -713,7 +713,7 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md } }") -@@ -339,20 +348,20 @@ +@@ -337,20 +345,20 @@ [(set_attr "length" "4") (set_attr "cc" "none")]) @@ -743,7 +743,7 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md "(AVR_HAVE_MOVW && REGNO (operands[0]) == REGNO (operands[2]) - 1 && REGNO (operands[1]) == REGNO (operands[3]) - 1)" -@@ -363,10 +372,10 @@ +@@ -361,10 +369,10 @@ }) (define_peephole2 ; movw_r @@ -758,7 +758,7 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md "(AVR_HAVE_MOVW && REGNO (operands[2]) == REGNO (operands[0]) - 1 && REGNO (operands[3]) == REGNO (operands[1]) - 1)" -@@ -379,26 +388,24 @@ +@@ -377,26 +385,24 @@ ;;========================================================================== ;; move double word (32 bit) @@ -793,7 +793,7 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md (match_dup 2)] "(operands[1] != const0_rtx && operands[1] != constm1_rtx)" -@@ -408,8 +415,8 @@ +@@ -406,8 +412,8 @@ ;; '*' because it is not used in rtl generation. (define_insn "*reload_insi" @@ -804,7 +804,7 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md (clobber (match_operand:QI 2 "register_operand" "=&d"))] "reload_completed" "* return output_reload_insisf (insn, operands, NULL);" -@@ -417,11 +424,11 @@ +@@ -415,11 +421,11 @@ (set_attr "cc" "none")]) @@ -821,7 +821,7 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md "* return output_movsisf (insn, operands, NULL);" [(set_attr "length" "4,4,8,9,4,10") (set_attr "cc" "none,set_zn,clobber,clobber,none,clobber")]) -@@ -958,23 +965,54 @@ +@@ -956,23 +962,54 @@ [(set_attr "type" "xcall") (set_attr "cc" "clobber")]) @@ -884,7 +884,7 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md movw %0,r0 clr r1" [(set_attr "length" "3") -@@ -1028,6 +1066,50 @@ +@@ -1026,6 +1063,50 @@ [(set_attr "type" "xcall") (set_attr "cc" "clobber")]) @@ -935,7 +935,7 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md ;; Operand 2 (reg:SI 18) not clobbered on the enhanced core. ;; All call-used registers clobbered otherwise - normal library call. (define_expand "mulsi3" -@@ -1572,9 +1654,9 @@ +@@ -1574,9 +1655,9 @@ ;;<< << << << << << << << << << << << << << << << << << << << << << << << << << ;; arithmetic shift left @@ -948,7 +948,7 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md (match_operand:QI 2 "general_operand" "")))] "" "") -@@ -1608,27 +1690,27 @@ +@@ -1610,27 +1691,27 @@ (set (match_dup 0) (and:QI (match_dup 0) (const_int -64)))] "") @@ -985,7 +985,7 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md (match_operand:QI 2 "general_operand" "r,L,P,O,K,n,Qm")))] "" "* return ashlsi3_out (insn, operands, NULL);" -@@ -1674,17 +1756,17 @@ +@@ -1676,17 +1757,17 @@ (define_peephole2 [(match_scratch:QI 3 "d") @@ -1009,7 +1009,7 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md (match_operand:QI 2 "const_int_operand" "L,P,O,K,n"))) (clobber (match_scratch:QI 3 "=X,X,X,X,&d"))] "reload_completed" -@@ -1694,17 +1776,17 @@ +@@ -1696,17 +1777,17 @@ (define_peephole2 [(match_scratch:QI 3 "d") @@ -1033,7 +1033,7 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md (match_operand:QI 2 "const_int_operand" "L,P,O,n"))) (clobber (match_scratch:QI 3 "=X,X,X,&d"))] "reload_completed" -@@ -1715,27 +1797,27 @@ +@@ -1717,27 +1798,27 @@ ;; >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> ;; arithmetic shift right @@ -1070,7 +1070,7 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md (match_operand:QI 2 "general_operand" "r,L,P,O,K,n,Qm")))] "" "* return ashrsi3_out (insn, operands, NULL);" -@@ -1746,17 +1828,17 @@ +@@ -1748,17 +1829,17 @@ (define_peephole2 [(match_scratch:QI 3 "d") @@ -1093,7 +1093,7 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md (match_operand:QI 2 "const_int_operand" "L,P,O,K,n"))) (clobber (match_scratch:QI 3 "=X,X,X,X,&d"))] "reload_completed" -@@ -1766,17 +1848,17 @@ +@@ -1768,17 +1849,17 @@ (define_peephole2 [(match_scratch:QI 3 "d") @@ -1116,7 +1116,7 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md (match_operand:QI 2 "const_int_operand" "L,P,O,n"))) (clobber (match_scratch:QI 3 "=X,X,X,&d"))] "reload_completed" -@@ -1787,54 +1869,54 @@ +@@ -1789,54 +1870,54 @@ ;; >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> ;; logical shift right @@ -1195,7 +1195,7 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md (match_operand:QI 2 "general_operand" "r,L,P,O,K,n,Qm")))] "" "* return lshrhi3_out (insn, operands, NULL);" -@@ -1889,17 +1971,17 @@ +@@ -1891,17 +1972,17 @@ (define_peephole2 [(match_scratch:QI 3 "d") @@ -1219,7 +1219,7 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md (match_operand:QI 2 "const_int_operand" "L,P,O,K,n"))) (clobber (match_scratch:QI 3 "=X,X,X,X,&d"))] "reload_completed" -@@ -1917,9 +1999,9 @@ +@@ -1919,9 +2000,9 @@ (clobber (match_dup 3))])] "") @@ -1232,7 +1232,7 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md (match_operand:QI 2 "const_int_operand" "L,P,O,n"))) (clobber (match_scratch:QI 3 "=X,X,X,&d"))] "reload_completed" -@@ -2163,27 +2245,27 @@ +@@ -2171,27 +2252,27 @@ ;; compare ; Optimize negated tests into reverse compare if overflow is undefined. @@ -1266,7 +1266,7 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md (const_int 0)))] "(!flag_wrapv && !flag_trapv && flag_strict_overflow)" "cp __zero_reg__,%A0 -@@ -2193,10 +2275,10 @@ +@@ -2201,10 +2282,10 @@ ;; Leave here the clobber used by the cmphi pattern for simplicity, even ;; though it is unused, because this pattern is synthesized by avr_reorg. @@ -1279,7 +1279,7 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md (clobber (match_scratch:QI 1 "=X"))] "" "cp __zero_reg__,%A0 -@@ -2204,9 +2286,9 @@ +@@ -2212,9 +2293,9 @@ [(set_attr "cc" "compare") (set_attr "length" "2")]) @@ -1291,7 +1291,7 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md (const_int 0)))] "(!flag_wrapv && !flag_trapv && flag_strict_overflow)" "cp __zero_reg__,%A0 -@@ -2216,10 +2298,10 @@ +@@ -2224,10 +2305,10 @@ [(set_attr "cc" "compare") (set_attr "length" "4")]) @@ -1304,7 +1304,7 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md (clobber (match_scratch:QI 1 "=X"))] "" "cp __zero_reg__,%A0 -@@ -2230,10 +2312,10 @@ +@@ -2238,10 +2319,10 @@ (set_attr "length" "4")]) @@ -1318,7 +1318,7 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md "" "@ tst %0 -@@ -2252,10 +2334,10 @@ +@@ -2260,10 +2341,10 @@ [(set_attr "cc" "compare") (set_attr "length" "1")]) @@ -1332,7 +1332,7 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md (clobber (match_scratch:QI 2 "=X,X,X,X,&d,&d,&d"))] "" "*{ -@@ -2300,10 +2382,10 @@ +@@ -2308,10 +2389,10 @@ (set_attr "length" "1,2,2,2,3,3,4")]) @@ -1346,9 +1346,9 @@ diff -rupN gcc/config/avr/avr.md gcc/config/avr/avr.md (clobber (match_scratch:QI 2 "=X,X,X,&d,&d,&d"))] "" "*{ -diff -rupN gcc/config/avr/avr-modes.def gcc/config/avr/avr-modes.def ---- gcc/config/avr/avr-modes.def 1969-12-31 18:00:00.000000000 -0600 -+++ gcc/config/avr/avr-modes.def 2010-09-21 14:31:30.000000000 -0500 +diff -Naurp gcc/config/avr/avr-modes.def gcc/config/avr/avr-modes.def +--- gcc/config/avr/avr-modes.def 1970-01-01 05:30:00.000000000 +0530 ++++ gcc/config/avr/avr-modes.def 2011-10-27 16:55:55.000000000 +0530 @@ -0,0 +1,34 @@ +/* Definitions of target machine for GCC for AVR. + Copyright (C) 2009 Free Software Foundation, Inc. @@ -1384,10 +1384,10 @@ diff -rupN gcc/config/avr/avr-modes.def gcc/config/avr/avr-modes.def + +ADJUST_IBIT (TA, 63); +ADJUST_FBIT (TA, 64); -diff -rupN gcc/config/avr/avr-protos.h gcc/config/avr/avr-protos.h ---- gcc/config/avr/avr-protos.h 2010-01-08 17:01:45.000000000 -0600 -+++ gcc/config/avr/avr-protos.h 2010-09-21 14:31:30.000000000 -0500 -@@ -84,6 +84,8 @@ extern const char *lshrhi3_out (rtx insn +diff -Naurp gcc/config/avr/avr-protos.h gcc/config/avr/avr-protos.h +--- gcc/config/avr/avr-protos.h 2011-10-27 16:45:17.000000000 +0530 ++++ gcc/config/avr/avr-protos.h 2011-10-27 16:55:55.000000000 +0530 +@@ -75,6 +75,8 @@ extern const char *lshrhi3_out (rtx insn extern const char *lshrsi3_out (rtx insn, rtx operands[], int *len); extern bool avr_rotate_bytes (rtx operands[]); @@ -1396,9 +1396,9 @@ diff -rupN gcc/config/avr/avr-protos.h gcc/config/avr/avr-protos.h extern void expand_prologue (void); extern void expand_epilogue (void); extern int avr_epilogue_uses (int regno); -diff -rupN gcc/config/avr/libgcc-fixed.S gcc/config/avr/libgcc-fixed.S ---- gcc/config/avr/libgcc-fixed.S 1969-12-31 18:00:00.000000000 -0600 -+++ gcc/config/avr/libgcc-fixed.S 2010-09-21 14:31:30.000000000 -0500 +diff -Naurp gcc/config/avr/libgcc-fixed.S gcc/config/avr/libgcc-fixed.S +--- gcc/config/avr/libgcc-fixed.S 1970-01-01 05:30:00.000000000 +0530 ++++ gcc/config/avr/libgcc-fixed.S 2011-10-27 16:55:55.000000000 +0530 @@ -0,0 +1,1123 @@ +/* -*- Mode: Asm -*- */ +/* Copyright (C) 2009 @@ -2523,10 +2523,10 @@ diff -rupN gcc/config/avr/libgcc-fixed.S gcc/config/avr/libgcc-fixed.S +#undef r_divHL +#undef r_divHH +#undef r_cnt -diff -rupN gcc/config/avr/libgcc.S gcc/config/avr/libgcc.S ---- gcc/config/avr/libgcc.S 2009-05-23 02:16:07.000000000 -0500 -+++ gcc/config/avr/libgcc.S 2010-09-21 14:31:30.000000000 -0500 -@@ -162,6 +162,23 @@ __mulhi3_exit: +diff -Naurp gcc/config/avr/libgcc.S gcc/config/avr/libgcc.S +--- gcc/config/avr/libgcc.S 2011-10-27 16:45:17.000000000 +0530 ++++ gcc/config/avr/libgcc.S 2011-10-27 16:55:55.000000000 +0530 +@@ -163,6 +163,23 @@ __mulhi3_exit: .global __mulhisi3 .func __mulhisi3 __mulhisi3: @@ -2550,7 +2550,7 @@ diff -rupN gcc/config/avr/libgcc.S gcc/config/avr/libgcc.S mov_l r18, r24 mov_h r19, r25 clr r24 -@@ -173,6 +190,7 @@ __mulhisi3: +@@ -174,6 +191,7 @@ __mulhisi3: dec r20 mov r21, r20 rjmp __mulsi3 @@ -2558,7 +2558,7 @@ diff -rupN gcc/config/avr/libgcc.S gcc/config/avr/libgcc.S .endfunc #endif /* defined (L_mulhisi3) */ -@@ -180,13 +198,31 @@ __mulhisi3: +@@ -181,13 +199,31 @@ __mulhisi3: .global __umulhisi3 .func __umulhisi3 __umulhisi3: @@ -2592,7 +2592,7 @@ diff -rupN gcc/config/avr/libgcc.S gcc/config/avr/libgcc.S .endfunc #endif /* defined (L_umulhisi3) */ -@@ -199,7 +235,6 @@ __umulhisi3: +@@ -200,7 +236,6 @@ __umulhisi3: #define r_arg1HL r24 #define r_arg1HH r25 /* multiplier High */ @@ -2600,7 +2600,7 @@ diff -rupN gcc/config/avr/libgcc.S gcc/config/avr/libgcc.S #define r_arg2L r18 /* multiplicand Low */ #define r_arg2H r19 #define r_arg2HL r20 -@@ -555,6 +590,23 @@ __divmodsi4_neg1: +@@ -556,6 +591,23 @@ __divmodsi4_neg1: .endfunc #endif /* defined (L_divmodsi4) */ @@ -2624,14 +2624,14 @@ diff -rupN gcc/config/avr/libgcc.S gcc/config/avr/libgcc.S /********************************** * This is a prologue subroutine **********************************/ -@@ -897,3 +949,4 @@ __tablejump_elpm__: +@@ -899,3 +951,4 @@ __tablejump_elpm__: .endfunc #endif /* defined (L_tablejump_elpm) */ +#include "libgcc-fixed.S" -diff -rupN gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2009-12-24 14:32:38.000000000 -0600 -+++ gcc/config/avr/t-avr 2010-09-21 14:31:30.000000000 -0500 +diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr +--- gcc/config/avr/t-avr 2011-10-27 16:45:17.000000000 +0530 ++++ gcc/config/avr/t-avr 2011-10-27 16:55:55.000000000 +0530 @@ -36,6 +36,8 @@ LIB1ASMSRC = avr/libgcc.S LIB1ASMFUNCS = \ _mulqi3 \ @@ -2681,10 +2681,10 @@ diff -rupN gcc/config/avr/t-avr gcc/config/avr/t-avr # We do not have the DF type. # Most of the C functions in libgcc2 use almost all registers, # so use -mcall-prologues for smaller code size. -diff -rupN gcc/cse.c gcc/cse.c ---- gcc/cse.c 2010-01-12 14:25:10.000000000 -0600 -+++ gcc/cse.c 2010-09-21 14:31:30.000000000 -0500 -@@ -3703,9 +3703,10 @@ fold_rtx (rtx x, rtx insn) +diff -Naurp gcc/cse.c gcc/cse.c +--- gcc/cse.c 2011-10-27 16:45:17.000000000 +0530 ++++ gcc/cse.c 2011-10-27 16:55:55.000000000 +0530 +@@ -3702,9 +3702,10 @@ fold_rtx (rtx x, rtx insn) && exact_log2 (- INTVAL (const_arg1)) >= 0))) break; @@ -2697,10 +2697,10 @@ diff -rupN gcc/cse.c gcc/cse.c break; if (is_shift -diff -rupN gcc/dwarf2out.c gcc/dwarf2out.c ---- gcc/dwarf2out.c 2010-07-01 07:31:19.000000000 -0500 -+++ gcc/dwarf2out.c 2010-09-21 14:35:35.000000000 -0500 -@@ -12017,6 +12017,12 @@ base_type_die (tree type) +diff -Naurp gcc/dwarf2out.c gcc/dwarf2out.c +--- gcc/dwarf2out.c 2011-10-27 16:45:17.000000000 +0530 ++++ gcc/dwarf2out.c 2011-10-27 16:55:55.000000000 +0530 +@@ -12790,6 +12790,12 @@ base_type_die (tree type) add_AT_unsigned (base_type_result, DW_AT_byte_size, int_size_in_bytes (type)); @@ -2713,7 +2713,7 @@ diff -rupN gcc/dwarf2out.c gcc/dwarf2out.c add_AT_unsigned (base_type_result, DW_AT_encoding, encoding); return base_type_result; -@@ -15482,7 +15488,11 @@ add_const_value_attribute (dw_die_ref di +@@ -16561,7 +16567,11 @@ add_const_value_attribute (dw_die_ref di case HIGH: case CONST_FIXED: @@ -2726,10 +2726,10 @@ diff -rupN gcc/dwarf2out.c gcc/dwarf2out.c case MEM: if (GET_CODE (XEXP (rtl, 0)) == CONST_STRING -diff -rupN gcc/fold-const.c gcc/fold-const.c ---- gcc/fold-const.c 2010-04-06 05:36:57.000000000 -0500 -+++ gcc/fold-const.c 2010-09-21 14:31:30.000000000 -0500 -@@ -12305,6 +12305,11 @@ fold_binary_loc (location_t loc, +diff -Naurp gcc/fold-const.c gcc/fold-const.c +--- gcc/fold-const.c 2011-10-27 16:45:17.000000000 +0530 ++++ gcc/fold-const.c 2011-10-27 16:55:55.000000000 +0530 +@@ -11782,6 +11782,11 @@ fold_binary_loc (location_t loc, if (TREE_CODE (arg1) == INTEGER_CST && tree_int_cst_sgn (arg1) < 0) return NULL_TREE; @@ -2741,10 +2741,10 @@ diff -rupN gcc/fold-const.c gcc/fold-const.c /* Turn (a OP c1) OP c2 into a OP (c1+c2). */ if (TREE_CODE (op0) == code && host_integerp (arg1, false) && TREE_INT_CST_LOW (arg1) < TYPE_PRECISION (type) -diff -rupN gcc/varasm.c gcc/varasm.c ---- gcc/varasm.c 2010-03-27 06:56:30.000000000 -0500 -+++ gcc/varasm.c 2010-09-21 14:31:30.000000000 -0500 -@@ -2709,7 +2709,7 @@ assemble_integer (rtx x, unsigned int si +diff -Naurp gcc/varasm.c gcc/varasm.c +--- gcc/varasm.c 2011-10-27 16:45:17.000000000 +0530 ++++ gcc/varasm.c 2011-10-27 16:55:55.000000000 +0530 +@@ -2504,7 +2504,7 @@ assemble_integer (rtx x, unsigned int si else mclass = MODE_INT; diff --git a/301-gcc-4.5.1-xmega-v14.patch b/301-gcc-xmega-v14.patch similarity index 74% rename from 301-gcc-4.5.1-xmega-v14.patch rename to 301-gcc-xmega-v14.patch index 9d0deb8..78095e5 100644 --- a/301-gcc-4.5.1-xmega-v14.patch +++ b/301-gcc-xmega-v14.patch @@ -1,7 +1,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c ---- gcc/config/avr/avr.c 2011-09-02 11:40:55.000000000 +0300 -+++ gcc/config/avr/avr.c 2011-09-02 11:40:01.000000000 +0300 -@@ -52,6 +52,7 @@ +--- gcc/config/avr/avr.c 2011-10-27 16:55:55.000000000 +0530 ++++ gcc/config/avr/avr.c 2011-10-27 17:00:24.000000000 +0530 +@@ -52,6 +52,7 @@ static void avr_option_override (void); static int avr_naked_function_p (tree); static int interrupt_function_p (tree); static int signal_function_p (tree); @@ -9,7 +9,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c static int avr_OS_task_function_p (tree); static int avr_OS_main_function_p (tree); static int avr_regs_to_save (HARD_REG_SET *); -@@ -122,6 +123,7 @@ static const struct attribute_spec avr_a +@@ -131,6 +132,7 @@ static const struct attribute_spec avr_a { "progmem", 0, 0, false, false, false, avr_handle_progmem_attribute }, { "signal", 0, 0, true, false, false, avr_handle_fndecl_attribute }, { "interrupt", 0, 0, true, false, false, avr_handle_fndecl_attribute }, @@ -17,7 +17,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c { "naked", 0, 0, false, true, true, avr_handle_fntype_attribute }, { "OS_task", 0, 0, false, true, true, avr_handle_fntype_attribute }, { "OS_main", 0, 0, false, true, true, avr_handle_fntype_attribute }, -@@ -314,6 +316,21 @@ signal_function_p (tree func) +@@ -391,6 +393,21 @@ signal_function_p (tree func) return a != NULL_TREE; } @@ -39,7 +39,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c /* Return nonzero if FUNC is a OS_task function. */ static int -@@ -543,6 +560,7 @@ expand_prologue (void) +@@ -655,6 +672,7 @@ expand_prologue (void) cfun->machine->is_naked = avr_naked_function_p (current_function_decl); cfun->machine->is_interrupt = interrupt_function_p (current_function_decl); cfun->machine->is_signal = signal_function_p (current_function_decl); @@ -47,122 +47,84 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c cfun->machine->is_OS_task = avr_OS_task_function_p (current_function_decl); cfun->machine->is_OS_main = avr_OS_main_function_p (current_function_decl); cfun->machine->stack_usage = 0; -@@ -583,18 +601,49 @@ expand_prologue (void) +@@ -688,9 +706,40 @@ expand_prologue (void) /* Push SREG. */ - insn = emit_move_insn (tmp_reg_rtx, -- gen_rtx_MEM (QImode, GEN_INT (SREG_ADDR))); -+ gen_rtx_MEM (QImode, GEN_INT (AVR_SREG_ADDR))); - RTX_FRAME_RELATED_P (insn) = 1; - insn = emit_move_insn (pushbyte, tmp_reg_rtx); - RTX_FRAME_RELATED_P (insn) = 1; - cfun->machine->stack_usage++; + /* ??? There's no dwarf2 column reserved for SREG. */ +- emit_move_insn (tmp_reg_rtx, gen_rtx_MEM (QImode, GEN_INT (SREG_ADDR))); ++ emit_move_insn (tmp_reg_rtx, gen_rtx_MEM (QImode, GEN_INT (AVR_SREG_ADDR))); + emit_push_byte (TMP_REGNO, false); + /* Push RAMPD, RAMPX, RAMPY. */ -+ if (AVR_HAVE_RAMPX_Y_D) -+ { -+ /* Push RAMPD. */ -+ insn = emit_move_insn (tmp_reg_rtx, -+ gen_rtx_MEM (QImode, GEN_INT (AVR_RAMPD_ADDR))); -+ RTX_FRAME_RELATED_P (insn) = 1; -+ insn = emit_move_insn (pushbyte, tmp_reg_rtx); -+ RTX_FRAME_RELATED_P (insn) = 1; ++ /* ++ Clear RAMP? registers if used for data access in the interrupt/signal ++ context. Do this after the zero register has been explictly cleared. ++ */ ++ if (AVR_HAVE_RAMPX_Y_D) ++ { ++ /* Push RAMPD. */ ++ emit_move_insn (tmp_reg_rtx, ++ gen_rtx_MEM (QImode, GEN_INT (AVR_RAMPD_ADDR))); ++ emit_push_byte (TMP_REGNO, false); + + /* Push RAMPX. */ + if (TEST_HARD_REG_BIT (set, REG_X) && TEST_HARD_REG_BIT (set, REG_X + 1)) + { -+ insn = emit_move_insn (tmp_reg_rtx, -+ gen_rtx_MEM (QImode, GEN_INT (AVR_RAMPX_ADDR))); -+ RTX_FRAME_RELATED_P (insn) = 1; -+ insn = emit_move_insn (pushbyte, tmp_reg_rtx); -+ RTX_FRAME_RELATED_P (insn) = 1; ++ emit_move_insn (tmp_reg_rtx, ++ gen_rtx_MEM (QImode, GEN_INT (AVR_RAMPX_ADDR))); ++ emit_push_byte (TMP_REGNO, false); + } + + /* Push RAMPY. */ + if (TEST_HARD_REG_BIT (set, REG_Y) && TEST_HARD_REG_BIT (set, REG_Y + 1)) + { -+ insn = emit_move_insn (tmp_reg_rtx, -+ gen_rtx_MEM (QImode, GEN_INT (AVR_RAMPY_ADDR))); -+ RTX_FRAME_RELATED_P (insn) = 1; -+ insn = emit_move_insn (pushbyte, tmp_reg_rtx); -+ RTX_FRAME_RELATED_P (insn) = 1; ++ emit_move_insn (tmp_reg_rtx, ++ gen_rtx_MEM (QImode, GEN_INT (AVR_RAMPY_ADDR))); ++ emit_push_byte (TMP_REGNO, false); + } -+ } ++ ++ } ++ + /* Push RAMPZ. */ - if(AVR_HAVE_RAMPZ - && (TEST_HARD_REG_BIT (set, REG_Z) && TEST_HARD_REG_BIT (set, REG_Z + 1))) + /* ??? There's no dwarf2 column reserved for RAMPZ. */ + if (AVR_HAVE_RAMPZ +@@ -698,7 +747,7 @@ expand_prologue (void) + && TEST_HARD_REG_BIT (set, REG_Z + 1)) { - insn = emit_move_insn (tmp_reg_rtx, -- gen_rtx_MEM (QImode, GEN_INT (RAMPZ_ADDR))); -+ gen_rtx_MEM (QImode, GEN_INT (AVR_RAMPZ_ADDR))); - RTX_FRAME_RELATED_P (insn) = 1; - insn = emit_move_insn (pushbyte, tmp_reg_rtx); - RTX_FRAME_RELATED_P (insn) = 1; -@@ -607,6 +656,41 @@ expand_prologue (void) + emit_move_insn (tmp_reg_rtx, +- gen_rtx_MEM (QImode, GEN_INT (RAMPZ_ADDR))); ++ gen_rtx_MEM (QImode, GEN_INT (AVR_RAMPZ_ADDR))); + emit_push_byte (TMP_REGNO, false); + } + +@@ -707,6 +756,8 @@ expand_prologue (void) /* Prevent any attempt to delete the setting of ZERO_REG! */ emit_use (zero_reg_rtx); + -+ -+ /* -+ Clear RAMP? registers if used for data access in the interrupt/signal -+ context. Do this after the zero register has been explictly cleared. -+ */ -+ if (AVR_HAVE_RAMPX_Y_D) -+ { -+ /* Set RAMPD to 0. */ -+ insn = emit_move_insn (gen_rtx_MEM (QImode, GEN_INT (AVR_RAMPD_ADDR)), const0_rtx); -+ RTX_FRAME_RELATED_P (insn) = 1; -+ -+ if (TEST_HARD_REG_BIT (set, REG_X) && TEST_HARD_REG_BIT (set, REG_X + 1)) -+ { -+ /* Set RAMPX to 0. */ -+ insn = emit_move_insn (gen_rtx_MEM (QImode, GEN_INT (AVR_RAMPX_ADDR)), const0_rtx); -+ RTX_FRAME_RELATED_P (insn) = 1; -+ } -+ -+ if (TEST_HARD_REG_BIT (set, REG_Y) && TEST_HARD_REG_BIT (set, REG_Y + 1)) -+ { -+ /* Set RAMPY to 0. */ -+ insn = emit_move_insn (gen_rtx_MEM (QImode, GEN_INT (AVR_RAMPY_ADDR)), const0_rtx); -+ RTX_FRAME_RELATED_P (insn) = 1; -+ } -+ -+ if(AVR_HAVE_RAMPZ -+ && (TEST_HARD_REG_BIT (set, REG_Z) && TEST_HARD_REG_BIT (set, REG_Z + 1))) -+ { -+ /* Set RAMPZ to 0. */ -+ insn = emit_move_insn (gen_rtx_MEM (QImode, GEN_INT (AVR_RAMPZ_ADDR)), const0_rtx); -+ RTX_FRAME_RELATED_P (insn) = 1; -+ } -+ } + } if (minimize && (frame_pointer_needed || (AVR_2_BYTE_PC && live_seq > 6) -@@ -698,16 +782,16 @@ expand_prologue (void) - insn = emit_move_insn (stack_pointer_rtx, frame_pointer_rtx); - RTX_FRAME_RELATED_P (insn) = 1; +@@ -829,14 +880,14 @@ expand_prologue (void) + { + emit_move_insn (stack_pointer_rtx, frame_pointer_rtx); } - else if (TARGET_NO_INTERRUPTS -- || cfun->machine->is_signal -- || cfun->machine->is_OS_main) -+ else if ((!AVR_XMEGA && TARGET_NO_INTERRUPTS) -+ || (!AVR_XMEGA && cfun->machine->is_signal) -+ || (!AVR_XMEGA && cfun->machine->is_OS_main)) ++ else if ((!AVR_XMEGA && TARGET_NO_INTERRUPTS ) + || cfun->machine->is_signal + || cfun->machine->is_OS_main) { - insn = - emit_insn (gen_movhi_sp_r_irq_off (stack_pointer_rtx, - frame_pointer_rtx)); - RTX_FRAME_RELATED_P (insn) = 1; + emit_insn (gen_movhi_sp_r_irq_off (stack_pointer_rtx, + frame_pointer_rtx)); } - else if (cfun->machine->is_interrupt) + else if (!AVR_XMEGA && cfun->machine->is_interrupt) { - insn = emit_insn (gen_movhi_sp_r_irq_on (stack_pointer_rtx, - frame_pointer_rtx)); -@@ -878,13 +962,13 @@ expand_epilogue (void) + emit_insn (gen_movhi_sp_r_irq_on (stack_pointer_rtx, + frame_pointer_rtx)); +@@ -1018,13 +1069,13 @@ expand_epilogue (void) { emit_move_insn (stack_pointer_rtx, frame_pointer_rtx); } @@ -179,49 +141,48 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c { emit_insn (gen_movhi_sp_r_irq_on (stack_pointer_rtx, frame_pointer_rtx)); -@@ -937,14 +1021,39 @@ expand_epilogue (void) - && (TEST_HARD_REG_BIT (set, REG_Z) && TEST_HARD_REG_BIT (set, REG_Z + 1))) +@@ -1082,14 +1133,38 @@ expand_epilogue (void) + && TEST_HARD_REG_BIT (set, REG_Z + 1)) { - emit_insn (gen_popqi (tmp_reg_rtx)); -- emit_move_insn (gen_rtx_MEM(QImode, GEN_INT(RAMPZ_ADDR)), -+ emit_move_insn (gen_rtx_MEM(QImode, GEN_INT(AVR_RAMPZ_ADDR)), -+ tmp_reg_rtx); -+ } -+ -+ /* Restore RAMPY, RAMPX, RAMPD using tmp reg as scratch. */ -+ if (AVR_HAVE_RAMPX_Y_D) -+ { -+ /* Pop RAMPY. */ -+ if (TEST_HARD_REG_BIT (set, REG_Y) && TEST_HARD_REG_BIT (set, REG_Y + 1)) -+ { -+ emit_insn (gen_popqi (tmp_reg_rtx)); -+ emit_move_insn (gen_rtx_MEM (QImode, GEN_INT (AVR_RAMPY_ADDR)), -+ tmp_reg_rtx); -+ } -+ -+ /* Pop RAMPX. */ -+ if (TEST_HARD_REG_BIT (set, REG_X) && TEST_HARD_REG_BIT (set, REG_X + 1)) -+ { -+ emit_insn (gen_popqi (tmp_reg_rtx)); -+ emit_move_insn (gen_rtx_MEM (QImode, GEN_INT (AVR_RAMPX_ADDR)), -+ tmp_reg_rtx); -+ } -+ -+ /* Pop RAMPD. */ -+ emit_insn (gen_popqi (tmp_reg_rtx)); -+ emit_move_insn (gen_rtx_MEM (QImode, GEN_INT (AVR_RAMPD_ADDR)), + emit_pop_byte (TMP_REGNO); +- emit_move_insn (gen_rtx_MEM (QImode, GEN_INT (RAMPZ_ADDR)), ++ emit_move_insn (gen_rtx_MEM (QImode, GEN_INT (AVR_RAMPZ_ADDR)), tmp_reg_rtx); } ++ /* Restore RAMPY, RAMPX, RAMPD using tmp reg as scratch. */ ++ if (AVR_HAVE_RAMPX_Y_D) ++ { ++ /* Pop RAMPY. */ ++ if (TEST_HARD_REG_BIT (set, REG_Y) && TEST_HARD_REG_BIT (set, REG_Y + 1)) ++ { ++ emit_insn (gen_popqi (tmp_reg_rtx)); ++ emit_move_insn (gen_rtx_MEM (QImode, GEN_INT (AVR_RAMPY_ADDR)), ++ tmp_reg_rtx); ++ } ++ ++ /* Pop RAMPX. */ ++ if (TEST_HARD_REG_BIT (set, REG_X) && TEST_HARD_REG_BIT (set, REG_X + 1)) ++ { ++ emit_insn (gen_popqi (tmp_reg_rtx)); ++ emit_move_insn (gen_rtx_MEM (QImode, GEN_INT (AVR_RAMPX_ADDR)), ++ tmp_reg_rtx); ++ } ++ /* Pop RAMPD. */ ++ emit_insn (gen_popqi (tmp_reg_rtx)); ++ emit_move_insn (gen_rtx_MEM (QImode, GEN_INT (AVR_RAMPD_ADDR)), ++ tmp_reg_rtx); ++ ++ } /* Restore SREG using tmp reg as scratch. */ - emit_insn (gen_popqi (tmp_reg_rtx)); + emit_pop_byte (TMP_REGNO); -- emit_move_insn (gen_rtx_MEM(QImode, GEN_INT(SREG_ADDR)), -+ emit_move_insn (gen_rtx_MEM(QImode, GEN_INT(AVR_SREG_ADDR)), +- emit_move_insn (gen_rtx_MEM (QImode, GEN_INT (SREG_ADDR)), ++ emit_move_insn (gen_rtx_MEM (QImode, GEN_INT (AVR_SREG_ADDR)), tmp_reg_rtx); /* Restore tmp REG. */ -@@ -1722,9 +1831,17 @@ output_movhi (rtx insn, rtx operands[], +@@ -1880,9 +1955,17 @@ output_movhi (rtx insn, rtx operands[], return *l = 1, AS2 (out,__SP_L__,%A1); /* Use simple load of stack pointer if no interrupts are used. */ @@ -240,7 +201,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c *l = 5; return (AS2 (in,__tmp_reg__,__SREG__) CR_TAB "cli" CR_TAB -@@ -1732,6 +1849,7 @@ output_movhi (rtx insn, rtx operands[], +@@ -1890,6 +1973,7 @@ output_movhi (rtx insn, rtx operands[], AS2 (out,__SREG__,__tmp_reg__) CR_TAB AS2 (out,__SP_L__,%A1)); } @@ -248,7 +209,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c else if (test_hard_reg_class (STACK_REG, src)) { *l = 2; -@@ -1865,7 +1983,7 @@ out_movqi_r_mr (rtx insn, rtx op[], int +@@ -2023,7 +2107,7 @@ out_movqi_r_mr (rtx insn, rtx op[], int if (CONSTANT_ADDRESS_P (x)) { @@ -257,7 +218,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c { *l = 1; return AS2 (in,%0,__SREG__); -@@ -1873,7 +1991,8 @@ out_movqi_r_mr (rtx insn, rtx op[], int +@@ -2031,7 +2115,8 @@ out_movqi_r_mr (rtx insn, rtx op[], int if (optimize > 0 && io_address_operand (x, QImode)) { *l = 1; @@ -267,7 +228,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c } *l = 2; return AS2 (lds,%0,%m1); -@@ -2061,8 +2180,9 @@ out_movhi_r_mr (rtx insn, rtx op[], int +@@ -2219,8 +2304,9 @@ out_movhi_r_mr (rtx insn, rtx op[], int if (optimize > 0 && io_address_operand (base, HImode)) { *l = 2; @@ -279,7 +240,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c } *l = 4; return (AS2 (lds,%A0,%m1) CR_TAB -@@ -2561,7 +2681,7 @@ out_movqi_mr_r (rtx insn, rtx op[], int +@@ -2719,7 +2805,7 @@ out_movqi_mr_r (rtx insn, rtx op[], int if (CONSTANT_ADDRESS_P (x)) { @@ -288,7 +249,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c { *l = 1; return AS2 (out,__SREG__,%1); -@@ -2569,7 +2689,8 @@ out_movqi_mr_r (rtx insn, rtx op[], int +@@ -2727,7 +2813,8 @@ out_movqi_mr_r (rtx insn, rtx op[], int if (optimize > 0 && io_address_operand (x, QImode)) { *l = 1; @@ -298,7 +259,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c } *l = 2; return AS2 (sts,%m0,%1); -@@ -2648,9 +2769,18 @@ out_movhi_mr_r (rtx insn, rtx op[], int +@@ -2806,9 +2893,18 @@ out_movhi_mr_r (rtx insn, rtx op[], int if (optimize > 0 && io_address_operand (base, HImode)) { *l = 2; @@ -319,7 +280,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c return *l = 4, (AS2 (sts,%m0+1,%B1) CR_TAB AS2 (sts,%m0,%A1)); } -@@ -2667,11 +2797,20 @@ out_movhi_mr_r (rtx insn, rtx op[], int +@@ -2825,11 +2921,20 @@ out_movhi_mr_r (rtx insn, rtx op[], int AS2 (adiw,r26,1) CR_TAB AS2 (st,X,__tmp_reg__)); else @@ -340,7 +301,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c } else { -@@ -2679,14 +2818,27 @@ out_movhi_mr_r (rtx insn, rtx op[], int +@@ -2837,14 +2942,27 @@ out_movhi_mr_r (rtx insn, rtx op[], int return *l=2, (AS2 (st,X+,%A1) CR_TAB AS2 (st,X,%B1)); else @@ -368,7 +329,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c } else if (GET_CODE (base) == PLUS) { -@@ -2697,6 +2849,8 @@ out_movhi_mr_r (rtx insn, rtx op[], int +@@ -2855,6 +2973,8 @@ out_movhi_mr_r (rtx insn, rtx op[], int if (reg_base != REG_Y) fatal_insn ("incorrect insn:",insn); @@ -377,7 +338,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c if (disp <= 63 + MAX_LD_OFFSET (GET_MODE (dest))) return *l = 4, (AS2 (adiw,r28,%o0-62) CR_TAB AS2 (std,Y+63,%B1) CR_TAB -@@ -2710,11 +2864,29 @@ out_movhi_mr_r (rtx insn, rtx op[], int +@@ -2868,11 +2988,29 @@ out_movhi_mr_r (rtx insn, rtx op[], int AS2 (subi,r28,lo8(%o0)) CR_TAB AS2 (sbci,r29,hi8(%o0))); } @@ -407,7 +368,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c *l = 7; return (AS2 (mov,__tmp_reg__,r26) CR_TAB AS2 (mov,__zero_reg__,r27) CR_TAB -@@ -2724,21 +2896,57 @@ out_movhi_mr_r (rtx insn, rtx op[], int +@@ -2882,21 +3020,57 @@ out_movhi_mr_r (rtx insn, rtx op[], int AS1 (clr,__zero_reg__) CR_TAB AS2 (sbiw,r26,%o0)); } @@ -466,7 +427,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c { if (REGNO (XEXP (base, 0)) == REG_X) { -@@ -4874,6 +5082,16 @@ avr_asm_declare_function_name (FILE *fil +@@ -5047,6 +5221,16 @@ avr_asm_declare_function_name (FILE *fil } } @@ -483,7 +444,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c ASM_OUTPUT_TYPE_DIRECTIVE (file, name, "function"); ASM_OUTPUT_LABEL (file, name); } -@@ -5174,7 +5392,8 @@ avr_file_start (void) +@@ -5387,7 +5571,8 @@ avr_file_start (void) /* fprintf (asm_out_file, "\t.arch %s\n", avr_mcu_name);*/ fputs ("__SREG__ = 0x3f\n" "__SP_H__ = 0x3e\n" @@ -493,7 +454,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c fputs ("__tmp_reg__ = 0\n" "__zero_reg__ = 1\n", asm_out_file); -@@ -6273,16 +6492,17 @@ avr_out_sbxx_branch (rtx insn, rtx opera +@@ -6527,16 +6712,17 @@ avr_out_sbxx_branch (rtx insn, rtx opera if (GET_CODE (operands[1]) == CONST_INT) { @@ -516,8 +477,8 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c output_asm_insn (AS2 (sbrs,__tmp_reg__,%2), operands); else diff -Naurp gcc/config/avr/avr-c.c gcc/config/avr/avr-c.c ---- gcc/config/avr/avr-c.c 2009-12-24 23:32:38.000000000 +0300 -+++ gcc/config/avr/avr-c.c 2011-09-02 11:40:01.000000000 +0300 +--- gcc/config/avr/avr-c.c 2011-10-27 16:55:06.000000000 +0530 ++++ gcc/config/avr/avr-c.c 2011-10-27 17:00:24.000000000 +0530 @@ -81,5 +81,18 @@ avr_cpu_cpp_builtins (struct cpp_reader if (TARGET_NO_INTERRUPTS) @@ -538,8 +499,8 @@ diff -Naurp gcc/config/avr/avr-c.c gcc/config/avr/avr-c.c } diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2009-07-17 21:49:03.000000000 +0300 -+++ gcc/config/avr/avr-devices.c 2011-09-02 11:42:48.000000000 +0300 +--- gcc/config/avr/avr-devices.c 2011-10-27 16:55:06.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2011-10-27 17:00:24.000000000 +0530 @@ -36,7 +36,14 @@ const struct base_arch_s avr_arch_types[ { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0x0060, "__AVR_ARCH__=4", "avr4" }, { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0x0060, "__AVR_ARCH__=5", "avr5" }, @@ -556,9 +517,9 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c }; /* List of all known AVR MCU types - if updated, it has to be kept -@@ -189,6 +196,38 @@ const struct mcu_type_s avr_mcu_types[] +@@ -216,6 +223,38 @@ const struct mcu_type_s avr_mcu_types[] { "avr6", ARCH_AVR6, NULL, 0, 0x0200, "m2561" }, - { "atmega2560", ARCH_AVR6, "__AVR_ATmega2560__", 0, 0x0200, "m2561" }, + { "atmega2560", ARCH_AVR6, "__AVR_ATmega2560__", 0, 0x0200, "m2560" }, { "atmega2561", ARCH_AVR6, "__AVR_ATmega2561__", 0, 0x0200, "m2561" }, + /* Enhanced, == 256K. */ + /* Xmega, <= 8K FLASH. */ @@ -566,9 +527,9 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c + { "avrxmega2", ARCH_AVRXMEGA2, NULL, 0, 0x2000, "x32a4" }, + { "atxmega16a4", ARCH_AVRXMEGA2, "__AVR_ATxmega16A4__", 0, 0x2000, "x16a4" }, + { "atxmega16d4", ARCH_AVRXMEGA2, "__AVR_ATxmega16D4__", 0, 0x2000, "x16d4" }, -+ { "atxmega16x1", ARCH_AVRXMEGA2, "__AVR_ATxmega16X1__", 0, 0x2000, "x16x1" }, + { "atxmega32a4", ARCH_AVRXMEGA2, "__AVR_ATxmega32A4__", 0, 0x2000, "x32a4" }, + { "atxmega32d4", ARCH_AVRXMEGA2, "__AVR_ATxmega32D4__", 0, 0x2000, "x32d4" }, ++ { "atxmega32x1", ARCH_AVRXMEGA2, "__AVR_ATxmega32X1__", 0, 0x2000, "x32x1" }, + /* Xmega, > 8K, <= 64K FLASH, > 64K RAM. */ + /* { "avrxmega3", ARCH_AVRXMEGA3, NULL }, */ + /* Xmega, > 64K, <= 128K FLASH, <= 64K RAM. */ @@ -596,8 +557,8 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c { "avr1", ARCH_AVR1, NULL, 0, 0x0060, "s1200" }, { "at90s1200", ARCH_AVR1, "__AVR_AT90S1200__", 0, 0x0060, "s1200" }, diff -Naurp gcc/config/avr/avr.h gcc/config/avr/avr.h ---- gcc/config/avr/avr.h 2010-01-12 02:12:14.000000000 +0300 -+++ gcc/config/avr/avr.h 2011-09-02 11:40:01.000000000 +0300 +--- gcc/config/avr/avr.h 2011-10-27 16:55:06.000000000 +0530 ++++ gcc/config/avr/avr.h 2011-10-27 17:00:24.000000000 +0530 @@ -45,11 +45,11 @@ struct base_arch_s { /* Core have 'EICALL' and 'EIJMP' instructions. */ int have_eijmp_eicall; @@ -648,8 +609,8 @@ diff -Naurp gcc/config/avr/avr.h gcc/config/avr/avr.h +#define AVR_SREG_ADDR (AVR_XMEGA ? 0x3F: 0x5F) #define TARGET_VERSION fprintf (stderr, " (GNU assembler syntax)"); - #define OVERRIDE_OPTIONS avr_override_options () -@@ -842,6 +857,10 @@ struct GTY(()) machine_function + #define BITS_BIG_ENDIAN 0 +@@ -822,6 +837,10 @@ struct GTY(()) machine_function as specified by the "signal" attribute. */ int is_signal; @@ -661,9 +622,9 @@ diff -Naurp gcc/config/avr/avr.h gcc/config/avr/avr.h as specified by the "OS_task" attribute. */ int is_OS_task; diff -Naurp gcc/config/avr/avr.md gcc/config/avr/avr.md ---- gcc/config/avr/avr.md 2011-09-02 11:40:55.000000000 +0300 -+++ gcc/config/avr/avr.md 2011-09-02 11:40:01.000000000 +0300 -@@ -49,9 +49,6 @@ +--- gcc/config/avr/avr.md 2011-10-27 16:55:55.000000000 +0530 ++++ gcc/config/avr/avr.md 2011-10-27 17:00:24.000000000 +0530 +@@ -48,9 +48,6 @@ (TMP_REGNO 0) ; temporary register r0 (ZERO_REGNO 1) ; zero register r1 @@ -673,7 +634,7 @@ diff -Naurp gcc/config/avr/avr.md gcc/config/avr/avr.md (UNSPEC_STRLEN 0) (UNSPEC_INDEX_JMP 1) (UNSPEC_SEI 2) -@@ -2962,7 +2959,8 @@ +@@ -2969,7 +2966,8 @@ "(optimize > 0)" { operands[2] = GEN_INT (exact_log2 (~INTVAL (operands[1]) & 0xff)); @@ -683,7 +644,7 @@ diff -Naurp gcc/config/avr/avr.md gcc/config/avr/avr.md } [(set_attr "length" "1") (set_attr "cc" "none")]) -@@ -2974,7 +2972,8 @@ +@@ -2981,7 +2979,8 @@ "(optimize > 0)" { operands[2] = GEN_INT (exact_log2 (INTVAL (operands[1]) & 0xff)); @@ -694,9 +655,9 @@ diff -Naurp gcc/config/avr/avr.md gcc/config/avr/avr.md [(set_attr "length" "1") (set_attr "cc" "none")]) diff -Naurp gcc/config/avr/libgcc.S gcc/config/avr/libgcc.S ---- gcc/config/avr/libgcc.S 2011-09-02 11:40:55.000000000 +0300 -+++ gcc/config/avr/libgcc.S 2011-09-02 11:40:01.000000000 +0300 -@@ -637,11 +637,19 @@ __prologue_saves__: +--- gcc/config/avr/libgcc.S 2011-10-27 16:55:55.000000000 +0530 ++++ gcc/config/avr/libgcc.S 2011-10-27 17:00:24.000000000 +0530 +@@ -638,11 +638,19 @@ __prologue_saves__: in r29,__SP_H__ sub r28,r26 sbc r29,r27 @@ -716,7 +677,7 @@ diff -Naurp gcc/config/avr/libgcc.S gcc/config/avr/libgcc.S #if defined (__AVR_HAVE_EIJMP_EICALL__) eijmp #else -@@ -679,11 +687,18 @@ __epilogue_restores__: +@@ -680,11 +688,18 @@ __epilogue_restores__: ldd r27,Y+1 add r28,r30 adc r29,__zero_reg__ @@ -736,8 +697,8 @@ diff -Naurp gcc/config/avr/libgcc.S gcc/config/avr/libgcc.S mov_h r29, r27 ret diff -Naurp gcc/config/avr/predicates.md gcc/config/avr/predicates.md ---- gcc/config/avr/predicates.md 2009-12-24 22:53:57.000000000 +0300 -+++ gcc/config/avr/predicates.md 2011-09-02 11:40:01.000000000 +0300 +--- gcc/config/avr/predicates.md 2011-10-27 16:55:06.000000000 +0530 ++++ gcc/config/avr/predicates.md 2011-10-27 17:00:24.000000000 +0530 @@ -45,17 +45,23 @@ ;; Return true if OP is a valid address for lower half of I/O space. (define_predicate "low_io_address_operand" @@ -766,8 +727,8 @@ diff -Naurp gcc/config/avr/predicates.md gcc/config/avr/predicates.md ;; Return 1 if OP is the zero constant for MODE. (define_predicate "const0_operand" diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2011-09-02 11:40:55.000000000 +0300 -+++ gcc/config/avr/t-avr 2011-09-02 11:41:56.000000000 +0300 +--- gcc/config/avr/t-avr 2011-10-27 16:55:55.000000000 +0530 ++++ gcc/config/avr/t-avr 2011-10-27 17:00:24.000000000 +0530 @@ -107,8 +107,8 @@ fp-bit.c: $(srcdir)/config/fp-bit.c $(sr FPBIT = fp-bit.c @@ -779,17 +740,17 @@ diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr # The many avr2 matches are not listed here - this is the default. MULTILIB_MATCHES = \ -@@ -223,7 +223,25 @@ MULTILIB_MATCHES = \ - mmcu?avr51=mmcu?m3000s \ - mmcu?avr51=mmcu?m3001b \ +@@ -252,7 +252,25 @@ MULTILIB_MATCHES = \ + mmcu?avr51=mmcu?at90usb1286 \ + mmcu?avr51=mmcu?at90usb1287 \ mmcu?avr6=mmcu?atmega2560 \ - mmcu?avr6=mmcu?atmega2561 + mmcu?avr6=mmcu?atmega2561 \ + mmcu?avrxmega2=mmcu?atxmega16a4 \ + mmcu?avrxmega2=mmcu?atxmega16d4 \ -+ mmcu?avrxmega2=mmcu?atxmega16x1 \ + mmcu?avrxmega2=mmcu?atxmega32d4 \ + mmcu?avrxmega2=mmcu?atxmega32a4 \ ++ mmcu?avrxmega2=mmcu?atxmega32x1 \ + mmcu?avrxmega4=mmcu?atxmega64a3 \ + mmcu?avrxmega4=mmcu?atxmega64d3 \ + mmcu?avrxmega5=mmcu?atxmega64a1 \ diff --git a/302-gcc-4.5.1-avrtiny10.patch b/302-gcc-avrtiny10.patch similarity index 94% rename from 302-gcc-4.5.1-avrtiny10.patch rename to 302-gcc-avrtiny10.patch index 3fc0ae1..98ed7ff 100644 --- a/302-gcc-4.5.1-avrtiny10.patch +++ b/302-gcc-avrtiny10.patch @@ -1,7 +1,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c ---- gcc/config/avr/avr.c 2011-09-02 11:45:05.000000000 +0300 -+++ gcc/config/avr/avr.c 2011-09-02 11:46:03.000000000 +0300 -@@ -232,8 +232,8 @@ avr_override_options (void) +--- gcc/config/avr/avr.c 2011-10-27 17:00:24.000000000 +0530 ++++ gcc/config/avr/avr.c 2011-10-27 17:47:15.000000000 +0530 +@@ -274,8 +274,8 @@ avr_option_override (void) avr_current_arch = &avr_arch_types[avr_current_device->arch]; avr_extra_arch_macro = avr_current_device->macro; @@ -12,7 +12,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c init_machine_status = avr_init_machine_status; } -@@ -1641,7 +1641,7 @@ avr_simplify_comparison_p (enum machine_ +@@ -1771,7 +1771,7 @@ avr_simplify_comparison_p (enum machine_ int function_arg_regno_p(int r) { @@ -21,7 +21,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c } /* Initializing the variable cum for the state at the beginning -@@ -1651,7 +1651,11 @@ void +@@ -1781,7 +1781,11 @@ void init_cumulative_args (CUMULATIVE_ARGS *cum, tree fntype, rtx libname, tree fndecl ATTRIBUTE_UNUSED) { @@ -31,9 +31,9 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c cum->nregs = 18; + cum->regno = FIRST_CUM_REG; - if (!libname && fntype) - { -@@ -1675,9 +1679,8 @@ avr_num_arg_regs (enum machine_mode mode + if (!libname && stdarg_p (fntype)) + cum->nregs = 0; +@@ -1799,9 +1803,8 @@ avr_num_arg_regs (enum machine_mode mode else size = GET_MODE_SIZE (mode); @@ -44,7 +44,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c return (size + 1) & ~1; } -@@ -2009,10 +2012,20 @@ out_movqi_r_mr (rtx insn, rtx op[], int +@@ -2133,10 +2136,20 @@ out_movqi_r_mr (rtx insn, rtx op[], int fatal_insn ("incorrect insn:",insn); if (disp <= 63 + MAX_LD_OFFSET (GET_MODE (src))) @@ -66,7 +66,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c return *l = 5, (AS2 (subi,r28,lo8(-%o1)) CR_TAB AS2 (sbci,r29,hi8(-%o1)) CR_TAB AS2 (ld,%0,Y) CR_TAB -@@ -2025,15 +2038,38 @@ out_movqi_r_mr (rtx insn, rtx op[], int +@@ -2149,15 +2162,38 @@ out_movqi_r_mr (rtx insn, rtx op[], int it but I have this situation with extremal optimizing options. */ if (reg_overlap_mentioned_p (dest, XEXP (x,0)) || reg_unused_after (insn, XEXP (x,0))) @@ -108,7 +108,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c } *l = 1; return AS2 (ld,%0,%1); -@@ -2073,14 +2109,34 @@ out_movhi_r_mr (rtx insn, rtx op[], int +@@ -2197,14 +2233,34 @@ out_movhi_r_mr (rtx insn, rtx op[], int AS2 (ld,%B0,X)); } *l = 3; @@ -145,7 +145,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (ldd,%B0,%1+1)); } } -@@ -2095,12 +2151,30 @@ out_movhi_r_mr (rtx insn, rtx op[], int +@@ -2219,12 +2275,30 @@ out_movhi_r_mr (rtx insn, rtx op[], int fatal_insn ("incorrect insn:",insn); if (disp <= 63 + MAX_LD_OFFSET (GET_MODE (src))) @@ -178,7 +178,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (sbci,r29,hi8(-%o1)) CR_TAB AS2 (ld,%A0,Y) CR_TAB AS2 (ldd,%B0,Y+1) CR_TAB -@@ -2115,12 +2189,23 @@ out_movhi_r_mr (rtx insn, rtx op[], int +@@ -2239,12 +2313,23 @@ out_movhi_r_mr (rtx insn, rtx op[], int *l = 4; if (reg_base == reg_dest) @@ -204,7 +204,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (ld,%A0,X+) CR_TAB AS2 (ld,%B0,X) CR_TAB AS2 (sbiw,r26,%o1+1)); -@@ -2129,14 +2214,54 @@ out_movhi_r_mr (rtx insn, rtx op[], int +@@ -2253,14 +2338,54 @@ out_movhi_r_mr (rtx insn, rtx op[], int if (reg_base == reg_dest) { *l = 3; @@ -262,7 +262,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c } else if (GET_CODE (base) == PRE_DEC) /* (--R) */ { -@@ -2148,7 +2273,13 @@ out_movhi_r_mr (rtx insn, rtx op[], int +@@ -2272,7 +2397,13 @@ out_movhi_r_mr (rtx insn, rtx op[], int if (REGNO (XEXP (base, 0)) == REG_X) { *l = 4; @@ -277,7 +277,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (ld,%A0,X+) CR_TAB AS2 (ld,%B0,X) CR_TAB AS2 (sbiw,r26,1)); -@@ -2156,7 +2287,16 @@ out_movhi_r_mr (rtx insn, rtx op[], int +@@ -2280,7 +2411,16 @@ out_movhi_r_mr (rtx insn, rtx op[], int else { *l = 3; @@ -295,7 +295,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (ld,%A0,%p1) CR_TAB AS2 (ldd,%B0,%p1+1)); } -@@ -2212,13 +2352,23 @@ out_movsi_r_mr (rtx insn, rtx op[], int +@@ -2336,13 +2476,23 @@ out_movsi_r_mr (rtx insn, rtx op[], int { if (reg_dest == REG_X) /* "ld r26,-X" is undefined */ @@ -320,7 +320,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c else if (reg_dest == REG_X - 2) return *l=5, (AS2 (ld,%A0,X+) CR_TAB AS2 (ld,%B0,X+) CR_TAB -@@ -2231,7 +2381,13 @@ out_movsi_r_mr (rtx insn, rtx op[], int +@@ -2355,7 +2505,13 @@ out_movsi_r_mr (rtx insn, rtx op[], int AS2 (ld,%C0,X+) CR_TAB AS2 (ld,%D0,X)); else @@ -335,7 +335,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (ld,%B0,X+) CR_TAB AS2 (ld,%C0,X+) CR_TAB AS2 (ld,%D0,X) CR_TAB -@@ -2240,22 +2396,97 @@ out_movsi_r_mr (rtx insn, rtx op[], int +@@ -2364,22 +2520,97 @@ out_movsi_r_mr (rtx insn, rtx op[], int else { if (reg_dest == reg_base) @@ -436,7 +436,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c } } else if (GET_CODE (base) == PLUS) /* (R + i) */ -@@ -2268,14 +2499,36 @@ out_movsi_r_mr (rtx insn, rtx op[], int +@@ -2392,14 +2623,36 @@ out_movsi_r_mr (rtx insn, rtx op[], int fatal_insn ("incorrect insn:",insn); if (disp <= 63 + MAX_LD_OFFSET (GET_MODE (src))) @@ -475,7 +475,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (sbci,r29,hi8(-%o1)) CR_TAB AS2 (ld,%A0,Y) CR_TAB AS2 (ldd,%B0,Y+1) CR_TAB -@@ -2293,7 +2546,16 @@ out_movsi_r_mr (rtx insn, rtx op[], int +@@ -2417,7 +2670,16 @@ out_movsi_r_mr (rtx insn, rtx op[], int { *l = 7; /* "ld r26,-X" is undefined */ @@ -493,7 +493,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (ld,r29,X) CR_TAB AS2 (ld,r28,-X) CR_TAB AS2 (ld,__tmp_reg__,-X) CR_TAB -@@ -2303,14 +2565,29 @@ out_movsi_r_mr (rtx insn, rtx op[], int +@@ -2427,14 +2689,29 @@ out_movsi_r_mr (rtx insn, rtx op[], int } *l = 6; if (reg_dest == REG_X - 2) @@ -525,7 +525,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (ld,%A0,X+) CR_TAB AS2 (ld,%B0,X+) CR_TAB AS2 (ld,%C0,X+) CR_TAB -@@ -2318,18 +2595,99 @@ out_movsi_r_mr (rtx insn, rtx op[], int +@@ -2442,18 +2719,99 @@ out_movsi_r_mr (rtx insn, rtx op[], int AS2 (sbiw,r26,%o1+3)); } if (reg_dest == reg_base) @@ -628,7 +628,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (ldd,%B0,%B1) CR_TAB AS2 (ldd,%C0,%C1) CR_TAB AS2 (ldd,%D0,%D1)); -@@ -2380,14 +2738,30 @@ out_movsi_mr_r (rtx insn, rtx op[], int +@@ -2504,14 +2862,30 @@ out_movsi_mr_r (rtx insn, rtx op[], int { /* "st X+,r26" is undefined */ if (reg_unused_after (insn, base)) @@ -661,7 +661,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (st,X,r26) CR_TAB AS2 (adiw,r26,1) CR_TAB AS2 (st,X+,__tmp_reg__) CR_TAB -@@ -2406,7 +2780,16 @@ out_movsi_mr_r (rtx insn, rtx op[], int +@@ -2530,7 +2904,16 @@ out_movsi_mr_r (rtx insn, rtx op[], int AS2 (st,%0,__tmp_reg__) CR_TAB AS1 (clr,__zero_reg__)); else @@ -679,7 +679,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (mov,__tmp_reg__,%D1) CR_TAB AS2 (st,%0+,%A1) CR_TAB AS2 (st,%0+,%B1) CR_TAB -@@ -2415,18 +2798,44 @@ out_movsi_mr_r (rtx insn, rtx op[], int +@@ -2539,18 +2922,44 @@ out_movsi_mr_r (rtx insn, rtx op[], int AS1 (clr,__zero_reg__) CR_TAB AS2 (sbiw,r26,3)); } @@ -726,7 +726,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c else if (GET_CODE (base) == PLUS) /* (R + i) */ { int disp = INTVAL (XEXP (base, 1)); -@@ -2437,14 +2846,35 @@ out_movsi_mr_r (rtx insn, rtx op[], int +@@ -2561,14 +2970,35 @@ out_movsi_mr_r (rtx insn, rtx op[], int fatal_insn ("incorrect insn:",insn); if (disp <= 63 + MAX_LD_OFFSET (GET_MODE (dest))) @@ -765,7 +765,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (sbci,r29,hi8(-%o0)) CR_TAB AS2 (st,Y,%A1) CR_TAB AS2 (std,Y+1,%B1) CR_TAB -@@ -2459,7 +2889,18 @@ out_movsi_mr_r (rtx insn, rtx op[], int +@@ -2583,7 +3013,18 @@ out_movsi_mr_r (rtx insn, rtx op[], int if (reg_src == REG_X) { *l = 9; @@ -785,7 +785,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (mov,__zero_reg__,r27) CR_TAB AS2 (adiw,r26,%o0) CR_TAB AS2 (st,X+,__tmp_reg__) CR_TAB -@@ -2472,7 +2913,18 @@ out_movsi_mr_r (rtx insn, rtx op[], int +@@ -2596,7 +3037,18 @@ out_movsi_mr_r (rtx insn, rtx op[], int else if (reg_src == REG_X - 2) { *l = 9; @@ -805,7 +805,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (mov,__zero_reg__,r27) CR_TAB AS2 (adiw,r26,%o0) CR_TAB AS2 (st,X+,r24) CR_TAB -@@ -2483,14 +2935,46 @@ out_movsi_mr_r (rtx insn, rtx op[], int +@@ -2607,14 +3059,46 @@ out_movsi_mr_r (rtx insn, rtx op[], int AS2 (sbiw,r26,%o0+3)); } *l = 6; @@ -854,7 +854,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (std,%B0,%B1) CR_TAB AS2 (std,%C0,%C1) CR_TAB AS2 (std,%D0,%D1)); -@@ -2707,7 +3191,16 @@ out_movqi_mr_r (rtx insn, rtx op[], int +@@ -2831,7 +3315,16 @@ out_movqi_mr_r (rtx insn, rtx op[], int fatal_insn ("incorrect insn:",insn); if (disp <= 63 + MAX_LD_OFFSET (GET_MODE (dest))) @@ -872,7 +872,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (std,Y+63,%1) CR_TAB AS2 (sbiw,r28,%o0-63)); -@@ -2722,11 +3215,21 @@ out_movqi_mr_r (rtx insn, rtx op[], int +@@ -2846,11 +3339,21 @@ out_movqi_mr_r (rtx insn, rtx op[], int if (reg_overlap_mentioned_p (src, XEXP (x, 0))) { if (reg_unused_after (insn, XEXP (x,0))) @@ -896,7 +896,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (adiw,r26,%o0) CR_TAB AS2 (st,X,__tmp_reg__) CR_TAB AS2 (sbiw,r26,%o0)); -@@ -2734,16 +3237,38 @@ out_movqi_mr_r (rtx insn, rtx op[], int +@@ -2858,16 +3361,38 @@ out_movqi_mr_r (rtx insn, rtx op[], int else { if (reg_unused_after (insn, XEXP (x,0))) @@ -938,7 +938,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c } *l = 1; return AS2 (st,%0,%1); -@@ -2792,20 +3317,39 @@ out_movhi_mr_r (rtx insn, rtx op[], int +@@ -2916,20 +3441,39 @@ out_movhi_mr_r (rtx insn, rtx op[], int { /* "st X+,r26" and "st -X,r26" are undefined. */ if (!mem_volatile_p && reg_unused_after (insn, src)) @@ -981,7 +981,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (st,X,r26) CR_TAB AS2 (adiw,r26,1) CR_TAB AS2 (st,X,__tmp_reg__) CR_TAB -@@ -2820,11 +3364,19 @@ out_movhi_mr_r (rtx insn, rtx op[], int +@@ -2944,11 +3488,19 @@ out_movhi_mr_r (rtx insn, rtx op[], int else { if (!AVR_XMEGA) @@ -1003,7 +1003,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (st,X,%B1) CR_TAB AS2 (sbiw,r26,1)); } -@@ -2833,13 +3385,41 @@ out_movhi_mr_r (rtx insn, rtx op[], int +@@ -2957,13 +3509,41 @@ out_movhi_mr_r (rtx insn, rtx op[], int else { if (!AVR_XMEGA) @@ -1047,7 +1047,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c else if (GET_CODE (base) == PLUS) { int disp = INTVAL (XEXP (base, 1)); -@@ -2852,12 +3432,30 @@ out_movhi_mr_r (rtx insn, rtx op[], int +@@ -2976,12 +3556,30 @@ out_movhi_mr_r (rtx insn, rtx op[], int if (!AVR_XMEGA) { if (disp <= 63 + MAX_LD_OFFSET (GET_MODE (dest))) @@ -1080,7 +1080,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (sbci,r29,hi8(-%o0)) CR_TAB AS2 (std,Y+1,%B1) CR_TAB AS2 (st,Y,%A1) CR_TAB -@@ -2867,12 +3465,30 @@ out_movhi_mr_r (rtx insn, rtx op[], int +@@ -2991,12 +3589,30 @@ out_movhi_mr_r (rtx insn, rtx op[], int else { if (disp <= 63 + MAX_LD_OFFSET (GET_MODE (dest))) @@ -1113,7 +1113,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (sbci,r29,hi8(-%o0)) CR_TAB AS2 (st,Y,%A1) CR_TAB AS2 (std,Y+1,%B1) CR_TAB -@@ -2888,7 +3504,16 @@ out_movhi_mr_r (rtx insn, rtx op[], int +@@ -3012,7 +3628,16 @@ out_movhi_mr_r (rtx insn, rtx op[], int if (!AVR_XMEGA) { *l = 7; @@ -1131,7 +1131,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (mov,__zero_reg__,r27) CR_TAB AS2 (adiw,r26,%o0+1) CR_TAB AS2 (st,X,__zero_reg__) CR_TAB -@@ -2899,19 +3524,35 @@ out_movhi_mr_r (rtx insn, rtx op[], int +@@ -3023,19 +3648,35 @@ out_movhi_mr_r (rtx insn, rtx op[], int else { *l = 7; @@ -1171,7 +1171,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (st,X,%B1) CR_TAB AS2 (st,-X,%A1) CR_TAB AS2 (sbiw,r26,%o0)); -@@ -2919,7 +3560,13 @@ out_movhi_mr_r (rtx insn, rtx op[], int +@@ -3043,7 +3684,13 @@ out_movhi_mr_r (rtx insn, rtx op[], int else { *l = 4; @@ -1186,7 +1186,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (st,X+,%A1) CR_TAB AS2 (st,X,%B1) CR_TAB AS2 (sbiw,r26,%o0+1)); -@@ -2927,11 +3574,49 @@ out_movhi_mr_r (rtx insn, rtx op[], int +@@ -3051,11 +3698,49 @@ out_movhi_mr_r (rtx insn, rtx op[], int } if (!AVR_XMEGA) @@ -1238,7 +1238,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c } else if (GET_CODE (base) == PRE_DEC) /* (--R) */ { -@@ -2951,15 +3636,30 @@ out_movhi_mr_r (rtx insn, rtx op[], int +@@ -3075,15 +3760,30 @@ out_movhi_mr_r (rtx insn, rtx op[], int if (REGNO (XEXP (base, 0)) == REG_X) { *l = 4; @@ -1271,7 +1271,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (st,%p0,%A1) CR_TAB AS2 (adiw,%r0,2)); } -@@ -3049,7 +3749,9 @@ out_tsthi (rtx insn, rtx op, int *l) +@@ -3173,7 +3873,9 @@ out_tsthi (rtx insn, rtx op, int *l) if (test_hard_reg_class (ADDW_REGS, op)) { if (l) *l = 1; @@ -1282,7 +1282,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c } if (l) *l = 2; return (AS2 (cp,%A0,__zero_reg__) CR_TAB -@@ -3070,7 +3772,11 @@ out_tstsi (rtx insn, rtx op, int *l) +@@ -3194,7 +3896,11 @@ out_tstsi (rtx insn, rtx op, int *l) if (test_hard_reg_class (ADDW_REGS, op)) { if (l) *l = 3; @@ -1295,7 +1295,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c AS2 (cpc,%C0,__zero_reg__) CR_TAB AS2 (cpc,%D0,__zero_reg__)); } -@@ -5392,10 +6098,12 @@ avr_file_start (void) +@@ -5571,10 +6277,12 @@ avr_file_start (void) /* fprintf (asm_out_file, "\t.arch %s\n", avr_mcu_name);*/ fputs ("__SREG__ = 0x3f\n" "__SP_H__ = 0x3e\n" @@ -1312,8 +1312,8 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c /* FIXME: output these only if there is anything in the .data / .bss diff -Naurp gcc/config/avr/avr-c.c gcc/config/avr/avr-c.c ---- gcc/config/avr/avr-c.c 2011-09-02 11:45:05.000000000 +0300 -+++ gcc/config/avr/avr-c.c 2011-09-02 11:46:03.000000000 +0300 +--- gcc/config/avr/avr-c.c 2011-10-27 17:00:24.000000000 +0530 ++++ gcc/config/avr/avr-c.c 2011-10-27 17:47:15.000000000 +0530 @@ -94,5 +94,9 @@ avr_cpu_cpp_builtins (struct cpp_reader cpp_define (pfile, "__AVR_HAVE_RAMPD__"); } @@ -1325,10 +1325,10 @@ diff -Naurp gcc/config/avr/avr-c.c gcc/config/avr/avr-c.c } diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-09-02 11:45:05.000000000 +0300 -+++ gcc/config/avr/avr-devices.c 2011-09-02 11:46:03.000000000 +0300 +--- gcc/config/avr/avr-devices.c 2011-10-27 17:00:24.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2011-10-27 17:47:15.000000000 +0530 @@ -26,24 +26,25 @@ - /* List of all known AVR MCU architectyres. */ + /* List of all known AVR MCU architectures. */ const struct base_arch_s avr_arch_types[] = { - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x0060, NULL, "avr2" }, /* unknown device specified */ @@ -1371,7 +1371,7 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c }; /* List of all known AVR MCU types - if updated, it has to be kept -@@ -228,6 +229,14 @@ const struct mcu_type_s avr_mcu_types[] +@@ -255,6 +256,14 @@ const struct mcu_type_s avr_mcu_types[] { "avrxmega7", ARCH_AVRXMEGA7, NULL, 0, 0x2000, "x128a1" }, { "atxmega128a1", ARCH_AVRXMEGA7, "__AVR_ATxmega128A1__", 0, 0x2000, "x128a1" }, { "atxmega128a1u", ARCH_AVRXMEGA7, "__AVR_ATxmega128A1U__", 0, 0x2000, "x128a1u" }, @@ -1387,8 +1387,8 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c { "avr1", ARCH_AVR1, NULL, 0, 0x0060, "s1200" }, { "at90s1200", ARCH_AVR1, "__AVR_AT90S1200__", 0, 0x0060, "s1200" }, diff -Naurp gcc/config/avr/avr.h gcc/config/avr/avr.h ---- gcc/config/avr/avr.h 2011-09-02 11:45:05.000000000 +0300 -+++ gcc/config/avr/avr.h 2011-09-02 11:46:03.000000000 +0300 +--- gcc/config/avr/avr.h 2011-10-27 17:00:24.000000000 +0530 ++++ gcc/config/avr/avr.h 2011-10-27 17:47:15.000000000 +0530 @@ -51,6 +51,9 @@ struct base_arch_s { /* Core have RAMPX, RAMPY and RAMPD registers. */ int have_rampx_y_d; @@ -1417,15 +1417,15 @@ diff -Naurp gcc/config/avr/avr.h gcc/config/avr/avr.h #define AVR_HAVE_RAMPX_Y_D (avr_current_arch->have_rampx_y_d) #define AVR_2_BYTE_PC (!AVR_HAVE_EIJMP_EICALL) -@@ -249,7 +254,6 @@ extern GTY(()) section *progmem_section; +@@ -245,7 +250,6 @@ extern GTY(()) section *progmem_section; - #define ORDER_REGS_FOR_LOCAL_ALLOC order_regs_for_local_alloc () + #define ADJUST_REG_ALLOC_ORDER order_regs_for_local_alloc () - #define HARD_REGNO_NREGS(REGNO, MODE) ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD) #define HARD_REGNO_MODE_OK(REGNO, MODE) avr_hard_regno_mode_ok(REGNO, MODE) -@@ -313,6 +317,41 @@ enum reg_class { +@@ -309,6 +313,41 @@ enum reg_class { {0xffffffff,0x00000003} /* ALL_REGS */ \ } @@ -1468,19 +1468,19 @@ diff -Naurp gcc/config/avr/avr.h gcc/config/avr/avr.h /* The following macro defines cover classes for Integrated Register diff -Naurp gcc/config/avr/avr.md gcc/config/avr/avr.md ---- gcc/config/avr/avr.md 2011-09-02 11:45:05.000000000 +0300 -+++ gcc/config/avr/avr.md 2011-09-02 11:46:03.000000000 +0300 -@@ -186,6 +186,9 @@ - DONE; - }) +--- gcc/config/avr/avr.md 2011-10-27 17:00:24.000000000 +0530 ++++ gcc/config/avr/avr.md 2011-10-27 17:47:15.000000000 +0530 +@@ -417,6 +417,9 @@ + [(set_attr "length" "8") + (set_attr "cc" "none")]) +(define_constants + [(TMP_REGNO_AVRTINY10 16) ; temporary register r16 + (ZERO_REGNO_AVRTINY10 17)]) ; zero register r17 - (define_insn "*push" - [(set (mem:ALLQ (post_dec (reg:HI REG_SP))) -@@ -479,7 +482,7 @@ + (define_insn "*mov" + [(set (match_operand:ALLS 0 "nonimmediate_operand" "=r,r,r,Qm,!d,r") +@@ -476,7 +479,7 @@ rtx addr1 = copy_to_mode_reg (Pmode, XEXP (operands[1], 0)); /* Create rtx for tmp register - we use this as scratch. */ @@ -1489,7 +1489,7 @@ diff -Naurp gcc/config/avr/avr.md gcc/config/avr/avr.md if (GET_CODE (operands[2]) != CONST_INT) FAIL; -@@ -2900,7 +2903,7 @@ +@@ -2907,7 +2910,7 @@ UNSPEC_INDEX_JMP)) (use (label_ref (match_operand 1 "" ""))) (clobber (match_dup 0))] @@ -1499,8 +1499,8 @@ diff -Naurp gcc/config/avr/avr.md gcc/config/avr/avr.md rol r31 lpm diff -Naurp gcc/config/avr/libgcc-fixed.S gcc/config/avr/libgcc-fixed.S ---- gcc/config/avr/libgcc-fixed.S 2011-09-02 11:40:55.000000000 +0300 -+++ gcc/config/avr/libgcc-fixed.S 2011-09-02 11:46:03.000000000 +0300 +--- gcc/config/avr/libgcc-fixed.S 2011-10-27 17:00:03.000000000 +0530 ++++ gcc/config/avr/libgcc-fixed.S 2011-10-27 17:47:15.000000000 +0530 @@ -29,13 +29,17 @@ Boston, MA 02110-1301, USA. */ /* Fixed point library routines for avr. */ @@ -1942,8 +1942,8 @@ diff -Naurp gcc/config/avr/libgcc-fixed.S gcc/config/avr/libgcc-fixed.S com r_quoHH com r_quoHL diff -Naurp gcc/config/avr/libgcc.S gcc/config/avr/libgcc.S ---- gcc/config/avr/libgcc.S 2011-09-02 11:45:05.000000000 +0300 -+++ gcc/config/avr/libgcc.S 2011-09-02 11:46:03.000000000 +0300 +--- gcc/config/avr/libgcc.S 2011-10-27 17:00:24.000000000 +0530 ++++ gcc/config/avr/libgcc.S 2011-10-27 17:47:15.000000000 +0530 @@ -22,8 +22,13 @@ a copy of the GCC Runtime Library Except see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ @@ -1958,7 +1958,7 @@ diff -Naurp gcc/config/avr/libgcc.S gcc/config/avr/libgcc.S #define __SREG__ 0x3f #define __SP_H__ 0x3e #define __SP_L__ 0x3d -@@ -140,7 +145,12 @@ __mulhi3_skip1: +@@ -141,7 +146,12 @@ __mulhi3_skip1: lsr r_arg1H ; gets LSB of multiplier ror r_arg1L @@ -1971,7 +1971,7 @@ diff -Naurp gcc/config/avr/libgcc.S gcc/config/avr/libgcc.S brne __mulhi3_loop ; exit if multiplier = 0 __mulhi3_exit: mov r_arg1H,r_resH ; result to return register -@@ -304,7 +314,12 @@ __mulsi3_skip1: +@@ -305,7 +315,12 @@ __mulsi3_skip1: ror r_arg1H ror r_arg1L brne __mulsi3_loop @@ -1984,7 +1984,7 @@ diff -Naurp gcc/config/avr/libgcc.S gcc/config/avr/libgcc.S cpc r_arg1H,r_arg1L brne __mulsi3_loop ; exit if multiplier = 0 __mulsi3_exit: -@@ -610,6 +625,7 @@ __divmodsi4_neg1: +@@ -611,6 +626,7 @@ __divmodsi4_neg1: /********************************** * This is a prologue subroutine **********************************/ @@ -1992,7 +1992,7 @@ diff -Naurp gcc/config/avr/libgcc.S gcc/config/avr/libgcc.S #if defined (L_prologue) .global __prologue_saves__ -@@ -663,7 +679,6 @@ __prologue_saves__: +@@ -664,7 +680,6 @@ __prologue_saves__: * This is an epilogue subroutine */ #if defined (L_epilogue) @@ -2000,7 +2000,7 @@ diff -Naurp gcc/config/avr/libgcc.S gcc/config/avr/libgcc.S .global __epilogue_restores__ .func __epilogue_restores__ __epilogue_restores__: -@@ -704,6 +719,7 @@ __epilogue_restores__: +@@ -705,6 +720,7 @@ __epilogue_restores__: ret .endfunc #endif /* defined (L_epilogue) */ @@ -2008,7 +2008,7 @@ diff -Naurp gcc/config/avr/libgcc.S gcc/config/avr/libgcc.S #ifdef L_exit .section .fini9,"ax",@progbits -@@ -730,6 +746,7 @@ _cleanup: +@@ -731,6 +747,7 @@ _cleanup: .endfunc #endif /* defined (L_cleanup) */ @@ -2016,7 +2016,7 @@ diff -Naurp gcc/config/avr/libgcc.S gcc/config/avr/libgcc.S #ifdef L_tablejump .global __tablejump2__ .func __tablejump2__ -@@ -762,7 +779,9 @@ __tablejump__: +@@ -763,7 +780,9 @@ __tablejump__: #endif .endfunc #endif /* defined (L_tablejump) */ @@ -2026,7 +2026,7 @@ diff -Naurp gcc/config/avr/libgcc.S gcc/config/avr/libgcc.S #ifdef L_copy_data .section .init4,"ax",@progbits .global __do_copy_data -@@ -824,6 +843,7 @@ __do_copy_data: +@@ -825,6 +844,7 @@ __do_copy_data: brne .L__do_copy_data_loop #endif /* !defined(__AVR_HAVE_ELPMX__) && !defined(__AVR_HAVE_ELPM__) */ #endif /* L_copy_data */ @@ -2035,19 +2035,19 @@ diff -Naurp gcc/config/avr/libgcc.S gcc/config/avr/libgcc.S /* __do_clear_bss is only necessary if there is anything in .bss section. */ @@ -864,7 +884,12 @@ __do_global_ctors: - ldi r20, hh8(__ctors_end) + ldi r16, hh8(__ctors_end) rjmp .L__do_global_ctors_start .L__do_global_ctors_loop: -+#if defined (__AVR_TINY__) -+ subi r28, lo8(2) -+ sbci r29, hi8(2) -+#else ++ #if defined (__AVR_TINY__) ++ subi r28, lo8(2) ++ sbci r29, hi8(2) ++ #else sbiw r28, 2 -+#endif - sbc r20, __zero_reg__ ++ #endif + sbc r16, __zero_reg__ mov_h r31, r29 mov_l r30, r28 -@@ -882,7 +907,12 @@ __do_global_ctors: +@@ -883,7 +908,12 @@ __do_global_ctors: ldi r29, hi8(__ctors_end) rjmp .L__do_global_ctors_start .L__do_global_ctors_loop: @@ -2061,19 +2061,19 @@ diff -Naurp gcc/config/avr/libgcc.S gcc/config/avr/libgcc.S mov_l r30, r28 XCALL __tablejump__ @@ -905,7 +935,12 @@ __do_global_dtors: - ldi r20, hh8(__dtors_start) + ldi r16, hh8(__dtors_start) rjmp .L__do_global_dtors_start .L__do_global_dtors_loop: -+#if defined (__AVR_TINY__) -+ subi r28, lo8(2) -+ sbci r29, hi8(2) -+#else ++ #if defined (__AVR_TINY__) ++ subi r28, lo8(2) ++ sbci r29, hi8(2) ++ #else sbiw r28, 2 -+#endif - sbc r20, __zero_reg__ ++ #endif + sbc r16, __zero_reg__ mov_h r31, r29 mov_l r30, r28 -@@ -926,7 +961,12 @@ __do_global_dtors: +@@ -927,7 +962,12 @@ __do_global_dtors: mov_h r31, r29 mov_l r30, r28 XCALL __tablejump__ @@ -2086,7 +2086,7 @@ diff -Naurp gcc/config/avr/libgcc.S gcc/config/avr/libgcc.S .L__do_global_dtors_start: cpi r28, lo8(__dtors_end) cpc r29, r17 -@@ -934,6 +974,7 @@ __do_global_dtors: +@@ -935,6 +975,7 @@ __do_global_dtors: #endif /* defined(__AVR_HAVE_RAMPZ__) */ #endif /* L_dtors */ @@ -2094,7 +2094,7 @@ diff -Naurp gcc/config/avr/libgcc.S gcc/config/avr/libgcc.S #ifdef L_tablejump_elpm .global __tablejump_elpm__ .func __tablejump_elpm__ -@@ -963,5 +1004,6 @@ __tablejump_elpm__: +@@ -965,5 +1006,6 @@ __tablejump_elpm__: #endif /* defined (__AVR_HAVE_ELPM__) */ .endfunc #endif /* defined (L_tablejump_elpm) */ @@ -2102,8 +2102,8 @@ diff -Naurp gcc/config/avr/libgcc.S gcc/config/avr/libgcc.S #include "libgcc-fixed.S" diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2011-09-02 11:45:05.000000000 +0300 -+++ gcc/config/avr/t-avr 2011-09-02 11:46:03.000000000 +0300 +--- gcc/config/avr/t-avr 2011-10-27 17:00:24.000000000 +0530 ++++ gcc/config/avr/t-avr 2011-10-27 17:47:15.000000000 +0530 @@ -107,8 +107,8 @@ fp-bit.c: $(srcdir)/config/fp-bit.c $(sr FPBIT = fp-bit.c @@ -2115,7 +2115,7 @@ diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr # The many avr2 matches are not listed here - this is the default. MULTILIB_MATCHES = \ -@@ -241,7 +241,13 @@ MULTILIB_MATCHES = \ +@@ -270,7 +270,13 @@ MULTILIB_MATCHES = \ mmcu?avrxmega6=mmcu?atxmega256a3b \ mmcu?avrxmega6=mmcu?atxmega256d3 \ mmcu?avrxmega7=mmcu?atxmega128a1 \ diff --git a/303-gcc-4.5.1-osmain.patch b/303-gcc-osmain.patch similarity index 55% rename from 303-gcc-4.5.1-osmain.patch rename to 303-gcc-osmain.patch index d42013d..e7d1dc5 100644 --- a/303-gcc-4.5.1-osmain.patch +++ b/303-gcc-osmain.patch @@ -1,17 +1,19 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c ---- gcc/config/avr/avr.c 2011-01-19 13:45:00.000000000 -0600 -+++ gcc/config/avr/avr.c 2011-01-19 13:45:47.000000000 -0600 -@@ -784,7 +784,8 @@ expand_prologue (void) +--- gcc/config/avr/avr.c 2011-10-27 17:47:15.000000000 +0530 ++++ gcc/config/avr/avr.c 2011-10-27 17:53:42.000000000 +0530 +@@ -881,8 +881,9 @@ expand_prologue (void) + emit_move_insn (stack_pointer_rtx, frame_pointer_rtx); } - else if ((!AVR_XMEGA && TARGET_NO_INTERRUPTS) - || (!AVR_XMEGA && cfun->machine->is_signal) -- || (!AVR_XMEGA && cfun->machine->is_OS_main)) + else if ((!AVR_XMEGA && TARGET_NO_INTERRUPTS ) +- || cfun->machine->is_signal +- || cfun->machine->is_OS_main) ++ || (!AVR_XMEGA && cfun->machine->is_signal) + || (!AVR_XMEGA && cfun->machine->is_OS_main) + || (AVR_XMEGA && cfun->machine->is_nmi)) { - insn = - emit_insn (gen_movhi_sp_r_irq_off (stack_pointer_rtx, -@@ -963,7 +964,8 @@ expand_epilogue (void) + emit_insn (gen_movhi_sp_r_irq_off (stack_pointer_rtx, + frame_pointer_rtx)); +@@ -1070,7 +1071,8 @@ expand_epilogue (void) emit_move_insn (stack_pointer_rtx, frame_pointer_rtx); } else if ((!AVR_XMEGA && TARGET_NO_INTERRUPTS) @@ -22,9 +24,9 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c emit_insn (gen_movhi_sp_r_irq_off (stack_pointer_rtx, frame_pointer_rtx)); diff -Naurp gcc/function.c gcc/function.c ---- gcc/function.c 2010-02-26 09:58:57.000000000 -0600 -+++ gcc/function.c 2011-01-19 13:45:48.000000000 -0600 -@@ -4980,6 +4980,14 @@ contains (const_rtx insn, htab_t hash) +--- gcc/function.c 2011-10-27 17:19:51.000000000 +0530 ++++ gcc/function.c 2011-10-27 17:53:42.000000000 +0530 +@@ -5254,6 +5254,14 @@ contains (const_rtx insn, htab_t hash) } int @@ -40,9 +42,9 @@ diff -Naurp gcc/function.c gcc/function.c { if (contains (insn, prologue_insn_hash)) diff -Naurp gcc/rtl.h gcc/rtl.h ---- gcc/rtl.h 2010-03-16 05:50:42.000000000 -0500 -+++ gcc/rtl.h 2011-01-19 13:45:48.000000000 -0600 -@@ -2296,6 +2296,7 @@ extern void print_inline_rtx (FILE *, co +--- gcc/rtl.h 2011-10-27 17:19:52.000000000 +0530 ++++ gcc/rtl.h 2011-10-27 17:53:42.000000000 +0530 +@@ -2402,6 +2402,7 @@ extern void print_inline_rtx (FILE *, co /* In function.c */ extern void reposition_prologue_and_epilogue_notes (void); diff --git a/304-gcc-4.5.1-builtins-v6.patch b/304-gcc-builtins-v6.patch similarity index 95% rename from 304-gcc-4.5.1-builtins-v6.patch rename to 304-gcc-builtins-v6.patch index 12ba1b0..ae1a6f0 100644 --- a/304-gcc-4.5.1-builtins-v6.patch +++ b/304-gcc-builtins-v6.patch @@ -1,7 +1,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c ---- gcc/config/avr/avr.c 2011-01-19 13:48:07.000000000 -0600 -+++ gcc/config/avr/avr.c 2011-01-19 13:49:37.000000000 -0600 -@@ -30,6 +30,7 @@ +--- gcc/config/avr/avr.c 2011-10-27 17:53:42.000000000 +0530 ++++ gcc/config/avr/avr.c 2011-10-27 18:00:50.000000000 +0530 +@@ -29,6 +29,7 @@ #include "insn-config.h" #include "conditions.h" #include "insn-attr.h" @@ -9,7 +9,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c #include "flags.h" #include "reload.h" #include "tree.h" -@@ -39,7 +40,9 @@ +@@ -38,7 +39,9 @@ #include "obstack.h" #include "function.h" #include "recog.h" @@ -19,7 +19,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c #include "tm_p.h" #include "target.h" #include "target-def.h" -@@ -87,6 +90,8 @@ static bool avr_rtx_costs (rtx, int, int +@@ -90,6 +93,8 @@ static bool avr_rtx_costs (rtx, int, int static int avr_address_cost (rtx, bool); static bool avr_return_in_memory (const_tree, const_tree); static struct machine_function * avr_init_machine_status (void); @@ -28,7 +28,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c static rtx avr_builtin_setjmp_frame_value (void); static bool avr_hard_regno_scratch_ok (unsigned int); static unsigned int avr_case_values_threshold (void); -@@ -197,6 +202,13 @@ static const struct attribute_spec avr_a +@@ -241,6 +246,13 @@ static const struct default_options avr_ #undef TARGET_SCALAR_MODE_SUPPORTED_P #define TARGET_SCALAR_MODE_SUPPORTED_P avr_scalar_mode_supported_p @@ -42,7 +42,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c /* Implement TARGET_SCALAR_MODE_SUPPORTED_P. */ static bool avr_scalar_mode_supported_p (enum machine_mode mode) -@@ -7286,4 +7298,237 @@ unsigned int avr_case_values_threshold ( +@@ -7506,4 +7518,237 @@ unsigned int avr_case_values_threshold ( return (!AVR_HAVE_JMP_CALL || TARGET_CALL_PROLOGUES) ? 8 : 17; } @@ -281,9 +281,9 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c + #include "gt-avr.h" diff -Naurp gcc/config/avr/avr.md gcc/config/avr/avr.md ---- gcc/config/avr/avr.md 2011-01-19 13:45:00.000000000 -0600 -+++ gcc/config/avr/avr.md 2011-01-19 13:49:37.000000000 -0600 -@@ -51,14 +51,29 @@ +--- gcc/config/avr/avr.md 2011-10-27 17:53:20.000000000 +0530 ++++ gcc/config/avr/avr.md 2011-10-27 18:00:50.000000000 +0530 +@@ -50,14 +50,29 @@ (UNSPEC_STRLEN 0) (UNSPEC_INDEX_JMP 1) @@ -316,7 +316,7 @@ diff -Naurp gcc/config/avr/avr.md gcc/config/avr/avr.md (include "predicates.md") (include "constraints.md") -@@ -2813,13 +2828,6 @@ +@@ -2820,13 +2835,6 @@ (const_int 1)) (const_int 3)])]) @@ -330,7 +330,7 @@ diff -Naurp gcc/config/avr/avr.md gcc/config/avr/avr.md ; indirect jump (define_expand "indirect_jump" -@@ -3221,7 +3229,7 @@ +@@ -3220,7 +3228,7 @@ ;; Enable Interrupts (define_insn "enable_interrupt" @@ -339,7 +339,7 @@ diff -Naurp gcc/config/avr/avr.md gcc/config/avr/avr.md "" "sei" [(set_attr "length" "1") -@@ -3230,7 +3238,7 @@ +@@ -3229,7 +3237,7 @@ ;; Disable Interrupts (define_insn "disable_interrupt" @@ -348,7 +348,7 @@ diff -Naurp gcc/config/avr/avr.md gcc/config/avr/avr.md "" "cli" [(set_attr "length" "1") -@@ -3330,3 +3338,219 @@ +@@ -3329,3 +3337,219 @@ expand_epilogue (); DONE; }") @@ -569,8 +569,8 @@ diff -Naurp gcc/config/avr/avr.md gcc/config/avr/avr.md + (set_attr "cc" "clobber")]) + diff -Naurp gcc/config/avr/predicates.md gcc/config/avr/predicates.md ---- gcc/config/avr/predicates.md 2011-01-19 13:03:59.000000000 -0600 -+++ gcc/config/avr/predicates.md 2011-01-19 13:49:37.000000000 -0600 +--- gcc/config/avr/predicates.md 2011-10-27 17:53:20.000000000 +0530 ++++ gcc/config/avr/predicates.md 2011-10-27 18:00:50.000000000 +0530 @@ -27,6 +27,11 @@ (and (match_code "reg") (match_test "REGNO (op) >= 16 && REGNO (op) <= 31"))) diff --git a/305-gcc-4.5.1-avrtiny10-non-fixedpoint.patch b/305-gcc-avrtiny10-non-fixedpoint.patch similarity index 75% rename from 305-gcc-4.5.1-avrtiny10-non-fixedpoint.patch rename to 305-gcc-avrtiny10-non-fixedpoint.patch index 9bceaa4..442badf 100644 --- a/305-gcc-4.5.1-avrtiny10-non-fixedpoint.patch +++ b/305-gcc-avrtiny10-non-fixedpoint.patch @@ -1,7 +1,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c ---- gcc/config/avr/avr.c 2011-02-07 16:17:20.000000000 -0600 -+++ gcc/config/avr/avr.c 2011-02-07 16:12:53.000000000 -0600 -@@ -202,6 +202,9 @@ static const struct attribute_spec avr_a +--- gcc/config/avr/avr.c 2011-10-27 18:00:50.000000000 +0530 ++++ gcc/config/avr/avr.c 2011-10-27 18:05:35.000000000 +0530 +@@ -246,6 +246,9 @@ static const struct default_options avr_ #undef TARGET_SCALAR_MODE_SUPPORTED_P #define TARGET_SCALAR_MODE_SUPPORTED_P avr_scalar_mode_supported_p @@ -11,7 +11,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c #undef TARGET_INIT_BUILTINS #define TARGET_INIT_BUILTINS avr_init_builtins -@@ -219,6 +222,17 @@ static const struct attribute_spec avr_a +@@ -263,6 +266,17 @@ static const struct default_options avr_ return default_scalar_mode_supported_p (mode); } @@ -28,10 +28,10 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c + struct gcc_target targetm = TARGET_INITIALIZER; - void + static void diff -Naurp gcc/config/fixed-bit.c gcc/config/fixed-bit.c ---- gcc/config/fixed-bit.c 2009-04-09 10:00:19.000000000 -0500 -+++ gcc/config/fixed-bit.c 2011-02-07 16:12:53.000000000 -0600 +--- gcc/config/fixed-bit.c 2011-10-27 17:57:06.000000000 +0530 ++++ gcc/config/fixed-bit.c 2011-10-27 18:05:35.000000000 +0530 @@ -41,7 +41,7 @@ see the files COPYING3 and COPYING.RUNTI Floating-point: SF, DF Ex: If we define FROM_QQ and TO_SI, the conversion from QQ to SI is diff --git a/306-gcc-4.5.1-option-list-devices.patch b/306-gcc-option-list-devices.patch similarity index 72% rename from 306-gcc-4.5.1-option-list-devices.patch rename to 306-gcc-option-list-devices.patch index d6ffffc..f10f3a0 100644 --- a/306-gcc-4.5.1-option-list-devices.patch +++ b/306-gcc-option-list-devices.patch @@ -1,7 +1,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c ---- gcc/config/avr/avr.c 2011-02-11 14:56:08.000000000 -0600 -+++ gcc/config/avr/avr.c 2011-02-11 14:54:05.000000000 -0600 -@@ -211,6 +211,8 @@ static const struct attribute_spec avr_a +--- gcc/config/avr/avr.c 2011-10-27 18:05:35.000000000 +0530 ++++ gcc/config/avr/avr.c 2011-10-27 18:10:00.000000000 +0530 +@@ -255,6 +255,8 @@ static const struct default_options avr_ #undef TARGET_EXPAND_BUILTIN #define TARGET_EXPAND_BUILTIN avr_expand_builtin @@ -10,7 +10,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c /* Implement TARGET_SCALAR_MODE_SUPPORTED_P. */ static bool -@@ -232,7 +234,24 @@ static const struct attribute_spec avr_a +@@ -276,7 +278,24 @@ static const struct default_options avr_ return default_fixed_point_supported_p (); } @@ -35,15 +35,16 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c + struct gcc_target targetm = TARGET_INITIALIZER; - void + static void diff -Naurp gcc/config/avr/avr.opt gcc/config/avr/avr.opt ---- gcc/config/avr/avr.opt 2009-10-08 13:28:48.000000000 -0500 -+++ gcc/config/avr/avr.opt 2011-02-11 14:53:20.000000000 -0600 -@@ -58,3 +58,7 @@ Relax branches +--- gcc/config/avr/avr.opt 2011-10-27 18:05:13.000000000 +0530 ++++ gcc/config/avr/avr.opt 2011-10-27 18:10:00.000000000 +0530 +@@ -58,3 +58,8 @@ Relax branches mpmem-wrap-around Target Report - Make the linker relaxation machine assume that a program counter wrap-around occures. + Make the linker relaxation machine assume that a program counter wrap-around occurs. + +mlist-devices +Target RejectNegative Var(avr_list_supported_parts) +Print the list of parts supported while printing --target-help ++ diff --git a/400-gcc-4.5.1-new-devices.patch b/400-gcc-4.5.1-new-devices.patch deleted file mode 100644 index 85982a8..0000000 --- a/400-gcc-4.5.1-new-devices.patch +++ /dev/null @@ -1,328 +0,0 @@ -diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-09-02 11:47:23.000000000 +0300 -+++ gcc/config/avr/avr-devices.c 2011-09-02 11:49:57.000000000 +0300 -@@ -75,15 +75,23 @@ const struct mcu_type_s avr_mcu_types[] - { "attiny13", ARCH_AVR25, "__AVR_ATtiny13__", 1, 0x0060, "tn13" }, - { "attiny13a", ARCH_AVR25, "__AVR_ATtiny13A__", 1, 0x0060, "tn13a" }, - { "attiny2313", ARCH_AVR25, "__AVR_ATtiny2313__", 1, 0x0060, "tn2313" }, -+ { "attiny2313a", ARCH_AVR25, "__AVR_ATtiny2313A__", 1, 0x0060, "tn2313a" }, - { "attiny24", ARCH_AVR25, "__AVR_ATtiny24__", 1, 0x0060, "tn24" }, -+ { "attiny24a", ARCH_AVR25, "__AVR_ATtiny24A__", 1, 0x0060, "tn24a" }, -+ { "attiny4313", ARCH_AVR25, "__AVR_ATtiny4313__", 0, 0x0060, "tn4313" }, - { "attiny44", ARCH_AVR25, "__AVR_ATtiny44__", 0, 0x0060, "tn44" }, -+ { "attiny44a", ARCH_AVR25, "__AVR_ATtiny44A__", 0, 0x0060, "tn44a" }, - { "attiny84", ARCH_AVR25, "__AVR_ATtiny84__", 0, 0x0060, "tn84" }, -+ { "attiny84a", ARCH_AVR25, "__AVR_ATtiny84A__", 0, 0x0060, "tn84a" }, - { "attiny25", ARCH_AVR25, "__AVR_ATtiny25__", 1, 0x0060, "tn25" }, - { "attiny45", ARCH_AVR25, "__AVR_ATtiny45__", 0, 0x0060, "tn45" }, - { "attiny85", ARCH_AVR25, "__AVR_ATtiny85__", 0, 0x0060, "tn85" }, - { "attiny261", ARCH_AVR25, "__AVR_ATtiny261__", 1, 0x0060, "tn261" }, -+ { "attiny261a", ARCH_AVR25, "__AVR_ATtiny261A__", 1, 0x0060, "tn261a" }, - { "attiny461", ARCH_AVR25, "__AVR_ATtiny461__", 0, 0x0060, "tn461" }, -+ { "attiny461a", ARCH_AVR25, "__AVR_ATtiny461A__", 0, 0x0060, "tn461a" }, - { "attiny861", ARCH_AVR25, "__AVR_ATtiny861__", 0, 0x0060, "tn861" }, -+ { "attiny861a", ARCH_AVR25, "__AVR_ATtiny861A__", 0, 0x0060, "tn861a" }, - { "attiny43u", ARCH_AVR25, "__AVR_ATtiny43U__", 0, 0x0060, "tn43u" }, - { "attiny87", ARCH_AVR25, "__AVR_ATtiny87__", 0, 0x0100, "tn87" }, - { "attiny48", ARCH_AVR25, "__AVR_ATtiny48__", 0, 0x0100, "tn48" }, -@@ -105,21 +113,19 @@ const struct mcu_type_s avr_mcu_types[] - { "atmega16u2", ARCH_AVR35, "__AVR_ATmega16U2__", 0, 0x0100, "m16u2" }, - { "atmega32u2", ARCH_AVR35, "__AVR_ATmega32U2__", 0, 0x0100, "m32u2" }, - { "attiny167", ARCH_AVR35, "__AVR_ATtiny167__", 0, 0x0100, "tn167" }, -- { "attiny327", ARCH_AVR35, "__AVR_ATtiny327__", 0, 0x0100, "tn327" }, - /* Enhanced, <= 8K. */ - { "avr4", ARCH_AVR4, NULL, 0, 0x0060, "m8" }, - { "atmega8", ARCH_AVR4, "__AVR_ATmega8__", 0, 0x0060, "m8" }, - { "atmega48", ARCH_AVR4, "__AVR_ATmega48__", 0, 0x0100, "m48" }, -+ { "atmega48a", ARCH_AVR4, "__AVR_ATmega48A__", 0, 0x0100, "m48a" }, - { "atmega48p", ARCH_AVR4, "__AVR_ATmega48P__", 0, 0x0100, "m48p" }, - { "atmega88", ARCH_AVR4, "__AVR_ATmega88__", 0, 0x0100, "m88" }, -+ { "atmega88a", ARCH_AVR4, "__AVR_ATmega88A__", 0, 0x0100, "m88a" }, - { "atmega88p", ARCH_AVR4, "__AVR_ATmega88P__", 0, 0x0100, "m88p" }, -+ { "atmega88pa", ARCH_AVR4, "__AVR_ATmega88PA__", 0, 0x0100, "m88pa" }, - { "atmega8515", ARCH_AVR4, "__AVR_ATmega8515__", 0, 0x0060, "m8515" }, - { "atmega8535", ARCH_AVR4, "__AVR_ATmega8535__", 0, 0x0060, "m8535" }, -- { "atmega8c1", ARCH_AVR4, "__AVR_ATmega8C1__", 0, 0x0100, "m8c1" }, -- { "atmega8m1", ARCH_AVR4, "__AVR_ATmega8M1__", 0, 0x0100, "m8m1" }, - { "atmega8hva", ARCH_AVR4, "__AVR_ATmega8HVA__", 0, 0x0100, "m8hva" }, -- { "atmega4hvd", ARCH_AVR4, "__AVR_ATmega4HVD__", 0, 0x0100, "m4hvd" }, -- { "atmega8hvd", ARCH_AVR4, "__AVR_ATmega8HVD__", 0, 0x0100, "m8hvd" }, - { "at90pwm1", ARCH_AVR4, "__AVR_AT90PWM1__", 0, 0x0100, "90pwm1" }, - { "at90pwm2", ARCH_AVR4, "__AVR_AT90PWM2__", 0, 0x0100, "90pwm2" }, - { "at90pwm2b", ARCH_AVR4, "__AVR_AT90PWM2B__", 0, 0x0100, "90pwm2b" }, -@@ -128,41 +134,78 @@ const struct mcu_type_s avr_mcu_types[] - { "at90pwm81", ARCH_AVR4, "__AVR_AT90PWM81__", 0, 0x0100, "90pwm81" }, - /* Enhanced, > 8K, <= 64K. */ - { "avr5", ARCH_AVR5, NULL, 0, 0x0060, "m16" }, -+ { "at90pwm161", ARCH_AVR5, "__AVR_AT90PWM161__", 1, 0x0100, "90pwm161" }, - { "atmega16", ARCH_AVR5, "__AVR_ATmega16__", 0, 0x0060, "m16" }, -+ { "atmega16a", ARCH_AVR5, "__AVR_ATmega16A__", 0, 0x0060, "m16a" }, - { "atmega161", ARCH_AVR5, "__AVR_ATmega161__", 0, 0x0060, "m161" }, - { "atmega162", ARCH_AVR5, "__AVR_ATmega162__", 0, 0x0100, "m162" }, - { "atmega163", ARCH_AVR5, "__AVR_ATmega163__", 0, 0x0060, "m163" }, -+ { "atmega164a", ARCH_AVR5, "__AVR_ATmega164A__", 0, 0x0060, "m164a" }, - { "atmega164p", ARCH_AVR5, "__AVR_ATmega164P__", 0, 0x0100, "m164p" }, - { "atmega165", ARCH_AVR5, "__AVR_ATmega165__", 0, 0x0100, "m165" }, -+ { "atmega165a", ARCH_AVR5, "__AVR_ATmega165A__", 0, 0x0100, "m165a" }, - { "atmega165p", ARCH_AVR5, "__AVR_ATmega165P__", 0, 0x0100, "m165p" }, - { "atmega168", ARCH_AVR5, "__AVR_ATmega168__", 0, 0x0100, "m168" }, -+ { "atmega168a", ARCH_AVR5, "__AVR_ATmega168A__", 0, 0x0100, "m168a" }, - { "atmega168p", ARCH_AVR5, "__AVR_ATmega168P__", 0, 0x0100, "m168p" }, - { "atmega169", ARCH_AVR5, "__AVR_ATmega169__", 0, 0x0100, "m169" }, -+ { "atmega169a", ARCH_AVR5, "__AVR_ATmega169A__", 0, 0x0100, "m169a" }, - { "atmega169p", ARCH_AVR5, "__AVR_ATmega169P__", 0, 0x0100, "m169p" }, -+ { "atmega169pa", ARCH_AVR5, "__AVR_ATmega169PA__", 0, 0x0100, "m169pa" }, -+ { "atmega16hva", ARCH_AVR5, "__AVR_ATmega16HVA__", 0, 0x0100, "m16hva" }, -+ { "atmega16hva2", ARCH_AVR5, "__AVR_ATmega16HVA2__", 0, 0x0100, "m16hva2" }, -+ { "atmega16hvb", ARCH_AVR5, "__AVR_ATmega16HVB__", 0, 0x0100, "m16hvb" }, -+ { "atmega16hvbrevb", ARCH_AVR5, "__AVR_ATmega16HVBREVB__", 1, 0x0100, "m16hvbrevb" }, -+ { "atmega16m1", ARCH_AVR5, "__AVR_ATmega16M1__", 0, 0x0100, "m16m1" }, -+ { "atmega16u4", ARCH_AVR5, "__AVR_ATmega16U4__", 0, 0x0100, "m16u4" }, - { "atmega32", ARCH_AVR5, "__AVR_ATmega32__", 0, 0x0060, "m32" }, - { "atmega323", ARCH_AVR5, "__AVR_ATmega323__", 0, 0x0060, "m323" }, -+ { "atmega324a", ARCH_AVR5, "__AVR_ATmega324A__", 0, 0x0060, "m324a" }, - { "atmega324p", ARCH_AVR5, "__AVR_ATmega324P__", 0, 0x0100, "m324p" }, -+ { "atmega324pa", ARCH_AVR5, "__AVR_ATmega324PA__", 0, 0x0100, "m324pa" }, - { "atmega325", ARCH_AVR5, "__AVR_ATmega325__", 0, 0x0100, "m325" }, -+ { "atmega325a", ARCH_AVR5, "__AVR_ATmega325A__", 0, 0x0100, "m325a" }, - { "atmega325p", ARCH_AVR5, "__AVR_ATmega325P__", 0, 0x0100, "m325p" }, - { "atmega3250", ARCH_AVR5, "__AVR_ATmega3250__", 0, 0x0100, "m3250" }, -+ { "atmega3250a", ARCH_AVR5, "__AVR_ATmega3250A__", 0, 0x0100, "m3250a" }, - { "atmega3250p", ARCH_AVR5, "__AVR_ATmega3250P__", 0, 0x0100, "m3250p" }, -+ { "atmega328", ARCH_AVR5, "__AVR_ATmega328__", 0, 0x0100, "m328" }, - { "atmega328p", ARCH_AVR5, "__AVR_ATmega328P__", 0, 0x0100, "m328p" }, - { "atmega329", ARCH_AVR5, "__AVR_ATmega329__", 0, 0x0100, "m329" }, -+ { "atmega329a", ARCH_AVR5, "__AVR_ATmega329A__", 0, 0x0100, "m329a" }, - { "atmega329p", ARCH_AVR5, "__AVR_ATmega329P__", 0, 0x0100, "m329p" }, -+ { "atmega329pa", ARCH_AVR5, "__AVR_ATmega329PA__", 0, 0x0100, "m329pa" }, - { "atmega3290", ARCH_AVR5, "__AVR_ATmega3290__", 0, 0x0100, "m3290" }, -+ { "atmega3290a", ARCH_AVR5, "__AVR_ATmega3290A__", 0, 0x0100, "m3290a" }, - { "atmega3290p", ARCH_AVR5, "__AVR_ATmega3290P__", 0, 0x0100, "m3290p" }, -+ { "atmega32c1", ARCH_AVR5, "__AVR_ATmega32C1__", 0, 0x0100, "m32c1" }, -+ { "atmega32m1", ARCH_AVR5, "__AVR_ATmega32M1__", 0, 0x0100, "m32m1" }, -+ { "atmega32u4", ARCH_AVR5, "__AVR_ATmega32U4__", 0, 0x0100, "m32u4" }, -+ { "atmega32u6", ARCH_AVR5, "__AVR_ATmega32U6__", 0, 0x0100, "m32u6" }, - { "atmega406", ARCH_AVR5, "__AVR_ATmega406__", 0, 0x0100, "m406" }, - { "atmega64", ARCH_AVR5, "__AVR_ATmega64__", 0, 0x0100, "m64" }, - { "atmega640", ARCH_AVR5, "__AVR_ATmega640__", 0, 0x0200, "m640" }, - { "atmega644", ARCH_AVR5, "__AVR_ATmega644__", 0, 0x0100, "m644" }, -+ { "atmega644a", ARCH_AVR5, "__AVR_ATmega644A__", 0, 0x0100, "m644a" }, - { "atmega644p", ARCH_AVR5, "__AVR_ATmega644P__", 0, 0x0100, "m644p" }, -+ { "atmega644pa", ARCH_AVR5, "__AVR_ATmega644PA__", 0, 0x0100, "m644pa" }, -+ { "atmega645a", ARCH_AVR5, "__AVR_ATmega645A__", 0, 0x0100, "m645a" }, -+ { "atmega645p", ARCH_AVR5, "__AVR_ATmega645P__", 0, 0x0100, "m645p" }, - { "atmega645", ARCH_AVR5, "__AVR_ATmega645__", 0, 0x0100, "m645" }, - { "atmega6450", ARCH_AVR5, "__AVR_ATmega6450__", 0, 0x0100, "m6450" }, -+ { "atmega6450a", ARCH_AVR5, "__AVR_ATmega6450A__", 0, 0x0100, "m6450a" }, -+ { "atmega6450p", ARCH_AVR5, "__AVR_ATmega6450P__", 0, 0x0100, "m6450p" }, - { "atmega649", ARCH_AVR5, "__AVR_ATmega649__", 0, 0x0100, "m649" }, -+ { "atmega649a", ARCH_AVR5, "__AVR_ATmega649A__", 0, 0x0100, "m649a" }, -+ { "atmega649p", ARCH_AVR5, "__AVR_ATmega649P__", 0, 0x0100, "m649p" }, - { "atmega6490", ARCH_AVR5, "__AVR_ATmega6490__", 0, 0x0100, "m6490" }, -- { "atmega16hva", ARCH_AVR5, "__AVR_ATmega16HVA__", 0, 0x0100, "m16hva" }, -- { "atmega16hvb", ARCH_AVR5, "__AVR_ATmega16HVB__", 0, 0x0100, "m16hvb" }, -- { "atmega32hvb", ARCH_AVR5, "__AVR_ATmega32HVB__", 0, 0x0100, "m23hvb" }, -+ { "atmega6490a", ARCH_AVR5, "__AVR_ATmega6490A__", 0, 0x0100, "m6490a" }, -+ { "atmega6490p", ARCH_AVR5, "__AVR_ATmega6490P__", 0, 0x0100, "m6490p" }, -+ { "atmega64c1", ARCH_AVR5, "__AVR_ATmega64C1__", 0, 0x0100, "m64c1" }, -+ { "atmega64m1", ARCH_AVR5, "__AVR_ATmega64M1__", 0, 0x0100, "m64m1" }, -+ { "atmega64hve", ARCH_AVR5, "__AVR_ATmega64HVE__", 0, 0x0100, "m64hve" }, -+ { "atmega32hvb", ARCH_AVR5, "__AVR_ATmega32HVB__", 0, 0x0100, "m32hvb" }, -+ { "atmega32hvbrevb", ARCH_AVR5, "__AVR_ATmega32HVBREVB__", 1, 0x0100, "m32hvbrevb" }, - { "at90can32", ARCH_AVR5, "__AVR_AT90CAN32__", 0, 0x0100, "can32" }, - { "at90can64", ARCH_AVR5, "__AVR_AT90CAN64__", 0, 0x0100, "can64" }, - { "at90pwm216", ARCH_AVR5, "__AVR_AT90PWM216__", 0, 0x0100, "90pwm216" }, -@@ -180,6 +223,7 @@ const struct mcu_type_s avr_mcu_types[] - { "at90usb646", ARCH_AVR5, "__AVR_AT90USB646__", 0, 0x0100, "usb646" }, - { "at90usb647", ARCH_AVR5, "__AVR_AT90USB647__", 0, 0x0100, "usb647" }, - { "at94k", ARCH_AVR5, "__AVR_AT94K__", 0, 0x0060, "at94k" }, -+ { "m3000", ARCH_AVR5, "__AVR_M3000__", 0, 0x1000, "m3000" }, - /* Enhanced, == 128K. */ - { "avr51", ARCH_AVR51, NULL, 0, 0x0100, "m128" }, - { "atmega128", ARCH_AVR51, "__AVR_ATmega128__", 0, 0x0100, "m128" }, -@@ -190,9 +234,6 @@ const struct mcu_type_s avr_mcu_types[] - { "at90can128", ARCH_AVR51, "__AVR_AT90CAN128__", 0, 0x0100, "can128" }, - { "at90usb1286", ARCH_AVR51, "__AVR_AT90USB1286__", 0, 0x0100, "usb1286" }, - { "at90usb1287", ARCH_AVR51, "__AVR_AT90USB1287__", 0, 0x0100, "usb1286" }, -- { "m3000f", ARCH_AVR51, "__AVR_M3000F__", 0, 0x1000, "m3000f" }, -- { "m3000s", ARCH_AVR51, "__AVR_M3000S__", 0, 0x1000, "m3000f" }, -- { "m3001b", ARCH_AVR51, "__AVR_M3001B__", 0, 0x1000, "m3000f" }, - /* 3-Byte PC. */ - { "avr6", ARCH_AVR6, NULL, 0, 0x0200, "m2561" }, - { "atmega2560", ARCH_AVR6, "__AVR_ATmega2560__", 0, 0x0200, "m2561" }, -@@ -219,11 +260,13 @@ const struct mcu_type_s avr_mcu_types[] - /* Xmega, > 128K, <= 256K FLASH, <= 64K RAM. */ - { "avrxmega6", ARCH_AVRXMEGA6, NULL, 0, 0x2000, "x128a3" }, - { "atxmega128a3", ARCH_AVRXMEGA6, "__AVR_ATxmega128A3__", 0, 0x2000, "x128a3" }, -+ { "atxmega128b1", ARCH_AVRXMEGA6, "__AVR_ATxmega128B1__", 0, 0x2000, "x128b1" }, - { "atxmega128d3", ARCH_AVRXMEGA6, "__AVR_ATxmega128D3__", 0, 0x2000, "x128d3" }, - { "atxmega192a3", ARCH_AVRXMEGA6, "__AVR_ATxmega192A3__", 0, 0x2000, "x192a3" }, - { "atxmega192d3", ARCH_AVRXMEGA6, "__AVR_ATxmega192D3__", 0, 0x2000, "x192d3" }, - { "atxmega256a3", ARCH_AVRXMEGA6, "__AVR_ATxmega256A3__", 0, 0x2000, "x256a3" }, - { "atxmega256a3b",ARCH_AVRXMEGA6, "__AVR_ATxmega256A3B__", 0, 0x2000, "x256a3b" }, -+ { "atxmega256a3bu", ARCH_AVRXMEGA6, "__AVR_ATxmega256A3BU__", 0, 0x2000, "x256a3bu" }, - { "atxmega256d3", ARCH_AVRXMEGA6, "__AVR_ATxmega256D3__", 0, 0x2000, "x256d3" }, - /* Xmega, > 128K, <= 256K FLASH, > 64K RAM. */ - { "avrxmega7", ARCH_AVRXMEGA7, NULL, 0, 0x2000, "x128a1" }, -diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2011-09-02 11:47:23.000000000 +0300 -+++ gcc/config/avr/t-avr 2011-09-02 11:49:57.000000000 +0300 -@@ -116,16 +116,28 @@ MULTILIB_MATCHES = \ - mmcu?avr25=mmcu?attiny13 \ - mmcu?avr25=mmcu?attiny13a \ - mmcu?avr25=mmcu?attiny2313 \ -+ mmcu?avr25=mmcu?attiny2313a \ - mmcu?avr25=mmcu?attiny24 \ -+ mmcu?avr25=mmcu?attiny24a \ - mmcu?avr25=mmcu?attiny44 \ -+ mmcu?avr25=mmcu?attiny44a \ -+ mmcu?avr25=mmcu?attiny45 \ - mmcu?avr25=mmcu?attiny84 \ -+ mmcu?avr25=mmcu?attiny84a \ - mmcu?avr25=mmcu?attiny25 \ - mmcu?avr25=mmcu?attiny45 \ - mmcu?avr25=mmcu?attiny85 \ - mmcu?avr25=mmcu?attiny261 \ -+ mmcu?avr25=mmcu?attiny261a \ -+ mmcu?avr25=mmcu?attiny4313 \ - mmcu?avr25=mmcu?attiny461 \ -+ mmcu?avr25=mmcu?attiny461a \ - mmcu?avr25=mmcu?attiny861 \ - mmcu?avr25=mmcu?attiny43u \ -+ mmcu?avr25=mmcu?attiny84 \ -+ mmcu?avr25=mmcu?attiny85 \ -+ mmcu?avr25=mmcu?attiny861 \ -+ mmcu?avr25=mmcu?attiny861a \ - mmcu?avr25=mmcu?attiny87 \ - mmcu?avr25=mmcu?attiny48 \ - mmcu?avr25=mmcu?attiny88 \ -@@ -140,65 +152,90 @@ MULTILIB_MATCHES = \ - mmcu?avr35=mmcu?atmega16u2 \ - mmcu?avr35=mmcu?atmega32u2 \ - mmcu?avr35=mmcu?attiny167 \ -- mmcu?avr35=mmcu?attiny327 \ - mmcu?avr4=mmcu?atmega48 \ -+ mmcu?avr4=mmcu?atmega48a \ - mmcu?avr4=mmcu?atmega48p \ - mmcu?avr4=mmcu?atmega8 \ - mmcu?avr4=mmcu?atmega8515 \ - mmcu?avr4=mmcu?atmega8535 \ - mmcu?avr4=mmcu?atmega88 \ -+ mmcu?avr4=mmcu?atmega88a \ - mmcu?avr4=mmcu?atmega88p \ -+ mmcu?avr4=mmcu?atmega88pa \ - mmcu?avr4=mmcu?atmega8hva \ -- mmcu?avr4=mmcu?atmega4hvd \ -- mmcu?avr4=mmcu?atmega8hvd \ -- mmcu?avr4=mmcu?atmega8c1 \ -- mmcu?avr4=mmcu?atmega8m1 \ - mmcu?avr4=mmcu?at90pwm1 \ - mmcu?avr4=mmcu?at90pwm2 \ - mmcu?avr4=mmcu?at90pwm2b \ - mmcu?avr4=mmcu?at90pwm3 \ - mmcu?avr4=mmcu?at90pwm3b \ - mmcu?avr4=mmcu?at90pwm81 \ -+ mmcu?avr5=mmcu?at90pwm161 \ - mmcu?avr5=mmcu?atmega16 \ -+ mmcu?avr5=mmcu?atmega16a \ - mmcu?avr5=mmcu?atmega161 \ - mmcu?avr5=mmcu?atmega162 \ - mmcu?avr5=mmcu?atmega163 \ -+ mmcu?avr5=mmcu?atmega164a \ - mmcu?avr5=mmcu?atmega164p \ - mmcu?avr5=mmcu?atmega165 \ -+ mmcu?avr5=mmcu?atmega165a \ - mmcu?avr5=mmcu?atmega165p \ - mmcu?avr5=mmcu?atmega168 \ -+ mmcu?avr5=mmcu?atmega168a \ - mmcu?avr5=mmcu?atmega168p \ - mmcu?avr5=mmcu?atmega169 \ -+ mmcu?avr5=mmcu?atmega169a \ - mmcu?avr5=mmcu?atmega169p \ -+ mmcu?avr5=mmcu?atmega169pa \ - mmcu?avr5=mmcu?atmega32 \ - mmcu?avr5=mmcu?atmega323 \ -+ mmcu?avr5=mmcu?atmega324a \ - mmcu?avr5=mmcu?atmega324p \ -+ mmcu?avr5=mmcu?atmega324pa \ - mmcu?avr5=mmcu?atmega325 \ -+ mmcu?avr5=mmcu?atmega325a \ - mmcu?avr5=mmcu?atmega325p \ - mmcu?avr5=mmcu?atmega3250 \ -+ mmcu?avr5=mmcu?atmega3250a \ - mmcu?avr5=mmcu?atmega3250p \ -+ mmcu?avr5=mmcu?atmega328 \ - mmcu?avr5=mmcu?atmega328p \ - mmcu?avr5=mmcu?atmega329 \ -+ mmcu?avr5=mmcu?atmega329a \ - mmcu?avr5=mmcu?atmega329p \ -+ mmcu?avr5=mmcu?atmega329pa \ - mmcu?avr5=mmcu?atmega3290 \ -+ mmcu?avr5=mmcu?atmega3290a \ - mmcu?avr5=mmcu?atmega3290p \ - mmcu?avr5=mmcu?atmega406 \ - mmcu?avr5=mmcu?atmega64 \ - mmcu?avr5=mmcu?atmega640 \ - mmcu?avr5=mmcu?atmega644 \ -+ mmcu?avr5=mmcu?atmega644a \ - mmcu?avr5=mmcu?atmega644p \ -+ mmcu?avr5=mmcu?atmega644pa \ - mmcu?avr5=mmcu?atmega645 \ -+ mmcu?avr5=mmcu?atmega645a \ -+ mmcu?avr5=mmcu?atmega645p \ - mmcu?avr5=mmcu?atmega6450 \ -+ mmcu?avr5=mmcu?atmega6450a \ -+ mmcu?avr5=mmcu?atmega6450p \ - mmcu?avr5=mmcu?atmega649 \ -+ mmcu?avr5=mmcu?atmega649a \ -+ mmcu?avr5=mmcu?atmega649p \ - mmcu?avr5=mmcu?atmega6490 \ -+ mmcu?avr5=mmcu?atmega6490a \ -+ mmcu?avr5=mmcu?atmega6490p \ - mmcu?avr5=mmcu?atmega16hva \ -+ mmcu?avr5=mmcu?atmega16hva2 \ - mmcu?avr5=mmcu?atmega16hvb \ -+ mmcu?avr5=mmcu?atmega16hvbrevb \ - mmcu?avr5=mmcu?atmega32hvb \ -+ mmcu?avr5=mmcu?atmega32hvbrevb \ - mmcu?avr5=mmcu?at90can32 \ - mmcu?avr5=mmcu?at90can64 \ - mmcu?avr5=mmcu?at90pwm216 \ - mmcu?avr5=mmcu?at90pwm316 \ -- mmcu?avr5=mmcu?atmega16c1 \ - mmcu?avr5=mmcu?atmega32c1 \ - mmcu?avr5=mmcu?atmega64c1 \ - mmcu?avr5=mmcu?atmega16m1 \ -@@ -207,6 +244,7 @@ MULTILIB_MATCHES = \ - mmcu?avr5=mmcu?atmega16u4 \ - mmcu?avr5=mmcu?atmega32u4 \ - mmcu?avr5=mmcu?atmega32u6 \ -+ mmcu?avr5=mmcu?atmega64hve \ - mmcu?avr5=mmcu?at90scr100 \ - mmcu?avr5=mmcu?at90usb646 \ - mmcu?avr5=mmcu?at90usb647 \ -@@ -219,9 +257,7 @@ MULTILIB_MATCHES = \ - mmcu?avr51=mmcu?at90can128 \ - mmcu?avr51=mmcu?at90usb1286 \ - mmcu?avr51=mmcu?at90usb1287 \ -- mmcu?avr51=mmcu?m3000f \ -- mmcu?avr51=mmcu?m3000s \ -- mmcu?avr51=mmcu?m3001b \ -+ mmcu?avr51=mmcu?m3000 \ - mmcu?avr6=mmcu?atmega2560 \ - mmcu?avr6=mmcu?atmega2561 \ - mmcu?avrxmega2=mmcu?atxmega16a4 \ -@@ -234,11 +270,13 @@ MULTILIB_MATCHES = \ - mmcu?avrxmega5=mmcu?atxmega64a1 \ - mmcu?avrxmega5=mmcu?atxmega64a1u \ - mmcu?avrxmega6=mmcu?atxmega128a3 \ -+ mmcu?avrxmega6=mmcu?atxmega128b1 \ - mmcu?avrxmega6=mmcu?atxmega128d3 \ - mmcu?avrxmega6=mmcu?atxmega192a3 \ - mmcu?avrxmega6=mmcu?atxmega192d3 \ - mmcu?avrxmega6=mmcu?atxmega256a3 \ - mmcu?avrxmega6=mmcu?atxmega256a3b \ -+ mmcu?avrxmega6=mmcu?atxmega256a3bu \ - mmcu?avrxmega6=mmcu?atxmega256d3 \ - mmcu?avrxmega7=mmcu?atxmega128a1 \ - mmcu?avrxmega7=mmcu?atxmega128a1u \ diff --git a/400-gcc-new-devices.patch b/400-gcc-new-devices.patch new file mode 100644 index 0000000..190c023 --- /dev/null +++ b/400-gcc-new-devices.patch @@ -0,0 +1,127 @@ +diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c +--- gcc/config/avr/avr-devices.c 2011-06-24 10:30:09.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2011-06-24 10:29:33.000000000 +0530 +@@ -134,6 +134,8 @@ const struct mcu_type_s avr_mcu_types[] + { "at90pwm81", ARCH_AVR4, "__AVR_AT90PWM81__", 0, 0x0100, "90pwm81" }, + /* Enhanced, > 8K, <= 64K. */ + { "avr5", ARCH_AVR5, NULL, 0, 0x0060, "m16" }, ++ { "at90pwm161", ARCH_AVR5, "__AVR_AT90PWM161__", 1, 0x0100, "90pwm161" }, ++ + { "atmega16", ARCH_AVR5, "__AVR_ATmega16__", 0, 0x0060, "m16" }, + { "atmega16a", ARCH_AVR5, "__AVR_ATmega16A__", 0, 0x0060, "m16a" }, + { "atmega161", ARCH_AVR5, "__AVR_ATmega161__", 0, 0x0060, "m161" }, +@@ -151,6 +153,11 @@ const struct mcu_type_s avr_mcu_types[] + { "atmega169a", ARCH_AVR5, "__AVR_ATmega169A__", 0, 0x0100, "m169a" }, + { "atmega169p", ARCH_AVR5, "__AVR_ATmega169P__", 0, 0x0100, "m169p" }, + { "atmega169pa", ARCH_AVR5, "__AVR_ATmega169PA__", 0, 0x0100, "m169pa" }, ++ { "atmega16hva", ARCH_AVR5, "__AVR_ATmega16HVA__", 0, 0x0100, "m16hva" }, ++ { "atmega16hvb", ARCH_AVR5, "__AVR_ATmega16HVB__", 0, 0x0100, "m16hvb" }, ++ { "atmega16hvbrevb", ARCH_AVR5, "__AVR_ATmega16HVBREVB__", 1, 0x0100, "m16hvbrevb" }, ++ { "atmega16m1", ARCH_AVR5, "__AVR_ATmega16M1__", 0, 0x0100, "m16m1" }, ++ { "atmega16u4", ARCH_AVR5, "__AVR_ATmega16U4__", 0, 0x0100, "m16u4" }, + { "atmega32", ARCH_AVR5, "__AVR_ATmega32__", 0, 0x0060, "m32" }, + { "atmega323", ARCH_AVR5, "__AVR_ATmega323__", 0, 0x0060, "m323" }, + { "atmega324a", ARCH_AVR5, "__AVR_ATmega324A__", 0, 0x0100, "m324a" }, +@@ -171,6 +178,10 @@ const struct mcu_type_s avr_mcu_types[] + { "atmega3290", ARCH_AVR5, "__AVR_ATmega3290__", 0, 0x0100, "m3290" }, + { "atmega3290a", ARCH_AVR5, "__AVR_ATmega3290A__", 0, 0x0100, "m3290a" }, + { "atmega3290p", ARCH_AVR5, "__AVR_ATmega3290P__", 0, 0x0100, "m3290p" }, ++ { "atmega32c1", ARCH_AVR5, "__AVR_ATmega32C1__", 0, 0x0100, "m32c1" }, ++ { "atmega32m1", ARCH_AVR5, "__AVR_ATmega32M1__", 0, 0x0100, "m32m1" }, ++ { "atmega32u4", ARCH_AVR5, "__AVR_ATmega32U4__", 0, 0x0100, "m32u4" }, ++ { "atmega32u6", ARCH_AVR5, "__AVR_ATmega32U6__", 0, 0x0100, "m32u6" }, + { "atmega406", ARCH_AVR5, "__AVR_ATmega406__", 0, 0x0100, "m406" }, + { "atmega64", ARCH_AVR5, "__AVR_ATmega64__", 0, 0x0100, "m64" }, + { "atmega640", ARCH_AVR5, "__AVR_ATmega640__", 0, 0x0200, "m640" }, +@@ -188,11 +199,14 @@ const struct mcu_type_s avr_mcu_types[] + { "atmega649a", ARCH_AVR5, "__AVR_ATmega649A__", 0, 0x0100, "m649a" }, + { "atmega649p", ARCH_AVR5, "__AVR_ATmega649P__", 0, 0x0100, "m649p" }, + { "atmega6490", ARCH_AVR5, "__AVR_ATmega6490__", 0, 0x0100, "m6490" }, +- { "atmega16hva", ARCH_AVR5, "__AVR_ATmega16HVA__", 0, 0x0100, "m16hva" }, +- { "atmega16hva2", ARCH_AVR5, "__AVR_ATmega16HVA2__", 0, 0x0100, "m16hva2" }, +- { "atmega16hvb", ARCH_AVR5, "__AVR_ATmega16HVB__", 0, 0x0100, "m16hvb" }, +- { "atmega32hvb", ARCH_AVR5, "__AVR_ATmega32HVB__", 0, 0x0100, "m32hvb" }, ++ { "atmega6490a", ARCH_AVR5, "__AVR_ATmega6490A__", 0, 0x0100, "m6490a" }, ++ { "atmega6490p", ARCH_AVR5, "__AVR_ATmega6490P__", 0, 0x0100, "m6490p" }, ++ { "atmega64c1", ARCH_AVR5, "__AVR_ATmega64C1__", 0, 0x0100, "m64c1" }, ++ { "atmega64m1", ARCH_AVR5, "__AVR_ATmega64M1__", 0, 0x0100, "m64m1" }, + { "atmega64hve", ARCH_AVR5, "__AVR_ATmega64HVE__", 0, 0x0100, "m64hve" }, ++ { "atmega32hvb", ARCH_AVR5, "__AVR_ATmega32HVB__", 0, 0x0100, "m32hvb" }, ++ { "atmega32hvbrevb", ARCH_AVR5, "__AVR_ATmega32HVBREVB__", 1, 0x0100, "m32hvbrevb" }, ++ { "atmega16hva2", ARCH_AVR5, "__AVR_ATmega16HVA2__", 0, 0x0100, "m16hva2" }, + { "at90can32", ARCH_AVR5, "__AVR_AT90CAN32__", 0, 0x0100, "can32" }, + { "at90can64", ARCH_AVR5, "__AVR_AT90CAN64__", 0, 0x0100, "can64" }, + { "at90pwm216", ARCH_AVR5, "__AVR_AT90PWM216__", 0, 0x0100, "90pwm216" }, +@@ -246,11 +260,13 @@ const struct mcu_type_s avr_mcu_types[] + /* Xmega, > 128K, <= 256K FLASH, <= 64K RAM. */ + { "avrxmega6", ARCH_AVRXMEGA6, NULL, 0, 0x2000, "x128a3" }, + { "atxmega128a3", ARCH_AVRXMEGA6, "__AVR_ATxmega128A3__", 0, 0x2000, "x128a3" }, ++ { "atxmega128b1", ARCH_AVRXMEGA6, "__AVR_ATxmega128B1__", 0, 0x2000, "x128b1" }, + { "atxmega128d3", ARCH_AVRXMEGA6, "__AVR_ATxmega128D3__", 0, 0x2000, "x128d3" }, + { "atxmega192a3", ARCH_AVRXMEGA6, "__AVR_ATxmega192A3__", 0, 0x2000, "x192a3" }, + { "atxmega192d3", ARCH_AVRXMEGA6, "__AVR_ATxmega192D3__", 0, 0x2000, "x192d3" }, + { "atxmega256a3", ARCH_AVRXMEGA6, "__AVR_ATxmega256A3__", 0, 0x2000, "x256a3" }, + { "atxmega256a3b",ARCH_AVRXMEGA6, "__AVR_ATxmega256A3B__", 0, 0x2000, "x256a3b" }, ++ { "atxmega256a3bu", ARCH_AVRXMEGA6, "__AVR_ATxmega256A3BU__", 0, 0x2000, "x256a3bu" }, + { "atxmega256d3", ARCH_AVRXMEGA6, "__AVR_ATxmega256D3__", 0, 0x2000, "x256d3" }, + /* Xmega, > 128K, <= 256K FLASH, > 64K RAM. */ + { "avrxmega7", ARCH_AVRXMEGA7, NULL, 0, 0x2000, "x128a1" }, +diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr +--- gcc/config/avr/t-avr 2011-06-24 10:30:09.000000000 +0530 ++++ gcc/config/avr/t-avr 2011-06-24 10:29:06.000000000 +0530 +@@ -129,6 +129,7 @@ MULTILIB_MATCHES = \ + mmcu?avr25=mmcu?attiny85 \ + mmcu?avr25=mmcu?attiny261 \ + mmcu?avr25=mmcu?attiny261a \ ++ mmcu?avr25=mmcu?attiny4313 \ + mmcu?avr25=mmcu?attiny461 \ + mmcu?avr25=mmcu?attiny461a \ + mmcu?avr25=mmcu?attiny861 \ +@@ -148,6 +149,7 @@ MULTILIB_MATCHES = \ + mmcu?avr35=mmcu?atmega16u2 \ + mmcu?avr35=mmcu?atmega32u2 \ + mmcu?avr35=mmcu?attiny167 \ ++ mmcu?avr35=mmcu?attiny327 \ + mmcu?avr4=mmcu?atmega48 \ + mmcu?avr4=mmcu?atmega48a \ + mmcu?avr4=mmcu?atmega48p \ +@@ -165,6 +167,7 @@ MULTILIB_MATCHES = \ + mmcu?avr4=mmcu?at90pwm3 \ + mmcu?avr4=mmcu?at90pwm3b \ + mmcu?avr4=mmcu?at90pwm81 \ ++ mmcu?avr5=mmcu?at90pwm161 \ + mmcu?avr5=mmcu?atmega16 \ + mmcu?avr5=mmcu?atmega16a \ + mmcu?avr5=mmcu?atmega161 \ +@@ -224,7 +227,9 @@ MULTILIB_MATCHES = \ + mmcu?avr5=mmcu?atmega16hva \ + mmcu?avr5=mmcu?atmega16hva2 \ + mmcu?avr5=mmcu?atmega16hvb \ ++ mmcu?avr5=mmcu?atmega16hvbrevb \ + mmcu?avr5=mmcu?atmega32hvb \ ++ mmcu?avr5=mmcu?atmega32hvbrevb \ + mmcu?avr5=mmcu?atmega64hve \ + mmcu?avr5=mmcu?at90can32 \ + mmcu?avr5=mmcu?at90can64 \ +@@ -238,6 +243,7 @@ MULTILIB_MATCHES = \ + mmcu?avr5=mmcu?atmega16u4 \ + mmcu?avr5=mmcu?atmega32u4 \ + mmcu?avr5=mmcu?atmega32u6 \ ++ mmcu?avr5=mmcu?atmega64hve \ + mmcu?avr5=mmcu?at90scr100 \ + mmcu?avr5=mmcu?at90usb646 \ + mmcu?avr5=mmcu?at90usb647 \ +@@ -263,11 +269,13 @@ MULTILIB_MATCHES = \ + mmcu?avrxmega5=mmcu?atxmega64a1 \ + mmcu?avrxmega5=mmcu?atxmega64a1u \ + mmcu?avrxmega6=mmcu?atxmega128a3 \ ++ mmcu?avrxmega6=mmcu?atxmega128b1 \ + mmcu?avrxmega6=mmcu?atxmega128d3 \ + mmcu?avrxmega6=mmcu?atxmega192a3 \ + mmcu?avrxmega6=mmcu?atxmega192d3 \ + mmcu?avrxmega6=mmcu?atxmega256a3 \ + mmcu?avrxmega6=mmcu?atxmega256a3b \ ++ mmcu?avrxmega6=mmcu?atxmega256a3bu \ + mmcu?avrxmega6=mmcu?atxmega256d3 \ + mmcu?avrxmega7=mmcu?atxmega128a1 \ + mmcu?avrxmega7=mmcu?atxmega128a1u \ diff --git a/401-gcc-4.5.1-atmega32_5_50_90_pa.patch b/401-gcc-atmega32_5_50_90_pa.patch similarity index 87% rename from 401-gcc-4.5.1-atmega32_5_50_90_pa.patch rename to 401-gcc-atmega32_5_50_90_pa.patch index 24fd9c2..1ac0987 100644 --- a/401-gcc-4.5.1-atmega32_5_50_90_pa.patch +++ b/401-gcc-atmega32_5_50_90_pa.patch @@ -1,6 +1,6 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-02-17 12:04:53.000000000 -0600 -+++ gcc/config/avr/avr-devices.c 2011-02-16 15:14:00.000000000 -0600 +--- gcc/config/avr/avr-devices.c 2011-06-24 10:34:16.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2011-06-24 10:33:44.000000000 +0530 @@ -166,9 +166,11 @@ const struct mcu_type_s avr_mcu_types[] { "atmega325", ARCH_AVR5, "__AVR_ATmega325__", 0, 0x0100, "m325" }, { "atmega325a", ARCH_AVR5, "__AVR_ATmega325A__", 0, 0x0100, "m325a" }, @@ -22,9 +22,9 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c { "atmega32m1", ARCH_AVR5, "__AVR_ATmega32M1__", 0, 0x0100, "m32m1" }, { "atmega32u4", ARCH_AVR5, "__AVR_ATmega32U4__", 0, 0x0100, "m32u4" }, diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2011-02-17 12:04:53.000000000 -0600 -+++ gcc/config/avr/t-avr 2011-02-16 15:15:18.000000000 -0600 -@@ -195,9 +195,11 @@ MULTILIB_MATCHES = \ +--- gcc/config/avr/t-avr 2011-06-24 10:34:16.000000000 +0530 ++++ gcc/config/avr/t-avr 2011-06-24 10:33:44.000000000 +0530 +@@ -193,9 +193,11 @@ MULTILIB_MATCHES = \ mmcu?avr5=mmcu?atmega325 \ mmcu?avr5=mmcu?atmega325a \ mmcu?avr5=mmcu?atmega325p \ @@ -36,7 +36,7 @@ diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr mmcu?avr5=mmcu?atmega328 \ mmcu?avr5=mmcu?atmega328p \ mmcu?avr5=mmcu?atmega329 \ -@@ -207,6 +209,7 @@ MULTILIB_MATCHES = \ +@@ -205,6 +207,7 @@ MULTILIB_MATCHES = \ mmcu?avr5=mmcu?atmega3290 \ mmcu?avr5=mmcu?atmega3290a \ mmcu?avr5=mmcu?atmega3290p \ diff --git a/402-gcc-4.5.1-attiny1634.patch b/402-gcc-attiny1634.patch similarity index 73% rename from 402-gcc-4.5.1-attiny1634.patch rename to 402-gcc-attiny1634.patch index 008a9bf..b052e42 100644 --- a/402-gcc-4.5.1-attiny1634.patch +++ b/402-gcc-attiny1634.patch @@ -1,6 +1,6 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-05-13 17:35:31.000000000 -0500 -+++ gcc/config/avr/avr-devices.c 2011-05-13 17:43:10.000000000 -0500 +--- gcc/config/avr/avr-devices.c 2011-06-21 19:07:27.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2011-06-21 19:07:59.000000000 +0530 @@ -113,6 +113,7 @@ const struct mcu_type_s avr_mcu_types[] { "atmega16u2", ARCH_AVR35, "__AVR_ATmega16U2__", 0, 0x0100, "m16u2" }, { "atmega32u2", ARCH_AVR35, "__AVR_ATmega32U2__", 0, 0x0100, "m32u2" }, @@ -10,13 +10,13 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c { "avr4", ARCH_AVR4, NULL, 0, 0x0060, "m8" }, { "atmega8", ARCH_AVR4, "__AVR_ATmega8__", 0, 0x0060, "m8" }, diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2011-05-13 17:35:31.000000000 -0500 -+++ gcc/config/avr/t-avr 2011-05-13 17:37:41.000000000 -0500 -@@ -152,6 +152,7 @@ MULTILIB_MATCHES = \ +--- gcc/config/avr/t-avr 2011-06-21 19:07:27.000000000 +0530 ++++ gcc/config/avr/t-avr 2011-06-21 19:08:51.000000000 +0530 +@@ -149,6 +149,7 @@ MULTILIB_MATCHES = \ mmcu?avr35=mmcu?atmega16u2 \ mmcu?avr35=mmcu?atmega32u2 \ mmcu?avr35=mmcu?attiny167 \ + mmcu?avr35=mmcu?attiny1634 \ + mmcu?avr35=mmcu?attiny327 \ mmcu?avr4=mmcu?atmega48 \ mmcu?avr4=mmcu?atmega48a \ - mmcu?avr4=mmcu?atmega48p \ diff --git a/403-gcc-4.5.1-atmega48pa.patch b/403-gcc-atmega48pa.patch similarity index 75% rename from 403-gcc-4.5.1-atmega48pa.patch rename to 403-gcc-atmega48pa.patch index 9dbc2de..b162b64 100644 --- a/403-gcc-4.5.1-atmega48pa.patch +++ b/403-gcc-atmega48pa.patch @@ -1,6 +1,6 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-06-20 12:23:54.000000000 +0530 -+++ gcc/config/avr/avr-devices.c 2011-06-20 12:11:26.000000000 +0530 +--- gcc/config/avr/avr-devices.c 2011-06-21 19:12:43.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2011-06-21 19:13:11.000000000 +0530 @@ -119,6 +119,7 @@ const struct mcu_type_s avr_mcu_types[] { "atmega8", ARCH_AVR4, "__AVR_ATmega8__", 0, 0x0060, "m8" }, { "atmega48", ARCH_AVR4, "__AVR_ATmega48__", 0, 0x0100, "m48" }, @@ -10,10 +10,10 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c { "atmega88", ARCH_AVR4, "__AVR_ATmega88__", 0, 0x0100, "m88" }, { "atmega88a", ARCH_AVR4, "__AVR_ATmega88A__", 0, 0x0100, "m88a" }, diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2011-06-20 12:23:54.000000000 +0530 -+++ gcc/config/avr/t-avr 2011-06-20 12:11:26.000000000 +0530 -@@ -155,6 +155,7 @@ MULTILIB_MATCHES = \ - mmcu?avr35=mmcu?attiny1634 \ +--- gcc/config/avr/t-avr 2011-06-21 19:12:43.000000000 +0530 ++++ gcc/config/avr/t-avr 2011-06-21 19:13:11.000000000 +0530 +@@ -153,6 +153,7 @@ MULTILIB_MATCHES = \ + mmcu?avr35=mmcu?attiny327 \ mmcu?avr4=mmcu?atmega48 \ mmcu?avr4=mmcu?atmega48a \ + mmcu?avr4=mmcu?atmega48pa \ diff --git a/404-gcc-4.5.1-atxmega_16_32_a4u.patch b/404-gcc-atxmega_16_32_a4u.patch similarity index 76% rename from 404-gcc-4.5.1-atxmega_16_32_a4u.patch rename to 404-gcc-atxmega_16_32_a4u.patch index 05a1874..fcfb97b 100644 --- a/404-gcc-4.5.1-atxmega_16_32_a4u.patch +++ b/404-gcc-atxmega_16_32_a4u.patch @@ -1,6 +1,6 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-09-02 12:01:05.000000000 +0300 -+++ gcc/config/avr/avr-devices.c 2011-09-02 12:10:44.000000000 +0300 +--- gcc/config/avr/avr-devices.c 2011-06-24 10:37:25.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2011-06-24 10:36:43.000000000 +0530 @@ -55,7 +55,7 @@ const struct base_arch_s avr_arch_types[ - avr-libc. */ @@ -55,8 +55,8 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c + /* Enhanced, > 8K, <= 64K + 2-byte PC + + { MOVW/LPMX, JMP/CALL, MUL }. */ { "avr5", ARCH_AVR5, NULL, 0, 0x0060, "m16" }, - { "at90pwm161", ARCH_AVR5, "__AVR_AT90PWM161__", 1, 0x0100, "90pwm161" }, - { "atmega16", ARCH_AVR5, "__AVR_ATmega16__", 0, 0x0060, "m16" }, + { "at90pwm161", ARCH_AVR5, "__AVR_AT90PWM161__", 1, 0x0100, "90pwm161" }, + @@ -229,7 +230,8 @@ const struct mcu_type_s avr_mcu_types[] { "at90usb647", ARCH_AVR5, "__AVR_AT90USB647__", 0, 0x0100, "usb647" }, { "at94k", ARCH_AVR5, "__AVR_AT94K__", 0, 0x0060, "at94k" }, @@ -67,45 +67,27 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c { "avr51", ARCH_AVR51, NULL, 0, 0x0100, "m128" }, { "atmega128", ARCH_AVR51, "__AVR_ATmega128__", 0, 0x0100, "m128" }, { "atmega1280", ARCH_AVR51, "__AVR_ATmega1280__", 0, 0x0200, "m1280" }, -@@ -239,30 +241,33 @@ const struct mcu_type_s avr_mcu_types[] +@@ -239,7 +241,8 @@ const struct mcu_type_s avr_mcu_types[] { "at90can128", ARCH_AVR51, "__AVR_AT90CAN128__", 0, 0x0100, "can128" }, { "at90usb1286", ARCH_AVR51, "__AVR_AT90USB1286__", 0, 0x0100, "usb1286" }, { "at90usb1287", ARCH_AVR51, "__AVR_AT90USB1287__", 0, 0x0100, "usb1286" }, - /* 3-Byte PC. */ -+ /* Enhanced, ==256K + 3-Byte PC + -+ { MOVW/LPMX, JMP/CALL, MUL, ELPM, ELPMX }. */ ++/* Enhanced, ==256K + 3-Byte PC + ++ { MOVW/LPMX, JMP/CALL, MUL, ELPM, ELPMX }. */ { "avr6", ARCH_AVR6, NULL, 0, 0x0200, "m2561" }, - { "atmega2560", ARCH_AVR6, "__AVR_ATmega2560__", 0, 0x0200, "m2561" }, + { "atmega2560", ARCH_AVR6, "__AVR_ATmega2560__", 0, 0x0200, "m2560" }, { "atmega2561", ARCH_AVR6, "__AVR_ATmega2561__", 0, 0x0200, "m2561" }, - /* Enhanced, == 256K. */ - /* Xmega, <= 8K FLASH. */ -- /* Xmega, > 8K, <= 64K FLASH, <= 64K RAM. */ -+ /* Xmega, > 8K, < 64K FLASH, <= 64K RAM. */ +@@ -248,8 +251,10 @@ const struct mcu_type_s avr_mcu_types[] + /* Xmega, > 8K, <= 64K FLASH, <= 64K RAM. */ { "avrxmega2", ARCH_AVRXMEGA2, NULL, 0, 0x2000, "x32a4" }, { "atxmega16a4", ARCH_AVRXMEGA2, "__AVR_ATxmega16A4__", 0, 0x2000, "x16a4" }, + { "atxmega16a4u", ARCH_AVRXMEGA2, "__AVR_ATxmega16A4U__", 0, 0x2000, "x16a4u" }, { "atxmega16d4", ARCH_AVRXMEGA2, "__AVR_ATxmega16D4__", 0, 0x2000, "x16d4" }, - { "atxmega16x1", ARCH_AVRXMEGA2, "__AVR_ATxmega16X1__", 0, 0x2000, "x16x1" }, { "atxmega32a4", ARCH_AVRXMEGA2, "__AVR_ATxmega32A4__", 0, 0x2000, "x32a4" }, -+ { "atxmega32a4u", ARCH_AVRXMEGA2, "__AVR_ATxmega32A4U__", 0, 0x2000, "x32a4u" }, ++ { "atxmega32a4u", ARCH_AVRXMEGA2, "__AVR_ATxmega32A4U__", 0, 0x2000, "x32a4u" }, { "atxmega32d4", ARCH_AVRXMEGA2, "__AVR_ATxmega32D4__", 0, 0x2000, "x32d4" }, + { "atxmega32x1", ARCH_AVRXMEGA2, "__AVR_ATxmega32X1__", 0, 0x2000, "x32x1" }, /* Xmega, > 8K, <= 64K FLASH, > 64K RAM. */ - /* { "avrxmega3", ARCH_AVRXMEGA3, NULL }, */ -- /* Xmega, > 64K, <= 128K FLASH, <= 64K RAM. */ -+ /* Xmega, >= 64K, < 128K FLASH, <= 64K RAM. */ - { "avrxmega4", ARCH_AVRXMEGA4, NULL, 0, 0x2000, "x64d3" }, - { "atxmega64a3", ARCH_AVRXMEGA4, "__AVR_ATxmega64A3__", 0, 0x2000, "x64a3" }, - { "atxmega64d3", ARCH_AVRXMEGA4, "__AVR_ATxmega64D3__", 0, 0x2000, "x64d3" }, -- /* Xmega, > 64K, <= 128K FLASH, > 64K RAM. */ -+ /* Xmega, >= 64K, < 128K FLASH, > 64K RAM. */ - { "avrxmega5", ARCH_AVRXMEGA5, NULL, 0, 0x2000, "x64a1" }, - { "atxmega64a1", ARCH_AVRXMEGA5, "__AVR_ATxmega64A1__", 0, 0x2000, "x64a1" }, - { "atxmega64a1u", ARCH_AVRXMEGA5, "__AVR_ATxmega64A1U__", 0, 0x2000, "x64a1u" }, -- /* Xmega, > 128K, <= 256K FLASH, <= 64K RAM. */ -+ /* Xmega, >= 128K, <= 256K FLASH, <= 64K RAM. */ - { "avrxmega6", ARCH_AVRXMEGA6, NULL, 0, 0x2000, "x128a3" }, - { "atxmega128a3", ARCH_AVRXMEGA6, "__AVR_ATxmega128A3__", 0, 0x2000, "x128a3" }, - { "atxmega128b1", ARCH_AVRXMEGA6, "__AVR_ATxmega128B1__", 0, 0x2000, "x128b1" }, @@ -273,7 +278,7 @@ const struct mcu_type_s avr_mcu_types[] { "atxmega256a3b",ARCH_AVRXMEGA6, "__AVR_ATxmega256A3B__", 0, 0x2000, "x256a3b" }, { "atxmega256a3bu", ARCH_AVRXMEGA6, "__AVR_ATxmega256A3BU__", 0, 0x2000, "x256a3bu" }, @@ -116,18 +98,17 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c { "atxmega128a1", ARCH_AVRXMEGA7, "__AVR_ATxmega128A1__", 0, 0x2000, "x128a1" }, { "atxmega128a1u", ARCH_AVRXMEGA7, "__AVR_ATxmega128A1U__", 0, 0x2000, "x128a1u" }, diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2011-09-02 12:01:05.000000000 +0300 -+++ gcc/config/avr/t-avr 2011-09-02 12:12:37.000000000 +0300 -@@ -266,10 +266,12 @@ MULTILIB_MATCHES = \ +--- gcc/config/avr/t-avr 2011-06-24 10:37:25.000000000 +0530 ++++ gcc/config/avr/t-avr 2011-06-24 10:36:43.000000000 +0530 +@@ -265,9 +265,11 @@ MULTILIB_MATCHES = \ mmcu?avr6=mmcu?atmega2560 \ mmcu?avr6=mmcu?atmega2561 \ mmcu?avrxmega2=mmcu?atxmega16a4 \ + mmcu?avrxmega2=mmcu?atxmega16a4u \ mmcu?avrxmega2=mmcu?atxmega16d4 \ - mmcu?avrxmega2=mmcu?atxmega16x1 \ mmcu?avrxmega2=mmcu?atxmega32d4 \ mmcu?avrxmega2=mmcu?atxmega32a4 \ + mmcu?avrxmega2=mmcu?atxmega32a4u \ + mmcu?avrxmega2=mmcu?atxmega32x1 \ mmcu?avrxmega4=mmcu?atxmega64a3 \ mmcu?avrxmega4=mmcu?atxmega64d3 \ - mmcu?avrxmega5=mmcu?atxmega64a1 \ diff --git a/405-gcc-4.5.1-atxmega64_128_192_256a3u.patch b/405-gcc-atxmega64_128_192_256a3u.patch similarity index 83% rename from 405-gcc-4.5.1-atxmega64_128_192_256a3u.patch rename to 405-gcc-atxmega64_128_192_256a3u.patch index 086098f..1ad7da0 100644 --- a/405-gcc-4.5.1-atxmega64_128_192_256a3u.patch +++ b/405-gcc-atxmega64_128_192_256a3u.patch @@ -1,16 +1,16 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-09-02 12:18:00.000000000 +0300 -+++ gcc/config/avr/avr-devices.c 2011-09-02 12:20:38.000000000 +0300 +--- gcc/config/avr/avr-devices.c 2011-06-24 10:38:47.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2011-06-24 10:38:36.000000000 +0530 @@ -262,6 +262,7 @@ const struct mcu_type_s avr_mcu_types[] - /* Xmega, >= 64K, < 128K FLASH, <= 64K RAM. */ + /* Xmega, > 64K, <= 128K FLASH, <= 64K RAM. */ { "avrxmega4", ARCH_AVRXMEGA4, NULL, 0, 0x2000, "x64d3" }, { "atxmega64a3", ARCH_AVRXMEGA4, "__AVR_ATxmega64A3__", 0, 0x2000, "x64a3" }, + { "atxmega64a3u", ARCH_AVRXMEGA4, "__AVR_ATxmega64A3U__", 0, 0x2000, "x64a3u"}, { "atxmega64d3", ARCH_AVRXMEGA4, "__AVR_ATxmega64D3__", 0, 0x2000, "x64d3" }, - /* Xmega, >= 64K, < 128K FLASH, > 64K RAM. */ + /* Xmega, > 64K, <= 128K FLASH, > 64K RAM. */ { "avrxmega5", ARCH_AVRXMEGA5, NULL, 0, 0x2000, "x64a1" }, @@ -270,11 +271,14 @@ const struct mcu_type_s avr_mcu_types[] - /* Xmega, >= 128K, <= 256K FLASH, <= 64K RAM. */ + /* Xmega, > 128K, <= 256K FLASH, <= 64K RAM. */ { "avrxmega6", ARCH_AVRXMEGA6, NULL, 0, 0x2000, "x128a3" }, { "atxmega128a3", ARCH_AVRXMEGA6, "__AVR_ATxmega128A3__", 0, 0x2000, "x128a3" }, + { "atxmega128a3u",ARCH_AVRXMEGA6, "__AVR_ATxmega128A3U__", 0, 0x2000, "x128a3u"}, @@ -25,11 +25,11 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c { "atxmega256a3bu", ARCH_AVRXMEGA6, "__AVR_ATxmega256A3BU__", 0, 0x2000, "x256a3bu" }, { "atxmega256d3", ARCH_AVRXMEGA6, "__AVR_ATxmega256D3__", 0, 0x2000, "x256d3" }, diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2011-09-02 12:18:00.000000000 +0300 -+++ gcc/config/avr/t-avr 2011-09-02 12:20:38.000000000 +0300 -@@ -273,15 +273,19 @@ MULTILIB_MATCHES = \ - mmcu?avrxmega2=mmcu?atxmega32a4 \ +--- gcc/config/avr/t-avr 2011-06-24 10:38:47.000000000 +0530 ++++ gcc/config/avr/t-avr 2011-06-24 10:38:36.000000000 +0530 +@@ -272,15 +272,19 @@ MULTILIB_MATCHES = \ mmcu?avrxmega2=mmcu?atxmega32a4u \ + mmcu?avrxmega2=mmcu?atxmega32x1 \ mmcu?avrxmega4=mmcu?atxmega64a3 \ + mmcu?avrxmega4=mmcu?atxmega64a3u \ mmcu?avrxmega4=mmcu?atxmega64d3 \ diff --git a/406-gcc-4.5.1-atmegarfr2_a2.patch b/406-gcc-atmegarfr2_a2.patch similarity index 78% rename from 406-gcc-4.5.1-atmegarfr2_a2.patch rename to 406-gcc-atmegarfr2_a2.patch index d16617f..40644a6 100644 --- a/406-gcc-4.5.1-atmegarfr2_a2.patch +++ b/406-gcc-atmegarfr2_a2.patch @@ -1,6 +1,6 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-06-24 16:02:11.000000000 +0530 -+++ gcc/config/avr/avr-devices.c 2011-06-24 15:45:54.000000000 +0530 +--- gcc/config/avr/avr-devices.c 2011-08-12 11:47:21.000000000 +0300 ++++ gcc/config/avr/avr-devices.c 2011-08-12 11:42:24.000000000 +0300 @@ -210,6 +210,8 @@ const struct mcu_type_s avr_mcu_types[] { "atmega64c1", ARCH_AVR5, "__AVR_ATmega64C1__", 0, 0x0100, "m64c1" }, { "atmega64m1", ARCH_AVR5, "__AVR_ATmega64M1__", 0, 0x0100, "m64m1" }, @@ -9,7 +9,7 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c + { "atmega64rfr2", ARCH_AVR5, "__AVR_ATmega64RFR2__", 0, 0x0200, "m64rfr2"}, { "atmega32hvb", ARCH_AVR5, "__AVR_ATmega32HVB__", 0, 0x0100, "m32hvb" }, { "atmega32hvbrevb", ARCH_AVR5, "__AVR_ATmega32HVBREVB__", 1, 0x0100, "m32hvbrevb" }, - { "at90can32", ARCH_AVR5, "__AVR_AT90CAN32__", 0, 0x0100, "can32" }, + { "atmega16hva2", ARCH_AVR5, "__AVR_ATmega16HVA2__", 0, 0x0100, "m16hva2" }, @@ -238,14 +240,18 @@ const struct mcu_type_s avr_mcu_types[] { "atmega1281", ARCH_AVR51, "__AVR_ATmega1281__", 0, 0x0200, "m1281" }, { "atmega1284p", ARCH_AVR51, "__AVR_ATmega1284P__", 0, 0x0100, "m1284p" }, @@ -19,21 +19,21 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c { "at90can128", ARCH_AVR51, "__AVR_AT90CAN128__", 0, 0x0100, "can128" }, { "at90usb1286", ARCH_AVR51, "__AVR_AT90USB1286__", 0, 0x0100, "usb1286" }, { "at90usb1287", ARCH_AVR51, "__AVR_AT90USB1287__", 0, 0x0100, "usb1286" }, - /* Enhanced, ==256K + 3-Byte PC + -- { MOVW/LPMX, JMP/CALL, MUL, ELPM, ELPMX }. */ -+ { MOVW/LPMX, JMP/CALL, MUL, ELPM, ELPMX, EIJMP/EICALL }. */ + /* Enhanced, ==256K + 3-Byte PC + +- { MOVW/LPMX, JMP/CALL, MUL, ELPM, ELPMX }. */ ++ { MOVW/LPMX, JMP/CALL, MUL, ELPM, ELPMX, EIJMP/EICALL }. */ { "avr6", ARCH_AVR6, NULL, 0, 0x0200, "m2561" }, - { "atmega2560", ARCH_AVR6, "__AVR_ATmega2560__", 0, 0x0200, "m2561" }, + { "atmega2560", ARCH_AVR6, "__AVR_ATmega2560__", 0, 0x0200, "m2560" }, { "atmega2561", ARCH_AVR6, "__AVR_ATmega2561__", 0, 0x0200, "m2561" }, + { "atmega256rfa2", ARCH_AVR6, "__AVR_ATmega256RFA2__", 0, 0x0200, "m256rfa2" }, + { "atmega256rfr2", ARCH_AVR6, "__AVR_ATmega256RFR2__", 0, 0x0200, "m256rfr2" }, /* Enhanced, == 256K. */ /* Xmega, <= 8K FLASH. */ - /* Xmega, > 8K, < 64K FLASH, <= 64K RAM. */ + /* Xmega, > 8K, <= 64K FLASH, <= 64K RAM. */ diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2011-06-24 16:02:11.000000000 +0530 -+++ gcc/config/avr/t-avr 2011-06-24 15:56:46.000000000 +0530 -@@ -213,6 +213,8 @@ MULTILIB_MATCHES = \ +--- gcc/config/avr/t-avr 2011-08-12 11:47:21.000000000 +0300 ++++ gcc/config/avr/t-avr 2011-08-12 11:45:16.000000000 +0300 +@@ -211,6 +211,8 @@ MULTILIB_MATCHES = \ mmcu?avr5=mmcu?atmega3290p \ mmcu?avr5=mmcu?atmega3290pa \ mmcu?avr5=mmcu?atmega406 \ @@ -42,7 +42,7 @@ diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr mmcu?avr5=mmcu?atmega64 \ mmcu?avr5=mmcu?atmega640 \ mmcu?avr5=mmcu?atmega644 \ -@@ -259,10 +261,14 @@ MULTILIB_MATCHES = \ +@@ -259,9 +261,13 @@ MULTILIB_MATCHES = \ mmcu?avr51=mmcu?atmega1281 \ mmcu?avr51=mmcu?atmega1284p \ mmcu?avr51=mmcu?atmega128rfa1 \ @@ -51,8 +51,7 @@ diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr mmcu?avr51=mmcu?at90can128 \ mmcu?avr51=mmcu?at90usb1286 \ mmcu?avr51=mmcu?at90usb1287 \ - mmcu?avr51=mmcu?m3000 \ -+ mmcu?avr6=mmcu?atmega256rfa2 \ ++ mmcu?avr6=mmcu?atmega256rfa2 \ + mmcu?avr6=mmcu?atmega256rfr2 \ mmcu?avr6=mmcu?atmega2560 \ mmcu?avr6=mmcu?atmega2561 \ diff --git a/407-gcc-4.5.1-atmega165pa.patch b/407-gcc-atmega165pa.patch similarity index 62% rename from 407-gcc-4.5.1-atmega165pa.patch rename to 407-gcc-atmega165pa.patch index 5a73ff2..ca1a4be 100644 --- a/407-gcc-4.5.1-atmega165pa.patch +++ b/407-gcc-atmega165pa.patch @@ -1,7 +1,7 @@ -diff -Naurp ./gcc/config/avr/avr-devices.c ./gcc/config/avr/avr-devices.c ---- ./gcc/config/avr/avr-devices.c 2011-06-21 12:25:28.000000000 +0530 -+++ ./gcc/config/avr/avr-devices.c 2011-06-21 12:30:08.000000000 +0530 -@@ -148,6 +148,7 @@ const struct mcu_type_s avr_mcu_types[] +diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c +--- gcc/config/avr/avr-devices.c 2011-08-12 11:50:23.000000000 +0300 ++++ gcc/config/avr/avr-devices.c 2011-08-12 11:50:43.000000000 +0300 +@@ -149,6 +149,7 @@ const struct mcu_type_s avr_mcu_types[] { "atmega165", ARCH_AVR5, "__AVR_ATmega165__", 0, 0x0100, "m165" }, { "atmega165a", ARCH_AVR5, "__AVR_ATmega165A__", 0, 0x0100, "m165a" }, { "atmega165p", ARCH_AVR5, "__AVR_ATmega165P__", 0, 0x0100, "m165p" }, @@ -9,10 +9,10 @@ diff -Naurp ./gcc/config/avr/avr-devices.c ./gcc/config/avr/avr-devices.c { "atmega168", ARCH_AVR5, "__AVR_ATmega168__", 0, 0x0100, "m168" }, { "atmega168a", ARCH_AVR5, "__AVR_ATmega168A__", 0, 0x0100, "m168a" }, { "atmega168p", ARCH_AVR5, "__AVR_ATmega168P__", 0, 0x0100, "m168p" }, -diff -Naurp ./gcc/config/avr/t-avr ./gcc/config/avr/t-avr ---- ./gcc/config/avr/t-avr 2011-06-21 12:25:28.000000000 +0530 -+++ ./gcc/config/avr/t-avr 2011-06-21 12:31:55.000000000 +0530 -@@ -182,6 +182,7 @@ MULTILIB_MATCHES = \ +diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr +--- gcc/config/avr/t-avr 2011-08-12 11:50:23.000000000 +0300 ++++ gcc/config/avr/t-avr 2011-08-12 11:50:43.000000000 +0300 +@@ -180,6 +180,7 @@ MULTILIB_MATCHES = \ mmcu?avr5=mmcu?atmega165 \ mmcu?avr5=mmcu?atmega165a \ mmcu?avr5=mmcu?atmega165p \ diff --git a/408-gcc-4.5.1-atxmega384c3.patch b/408-gcc-atxmega384c3.patch similarity index 83% rename from 408-gcc-4.5.1-atxmega384c3.patch rename to 408-gcc-atxmega384c3.patch index ddf840e..ec9977a 100644 --- a/408-gcc-4.5.1-atxmega384c3.patch +++ b/408-gcc-atxmega384c3.patch @@ -1,11 +1,11 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-09-02 12:26:35.000000000 +0300 -+++ gcc/config/avr/avr-devices.c 2011-09-02 12:26:12.000000000 +0300 +--- gcc/config/avr/avr-devices.c 2011-10-28 11:14:59.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2011-10-28 11:44:14.000000000 +0530 @@ -275,7 +275,7 @@ const struct mcu_type_s avr_mcu_types[] { "avrxmega5", ARCH_AVRXMEGA5, NULL, 0, 0x2000, "x64a1" }, { "atxmega64a1", ARCH_AVRXMEGA5, "__AVR_ATxmega64A1__", 0, 0x2000, "x64a1" }, { "atxmega64a1u", ARCH_AVRXMEGA5, "__AVR_ATxmega64A1U__", 0, 0x2000, "x64a1u" }, -- /* Xmega, >= 128K, <= 256K FLASH, <= 64K RAM. */ +- /* Xmega, > 128K, <= 256K FLASH, <= 64K RAM. */ + /* Xmega, >= 128K FLASH, <= 64K RAM. */ { "avrxmega6", ARCH_AVRXMEGA6, NULL, 0, 0x2000, "x128a3" }, { "atxmega128a3", ARCH_AVRXMEGA6, "__AVR_ATxmega128A3__", 0, 0x2000, "x128a3" }, @@ -21,9 +21,9 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c { "atxmega128a1", ARCH_AVRXMEGA7, "__AVR_ATxmega128A1__", 0, 0x2000, "x128a1" }, { "atxmega128a1u", ARCH_AVRXMEGA7, "__AVR_ATxmega128A1U__", 0, 0x2000, "x128a1u" }, diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2011-09-02 12:26:35.000000000 +0300 -+++ gcc/config/avr/t-avr 2011-09-02 12:26:12.000000000 +0300 -@@ -296,6 +296,7 @@ MULTILIB_MATCHES = \ +--- gcc/config/avr/t-avr 2011-10-28 11:14:59.000000000 +0530 ++++ gcc/config/avr/t-avr 2011-10-28 11:40:24.000000000 +0530 +@@ -295,6 +295,7 @@ MULTILIB_MATCHES = \ mmcu?avrxmega6=mmcu?atxmega256a3b \ mmcu?avrxmega6=mmcu?atxmega256a3bu \ mmcu?avrxmega6=mmcu?atxmega256d3 \ diff --git a/409-gcc-4.5.1-attiny80.patch b/409-gcc-attiny80.patch similarity index 76% rename from 409-gcc-4.5.1-attiny80.patch rename to 409-gcc-attiny80.patch index 6dfd995..c109b09 100644 --- a/409-gcc-4.5.1-attiny80.patch +++ b/409-gcc-attiny80.patch @@ -1,6 +1,6 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-06-10 16:21:40.000000000 -0500 -+++ gcc/config/avr/avr-devices.c 2011-06-16 11:39:07.000000000 -0500 +--- gcc/config/avr/avr-devices.c 2011-10-28 11:44:14.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2011-10-28 11:55:44.000000000 +0530 @@ -96,6 +96,7 @@ const struct mcu_type_s avr_mcu_types[] { "attiny87", ARCH_AVR25, "__AVR_ATtiny87__", 0, 0x0100, "tn87" }, { "attiny48", ARCH_AVR25, "__AVR_ATtiny48__", 0, 0x0100, "tn48" }, @@ -10,9 +10,9 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c /* Classic, > 8K, <= 64K +2-byte PC + { JMP/CALL }. */ { "avr3", ARCH_AVR3, NULL, 0, 0x0060, "43355" }, diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2011-06-10 16:21:40.000000000 -0500 -+++ gcc/config/avr/t-avr 2011-06-16 11:39:55.000000000 -0500 -@@ -141,6 +141,7 @@ MULTILIB_MATCHES = \ +--- gcc/config/avr/t-avr 2011-10-28 11:40:24.000000000 +0530 ++++ gcc/config/avr/t-avr 2011-10-28 11:55:44.000000000 +0530 +@@ -138,6 +138,7 @@ MULTILIB_MATCHES = \ mmcu?avr25=mmcu?attiny87 \ mmcu?avr25=mmcu?attiny48 \ mmcu?avr25=mmcu?attiny88 \ diff --git a/410-gcc-4.5.1-atxmega128a4u.patch b/410-gcc-atxmega128a4u.patch similarity index 76% rename from 410-gcc-4.5.1-atxmega128a4u.patch rename to 410-gcc-atxmega128a4u.patch index 30e4446..0f5be09 100644 --- a/410-gcc-4.5.1-atxmega128a4u.patch +++ b/410-gcc-atxmega128a4u.patch @@ -1,6 +1,6 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-09-02 12:31:10.000000000 +0300 -+++ gcc/config/avr/avr-devices.c 2011-09-02 12:30:51.000000000 +0300 +--- gcc/config/avr/avr-devices.c 2011-10-28 11:55:44.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2011-10-28 12:00:41.000000000 +0530 @@ -295,6 +295,7 @@ const struct mcu_type_s avr_mcu_types[] { "avrxmega7", ARCH_AVRXMEGA7, NULL, 0, 0x2000, "x128a1" }, { "atxmega128a1", ARCH_AVRXMEGA7, "__AVR_ATxmega128A1__", 0, 0x2000, "x128a1" }, @@ -10,9 +10,9 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c { "avrtiny10", ARCH_AVRTINY10, NULL, 0, 0x0040, "tn10" }, { "attiny4", ARCH_AVRTINY10, "__AVR_ATtiny4__", 0, 0x0040, "tn4" }, diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2011-09-02 12:31:10.000000000 +0300 -+++ gcc/config/avr/t-avr 2011-09-02 12:30:51.000000000 +0300 -@@ -300,6 +300,7 @@ MULTILIB_MATCHES = \ +--- gcc/config/avr/t-avr 2011-10-28 11:55:44.000000000 +0530 ++++ gcc/config/avr/t-avr 2011-10-28 12:00:41.000000000 +0530 +@@ -299,6 +299,7 @@ MULTILIB_MATCHES = \ mmcu?avrxmega6=mmcu?atxmega384c3 \ mmcu?avrxmega7=mmcu?atxmega128a1 \ mmcu?avrxmega7=mmcu?atxmega128a1u \ diff --git a/411-gcc-4.5.1-atxmega64d4.patch b/411-gcc-atxmega64d4.patch similarity index 73% rename from 411-gcc-4.5.1-atxmega64d4.patch rename to 411-gcc-atxmega64d4.patch index e08b68b..320397d 100644 --- a/411-gcc-4.5.1-atxmega64d4.patch +++ b/411-gcc-atxmega64d4.patch @@ -1,18 +1,18 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-09-02 12:37:07.000000000 +0300 -+++ gcc/config/avr/avr-devices.c 2011-09-02 12:37:47.000000000 +0300 +--- gcc/config/avr/avr-devices.c 2011-10-28 12:00:41.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2011-10-28 12:06:09.000000000 +0530 @@ -272,6 +272,7 @@ const struct mcu_type_s avr_mcu_types[] { "atxmega64a3", ARCH_AVRXMEGA4, "__AVR_ATxmega64A3__", 0, 0x2000, "x64a3" }, { "atxmega64a3u", ARCH_AVRXMEGA4, "__AVR_ATxmega64A3U__", 0, 0x2000, "x64a3u"}, { "atxmega64d3", ARCH_AVRXMEGA4, "__AVR_ATxmega64D3__", 0, 0x2000, "x64d3" }, + { "atxmega64d4", ARCH_AVRXMEGA4, "__AVR_ATxmega64D4__", 0, 0x2000, "x64d4" }, - /* Xmega, >= 64K, < 128K FLASH, > 64K RAM. */ + /* Xmega, > 64K, <= 128K FLASH, > 64K RAM. */ { "avrxmega5", ARCH_AVRXMEGA5, NULL, 0, 0x2000, "x64a1" }, { "atxmega64a1", ARCH_AVRXMEGA5, "__AVR_ATxmega64A1__", 0, 0x2000, "x64a1" }, diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2011-09-02 12:37:07.000000000 +0300 -+++ gcc/config/avr/t-avr 2011-09-02 12:37:47.000000000 +0300 -@@ -283,6 +283,7 @@ MULTILIB_MATCHES = \ +--- gcc/config/avr/t-avr 2011-10-28 12:00:41.000000000 +0530 ++++ gcc/config/avr/t-avr 2011-10-28 12:04:00.000000000 +0530 +@@ -282,6 +282,7 @@ MULTILIB_MATCHES = \ mmcu?avrxmega4=mmcu?atxmega64a3 \ mmcu?avrxmega4=mmcu?atxmega64a3u \ mmcu?avrxmega4=mmcu?atxmega64d3 \ diff --git a/412-gcc-4.5.1-atmega164pa_168pa_32a_64a.patch b/412-gcc-atmega164pa_168pa_32a_64a.patch similarity index 82% rename from 412-gcc-4.5.1-atmega164pa_168pa_32a_64a.patch rename to 412-gcc-atmega164pa_168pa_32a_64a.patch index c0004b5..0a08fe8 100644 --- a/412-gcc-4.5.1-atmega164pa_168pa_32a_64a.patch +++ b/412-gcc-atmega164pa_168pa_32a_64a.patch @@ -1,15 +1,15 @@ -diff -Naurp ./gcc/config/avr/avr-devices.c ./gcc/config/avr/avr-devices.c ---- ./gcc/config/avr/avr-devices.c 2011-08-30 14:41:43.000000000 +0300 -+++ ./gcc/config/avr/avr-devices.c 2011-08-30 14:45:00.000000000 +0300 -@@ -146,6 +146,7 @@ const struct mcu_type_s avr_mcu_types[] +diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c +--- gcc/config/avr/avr-devices.c 2011-10-28 12:06:09.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2011-10-28 12:15:49.000000000 +0530 +@@ -147,6 +147,7 @@ const struct mcu_type_s avr_mcu_types[] { "atmega163", ARCH_AVR5, "__AVR_ATmega163__", 0, 0x0060, "m163" }, - { "atmega164a", ARCH_AVR5, "__AVR_ATmega164A__", 0, 0x0060, "m164a" }, + { "atmega164a", ARCH_AVR5, "__AVR_ATmega164A__", 0, 0x0100, "m164a" }, { "atmega164p", ARCH_AVR5, "__AVR_ATmega164P__", 0, 0x0100, "m164p" }, + { "atmega164pa", ARCH_AVR5, "__AVR_ATmega164PA__", 0, 0x0100, "m164pa" }, { "atmega165", ARCH_AVR5, "__AVR_ATmega165__", 0, 0x0100, "m165" }, { "atmega165a", ARCH_AVR5, "__AVR_ATmega165A__", 0, 0x0100, "m165a" }, { "atmega165p", ARCH_AVR5, "__AVR_ATmega165P__", 0, 0x0100, "m165p" }, -@@ -153,6 +154,7 @@ const struct mcu_type_s avr_mcu_types[] +@@ -154,6 +155,7 @@ const struct mcu_type_s avr_mcu_types[] { "atmega168", ARCH_AVR5, "__AVR_ATmega168__", 0, 0x0100, "m168" }, { "atmega168a", ARCH_AVR5, "__AVR_ATmega168A__", 0, 0x0100, "m168a" }, { "atmega168p", ARCH_AVR5, "__AVR_ATmega168P__", 0, 0x0100, "m168p" }, @@ -23,7 +23,7 @@ diff -Naurp ./gcc/config/avr/avr-devices.c ./gcc/config/avr/avr-devices.c { "atmega32", ARCH_AVR5, "__AVR_ATmega32__", 0, 0x0060, "m32" }, + { "atmega32a", ARCH_AVR5, "__AVR_ATmega32A__", 0, 0x0060, "m32a" }, { "atmega323", ARCH_AVR5, "__AVR_ATmega323__", 0, 0x0060, "m323" }, - { "atmega324a", ARCH_AVR5, "__AVR_ATmega324A__", 0, 0x0060, "m324a" }, + { "atmega324a", ARCH_AVR5, "__AVR_ATmega324A__", 0, 0x0100, "m324a" }, { "atmega324p", ARCH_AVR5, "__AVR_ATmega324P__", 0, 0x0100, "m324p" }, @@ -192,6 +195,7 @@ const struct mcu_type_s avr_mcu_types[] { "atmega32u6", ARCH_AVR5, "__AVR_ATmega32U6__", 0, 0x0100, "m32u6" }, @@ -33,10 +33,10 @@ diff -Naurp ./gcc/config/avr/avr-devices.c ./gcc/config/avr/avr-devices.c { "atmega640", ARCH_AVR5, "__AVR_ATmega640__", 0, 0x0200, "m640" }, { "atmega644", ARCH_AVR5, "__AVR_ATmega644__", 0, 0x0100, "m644" }, { "atmega644a", ARCH_AVR5, "__AVR_ATmega644A__", 0, 0x0100, "m644a" }, -diff -Naurp ./gcc/config/avr/t-avr ./gcc/config/avr/t-avr ---- ./gcc/config/avr/t-avr 2011-08-30 14:41:43.000000000 +0300 -+++ ./gcc/config/avr/t-avr 2011-08-30 14:45:00.000000000 +0300 -@@ -180,6 +180,7 @@ MULTILIB_MATCHES = \ +diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr +--- gcc/config/avr/t-avr 2011-10-28 12:04:00.000000000 +0530 ++++ gcc/config/avr/t-avr 2011-10-28 12:15:49.000000000 +0530 +@@ -178,6 +178,7 @@ MULTILIB_MATCHES = \ mmcu?avr5=mmcu?atmega163 \ mmcu?avr5=mmcu?atmega164a \ mmcu?avr5=mmcu?atmega164p \ @@ -44,7 +44,7 @@ diff -Naurp ./gcc/config/avr/t-avr ./gcc/config/avr/t-avr mmcu?avr5=mmcu?atmega165 \ mmcu?avr5=mmcu?atmega165a \ mmcu?avr5=mmcu?atmega165p \ -@@ -187,11 +188,13 @@ MULTILIB_MATCHES = \ +@@ -185,11 +186,13 @@ MULTILIB_MATCHES = \ mmcu?avr5=mmcu?atmega168 \ mmcu?avr5=mmcu?atmega168a \ mmcu?avr5=mmcu?atmega168p \ @@ -58,7 +58,7 @@ diff -Naurp ./gcc/config/avr/t-avr ./gcc/config/avr/t-avr mmcu?avr5=mmcu?atmega323 \ mmcu?avr5=mmcu?atmega324a \ mmcu?avr5=mmcu?atmega324p \ -@@ -218,6 +221,7 @@ MULTILIB_MATCHES = \ +@@ -216,6 +219,7 @@ MULTILIB_MATCHES = \ mmcu?avr5=mmcu?atmega64rfa2 \ mmcu?avr5=mmcu?atmega64rfr2 \ mmcu?avr5=mmcu?atmega64 \ diff --git a/413-gcc-4.5.1-atxmega32x1.patch b/413-gcc-4.5.1-atxmega32x1.patch deleted file mode 100644 index b7234aa..0000000 --- a/413-gcc-4.5.1-atxmega32x1.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-09-02 12:44:50.000000000 +0300 -+++ gcc/config/avr/avr-devices.c 2011-09-02 12:55:09.000000000 +0300 -@@ -269,6 +269,7 @@ const struct mcu_type_s avr_mcu_types[] - { "atxmega32a4", ARCH_AVRXMEGA2, "__AVR_ATxmega32A4__", 0, 0x2000, "x32a4" }, - { "atxmega32a4u", ARCH_AVRXMEGA2, "__AVR_ATxmega32A4U__", 0, 0x2000, "x32a4u" }, - { "atxmega32d4", ARCH_AVRXMEGA2, "__AVR_ATxmega32D4__", 0, 0x2000, "x32d4" }, -+ { "atxmega32x1", ARCH_AVRXMEGA2, "__AVR_ATxmega32X1__", 0, 0x2000, "x32x1" }, - /* Xmega, > 8K, <= 64K FLASH, > 64K RAM. */ - /* { "avrxmega3", ARCH_AVRXMEGA3, NULL }, */ - /* Xmega, >= 64K, < 128K FLASH, <= 64K RAM. */ -diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2011-09-02 12:43:34.000000000 +0300 -+++ gcc/config/avr/t-avr 2011-09-02 12:55:52.000000000 +0300 -@@ -284,6 +284,7 @@ MULTILIB_MATCHES = \ - mmcu?avrxmega2=mmcu?atxmega32d4 \ - mmcu?avrxmega2=mmcu?atxmega32a4 \ - mmcu?avrxmega2=mmcu?atxmega32a4u \ -+ mmcu?avrxmega2=mmcu?atxmega32x1 \ - mmcu?avrxmega4=mmcu?atxmega64a3 \ - mmcu?avrxmega4=mmcu?atxmega64a3u \ - mmcu?avrxmega4=mmcu?atxmega64d3 \ diff --git a/414-gcc-4.5.1-atxmega64_128_b3.patch b/413-gcc-atxmega64_128_b3.patch similarity index 77% rename from 414-gcc-4.5.1-atxmega64_128_b3.patch rename to 413-gcc-atxmega64_128_b3.patch index c38c134..3f3bb54 100644 --- a/414-gcc-4.5.1-atxmega64_128_b3.patch +++ b/413-gcc-atxmega64_128_b3.patch @@ -1,15 +1,15 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-09-05 14:52:39.000000000 +0300 -+++ gcc/config/avr/avr-devices.c 2011-09-05 14:55:31.000000000 +0300 -@@ -276,6 +276,7 @@ const struct mcu_type_s avr_mcu_types[] +--- gcc/config/avr/avr-devices.c 2011-10-28 12:15:49.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2011-10-28 14:31:05.000000000 +0530 +@@ -275,6 +275,7 @@ const struct mcu_type_s avr_mcu_types[] { "avrxmega4", ARCH_AVRXMEGA4, NULL, 0, 0x2000, "x64d3" }, { "atxmega64a3", ARCH_AVRXMEGA4, "__AVR_ATxmega64A3__", 0, 0x2000, "x64a3" }, { "atxmega64a3u", ARCH_AVRXMEGA4, "__AVR_ATxmega64A3U__", 0, 0x2000, "x64a3u"}, + { "atxmega64b3", ARCH_AVRXMEGA4, "__AVR_ATxmega64B3__", 0, 0x2000, "x64b3"}, { "atxmega64d3", ARCH_AVRXMEGA4, "__AVR_ATxmega64D3__", 0, 0x2000, "x64d3" }, { "atxmega64d4", ARCH_AVRXMEGA4, "__AVR_ATxmega64D4__", 0, 0x2000, "x64d4" }, - /* Xmega, >= 64K, < 128K FLASH, > 64K RAM. */ -@@ -287,6 +288,7 @@ const struct mcu_type_s avr_mcu_types[] + /* Xmega, > 64K, <= 128K FLASH, > 64K RAM. */ +@@ -286,6 +287,7 @@ const struct mcu_type_s avr_mcu_types[] { "atxmega128a3", ARCH_AVRXMEGA6, "__AVR_ATxmega128A3__", 0, 0x2000, "x128a3" }, { "atxmega128a3u",ARCH_AVRXMEGA6, "__AVR_ATxmega128A3U__", 0, 0x2000, "x128a3u"}, { "atxmega128b1", ARCH_AVRXMEGA6, "__AVR_ATxmega128B1__", 0, 0x2000, "x128b1" }, @@ -18,9 +18,9 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c { "atxmega192a3", ARCH_AVRXMEGA6, "__AVR_ATxmega192A3__", 0, 0x2000, "x192a3" }, { "atxmega192a3u",ARCH_AVRXMEGA6, "__AVR_ATxmega192A3U__", 0, 0x2000, "x192a3u"}, diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2011-09-05 14:52:39.000000000 +0300 -+++ gcc/config/avr/t-avr 2011-09-05 14:56:06.000000000 +0300 -@@ -287,6 +287,7 @@ MULTILIB_MATCHES = \ +--- gcc/config/avr/t-avr 2011-10-28 12:15:49.000000000 +0530 ++++ gcc/config/avr/t-avr 2011-10-28 14:31:05.000000000 +0530 +@@ -285,6 +285,7 @@ MULTILIB_MATCHES = \ mmcu?avrxmega2=mmcu?atxmega32x1 \ mmcu?avrxmega4=mmcu?atxmega64a3 \ mmcu?avrxmega4=mmcu?atxmega64a3u \ @@ -28,7 +28,7 @@ diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr mmcu?avrxmega4=mmcu?atxmega64d3 \ mmcu?avrxmega4=mmcu?atxmega64d4 \ mmcu?avrxmega5=mmcu?atxmega64a1 \ -@@ -294,6 +295,7 @@ MULTILIB_MATCHES = \ +@@ -292,6 +293,7 @@ MULTILIB_MATCHES = \ mmcu?avrxmega6=mmcu?atxmega128a3 \ mmcu?avrxmega6=mmcu?atxmega128a3u \ mmcu?avrxmega6=mmcu?atxmega128b1 \ diff --git a/415-gcc-4.5.1-atxmega64b1.patch b/414-gcc-atxmega64b1.patch similarity index 73% rename from 415-gcc-4.5.1-atxmega64b1.patch rename to 414-gcc-atxmega64b1.patch index 3f56aaf..8a65026 100644 --- a/415-gcc-4.5.1-atxmega64b1.patch +++ b/414-gcc-atxmega64b1.patch @@ -1,7 +1,7 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-09-07 18:19:24.000000000 +0300 -+++ gcc/config/avr/avr-devices.c 2011-09-07 18:22:51.000000000 +0300 -@@ -276,6 +276,7 @@ const struct mcu_type_s avr_mcu_types[] +--- gcc/config/avr/avr-devices.c 2011-10-28 14:31:05.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2011-10-28 14:34:49.000000000 +0530 +@@ -275,6 +275,7 @@ const struct mcu_type_s avr_mcu_types[] { "avrxmega4", ARCH_AVRXMEGA4, NULL, 0, 0x2000, "x64d3" }, { "atxmega64a3", ARCH_AVRXMEGA4, "__AVR_ATxmega64A3__", 0, 0x2000, "x64a3" }, { "atxmega64a3u", ARCH_AVRXMEGA4, "__AVR_ATxmega64A3U__", 0, 0x2000, "x64a3u"}, @@ -10,9 +10,9 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c { "atxmega64d3", ARCH_AVRXMEGA4, "__AVR_ATxmega64D3__", 0, 0x2000, "x64d3" }, { "atxmega64d4", ARCH_AVRXMEGA4, "__AVR_ATxmega64D4__", 0, 0x2000, "x64d4" }, diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2011-09-07 18:19:24.000000000 +0300 -+++ gcc/config/avr/t-avr 2011-09-07 18:23:45.000000000 +0300 -@@ -287,6 +287,7 @@ MULTILIB_MATCHES = \ +--- gcc/config/avr/t-avr 2011-10-28 14:31:05.000000000 +0530 ++++ gcc/config/avr/t-avr 2011-10-28 14:34:49.000000000 +0530 +@@ -285,6 +285,7 @@ MULTILIB_MATCHES = \ mmcu?avrxmega2=mmcu?atxmega32x1 \ mmcu?avrxmega4=mmcu?atxmega64a3 \ mmcu?avrxmega4=mmcu?atxmega64a3u \ diff --git a/416-gcc-4.5.1-atmega_8a_128a_1284.patch b/415-gcc-atmega_8a_128a_1284.patch similarity index 87% rename from 416-gcc-4.5.1-atmega_8a_128a_1284.patch rename to 415-gcc-atmega_8a_128a_1284.patch index 80680b7..98c9d40 100644 --- a/416-gcc-4.5.1-atmega_8a_128a_1284.patch +++ b/415-gcc-atmega_8a_128a_1284.patch @@ -1,6 +1,6 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-09-08 17:29:28.000000000 +0300 -+++ gcc/config/avr/avr-devices.c 2011-09-08 17:34:31.000000000 +0300 +--- gcc/config/avr/avr-devices.c 2011-10-28 14:34:49.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2011-10-28 14:39:27.000000000 +0530 @@ -118,6 +118,7 @@ const struct mcu_type_s avr_mcu_types[] /* Enhanced, <= 8K + 2-byte PC + { MOVW/LPMX, MUL }. */ { "avr4", ARCH_AVR4, NULL, 0, 0x0060, "m8" }, @@ -21,9 +21,9 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c { "atmega128rfa1", ARCH_AVR51, "__AVR_ATmega128RFA1__", 0, 0x0200, "m128rfa1" }, { "atmega128rfa2", ARCH_AVR51, "__AVR_ATmega128RFA2__", 0, 0x0200, "m128rfa2" }, diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2011-09-08 17:29:28.000000000 +0300 -+++ gcc/config/avr/t-avr 2011-09-08 17:37:19.000000000 +0300 -@@ -159,6 +159,7 @@ MULTILIB_MATCHES = \ +--- gcc/config/avr/t-avr 2011-10-28 14:55:08.000000000 +0530 ++++ gcc/config/avr/t-avr 2011-10-28 14:52:10.000000000 +0530 +@@ -157,6 +157,7 @@ MULTILIB_MATCHES = \ mmcu?avr4=mmcu?atmega48pa \ mmcu?avr4=mmcu?atmega48p \ mmcu?avr4=mmcu?atmega8 \ @@ -32,8 +32,8 @@ diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr mmcu?avr4=mmcu?atmega8535 \ mmcu?avr4=mmcu?atmega88 \ @@ -263,8 +264,10 @@ MULTILIB_MATCHES = \ - mmcu?avr5=mmcu?at90usb647 \ mmcu?avr5=mmcu?at94k \ + mmcu?avr5=mmcu?m3000 \ mmcu?avr51=mmcu?atmega128 \ + mmcu?avr51=mmcu?atmega128a \ mmcu?avr51=mmcu?atmega1280 \ diff --git a/417-gcc-4.5.1-atxmega64a4u.patch b/416-gcc-atxmega64a4u.patch similarity index 73% rename from 417-gcc-4.5.1-atxmega64a4u.patch rename to 416-gcc-atxmega64a4u.patch index 004fc3a..03dde6b 100644 --- a/417-gcc-4.5.1-atxmega64a4u.patch +++ b/416-gcc-atxmega64a4u.patch @@ -1,7 +1,7 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-09-12 14:07:28.000000000 +0300 -+++ gcc/config/avr/avr-devices.c 2011-09-12 14:29:05.000000000 +0300 -@@ -279,6 +279,7 @@ const struct mcu_type_s avr_mcu_types[] +--- gcc/config/avr/avr-devices.c 2011-10-28 14:39:27.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2011-10-28 14:59:12.000000000 +0530 +@@ -278,6 +278,7 @@ const struct mcu_type_s avr_mcu_types[] { "avrxmega4", ARCH_AVRXMEGA4, NULL, 0, 0x2000, "x64d3" }, { "atxmega64a3", ARCH_AVRXMEGA4, "__AVR_ATxmega64A3__", 0, 0x2000, "x64a3" }, { "atxmega64a3u", ARCH_AVRXMEGA4, "__AVR_ATxmega64A3U__", 0, 0x2000, "x64a3u"}, @@ -10,9 +10,9 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c { "atxmega64b3", ARCH_AVRXMEGA4, "__AVR_ATxmega64B3__", 0, 0x2000, "x64b3"}, { "atxmega64d3", ARCH_AVRXMEGA4, "__AVR_ATxmega64D3__", 0, 0x2000, "x64d3" }, diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2011-09-12 14:07:28.000000000 +0300 -+++ gcc/config/avr/t-avr 2011-09-12 14:29:05.000000000 +0300 -@@ -290,6 +290,7 @@ MULTILIB_MATCHES = \ +--- gcc/config/avr/t-avr 2011-10-28 14:52:10.000000000 +0530 ++++ gcc/config/avr/t-avr 2011-10-28 14:59:12.000000000 +0530 +@@ -288,6 +288,7 @@ MULTILIB_MATCHES = \ mmcu?avrxmega2=mmcu?atxmega32x1 \ mmcu?avrxmega4=mmcu?atxmega64a3 \ mmcu?avrxmega4=mmcu?atxmega64a3u \ diff --git a/418-gcc-4.5.1-atxmega128d4.patch b/417-gcc-atxmega128d4.patch similarity index 73% rename from 418-gcc-4.5.1-atxmega128d4.patch rename to 417-gcc-atxmega128d4.patch index b962bcf..af9222b 100644 --- a/418-gcc-4.5.1-atxmega128d4.patch +++ b/417-gcc-atxmega128d4.patch @@ -1,7 +1,7 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-09-15 11:58:29.000000000 +0300 -+++ gcc/config/avr/avr-devices.c 2011-09-15 12:01:45.000000000 +0300 -@@ -295,6 +295,7 @@ const struct mcu_type_s avr_mcu_types[] +--- gcc/config/avr/avr-devices.c 2011-10-28 14:59:12.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2011-10-28 15:04:23.000000000 +0530 +@@ -294,6 +294,7 @@ const struct mcu_type_s avr_mcu_types[] { "atxmega128b1", ARCH_AVRXMEGA6, "__AVR_ATxmega128B1__", 0, 0x2000, "x128b1" }, { "atxmega128b3", ARCH_AVRXMEGA6, "__AVR_ATxmega128B3__", 0, 0x2000, "x128b3" }, { "atxmega128d3", ARCH_AVRXMEGA6, "__AVR_ATxmega128D3__", 0, 0x2000, "x128d3" }, @@ -10,9 +10,9 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c { "atxmega192a3u",ARCH_AVRXMEGA6, "__AVR_ATxmega192A3U__", 0, 0x2000, "x192a3u"}, { "atxmega192d3", ARCH_AVRXMEGA6, "__AVR_ATxmega192D3__", 0, 0x2000, "x192d3" }, diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2011-09-15 11:58:29.000000000 +0300 -+++ gcc/config/avr/t-avr 2011-09-15 12:01:45.000000000 +0300 -@@ -302,6 +302,7 @@ MULTILIB_MATCHES = \ +--- gcc/config/avr/t-avr 2011-10-28 14:59:12.000000000 +0530 ++++ gcc/config/avr/t-avr 2011-10-28 15:04:23.000000000 +0530 +@@ -300,6 +300,7 @@ MULTILIB_MATCHES = \ mmcu?avrxmega6=mmcu?atxmega128b1 \ mmcu?avrxmega6=mmcu?atxmega128b3 \ mmcu?avrxmega6=mmcu?atxmega128d3 \ diff --git a/419-gcc-4.5.1-atmxt336s.patch b/418-gcc-atmxt336s.patch similarity index 72% rename from 419-gcc-4.5.1-atmxt336s.patch rename to 418-gcc-atmxt336s.patch index f53f50f..e906720 100644 --- a/419-gcc-4.5.1-atmxt336s.patch +++ b/418-gcc-atmxt336s.patch @@ -1,18 +1,18 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-09-14 14:49:30.000000000 +0300 -+++ gcc/config/avr/avr-devices.c 2011-09-14 15:26:55.000000000 +0300 +--- gcc/config/avr/avr-devices.c 2011-10-28 15:04:23.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2011-10-28 15:06:36.000000000 +0530 @@ -265,6 +265,7 @@ const struct mcu_type_s avr_mcu_types[] /* Xmega, <= 8K FLASH. */ - /* Xmega, > 8K, < 64K FLASH, <= 64K RAM. */ + /* Xmega, > 8K, <= 64K FLASH, <= 64K RAM. */ { "avrxmega2", ARCH_AVRXMEGA2, NULL, 0, 0x2000, "x32a4" }, + { "atmxt336s", ARCH_AVRXMEGA2, "__AVR_ATMXT336S__", 0, 0x2000, "mxt336s"}, { "atxmega16a4", ARCH_AVRXMEGA2, "__AVR_ATxmega16A4__", 0, 0x2000, "x16a4" }, { "atxmega16a4u", ARCH_AVRXMEGA2, "__AVR_ATxmega16A4U__", 0, 0x2000, "x16a4u" }, { "atxmega16d4", ARCH_AVRXMEGA2, "__AVR_ATxmega16D4__", 0, 0x2000, "x16d4" }, diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2011-09-14 14:49:30.000000000 +0300 -+++ gcc/config/avr/t-avr 2011-09-14 15:30:42.000000000 +0300 -@@ -280,6 +280,7 @@ MULTILIB_MATCHES = \ +--- gcc/config/avr/t-avr 2011-10-28 15:04:23.000000000 +0530 ++++ gcc/config/avr/t-avr 2011-10-28 15:06:36.000000000 +0530 +@@ -279,6 +279,7 @@ MULTILIB_MATCHES = \ mmcu?avr6=mmcu?atmega256rfr2 \ mmcu?avr6=mmcu?atmega2560 \ mmcu?avr6=mmcu?atmega2561 \ diff --git a/420-gcc-4.5.1-atxmega16c4_32c4_128c3_256c3.patch b/419-gcc-atxmega16c4_32c4_128c3_256c3.patch similarity index 80% rename from 420-gcc-4.5.1-atxmega16c4_32c4_128c3_256c3.patch rename to 419-gcc-atxmega16c4_32c4_128c3_256c3.patch index ed66af6..46bc2d9 100644 --- a/420-gcc-4.5.1-atxmega16c4_32c4_128c3_256c3.patch +++ b/419-gcc-atxmega16c4_32c4_128c3_256c3.patch @@ -1,20 +1,19 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-11-02 16:39:32.000000000 +0530 -+++ gcc/config/avr/avr-devices.c 2011-11-02 16:37:08.000000000 +0530 -@@ -268,10 +268,12 @@ const struct mcu_type_s avr_mcu_types[] +--- gcc/config/avr/avr-devices.c 2011-11-08 17:00:35.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2011-11-08 17:04:10.000000000 +0530 +@@ -268,9 +268,11 @@ const struct mcu_type_s avr_mcu_types[] { "atmxt336s", ARCH_AVRXMEGA2, "__AVR_ATMXT336S__", 0, 0x2000, "mxt336s"}, { "atxmega16a4", ARCH_AVRXMEGA2, "__AVR_ATxmega16A4__", 0, 0x2000, "x16a4" }, { "atxmega16a4u", ARCH_AVRXMEGA2, "__AVR_ATxmega16A4U__", 0, 0x2000, "x16a4u" }, + { "atxmega16c4", ARCH_AVRXMEGA2, "__AVR_ATxmega16C4__", 0, 0x2000, "x16c4" }, { "atxmega16d4", ARCH_AVRXMEGA2, "__AVR_ATxmega16D4__", 0, 0x2000, "x16d4" }, - { "atxmega16x1", ARCH_AVRXMEGA2, "__AVR_ATxmega16X1__", 0, 0x2000, "x16x1" }, { "atxmega32a4", ARCH_AVRXMEGA2, "__AVR_ATxmega32A4__", 0, 0x2000, "x32a4" }, - { "atxmega32a4u", ARCH_AVRXMEGA2, "__AVR_ATxmega32A4U__", 0, 0x2000, "x32a4u" }, + { "atxmega32a4u", ARCH_AVRXMEGA2, "__AVR_ATxmega32A4U__", 0, 0x2000, "x32a4u" }, + { "atxmega32c4", ARCH_AVRXMEGA2, "__AVR_ATxmega32C4__", 0, 0x2000, "x32c4" }, { "atxmega32d4", ARCH_AVRXMEGA2, "__AVR_ATxmega32D4__", 0, 0x2000, "x32d4" }, { "atxmega32x1", ARCH_AVRXMEGA2, "__AVR_ATxmega32X1__", 0, 0x2000, "x32x1" }, /* Xmega, > 8K, <= 64K FLASH, > 64K RAM. */ -@@ -295,6 +297,7 @@ const struct mcu_type_s avr_mcu_types[] +@@ -294,6 +296,7 @@ const struct mcu_type_s avr_mcu_types[] { "atxmega128a3u",ARCH_AVRXMEGA6, "__AVR_ATxmega128A3U__", 0, 0x2000, "x128a3u"}, { "atxmega128b1", ARCH_AVRXMEGA6, "__AVR_ATxmega128B1__", 0, 0x2000, "x128b1" }, { "atxmega128b3", ARCH_AVRXMEGA6, "__AVR_ATxmega128B3__", 0, 0x2000, "x128b3" }, @@ -22,7 +21,7 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c { "atxmega128d3", ARCH_AVRXMEGA6, "__AVR_ATxmega128D3__", 0, 0x2000, "x128d3" }, { "atxmega128d4", ARCH_AVRXMEGA6, "__AVR_ATxmega128D4__", 0, 0x2000, "x128d4" }, { "atxmega192a3", ARCH_AVRXMEGA6, "__AVR_ATxmega192A3__", 0, 0x2000, "x192a3" }, -@@ -304,6 +307,7 @@ const struct mcu_type_s avr_mcu_types[] +@@ -303,6 +306,7 @@ const struct mcu_type_s avr_mcu_types[] { "atxmega256a3u",ARCH_AVRXMEGA6, "__AVR_ATxmega256A3U__", 0, 0x2000, "x256a3u"}, { "atxmega256a3b",ARCH_AVRXMEGA6, "__AVR_ATxmega256A3B__", 0, 0x2000, "x256a3b" }, { "atxmega256a3bu", ARCH_AVRXMEGA6, "__AVR_ATxmega256A3BU__", 0, 0x2000, "x256a3bu" }, @@ -31,20 +30,19 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c { "atxmega384c3", ARCH_AVRXMEGA6, "__AVR_ATxmega384C3__", 0, 0x2000, "x384c3" }, /* Xmega, >= 128K FLASH, > 64K RAM. */ diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2011-11-02 16:39:32.000000000 +0530 -+++ gcc/config/avr/t-avr 2011-11-02 16:37:08.000000000 +0530 -@@ -283,8 +283,10 @@ MULTILIB_MATCHES = \ +--- gcc/config/avr/t-avr 2011-11-08 17:00:35.000000000 +0530 ++++ gcc/config/avr/t-avr 2011-11-08 17:02:00.000000000 +0530 +@@ -282,7 +282,9 @@ MULTILIB_MATCHES = \ mmcu?avrxmega2=mmcu?atmxt336s \ mmcu?avrxmega2=mmcu?atxmega16a4 \ mmcu?avrxmega2=mmcu?atxmega16a4u \ + mmcu?avrxmega2=mmcu?atxmega16c4 \ mmcu?avrxmega2=mmcu?atxmega16d4 \ - mmcu?avrxmega2=mmcu?atxmega16x1 \ + mmcu?avrxmega2=mmcu?atxmega32c4 \ mmcu?avrxmega2=mmcu?atxmega32d4 \ mmcu?avrxmega2=mmcu?atxmega32a4 \ mmcu?avrxmega2=mmcu?atxmega32a4u \ -@@ -302,6 +304,7 @@ MULTILIB_MATCHES = \ +@@ -300,6 +302,7 @@ MULTILIB_MATCHES = \ mmcu?avrxmega6=mmcu?atxmega128a3u \ mmcu?avrxmega6=mmcu?atxmega128b1 \ mmcu?avrxmega6=mmcu?atxmega128b3 \ @@ -52,7 +50,7 @@ diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr mmcu?avrxmega6=mmcu?atxmega128d3 \ mmcu?avrxmega6=mmcu?atxmega128d4 \ mmcu?avrxmega6=mmcu?atxmega192a3 \ -@@ -311,6 +314,7 @@ MULTILIB_MATCHES = \ +@@ -309,6 +312,7 @@ MULTILIB_MATCHES = \ mmcu?avrxmega6=mmcu?atxmega256a3u \ mmcu?avrxmega6=mmcu?atxmega256a3b \ mmcu?avrxmega6=mmcu?atxmega256a3bu \ diff --git a/421-gcc-4.5.1-atxmega384d3.patch b/420-gcc-atxmega384d3.patch similarity index 73% rename from 421-gcc-4.5.1-atxmega384d3.patch rename to 420-gcc-atxmega384d3.patch index d1b8b5e..6e51f55 100644 --- a/421-gcc-4.5.1-atxmega384d3.patch +++ b/420-gcc-atxmega384d3.patch @@ -1,7 +1,7 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-11-08 15:04:32.000000000 +0530 -+++ gcc/config/avr/avr-devices.c 2011-11-08 15:06:12.000000000 +0530 -@@ -310,6 +310,7 @@ const struct mcu_type_s avr_mcu_types[] +--- gcc/config/avr/avr-devices.c 2011-11-08 17:37:12.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2011-11-08 17:38:18.000000000 +0530 +@@ -309,6 +309,7 @@ const struct mcu_type_s avr_mcu_types[] { "atxmega256c3", ARCH_AVRXMEGA6, "__AVR_ATxmega256C3__", 0, 0x2000, "x256c3" }, { "atxmega256d3", ARCH_AVRXMEGA6, "__AVR_ATxmega256D3__", 0, 0x2000, "x256d3" }, { "atxmega384c3", ARCH_AVRXMEGA6, "__AVR_ATxmega384C3__", 0, 0x2000, "x384c3" }, @@ -10,9 +10,9 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c { "avrxmega7", ARCH_AVRXMEGA7, NULL, 0, 0x2000, "x128a1" }, { "atxmega128a1", ARCH_AVRXMEGA7, "__AVR_ATxmega128A1__", 0, 0x2000, "x128a1" }, diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2011-11-08 15:04:32.000000000 +0530 -+++ gcc/config/avr/t-avr 2011-11-08 15:06:12.000000000 +0530 -@@ -317,6 +317,7 @@ MULTILIB_MATCHES = \ +--- gcc/config/avr/t-avr 2011-11-08 17:37:12.000000000 +0530 ++++ gcc/config/avr/t-avr 2011-11-08 17:38:18.000000000 +0530 +@@ -315,6 +315,7 @@ MULTILIB_MATCHES = \ mmcu?avrxmega6=mmcu?atxmega256c3 \ mmcu?avrxmega6=mmcu?atxmega256d3 \ mmcu?avrxmega6=mmcu?atxmega384c3 \ diff --git a/422-gcc-4.5.1-atmega48hvf.patch b/421-gcc-atmega48hvf.patch similarity index 62% rename from 422-gcc-4.5.1-atmega48hvf.patch rename to 421-gcc-atmega48hvf.patch index 23f8e08..9ba627e 100644 --- a/422-gcc-4.5.1-atmega48hvf.patch +++ b/421-gcc-atmega48hvf.patch @@ -1,21 +1,21 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-11-16 13:15:05.000000000 +0530 -+++ gcc/config/avr/avr-devices.c 2011-11-16 18:19:13.000000000 +0530 -@@ -221,6 +221,7 @@ const struct mcu_type_s avr_mcu_types[] - { "atmega64rfr2", ARCH_AVR5, "__AVR_ATmega64RFR2__", 0, 0x0200, "m64rfr2"}, +--- gcc/config/avr/avr-devices.c 2011-11-16 18:28:11.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2011-11-16 18:33:39.000000000 +0530 +@@ -222,6 +222,7 @@ const struct mcu_type_s avr_mcu_types[] { "atmega32hvb", ARCH_AVR5, "__AVR_ATmega32HVB__", 0, 0x0100, "m32hvb" }, { "atmega32hvbrevb", ARCH_AVR5, "__AVR_ATmega32HVBREVB__", 1, 0x0100, "m32hvbrevb" }, -+ { "atmega48hvf", ARCH_AVR5, "__AVR_ATmega48HVF__", 0, 0x0100, "m48hvf" }, + { "atmega16hva2", ARCH_AVR5, "__AVR_ATmega16HVA2__", 0, 0x0100, "m16hva2" }, ++ { "atmega48hvf", ARCH_AVR5, "__AVR_ATmega48HVF__", 0, 0x0100, "m48hvf" }, { "at90can32", ARCH_AVR5, "__AVR_AT90CAN32__", 0, 0x0100, "can32" }, { "at90can64", ARCH_AVR5, "__AVR_AT90CAN64__", 0, 0x0100, "can64" }, { "at90pwm216", ARCH_AVR5, "__AVR_AT90PWM216__", 0, 0x0100, "90pwm216" }, diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2011-11-16 13:15:05.000000000 +0530 -+++ gcc/config/avr/t-avr 2011-11-16 18:25:27.000000000 +0530 -@@ -246,6 +246,7 @@ MULTILIB_MATCHES = \ - mmcu?avr5=mmcu?atmega16hvbrevb \ +--- gcc/config/avr/t-avr 2011-11-16 18:28:11.000000000 +0530 ++++ gcc/config/avr/t-avr 2011-11-16 18:34:34.000000000 +0530 +@@ -245,6 +245,7 @@ MULTILIB_MATCHES = \ mmcu?avr5=mmcu?atmega32hvb \ mmcu?avr5=mmcu?atmega32hvbrevb \ + mmcu?avr5=mmcu?atmega64hve \ + mmcu?avr5=mmcu?atmega48hvf \ mmcu?avr5=mmcu?at90can32 \ mmcu?avr5=mmcu?at90can64 \ diff --git a/423-gcc-4.5.1-atmega26hvg.patch b/422-gcc-atmega26hvg.patch similarity index 78% rename from 423-gcc-4.5.1-atmega26hvg.patch rename to 422-gcc-atmega26hvg.patch index 72f0987..1df4acc 100644 --- a/423-gcc-4.5.1-atmega26hvg.patch +++ b/422-gcc-atmega26hvg.patch @@ -1,6 +1,6 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-12-08 14:27:35.000000000 +0530 -+++ gcc/config/avr/avr-devices.c 2011-12-08 14:44:38.000000000 +0530 +--- gcc/config/avr/avr-devices.c 2011-12-08 14:24:48.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2011-12-08 14:38:53.000000000 +0530 @@ -166,6 +166,7 @@ const struct mcu_type_s avr_mcu_types[] { "atmega16hvbrevb", ARCH_AVR5, "__AVR_ATmega16HVBREVB__", 1, 0x0100, "m16hvbrevb" }, { "atmega16m1", ARCH_AVR5, "__AVR_ATmega16M1__", 0, 0x0100, "m16m1" }, @@ -10,9 +10,9 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c { "atmega32a", ARCH_AVR5, "__AVR_ATmega32A__", 0, 0x0060, "m32a" }, { "atmega323", ARCH_AVR5, "__AVR_ATmega323__", 0, 0x0060, "m323" }, diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2011-12-08 14:27:35.000000000 +0530 -+++ gcc/config/avr/t-avr 2011-12-08 14:44:38.000000000 +0530 -@@ -194,6 +194,7 @@ MULTILIB_MATCHES = \ +--- gcc/config/avr/t-avr 2011-12-08 14:24:48.000000000 +0530 ++++ gcc/config/avr/t-avr 2011-12-08 14:41:10.000000000 +0530 +@@ -192,6 +192,7 @@ MULTILIB_MATCHES = \ mmcu?avr5=mmcu?atmega169a \ mmcu?avr5=mmcu?atmega169p \ mmcu?avr5=mmcu?atmega169pa \ diff --git a/424-gcc-4.5.1-atmxt224_224e.patch b/423-gcc-atmxt224_224e.patch similarity index 75% rename from 424-gcc-4.5.1-atmxt224_224e.patch rename to 423-gcc-atmxt224_224e.patch index dfcf4e9..5d1f041 100644 --- a/424-gcc-4.5.1-atmxt224_224e.patch +++ b/423-gcc-atmxt224_224e.patch @@ -1,9 +1,9 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2012-01-18 11:00:21.000000000 +0530 -+++ gcc/config/avr/avr-devices.c 2012-01-18 11:35:04.000000000 +0530 +--- gcc/config/avr/avr-devices.c 2012-02-10 20:08:47.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2012-02-10 20:16:45.000000000 +0530 @@ -267,6 +267,8 @@ const struct mcu_type_s avr_mcu_types[] /* Xmega, <= 8K FLASH. */ - /* Xmega, > 8K, < 64K FLASH, <= 64K RAM. */ + /* Xmega, > 8K, <= 64K FLASH, <= 64K RAM. */ { "avrxmega2", ARCH_AVRXMEGA2, NULL, 0, 0x2000, "x32a4" }, + { "atmxt224", ARCH_AVRXMEGA2, "__AVR_ATMXT224__", 0, 0x2000, "mxt224"}, + { "atmxt224e", ARCH_AVRXMEGA2, "__AVR_ATMXT224E__", 0, 0x2000, "mxt224e"}, @@ -11,9 +11,9 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c { "atxmega16a4", ARCH_AVRXMEGA2, "__AVR_ATxmega16A4__", 0, 0x2000, "x16a4" }, { "atxmega16a4u", ARCH_AVRXMEGA2, "__AVR_ATxmega16A4U__", 0, 0x2000, "x16a4u" }, diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2012-01-18 11:00:21.000000000 +0530 -+++ gcc/config/avr/t-avr 2012-01-18 11:36:27.000000000 +0530 -@@ -282,6 +282,8 @@ MULTILIB_MATCHES = \ +--- gcc/config/avr/t-avr 2012-02-10 20:08:47.000000000 +0530 ++++ gcc/config/avr/t-avr 2012-02-10 20:16:45.000000000 +0530 +@@ -281,6 +281,8 @@ MULTILIB_MATCHES = \ mmcu?avr6=mmcu?atmega256rfr2 \ mmcu?avr6=mmcu?atmega2560 \ mmcu?avr6=mmcu?atmega2561 \ diff --git a/424-gcc-4.5.1-atxmega192c3.patch b/424-gcc-atxmega192c3.patch similarity index 77% rename from 424-gcc-4.5.1-atxmega192c3.patch rename to 424-gcc-atxmega192c3.patch index 4fe51cd..5fe2f79 100644 --- a/424-gcc-4.5.1-atxmega192c3.patch +++ b/424-gcc-atxmega192c3.patch @@ -1,7 +1,7 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2012-01-18 19:44:57.000000000 +0530 -+++ gcc/config/avr/avr-devices.c 2012-01-18 18:48:36.000000000 +0530 -@@ -304,6 +304,7 @@ const struct mcu_type_s avr_mcu_types[] +--- gcc/config/avr/avr-devices.c 2012-02-10 20:20:51.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2012-02-10 20:21:25.000000000 +0530 +@@ -305,6 +305,7 @@ const struct mcu_type_s avr_mcu_types[] { "atxmega128d4", ARCH_AVRXMEGA6, "__AVR_ATxmega128D4__", 0, 0x2000, "x128d4" }, { "atxmega192a3", ARCH_AVRXMEGA6, "__AVR_ATxmega192A3__", 0, 0x2000, "x192a3" }, { "atxmega192a3u",ARCH_AVRXMEGA6, "__AVR_ATxmega192A3U__", 0, 0x2000, "x192a3u"}, @@ -10,8 +10,8 @@ diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c { "atxmega256a3", ARCH_AVRXMEGA6, "__AVR_ATxmega256A3__", 0, 0x2000, "x256a3" }, { "atxmega256a3u",ARCH_AVRXMEGA6, "__AVR_ATxmega256A3U__", 0, 0x2000, "x256a3u"}, diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr ---- gcc/config/avr/t-avr 2012-01-18 19:44:57.000000000 +0530 -+++ gcc/config/avr/t-avr 2012-01-18 18:50:16.000000000 +0530 +--- gcc/config/avr/t-avr 2012-02-10 20:20:51.000000000 +0530 ++++ gcc/config/avr/t-avr 2012-02-10 20:21:25.000000000 +0530 @@ -311,6 +311,7 @@ MULTILIB_MATCHES = \ mmcu?avrxmega6=mmcu?atxmega128d4 \ mmcu?avrxmega6=mmcu?atxmega192a3 \ diff --git a/425-gcc-atmxt112sl.patch b/425-gcc-atmxt112sl.patch new file mode 100644 index 0000000..7881478 --- /dev/null +++ b/425-gcc-atmxt112sl.patch @@ -0,0 +1,22 @@ +diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c +--- gcc/config/avr/avr-devices.c 2012-02-10 20:23:45.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2012-02-10 20:24:34.000000000 +0530 +@@ -267,6 +267,7 @@ const struct mcu_type_s avr_mcu_types[] + /* Xmega, <= 8K FLASH. */ + /* Xmega, > 8K, <= 64K FLASH, <= 64K RAM. */ + { "avrxmega2", ARCH_AVRXMEGA2, NULL, 0, 0x2000, "x32a4" }, ++ { "atmxt112sl", ARCH_AVRXMEGA2, "__AVR_ATMXT112SL__", 0, 0x2000, "mxt112sl"}, + { "atmxt224", ARCH_AVRXMEGA2, "__AVR_ATMXT224__", 0, 0x2000, "mxt224"}, + { "atmxt224e", ARCH_AVRXMEGA2, "__AVR_ATMXT224E__", 0, 0x2000, "mxt224e"}, + { "atmxt336s", ARCH_AVRXMEGA2, "__AVR_ATMXT336S__", 0, 0x2000, "mxt336s"}, +diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr +--- gcc/config/avr/t-avr 2012-02-10 20:23:45.000000000 +0530 ++++ gcc/config/avr/t-avr 2012-02-10 20:24:34.000000000 +0530 +@@ -281,6 +281,7 @@ MULTILIB_MATCHES = \ + mmcu?avr6=mmcu?atmega256rfr2 \ + mmcu?avr6=mmcu?atmega2560 \ + mmcu?avr6=mmcu?atmega2561 \ ++ mmcu?avrxmega2=mmcu?atmxt112sl \ + mmcu?avrxmega2=mmcu?atmxt224 \ + mmcu?avrxmega2=mmcu?atmxt224e \ + mmcu?avrxmega2=mmcu?atmxt336s \ diff --git a/426-gcc-atxmega64c3.patch b/426-gcc-atxmega64c3.patch new file mode 100644 index 0000000..6810501 --- /dev/null +++ b/426-gcc-atxmega64c3.patch @@ -0,0 +1,22 @@ +diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c +--- gcc/config/avr/avr-devices.c 2012-02-10 20:28:58.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2012-02-10 20:29:40.000000000 +0530 +@@ -289,6 +289,7 @@ const struct mcu_type_s avr_mcu_types[] + { "atxmega64a4u", ARCH_AVRXMEGA4, "__AVR_ATxmega64A4U__", 0, 0x2000, "x64a4u"}, + { "atxmega64b1", ARCH_AVRXMEGA4, "__AVR_ATxmega64B1__", 0, 0x2000, "x64b1" }, + { "atxmega64b3", ARCH_AVRXMEGA4, "__AVR_ATxmega64B3__", 0, 0x2000, "x64b3"}, ++ { "atxmega64c3", ARCH_AVRXMEGA4, "__AVR_ATxmega64C3__", 0, 0x2000, "x64c3"}, + { "atxmega64d3", ARCH_AVRXMEGA4, "__AVR_ATxmega64D3__", 0, 0x2000, "x64d3" }, + { "atxmega64d4", ARCH_AVRXMEGA4, "__AVR_ATxmega64D4__", 0, 0x2000, "x64d4" }, + /* Xmega, > 64K, <= 128K FLASH, > 64K RAM. */ +diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr +--- gcc/config/avr/t-avr 2012-02-10 20:28:58.000000000 +0530 ++++ gcc/config/avr/t-avr 2012-02-10 20:29:40.000000000 +0530 +@@ -299,6 +299,7 @@ MULTILIB_MATCHES = \ + mmcu?avrxmega4=mmcu?atxmega64a4u \ + mmcu?avrxmega4=mmcu?atxmega64b1 \ + mmcu?avrxmega4=mmcu?atxmega64b3 \ ++ mmcu?avrxmega4=mmcu?atxmega64c3 \ + mmcu?avrxmega4=mmcu?atxmega64d3 \ + mmcu?avrxmega4=mmcu?atxmega64d4 \ + mmcu?avrxmega5=mmcu?atxmega64a1 \ diff --git a/427-gcc-ata6285_6286.patch b/427-gcc-ata6285_6286.patch new file mode 100644 index 0000000..857d206 --- /dev/null +++ b/427-gcc-ata6285_6286.patch @@ -0,0 +1,24 @@ +diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c +--- gcc/config/avr/avr-devices.c 2012-02-15 14:00:53.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2012-02-17 11:04:27.000000000 +0530 +@@ -117,6 +117,8 @@ const struct mcu_type_s avr_mcu_types[] + { "attiny1634", ARCH_AVR35, "__AVR_ATtiny1634__", 0, 0x0100, "tn1634" }, + /* Enhanced, <= 8K + 2-byte PC + { MOVW/LPMX, MUL }. */ + { "avr4", ARCH_AVR4, NULL, 0, 0x0060, "m8" }, ++ { "ata6285", ARCH_AVR4, "__AVR_ATA6285__", 0, 0x0100, "a6285" }, ++ { "ata6286", ARCH_AVR4, "__AVR_ATA6286__", 0, 0x0100, "a6286" }, + { "atmega8", ARCH_AVR4, "__AVR_ATmega8__", 0, 0x0060, "m8" }, + { "atmega8a", ARCH_AVR4, "__AVR_ATmega8A__", 0, 0x0060, "m8a" }, + { "atmega48", ARCH_AVR4, "__AVR_ATmega48__", 0, 0x0100, "m48" }, +diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr +--- gcc/config/avr/t-avr 2012-02-15 14:00:53.000000000 +0530 ++++ gcc/config/avr/t-avr 2012-02-17 11:30:56.000000000 +0530 +@@ -152,6 +152,8 @@ MULTILIB_MATCHES = \ + mmcu?avr35=mmcu?attiny167 \ + mmcu?avr35=mmcu?attiny1634 \ + mmcu?avr35=mmcu?attiny327 \ ++ mmcu?avr4=mmcu?ata6285 \ ++ mmcu?avr4=mmcu?ata6286 \ + mmcu?avr4=mmcu?atmega48 \ + mmcu?avr4=mmcu?atmega48a \ + mmcu?avr4=mmcu?atmega48pa \ diff --git a/428-gcc-attiny828.patch b/428-gcc-attiny828.patch new file mode 100644 index 0000000..907fa03 --- /dev/null +++ b/428-gcc-attiny828.patch @@ -0,0 +1,22 @@ +diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c +--- gcc/config/avr/avr-devices.c 2012-02-23 15:24:34.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2012-02-23 15:28:51.000000000 +0530 +@@ -97,6 +97,7 @@ const struct mcu_type_s avr_mcu_types[] + { "attiny48", ARCH_AVR25, "__AVR_ATtiny48__", 0, 0x0100, "tn48" }, + { "attiny88", ARCH_AVR25, "__AVR_ATtiny88__", 0, 0x0100, "tn88" }, + { "attiny80", ARCH_AVR25, "__AVR_ATtiny80__", 0, 0x0100, "tn80" }, ++ { "attiny828", ARCH_AVR25, "__AVR_ATtiny828__", 0, 0x0100, "tn828" }, + { "at86rf401", ARCH_AVR25, "__AVR_AT86RF401__", 1, 0x0060, "86401" }, + /* Classic, > 8K, <= 64K +2-byte PC + { JMP/CALL }. */ + { "avr3", ARCH_AVR3, NULL, 0, 0x0060, "43355" }, +diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr +--- gcc/config/avr/t-avr 2012-02-23 15:24:34.000000000 +0530 ++++ gcc/config/avr/t-avr 2012-02-23 15:29:11.000000000 +0530 +@@ -139,6 +139,7 @@ MULTILIB_MATCHES = \ + mmcu?avr25=mmcu?attiny48 \ + mmcu?avr25=mmcu?attiny88 \ + mmcu?avr25=mmcu?attiny80 \ ++ mmcu?avr25=mmcu?attiny828 \ + mmcu?avr25=mmcu?at86rf401 \ + mmcu?avr3=mmcu?at43usb355 \ + mmcu?avr3=mmcu?at76c711 \ diff --git a/429-gcc-ata5790_5790n_5795.patch b/429-gcc-ata5790_5790n_5795.patch new file mode 100644 index 0000000..ac4e275 --- /dev/null +++ b/429-gcc-ata5790_5790n_5795.patch @@ -0,0 +1,26 @@ +diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c +--- gcc/config/avr/avr-devices.c 2012-02-27 09:26:40.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2012-02-27 09:27:37.000000000 +0530 +@@ -144,6 +144,9 @@ const struct mcu_type_s avr_mcu_types[] + { "avr5", ARCH_AVR5, NULL, 0, 0x0060, "m16" }, + { "at90pwm161", ARCH_AVR5, "__AVR_AT90PWM161__", 1, 0x0100, "90pwm161" }, + ++ { "ata5790", ARCH_AVR5, "__AVR_ATA5790__", 0, 0x0100, "a5790"}, ++ { "ata5790n", ARCH_AVR5, "__AVR_ATA5790N__", 0, 0x0100, "a5790n"}, ++ { "ata5795", ARCH_AVR5, "__AVR_ATA5795__", 0, 0x0100, "a5795"}, + { "atmega16", ARCH_AVR5, "__AVR_ATmega16__", 0, 0x0060, "m16" }, + { "atmega16a", ARCH_AVR5, "__AVR_ATmega16A__", 0, 0x0060, "m16a" }, + { "atmega161", ARCH_AVR5, "__AVR_ATmega161__", 0, 0x0060, "m161" }, +diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr +--- gcc/config/avr/t-avr 2012-02-27 09:26:40.000000000 +0530 ++++ gcc/config/avr/t-avr 2012-02-27 09:27:37.000000000 +0530 +@@ -175,6 +175,9 @@ MULTILIB_MATCHES = \ + mmcu?avr4=mmcu?at90pwm3b \ + mmcu?avr4=mmcu?at90pwm81 \ + mmcu?avr5=mmcu?at90pwm161 \ ++ mmcu?avr5=mmcu?ata5790 \ ++ mmcu?avr5=mmcu?ata5790n \ ++ mmcu?avr5=mmcu?ata5795 \ + mmcu?avr5=mmcu?atmega16 \ + mmcu?avr5=mmcu?atmega16a \ + mmcu?avr5=mmcu?atmega161 \ diff --git a/430-gcc-ata5272_ata5505.patch b/430-gcc-ata5272_ata5505.patch new file mode 100644 index 0000000..b7deac1 --- /dev/null +++ b/430-gcc-ata5272_ata5505.patch @@ -0,0 +1,38 @@ +diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c +--- gcc/config/avr/avr-devices.c 2012-03-27 20:49:18.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2012-03-30 13:49:00.000000000 +0530 +@@ -72,6 +72,7 @@ const struct mcu_type_s avr_mcu_types[] + /* Classic, <= 8K + 2-byte PC + { MOVW/LPMX }. */ + { "avr25", ARCH_AVR25, NULL, 0, 0x0060, "tn85" }, + { "ata6289", ARCH_AVR25, "__AVR_ATA6289__", 0, 0x0100, "a6289" }, ++ { "ata5272", ARCH_AVR25, "__AVR_ATA5272__", 0, 0x0100, "a5272" }, + { "attiny13", ARCH_AVR25, "__AVR_ATtiny13__", 1, 0x0060, "tn13" }, + { "attiny13a", ARCH_AVR25, "__AVR_ATtiny13A__", 1, 0x0060, "tn13a" }, + { "attiny2313", ARCH_AVR25, "__AVR_ATtiny2313__", 1, 0x0060, "tn2313" }, +@@ -109,6 +110,7 @@ const struct mcu_type_s avr_mcu_types[] + { "at43usb320", ARCH_AVR31, "__AVR_AT43USB320__", 0, 0x0060, "43320" }, + /* Classic, >=16K, <=64K + 2-byte PC + { MOVW/LPMX + JMP/CALL }. */ + { "avr35", ARCH_AVR35, NULL, 0, 0x0100, "usb162" }, ++ { "ata5505", ARCH_AVR35, "__AVR_ATA5505__", 0, 0x0100, "a5505" }, + { "at90usb82", ARCH_AVR35, "__AVR_AT90USB82__", 0, 0x0100, "usb82" }, + { "at90usb162", ARCH_AVR35, "__AVR_AT90USB162__", 0, 0x0100, "usb162" }, + { "atmega8u2", ARCH_AVR35, "__AVR_ATmega8U2__", 0, 0x0100, "m8u2" }, +diff -Naurp gcc/config/avr/t-avr gcc/config/avr/t-avr +--- gcc/config/avr/t-avr 2012-03-27 20:49:18.000000000 +0530 ++++ gcc/config/avr/t-avr 2012-03-30 13:56:27.000000000 +0530 +@@ -112,6 +112,7 @@ MULTILIB_DIRNAMES = avr2 avr25 avr3 avr3 + + # The many avr2 matches are not listed here - this is the default. + MULTILIB_MATCHES = \ ++ mmcu?avr25=mmcu?ata5272 \ + mmcu?avr25=mmcu?ata6289 \ + mmcu?avr25=mmcu?attiny13 \ + mmcu?avr25=mmcu?attiny13a \ +@@ -147,6 +148,7 @@ MULTILIB_MATCHES = \ + mmcu?avr31=mmcu?at43usb320 \ + mmcu?avr35=mmcu?at90usb82 \ + mmcu?avr35=mmcu?at90usb162 \ ++ mmcu?avr35=mmcu?ata5505 \ + mmcu?avr35=mmcu?atmega8u2 \ + mmcu?avr35=mmcu?atmega16u2 \ + mmcu?avr35=mmcu?atmega32u2 \ diff --git a/500-gcc-4.5.1-bug13473.patch b/500-gcc-bug13473.patch similarity index 65% rename from 500-gcc-4.5.1-bug13473.patch rename to 500-gcc-bug13473.patch index 6a81bda..daec735 100644 --- a/500-gcc-4.5.1-bug13473.patch +++ b/500-gcc-bug13473.patch @@ -1,7 +1,7 @@ diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c ---- gcc/config/avr/avr.c 2011-06-09 14:30:33.000000000 -0500 -+++ gcc/config/avr/avr.c 2011-06-09 15:33:10.000000000 -0500 -@@ -3350,8 +3350,8 @@ out_movhi_mr_r (rtx insn, rtx op[], int +--- gcc/config/avr/avr.c 2011-10-28 15:06:06.000000000 +0530 ++++ gcc/config/avr/avr.c 2011-10-28 15:10:36.000000000 +0530 +@@ -3474,8 +3474,8 @@ out_movhi_mr_r (rtx insn, rtx op[], int AS2 (out,%m0-%2,%A1)); } if (AVR_XMEGA) diff --git a/501-gcc-4.5.1-bug13579.patch b/501-gcc-4.5.1-bug13579.patch deleted file mode 100644 index 21fb4ad..0000000 --- a/501-gcc-4.5.1-bug13579.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- gcc/ipa-pure-const.c 2010-04-02 14:54:46.000000000 -0500 -+++ gcc/ipa-pure-const.c 2011-02-24 16:10:26.000000000 -0600 -@@ -416,6 +416,14 @@ check_stmt (gimple_stmt_iterator *gsip, - print_gimple_stmt (dump_file, stmt, 0, 0); - } - -+ if (gimple_has_volatile_ops (stmt)) -+ { -+ local->pure_const_state = IPA_NEITHER; -+ if (dump_file) -+ fprintf (dump_file, " Volatile stmt is not const/pure\n"); -+ } -+ -+ - /* Look for loads and stores. */ - walk_stmt_load_store_ops (stmt, local, check_load, check_store); - diff --git a/503-gcc-4.5.1-avrtiny10-bug-12510.patch b/501-gcc-avrtiny10-bug-12510.patch similarity index 87% rename from 503-gcc-4.5.1-avrtiny10-bug-12510.patch rename to 501-gcc-avrtiny10-bug-12510.patch index da870cf..eecd478 100644 --- a/503-gcc-4.5.1-avrtiny10-bug-12510.patch +++ b/501-gcc-avrtiny10-bug-12510.patch @@ -1,6 +1,6 @@ diff -Naurp gcc/config/avr/avr.h gcc/config/avr/avr.h ---- gcc/config/avr/avr.h 2011-06-09 15:53:13.000000000 -0500 -+++ gcc/config/avr/avr.h 2011-06-09 15:55:45.000000000 -0500 +--- gcc/config/avr/avr.h 2011-06-22 10:28:47.000000000 +0530 ++++ gcc/config/avr/avr.h 2011-06-22 10:35:08.000000000 +0530 @@ -136,7 +136,7 @@ extern GTY(()) section *progmem_section; #define AVR_2_BYTE_PC (!AVR_HAVE_EIJMP_EICALL) #define AVR_3_BYTE_PC (AVR_HAVE_EIJMP_EICALL) @@ -11,8 +11,8 @@ diff -Naurp gcc/config/avr/avr.h gcc/config/avr/avr.h #define AVR_RAMPX_ADDR (AVR_XMEGA ? 0x39 : 0) #define AVR_RAMPY_ADDR (AVR_XMEGA ? 0x3A : 0) diff -Naurp gcc/config/avr/predicates.md gcc/config/avr/predicates.md ---- gcc/config/avr/predicates.md 2011-06-09 14:30:33.000000000 -0500 -+++ gcc/config/avr/predicates.md 2011-06-09 15:55:45.000000000 -0500 +--- gcc/config/avr/predicates.md 2011-06-22 10:25:29.000000000 +0530 ++++ gcc/config/avr/predicates.md 2011-06-22 10:35:08.000000000 +0530 @@ -50,21 +50,24 @@ ;; Return true if OP is a valid address for lower half of I/O space. (define_predicate "low_io_address_operand" diff --git a/502-gcc-4.5.1-bug-18145-v4.patch b/502-gcc-4.5.1-bug-18145-v4.patch deleted file mode 100644 index 1115f35..0000000 --- a/502-gcc-4.5.1-bug-18145-v4.patch +++ /dev/null @@ -1,178 +0,0 @@ -diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c ---- gcc/config/avr/avr.c 2011-06-09 15:41:06.000000000 -0500 -+++ gcc/config/avr/avr.c 2011-06-09 15:46:03.000000000 -0500 -@@ -81,6 +81,12 @@ static rtx avr_function_value (const_tre - static void avr_insert_attributes (tree, tree *); - static void avr_asm_init_sections (void); - static unsigned int avr_section_type_flags (tree, const char *, int); -+static void avr_asm_named_section (const char *name, unsigned int flags, tree decl); -+/* Track if code will use .bss and/or .data */ -+static int avr_need_clear_bss_p = 0; -+static int avr_need_copy_data_p = 0; -+static void avr_output_data_section_asm_op (const void*); -+static void avr_output_bss_section_asm_op (const void*); - - static void avr_reorg (void); - static void avr_asm_out_ctor (rtx, int); -@@ -6102,6 +6108,54 @@ avr_output_progmem_section_asm_op (const - fprintf (asm_out_file, "\t.p2align 1\n"); - } - -+/* ASM_OUTPUT_COMMON */ -+/* Track need of __do_clear_bss */ -+ -+void -+avr_asm_output_common (FILE *stream, const char *name, -+ unsigned HOST_WIDE_INT size, -+ unsigned HOST_WIDE_INT rounded ATTRIBUTE_UNUSED) -+{ -+ avr_need_clear_bss_p = 1; -+ fputs ("\t.comm ", stream); -+ assemble_name (stream, name); -+ fprintf (stream, ",%lu,1\n", (unsigned long) size); -+} -+ -+/* ASM_OUTPUT_LOCAL */ -+/* Track need of __do_clear_bss */ -+ -+void -+avr_asm_output_local (FILE *stream, const char *name, -+ unsigned HOST_WIDE_INT size, -+ unsigned HOST_WIDE_INT rounded ATTRIBUTE_UNUSED) -+{ -+ avr_need_clear_bss_p = 1; -+ fputs ("\t.lcomm ", stream); -+ assemble_name (stream, name); -+ fprintf (stream, ",%d\n", (int) size); -+} -+ -+/* Unnamed section callback to track need of __do_copy_data */ -+ -+static void -+avr_output_data_section_asm_op (const void *data) -+{ -+ avr_need_copy_data_p = 1; -+ /* Dispatch to default */ -+ output_section_asm_op (data); -+} -+ -+/* Unnamed section callback to track need of __do_clear_bss */ -+ -+static void -+avr_output_bss_section_asm_op (const void *data) -+{ -+ avr_need_clear_bss_p = 1; -+ /* Dispatch to default */ -+ output_section_asm_op (data); -+} -+ - /* Implement TARGET_ASM_INIT_SECTIONS. */ - - static void -@@ -6111,6 +6165,27 @@ avr_asm_init_sections (void) - avr_output_progmem_section_asm_op, - NULL); - readonly_data_section = data_section; -+ -+ data_section->unnamed.callback = avr_output_data_section_asm_op; -+ bss_section->unnamed.callback = avr_output_bss_section_asm_op; -+} -+ -+/* TARGET_ASM_NAMED_SECTION */ -+/* Track need of __do_clear_bss, __do_copy_data for named sections */ -+ -+static void -+avr_asm_named_section (const char *name, unsigned int flags, tree decl) -+{ -+ if (!avr_need_copy_data_p) -+ avr_need_copy_data_p = -+ (0 == strncmp (name, ".data", 5) -+ || 0 == strncmp (name, ".rodata", 7) -+ || 0 == strncmp (name, ".gnu.linkonce.", 14)); -+ -+ if (!avr_need_clear_bss_p) -+ avr_need_clear_bss_p = (0 == strncmp (name, ".bss", 4)); -+ -+ default_elf_asm_named_section (name, flags, decl); - } - - static unsigned int -@@ -6152,12 +6227,6 @@ avr_file_start (void) - AVR_TINY ? fputs ("__tmp_reg__ = 16\n" - "__zero_reg__ = 17\n", asm_out_file) : fputs ("__tmp_reg__ = 0\n" - "__zero_reg__ = 1\n", asm_out_file); -- -- /* FIXME: output these only if there is anything in the .data / .bss -- sections - some code size could be saved by not linking in the -- initialization code from libgcc if one or both sections are empty. */ -- fputs ("\t.global __do_copy_data\n", asm_out_file); -- fputs ("\t.global __do_clear_bss\n", asm_out_file); - } - - /* Outputs to the stdio stream FILE some -@@ -6166,6 +6235,16 @@ avr_file_start (void) - static void - avr_file_end (void) - { -+ /* Output these only if there is anything in the -+ .data* / .rodata* / .gnu.linkonce.* resp. .bss* -+ input section(s) - some code size can be saved by not -+ linking in the initialization code from libgcc if resp. -+ sections are empty. */ -+ if (avr_need_copy_data_p) -+ fputs (".global __do_copy_data\n", asm_out_file); -+ -+ if (avr_need_clear_bss_p) -+ fputs (".global __do_clear_bss\n", asm_out_file); - } - - /* Choose the order in which to allocate hard registers for -diff -Naurp gcc/config/avr/avr.h gcc/config/avr/avr.h ---- gcc/config/avr/avr.h 2011-06-09 14:30:33.000000000 -0500 -+++ gcc/config/avr/avr.h 2011-06-09 15:46:03.000000000 -0500 -@@ -562,7 +562,7 @@ do { \ - #define ASM_APP_OFF "/* #NOAPP */\n" - - /* Switch into a generic section. */ --#define TARGET_ASM_NAMED_SECTION default_elf_asm_named_section -+#define TARGET_ASM_NAMED_SECTION avr_asm_named_section - #define TARGET_ASM_INIT_SECTIONS avr_asm_init_sections - - #define ASM_OUTPUT_ASCII(FILE, P, SIZE) gas_output_ascii (FILE,P,SIZE) -@@ -570,21 +570,13 @@ do { \ - #define IS_ASM_LOGICAL_LINE_SEPARATOR(C, STR) ((C) == '\n' || ((C) == '$')) - - #define ASM_OUTPUT_COMMON(STREAM, NAME, SIZE, ROUNDED) \ --do { \ -- fputs ("\t.comm ", (STREAM)); \ -- assemble_name ((STREAM), (NAME)); \ -- fprintf ((STREAM), ",%lu,1\n", (unsigned long)(SIZE)); \ --} while (0) -+ avr_asm_output_common (STREAM, NAME, SIZE, ROUNDED) - - #define ASM_OUTPUT_BSS(FILE, DECL, NAME, SIZE, ROUNDED) \ - asm_output_bss ((FILE), (DECL), (NAME), (SIZE), (ROUNDED)) - - #define ASM_OUTPUT_LOCAL(STREAM, NAME, SIZE, ROUNDED) \ --do { \ -- fputs ("\t.lcomm ", (STREAM)); \ -- assemble_name ((STREAM), (NAME)); \ -- fprintf ((STREAM), ",%d\n", (int)(SIZE)); \ --} while (0) -+ avr_asm_output_local (STREAM, NAME, SIZE, ROUNDED) - - #undef TYPE_ASM_OP - #undef SIZE_ASM_OP -diff -Naurp gcc/config/avr/avr-protos.h gcc/config/avr/avr-protos.h ---- gcc/config/avr/avr-protos.h 2011-06-09 14:30:33.000000000 -0500 -+++ gcc/config/avr/avr-protos.h 2011-06-09 15:46:03.000000000 -0500 -@@ -35,6 +35,9 @@ extern int avr_simple_epilogue (void); - extern void gas_output_limited_string (FILE *file, const char *str); - extern void gas_output_ascii (FILE *file, const char *str, size_t length); - extern int avr_hard_regno_rename_ok (unsigned int, unsigned int); -+extern void avr_asm_output_common (FILE *stream, const char *name, unsigned HOST_WIDE_INT size, unsigned HOST_WIDE_INT rounded); -+extern void avr_asm_output_local (FILE *stream, const char *name, unsigned HOST_WIDE_INT size, unsigned HOST_WIDE_INT rounded); -+ - extern rtx avr_return_addr_rtx (int count, const_rtx tem); - - #ifdef TREE_CODE diff --git a/504-gcc-4.5.1-bug12915.patch b/502-gcc-bug12915.patch similarity index 67% rename from 504-gcc-4.5.1-bug12915.patch rename to 502-gcc-bug12915.patch index 7427748..afb8b0d 100644 --- a/504-gcc-4.5.1-bug12915.patch +++ b/502-gcc-bug12915.patch @@ -1,7 +1,7 @@ -diff -rupw gcc/config/avr/avr.md gcc/config/avr/avr.md ---- gcc/config/avr/avr.md 2011-02-23 15:54:14.000000000 -0600 -+++ gcc/config/avr/avr.md 2011-02-23 15:55:22.000000000 -0600 -@@ -1082,8 +1082,8 @@ +diff -raupN gcc/config/avr/avr.md gcc/config/avr/avr.md +--- gcc/config/avr/avr.md 2011-07-08 10:58:56.000000000 +0530 ++++ gcc/config/avr/avr.md 2011-07-08 12:04:01.000000000 +0530 +@@ -1079,8 +1079,8 @@ (set_attr "cc" "clobber")]) (define_expand "mulhisi3" diff --git a/506-gcc-4.5.1-bug13789.patch b/503-gcc-bug13789.patch similarity index 78% rename from 506-gcc-4.5.1-bug13789.patch rename to 503-gcc-bug13789.patch index 5d6d7e6..bfccc05 100644 --- a/506-gcc-4.5.1-bug13789.patch +++ b/503-gcc-bug13789.patch @@ -1,6 +1,6 @@ -diff -rup gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-04-27 12:24:24.000000000 -0500 -+++ gcc/config/avr/avr-devices.c 2011-04-27 17:19:33.000000000 -0500 +diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c +--- gcc/config/avr/avr-devices.c 2011-06-22 10:26:14.000000000 +0530 ++++ gcc/config/avr/avr-devices.c 2011-06-22 10:48:05.000000000 +0530 @@ -37,14 +37,14 @@ const struct base_arch_s avr_arch_types[ { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0x0060, "__AVR_ARCH__=5", "avr5" }, { 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0x0060, "__AVR_ARCH__=51", "avr51" }, @@ -18,9 +18,9 @@ diff -rup gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c }; /* List of all known AVR MCU types - if updated, it has to be kept -diff -rup gcc/config/avr/avr.h gcc/config/avr/avr.h ---- gcc/config/avr/avr.h 2011-04-27 12:24:06.000000000 -0500 -+++ gcc/config/avr/avr.h 2011-04-27 17:49:01.000000000 -0500 +diff -Naurp gcc/config/avr/avr.h gcc/config/avr/avr.h +--- gcc/config/avr/avr.h 2011-06-22 10:36:29.000000000 +0530 ++++ gcc/config/avr/avr.h 2011-06-22 10:48:05.000000000 +0530 @@ -79,14 +79,14 @@ enum avr_arch ARCH_AVR5, ARCH_AVR51, diff --git a/504-gcc-conditional-register.patch b/504-gcc-conditional-register.patch new file mode 100644 index 0000000..1dd01c1 --- /dev/null +++ b/504-gcc-conditional-register.patch @@ -0,0 +1,85 @@ +diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c +--- gcc/config/avr/avr.c 2011-10-28 16:28:16.000000000 +0530 ++++ gcc/config/avr/avr.c 2011-10-28 16:40:20.000000000 +0530 +@@ -96,6 +96,7 @@ static struct machine_function * avr_ini + static void avr_init_builtins (void); + static rtx avr_expand_builtin (tree, rtx, rtx, enum machine_mode, int); + static rtx avr_builtin_setjmp_frame_value (void); ++static void avr_conditional_register_usage (void); + static bool avr_hard_regno_scratch_ok (unsigned int); + static unsigned int avr_case_values_threshold (void); + static bool avr_frame_pointer_required_p (void); +@@ -212,6 +213,8 @@ static const struct default_options avr_ + #undef TARGET_BUILTIN_SETJMP_FRAME_VALUE + #define TARGET_BUILTIN_SETJMP_FRAME_VALUE avr_builtin_setjmp_frame_value + ++#undef TARGET_CONDITIONAL_REGISTER_USAGE ++#define TARGET_CONDITIONAL_REGISTER_USAGE avr_conditional_register_usage + #undef TARGET_HARD_REGNO_SCRATCH_OK + #define TARGET_HARD_REGNO_SCRATCH_OK avr_hard_regno_scratch_ok + #undef TARGET_CASE_VALUES_THRESHOLD +@@ -7388,6 +7391,19 @@ avr_output_addr_vec_elt (FILE *stream, i + fprintf (stream, "\trjmp .L%d\n", value); + } + ++static void ++avr_conditional_register_usage(void) { ++ if (AVR_TINY) { ++ int i; ++ for (i = 0; i <= 17; i++) { ++ fixed_regs[i] = 1; ++ call_used_regs[i] = 1; ++ } ++ CLEAR_HARD_REG_SET(reg_class_contents[(int)ADDW_REGS]); ++ CLEAR_HARD_REG_SET(reg_class_contents[(int)NO_LD_REGS]); ++ } ++} ++ + /* Returns true if SCRATCH are safe to be allocated as a scratch + registers (for a define_peephole2) in the current function. */ + +diff -Naurp gcc/config/avr/avr.h gcc/config/avr/avr.h +--- gcc/config/avr/avr.h 2011-10-28 16:29:55.000000000 +0530 ++++ gcc/config/avr/avr.h 2011-10-28 16:40:20.000000000 +0530 +@@ -313,41 +313,6 @@ enum reg_class { + {0xffffffff,0x00000003} /* ALL_REGS */ \ + } + +-/* Zero or more C statements that may conditionally modify five variables +- fixed_regs, call_used_regs, global_regs, reg_names, and reg_class_contents, +- to take into account any dependence of these register sets on target flags. +- The first three of these are of type char [] (interpreted as Boolean +- vectors). global_regs is a const char *[], and reg_class_contents is a +- HARD_REG_SET. Before the macro is called, fixed_regs, call_used_regs, +- reg_class_contents, and reg_names have been initialized from +- FIXED_REGISTERS, CALL_USED_REGISTERS, REG_CLASS_CONTENTS, and +- REGISTER_NAMES, respectively. global_regs has been cleared, and any +- ‘-ffixed-reg’, ‘-fcall-used-reg’ and ‘-fcall-saved-reg’ command options +- have been applied. +- +- You need not define this macro if it has no work to do. +- +- If the usage of an entire class of registers depends on the target flags, +- you may indicate this to GCC by using this macro to modify fixed_regs and +- call_used_regs to 1 for each of the registers in the classes which should +- not be used by GCC. Also define the macro REG_CLASS_FROM_LETTER / +- REG_CLASS_FROM_CONSTRAINT to return NO_REGS if it is called with a letter +- for a class that shouldn’t be used. (However, if this class is not included +- in GENERAL_REGS and all of the insn patterns whose constraints permit this +- class are controlled by target switches, then GCC will automatically avoid +- using these registers when the target switches are opposed to them.) */ +- +-#define CONDITIONAL_REGISTER_USAGE \ +- if (AVR_TINY) { \ +- int i; \ +- for (i = 0; i <= 17; i++) { \ +- fixed_regs[i] = 1; \ +- call_used_regs[i] = 1; \ +- } \ +- CLEAR_HARD_REG_SET(reg_class_contents[(int)ADDW_REGS]); \ +- CLEAR_HARD_REG_SET(reg_class_contents[(int)NO_LD_REGS]); \ +- } +- + #define REGNO_REG_CLASS(R) avr_regno_reg_class(R) + + /* The following macro defines cover classes for Integrated Register diff --git a/505-gcc-4.5.1-bug13932.patch b/505-gcc-4.5.1-bug13932.patch deleted file mode 100644 index eb35f9b..0000000 --- a/505-gcc-4.5.1-bug13932.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-12-14 18:10:15.000000000 +0530 -+++ gcc/config/avr/avr-devices.c 2011-12-14 18:12:49.000000000 +0530 -@@ -259,7 +259,7 @@ const struct mcu_type_s avr_mcu_types[] - /* Enhanced, ==256K + 3-Byte PC + - { MOVW/LPMX, JMP/CALL, MUL, ELPM, ELPMX, EIJMP/EICALL }. */ - { "avr6", ARCH_AVR6, NULL, 0, 0x0200, "m2561" }, -- { "atmega2560", ARCH_AVR6, "__AVR_ATmega2560__", 0, 0x0200, "m2561" }, -+ { "atmega2560", ARCH_AVR6, "__AVR_ATmega2560__", 0, 0x0200, "m2560" }, - { "atmega2561", ARCH_AVR6, "__AVR_ATmega2561__", 0, 0x0200, "m2561" }, - { "atmega256rfa2", ARCH_AVR6, "__AVR_ATmega256RFA2__", 0, 0x0200, "m256rfa2" }, - { "atmega256rfr2", ARCH_AVR6, "__AVR_ATmega256RFR2__", 0, 0x0200, "m256rfr2" }, diff --git a/505-gcc-avrtc381-tiny.patch b/505-gcc-avrtc381-tiny.patch new file mode 100644 index 0000000..08835a3 --- /dev/null +++ b/505-gcc-avrtc381-tiny.patch @@ -0,0 +1,47 @@ +diff -Naurp gcc/config/avr/avr.md gcc/config/avr/avr.md +--- gcc/config/avr/avr.md 2012-04-13 11:19:25.000000000 +0530 ++++ gcc/config/avr/avr.md 2012-04-13 13:21:49.000000000 +0530 +@@ -72,7 +72,8 @@ + (UNSPECV_DELAY_CYCLES_1 101) + (UNSPECV_DELAY_CYCLES_2 102) + (UNSPECV_DELAY_CYCLES_3 103) +- (UNSPECV_DELAY_CYCLES_4 104)]) ++ (UNSPECV_DELAY_CYCLES_4 104) ++ (UNSPECV_DELAY_CYCLES_2_TINY 105)]) + + (include "predicates.md") + (include "constraints.md") +@@ -3370,7 +3371,12 @@ + if (loop_count > 0xFFFF) + loop_count = 0xFFFF; + unsigned int cycles_used = (((loop_count - 1) * 4) + 5); +- emit_insn (gen_delay_cycles_2 (gen_int_mode (loop_count, HImode))); ++ if (AVR_TINY) { ++ emit_insn (gen_delay_cycles_2_tiny (gen_int_mode (loop_count, HImode))); ++ } ++ else { ++ emit_insn (gen_delay_cycles_2 (gen_int_mode (loop_count, HImode))); ++ } + cycles -= cycles_used; + } + if (IN_RANGE(cycles, 6, 767)) +@@ -3418,6 +3424,19 @@ + [(set_attr "length" "4") + (set_attr "cc" "clobber")]) + ++(define_insn "delay_cycles_2_tiny" ++ [(unspec_volatile [(const_int 0)] UNSPECV_DELAY_CYCLES_2_TINY) ++ (match_operand:HI 0 "immediate_operand" "") ++ (clobber (match_scratch:HI 1 "=&d"))] ++ "" ++ " ldi %A1,lo8(%0) ++ ldi %B1,hi8(%0) ++ 1:subi %A1,1 ++ sbci %B1,0 ++ brne 1b" ++ [(set_attr "length" "5") ++ (set_attr "cc" "clobber")]) ++ + (define_insn "delay_cycles_3" + [(unspec_volatile [(const_int 0)] UNSPECV_DELAY_CYCLES_3) + (match_operand:SI 0 "immediate_operand" "") diff --git a/507-gcc-4.5.1-bug14415.patch b/507-gcc-4.5.1-bug14415.patch deleted file mode 100644 index 5bbdced..0000000 --- a/507-gcc-4.5.1-bug14415.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Naurp gcc/config/avr/avr-devices.c gcc/config/avr/avr-devices.c ---- gcc/config/avr/avr-devices.c 2011-12-14 18:16:56.000000000 +0530 -+++ gcc/config/avr/avr-devices.c 2011-12-14 18:16:02.000000000 +0530 -@@ -170,7 +170,7 @@ const struct mcu_type_s avr_mcu_types[] - { "atmega32", ARCH_AVR5, "__AVR_ATmega32__", 0, 0x0060, "m32" }, - { "atmega32a", ARCH_AVR5, "__AVR_ATmega32A__", 0, 0x0060, "m32a" }, - { "atmega323", ARCH_AVR5, "__AVR_ATmega323__", 0, 0x0060, "m323" }, -- { "atmega324a", ARCH_AVR5, "__AVR_ATmega324A__", 0, 0x0060, "m324a" }, -+ { "atmega324a", ARCH_AVR5, "__AVR_ATmega324A__", 0, 0x0100, "m324a" }, - { "atmega324p", ARCH_AVR5, "__AVR_ATmega324P__", 0, 0x0100, "m324p" }, - { "atmega324pa", ARCH_AVR5, "__AVR_ATmega324PA__", 0, 0x0100, "m324pa" }, - { "atmega325", ARCH_AVR5, "__AVR_ATmega325__", 0, 0x0100, "m325" }, diff --git a/crossavr-gcc.spec b/crossavr-gcc.spec index bf53e9a..e290d1e 100644 --- a/crossavr-gcc.spec +++ b/crossavr-gcc.spec @@ -9,56 +9,60 @@ Summary(pl.UTF-8): Skrośne narzędzia programistyczne GNU dla AVR - gcc Summary(pt_BR.UTF-8): Utilitários para desenvolvimento de binários da GNU - AVR gcc Summary(tr.UTF-8): GNU geliştirme araçları - AVR gcc Name: crossavr-gcc -Version: 4.5.3 +Version: 4.6.2 Release: 1 Epoch: 1 -# Patches 1xx are taken form Atmel official AVR8-GNU toolchain version 3.3.1.481. -Patch100: 200-gcc-4.5.1-libiberty-Makefile.in.patch -Patch101: 300-gcc-4.5.1-fixedpoint-3-4-2010.patch -Patch102: 301-gcc-4.5.1-xmega-v14.patch -Patch103: 302-gcc-4.5.1-avrtiny10.patch -Patch104: 303-gcc-4.5.1-osmain.patch -Patch105: 304-gcc-4.5.1-builtins-v6.patch -Patch106: 305-gcc-4.5.1-avrtiny10-non-fixedpoint.patch -Patch107: 306-gcc-4.5.1-option-list-devices.patch -Patch108: 400-gcc-4.5.1-new-devices.patch -Patch109: 401-gcc-4.5.1-atmega32_5_50_90_pa.patch -Patch110: 402-gcc-4.5.1-attiny1634.patch -Patch111: 403-gcc-4.5.1-atmega48pa.patch -Patch112: 404-gcc-4.5.1-atxmega_16_32_a4u.patch -Patch113: 405-gcc-4.5.1-atxmega64_128_192_256a3u.patch -Patch114: 406-gcc-4.5.1-atmegarfr2_a2.patch -Patch115: 407-gcc-4.5.1-atmega165pa.patch -Patch116: 408-gcc-4.5.1-atxmega384c3.patch -Patch117: 409-gcc-4.5.1-attiny80.patch -Patch118: 410-gcc-4.5.1-atxmega128a4u.patch -Patch119: 411-gcc-4.5.1-atxmega64d4.patch -Patch120: 412-gcc-4.5.1-atmega164pa_168pa_32a_64a.patch -Patch121: 413-gcc-4.5.1-atxmega32x1.patch -Patch122: 414-gcc-4.5.1-atxmega64_128_b3.patch -Patch123: 415-gcc-4.5.1-atxmega64b1.patch -Patch124: 416-gcc-4.5.1-atmega_8a_128a_1284.patch -Patch125: 417-gcc-4.5.1-atxmega64a4u.patch -Patch126: 418-gcc-4.5.1-atxmega128d4.patch -Patch127: 419-gcc-4.5.1-atmxt336s.patch -Patch128: 420-gcc-4.5.1-atxmega16c4_32c4_128c3_256c3.patch -Patch129: 421-gcc-4.5.1-atxmega384d3.patch -Patch130: 422-gcc-4.5.1-atmega48hvf.patch -Patch131: 423-gcc-4.5.1-atmega26hvg.patch -Patch132: 424-gcc-4.5.1-atmxt224_224e.patch -Patch133: 424-gcc-4.5.1-atxmega192c3.patch -Patch134: 500-gcc-4.5.1-bug13473.patch -Patch135: 501-gcc-4.5.1-bug13579.patch -Patch136: 502-gcc-4.5.1-bug-18145-v4.patch -Patch137: 503-gcc-4.5.1-avrtiny10-bug-12510.patch -Patch138: 504-gcc-4.5.1-bug12915.patch -Patch139: 505-gcc-4.5.1-bug13932.patch -Patch140: 506-gcc-4.5.1-bug13789.patch -Patch141: 507-gcc-4.5.1-bug14415.patch +Patch1: gcc-bug51969.patch +# Patches 1xx are taken form Atmel official AVR8-GNU toolchain version 3.4.0.663. +Patch100: 200-gcc-libiberty-Makefile.in.patch +Patch101: 300-gcc-fixedpoint-3-4-2010.patch +Patch102: 301-gcc-xmega-v14.patch +Patch103: 302-gcc-avrtiny10.patch +Patch104: 303-gcc-osmain.patch +Patch105: 304-gcc-builtins-v6.patch +Patch106: 305-gcc-avrtiny10-non-fixedpoint.patch +Patch107: 306-gcc-option-list-devices.patch +Patch108: 400-gcc-new-devices.patch +Patch109: 401-gcc-atmega32_5_50_90_pa.patch +Patch110: 402-gcc-attiny1634.patch +Patch111: 403-gcc-atmega48pa.patch +Patch112: 404-gcc-atxmega_16_32_a4u.patch +Patch113: 405-gcc-atxmega64_128_192_256a3u.patch +Patch114: 406-gcc-atmegarfr2_a2.patch +Patch115: 407-gcc-atmega165pa.patch +Patch116: 408-gcc-atxmega384c3.patch +Patch117: 409-gcc-attiny80.patch +Patch118: 410-gcc-atxmega128a4u.patch +Patch119: 411-gcc-atxmega64d4.patch +Patch120: 412-gcc-atmega164pa_168pa_32a_64a.patch +Patch121: 413-gcc-atxmega64_128_b3.patch +Patch122: 414-gcc-atxmega64b1.patch +Patch123: 415-gcc-atmega_8a_128a_1284.patch +Patch124: 416-gcc-atxmega64a4u.patch +Patch125: 417-gcc-atxmega128d4.patch +Patch126: 418-gcc-atmxt336s.patch +Patch127: 419-gcc-atxmega16c4_32c4_128c3_256c3.patch +Patch128: 420-gcc-atxmega384d3.patch +Patch129: 421-gcc-atmega48hvf.patch +Patch130: 422-gcc-atmega26hvg.patch +Patch131: 423-gcc-atmxt224_224e.patch +Patch132: 424-gcc-atxmega192c3.patch +Patch133: 425-gcc-atmxt112sl.patch +Patch134: 426-gcc-atxmega64c3.patch +Patch135: 427-gcc-ata6285_6286.patch +Patch136: 428-gcc-attiny828.patch +Patch137: 429-gcc-ata5790_5790n_5795.patch +Patch138: 430-gcc-ata5272_ata5505.patch +Patch139: 500-gcc-bug13473.patch +Patch140: 501-gcc-avrtiny10-bug-12510.patch +Patch141: 502-gcc-bug12915.patch +Patch142: 503-gcc-bug13789.patch +Patch143: 504-gcc-conditional-register.patch +Patch144: 505-gcc-avrtc381-tiny.patch License: GPL Group: Development/Languages Source0: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{version}/gcc-%{version}.tar.bz2 -# Source0-md5: 8e0b5c12212e185f3e4383106bfa9cc6 +# Source0-md5: 028115c4fbfb6cfd75d6369f4a90d87e BuildRequires: /bin/bash BuildRequires: autoconf BuildRequires: bison @@ -109,6 +113,7 @@ Ten pakiet dodaje obsługę C++ do kompilatora gcc dla AVR. %prep %setup -q -n gcc-%{version} cd gcc/config/%{target} && %undos -f c,h && cd - +%patch1 -p2 %patch100 -p0 %patch101 -p0 %patch102 -p0 @@ -151,6 +156,9 @@ cd gcc/config/%{target} && %undos -f c,h && cd - %patch139 -p0 %patch140 -p0 %patch141 -p0 +%patch142 -p0 +%patch143 -p0 +%patch144 -p0 %build rm -rf obj-%{target} @@ -203,6 +211,7 @@ rm -f $RPM_BUILD_ROOT%{_mandir}/man7/gpl.7 rm -f $RPM_BUILD_ROOT%{_datadir}/locale/*/LC_MESSAGES/{gcc,cpplib}.mo rm -rf $RPM_BUILD_ROOT%{gcclib}/include-fixed rm -rf $RPM_BUILD_ROOT%{gcclib}/install-tools +rm -f $RPM_BUILD_ROOT%{gcclib}/liblto_plugin.la %if 0%{!?debug:1} # strip target libraries @@ -223,6 +232,7 @@ rm -rf $RPM_BUILD_ROOT %attr(755,root,root) %{gcclib}/collect2 %attr(755,root,root) %{gcclib}/lto-wrapper %attr(755,root,root) %{gcclib}/lto1 +%attr(755,root,root) %{gcclib}/liblto_plugin.so* %{gcclib}/libg*.a %{gcclib}/%{target}* %{gcclib}/plugin diff --git a/gcc-bug51969.patch b/gcc-bug51969.patch new file mode 100644 index 0000000..5b8a4b2 --- /dev/null +++ b/gcc-bug51969.patch @@ -0,0 +1,18 @@ +--- branches/gcc-4_6-branch/gcc/gengtype.c 2012/02/14 23:26:47 184238 ++++ branches/gcc-4_6-branch/gcc/gengtype.c 2012/02/14 23:31:42 184239 +@@ -3594,14 +3594,13 @@ + int has_length, struct fileloc *line, const char *if_marked, + bool emit_pch, type_p field_type, const char *field_name) + { ++ struct pair newv; + /* If the field reference is relative to V, rather than to some + subcomponent of V, we can mark any subarrays with a single stride. + We're effectively treating the field as a global variable in its + own right. */ + if (v && type == v->type) + { +- struct pair newv; +- + newv = *v; + newv.type = field_type; + newv.name = ACONCAT ((v->name, ".", field_name, NULL));