aboutsummaryrefslogtreecommitdiff
path: root/gas/config
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@novell.com>2013-10-08 08:55:41 +0000
committerJan Beulich <jbeulich@novell.com>2013-10-08 08:55:41 +0000
commitd3bfe16eafe8d18afb50e900b79b792ca478321a (patch)
treed663f4bcc36f1ed21e57195325094d7e3cded43e /gas/config
parent38d7754573539a6c124fb9c28bd24cc9849312b7 (diff)
downloadgdb-d3bfe16eafe8d18afb50e900b79b792ca478321a.zip
gdb-d3bfe16eafe8d18afb50e900b79b792ca478321a.tar.gz
gdb-d3bfe16eafe8d18afb50e900b79b792ca478321a.tar.bz2
gas/
2013-10-08 Jan Beulich <jbeulich@suse.com> * gas/config/tc-arm.c (do_t_push_pop): Honor inst.size_req. Simplify LR/PC check. gas/testsuite/ 2013-10-08 Jan Beulich <jbeulich@suse.com> * gas/arm/thumb-w-good.s: Add PUSH.W and POP.W tests. * gas/arm/thumb-w-good.d: Update accordingly.
Diffstat (limited to 'gas/config')
-rw-r--r--gas/config/tc-arm.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index 7a26679..f97c307 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -11672,12 +11672,11 @@ do_t_push_pop (void)
_("expression too complex"));
mask = inst.operands[0].imm;
- if ((mask & ~0xff) == 0)
+ if (inst.size_req != 4 && (mask & ~0xff) == 0)
inst.instruction = THUMB_OP16 (inst.instruction) | mask;
- else if ((inst.instruction == T_MNEM_push
- && (mask & ~0xff) == 1 << REG_LR)
- || (inst.instruction == T_MNEM_pop
- && (mask & ~0xff) == 1 << REG_PC))
+ else if (inst.size_req != 4
+ && (mask & ~0xff) == (1 << (inst.instruction == T_MNEM_push
+ ? REG_LR : REG_PC)))
{
inst.instruction = THUMB_OP16 (inst.instruction);
inst.instruction |= THUMB_PP_PC_LR;