aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>1999-09-07 19:30:14 +0000
committerJeff Law <law@redhat.com>1999-09-07 19:30:14 +0000
commite7c1f43c29d3e1d681c2dbc7aacf33d78af2b929 (patch)
tree63cdec16e34836a18bec5fbd2231065e2c64da7f /gas
parentf45812f66accb8b4a6d0f770ad185e6614240552 (diff)
downloadfsf-binutils-gdb-e7c1f43c29d3e1d681c2dbc7aacf33d78af2b929.zip
fsf-binutils-gdb-e7c1f43c29d3e1d681c2dbc7aacf33d78af2b929.tar.gz
fsf-binutils-gdb-e7c1f43c29d3e1d681c2dbc7aacf33d78af2b929.tar.bz2
* config/tc-hppa.c (pa_ip): Put strict register checks before
call to pa_parse_number.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-hppa.c38
2 files changed, 24 insertions, 19 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 23a343b..47c6c10 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+Tue Sep 7 13:28:59 1999 Jeffrey A Law (law@cygnus.com)
+
+ * config/tc-hppa.c (pa_ip): Put strict register checks before
+ call to pa_parse_number.
+
1999-09-06 Ian Lance Taylor <ian@zembu.com>
* config/obj-coff.c: Add ATTRIBUTE_UNUSED as needed for
diff --git a/gas/config/tc-hppa.c b/gas/config/tc-hppa.c
index 00c5e4b..5f938c5 100644
--- a/gas/config/tc-hppa.c
+++ b/gas/config/tc-hppa.c
@@ -1576,10 +1576,10 @@ pa_ip (str)
/* Handle a 5 bit register or control register field at 10. */
case 'b':
case '^':
- num = pa_parse_number (&s, 0);
/* This should be more strict. Small steps. */
if (strict && *s != '%')
break;
+ num = pa_parse_number (&s, 0);
CHECK_FIELD (num, 31, 0, 0);
INSERT_FIELD_AND_CONTINUE (opcode, num, 21);
@@ -1604,28 +1604,28 @@ pa_ip (str)
/* Handle a 5 bit register field at 15. */
case 'x':
- num = pa_parse_number (&s, 0);
/* This should be more strict. Small steps. */
if (strict && *s != '%')
break;
+ num = pa_parse_number (&s, 0);
CHECK_FIELD (num, 31, 0, 0);
INSERT_FIELD_AND_CONTINUE (opcode, num, 16);
/* Handle a 5 bit register field at 31. */
case 't':
- num = pa_parse_number (&s, 0);
/* This should be more strict. Small steps. */
if (strict && *s != '%')
break;
+ num = pa_parse_number (&s, 0);
CHECK_FIELD (num, 31, 0, 0);
INSERT_FIELD_AND_CONTINUE (opcode, num, 0);
/* Handle a 5 bit register field at 10 and 15. */
case 'a':
- num = pa_parse_number (&s, 0);
/* This should be more strict. Small steps. */
if (strict && *s != '%')
break;
+ num = pa_parse_number (&s, 0);
CHECK_FIELD (num, 31, 0, 0);
opcode |= num << 16;
INSERT_FIELD_AND_CONTINUE (opcode, num, 21);
@@ -1692,19 +1692,19 @@ pa_ip (str)
/* Handle a 2 bit space identifier at 17. */
case 's':
- num = pa_parse_number (&s, 0);
/* This should be more strict. Small steps. */
if (strict && *s != '%')
break;
+ num = pa_parse_number (&s, 0);
CHECK_FIELD (num, 3, 0, 1);
INSERT_FIELD_AND_CONTINUE (opcode, num, 14);
/* Handle a 3 bit space identifier at 18. */
case 'S':
- num = pa_parse_number (&s, 0);
/* This should be more strict. Small steps. */
if (strict && *s != '%')
break;
+ num = pa_parse_number (&s, 0);
CHECK_FIELD (num, 7, 0, 1);
dis_assemble_3 (num, &num);
INSERT_FIELD_AND_CONTINUE (opcode, num, 13);
@@ -3067,10 +3067,10 @@ pa_ip (str)
{
/* Float target register. */
case 't':
- num = pa_parse_number (&s, 0);
/* This should be more strict. Small steps. */
if (strict && *s != '%')
break;
+ num = pa_parse_number (&s, 0);
CHECK_FIELD (num, 31, 0, 0);
INSERT_FIELD_AND_CONTINUE (opcode, num, 0);
@@ -3079,10 +3079,10 @@ pa_ip (str)
{
struct pa_11_fp_reg_struct result;
- pa_parse_number (&s, &result);
/* This should be more strict. Small steps. */
if (strict && *s != '%')
break;
+ pa_parse_number (&s, &result);
CHECK_FIELD (result.number_part, 31, 0, 0);
opcode |= result.number_part;
@@ -3101,10 +3101,10 @@ pa_ip (str)
{
struct pa_11_fp_reg_struct result;
- pa_parse_number (&s, &result);
/* This should be more strict. Small steps. */
if (strict && *s != '%')
break;
+ pa_parse_number (&s, &result);
CHECK_FIELD (result.number_part, 31, 0, 0);
opcode |= result.number_part << 21;
if (need_pa11_opcode (&the_insn, &result))
@@ -3120,10 +3120,10 @@ pa_ip (str)
{
struct pa_11_fp_reg_struct result;
- pa_parse_number (&s, &result);
/* This should be more strict. Small steps. */
if (strict && *s != '%')
break;
+ pa_parse_number (&s, &result);
CHECK_FIELD (result.number_part, 31, 0, 0);
opcode |= result.number_part << 21;
opcode |= (result.l_r_select & 1) << 7;
@@ -3135,10 +3135,10 @@ pa_ip (str)
{
struct pa_11_fp_reg_struct result;
- pa_parse_number (&s, &result);
/* This should be more strict. Small steps. */
if (strict && *s != '%')
break;
+ pa_parse_number (&s, &result);
CHECK_FIELD (result.number_part, 31, 0, 0);
opcode |= (result.number_part & 0x1f) << 16;
if (need_pa11_opcode (&the_insn, &result))
@@ -3154,10 +3154,10 @@ pa_ip (str)
{
struct pa_11_fp_reg_struct result;
- pa_parse_number (&s, &result);
/* This should be more strict. Small steps. */
if (strict && *s != '%')
break;
+ pa_parse_number (&s, &result);
CHECK_FIELD (result.number_part, 31, 0, 0);
opcode |= (result.number_part & 0x1f) << 16;
opcode |= (result.l_r_select & 1) << 12;
@@ -3170,10 +3170,10 @@ pa_ip (str)
struct pa_11_fp_reg_struct result;
int regnum;
- pa_parse_number (&s, &result);
/* This should be more strict. Small steps. */
if (strict && *s != '%')
break;
+ pa_parse_number (&s, &result);
CHECK_FIELD (result.number_part, 31, 0, 0);
opcode |= (result.number_part & 0x1c) << 11;
opcode |= (result.number_part & 0x3) << 9;
@@ -3186,10 +3186,10 @@ pa_ip (str)
{
struct pa_11_fp_reg_struct result;
- pa_parse_number (&s, &result);
/* This should be more strict. Small steps. */
if (strict && *s != '%')
break;
+ pa_parse_number (&s, &result);
CHECK_FIELD (result.number_part, 31, 0, 0);
if (the_insn.fpof1 == SGL)
{
@@ -3210,10 +3210,10 @@ pa_ip (str)
{
struct pa_11_fp_reg_struct result;
- pa_parse_number (&s, &result);
/* This should be more strict. Small steps. */
if (strict && *s != '%')
break;
+ pa_parse_number (&s, &result);
CHECK_FIELD (result.number_part, 31, 0, 0);
if (the_insn.fpof1 == SGL)
{
@@ -3233,10 +3233,10 @@ pa_ip (str)
{
struct pa_11_fp_reg_struct result;
- pa_parse_number (&s, &result);
/* This should be more strict. Small steps. */
if (strict && *s != '%')
break;
+ pa_parse_number (&s, &result);
CHECK_FIELD (result.number_part, 31, 0, 0);
if (the_insn.fpof1 == SGL)
{
@@ -3256,10 +3256,10 @@ pa_ip (str)
{
struct pa_11_fp_reg_struct result;
- pa_parse_number (&s, &result);
/* This should be more strict. Small steps. */
if (strict && *s != '%')
break;
+ pa_parse_number (&s, &result);
CHECK_FIELD (result.number_part, 31, 0, 0);
if (the_insn.fpof1 == SGL)
{
@@ -3279,10 +3279,10 @@ pa_ip (str)
{
struct pa_11_fp_reg_struct result;
- pa_parse_number (&s, &result);
/* This should be more strict. Small steps. */
if (strict && *s != '%')
break;
+ pa_parse_number (&s, &result);
CHECK_FIELD (result.number_part, 31, 0, 0);
if (the_insn.fpof1 == SGL)
{
@@ -3307,10 +3307,10 @@ pa_ip (str)
{
struct pa_11_fp_reg_struct result;
- pa_parse_number (&s, &result);
/* This should be more strict. Small steps. */
if (strict && *s != '%')
break;
+ pa_parse_number (&s, &result);
CHECK_FIELD (result.number_part, 31, 0, 0);
opcode |= (result.number_part & 0x1f) << 16;
if (need_pa11_opcode (&the_insn, &result))