From adde6300e0ceb74fbe8df6721fd948063c2080cd Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 27 Mar 2000 08:39:14 +0000 Subject: ATMEL AVR microcontroller support. --- include/ChangeLog | 4 ++++ include/dis-asm.h | 1 + include/elf/ChangeLog | 5 +++++ include/elf/avr.h | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++ include/elf/common.h | 4 ++++ 5 files changed, 72 insertions(+) create mode 100644 include/elf/avr.h (limited to 'include') diff --git a/include/ChangeLog b/include/ChangeLog index 0fa1c22..cb15edc 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,7 @@ +2000-03-27 Denis Chertykov + + * dis-asm.h (print_insn_avr): Declare. + 2000-03-14 Bernd Schmidt * hashtab.h (htab_trav): Modify type so that first arg is of type diff --git a/include/dis-asm.h b/include/dis-asm.h index 874c3b6..6e6c04b 100644 --- a/include/dis-asm.h +++ b/include/dis-asm.h @@ -194,6 +194,7 @@ extern int print_insn_tic30 PARAMS ((bfd_vma, disassemble_info*)); extern int print_insn_vax PARAMS ((bfd_vma, disassemble_info*)); extern int print_insn_tic80 PARAMS ((bfd_vma, disassemble_info*)); extern int print_insn_pj PARAMS ((bfd_vma, disassemble_info*)); +extern int print_insn_avr PARAMS ((bfd_vma, disassemble_info*)); extern void print_arm_disassembler_options PARAMS ((FILE *)); extern void parse_arm_disassembler_option PARAMS ((char *)); diff --git a/include/elf/ChangeLog b/include/elf/ChangeLog index 5a683e1..e1f68c3 100644 --- a/include/elf/ChangeLog +++ b/include/elf/ChangeLog @@ -1,3 +1,8 @@ +2000-03-27 Denis Chertykov + + * avr.h: New file. AVR ELF support for BFD. + * common.h: Add AVR magic number. + 2000-03-10 Geoffrey Keating * mips.h: Add R_MIPS_GNU_REL_HI16, R_MIPS_GNU_REL_LO16, diff --git a/include/elf/avr.h b/include/elf/avr.h new file mode 100644 index 0000000..1527455 --- /dev/null +++ b/include/elf/avr.h @@ -0,0 +1,58 @@ +/* AVR ELF support for BFD. + Copyright (C) 1999, 2000 Free Software Foundation, Inc. + Contributed by Denis Chertykov + +This file is part of BFD, the Binary File Descriptor library. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software Foundation, Inc., +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef _ELF_AVR_H +#define _ELF_AVR_H + +#include "elf/reloc-macros.h" + +/* Processor specific flags for the ELF header e_flags field. */ +#define EF_AVR_MACH 0xf + +#define E_AVR_MACH_AVR1 1 +#define E_AVR_MACH_AVR2 2 +#define E_AVR_MACH_AVR3 3 +#define E_AVR_MACH_AVR4 4 + +/* Relocations. */ +START_RELOC_NUMBERS (elf_avr_reloc_type) + RELOC_NUMBER (R_AVR_NONE, 0) + RELOC_NUMBER (R_AVR_32, 1) + RELOC_NUMBER (R_AVR_7_PCREL, 2) + RELOC_NUMBER (R_AVR_13_PCREL, 3) + RELOC_NUMBER (R_AVR_16, 4) + RELOC_NUMBER (R_AVR_16_PM, 5) + RELOC_NUMBER (R_AVR_LO8_LDI, 6) + RELOC_NUMBER (R_AVR_HI8_LDI, 7) + RELOC_NUMBER (R_AVR_HH8_LDI, 8) + RELOC_NUMBER (R_AVR_LO8_LDI_NEG, 9) + RELOC_NUMBER (R_AVR_HI8_LDI_NEG, 10) + RELOC_NUMBER (R_AVR_HH8_LDI_NEG, 11) + RELOC_NUMBER (R_AVR_LO8_LDI_PM, 12) + RELOC_NUMBER (R_AVR_HI8_LDI_PM, 13) + RELOC_NUMBER (R_AVR_HH8_LDI_PM, 14) + RELOC_NUMBER (R_AVR_LO8_LDI_PM_NEG, 15) + RELOC_NUMBER (R_AVR_HI8_LDI_PM_NEG, 16) + RELOC_NUMBER (R_AVR_HH8_LDI_PM_NEG, 17) + RELOC_NUMBER (R_AVR_CALL, 18) + EMPTY_RELOC (R_AVR_max) +END_RELOC_NUMBERS + +#endif /* _ELF_AVR_H */ diff --git a/include/elf/common.h b/include/elf/common.h index 28804e0..fe8c216 100644 --- a/include/elf/common.h +++ b/include/elf/common.h @@ -189,6 +189,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* FR30 magic number - no EABI available. */ #define EM_CYGNUS_FR30 0x3330 +/* AVR magic number + Written in the absense of an ABI. */ +#define EM_AVR 0x1057 + /* See the above comment before you add a new EM_* value here. */ /* Values for e_version */ -- cgit v1.1