* config/tc-mips.c (append_insn): Handle BFD_RELOC_MIPS16_S3.
authorJeff Law <law@redhat.com>
Sun, 22 Mar 1998 20:17:34 +0000 (20:17 +0000)
committerJeff Law <law@redhat.com>
Sun, 22 Mar 1998 20:17:34 +0000 (20:17 +0000)
        (mips_ip): Handle 'O' operand.
        (md_apply_fix): Handle BFD_RELOC_MIPS16_S3.

gas/ChangeLog
gas/config/tc-mips.c

index c076ad2..89c92ce 100644 (file)
@@ -1,3 +1,11 @@
+start-sanitize-r5900
+Sun Mar 22 13:21:01 1998  Jeffrey A Law  (law@cygnus.com)
+
+        * config/tc-mips.c (append_insn): Handle BFD_RELOC_MIPS16_S3.
+        (mips_ip): Handle 'O' operand.
+        (md_apply_fix): Handle BFD_RELOC_MIPS16_S3.
+
+end-sanitize-r5900
 Fri Mar 20 19:15:44 1998  Ian Lance Taylor  <ian@cygnus.com>
 
        * aclocal.m4, configure: Rebuild with libtool 1.2.
index e5801c6..e2e763c 100644 (file)
@@ -1794,6 +1794,12 @@ append_insn (place, ip, address_expr, reloc_type, unmatched_hi)
                 | ((address_expr->X_add_number & 0x3fffc) >> 2));
              break;
 
+           /* start-sanitize-r5900
+           case BFD_RELOC_MIPS15_S3:
+             ip->insn_opcode |= ((imm_expr.X_add_number & 0x7fff) >> 3) << 6;
+             break;
+           /* end-sanitize-r5900
+
            case BFD_RELOC_16_PCREL_S2:
              goto need_reloc;
 
@@ -7309,6 +7315,12 @@ mips_ip (str, ip)
              else
                insn_error = "operand `ACC' expected";
              continue;
+
+           case 'O':
+             my_getSmallExpression (&imm_expr, s);
+             imm_reloc = BFD_RELOC_MIPS15_S3;
+             s = expr_end;
+             continue;
            /* end-sanitize-r5900 */
 
            case 'k':           /* cache code */
@@ -9786,6 +9798,9 @@ md_apply_fix (fixP, valueP)
     case BFD_RELOC_MIPS_CALL_HI16:
     case BFD_RELOC_MIPS_CALL_LO16:
     case BFD_RELOC_MIPS16_GPREL:
+    /* start-sanitize-r5900 */
+    case BFD_RELOC_MIPS15_S3:
+    /* end-sanitize-r5900 */
       if (fixP->fx_pcrel)
        as_bad_where (fixP->fx_file, fixP->fx_line,
                      "Invalid PC relative reloc");