diff --git a/gas/ChangeLog b/gas/ChangeLog
index 4fecbe51178..1b48ea4bd02 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2016-03-30  Nick Clifton  <nickc@redhat.com>
+
+	PR target/19880
+	* config/tc-arm.c (do_t_push_pop): Cast bitmask to unsigned before
+	shifting.
+
 2016-03-30  Claudiu Zissulescu  <claziss@synopsys.com>
 
         * testsuite/gas/all/gas.exp: Don't xfail on ARC.
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index bec091c15d4..9c2eef5901a 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -12516,7 +12516,7 @@ do_t_push_pop (void)
   if (inst.size_req != 4 && (mask & ~0xff) == 0)
     inst.instruction = THUMB_OP16 (inst.instruction) | mask;
   else if (inst.size_req != 4
-	   && (mask & ~0xff) == (1 << (inst.instruction == T_MNEM_push
+	   && (mask & ~0xff) == (1U << (inst.instruction == T_MNEM_push
 				       ? REG_LR : REG_PC)))
     {
       inst.instruction = THUMB_OP16 (inst.instruction);