bug-gnu-utils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Patch] for Adding ATmega128 support and C++ support for the AVR


From: Peter Jansen
Subject: [Patch] for Adding ATmega128 support and C++ support for the AVR
Date: Fri, 11 Jan 2002 16:05:25 +1100
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.4) Gecko/20011019 Netscape6/6.2


Attached is a patch to add support for the ATmega128 processor to the AVR family.

Also updated is the linker scripts to include sections for the C++ constructors and destructors.

This is patched againsed the CVS tree of binutils version
GNU ld version 2.11.93 20020111

Regards,

--
Peter Jansen
Smart Container
Level 1, NIC Building
Eveleigh
NSW       1430
AUSTRALIA

 Patch to add support for the avr ATmega128 processor,
 and support for C++ on the avr in the linker scripts.

==================================================================================
diff -c3pr cvs.orig/src/gas/config/tc-avr.c cvs/src/gas/config/tc-avr.c
*** cvs.orig/src/gas/config/tc-avr.c    Tue Nov 20 20:33:49 2001
--- cvs/src/gas/config/tc-avr.c Fri Jan 11 12:32:44 2002
*** 99,104 ****
--- 99,105 ----
    {"atmega128", AVR_ISA_M128,     bfd_mach_avr5},
    {"at43usb355",AVR_ISA_94K,      bfd_mach_avr5},
    {"at94k",     AVR_ISA_94K,      bfd_mach_avr5},
+   {"atmega128", AVR_ISA_M128,     bfd_mach_avr5},
    {NULL, 0, 0}
  };
  
*** 270,276 ****
        "                   avr2 - AT90S2xxx, AT90S4xxx, AT90S8xxx, ATtiny22\n"
        "                   avr3 - ATmega103, ATmega603\n"
        "                   avr4 - ATmega83, ATmega85\n"
!       "                   avr5 - ATmega161, ATmega163, ATmega32, AT94K\n"
        "                   or immediate microcontroller name.\n"));
    fprintf (stream,
        _("  -mall-opcodes    accept all AVR opcodes, even if not supported by 
MCU\n"
--- 271,277 ----
        "                   avr2 - AT90S2xxx, AT90S4xxx, AT90S8xxx, ATtiny22\n"
        "                   avr3 - ATmega103, ATmega603\n"
        "                   avr4 - ATmega83, ATmega85\n"
!       "                   avr5 - ATmega161, ATmega163, ATmega32, AT94K, 
ATmega128\n"
        "                   or immediate microcontroller name.\n"));
    fprintf (stream,
        _("  -mall-opcodes    accept all AVR opcodes, even if not supported by 
MCU\n"
diff -c3pr cvs.orig/src/include/opcode/avr.h cvs/src/include/opcode/avr.h
*** cvs.orig/src/include/opcode/avr.h   Sat Nov 10 20:40:53 2001
--- cvs/src/include/opcode/avr.h        Fri Jan 11 12:32:44 2002
*** 35,40 ****
--- 35,41 ----
  #define AVR_ISA_M8   (AVR_ISA_2xxx | AVR_ISA_MUL | AVR_ISA_LPMX | AVR_ISA_SPM)
  #define AVR_ISA_M603 (AVR_ISA_2xxx | AVR_ISA_MEGA)
  #define AVR_ISA_M103 (AVR_ISA_M603 | AVR_ISA_ELPM)
+ #define AVR_ISA_M128 (AVR_ISA_M603 | AVR_ISA_MUL | AVR_ISA_LPMX | 
AVR_ISA_ELPMX )
  #define AVR_ISA_M161 (AVR_ISA_M603 | AVR_ISA_MUL | AVR_ISA_LPMX | AVR_ISA_SPM)
  #define AVR_ISA_94K  (AVR_ISA_M603 | AVR_ISA_MUL | AVR_ISA_LPMX)
  #define AVR_ISA_M323 (AVR_ISA_M161 | AVR_ISA_BRK)
diff -c3pr cvs.orig/src/ld/Makefile.am cvs/src/ld/Makefile.am
*** cvs.orig/src/ld/Makefile.am Tue Jan  8 15:23:01 2002
--- cvs/src/ld/Makefile.am      Fri Jan 11 12:32:44 2002
*** 128,133 ****
--- 128,134 ----
        eavr44x4.o \
        eavr85xx.o \
        eavrmega103.o \
+       eavrmega128.o \
        eavrmega161.o \
        eavrmega603.o \
        ecoff_sparc.o \
*** 413,418 ****
--- 414,423 ----
    $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf32avr.sc \
    ${GEN_DEPENDS}
        ${GENSCRIPTS} avrmega103 "$(tdir_avr85xx)"
+ eavrmega128.c: $(srcdir)/emulparams/avrmega128.sh \
+   $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf32avr.sc \
+   ${GEN_DEPENDS}
+       ${GENSCRIPTS} avrmega128 "$(tdir_avr85xx)"
  eavrmega161.c: $(srcdir)/emulparams/avrmega161.sh \
    $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf32avr.sc \
    ${GEN_DEPENDS}
diff -c3pr cvs.orig/src/ld/Makefile.in cvs/src/ld/Makefile.in
*** cvs.orig/src/ld/Makefile.in Tue Jan  8 15:23:02 2002
--- cvs/src/ld/Makefile.in      Fri Jan 11 12:32:44 2002
*** 237,242 ****
--- 237,243 ----
        eavr44x4.o \
        eavr85xx.o \
        eavrmega103.o \
+       eavrmega128.o \
        eavrmega161.o \
        eavrmega603.o \
        ecoff_sparc.o \
*** 1134,1139 ****
--- 1135,1144 ----
    $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf32avr.sc \
    ${GEN_DEPENDS}
        ${GENSCRIPTS} avrmega103 "$(tdir_avr85xx)"
+ eavrmega128.c: $(srcdir)/emulparams/avrmega128.sh \
+   $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf32avr.sc \
+   ${GEN_DEPENDS}
+       ${GENSCRIPTS} avrmega128 "$(tdir_avr85xx)"
  eavrmega161.c: $(srcdir)/emulparams/avrmega161.sh \
    $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf32avr.sc \
    ${GEN_DEPENDS}
diff -c3pr cvs.orig/src/ld/configure.tgt cvs/src/ld/configure.tgt
*** cvs.orig/src/ld/configure.tgt       Tue Jan  8 15:23:02 2002
--- cvs/src/ld/configure.tgt    Fri Jan 11 12:32:44 2002
*** 22,28 ****
                        targ_extra_ofiles="deffilep.o pe-dll.o" ;;
  arc-*-elf*)           targ_emul=arcelf ;;
  avr-*-*)              targ_emul=avr85xx
!                       targ_extra_emuls="avr1200 avr23xx avr44x4 avr4433 
avrmega603 avrmega103 avrmega161" ;;
  cris-*-*aout*)                targ_emul=crisaout
                        targ_extra_emuls="criself crislinux"
                        targ_extra_libpath=$targ_extra_emuls ;;
--- 22,28 ----
                        targ_extra_ofiles="deffilep.o pe-dll.o" ;;
  arc-*-elf*)           targ_emul=arcelf ;;
  avr-*-*)              targ_emul=avr85xx
!                       targ_extra_emuls="avr1200 avr23xx avr44x4 avr4433 
avrmega603 avrmega103 avrmega128 avrmega161" ;;
  cris-*-*aout*)                targ_emul=crisaout
                        targ_extra_emuls="criself crislinux"
                        targ_extra_libpath=$targ_extra_emuls ;;
diff -c3pr cvs.orig/src/ld/emulparams/avr1200.sh 
cvs/src/ld/emulparams/avr1200.sh
*** cvs.orig/src/ld/emulparams/avr1200.sh       Sun May 28 01:36:58 2000
--- cvs/src/ld/emulparams/avr1200.sh    Fri Jan 11 12:32:44 2002
*** 7,12 ****
--- 7,13 ----
  TEMPLATE_NAME=generic
  
  TEXT_LENGTH=1K
+ DATA_START=0x60
  DATA_LENGTH=0
  EEPROM_LENGTH=64
  STACK=0
diff -c3pr cvs.orig/src/ld/emulparams/avr23xx.sh 
cvs/src/ld/emulparams/avr23xx.sh
*** cvs.orig/src/ld/emulparams/avr23xx.sh       Sun May 28 01:36:58 2000
--- cvs/src/ld/emulparams/avr23xx.sh    Fri Jan 11 12:32:44 2002
*** 7,12 ****
--- 7,13 ----
  TEMPLATE_NAME=generic
  
  TEXT_LENGTH=2K
+ DATA_START=0x60
  DATA_LENGTH=128
  EEPROM_LENGTH=128
  STACK=0x0DF
diff -c3pr cvs.orig/src/ld/emulparams/avr4433.sh 
cvs/src/ld/emulparams/avr4433.sh
*** cvs.orig/src/ld/emulparams/avr4433.sh       Sun May 28 01:36:58 2000
--- cvs/src/ld/emulparams/avr4433.sh    Fri Jan 11 12:32:44 2002
*** 7,12 ****
--- 7,13 ----
  TEMPLATE_NAME=generic
  
  TEXT_LENGTH=4K
+ DATA_START=0x60
  DATA_LENGTH=128
  EEPROM_LENGTH=256
  STACK=0x0DF
diff -c3pr cvs.orig/src/ld/emulparams/avr44x4.sh 
cvs/src/ld/emulparams/avr44x4.sh
*** cvs.orig/src/ld/emulparams/avr44x4.sh       Sun May 28 01:36:58 2000
--- cvs/src/ld/emulparams/avr44x4.sh    Fri Jan 11 12:32:44 2002
*** 7,12 ****
--- 7,13 ----
  TEMPLATE_NAME=generic
  
  TEXT_LENGTH=4K
+ DATA_START=0x60
  DATA_LENGTH=256
  EEPROM_LENGTH=256
  STACK=0x15F
diff -c3pr cvs.orig/src/ld/emulparams/avr85xx.sh 
cvs/src/ld/emulparams/avr85xx.sh
*** cvs.orig/src/ld/emulparams/avr85xx.sh       Sun May 28 01:36:58 2000
--- cvs/src/ld/emulparams/avr85xx.sh    Fri Jan 11 12:32:44 2002
*** 7,12 ****
--- 7,13 ----
  TEMPLATE_NAME=generic
  
  TEXT_LENGTH=8K
+ DATA_START=0x60
  DATA_LENGTH=512
  EEPROM_LENGTH=512
  STACK=0x25F
diff -c3pr cvs.orig/src/ld/emulparams/avrmega103.sh 
cvs/src/ld/emulparams/avrmega103.sh
*** cvs.orig/src/ld/emulparams/avrmega103.sh    Sun May 28 01:36:58 2000
--- cvs/src/ld/emulparams/avrmega103.sh Fri Jan 11 12:32:44 2002
*** 7,12 ****
--- 7,13 ----
  TEMPLATE_NAME=generic
  
  TEXT_LENGTH=128K
+ DATA_START=0x60
  DATA_LENGTH=4000
  EEPROM_LENGTH=4K
  STACK=0x0FFF
diff -c3pr cvs.orig/src/ld/emulparams/avrmega161.sh 
cvs/src/ld/emulparams/avrmega161.sh
*** cvs.orig/src/ld/emulparams/avrmega161.sh    Tue Jun 27 11:45:30 2000
--- cvs/src/ld/emulparams/avrmega161.sh Fri Jan 11 12:32:44 2002
*** 7,12 ****
--- 7,13 ----
  TEMPLATE_NAME=generic
  
  TEXT_LENGTH=16K
+ DATA_START=0x60
  DATA_LENGTH=1K
  EEPROM_LENGTH=512
  STACK=0x45F
diff -c3pr cvs.orig/src/ld/emulparams/avrmega603.sh 
cvs/src/ld/emulparams/avrmega603.sh
*** cvs.orig/src/ld/emulparams/avrmega603.sh    Sun May 28 01:36:58 2000
--- cvs/src/ld/emulparams/avrmega603.sh Fri Jan 11 12:32:44 2002
*** 7,12 ****
--- 7,13 ----
  TEMPLATE_NAME=generic
  
  TEXT_LENGTH=64K
+ DATA_START=0x60
  DATA_LENGTH=4000
  EEPROM_LENGTH=2K
  STACK=0x0FFF
diff -c3pr cvs.orig/src/ld/scripttempl/elf32avr.sc 
cvs/src/ld/scripttempl/elf32avr.sc
*** cvs.orig/src/ld/scripttempl/elf32avr.sc     Tue Nov 14 09:26:38 2000
--- cvs/src/ld/scripttempl/elf32avr.sc  Fri Jan 11 12:37:17 2002
*** 5,11 ****
  MEMORY
  {
    text   (rx)   : ORIGIN = 0,    LENGTH = $TEXT_LENGTH
!   data   (rw!x) : ORIGIN = 0x800060, LENGTH = $DATA_LENGTH
    eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = $EEPROM_LENGTH
  }
  
--- 5,11 ----
  MEMORY
  {
    text   (rx)   : ORIGIN = 0,    LENGTH = $TEXT_LENGTH
!   data   (rw!x) : ORIGIN = (0x800000 + $DATA_START), LENGTH = $DATA_LENGTH
    eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = $EEPROM_LENGTH
  }
  
*** 74,88 ****
    /* Internal text space or external memory */
    .text :
    {
!     *(.init)
      *(.progmem.gcc*)
      *(.progmem*)
      ${RELOCATING+. = ALIGN(2);}
      *(.text)
      ${RELOCATING+. = ALIGN(2);}
      *(.text.*)
      ${RELOCATING+. = ALIGN(2);}
!     *(.fini)
      ${RELOCATING+ _etext = . ; }
    } ${RELOCATING+ > text}
  
--- 74,101 ----
    /* Internal text space or external memory */
    .text :
    {
!     *(.init)                  /* init/C++ constructor function */
!     ${RELOCATING+. = ALIGN(2);}
      *(.progmem.gcc*)
+     ${RELOCATING+. = ALIGN(2);}
      *(.progmem*)
+ 
+     ${RELOCATING+. = ALIGN(2);}
+     __CTOR_LIST__ = .;
+     *(.ctors)                 /* C++ constructor list */
+     __CTOR_END__ = .;
+     ${RELOCATING+. = ALIGN(2);}
+     __DTOR_LIST__ = .;
+     *(.dtors)                 /* C++ destructor list */
+     __DTOR_END__ = .;
+     
      ${RELOCATING+. = ALIGN(2);}
      *(.text)
      ${RELOCATING+. = ALIGN(2);}
      *(.text.*)
+ 
      ${RELOCATING+. = ALIGN(2);}
!     *(.fini)                  /* C++ destructor function */
      ${RELOCATING+ _etext = . ; }
    } ${RELOCATING+ > text}
  
*** 101,106 ****
--- 114,120 ----
      *(.bss)
      *(COMMON)
      ${RELOCATING+ PROVIDE (__bss_end = .) ; }
+     ${RELOCATING+ PROVIDE (end = .);}
      ${RELOCATING+ _end = . ;  }
    } ${RELOCATING+ > data}
  

reply via email to

[Prev in Thread] Current Thread [Next in Thread]