[Top][All Lists]
[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}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Patch] for Adding ATmega128 support and C++ support for the AVR,
Peter Jansen <=