aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog7
-rw-r--r--bfd/archures.c1
-rw-r--r--bfd/bfd-in2.h1
-rw-r--r--bfd/cpu-mep.c3
-rw-r--r--bfd/elf32-mep.c1
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/config/tc-mep.c31
-rw-r--r--gas/config/tc-mep.h2
-rw-r--r--include/elf/ChangeLog4
-rw-r--r--include/elf/mep.h2
-rw-r--r--ld/ChangeLog4
-rwxr-xr-xld/emulparams/elf32mep.sh2
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 <dj@redhat.com>
+
+ * 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 <hongjiu.lu@intel.com>
* 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 <dj@redhat.com>
+
+ * 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 <dj@redhat.com>
* 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=<name> 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 <dj@redhat.com>
+
+ * mep.h (EF_MEP_CPU_C5): New.
+
2009-04-01 H.J. Lu <hongjiu.lu@intel.com>
* 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 <dj@redhat.com>
+
+ * emulparams/elf32mep.sh: Change default endian to little.
+
2009-04-07 Nick Clifton <nickc@redhat.com>
* 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