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.
This commit is contained in:
		| @@ -3,6 +3,8 @@ | ||||
| 	* rx.h (EF_RX_CPU_RX): Add comment. | ||||
| 	(E_FLAG_RX_ABI): Define. | ||||
|  | ||||
| 	* v850.h: Add RH850 ABI values. | ||||
|  | ||||
| 2012-11-08  Maciej W. Rozycki  <macro@codesourcery.com> | ||||
|  | ||||
| 	* mips.h (EF_MIPS_32BITMODE): Move next to lower-order bits. | ||||
|   | ||||
| @@ -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 */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user