mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-30 09:09:16 +08:00
* config/tc-hppa.c (pa_ip): Add 64 bit condition completers.
This commit is contained in:
@ -1,3 +1,7 @@
|
|||||||
|
Fri Aug 6 09:46:35 1999 Jerry Quinn <jquinn@nortelnetworks.com>
|
||||||
|
|
||||||
|
* config/tc-hppa.c (pa_ip): Add 64 bit condition completers.
|
||||||
|
|
||||||
1999-08-06 Jakub Jelinek <jj@ultra.linux.cz>
|
1999-08-06 Jakub Jelinek <jj@ultra.linux.cz>
|
||||||
|
|
||||||
* config/tc-sparc.h (tc_fix_adjustable): Fix check for PIC local
|
* config/tc-sparc.h (tc_fix_adjustable): Fix check for PIC local
|
||||||
|
@ -1729,13 +1729,24 @@ pa_ip (str)
|
|||||||
INSERT_FIELD_AND_CONTINUE (opcode, cond, 0);
|
INSERT_FIELD_AND_CONTINUE (opcode, cond, 0);
|
||||||
|
|
||||||
/* Handle an add condition. */
|
/* Handle an add condition. */
|
||||||
|
case 'A':
|
||||||
case 'a':
|
case 'a':
|
||||||
cmpltr = 0;
|
cmpltr = 0;
|
||||||
flag = 0;
|
flag = 0;
|
||||||
if (*s == ',')
|
if (*s == ',')
|
||||||
{
|
{
|
||||||
s++;
|
s++;
|
||||||
|
|
||||||
|
/* 64 bit conditions. */
|
||||||
|
if (*args == 'A')
|
||||||
|
{
|
||||||
|
if (*s == '*')
|
||||||
|
s++;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
name = s;
|
name = s;
|
||||||
|
|
||||||
while (*s != ',' && *s != ' ' && *s != '\t')
|
while (*s != ',' && *s != ' ' && *s != '\t')
|
||||||
s += 1;
|
s += 1;
|
||||||
c = *s;
|
c = *s;
|
||||||
@ -1794,7 +1805,8 @@ pa_ip (str)
|
|||||||
cmpltr = 7;
|
cmpltr = 7;
|
||||||
flag = 1;
|
flag = 1;
|
||||||
}
|
}
|
||||||
else
|
/* ",*" is a valid condition. */
|
||||||
|
else if (*args == 'a')
|
||||||
as_bad (_("Invalid Add Condition: %s"), name);
|
as_bad (_("Invalid Add Condition: %s"), name);
|
||||||
*s = c;
|
*s = c;
|
||||||
}
|
}
|
||||||
@ -1811,6 +1823,18 @@ pa_ip (str)
|
|||||||
}
|
}
|
||||||
INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 13);
|
INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 13);
|
||||||
|
|
||||||
|
/* Handle negated add and branch condition. */
|
||||||
|
case 'D':
|
||||||
|
abort ();
|
||||||
|
|
||||||
|
/* Handle wide-mode non-negated add and branch condition. */
|
||||||
|
case 'w':
|
||||||
|
abort ();
|
||||||
|
|
||||||
|
/* Handle wide-mode negated add and branch condition. */
|
||||||
|
case 'W':
|
||||||
|
abort();
|
||||||
|
|
||||||
/* Handle a negated or non-negated add and branch
|
/* Handle a negated or non-negated add and branch
|
||||||
condition. */
|
condition. */
|
||||||
case '@':
|
case '@':
|
||||||
@ -1834,11 +1858,21 @@ pa_ip (str)
|
|||||||
INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 13);
|
INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 13);
|
||||||
|
|
||||||
/* Handle branch on bit conditions. */
|
/* Handle branch on bit conditions. */
|
||||||
|
case 'B':
|
||||||
case 'b':
|
case 'b':
|
||||||
cmpltr = 0;
|
cmpltr = 0;
|
||||||
if (*s == ',')
|
if (*s == ',')
|
||||||
{
|
{
|
||||||
s++;
|
s++;
|
||||||
|
|
||||||
|
if (*args == 'B')
|
||||||
|
{
|
||||||
|
if (*s == '*')
|
||||||
|
s++;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (strncmp (s, "<", 1) == 0)
|
if (strncmp (s, "<", 1) == 0)
|
||||||
{
|
{
|
||||||
cmpltr = 0;
|
cmpltr = 0;
|
||||||
@ -1855,13 +1889,24 @@ pa_ip (str)
|
|||||||
INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 15);
|
INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 15);
|
||||||
|
|
||||||
/* Handle a compare/subtract condition. */
|
/* Handle a compare/subtract condition. */
|
||||||
|
case 'S':
|
||||||
case 's':
|
case 's':
|
||||||
cmpltr = 0;
|
cmpltr = 0;
|
||||||
flag = 0;
|
flag = 0;
|
||||||
if (*s == ',')
|
if (*s == ',')
|
||||||
{
|
{
|
||||||
s++;
|
s++;
|
||||||
|
|
||||||
|
/* 64 bit conditions. */
|
||||||
|
if (*args == 'S')
|
||||||
|
{
|
||||||
|
if (*s == '*')
|
||||||
|
s++;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
name = s;
|
name = s;
|
||||||
|
|
||||||
while (*s != ',' && *s != ' ' && *s != '\t')
|
while (*s != ',' && *s != ' ' && *s != '\t')
|
||||||
s += 1;
|
s += 1;
|
||||||
c = *s;
|
c = *s;
|
||||||
@ -1920,7 +1965,8 @@ pa_ip (str)
|
|||||||
cmpltr = 7;
|
cmpltr = 7;
|
||||||
flag = 1;
|
flag = 1;
|
||||||
}
|
}
|
||||||
else
|
/* ",*" is a valid condition. */
|
||||||
|
else if (*args != 'S')
|
||||||
as_bad (_("Invalid Compare/Subtract Condition: %s"),
|
as_bad (_("Invalid Compare/Subtract Condition: %s"),
|
||||||
name);
|
name);
|
||||||
*s = c;
|
*s = c;
|
||||||
@ -1937,6 +1983,22 @@ pa_ip (str)
|
|||||||
cmpltr = 0;
|
cmpltr = 0;
|
||||||
}
|
}
|
||||||
INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 13);
|
INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 13);
|
||||||
|
|
||||||
|
/* Handle a negated compare condition. */
|
||||||
|
case 'T':
|
||||||
|
abort ();
|
||||||
|
|
||||||
|
/* Handle a 64 bit non-negated compare condition. */
|
||||||
|
case 'r':
|
||||||
|
abort ();
|
||||||
|
|
||||||
|
/* Handle a 64 bit negated compare condition. */
|
||||||
|
case 'R':
|
||||||
|
abort ();
|
||||||
|
|
||||||
|
/* Handle a 64 bit cmpib condition. */
|
||||||
|
case 'Q':
|
||||||
|
abort ();
|
||||||
|
|
||||||
/* Handle a negated or non-negated compare/subtract
|
/* Handle a negated or non-negated compare/subtract
|
||||||
condition. */
|
condition. */
|
||||||
@ -1962,13 +2024,24 @@ pa_ip (str)
|
|||||||
INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 13);
|
INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 13);
|
||||||
|
|
||||||
/* Handle a logical instruction condition. */
|
/* Handle a logical instruction condition. */
|
||||||
|
case 'L':
|
||||||
case 'l':
|
case 'l':
|
||||||
cmpltr = 0;
|
cmpltr = 0;
|
||||||
flag = 0;
|
flag = 0;
|
||||||
if (*s == ',')
|
if (*s == ',')
|
||||||
{
|
{
|
||||||
s++;
|
s++;
|
||||||
|
|
||||||
|
/* 64 bit conditions. */
|
||||||
|
if (*args == 'L')
|
||||||
|
{
|
||||||
|
if (*s == '*')
|
||||||
|
s++;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
name = s;
|
name = s;
|
||||||
|
|
||||||
while (*s != ',' && *s != ' ' && *s != '\t')
|
while (*s != ',' && *s != ' ' && *s != '\t')
|
||||||
s += 1;
|
s += 1;
|
||||||
c = *s;
|
c = *s;
|
||||||
@ -2008,7 +2081,8 @@ pa_ip (str)
|
|||||||
cmpltr = 7;
|
cmpltr = 7;
|
||||||
flag = 1;
|
flag = 1;
|
||||||
}
|
}
|
||||||
else
|
/* ",*" is a valid condition. */
|
||||||
|
else if (*args != 'L')
|
||||||
as_bad (_("Invalid Logical Instruction Condition."));
|
as_bad (_("Invalid Logical Instruction Condition."));
|
||||||
*s = c;
|
*s = c;
|
||||||
}
|
}
|
||||||
@ -2016,6 +2090,7 @@ pa_ip (str)
|
|||||||
INSERT_FIELD_AND_CONTINUE (opcode, flag, 12);
|
INSERT_FIELD_AND_CONTINUE (opcode, flag, 12);
|
||||||
|
|
||||||
/* Handle a shift/extract/deposit condition. */
|
/* Handle a shift/extract/deposit condition. */
|
||||||
|
case 'X':
|
||||||
case 'x':
|
case 'x':
|
||||||
case 'y':
|
case 'y':
|
||||||
cmpltr = 0;
|
cmpltr = 0;
|
||||||
@ -2023,7 +2098,16 @@ pa_ip (str)
|
|||||||
{
|
{
|
||||||
save_s = s++;
|
save_s = s++;
|
||||||
|
|
||||||
|
/* 64 bit conditions. */
|
||||||
|
if (*args == 'X')
|
||||||
|
{
|
||||||
|
if (*s == '*')
|
||||||
|
s++;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
name = s;
|
name = s;
|
||||||
|
|
||||||
while (*s != ',' && *s != ' ' && *s != '\t')
|
while (*s != ',' && *s != ' ' && *s != '\t')
|
||||||
s += 1;
|
s += 1;
|
||||||
c = *s;
|
c = *s;
|
||||||
@ -2050,20 +2134,31 @@ pa_ip (str)
|
|||||||
s = save_s;
|
s = save_s;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else
|
/* ",*" is a valid condition. */
|
||||||
|
else if (*args != 'X')
|
||||||
as_bad (_("Invalid Shift/Extract/Deposit Condition."));
|
as_bad (_("Invalid Shift/Extract/Deposit Condition."));
|
||||||
*s = c;
|
*s = c;
|
||||||
}
|
}
|
||||||
INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 13);
|
INSERT_FIELD_AND_CONTINUE (opcode, cmpltr, 13);
|
||||||
|
|
||||||
/* Handle a unit instruction condition. */
|
/* Handle a unit instruction condition. */
|
||||||
case 'u': /* unit */
|
case 'U':
|
||||||
|
case 'u':
|
||||||
cmpltr = 0;
|
cmpltr = 0;
|
||||||
flag = 0;
|
flag = 0;
|
||||||
if (*s == ',')
|
if (*s == ',')
|
||||||
{
|
{
|
||||||
s++;
|
s++;
|
||||||
|
|
||||||
|
/* 64 bit conditions. */
|
||||||
|
if (*args == 'U')
|
||||||
|
{
|
||||||
|
if (*s == '*')
|
||||||
|
s++;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (strncasecmp (s, "sbz", 3) == 0)
|
if (strncasecmp (s, "sbz", 3) == 0)
|
||||||
{
|
{
|
||||||
cmpltr = 2;
|
cmpltr = 2;
|
||||||
@ -2125,7 +2220,8 @@ pa_ip (str)
|
|||||||
flag = 1;
|
flag = 1;
|
||||||
s += 3;
|
s += 3;
|
||||||
}
|
}
|
||||||
else
|
/* ",*" is a valid condition. */
|
||||||
|
else if (*args != 'U')
|
||||||
as_bad (_("Invalid Unit Instruction Condition."));
|
as_bad (_("Invalid Unit Instruction Condition."));
|
||||||
}
|
}
|
||||||
opcode |= cmpltr << 13;
|
opcode |= cmpltr << 13;
|
||||||
|
Reference in New Issue
Block a user