mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-22 19:09:31 +08:00
gas/
* config/tc-arm.c (opcode_tag): Add OT_cinfix3_deprecated. (opcode_lookup): Issue a warning for opcode with OT_cinfix3_deprecated. Otherwise treat OT_cinfix3_deprecated identical to OT_cinfix3. (TxC3w, TC3w, tC3w): New. (insns): Use tC3w and TC3w for comparison instructions with 's' suffix. gas/testsuite * gas/arm/armv1.d (error-output): New. * gas/arm/armv1.l: New. * gas/arm/thumb32.d (error-output): New. * gas/arm/thumb32.l: New.
This commit is contained in:
@ -1,3 +1,13 @@
|
|||||||
|
2006-05-04 Kazu Hirata <kazu@codesourcery.com>
|
||||||
|
|
||||||
|
* config/tc-arm.c (opcode_tag): Add OT_cinfix3_deprecated.
|
||||||
|
(opcode_lookup): Issue a warning for opcode with
|
||||||
|
OT_cinfix3_deprecated. Otherwise treat OT_cinfix3_deprecated
|
||||||
|
identical to OT_cinfix3.
|
||||||
|
(TxC3w, TC3w, tC3w): New.
|
||||||
|
(insns): Use tC3w and TC3w for comparison instructions with
|
||||||
|
's' suffix.
|
||||||
|
|
||||||
2006-05-04 Alan Modra <amodra@bigpond.net.au>
|
2006-05-04 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
* subsegs.h (struct frchain): Delete frch_seg.
|
* subsegs.h (struct frchain): Delete frch_seg.
|
||||||
|
@ -12111,6 +12111,8 @@ enum opcode_tag
|
|||||||
OT_cinfix3, /* Instruction takes a conditional infix,
|
OT_cinfix3, /* Instruction takes a conditional infix,
|
||||||
beginning at character index 3. (In
|
beginning at character index 3. (In
|
||||||
unified mode, it becomes a suffix.) */
|
unified mode, it becomes a suffix.) */
|
||||||
|
OT_cinfix3_deprecated, /* The same as OT_cinfix3. This is used for
|
||||||
|
tsts, cmps, cmns, and teqs. */
|
||||||
OT_cinfix3_legacy, /* Legacy instruction takes a conditional infix at
|
OT_cinfix3_legacy, /* Legacy instruction takes a conditional infix at
|
||||||
character index 3, even in unified mode. Used for
|
character index 3, even in unified mode. Used for
|
||||||
legacy instructions where suffix and infix forms
|
legacy instructions where suffix and infix forms
|
||||||
@ -12267,6 +12269,7 @@ opcode_lookup (char **str)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case OT_cinfix3:
|
case OT_cinfix3:
|
||||||
|
case OT_cinfix3_deprecated:
|
||||||
case OT_odd_infix_unc:
|
case OT_odd_infix_unc:
|
||||||
if (!unified_syntax)
|
if (!unified_syntax)
|
||||||
return 0;
|
return 0;
|
||||||
@ -12313,11 +12316,16 @@ opcode_lookup (char **str)
|
|||||||
memmove (affix + 2, affix, (end - affix) - 2);
|
memmove (affix + 2, affix, (end - affix) - 2);
|
||||||
memcpy (affix, save, 2);
|
memcpy (affix, save, 2);
|
||||||
|
|
||||||
if (opcode && (opcode->tag == OT_cinfix3 || opcode->tag == OT_csuf_or_in3
|
if (opcode
|
||||||
|
&& (opcode->tag == OT_cinfix3
|
||||||
|
|| opcode->tag == OT_cinfix3_deprecated
|
||||||
|
|| opcode->tag == OT_csuf_or_in3
|
||||||
|| opcode->tag == OT_cinfix3_legacy))
|
|| opcode->tag == OT_cinfix3_legacy))
|
||||||
{
|
{
|
||||||
/* step CM */
|
/* step CM */
|
||||||
if (unified_syntax && opcode->tag == OT_cinfix3)
|
if (unified_syntax
|
||||||
|
&& (opcode->tag == OT_cinfix3
|
||||||
|
|| opcode->tag == OT_cinfix3_deprecated))
|
||||||
as_warn (_("conditional infixes are deprecated in unified syntax"));
|
as_warn (_("conditional infixes are deprecated in unified syntax"));
|
||||||
|
|
||||||
inst.cond = cond->value;
|
inst.cond = cond->value;
|
||||||
@ -12356,6 +12364,9 @@ md_assemble (char *str)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (opcode->tag == OT_cinfix3_deprecated)
|
||||||
|
as_warn (_("s suffix on comparison instruction is deprecated"));
|
||||||
|
|
||||||
if (thumb_mode)
|
if (thumb_mode)
|
||||||
{
|
{
|
||||||
arm_feature_set variant;
|
arm_feature_set variant;
|
||||||
@ -12857,10 +12868,17 @@ static struct asm_barrier_opt barrier_opt_names[] =
|
|||||||
#define TxC3(mnem, op, top, nops, ops, ae, te) \
|
#define TxC3(mnem, op, top, nops, ops, ae, te) \
|
||||||
{ #mnem, OPS##nops ops, OT_cinfix3, 0x##op, top, ARM_VARIANT, \
|
{ #mnem, OPS##nops ops, OT_cinfix3, 0x##op, top, ARM_VARIANT, \
|
||||||
THUMB_VARIANT, do_##ae, do_##te }
|
THUMB_VARIANT, do_##ae, do_##te }
|
||||||
|
#define TxC3w(mnem, op, top, nops, ops, ae, te) \
|
||||||
|
{ #mnem, OPS##nops ops, OT_cinfix3_deprecated, 0x##op, top, ARM_VARIANT, \
|
||||||
|
THUMB_VARIANT, do_##ae, do_##te }
|
||||||
#define TC3(mnem, aop, top, nops, ops, ae, te) \
|
#define TC3(mnem, aop, top, nops, ops, ae, te) \
|
||||||
TxC3(mnem, aop, 0x##top, nops, ops, ae, te)
|
TxC3(mnem, aop, 0x##top, nops, ops, ae, te)
|
||||||
|
#define TC3w(mnem, aop, top, nops, ops, ae, te) \
|
||||||
|
TxC3w(mnem, aop, 0x##top, nops, ops, ae, te)
|
||||||
#define tC3(mnem, aop, top, nops, ops, ae, te) \
|
#define tC3(mnem, aop, top, nops, ops, ae, te) \
|
||||||
TxC3(mnem, aop, T_MNEM_##top, nops, ops, ae, te)
|
TxC3(mnem, aop, T_MNEM_##top, nops, ops, ae, te)
|
||||||
|
#define tC3w(mnem, aop, top, nops, ops, ae, te) \
|
||||||
|
TxC3w(mnem, aop, T_MNEM_##top, nops, ops, ae, te)
|
||||||
|
|
||||||
/* Mnemonic with a conditional infix in an unusual place. Each and every variant has to
|
/* Mnemonic with a conditional infix in an unusual place. Each and every variant has to
|
||||||
appear in the condition table. */
|
appear in the condition table. */
|
||||||
@ -13023,13 +13041,13 @@ static const struct asm_opcode insns[] =
|
|||||||
for setting PSR flag bits. They are obsolete in V6 and do not
|
for setting PSR flag bits. They are obsolete in V6 and do not
|
||||||
have Thumb equivalents. */
|
have Thumb equivalents. */
|
||||||
tCE(tst, 1100000, tst, 2, (RR, SH), cmp, t_mvn_tst),
|
tCE(tst, 1100000, tst, 2, (RR, SH), cmp, t_mvn_tst),
|
||||||
tC3(tsts, 1100000, tst, 2, (RR, SH), cmp, t_mvn_tst),
|
tC3w(tsts, 1100000, tst, 2, (RR, SH), cmp, t_mvn_tst),
|
||||||
CL(tstp, 110f000, 2, (RR, SH), cmp),
|
CL(tstp, 110f000, 2, (RR, SH), cmp),
|
||||||
tCE(cmp, 1500000, cmp, 2, (RR, SH), cmp, t_mov_cmp),
|
tCE(cmp, 1500000, cmp, 2, (RR, SH), cmp, t_mov_cmp),
|
||||||
tC3(cmps, 1500000, cmp, 2, (RR, SH), cmp, t_mov_cmp),
|
tC3w(cmps, 1500000, cmp, 2, (RR, SH), cmp, t_mov_cmp),
|
||||||
CL(cmpp, 150f000, 2, (RR, SH), cmp),
|
CL(cmpp, 150f000, 2, (RR, SH), cmp),
|
||||||
tCE(cmn, 1700000, cmn, 2, (RR, SH), cmp, t_mvn_tst),
|
tCE(cmn, 1700000, cmn, 2, (RR, SH), cmp, t_mvn_tst),
|
||||||
tC3(cmns, 1700000, cmn, 2, (RR, SH), cmp, t_mvn_tst),
|
tC3w(cmns, 1700000, cmn, 2, (RR, SH), cmp, t_mvn_tst),
|
||||||
CL(cmnp, 170f000, 2, (RR, SH), cmp),
|
CL(cmnp, 170f000, 2, (RR, SH), cmp),
|
||||||
|
|
||||||
tCE(mov, 1a00000, mov, 2, (RR, SH), mov, t_mov_cmp),
|
tCE(mov, 1a00000, mov, 2, (RR, SH), mov, t_mov_cmp),
|
||||||
@ -13083,7 +13101,7 @@ static const struct asm_opcode insns[] =
|
|||||||
TCE(rsb, 0600000, ebc00000, 3, (RR, oRR, SH), arit, t_rsb),
|
TCE(rsb, 0600000, ebc00000, 3, (RR, oRR, SH), arit, t_rsb),
|
||||||
TC3(rsbs, 0700000, ebd00000, 3, (RR, oRR, SH), arit, t_rsb),
|
TC3(rsbs, 0700000, ebd00000, 3, (RR, oRR, SH), arit, t_rsb),
|
||||||
TCE(teq, 1300000, ea900f00, 2, (RR, SH), cmp, t_mvn_tst),
|
TCE(teq, 1300000, ea900f00, 2, (RR, SH), cmp, t_mvn_tst),
|
||||||
TC3(teqs, 1300000, ea900f00, 2, (RR, SH), cmp, t_mvn_tst),
|
TC3w(teqs, 1300000, ea900f00, 2, (RR, SH), cmp, t_mvn_tst),
|
||||||
CL(teqp, 130f000, 2, (RR, SH), cmp),
|
CL(teqp, 130f000, 2, (RR, SH), cmp),
|
||||||
|
|
||||||
TC3(ldrt, 4300000, f8500e00, 2, (RR, ADDR), ldstt, t_ldstt),
|
TC3(ldrt, 4300000, f8500e00, 2, (RR, ADDR), ldstt, t_ldstt),
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
2006-05-04 Kazu Hirata <kazu@codesourcery.com>
|
||||||
|
|
||||||
|
* gas/arm/armv1.d (error-output): New.
|
||||||
|
* gas/arm/armv1.l: New.
|
||||||
|
* gas/arm/thumb32.d (error-output): New.
|
||||||
|
* gas/arm/thumb32.l: New.
|
||||||
|
|
||||||
2006-05-04 Thiemo Seufer <ths@mips.com>
|
2006-05-04 Thiemo Seufer <ths@mips.com>
|
||||||
Nigel Stephens <nigel@mips.com>
|
Nigel Stephens <nigel@mips.com>
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#objdump: -dr --prefix-addresses --show-raw-insn
|
#objdump: -dr --prefix-addresses --show-raw-insn
|
||||||
#name: ARM v1 instructions
|
#name: ARM v1 instructions
|
||||||
#as: -mcpu=arm7t
|
#as: -mcpu=arm7t
|
||||||
|
#error-output: armv1.l
|
||||||
|
|
||||||
# Test the ARM v1 instructions
|
# Test the ARM v1 instructions
|
||||||
|
|
||||||
|
5
gas/testsuite/gas/arm/armv1.l
Normal file
5
gas/testsuite/gas/arm/armv1.l
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[^:]*: Assembler messages:
|
||||||
|
[^:]*:26: Warning: s suffix on comparison instruction is deprecated
|
||||||
|
[^:]*:29: Warning: s suffix on comparison instruction is deprecated
|
||||||
|
[^:]*:32: Warning: s suffix on comparison instruction is deprecated
|
||||||
|
[^:]*:35: Warning: s suffix on comparison instruction is deprecated
|
@ -3,6 +3,7 @@
|
|||||||
# objdump: -dr --prefix-addresses --show-raw-insn
|
# objdump: -dr --prefix-addresses --show-raw-insn
|
||||||
# The arm-aout and arm-pe ports do not support Thumb branch relocations.
|
# The arm-aout and arm-pe ports do not support Thumb branch relocations.
|
||||||
# not-target: *-*-*aout* *-*-pe
|
# not-target: *-*-*aout* *-*-pe
|
||||||
|
# error-output: thumb32.l
|
||||||
|
|
||||||
.*: +file format .*arm.*
|
.*: +file format .*arm.*
|
||||||
|
|
||||||
|
17
gas/testsuite/gas/arm/thumb32.l
Normal file
17
gas/testsuite/gas/arm/thumb32.l
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
[^;]*: Assembler messages:
|
||||||
|
[^;]*:446: Warning: s suffix on comparison instruction is deprecated
|
||||||
|
[^;]*:446: Warning: s suffix on comparison instruction is deprecated
|
||||||
|
[^;]*:446: Warning: s suffix on comparison instruction is deprecated
|
||||||
|
[^;]*:446: Warning: s suffix on comparison instruction is deprecated
|
||||||
|
[^;]*:447: Warning: s suffix on comparison instruction is deprecated
|
||||||
|
[^;]*:447: Warning: s suffix on comparison instruction is deprecated
|
||||||
|
[^;]*:447: Warning: s suffix on comparison instruction is deprecated
|
||||||
|
[^;]*:447: Warning: s suffix on comparison instruction is deprecated
|
||||||
|
[^;]*:448: Warning: s suffix on comparison instruction is deprecated
|
||||||
|
[^;]*:448: Warning: s suffix on comparison instruction is deprecated
|
||||||
|
[^;]*:448: Warning: s suffix on comparison instruction is deprecated
|
||||||
|
[^;]*:448: Warning: s suffix on comparison instruction is deprecated
|
||||||
|
[^;]*:449: Warning: s suffix on comparison instruction is deprecated
|
||||||
|
[^;]*:449: Warning: s suffix on comparison instruction is deprecated
|
||||||
|
[^;]*:449: Warning: s suffix on comparison instruction is deprecated
|
||||||
|
[^;]*:449: Warning: s suffix on comparison instruction is deprecated
|
Reference in New Issue
Block a user