diff options
author | Nick Clifton <nickc@redhat.com> | 2012-11-09 21:36:19 +0400 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2012-11-09 21:36:19 +0400 |
commit | 3211d6c91f4ee6336aba2b2afcdc87c452e24e84 (patch) | |
tree | 68e94ffca28ae4e017a583b8a2d8bd325bc453d5 /include/elf/v850.h | |
parent | 9fcf11a46cb0b55a667653ecc134ac365b697eba (diff) |
2012-11-09 Nick Clifton <nickc@redhat.com>
* Makefile.am (ALL_MACHINES): Add cpu-v850-rh850.lo.
(ALL_MACHINES_CFILES): Add cpu-v850-rh850.c.
* archures.c (bfd_arch_info): Add bfd_v850_rh850_arch.
* config.bfd: Likewise.
* configure.in: Add bfd_elf32_v850_rh850_vec.
* cpu-v850.c: Update printed description.
* cpu-v850_rh850.c: New file.
* elf32-v850.c (v850_elf_check_relocs): Add support for RH850 ABI
relocs.
(v850_elf_perform_relocation): Likewise.
(v850_elf_final_link_relocate): Likewise.
(v850_elf_relocate_section): Likewise.
(v850_elf_relax_section): Likewise.
(v800_elf_howto_table): New.
(v850_elf_object_p): Add support for RH850 ABI values.
(v850_elf_final_write_processing): Likewise.
(v850_elf_merge_private_bfd_data): Likewise.
(v850_elf_print_private_bfd_data): Likewise.
(v800_elf_reloc_map): New.
(v800_elf_reloc_type_lookup): New.
(v800_elf_reloc_name_lookup): New.
(v800_elf_info_to_howto): New.
(bfd_elf32_v850_rh850_vec): New.
(bfd_arch_v850_rh850): New.
* targets.c (_bfd_targets): Add bfd_elf32_v850_rh850_vec.
* Makefile.in: Regenerate.
* bfd-in2.h: Regenerate.
* configure: Regenerate.
* readelf.c (get_machine_flags): Add support for E_FLAG_RX_ABI.
(guess_is_rela): Add EM_V800.
(dump_relocations): Likewise.
(get_machine_name): Update EM_V800.
(get_machine_flags): Add support for RH850 ABI flags.
(is_32bit_abs_reloc): Add support for RH850 ABI reloc.
* config/tc-v850.c (v850_target_arch): New.
(v850_target_format): New.
(set_machine): Use v850_target_arch.
(md_begin): Likewise.
(md_show_usage): Document new switches.
(md_parse_option): Add -mgcc-abi, -mrh850-abi, -m8byte-align and
-m4byte-align.
* config/tc-v850.c (TARGET_ARCH) Use v850_target_arch.
(TARGET_FORMAT): Use v850_target_format.
* doc/c-v850.texi: Document new options.
* v850.h: Add RH850 ABI values.
* Makefile.am: (ALL_EMULATION_SOURCES): Add ev850_rh850.c.
* Makefile.in: Regenerate.
* configure.tgt (v850*-*-*): Make v850_rh850 the default
emulation. Add vanilla v850 as an extra emulation.
* emulparams/v850_rh850.sh: New file.
* scripttempl/v850_rh850.sc: New file.
* configure.in: Add bfd_v850_rh850_arch.
* configure: Regenerate.
* disassemble.c (disassembler): Likewise.
Diffstat (limited to 'include/elf/v850.h')
-rw-r--r-- | include/elf/v850.h | 132 |
1 files changed, 131 insertions, 1 deletions
diff --git a/include/elf/v850.h b/include/elf/v850.h index 2a0e03ef8..873825e0f 100644 --- a/include/elf/v850.h +++ b/include/elf/v850.h @@ -1,5 +1,5 @@ /* V850 ELF support for BFD. - Copyright 1997, 1998, 2000, 2002, 2003, 2004, 2007, 2008, 2010 + Copyright 1997, 1998, 2000, 2002, 2003, 2004, 2007, 2008, 2010, 2012 Free Software Foundation, Inc. Created by Michael Meissner, Cygnus Support <meissner@cygnus.com> @@ -148,4 +148,134 @@ END_RELOC_NUMBERS (R_V850_max) /* This section must be in the zero data area (pointed to by R0). */ #define SHF_V850_R0REL 0x40000000 +/* Alternative versions of the above definitions, as specified by the RH850 ABI. */ + +#define EF_RH850_ABI 0xF0000000 + +#define EF_V800_850E3 0x00100000 + +#define EF_RH850_FPU_DOUBLE 0x00000001 /* sizeof(double) == 8. */ +#define EF_RH850_FPU_SINGLE 0x00000002 /* sizeof(double) == 4. */ +#define EF_RH850_SIMD 0x00000004 +#define EF_RH850_CACHE 0x00000008 +#define EF_RH850_MMU 0x00000010 +#define EF_RH850_REGMODE22 0x00000020 /* Registers r15-r24 (inclusive) are not used. */ +#define EF_RH850_REGMODE32 0x00000040 +#define EF_RH850_DATA_ALIGN8 0x00000080 /* 8-byte alignment supported. */ +#define EF_RH850_GP_FIX 0x00000100 /* r4 is fixed. */ +#define EF_RH850_GP_NOFIX 0x00000200 /* r4 is callee save. */ +#define EF_RH850_EP_FIX 0x00000400 /* r30 is fixed. */ +#define EF_RH850_EP_NOFIX 0x00000800 /* r30 is callee save. */ +#define EF_RH850_TP_FIX 0x00001000 /* r5 is fixed. */ +#define EF_RH850_TP_NOFIX 0x00002000 /* r5 is callee save. */ +#define EF_RH850_REG2_RESERVE 0x00004000 /* r2 is fixed. */ +#define EF_RH850_REG2_NORESERVE 0x00008000 /* r2 is callee saved. */ + +#define SHT_RNESAS_IOP SHT_LOUSER /* Used by Renesas linker. */ + +#define SHF_RENESAS_ABS 0x80000000 /* Absolute section. */ +#define SHF_GHS_ABS 0x00000400 /* Use unknown. */ + +#define STT_RENESAS_ENTRY 14 /* Set for functions called at reset time. */ + +START_RELOC_NUMBERS (v800_reloc_type) + + RELOC_NUMBER (R_V800_NONE, 0x00) + RELOC_NUMBER (R_V810_NONE, 0x30) + RELOC_NUMBER (R_V810_BYTE, 0x31) + RELOC_NUMBER (R_V810_HWORD, 0x32) + RELOC_NUMBER (R_V810_WORD, 0x33) + RELOC_NUMBER (R_V810_WLO, 0x34) + RELOC_NUMBER (R_V810_WHI, 0x35) + RELOC_NUMBER (R_V810_WHI1, 0x36) + RELOC_NUMBER (R_V810_GPBYTE, 0x37) + RELOC_NUMBER (R_V810_GPHWORD, 0x38) + RELOC_NUMBER (R_V810_GPWORD, 0x39) + RELOC_NUMBER (R_V810_GPWLO, 0x3a) + RELOC_NUMBER (R_V810_GPWHI, 0x3b) + RELOC_NUMBER (R_V810_GPWHI1, 0x3c) + RELOC_NUMBER (R_V850_HWLO, 0x3d) + FAKE_RELOC (R_V810_reserved1, 0x3e) + RELOC_NUMBER (R_V850_EP7BIT, 0x3f) + RELOC_NUMBER (R_V850_EPHBYTE, 0x40) + RELOC_NUMBER (R_V850_EPWBYTE, 0x41) + RELOC_NUMBER (R_V850_REGHWLO, 0x42) + FAKE_RELOC (R_V810_reserved2, 0x43) + RELOC_NUMBER (R_V850_GPHWLO, 0x44) + FAKE_RELOC (R_V810_reserved3, 0x45) + RELOC_NUMBER (R_V850_PCR22, 0x46) + RELOC_NUMBER (R_V850_BLO, 0x47) + RELOC_NUMBER (R_V850_EP4BIT, 0x48) + RELOC_NUMBER (R_V850_EP5BIT, 0x49) + RELOC_NUMBER (R_V850_REGBLO, 0x4a) + RELOC_NUMBER (R_V850_GPBLO, 0x4b) + RELOC_NUMBER (R_V810_WLO_1, 0x4c) + RELOC_NUMBER (R_V810_GPWLO_1, 0x4d) + RELOC_NUMBER (R_V850_BLO_1, 0x4e) + RELOC_NUMBER (R_V850_HWLO_1, 0x4f) + FAKE_RELOC (R_V810_reserved4, 0x50) + RELOC_NUMBER (R_V850_GPBLO_1, 0x51) + RELOC_NUMBER (R_V850_GPHWLO_1, 0x52) + FAKE_RELOC (R_V810_reserved5, 0x53) + RELOC_NUMBER (R_V850_EPBLO, 0x54) + RELOC_NUMBER (R_V850_EPHWLO, 0x55) + FAKE_RELOC (R_V810_reserved6, 0x56) + RELOC_NUMBER (R_V850_EPWLO_N, 0x57) + RELOC_NUMBER (R_V850_PC32, 0x58) + RELOC_NUMBER (R_V850_W23BIT, 0x59) + RELOC_NUMBER (R_V850_GPW23BIT, 0x5a) + RELOC_NUMBER (R_V850_EPW23BIT, 0x5b) + RELOC_NUMBER (R_V850_B23BIT, 0x5c) + RELOC_NUMBER (R_V850_GPB23BIT, 0x5d) + RELOC_NUMBER (R_V850_EPB23BIT, 0x5e) + RELOC_NUMBER (R_V850_PC16U, 0x5f) + RELOC_NUMBER (R_V850_PC17, 0x60) + RELOC_NUMBER (R_V850_DW8, 0x61) + RELOC_NUMBER (R_V850_GPDW8, 0x62) + RELOC_NUMBER (R_V850_EPDW8, 0x63) + RELOC_NUMBER (R_V850_PC9, 0x64) + RELOC_NUMBER (R_V810_REGBYTE, 0x65) + RELOC_NUMBER (R_V810_REGHWORD, 0x66) + RELOC_NUMBER (R_V810_REGWORD, 0x67) + RELOC_NUMBER (R_V810_REGWLO, 0x68) + RELOC_NUMBER (R_V810_REGWHI, 0x69) + RELOC_NUMBER (R_V810_REGWHI1, 0x6a) + RELOC_NUMBER (R_V850_REGW23BIT, 0x6b) + RELOC_NUMBER (R_V850_REGB23BIT, 0x6c) + RELOC_NUMBER (R_V850_REGDW8, 0x6d) + RELOC_NUMBER (R_V810_EPBYTE, 0x6e) + RELOC_NUMBER (R_V810_EPHWORD, 0x6f) + RELOC_NUMBER (R_V810_EPWORD, 0x70) + RELOC_NUMBER (R_V850_WLO23, 0x71) + RELOC_NUMBER (R_V850_WORD_E, 0x72) + RELOC_NUMBER (R_V850_REGWORD_E, 0x73) + RELOC_NUMBER (R_V850_WORD, 0x74) + RELOC_NUMBER (R_V850_GPWORD, 0x75) + RELOC_NUMBER (R_V850_REGWORD, 0x76) + RELOC_NUMBER (R_V850_EPWORD, 0x77) + RELOC_NUMBER (R_V810_TPBYTE, 0x78) + RELOC_NUMBER (R_V810_TPHWORD, 0x79) + RELOC_NUMBER (R_V810_TPWORD, 0x7a) + RELOC_NUMBER (R_V810_TPWLO, 0x7b) + RELOC_NUMBER (R_V810_TPWHI, 0x7c) + RELOC_NUMBER (R_V810_TPWHI1, 0x7d) + RELOC_NUMBER (R_V850_TPHWLO, 0x7e) + RELOC_NUMBER (R_V850_TPBLO, 0x7f) + RELOC_NUMBER (R_V810_TPWLO_1, 0x80) + RELOC_NUMBER (R_V850_TPBLO_1, 0x81) + RELOC_NUMBER (R_V850_TPHWLO_1, 0x82) + RELOC_NUMBER (R_V850_TP23BIT, 0x83) + RELOC_NUMBER (R_V850_TPW23BIT, 0x84) + RELOC_NUMBER (R_V850_TPDW8, 0x85) + +/* These are defined by the RH850 ABI, but not used. */ + RELOC_NUMBER (R_V810_ABS32, 0xa0) + RELOC_NUMBER (R_V850_SYM, 0xe0) + RELOC_NUMBER (R_V850_OPadd, 0xe1) + RELOC_NUMBER (R_V850_OPsub, 0xe2) + RELOC_NUMBER (R_V850_OPsctsize, 0xe3) + RELOC_NUMBER (R_V850_OPscttop, 0xe4) + +END_RELOC_NUMBERS (R_V800_max) + #endif /* _ELF_V850_H */ |