]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
MicroBlaze: Widen mask used in opcodes/microblaze-dis,c
authorMichael J. Eager <eager@eagercon.com>
Mon, 27 Jan 2025 20:01:20 +0000 (12:01 -0800)
committerMichael J. Eager <eager@eagercon.com>
Mon, 27 Jan 2025 20:01:20 +0000 (12:01 -0800)
Instead of using 0xFFFF0000, or with (~0xFFFF) to sign extend
negative 16-bit value and with (~0xFFFF) to extract higher order
address bits

opcodes/
* microblaze-dis.c: (print_insn_microblaze): Widen mask
(microblaze_get_target_address): Likewis

Signed-off-by: Gopi Kumar Bulusu <gopi@sankhya.com>
Signed-off-by: Michael J. Eager <eager@eagercon.com>
opcodes/microblaze-dis.c

index dd954a66d9379411b8e59ea34e26d03a1e455bda..6153f4b2e4b5468c5d3231bba61f79604e260dde 100644 (file)
@@ -302,7 +302,7 @@ print_insn_microblaze (bfd_vma memaddr, struct disassemble_info * info)
                {
                  immval = get_int_field_imm (inst);
                  if (immval & 0x8000)
-                   immval |= 0xFFFF0000;
+                   immval |= (~0xFFFF);
                }
              if (immval > 0 && info->symbol_at_address_func (immval, info))
                {
@@ -353,7 +353,7 @@ print_insn_microblaze (bfd_vma memaddr, struct disassemble_info * info)
                {
                  immval = get_int_field_imm (inst);
                  if (immval & 0x8000)
-                   immval |= 0xFFFF0000;
+                   immval |= (~0xFFFF);
                }
              immval += memaddr;
              if (immval > 0 && info->symbol_at_address_func (immval, info))
@@ -379,7 +379,7 @@ print_insn_microblaze (bfd_vma memaddr, struct disassemble_info * info)
                {
                  immval = get_int_field_imm (inst);
                  if (immval & 0x8000)
-                   immval |= 0xFFFF0000;
+                   immval |= (~0xFFFF);
                }
              if (op->inst_offset_type == INST_PC_OFFSET)
                immval += (int) memaddr;
@@ -401,7 +401,7 @@ print_insn_microblaze (bfd_vma memaddr, struct disassemble_info * info)
                {
                  immval = get_int_field_imm (inst);
                  if (immval & 0x8000)
-                   immval |= 0xFFFF0000;
+                   immval |= (~0xFFFF);
                }
              if (op->inst_offset_type == INST_PC_OFFSET)
                immval += (int) memaddr;
@@ -551,14 +551,14 @@ microblaze_get_target_address (long inst, bool immfound, int immval,
         case INST_TYPE_R1_IMM:
           if (immfound)
            {
-             targetaddr = (immval << 16) & 0xffff0000;
+             targetaddr = (immval << 16) & (~0xffff);
              targetaddr |= (get_int_field_imm (inst) & 0x0000ffff);
            }
          else
            {
              targetaddr = get_int_field_imm (inst);
              if (targetaddr & 0x8000)
-               targetaddr |= 0xFFFF0000;
+               targetaddr |= (~0xFFFF);
             }
           if (op->inst_offset_type == INST_PC_OFFSET)
            targetaddr += pcval;
@@ -573,14 +573,14 @@ microblaze_get_target_address (long inst, bool immfound, int immval,
     {
       if (immfound)
        {
-         targetaddr = (immval << 16) & 0xffff0000;
+         targetaddr = (immval << 16) & (~0xffff);
          targetaddr |= (get_int_field_imm (inst) & 0x0000ffff);
        }
       else
        {
          targetaddr = get_int_field_imm (inst);
          if (targetaddr & 0x8000)
-           targetaddr |= 0xFFFF0000;
+           targetaddr |= (~0xFFFF);
        }
       targetaddr += r1val;
       *targetvalid = true;