2003-12-19 Alexandre Oliva <aoliva@redhat.com>

* frv.opc (parse_ulo16, parse_uhi16, parse_d12): Fix some
cut&paste errors in shifting/truncating numerical operands.
2003-08-08  Alexandre Oliva  <aoliva@redhat.com>
* frv.opc (parse_ulo16): Parse gotofflo and gotofffuncdesclo.
(parse_uslo16): Likewise.
(parse_uhi16): Parse gotoffhi and gotofffuncdeschi.
(parse_d12): Parse gotoff12 and gotofffuncdesc12.
(parse_s12): Likewise.
2003-08-04  Alexandre Oliva  <aoliva@redhat.com>
* frv.opc (parse_ulo16): Parse gotlo and gotfuncdesclo.
(parse_uslo16): Likewise.
(parse_uhi16): Parse gothi and gotfuncdeschi.
(parse_d12): Parse got12 and gotfuncdesc12.
(parse_s12): Likewise.
This commit is contained in:
Alexandre Oliva 2004-01-06 19:18:37 +00:00
parent 79987b2f58
commit d4e4dc140d
2 changed files with 293 additions and 1 deletions

View File

@ -1,3 +1,21 @@
2004-01-06 Alexandre Oliva <aoliva@redhat.com>
2003-12-19 Alexandre Oliva <aoliva@redhat.com>
* frv.opc (parse_ulo16, parse_uhi16, parse_d12): Fix some
cut&paste errors in shifting/truncating numerical operands.
2003-08-08 Alexandre Oliva <aoliva@redhat.com>
* frv.opc (parse_ulo16): Parse gotofflo and gotofffuncdesclo.
(parse_uslo16): Likewise.
(parse_uhi16): Parse gotoffhi and gotofffuncdeschi.
(parse_d12): Parse gotoff12 and gotofffuncdesc12.
(parse_s12): Likewise.
2003-08-04 Alexandre Oliva <aoliva@redhat.com>
* frv.opc (parse_ulo16): Parse gotlo and gotfuncdesclo.
(parse_uslo16): Likewise.
(parse_uhi16): Parse gothi and gotfuncdeschi.
(parse_d12): Parse got12 and gotfuncdesc12.
(parse_s12): Likewise.
2003-10-10 Dave Brolley <brolley@redhat.com>
* frv.cpu (dnpmop): New p-macro.

View File

@ -897,7 +897,66 @@ parse_ulo16 (cd, strp, opindex, valuep)
++*strp;
if (errmsg == NULL
&& result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
value >>= 16;
value &= 0xffff;
*valuep = value;
return errmsg;
}
else if (strncasecmp (*strp + 1, "gotlo(", 6) == 0)
{
*strp += 7;
errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GOTLO,
&result_type, &value);
if (**strp != ')')
return "missing ')'";
++*strp;
if (errmsg == NULL
&& result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
value &= 0xffff;
*valuep = value;
return errmsg;
}
else if (strncasecmp (*strp + 1, "gotfuncdesclo(", 14) == 0)
{
*strp += 15;
errmsg = cgen_parse_address (cd, strp, opindex,
BFD_RELOC_FRV_FUNCDESC_GOTLO,
&result_type, &value);
if (**strp != ')')
return "missing ')'";
++*strp;
if (errmsg == NULL
&& result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
value &= 0xffff;
*valuep = value;
return errmsg;
}
else if (strncasecmp (*strp + 1, "gotofflo(", 9) == 0)
{
*strp += 10;
errmsg = cgen_parse_address (cd, strp, opindex,
BFD_RELOC_FRV_GOTOFFLO,
&result_type, &value);
if (**strp != ')')
return "missing ')'";
++*strp;
if (errmsg == NULL
&& result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
value &= 0xffff;
*valuep = value;
return errmsg;
}
else if (strncasecmp (*strp + 1, "gotofffuncdesclo(", 17) == 0)
{
*strp += 18;
errmsg = cgen_parse_address (cd, strp, opindex,
BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
&result_type, &value);
if (**strp != ')')
return "missing ')'";
++*strp;
if (errmsg == NULL
&& result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
value &= 0xffff;
*valuep = value;
return errmsg;
}
@ -946,6 +1005,65 @@ parse_uslo16 (cd, strp, opindex, valuep)
*valuep = value;
return errmsg;
}
else if (strncasecmp (*strp + 1, "gotlo(", 6) == 0)
{
*strp += 7;
errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GOTLO,
&result_type, &value);
if (**strp != ')')
return "missing ')'";
++*strp;
if (errmsg == NULL
&& result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
value &= 0xffff;
*valuep = value;
return errmsg;
}
else if (strncasecmp (*strp + 1, "gotfuncdesclo(", 14) == 0)
{
*strp += 15;
errmsg = cgen_parse_address (cd, strp, opindex,
BFD_RELOC_FRV_FUNCDESC_GOTLO,
&result_type, &value);
if (**strp != ')')
return "missing ')'";
++*strp;
if (errmsg == NULL
&& result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
value &= 0xffff;
*valuep = value;
return errmsg;
}
else if (strncasecmp (*strp + 1, "gotofflo(", 9) == 0)
{
*strp += 10;
errmsg = cgen_parse_address (cd, strp, opindex,
BFD_RELOC_FRV_GOTOFFLO,
&result_type, &value);
if (**strp != ')')
return "missing ')'";
++*strp;
if (errmsg == NULL
&& result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
value &= 0xffff;
*valuep = value;
return errmsg;
}
else if (strncasecmp (*strp + 1, "gotofffuncdesclo(", 17) == 0)
{
*strp += 18;
errmsg = cgen_parse_address (cd, strp, opindex,
BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
&result_type, &value);
if (**strp != ')')
return "missing ')'";
++*strp;
if (errmsg == NULL
&& result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
value &= 0xffff;
*valuep = value;
return errmsg;
}
}
return cgen_parse_unsigned_integer (cd, strp, opindex, valuep);
}
@ -991,6 +1109,65 @@ parse_uhi16 (cd, strp, opindex, valuep)
*valuep = value;
return errmsg;
}
else if (strncasecmp (*strp + 1, "gothi(", 6) == 0)
{
*strp += 7;
errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GOTHI,
&result_type, &value);
if (**strp != ')')
return "missing ')'";
++*strp;
if (errmsg == NULL
&& result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
value >>= 16;
*valuep = value;
return errmsg;
}
else if (strncasecmp (*strp + 1, "gotfuncdeschi(", 14) == 0)
{
*strp += 15;
errmsg = cgen_parse_address (cd, strp, opindex,
BFD_RELOC_FRV_FUNCDESC_GOTHI,
&result_type, &value);
if (**strp != ')')
return "missing ')'";
++*strp;
if (errmsg == NULL
&& result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
value >>= 16;
*valuep = value;
return errmsg;
}
else if (strncasecmp (*strp + 1, "gotoffhi(", 9) == 0)
{
*strp += 10;
errmsg = cgen_parse_address (cd, strp, opindex,
BFD_RELOC_FRV_GOTOFFHI,
&result_type, &value);
if (**strp != ')')
return "missing ')'";
++*strp;
if (errmsg == NULL
&& result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
value >>= 16;
*valuep = value;
return errmsg;
}
else if (strncasecmp (*strp + 1, "gotofffuncdeschi(", 17) == 0)
{
*strp += 18;
errmsg = cgen_parse_address (cd, strp, opindex,
BFD_RELOC_FRV_FUNCDESC_GOTOFFHI,
&result_type, &value);
if (**strp != ')')
return "missing ')'";
++*strp;
if (errmsg == NULL
&& result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
value >>= 16;
*valuep = value;
return errmsg;
}
}
return cgen_parse_unsigned_integer (cd, strp, opindex, valuep);
}
@ -1073,6 +1250,53 @@ parse_d12 (cd, strp, opindex, valuep)
*valuep = value;
return errmsg;
}
else if (strncasecmp (*strp + 1, "got12(", 6) == 0)
{
*strp += 7;
errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GOT12,
&result_type, &value);
if (**strp != ')')
return "missing ')'";
++*strp;
*valuep = value;
return errmsg;
}
else if (strncasecmp (*strp + 1, "gotfuncdesc12(", 14) == 0)
{
*strp += 15;
errmsg = cgen_parse_address (cd, strp, opindex,
BFD_RELOC_FRV_FUNCDESC_GOT12,
&result_type, &value);
if (**strp != ')')
return "missing ')'";
++*strp;
*valuep = value;
return errmsg;
}
else if (strncasecmp (*strp + 1, "gotoff12(", 9) == 0)
{
*strp += 10;
errmsg = cgen_parse_address (cd, strp, opindex,
BFD_RELOC_FRV_GOTOFF12,
&result_type, &value);
if (**strp != ')')
return "missing ')'";
++*strp;
*valuep = value;
return errmsg;
}
else if (strncasecmp (*strp + 1, "gotofffuncdesc12(", 17) == 0)
{
*strp += 18;
errmsg = cgen_parse_address (cd, strp, opindex,
BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
&result_type, &value);
if (**strp != ')')
return "missing ')'";
++*strp;
*valuep = value;
return errmsg;
}
}
return cgen_parse_signed_integer (cd, strp, opindex, valuep);
}
@ -1101,6 +1325,56 @@ parse_s12 (cd, strp, opindex, valuep)
*valuep = value;
return errmsg;
}
else if ((**strp == '#' || **strp == '%')
&& strncasecmp (*strp + 1, "got12(", 6) == 0)
{
*strp += 7;
errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GOT12,
&result_type, &value);
if (**strp != ')')
return "missing ')'";
++*strp;
*valuep = value;
return errmsg;
}
else if ((**strp == '#' || **strp == '%')
&& strncasecmp (*strp + 1, "gotfuncdesc12(", 14) == 0)
{
*strp += 15;
errmsg = cgen_parse_address (cd, strp, opindex,
BFD_RELOC_FRV_FUNCDESC_GOT12,
&result_type, &value);
if (**strp != ')')
return "missing ')'";
++*strp;
*valuep = value;
return errmsg;
}
else if ((**strp == '#' || **strp == '%')
&& strncasecmp (*strp + 1, "gotoff12(", 9) == 0)
{
*strp += 10;
errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GOTOFF12,
&result_type, &value);
if (**strp != ')')
return "missing ')'";
++*strp;
*valuep = value;
return errmsg;
}
else if ((**strp == '#' || **strp == '%')
&& strncasecmp (*strp + 1, "gotofffuncdesc12(", 17) == 0)
{
*strp += 18;
errmsg = cgen_parse_address (cd, strp, opindex,
BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
&result_type, &value);
if (**strp != ')')
return "missing ')'";
++*strp;
*valuep = value;
return errmsg;
}
else
{
if (**strp == '#')