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

* frv-asm.c (parse_ulo16, parse_uhi16, parse_d12): Fix some
cut&paste errors in shifting/truncating numerical operands.
2003-08-04  Alexandre Oliva  <aoliva@redhat.com>
* frv-asm.c (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-asm.c (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:43 +00:00
parent d4e4dc140d
commit ba2d3f07f2
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-asm.c (parse_ulo16, parse_uhi16, parse_d12): Fix some
cut&paste errors in shifting/truncating numerical operands.
2003-08-04 Alexandre Oliva <aoliva@redhat.com>
* frv-asm.c (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-asm.c (parse_ulo16): Parse gotlo and gotfuncdesclo.
(parse_uslo16): Likewise.
(parse_uhi16): Parse gothi and gotfuncdeschi.
(parse_d12): Parse got12 and gotfuncdesc12.
(parse_s12): Likewise.
2004-01-02 Albert Bartoszko <albar@nt.kegel.com.pl>
* msp430-dis.c (msp430_doubleoperand): Check for an 'add'

View file

@ -110,7 +110,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;
}
@ -159,6 +218,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);
}
@ -204,6 +322,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);
}
@ -286,6 +463,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);
}
@ -314,6 +538,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 == '#')