From 4d28413b409102b3fc5e7ed828e4014895143d4e Mon Sep 17 00:00:00 2001 From: DJ Delorie Date: Wed, 8 Apr 2009 02:24:23 +0000 Subject: [PATCH] [include/elf] * mep.h (EF_MEP_CPU_C5): New. [bfd] * archures.c: Add bfd_mach_mep_c5. * bfd-in2.h: Likewise. * cpu-mep.c: Add bfd_c5_arch. * elf32-mep.c: Support it. [gas] * config/tc-mep.c: Add UCI/DSP instruction support. Add C5 support. (md_show_usage): Change default endian to little. * config/tc-mep.h (TARGET_BYTES_BIG_ENDIAN): Change default to little. [ld] * emulparams/elf32mep.sh: Change default endian to little. --- bfd/ChangeLog | 7 +++++++ bfd/archures.c | 1 + bfd/bfd-in2.h | 1 + bfd/cpu-mep.c | 3 ++- bfd/elf32-mep.c | 1 + gas/ChangeLog | 6 ++++++ gas/config/tc-mep.c | 31 ++++++++++++++++++++++++++++--- gas/config/tc-mep.h | 2 +- include/elf/ChangeLog | 4 ++++ include/elf/mep.h | 2 ++ ld/ChangeLog | 4 ++++ ld/emulparams/elf32mep.sh | 2 +- 12 files changed, 58 insertions(+), 6 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index ec60410..b0a62b4 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2009-04-07 DJ Delorie + + * archures.c: Add bfd_mach_mep_c5. + * bfd-in2.h: Likewise. + * cpu-mep.c: Add bfd_c5_arch. + * elf32-mep.c: Support it. + 2009-04-07 H.J. Lu * elflink.c (_bfd_elf_section_already_linked): Add `\n' for diff --git a/bfd/archures.c b/bfd/archures.c index fa03d81..b0bf140 100644 --- a/bfd/archures.c +++ b/bfd/archures.c @@ -335,6 +335,7 @@ DESCRIPTION . bfd_arch_mep, .#define bfd_mach_mep 1 .#define bfd_mach_mep_h1 0x6831 +.#define bfd_mach_mep_c5 0x6335 . bfd_arch_ia64, {* HP/Intel ia64 *} .#define bfd_mach_ia64_elf64 64 .#define bfd_mach_ia64_elf32 32 diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 646be2c..6629ed7 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -1972,6 +1972,7 @@ enum bfd_architecture bfd_arch_mep, #define bfd_mach_mep 1 #define bfd_mach_mep_h1 0x6831 +#define bfd_mach_mep_c5 0x6335 bfd_arch_ia64, /* HP/Intel ia64 */ #define bfd_mach_ia64_elf64 64 #define bfd_mach_ia64_elf32 32 diff --git a/bfd/cpu-mep.c b/bfd/cpu-mep.c index a161764..dfe251d 100644 --- a/bfd/cpu-mep.c +++ b/bfd/cpu-mep.c @@ -24,5 +24,6 @@ #define MA(x, n, def, y) { 32, 32, 8, bfd_arch_mep, x, "mep", n, \ 2, def, bfd_default_compatible, bfd_default_scan, y } -static const bfd_arch_info_type bfd_h1_arch = MA (bfd_mach_mep_h1, "h1", FALSE, NULL); +static const bfd_arch_info_type bfd_c5_arch = MA (bfd_mach_mep_c5, "c5", FALSE, NULL); +static const bfd_arch_info_type bfd_h1_arch = MA (bfd_mach_mep_h1, "h1", FALSE, & bfd_c5_arch); const bfd_arch_info_type bfd_mep_arch = MA (bfd_mach_mep, "mep", TRUE, & bfd_h1_arch); diff --git a/bfd/elf32-mep.c b/bfd/elf32-mep.c index 4e96a78..b1e4a12 100644 --- a/bfd/elf32-mep.c +++ b/bfd/elf32-mep.c @@ -731,6 +731,7 @@ elf32_mep_machine (bfd * abfd) case EF_MEP_CPU_C2: return bfd_mach_mep; case EF_MEP_CPU_C3: return bfd_mach_mep; case EF_MEP_CPU_C4: return bfd_mach_mep; + case EF_MEP_CPU_C5: return bfd_mach_mep_c5; case EF_MEP_CPU_H1: return bfd_mach_mep_h1; } diff --git a/gas/ChangeLog b/gas/ChangeLog index b809890..e42f0a2 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2009-04-07 DJ Delorie + + * config/tc-mep.c: Add UCI/DSP instruction support. Add C5 support. + (md_show_usage): Change default endian to little. + * config/tc-mep.h (TARGET_BYTES_BIG_ENDIAN): Change default to little. + 2009-04-06 DJ Delorie * tc-h8300.c (do_a_fix_imm): Pass the insn, force relocs for MOVA diff --git a/gas/config/tc-mep.c b/gas/config/tc-mep.c index 5646b3f..eb43492 100644 --- a/gas/config/tc-mep.c +++ b/gas/config/tc-mep.c @@ -136,7 +136,11 @@ static struct mep_hi_fixup * mep_hi_fixup_list; #define OPTION_NOREPEAT (OPTION_MD_BASE + 26) #define OPTION_DEBUG (OPTION_MD_BASE + 27) #define OPTION_NODEBUG (OPTION_MD_BASE + 28) -#define OPTION_LIBRARY (OPTION_MD_BASE + 29) +#define OPTION_UCI (OPTION_MD_BASE + 29) +#define OPTION_NOUCI (OPTION_MD_BASE + 30) +#define OPTION_DSP (OPTION_MD_BASE + 31) +#define OPTION_NODSP (OPTION_MD_BASE + 32) +#define OPTION_LIBRARY (OPTION_MD_BASE + 33) struct option md_longopts[] = { { "EB", no_argument, NULL, OPTION_EB}, @@ -163,6 +167,10 @@ struct option md_longopts[] = { { "mcop32", no_argument, NULL, OPTION_COP32}, { "mdebug", no_argument, NULL, OPTION_DEBUG}, { "mno-debug", no_argument, NULL, OPTION_NODEBUG}, + { "muci", no_argument, NULL, OPTION_UCI}, + { "mno-uci", no_argument, NULL, OPTION_NOUCI}, + { "mdsp", no_argument, NULL, OPTION_DSP}, + { "mno-dsp", no_argument, NULL, OPTION_NODSP}, { "mlibrary", no_argument, NULL, OPTION_LIBRARY}, { NULL, 0, NULL, 0 } }; size_t md_longopts_size = sizeof (md_longopts); @@ -283,6 +291,22 @@ md_parse_option (int c, char *arg ATTRIBUTE_UNUSED) optbits &= ~(1 << CGEN_INSN_OPTIONAL_DEBUG_INSN); optbitset |= 1 << CGEN_INSN_OPTIONAL_DEBUG_INSN; break; + case OPTION_UCI: + optbits |= 1 << CGEN_INSN_OPTIONAL_UCI_INSN; + optbitset |= 1 << CGEN_INSN_OPTIONAL_UCI_INSN; + break; + case OPTION_NOUCI: + optbits &= ~(1 << CGEN_INSN_OPTIONAL_UCI_INSN); + optbitset |= 1 << CGEN_INSN_OPTIONAL_UCI_INSN; + break; + case OPTION_DSP: + optbits |= 1 << CGEN_INSN_OPTIONAL_DSP_INSN; + optbitset |= 1 << CGEN_INSN_OPTIONAL_DSP_INSN; + break; + case OPTION_NODSP: + optbits &= ~(1 << CGEN_INSN_OPTIONAL_DSP_INSN); + optbitset |= 1 << CGEN_INSN_OPTIONAL_DSP_INSN; + break; case OPTION_LIBRARY: library_flag = EF_MEP_LIBRARY; break; @@ -299,8 +323,8 @@ void md_show_usage (FILE *stream) { fprintf (stream, _("MeP specific command line options:\n\ - -EB assemble for a big endian system (default)\n\ - -EL assemble for a little endian system\n\ + -EB assemble for a big endian system\n\ + -EL assemble for a little endian system (default)\n\ -mconfig= specify a chip configuration to use\n\ -maverage -mno-average -mmult -mno-mult -mdiv -mno-div\n\ -mbitops -mno-bitops -mleadz -mno-leadz -mabsdiff -mno-absdiff\n\ @@ -394,6 +418,7 @@ mep_machine (void) case EF_MEP_CPU_C2: return bfd_mach_mep; case EF_MEP_CPU_C3: return bfd_mach_mep; case EF_MEP_CPU_C4: return bfd_mach_mep; + case EF_MEP_CPU_C5: return bfd_mach_mep_c5; case EF_MEP_CPU_H1: return bfd_mach_mep_h1; } diff --git a/gas/config/tc-mep.h b/gas/config/tc-mep.h index 505f53a..0861909 100644 --- a/gas/config/tc-mep.h +++ b/gas/config/tc-mep.h @@ -34,7 +34,7 @@ #define TARGET_FORMAT (target_big_endian ? "elf32-mep" : "elf32-mep-little") /* This is the default. */ -#define TARGET_BYTES_BIG_ENDIAN 1 +#define TARGET_BYTES_BIG_ENDIAN 0 /* Permit temporary numeric labels. */ #define LOCAL_LABELS_FB 1 diff --git a/include/elf/ChangeLog b/include/elf/ChangeLog index beb40b6..f6e73fd 100644 --- a/include/elf/ChangeLog +++ b/include/elf/ChangeLog @@ -1,3 +1,7 @@ +2009-04-07 DJ Delorie + + * mep.h (EF_MEP_CPU_C5): New. + 2009-04-01 H.J. Lu * common.h (EM_INTEL178): Removed. diff --git a/include/elf/mep.h b/include/elf/mep.h index 51eb8d0..4565516 100644 --- a/include/elf/mep.h +++ b/include/elf/mep.h @@ -73,6 +73,8 @@ END_RELOC_NUMBERS(R_MEP_max) #define EF_MEP_CPU_C2 0x01000000 /* MEP c2 */ #define EF_MEP_CPU_C3 0x02000000 /* MEP c3 */ #define EF_MEP_CPU_C4 0x04000000 /* MEP c4 */ +/* 5..7 are reseved */ +#define EF_MEP_CPU_C5 0x08000000 /* MEP c5 */ #define EF_MEP_CPU_H1 0x10000000 /* MEP h1 */ #define EF_MEP_LIBRARY 0x00000100 /* Built as a library */ diff --git a/ld/ChangeLog b/ld/ChangeLog index c0f3b61..3161307 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,7 @@ +2009-04-07 DJ Delorie + + * emulparams/elf32mep.sh: Change default endian to little. + 2009-04-07 Nick Clifton * ld.texinfo (Output Section Address): Note that specifying an diff --git a/ld/emulparams/elf32mep.sh b/ld/emulparams/elf32mep.sh index 886ca47..f72fe2a 100755 --- a/ld/emulparams/elf32mep.sh +++ b/ld/emulparams/elf32mep.sh @@ -1,6 +1,6 @@ MACHINE= SCRIPT_NAME=mep -OUTPUT_FORMAT="elf32-mep" +OUTPUT_FORMAT="elf32-mep-little" TEXT_START_ADDR=0x1000 ARCH=mep MAXPAGESIZE=256 -- 2.7.4