* config/tc-mips.c (md_begin): Set BFD architecture and machine
authorIan Lance Taylor <ian@airs.com>
Fri, 24 Sep 1993 17:47:04 +0000 (17:47 +0000)
committerIan Lance Taylor <ian@airs.com>
Fri, 24 Sep 1993 17:47:04 +0000 (17:47 +0000)
based on MIPS ISA level.

gas/config/tc-mips.c

index 30ef6c4..31899ea 100644 (file)
@@ -286,6 +286,7 @@ static bfd_reloc_code_real_type offset_reloc;
 void
 md_begin ()
 {
+  boolean ok;
   register const char *retval = NULL;
   register unsigned int i = 0;
 
@@ -304,6 +305,21 @@ md_begin ()
        mips_isa = 1;
     }
 
+  switch (mips_isa)
+    {
+    case 1:
+      ok = bfd_set_arch_mach (stdoutput, bfd_arch_mips, 3000);
+      break;
+    case 2:
+      ok = bfd_set_arch_mach (stdoutput, bfd_arch_mips, 6000);
+      break;
+    case 3:
+      ok = bfd_set_arch_mach (stdoutput, bfd_arch_mips, 4000);
+      break;
+    }
+  if (! ok)
+    as_warn ("Could not set architecture and machine");
+
   if ((op_hash = hash_new ()) == NULL)
     {
       as_fatal ("Virtual memory exhausted");
@@ -726,6 +742,9 @@ append_insn (ip, address_expr, reloc_type)
                  & (INSN_UNCOND_BRANCH_DELAY
                     | INSN_COND_BRANCH_DELAY
                     | INSN_COND_BRANCH_LIKELY))
+             /* We can not swap with a trap instruction, since it
+                might change the PC.  */
+             || (prev_insn.insn_mo->pinfo & INSN_TRAP)
              /* If the branch reads a register that the previous
                 instruction sets, we can not swap.  */
              || ((prev_insn.insn_mo->pinfo & INSN_WRITE_GPR_T)