From 52ccafd0351e92cb9afa9c96de6fecdad94bb4e4 Mon Sep 17 00:00:00 2001 From: Joern Rennecke Date: Wed, 5 Apr 2000 21:43:26 +0000 Subject: opcodes: * sh-opc.c (sh_table): Use A_DISP_PC / PCRELIMM_8BY2 for ldre & ldrs. stc GBR,@- is available for arch_sh1_up. Group parallel processing insn with identical mnemonics together. Make three-operand psha / pshl come first. gas: * config/tc-sh.c (get_operands): There's no third operand if the first operand is an immediate. --- gas/ChangeLog | 5 +++++ gas/config/tc-sh.c | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) (limited to 'gas') 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 + + * 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 * 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 == ',') { -- cgit v1.1