aboutsummaryrefslogtreecommitdiff
path: root/gas/config
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>1998-03-22 20:17:34 +0000
committerJeff Law <law@redhat.com>1998-03-22 20:17:34 +0000
commit0bc0e337fc28fa55ab921c6a9207519a6f611ed0 (patch)
tree01d9a49ba0062401d234ae75f20993d88cad8170 /gas/config
parent721232f36c0c8c874a2564cfbc9517c4934d483a (diff)
downloadgdb-0bc0e337fc28fa55ab921c6a9207519a6f611ed0.zip
gdb-0bc0e337fc28fa55ab921c6a9207519a6f611ed0.tar.gz
gdb-0bc0e337fc28fa55ab921c6a9207519a6f611ed0.tar.bz2
* config/tc-mips.c (append_insn): Handle BFD_RELOC_MIPS16_S3.
(mips_ip): Handle 'O' operand. (md_apply_fix): Handle BFD_RELOC_MIPS16_S3.
Diffstat (limited to 'gas/config')
-rw-r--r--gas/config/tc-mips.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
index e5801c6..e2e763c 100644
--- a/gas/config/tc-mips.c
+++ b/gas/config/tc-mips.c
@@ -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");