diff options
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/config/tc-sh.c | 8 |
2 files changed, 12 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 7baad0d..c6467ba 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +Wed Apr 5 22:26:32 2000 J"orn Rennecke <amylaar@cygnus.co.uk> + + * config/tc-sh.c (get_operands): There's no third operand if the + first operand is an immediate. + Wed Apr 5 22:07:19 2000 J"orn Rennecke <amylaar@cygnus.co.uk> * config/tc-sh.c (immediate): Delete. diff --git a/gas/config/tc-sh.c b/gas/config/tc-sh.c index d468215..036a1d3 100644 --- a/gas/config/tc-sh.c +++ b/gas/config/tc-sh.c @@ -847,7 +847,13 @@ get_operands (info, args, operand) ptr++; } get_operand (&ptr, operand + 1); - if (info->arg[2]) + /* ??? Hack: psha/pshl have a varying operand number depending on + the type of the first operand. We handle this by having the + three-operand version first and reducing the number of operands + parsed to two if we see that the first operand is an immediate. + This works because no insn with three operands has an immediate + as first operand. */ + if (info->arg[2] && operand[0].type != A_IMM) { if (*ptr == ',') { |