oops - toplevel changelog entry for previous delta.
[deliverable/binutils-gdb.git] / opcodes / score-dis.c
index de214482e708d31c739e54e8934276f32972c313..6b98a3359f0dac25199143774e121546423afc83 100644 (file)
@@ -1,5 +1,5 @@
 /* Instruction printing code for Score
-   Copyright (C) 2006-2016 Free Software Foundation, Inc.
+   Copyright (C) 2006-2020 Free Software Foundation, Inc.
    Contributed by:
    Brain.lin (brain.lin@sunplusct.com)
    Mei Ligang (ligang@sunnorth.com.cn)
@@ -23,7 +23,7 @@
    MA 02110-1301, USA.  */
 
 #include "sysdep.h"
-#include "dis-asm.h"
+#include "disassemble.h"
 #define DEFINE_TABLE
 #include "opintl.h"
 #include "bfd.h"
@@ -473,6 +473,7 @@ static struct score_opcode score_opcodes[] =
   {0x00003454, 0x3e007fff, "tvc"},
   {0x00000026, 0x3e0003ff, "xor\t\t%20-24r, %15-19r, %10-14r"},
   {0x00000027, 0x3e0003ff, "xor.c\t\t%20-24r, %15-19r, %10-14r"},
+  {0,0,NULL}
 };
 \f
 
@@ -567,7 +568,7 @@ print_insn_score48 (struct disassemble_info *info, bfd_vma given)
                                   long reg;
 
                                   reg = given >> bitstart;
-                                  reg &= (2 << (bitend - bitstart)) - 1;
+                                  reg &= (2u << (bitend - bitstart)) - 1;
 
                                   func (stream, "%s", score_regnames[reg]);
                                 }
@@ -577,7 +578,7 @@ print_insn_score48 (struct disassemble_info *info, bfd_vma given)
                                   long reg;
 
                                   reg = given >> bitstart;
-                                  reg &= (2 << (bitend - bitstart)) - 1;
+                                  reg &= (2u << (bitend - bitstart)) - 1;
 
                                   func (stream, "%ld", reg);
                                 }
@@ -586,9 +587,9 @@ print_insn_score48 (struct disassemble_info *info, bfd_vma given)
                                 {
                                   long reg;
                                   reg = given >> bitstart;
-                                  reg &= (2 << (bitend - bitstart)) - 1;
-                                  reg = ((reg ^ (1 << (bitend - bitstart))) -
-                                        (1 << (bitend - bitstart)));
+                                  reg &= (2u << (bitend - bitstart)) - 1;
+                                  reg = ((reg ^ (1u << (bitend - bitstart)))
+                                        - (1u << (bitend - bitstart)));
                                   /* Fix bug: s3_testsuite 64-bit.
                                      Remove high 32 bits.  */
                                   reg = (int) reg;
@@ -609,10 +610,7 @@ print_insn_score48 (struct disassemble_info *info, bfd_vma given)
                                   long reg;
 
                                   reg = given >> bitstart;
-                                  reg &= (2 << (bitend - bitstart)) - 1;
-                                  /* Fix bug: s3_testsuite 64-bit.
-                                     Remove high 32 bits.  */
-                                  reg = (int) reg;
+                                  reg &= (2u << (bitend - bitstart)) - 1;
 
                                   func (stream, "%lx", reg);
                                 }
@@ -621,8 +619,8 @@ print_insn_score48 (struct disassemble_info *info, bfd_vma given)
                                 {
                                     long reg;
                                     reg = given >> bitstart;
-                                    reg &= (2 << (bitend - bitstart)) - 1;
-                                    reg <<=2;
+                                    reg &= (2u << (bitend - bitstart)) - 1;
+                                    reg <<= 2;
                                     func (stream, "%lx", reg);
                                 }
                                 break;
@@ -634,12 +632,12 @@ print_insn_score48 (struct disassemble_info *info, bfd_vma given)
 
                           case '`':
                             c++;
-                            if ((given & (1 << bitstart)) == 0)
+                            if ((given & (1u << bitstart)) == 0)
                               func (stream, "%c", *c);
                             break;
                           case '\'':
                             c++;
-                            if ((given & (1 << bitstart)) != 0)
+                            if ((given & (1u << bitstart)) != 0)
                               func (stream, "%c", *c);
                             break;
                           default:
@@ -737,7 +735,7 @@ print_insn_score32 (bfd_vma pc, struct disassemble_info *info, long given)
                                int bitstart = 10;
                                int bitend = 14;
                                reg = given >> bitstart;
-                               reg &= (2 << (bitend - bitstart)) - 1;
+                               reg &= (2u << (bitend - bitstart)) - 1;
                                /* Sign-extend a 20-bit number.  */
                                int disp = (given&1)<<1 |((given>>7)&7)<<2 |((given>>20)&0x1f)<<5;
                                int target = (pc + SEXT10 (disp));
@@ -789,7 +787,7 @@ print_insn_score32 (bfd_vma pc, struct disassemble_info *info, long given)
                                   long reg;
 
                                   reg = given >> bitstart;
-                                  reg &= (2 << (bitend - bitstart)) - 1;
+                                  reg &= (2u << (bitend - bitstart)) - 1;
 
                                   func (stream, "%s", score_regnames[reg]);
                                 }
@@ -799,7 +797,7 @@ print_insn_score32 (bfd_vma pc, struct disassemble_info *info, long given)
                                   long reg;
 
                                   reg = given >> bitstart;
-                                  reg &= (2 << (bitend - bitstart)) - 1;
+                                  reg &= (2u << (bitend - bitstart)) - 1;
 
                                   func (stream, "%ld", reg);
                                 }
@@ -809,9 +807,9 @@ print_insn_score32 (bfd_vma pc, struct disassemble_info *info, long given)
                                   long reg;
 
                                   reg = given >> bitstart;
-                                  reg &= (2 << (bitend - bitstart)) - 1;
-                                  reg = ((reg ^ (1 << (bitend - bitstart))) -
-                                        (1 << (bitend - bitstart)));
+                                  reg &= (2u << (bitend - bitstart)) - 1;
+                                  reg = ((reg ^ (1u << (bitend - bitstart)))
+                                        - (1u << (bitend - bitstart)));
 
                                   if (((given & insn->mask) == 0x0c00000a)      /* ldc1  */
                                       || ((given & insn->mask) == 0x0c000012)   /* ldc2  */
@@ -829,7 +827,7 @@ print_insn_score32 (bfd_vma pc, struct disassemble_info *info, long given)
                                   long reg;
 
                                   reg = given >> bitstart;
-                                  reg &= (2 << (bitend - bitstart)) - 1;
+                                  reg &= (2u << (bitend - bitstart)) - 1;
 
                                   func (stream, "%lx", reg);
                                 }
@@ -841,12 +839,12 @@ print_insn_score32 (bfd_vma pc, struct disassemble_info *info, long given)
 
                           case '`':
                             c++;
-                            if ((given & (1 << bitstart)) == 0)
+                            if ((given & (1u << bitstart)) == 0)
                               func (stream, "%c", *c);
                             break;
                           case '\'':
                             c++;
-                            if ((given & (1 << bitstart)) != 0)
+                            if ((given & (1u << bitstart)) != 0)
                               func (stream, "%c", *c);
                             break;
                           default:
@@ -951,16 +949,7 @@ print_insn_score16 (bfd_vma pc, struct disassemble_info *info, long given)
                               if (!bitend)
                                 abort ();
                               reg = given >> bitstart;
-                              reg &= (2 << (bitend - bitstart)) - 1;
-
-                              /* Check rpush rd, 0 and rpop! rd, 0.
-                                 If reg = 0, then set to 32.  */
-                              if (((given & 0x00007c00) == 0x00006c00
-                                    || (given & 0x00007c00) == 0x00006800)
-                                  && reg == 0)
-                                {
-                                  reg = 32;
-                                }
+                              reg &= (2u << (bitend - bitstart)) - 1;
 
                               switch (*c)
                                 {
@@ -971,6 +960,13 @@ print_insn_score16 (bfd_vma pc, struct disassemble_info *info, long given)
                                   func (stream, "%s", score_regnames[reg]);
                                   break;
                                 case 'd':
+                                 /* Check rpush rd, 0 and rpop! rd, 0.
+                                    If 0, then print 32.  */
+                                 if (((given & 0x00007c00) == 0x00006c00
+                                      || (given & 0x00007c00) == 0x00006800)
+                                     && reg == 0)
+                                   reg = 32;
+
                                   if (*(c + 1) == '\0')
                                     func (stream, "%ld", reg);
                                   else
@@ -996,7 +992,7 @@ print_insn_score16 (bfd_vma pc, struct disassemble_info *info, long given)
                                     }
                                   break;
                                 case 'i':
-                                  reg = ((reg ^ (1 << bitend)) - (1 << bitend));
+                                  reg = (reg ^ (1u << bitend)) - (1u << bitend);
                                   func (stream, "%ld", reg);
                                   break;
                                 default:
@@ -1007,7 +1003,7 @@ print_insn_score16 (bfd_vma pc, struct disassemble_info *info, long given)
 
                           case '\'':
                             c++;
-                            if ((given & (1 << bitstart)) != 0)
+                            if ((given & (1u << bitstart)) != 0)
                               func (stream, "%c", *c);
                             break;
                           default:
This page took 0.030248 seconds and 4 git commands to generate.