Add AVR architectures avr25, avr31, avr35, and avr51 to match GCC.

bfd/
	* archures.c (bfd_mach_avr25, bfd_mach_avr31, bfd_mach_avr35,
	bfd_mach_avr51): New.
	* bfd-in2.h: Regenerate.
	* cpu-avr.c (arch_info_struct): Add avr25, avr31, avr35, and avr51
	architectures. Change comments to match architecture comments in GCC.
	(compatible): Add test for new AVR architectures.
	* elf32-avr.c (bfd_elf_avr_final_write_processing): Recognize
	bfd_mach_avr25, bfd_mach_avr31, bfd_mach_avr35 and bfd_mach_avr51.
	(elf32_avr_object_p): Recognize E_AVR_MACH_AVR25, E_AVR_MACH_AVR31,
	E_AVR_MACH_AVR35 and E_AVR_MACH_AVR51.

gas/
	* config/tc-avr.c (mcu_types): Add avr25, avr31, avr35, and avr51
	architectures. Reorganize list to put mcu types in correct architectures
	and to order list same as in GCC. Use new ISA definitions in
	include/opcode/avr.h.
	* doc/c-avr.texi: Add avr25, avr31, avr35, and avr51 architecture
	descriptions. Reorganize descriptions to put mcu types in correct
	architectures and to order lists same as in GCC.

include/
	* elf/avr.h (E_AVR_MACH_AVR25, E_AVR_MACH_AVR31,
	E_AVR_MACH_AVR35, E_AVR_MACH_AVR51): Define.
	(EF_AVR_MACH): Redefine to 0x7F.
	* opcode/avr.h (AVR_ISA_TINY3, AVR_ISA_ALL, AVR_ISA_USB162): Remove.
	(AVR_ISA_AVR3): Redefine.
	(AVR_ISA_AVR1, AVR_ISA_AVR2, AVR_ISA_AVR31, AVR_ISA_AVR35,
	AVR_ISA_AVR3_ALL, AVR_ISA_AVR4, AVR_ISA_AVR5, AVR_ISA_AVR51,
	AVR_ISA_AVR6): Define.

ld/
	* Makefile.am (ALL_EMULATIONS): Add eavr25.o, eavr31.o, eavr35.o,
	and eavr51.o.
	Add rules for eavr25.c, eavr31.c, eavr35.c, eavr51.c.
	* Makefile.in: Regenerate.
	* configure.tgt (avr-*-*, targ_extra_emuls): Add avr25, avr31, avr35
	and avr51.
	* emulparams/avr25.sh: New file.
	* emulparams/avr31.sh: New file.
	* emulparams/avr35.sh: New file.
	* emulparams/avr51.sh: New file.
This commit is contained in:
Eric B. Weddington
2008-08-09 05:35:13 +00:00
parent 4baacaa877
commit 7b21ac3f45
19 changed files with 416 additions and 164 deletions

View File

@ -1,3 +1,17 @@
2008-08-08 Anatoly Sokolov <aesok@post.ru>
* archures.c (bfd_mach_avr25, bfd_mach_avr31, bfd_mach_avr35,
bfd_mach_avr51): New.
* bfd-in2.h: Regenerate.
* cpu-avr.c (arch_info_struct): Add avr25, avr31, avr35, and avr51
architectures. Change comments to match architecture comments in GCC.
(compatible): Add test for new AVR architectures.
* elf32-avr.c (bfd_elf_avr_final_write_processing): Recognize
bfd_mach_avr25, bfd_mach_avr31, bfd_mach_avr35 and bfd_mach_avr51.
(elf32_avr_object_p): Recognize E_AVR_MACH_AVR25, E_AVR_MACH_AVR31,
E_AVR_MACH_AVR35 and E_AVR_MACH_AVR51.
2008-08-08 Richard Sandiford <rdsandiford@googlemail.com> 2008-08-08 Richard Sandiford <rdsandiford@googlemail.com>
Daniel Jacobowitz <dan@codesourcery.com> Daniel Jacobowitz <dan@codesourcery.com>
Catherine Moore <clm@codesourcery.com> Catherine Moore <clm@codesourcery.com>

View File

@ -349,9 +349,13 @@ DESCRIPTION
. bfd_arch_avr, {* Atmel AVR microcontrollers. *} . bfd_arch_avr, {* Atmel AVR microcontrollers. *}
.#define bfd_mach_avr1 1 .#define bfd_mach_avr1 1
.#define bfd_mach_avr2 2 .#define bfd_mach_avr2 2
.#define bfd_mach_avr25 25
.#define bfd_mach_avr3 3 .#define bfd_mach_avr3 3
.#define bfd_mach_avr31 31
.#define bfd_mach_avr35 35
.#define bfd_mach_avr4 4 .#define bfd_mach_avr4 4
.#define bfd_mach_avr5 5 .#define bfd_mach_avr5 5
.#define bfd_mach_avr51 51
.#define bfd_mach_avr6 6 .#define bfd_mach_avr6 6
. bfd_arch_bfin, {* ADI Blackfin *} . bfd_arch_bfin, {* ADI Blackfin *}
.#define bfd_mach_bfin 1 .#define bfd_mach_bfin 1

View File

@ -1971,9 +1971,13 @@ enum bfd_architecture
bfd_arch_avr, /* Atmel AVR microcontrollers. */ bfd_arch_avr, /* Atmel AVR microcontrollers. */
#define bfd_mach_avr1 1 #define bfd_mach_avr1 1
#define bfd_mach_avr2 2 #define bfd_mach_avr2 2
#define bfd_mach_avr25 25
#define bfd_mach_avr3 3 #define bfd_mach_avr3 3
#define bfd_mach_avr31 31
#define bfd_mach_avr35 35
#define bfd_mach_avr4 4 #define bfd_mach_avr4 4
#define bfd_mach_avr5 5 #define bfd_mach_avr5 5
#define bfd_mach_avr51 51
#define bfd_mach_avr6 6 #define bfd_mach_avr6 6
bfd_arch_bfin, /* ADI Blackfin */ bfd_arch_bfin, /* ADI Blackfin */
#define bfd_mach_bfin 1 #define bfd_mach_bfin 1

View File

@ -35,20 +35,44 @@ compatible (const bfd_arch_info_type * a,
if (a->arch != b->arch) if (a->arch != b->arch)
return NULL; return NULL;
/* Special case for ATmega[16]03 (avr:3) and ATmega83 (avr:4). */ if (a->mach == b->mach)
if ((a->mach == bfd_mach_avr3 && b->mach == bfd_mach_avr4)
|| (a->mach == bfd_mach_avr4 && b->mach == bfd_mach_avr3))
return NULL;
/* So far all newer AVR architecture cores are supersets of previous
cores. */
if (a->mach <= b->mach)
return b;
if (a->mach >= b->mach)
return a; return a;
/* Never reached! */ if (a->mach <= bfd_mach_avr6 && b->mach <= bfd_mach_avr6)
{
/* Special case for ATmega[16]03 (avr:3) and ATmega83 (avr:4). */
if ((a->mach == bfd_mach_avr3 && b->mach == bfd_mach_avr4)
|| (a->mach == bfd_mach_avr4 && b->mach == bfd_mach_avr3))
return NULL;
if (a->mach <= b->mach)
return b;
if (a->mach >= b->mach)
return a;
}
if (a->mach == bfd_mach_avr2 && b->mach == bfd_mach_avr25)
return a;
if (a->mach == bfd_mach_avr25 && b->mach == bfd_mach_avr2)
return b;
if (a->mach == bfd_mach_avr3 && b->mach == bfd_mach_avr31)
return a;
if (a->mach == bfd_mach_avr31 && b->mach == bfd_mach_avr3)
return b;
if (a->mach == bfd_mach_avr3 && b->mach == bfd_mach_avr35)
return a;
if (a->mach == bfd_mach_avr35 && b->mach == bfd_mach_avr3)
return b;
if (a->mach == bfd_mach_avr5 && b->mach == bfd_mach_avr51)
return a;
if (a->mach == bfd_mach_avr51 && b->mach == bfd_mach_avr5)
return b;
return NULL; return NULL;
} }
@ -70,22 +94,38 @@ compatible (const bfd_arch_info_type * a,
static const bfd_arch_info_type arch_info_struct[] = static const bfd_arch_info_type arch_info_struct[] =
{ {
/* AT90S1200, ATtiny1x, ATtiny28. */ /* Assembler only. */
N (16, bfd_mach_avr1, "avr:1", FALSE, & arch_info_struct[1]), N (16, bfd_mach_avr1, "avr:1", FALSE, & arch_info_struct[1]),
/* AT90S2xxx, AT90S4xxx, AT90S8xxx, ATtiny22. */ /* Classic, <= 8K. */
N (16, bfd_mach_avr2, "avr:2", FALSE, & arch_info_struct[2]), N (16, bfd_mach_avr2, "avr:2", FALSE, & arch_info_struct[2]),
/* ATmega103, ATmega603. */ /* Classic + MOVW, <= 8K. */
N (22, bfd_mach_avr3, "avr:3", FALSE, & arch_info_struct[3]), N (16, bfd_mach_avr25, "avr:25", FALSE, & arch_info_struct[3]),
/* ATmega83, ATmega85. */ /* Classic, > 8K, <= 64K. */
N (16, bfd_mach_avr4, "avr:4", FALSE, & arch_info_struct[4]), /* TODO: addr_bits should be 16, but set to 22 for some following
version of GCC (from 4.3) for backward compatibility. */
N (22, bfd_mach_avr3, "avr:3", FALSE, & arch_info_struct[4]),
/* ATmega161, ATmega163, ATmega32, AT94K. */ /* Classic, == 128K. */
N (22, bfd_mach_avr5, "avr:5", FALSE, & arch_info_struct[5]), N (22, bfd_mach_avr31, "avr:31", FALSE, & arch_info_struct[5]),
/* ATmega256x. */ /* Classic + MOVW + JMP/CALL, > 8K, <= 64K. */
N (16, bfd_mach_avr35, "avr:35", FALSE, & arch_info_struct[6]),
/* Enhanced, <= 8K. */
N (16, bfd_mach_avr4, "avr:4", FALSE, & arch_info_struct[7]),
/* Enhanced, > 8K, <= 64K. */
/* TODO: addr_bits should be 16, but set to 22 for some following
version of GCC (from 4.3) for backward compatibility. */
N (22, bfd_mach_avr5, "avr:5", FALSE, & arch_info_struct[8]),
/* Enhanced, == 128K. */
N (22, bfd_mach_avr51, "avr:51", FALSE, & arch_info_struct[9]),
/* 3-Byte PC. */
N (22, bfd_mach_avr6, "avr:6", FALSE, NULL) N (22, bfd_mach_avr6, "avr:6", FALSE, NULL)
}; };

View File

@ -1296,10 +1296,19 @@ bfd_elf_avr_final_write_processing (bfd *abfd,
val = E_AVR_MACH_AVR1; val = E_AVR_MACH_AVR1;
break; break;
case bfd_mach_avr25:
val = E_AVR_MACH_AVR25;
case bfd_mach_avr3: case bfd_mach_avr3:
val = E_AVR_MACH_AVR3; val = E_AVR_MACH_AVR3;
break; break;
case bfd_mach_avr31:
val = E_AVR_MACH_AVR31;
case bfd_mach_avr35:
val = E_AVR_MACH_AVR35;
case bfd_mach_avr4: case bfd_mach_avr4:
val = E_AVR_MACH_AVR4; val = E_AVR_MACH_AVR4;
break; break;
@ -1308,6 +1317,10 @@ bfd_elf_avr_final_write_processing (bfd *abfd,
val = E_AVR_MACH_AVR5; val = E_AVR_MACH_AVR5;
break; break;
case bfd_mach_avr51:
val = E_AVR_MACH_AVR51;
break;
case bfd_mach_avr6: case bfd_mach_avr6:
val = E_AVR_MACH_AVR6; val = E_AVR_MACH_AVR6;
break; break;
@ -1342,10 +1355,22 @@ elf32_avr_object_p (bfd *abfd)
e_set = bfd_mach_avr1; e_set = bfd_mach_avr1;
break; break;
case E_AVR_MACH_AVR25:
e_set = bfd_mach_avr25;
break;
case E_AVR_MACH_AVR3: case E_AVR_MACH_AVR3:
e_set = bfd_mach_avr3; e_set = bfd_mach_avr3;
break; break;
case E_AVR_MACH_AVR31:
e_set = bfd_mach_avr31;
break;
case E_AVR_MACH_AVR35:
e_set = bfd_mach_avr35;
break;
case E_AVR_MACH_AVR4: case E_AVR_MACH_AVR4:
e_set = bfd_mach_avr4; e_set = bfd_mach_avr4;
break; break;
@ -1354,6 +1379,10 @@ elf32_avr_object_p (bfd *abfd)
e_set = bfd_mach_avr5; e_set = bfd_mach_avr5;
break; break;
case E_AVR_MACH_AVR51:
e_set = bfd_mach_avr51;
break;
case E_AVR_MACH_AVR6: case E_AVR_MACH_AVR6:
e_set = bfd_mach_avr6; e_set = bfd_mach_avr6;
break; break;

View File

@ -1,3 +1,13 @@
2008-08-08 Anatoly Sokolov <aesok@post.ru>
* config/tc-avr.c (mcu_types): Add avr25, avr31, avr35, and avr51
architectures. Reorganize list to put mcu types in correct architectures
and to order list same as in GCC. Use new ISA definitions in
include/opcode/avr.h.
* doc/c-avr.texi: Add avr25, avr31, avr35, and avr51 architecture
descriptions. Reorganize descriptions to put mcu types in correct
architectures and to order lists same as in GCC.
2008-08-08 Richard Sandiford <rdsandiford@googlemail.com> 2008-08-08 Richard Sandiford <rdsandiford@googlemail.com>
Daniel Jacobowitz <dan@codesourcery.com> Daniel Jacobowitz <dan@codesourcery.com>

View File

@ -56,127 +56,139 @@ struct mcu_type_s
}; };
/* XXX - devices that don't seem to exist (renamed, replaced with larger /* XXX - devices that don't seem to exist (renamed, replaced with larger
ones, or planned but never produced), left here for compatibility. ones, or planned but never produced), left here for compatibility. */
TODO: hide them in show_mcu_list output? */
static struct mcu_type_s mcu_types[] = static struct mcu_type_s mcu_types[] =
{ {
{"avr1", AVR_ISA_TINY1, bfd_mach_avr1}, {"avr1", AVR_ISA_AVR1, bfd_mach_avr1},
{"avr2", AVR_ISA_TINY2, bfd_mach_avr2}, /* TODO: insruction set for avr2 architecture should be AVR_ISA_AVR2,
{"avr3", AVR_ISA_AVR3, bfd_mach_avr3}, but set to AVR_ISA_AVR25 for some following version
{"avr4", AVR_ISA_M8, bfd_mach_avr4}, of GCC (from 4.3) for backward compatibility. */
{"avr5", AVR_ISA_ALL, bfd_mach_avr5}, {"avr2", AVR_ISA_AVR25, bfd_mach_avr2},
{"avr6", AVR_ISA_ALL, bfd_mach_avr6}, {"avr25", AVR_ISA_AVR25, bfd_mach_avr25},
/* TODO: insruction set for avr3 architecture should be AVR_ISA_AVR3,
but set to AVR_ISA_AVR3_ALL for some following version
of GCC (from 4.3) for backward compatibility. */
{"avr3", AVR_ISA_AVR3_ALL, bfd_mach_avr3},
{"avr31", AVR_ISA_AVR31, bfd_mach_avr31},
{"avr35", AVR_ISA_AVR35, bfd_mach_avr35},
{"avr4", AVR_ISA_AVR4, bfd_mach_avr4},
/* TODO: insruction set for avr5 architecture should be AVR_ISA_AVR5,
but set to AVR_ISA_AVR51 for some following version
of GCC (from 4.3) for backward compatibility. */
{"avr5", AVR_ISA_AVR51, bfd_mach_avr5},
{"avr51", AVR_ISA_AVR51, bfd_mach_avr51},
{"avr6", AVR_ISA_AVR6, bfd_mach_avr6},
{"at90s1200", AVR_ISA_1200, bfd_mach_avr1}, {"at90s1200", AVR_ISA_1200, bfd_mach_avr1},
{"attiny11", AVR_ISA_TINY1, bfd_mach_avr1}, {"attiny11", AVR_ISA_AVR1, bfd_mach_avr1},
{"attiny12", AVR_ISA_TINY1, bfd_mach_avr1}, {"attiny12", AVR_ISA_AVR1, bfd_mach_avr1},
{"attiny15", AVR_ISA_TINY1, bfd_mach_avr1}, {"attiny15", AVR_ISA_AVR1, bfd_mach_avr1},
{"attiny28", AVR_ISA_TINY1, bfd_mach_avr1}, {"attiny28", AVR_ISA_AVR1, bfd_mach_avr1},
{"at90s2313", AVR_ISA_2xxx, bfd_mach_avr2}, {"at90s2313", AVR_ISA_AVR2, bfd_mach_avr2},
{"at90s2323", AVR_ISA_2xxx, bfd_mach_avr2}, {"at90s2323", AVR_ISA_AVR2, bfd_mach_avr2},
{"at90s2333", AVR_ISA_2xxx, bfd_mach_avr2}, /* XXX -> 4433 */ {"at90s2333", AVR_ISA_AVR2, bfd_mach_avr2}, /* XXX -> 4433 */
{"at90s2343", AVR_ISA_2xxx, bfd_mach_avr2}, {"at90s2343", AVR_ISA_AVR2, bfd_mach_avr2},
{"attiny22", AVR_ISA_2xxx, bfd_mach_avr2}, /* XXX -> 2343 */ {"attiny22", AVR_ISA_AVR2, bfd_mach_avr2}, /* XXX -> 2343 */
{"attiny26", AVR_ISA_2xxe, bfd_mach_avr2}, {"attiny26", AVR_ISA_2xxe, bfd_mach_avr2},
{"at90s4433", AVR_ISA_2xxx, bfd_mach_avr2}, {"at90s4414", AVR_ISA_AVR2, bfd_mach_avr2}, /* XXX -> 8515 */
{"at90s4414", AVR_ISA_2xxx, bfd_mach_avr2}, /* XXX -> 8515 */ {"at90s4433", AVR_ISA_AVR2, bfd_mach_avr2},
{"at90s4434", AVR_ISA_2xxx, bfd_mach_avr2}, /* XXX -> 8535 */ {"at90s4434", AVR_ISA_AVR2, bfd_mach_avr2}, /* XXX -> 8535 */
{"at90s8515", AVR_ISA_2xxx, bfd_mach_avr2}, {"at90s8515", AVR_ISA_AVR2, bfd_mach_avr2},
{"at90s8535", AVR_ISA_2xxx, bfd_mach_avr2}, {"at90c8534", AVR_ISA_AVR2, bfd_mach_avr2},
{"at90c8534", AVR_ISA_2xxx, bfd_mach_avr2}, {"at90s8535", AVR_ISA_AVR2, bfd_mach_avr2},
{"at86rf401", AVR_ISA_RF401, bfd_mach_avr2}, {"attiny13", AVR_ISA_AVR25, bfd_mach_avr25},
{"attiny13", AVR_ISA_TINY2, bfd_mach_avr2}, {"attiny13a", AVR_ISA_AVR25, bfd_mach_avr25},
{"attiny13a", AVR_ISA_TINY2, bfd_mach_avr2}, {"attiny2313", AVR_ISA_AVR25, bfd_mach_avr25},
{"attiny2313", AVR_ISA_TINY2, bfd_mach_avr2}, {"attiny24", AVR_ISA_AVR25, bfd_mach_avr25},
{"attiny261", AVR_ISA_TINY2, bfd_mach_avr2}, {"attiny44", AVR_ISA_AVR25, bfd_mach_avr25},
{"attiny461", AVR_ISA_TINY2, bfd_mach_avr2}, {"attiny84", AVR_ISA_AVR25, bfd_mach_avr25},
{"attiny861", AVR_ISA_TINY2, bfd_mach_avr2}, {"attiny25", AVR_ISA_AVR25, bfd_mach_avr25},
{"attiny24", AVR_ISA_TINY2, bfd_mach_avr2}, {"attiny45", AVR_ISA_AVR25, bfd_mach_avr25},
{"attiny44", AVR_ISA_TINY2, bfd_mach_avr2}, {"attiny85", AVR_ISA_AVR25, bfd_mach_avr25},
{"attiny84", AVR_ISA_TINY2, bfd_mach_avr2}, {"attiny261", AVR_ISA_AVR25, bfd_mach_avr25},
{"attiny25", AVR_ISA_TINY2, bfd_mach_avr2}, {"attiny461", AVR_ISA_AVR25, bfd_mach_avr25},
{"attiny45", AVR_ISA_TINY2, bfd_mach_avr2}, {"attiny861", AVR_ISA_AVR25, bfd_mach_avr25},
{"attiny85", AVR_ISA_TINY2, bfd_mach_avr2}, {"attiny43u", AVR_ISA_AVR25, bfd_mach_avr25},
{"attiny43u", AVR_ISA_TINY2, bfd_mach_avr2}, {"attiny48", AVR_ISA_AVR25, bfd_mach_avr25},
{"attiny48", AVR_ISA_TINY2, bfd_mach_avr2}, {"attiny88", AVR_ISA_AVR25, bfd_mach_avr25},
{"attiny88", AVR_ISA_TINY2, bfd_mach_avr2}, {"at86rf401", AVR_ISA_RF401, bfd_mach_avr25},
{"atmega103", AVR_ISA_M103, bfd_mach_avr3}, {"at43usb355", AVR_ISA_AVR3, bfd_mach_avr3},
{"at43usb320", AVR_ISA_M103, bfd_mach_avr3}, {"at76c711", AVR_ISA_AVR3, bfd_mach_avr3},
{"at43usb355", AVR_ISA_M603, bfd_mach_avr3}, {"atmega103", AVR_ISA_AVR31, bfd_mach_avr31},
{"at76c711", AVR_ISA_M603, bfd_mach_avr3}, {"at43usb320", AVR_ISA_AVR31, bfd_mach_avr31},
{"at90usb82", AVR_ISA_USB162, bfd_mach_avr3}, {"attiny167", AVR_ISA_AVR35, bfd_mach_avr35},
{"at90usb162", AVR_ISA_USB162, bfd_mach_avr3}, {"at90usb82", AVR_ISA_AVR35, bfd_mach_avr35},
{"attiny167", AVR_ISA_TINY3, bfd_mach_avr3}, {"at90usb162", AVR_ISA_AVR35, bfd_mach_avr35},
{"atmega48", AVR_ISA_PWMx, bfd_mach_avr4},
{"atmega48p", AVR_ISA_PWMx, bfd_mach_avr4},
{"atmega8", AVR_ISA_M8, bfd_mach_avr4}, {"atmega8", AVR_ISA_M8, bfd_mach_avr4},
{"atmega88", AVR_ISA_PWMx, bfd_mach_avr4}, {"atmega48", AVR_ISA_AVR4, bfd_mach_avr4},
{"atmega88p", AVR_ISA_PWMx, bfd_mach_avr4}, {"atmega48p", AVR_ISA_AVR4, bfd_mach_avr4},
{"atmega88", AVR_ISA_AVR4, bfd_mach_avr4},
{"atmega88p", AVR_ISA_AVR4, bfd_mach_avr4},
{"atmega8515", AVR_ISA_M8, bfd_mach_avr4}, {"atmega8515", AVR_ISA_M8, bfd_mach_avr4},
{"atmega8535", AVR_ISA_M8, bfd_mach_avr4}, {"atmega8535", AVR_ISA_M8, bfd_mach_avr4},
{"atmega8hva", AVR_ISA_PWMx, bfd_mach_avr4}, {"atmega8hva", AVR_ISA_AVR4, bfd_mach_avr4},
{"at90pwm1", AVR_ISA_PWMx, bfd_mach_avr4}, {"at90pwm1", AVR_ISA_AVR4, bfd_mach_avr4},
{"at90pwm2", AVR_ISA_PWMx, bfd_mach_avr4}, {"at90pwm2", AVR_ISA_AVR4, bfd_mach_avr4},
{"at90pwm2b", AVR_ISA_PWMx, bfd_mach_avr4}, {"at90pwm2b", AVR_ISA_AVR4, bfd_mach_avr4},
{"at90pwm3", AVR_ISA_PWMx, bfd_mach_avr4}, {"at90pwm3", AVR_ISA_AVR4, bfd_mach_avr4},
{"at90pwm3b", AVR_ISA_PWMx, bfd_mach_avr4}, {"at90pwm3b", AVR_ISA_AVR4, bfd_mach_avr4},
{"atmega16", AVR_ISA_M323, bfd_mach_avr5}, {"atmega16", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega161", AVR_ISA_M161, bfd_mach_avr5}, {"atmega161", AVR_ISA_M161, bfd_mach_avr5},
{"atmega162", AVR_ISA_M323, bfd_mach_avr5}, {"atmega162", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega163", AVR_ISA_M161, bfd_mach_avr5}, {"atmega163", AVR_ISA_M161, bfd_mach_avr5},
{"atmega164p", AVR_ISA_M323, bfd_mach_avr5}, {"atmega164p", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega165", AVR_ISA_M323, bfd_mach_avr5}, {"atmega165", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega165p", AVR_ISA_M323, bfd_mach_avr5}, {"atmega165p", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega168", AVR_ISA_M323, bfd_mach_avr5}, {"atmega168", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega168p", AVR_ISA_M323, bfd_mach_avr5}, {"atmega168p", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega169", AVR_ISA_M323, bfd_mach_avr5}, {"atmega169", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega169p", AVR_ISA_M323, bfd_mach_avr5}, {"atmega169p", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega32", AVR_ISA_M323, bfd_mach_avr5}, {"atmega32", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega323", AVR_ISA_M323, bfd_mach_avr5}, {"atmega323", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega324p", AVR_ISA_M323, bfd_mach_avr5}, {"atmega324p", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega325", AVR_ISA_M323, bfd_mach_avr5}, {"atmega325", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega325p", AVR_ISA_M323, bfd_mach_avr5}, {"atmega325p", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega328p", AVR_ISA_M323, bfd_mach_avr5}, {"atmega3250", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega329", AVR_ISA_M323, bfd_mach_avr5}, {"atmega3250p",AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega329p", AVR_ISA_M323, bfd_mach_avr5}, {"atmega328p", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega3250", AVR_ISA_M323, bfd_mach_avr5}, {"atmega329", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega3250p",AVR_ISA_M323, bfd_mach_avr5}, {"atmega329p", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega3290", AVR_ISA_M323, bfd_mach_avr5}, {"atmega3290", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega3290p",AVR_ISA_M323, bfd_mach_avr5}, {"atmega3290p",AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega406", AVR_ISA_M323, bfd_mach_avr5}, {"atmega406", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega64", AVR_ISA_M323, bfd_mach_avr5}, {"atmega64", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega640", AVR_ISA_M323, bfd_mach_avr5}, {"atmega640", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega644", AVR_ISA_M323, bfd_mach_avr5}, {"atmega644", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega644p", AVR_ISA_M323, bfd_mach_avr5}, {"atmega644p", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega128", AVR_ISA_M128, bfd_mach_avr5}, {"atmega645", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega1280", AVR_ISA_M128, bfd_mach_avr5}, {"atmega649", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega1281", AVR_ISA_M128, bfd_mach_avr5}, {"atmega6450", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega1284p",AVR_ISA_M128, bfd_mach_avr5}, {"atmega6490", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega645", AVR_ISA_M323, bfd_mach_avr5}, {"atmega16hva",AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega649", AVR_ISA_M323, bfd_mach_avr5}, {"at90can32" , AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega6450", AVR_ISA_M323, bfd_mach_avr5}, {"at90can64" , AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega6490", AVR_ISA_M323, bfd_mach_avr5}, {"at90pwm216", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega16hva",AVR_ISA_M323, bfd_mach_avr5}, {"at90pwm316", AVR_ISA_AVR5, bfd_mach_avr5},
{"at90can32" , AVR_ISA_M323, bfd_mach_avr5}, {"atmega32c1", AVR_ISA_AVR5, bfd_mach_avr5},
{"at90can64" , AVR_ISA_M323, bfd_mach_avr5}, {"atmega32m1", AVR_ISA_AVR5, bfd_mach_avr5},
{"at90can128", AVR_ISA_M128, bfd_mach_avr5}, {"atmega32u4", AVR_ISA_AVR5, bfd_mach_avr5},
{"at90pwm216", AVR_ISA_M323, bfd_mach_avr5}, {"at90usb646", AVR_ISA_AVR5, bfd_mach_avr5},
{"at90pwm316", AVR_ISA_M323, bfd_mach_avr5}, {"at90usb647", AVR_ISA_AVR5, bfd_mach_avr5},
{"atmega32c1", AVR_ISA_M323, bfd_mach_avr5},
{"atmega32m1", AVR_ISA_M323, bfd_mach_avr5},
{"atmega32u4", AVR_ISA_M323, bfd_mach_avr5},
{"at90usb646", AVR_ISA_M323, bfd_mach_avr5},
{"at90usb647", AVR_ISA_M323, bfd_mach_avr5},
{"at90usb1286",AVR_ISA_M128, bfd_mach_avr5},
{"at90usb1287",AVR_ISA_M128, bfd_mach_avr5},
{"at94k", AVR_ISA_94K, bfd_mach_avr5}, {"at94k", AVR_ISA_94K, bfd_mach_avr5},
{"atmega2560", AVR_ISA_ALL, bfd_mach_avr6}, {"atmega128", AVR_ISA_AVR51, bfd_mach_avr51},
{"atmega2561", AVR_ISA_ALL, bfd_mach_avr6}, {"atmega1280", AVR_ISA_AVR51, bfd_mach_avr51},
{"atmega1281", AVR_ISA_AVR51, bfd_mach_avr51},
{"atmega1284p",AVR_ISA_AVR51, bfd_mach_avr51},
{"at90can128", AVR_ISA_AVR51, bfd_mach_avr51},
{"at90usb1286",AVR_ISA_AVR51, bfd_mach_avr51},
{"at90usb1287",AVR_ISA_AVR51, bfd_mach_avr51},
{"atmega2560", AVR_ISA_AVR6, bfd_mach_avr6},
{"atmega2561", AVR_ISA_AVR6, bfd_mach_avr6},
{NULL, 0, 0} {NULL, 0, 0}
}; };
/* Current MCU type. */ /* Current MCU type. */
static struct mcu_type_s default_mcu = {"avr2", AVR_ISA_2xxx,bfd_mach_avr2}; static struct mcu_type_s default_mcu = {"avr2", AVR_ISA_AVR2, bfd_mach_avr2};
static struct mcu_type_s * avr_mcu = & default_mcu; static struct mcu_type_s * avr_mcu = & default_mcu;
/* AVR target-specific switches. */ /* AVR target-specific switches. */
@ -337,11 +349,18 @@ md_show_usage (FILE *stream)
_("AVR options:\n" _("AVR options:\n"
" -mmcu=[avr-name] select microcontroller variant\n" " -mmcu=[avr-name] select microcontroller variant\n"
" [avr-name] can be:\n" " [avr-name] can be:\n"
" avr1 - AT90S1200, ATtiny1x, ATtiny28\n" " avr1 - classic AVR core without data RAM\n"
" avr2 - AT90S2xxx, AT90S4xxx, AT90S8xxx, ATtiny22\n" " avr2 - classic AVR core with up to 8K program memory\n"
" avr3 - ATmega103\n" " avr25 - classic AVR core with up to 8K program memory\n"
" avr4 - ATmega8, ATmega88\n" " plus the MOVW instruction\n"
" avr5 - ATmega161, ATmega163, ATmega32, AT94K\n" " avr3 - classic AVR core with up to 64K program memory\n"
" avr31 - classic AVR core with up to 128K program memory\n"
" avr35 - classic AVR core with up to 64K program memory\n"
" plus the MOVW instruction\n"
" avr4 - enhanced AVR core with up to 8K program memory\n"
" avr5 - enhanced AVR core with up to 64K program memory\n"
" avr51 - enhanced AVR core with up to 128K program memory\n"
" avr6 - enhanced AVR core with up to 256K program memory\n"
" or immediate microcontroller name.\n")); " or immediate microcontroller name.\n"));
fprintf (stream, fprintf (stream,
_(" -mall-opcodes accept all AVR opcodes, even if not supported by MCU\n" _(" -mall-opcodes accept all AVR opcodes, even if not supported by MCU\n"

View File

@ -37,15 +37,23 @@ compiler, only for assembler programs (MCU types: at90s1200,
attiny11, attiny12, attiny15, attiny28). attiny11, attiny12, attiny15, attiny28).
Instruction set avr2 (default) is for the classic AVR core with up to Instruction set avr2 (default) is for the classic AVR core with up to
8K program memory space (MCU types: at90s2313, at90s2323, attiny22, 8K program memory space (MCU types: at90s2313, at90s2323, at90s2333, at90s2343,
attiny26, at90s2333, at90s2343, at90s4414, at90s4433, at90s4434, attiny22, attiny26, at90s4414, at90s4433, at90s4434, at90s8515, at90c8534,
at90s8515, at90c8534, at90s8535, at86rf401, attiny13, attiny13a, attiny2313, at90s8535).
attiny261, attiny461, attiny861, attiny24, attiny44, attiny84, attiny25,
attiny45, attiny85, attiny43u, attiny48, attiny88). Instruction set avr25 is for the classic AVR core with up to 8K program memory
space plus the MOVW instruction (MCU types: attiny13, attiny13a, attiny2313,
attiny24, attiny44, attiny84, attiny25, attiny45, attiny85, attiny261,
attiny461, attiny861, attiny43u, attiny48, attiny88, at86rf401).
Instruction set avr3 is for the classic AVR core with up to 128K program Instruction set avr3 is for the classic AVR core with up to 128K program
memory space (MCU types: atmega103, at43usb320, at43usb355, at76c711, memory space (MCU types: at43usb355, at76c711).
at90usb82, at90usb162, attiny167).
Instruction set avr31 is for the classic AVR core with exactly 128K program
memory space (MCU types: atmega103, at43usb320).
Instruction set avr35 is for classic AVR core plus MOVW, CALL, and JMP
instructions (MCU types: attiny167, at90usb82, at90usb162).
Instruction set avr4 is for the enhanced AVR core with up to 8K program Instruction set avr4 is for the enhanced AVR core with up to 8K program
memory space (MCU types: atmega48, atmega48p,atmega8, atmega88, atmega88p, memory space (MCU types: atmega48, atmega48p,atmega8, atmega88, atmega88p,
@ -53,18 +61,20 @@ atmega8515, atmega8535, atmega8hva, at90pwm1, at90pwm2, at90pwm2b,
at90pwm3, at90pwm3b). at90pwm3, at90pwm3b).
Instruction set avr5 is for the enhanced AVR core with up to 128K program Instruction set avr5 is for the enhanced AVR core with up to 128K program
memory space (MCU types: atmega16, atmega161, atmega162, atmega163, memory space (MCU types: atmega16, atmega161, atmega162, atmega163, atmega164p,
atmega164p, atmega165, atmega165p, atmega168, atmega168p, atmega169, atmega165, atmega165p, atmega168, atmega168p, atmega169, atmega169p, atmega32,
atmega169p, atmega32, atmega323, atmega324p, atmega325, atmega325p, atmega323, atmega324p, atmega325, atmega325p, atmega3250, atmega3250p,
atmega328p, atmega329, atmega329p, atmega3250, atmega3250p, atmega3290, atmega328p, atmega329, atmega329p, atmega3290, atmega3290p, atmega406, atmega64,
atmega3290p, atmega406, atmega64, atmega640, atmega644, atmega640, atmega644, atmega644p, atmega645, atmega6450, atmega649, atmega6490,
atmega644p, atmega128, atmega1280, atmega1281, atmega1284p, atmega645, atmega16hva, at90can32, at90can64, at90pwm216, at90pwm316, atmega32c1,
atmega649, atmega6450, atmega6490, atmega16hva, at90can32, at90can64, atmega32m1, atmega32u4, at90usb646, at90usb647, at94k).
at90can128, at90pwm216, at90pwm316, atmega32c1, atmega32m1, atmega32u4,
at90usb646, at90usb647, at90usb1286, at90usb1287, at94k).
Instruction set avr6 is for the enhanced AVR core with 256K program Instruction set avr51 is for the enhanced AVR core with exactly 128K program
memory space (MCU types: atmega2560, atmega2561). memory space (MCU types: atmega128, atmega1280, atmega1281, atmega1284p,
at90can128, at90usb1286, at90usb1287).
Instruction set avr6 is for the enhanced AVR core with a 3-byte PC (MCU types:
atmega2560, atmega2561).
@cindex @code{-mall-opcodes} command line option, AVR @cindex @code{-mall-opcodes} command line option, AVR
@item -mall-opcodes @item -mall-opcodes

View File

@ -1,3 +1,14 @@
2008-08-08 Anatoly Sokolov <aesok@post.ru>
* elf/avr.h (E_AVR_MACH_AVR25, E_AVR_MACH_AVR31,
E_AVR_MACH_AVR35, E_AVR_MACH_AVR51): Define.
(EF_AVR_MACH): Redefine to 0x7F.
* opcode/avr.h (AVR_ISA_TINY3, AVR_ISA_ALL, AVR_ISA_USB162): Remove.
(AVR_ISA_AVR3): Redefine.
(AVR_ISA_AVR1, AVR_ISA_AVR2, AVR_ISA_AVR31, AVR_ISA_AVR35,
AVR_ISA_AVR3_ALL, AVR_ISA_AVR4, AVR_ISA_AVR5, AVR_ISA_AVR51,
AVR_ISA_AVR6): Define.
2008-07-12 Jie Zhang <jie.zhang@analog.com> 2008-07-12 Jie Zhang <jie.zhang@analog.com>
Revert Revert

View File

@ -24,7 +24,7 @@
#include "elf/reloc-macros.h" #include "elf/reloc-macros.h"
/* Processor specific flags for the ELF header e_flags field. */ /* Processor specific flags for the ELF header e_flags field. */
#define EF_AVR_MACH 0xf #define EF_AVR_MACH 0x7F
/* If bit #7 is set, it is assumed that the elf file uses local symbols /* If bit #7 is set, it is assumed that the elf file uses local symbols
as reference for the relocations so that linker relaxation is possible. */ as reference for the relocations so that linker relaxation is possible. */
@ -32,9 +32,13 @@
#define E_AVR_MACH_AVR1 1 #define E_AVR_MACH_AVR1 1
#define E_AVR_MACH_AVR2 2 #define E_AVR_MACH_AVR2 2
#define E_AVR_MACH_AVR25 25
#define E_AVR_MACH_AVR3 3 #define E_AVR_MACH_AVR3 3
#define E_AVR_MACH_AVR31 31
#define E_AVR_MACH_AVR35 35
#define E_AVR_MACH_AVR4 4 #define E_AVR_MACH_AVR4 4
#define E_AVR_MACH_AVR5 5 #define E_AVR_MACH_AVR5 5
#define E_AVR_MACH_AVR51 51
#define E_AVR_MACH_AVR6 6 #define E_AVR_MACH_AVR6 6
/* Relocations. */ /* Relocations. */

View File

@ -32,29 +32,39 @@
#define AVR_ISA_MOVW 0x1000 /* device has MOVW */ #define AVR_ISA_MOVW 0x1000 /* device has MOVW */
#define AVR_ISA_TINY1 (AVR_ISA_1200 | AVR_ISA_LPM) #define AVR_ISA_TINY1 (AVR_ISA_1200 | AVR_ISA_LPM)
#define AVR_ISA_PWMx (AVR_ISA_M8 | AVR_ISA_BRK)
#define AVR_ISA_2xxx (AVR_ISA_TINY1 | AVR_ISA_SRAM) #define AVR_ISA_2xxx (AVR_ISA_TINY1 | AVR_ISA_SRAM)
/* For the attiny26 which is missing LPM Rd,Z+. */ /* For the attiny26 which is missing LPM Rd,Z+. */
#define AVR_ISA_2xxe (AVR_ISA_2xxx | AVR_ISA_LPMX) #define AVR_ISA_2xxe (AVR_ISA_2xxx | AVR_ISA_LPMX)
#define AVR_ISA_RF401 (AVR_ISA_2xxx | AVR_ISA_MOVW | AVR_ISA_LPMX) #define AVR_ISA_RF401 (AVR_ISA_2xxx | AVR_ISA_MOVW | AVR_ISA_LPMX)
#define AVR_ISA_TINY2 (AVR_ISA_2xxx | AVR_ISA_MOVW | AVR_ISA_LPMX | \ #define AVR_ISA_TINY2 (AVR_ISA_2xxx | AVR_ISA_MOVW | AVR_ISA_LPMX | \
AVR_ISA_SPM | AVR_ISA_BRK) AVR_ISA_SPM | AVR_ISA_BRK)
#define AVR_ISA_TINY3 (AVR_ISA_TINY2 | AVR_ISA_MEGA)
#define AVR_ISA_M8 (AVR_ISA_2xxx | AVR_ISA_MUL | AVR_ISA_MOVW | \
AVR_ISA_LPMX | AVR_ISA_SPM)
#define AVR_ISA_M603 (AVR_ISA_2xxx | AVR_ISA_MEGA) #define AVR_ISA_M603 (AVR_ISA_2xxx | AVR_ISA_MEGA)
#define AVR_ISA_M103 (AVR_ISA_M603 | AVR_ISA_ELPM) #define AVR_ISA_M103 (AVR_ISA_M603 | AVR_ISA_ELPM)
#define AVR_ISA_USB162 (AVR_ISA_M603 | AVR_ISA_MOVW | \ #define AVR_ISA_M8 (AVR_ISA_2xxx | AVR_ISA_MUL | AVR_ISA_MOVW | \
AVR_ISA_LPMX | AVR_ISA_SPM) AVR_ISA_LPMX | AVR_ISA_SPM)
#define AVR_ISA_AVR3 (AVR_ISA_M603 | AVR_ISA_MOVW | \ #define AVR_ISA_PWMx (AVR_ISA_M8 | AVR_ISA_BRK)
AVR_ISA_LPMX | AVR_ISA_SPM | AVR_ISA_ELPM)
#define AVR_ISA_M161 (AVR_ISA_M603 | AVR_ISA_MUL | AVR_ISA_MOVW | \ #define AVR_ISA_M161 (AVR_ISA_M603 | AVR_ISA_MUL | AVR_ISA_MOVW | \
AVR_ISA_LPMX | AVR_ISA_SPM) AVR_ISA_LPMX | AVR_ISA_SPM)
#define AVR_ISA_94K (AVR_ISA_M603 | AVR_ISA_MUL | AVR_ISA_MOVW | AVR_ISA_LPMX) #define AVR_ISA_94K (AVR_ISA_M603 | AVR_ISA_MUL | AVR_ISA_MOVW | AVR_ISA_LPMX)
#define AVR_ISA_M323 (AVR_ISA_M161 | AVR_ISA_BRK) #define AVR_ISA_M323 (AVR_ISA_M161 | AVR_ISA_BRK)
#define AVR_ISA_M128 (AVR_ISA_M323 | AVR_ISA_ELPM | AVR_ISA_ELPMX) #define AVR_ISA_M128 (AVR_ISA_M323 | AVR_ISA_ELPM | AVR_ISA_ELPMX)
#define AVR_ISA_ALL 0xFFFF #define AVR_ISA_AVR1 AVR_ISA_TINY1
#define AVR_ISA_AVR2 AVR_ISA_2xxx
#define AVR_ISA_AVR25 AVR_ISA_TINY2
#define AVR_ISA_AVR3 AVR_ISA_M603
#define AVR_ISA_AVR31 AVR_ISA_M103
#define AVR_ISA_AVR35 (AVR_ISA_AVR3 | AVR_ISA_MOVW | \
AVR_ISA_LPMX | AVR_ISA_SPM | AVR_ISA_BRK)
#define AVR_ISA_AVR3_ALL (AVR_ISA_AVR3 | AVR_ISA_AVR31 | AVR_ISA_AVR35)
#define AVR_ISA_AVR4 AVR_ISA_PWMx
#define AVR_ISA_AVR5 AVR_ISA_M323
#define AVR_ISA_AVR51 AVR_ISA_M128
#define AVR_ISA_AVR6 (AVR_ISA_1200 | AVR_ISA_LPM | AVR_ISA_LPMX | \
AVR_ISA_SRAM | AVR_ISA_MEGA | AVR_ISA_MUL | \
AVR_ISA_ELPM | AVR_ISA_ELPMX | AVR_ISA_SPM | \
AVR_ISA_SPM | AVR_ISA_BRK | AVR_ISA_EIND | \
AVR_ISA_MOVW)
#define REGISTER_P(x) ((x) == 'r' \ #define REGISTER_P(x) ((x) == 'r' \
|| (x) == 'd' \ || (x) == 'd' \

View File

@ -1,3 +1,16 @@
2008-08-08 Anatoly Sokolov <aesok@post.ru>
* Makefile.am (ALL_EMULATIONS): Add eavr25.o, eavr31.o, eavr35.o,
and eavr51.o.
Add rules for eavr25.c, eavr31.c, eavr35.c, eavr51.c.
* Makefile.in: Regenerate.
* configure.tgt (avr-*-*, targ_extra_emuls): Add avr25, avr31, avr35
and avr51.
* emulparams/avr25.sh: New file.
* emulparams/avr31.sh: New file.
* emulparams/avr35.sh: New file.
* emulparams/avr51.sh: New file.
2008-08-08 Richard Sandiford <rdsandiford@googlemail.com> 2008-08-08 Richard Sandiford <rdsandiford@googlemail.com>
Daniel Jacobowitz <dan@codesourcery.com> Daniel Jacobowitz <dan@codesourcery.com>

View File

@ -134,9 +134,13 @@ ALL_EMULATIONS = \
earmsymbian.o \ earmsymbian.o \
eavr2.o \ eavr2.o \
eavr1.o \ eavr1.o \
eavr25.o \
eavr3.o \ eavr3.o \
eavr31.o \
eavr35.o \
eavr4.o \ eavr4.o \
eavr5.o \ eavr5.o \
eavr51.o \
eavr6.o \ eavr6.o \
ecoff_i860.o \ ecoff_i860.o \
ecoff_sparc.o \ ecoff_sparc.o \
@ -606,10 +610,22 @@ eavr1.c: $(srcdir)/emulparams/avr1.sh $(srcdir)/emultempl/avrelf.em \
$(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \ $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
${GEN_DEPENDS} ${GEN_DEPENDS}
${GENSCRIPTS} avr1 "$(tdir_avr2)" ${GENSCRIPTS} avr1 "$(tdir_avr2)"
eavr25.c: $(srcdir)/emulparams/avr25.sh $(srcdir)/emultempl/avrelf.em \
$(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
${GEN_DEPENDS}
${GENSCRIPTS} avr25 "$(tdir_avr2)"
eavr3.c: $(srcdir)/emulparams/avr3.sh $(srcdir)/emultempl/avrelf.em \ eavr3.c: $(srcdir)/emulparams/avr3.sh $(srcdir)/emultempl/avrelf.em \
$(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \ $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
${GEN_DEPENDS} ${GEN_DEPENDS}
${GENSCRIPTS} avr3 "$(tdir_avr2)" ${GENSCRIPTS} avr3 "$(tdir_avr2)"
eavr31.c: $(srcdir)/emulparams/avr31.sh $(srcdir)/emultempl/avrelf.em \
$(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
${GEN_DEPENDS}
${GENSCRIPTS} avr31 "$(tdir_avr2)"
eavr35.c: $(srcdir)/emulparams/avr35.sh $(srcdir)/emultempl/avrelf.em \
$(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
${GEN_DEPENDS}
${GENSCRIPTS} avr35 "$(tdir_avr2)"
eavr4.c: $(srcdir)/emulparams/avr4.sh $(srcdir)/emultempl/avrelf.em \ eavr4.c: $(srcdir)/emulparams/avr4.sh $(srcdir)/emultempl/avrelf.em \
$(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \ $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
${GEN_DEPENDS} ${GEN_DEPENDS}
@ -618,6 +634,10 @@ eavr5.c: $(srcdir)/emulparams/avr5.sh $(srcdir)/emultempl/avrelf.em \
$(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \ $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
${GEN_DEPENDS} ${GEN_DEPENDS}
${GENSCRIPTS} avr5 "$(tdir_avr2)" ${GENSCRIPTS} avr5 "$(tdir_avr2)"
eavr51.c: $(srcdir)/emulparams/avr51.sh $(srcdir)/emultempl/avrelf.em \
$(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
${GEN_DEPENDS}
${GENSCRIPTS} avr51 "$(tdir_avr2)"
eavr6.c: $(srcdir)/emulparams/avr6.sh $(srcdir)/emultempl/avrelf.em \ eavr6.c: $(srcdir)/emulparams/avr6.sh $(srcdir)/emultempl/avrelf.em \
$(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \ $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
${GEN_DEPENDS} ${GEN_DEPENDS}

View File

@ -384,9 +384,13 @@ ALL_EMULATIONS = \
earmsymbian.o \ earmsymbian.o \
eavr2.o \ eavr2.o \
eavr1.o \ eavr1.o \
eavr25.o \
eavr3.o \ eavr3.o \
eavr31.o \
eavr35.o \
eavr4.o \ eavr4.o \
eavr5.o \ eavr5.o \
eavr51.o \
eavr6.o \ eavr6.o \
ecoff_i860.o \ ecoff_i860.o \
ecoff_sparc.o \ ecoff_sparc.o \
@ -738,15 +742,15 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
@for dep in $?; do \ @for dep in $?; do \
case '$(am__configure_deps)' in \ case '$(am__configure_deps)' in \
*$$dep*) \ *$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --cygnus '; \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \
cd $(srcdir) && $(AUTOMAKE) --cygnus \ cd $(srcdir) && $(AUTOMAKE) --foreign \
&& exit 0; \ && exit 0; \
exit 1;; \ exit 1;; \
esac; \ esac; \
done; \ done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --cygnus Makefile'; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
cd $(top_srcdir) && \ cd $(top_srcdir) && \
$(AUTOMAKE) --cygnus Makefile $(AUTOMAKE) --foreign Makefile
.PRECIOUS: Makefile .PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \ @case '$?' in \
@ -1435,10 +1439,22 @@ eavr1.c: $(srcdir)/emulparams/avr1.sh $(srcdir)/emultempl/avrelf.em \
$(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \ $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
${GEN_DEPENDS} ${GEN_DEPENDS}
${GENSCRIPTS} avr1 "$(tdir_avr2)" ${GENSCRIPTS} avr1 "$(tdir_avr2)"
eavr25.c: $(srcdir)/emulparams/avr25.sh $(srcdir)/emultempl/avrelf.em \
$(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
${GEN_DEPENDS}
${GENSCRIPTS} avr25 "$(tdir_avr2)"
eavr3.c: $(srcdir)/emulparams/avr3.sh $(srcdir)/emultempl/avrelf.em \ eavr3.c: $(srcdir)/emulparams/avr3.sh $(srcdir)/emultempl/avrelf.em \
$(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \ $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
${GEN_DEPENDS} ${GEN_DEPENDS}
${GENSCRIPTS} avr3 "$(tdir_avr2)" ${GENSCRIPTS} avr3 "$(tdir_avr2)"
eavr31.c: $(srcdir)/emulparams/avr31.sh $(srcdir)/emultempl/avrelf.em \
$(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
${GEN_DEPENDS}
${GENSCRIPTS} avr31 "$(tdir_avr2)"
eavr35.c: $(srcdir)/emulparams/avr35.sh $(srcdir)/emultempl/avrelf.em \
$(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
${GEN_DEPENDS}
${GENSCRIPTS} avr35 "$(tdir_avr2)"
eavr4.c: $(srcdir)/emulparams/avr4.sh $(srcdir)/emultempl/avrelf.em \ eavr4.c: $(srcdir)/emulparams/avr4.sh $(srcdir)/emultempl/avrelf.em \
$(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \ $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
${GEN_DEPENDS} ${GEN_DEPENDS}
@ -1447,6 +1463,10 @@ eavr5.c: $(srcdir)/emulparams/avr5.sh $(srcdir)/emultempl/avrelf.em \
$(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \ $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
${GEN_DEPENDS} ${GEN_DEPENDS}
${GENSCRIPTS} avr5 "$(tdir_avr2)" ${GENSCRIPTS} avr5 "$(tdir_avr2)"
eavr51.c: $(srcdir)/emulparams/avr51.sh $(srcdir)/emultempl/avrelf.em \
$(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
${GEN_DEPENDS}
${GENSCRIPTS} avr51 "$(tdir_avr2)"
eavr6.c: $(srcdir)/emulparams/avr6.sh $(srcdir)/emultempl/avrelf.em \ eavr6.c: $(srcdir)/emulparams/avr6.sh $(srcdir)/emultempl/avrelf.em \
$(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \ $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
${GEN_DEPENDS} ${GEN_DEPENDS}

View File

@ -107,7 +107,7 @@ xscale-*-coff) targ_emul=armcoff ;;
xscale-*-elf) targ_emul=armelf xscale-*-elf) targ_emul=armelf
;; ;;
avr-*-*) targ_emul=avr2 avr-*-*) targ_emul=avr2
targ_extra_emuls="avr1 avr3 avr4 avr5 avr6" targ_extra_emuls="avr1 avr25 avr3 avr31 avr35 avr4 avr5 avr51 avr6"
;; ;;
bfin-*-elf) targ_emul=elf32bfin; bfin-*-elf) targ_emul=elf32bfin;
targ_extra_emuls="elf32bfinfd" targ_extra_emuls="elf32bfinfd"

11
ld/emulparams/avr25.sh Normal file
View File

@ -0,0 +1,11 @@
ARCH=avr:25
MACHINE=
SCRIPT_NAME=avr
OUTPUT_FORMAT="elf32-avr"
MAXPAGESIZE=1
EMBEDDED=yes
TEMPLATE_NAME=elf32
TEXT_LENGTH=8K
DATA_LENGTH=0xffa0
EXTRA_EM_FILE=avrelf

11
ld/emulparams/avr31.sh Normal file
View File

@ -0,0 +1,11 @@
ARCH=avr:31
MACHINE=
SCRIPT_NAME=avr
OUTPUT_FORMAT="elf32-avr"
MAXPAGESIZE=1
EMBEDDED=yes
TEMPLATE_NAME=elf32
TEXT_LENGTH=128K
DATA_LENGTH=0xffa0
EXTRA_EM_FILE=avrelf

11
ld/emulparams/avr35.sh Normal file
View File

@ -0,0 +1,11 @@
ARCH=avr:35
MACHINE=
SCRIPT_NAME=avr
OUTPUT_FORMAT="elf32-avr"
MAXPAGESIZE=1
EMBEDDED=yes
TEMPLATE_NAME=elf32
TEXT_LENGTH=64K
DATA_LENGTH=0xffa0
EXTRA_EM_FILE=avrelf

11
ld/emulparams/avr51.sh Normal file
View File

@ -0,0 +1,11 @@
ARCH=avr:51
MACHINE=
SCRIPT_NAME=avr
OUTPUT_FORMAT="elf32-avr"
MAXPAGESIZE=1
EMBEDDED=yes
TEMPLATE_NAME=elf32
TEXT_LENGTH=128K
DATA_LENGTH=0xffa0
EXTRA_EM_FILE=avrelf