* s390-dis.c: Fix formatting.
authorKazu Hirata <kazu@codesourcery.com>
Mon, 23 Jul 2001 13:41:14 +0000 (13:41 +0000)
committerKazu Hirata <kazu@codesourcery.com>
Mon, 23 Jul 2001 13:41:14 +0000 (13:41 +0000)
opcodes/ChangeLog
opcodes/s390-dis.c

index 14e8c52f9cbca78ed392a037f13d3908399e9d21..2111cf29b5b423cfc18d44c3f3ad918ce4b3a5d2 100644 (file)
@@ -1,3 +1,7 @@
+2001-07-23  Kazu Hirata  <kazu@hxi.com>
+
+       * s390-dis.c: Fix formatting.
+
 2001-07-21  Chris Demetriou  <cgd@broadcom.com>
 
        * mips-opc.c (mips_builtin_opcodes): Sort c.le.s and c.lt.s
index a8bd4d1325e7a55b92b0a5dd3e9575baa65eb287..f2ab4079ee83c29dc9cdf47cb5b58579d7e1a640 100644 (file)
@@ -29,32 +29,35 @@ static int init_flag = 0;
 static int opc_index[256];
 static int current_arch_mask = 0;
 
-/* Set up index table for first opcode byte */
-static void 
-init_disasm(info)
-    struct disassemble_info *info ATTRIBUTE_UNUSED;
+/* Set up index table for first opcode byte.  */
+
+static void
+init_disasm (info)
+     struct disassemble_info *info ATTRIBUTE_UNUSED;
 {
   const struct s390_opcode *opcode;
   const struct s390_opcode *opcode_end;
 
-  memset(opc_index, 0, sizeof(opc_index));
+  memset (opc_index, 0, sizeof (opc_index));
   opcode_end = s390_opcodes + s390_num_opcodes;
-  for (opcode = s390_opcodes; opcode < opcode_end; opcode++) {
-    opc_index[(int) opcode->opcode[0]] = opcode - s390_opcodes;
-    while ((opcode < opcode_end) && 
-           (opcode[1].opcode[0] == opcode->opcode[0]))
-      opcode++;
-  }
-  switch (info->mach) {
-  case bfd_mach_s390_esa:
-    current_arch_mask = 1 << S390_OPCODE_ESA;
-    break;
-  case bfd_mach_s390_esame:
-    current_arch_mask = 1 << S390_OPCODE_ESAME;
-    break;
-  default:
-    abort();
-  }
+  for (opcode = s390_opcodes; opcode < opcode_end; opcode++)
+    {
+      opc_index[(int) opcode->opcode[0]] = opcode - s390_opcodes;
+      while ((opcode < opcode_end) &&
+            (opcode[1].opcode[0] == opcode->opcode[0]))
+       opcode++;
+    }
+  switch (info->mach)
+    {
+    case bfd_mach_s390_esa:
+      current_arch_mask = 1 << S390_OPCODE_ESA;
+      break;
+    case bfd_mach_s390_esame:
+      current_arch_mask = 1 << S390_OPCODE_ESAME;
+      break;
+    default:
+      abort ();
+    }
   init_flag = 1;
 }
 
@@ -68,28 +71,30 @@ s390_extract_operand (insn, operand)
   unsigned int val;
   int bits;
 
-  /* extract fragments of the operand byte for byte */
-  insn += operand->shift/8;
+  /* Extract fragments of the operand byte for byte.  */
+  insn += operand->shift / 8;
   bits = (operand->shift & 7) + operand->bits;
   val = 0;
-  do {
-    val <<= 8;
-    val |= (unsigned int) *insn++;
-    bits -= 8;
-  } while (bits > 0);
+  do
+    {
+      val <<= 8;
+      val |= (unsigned int) *insn++;
+      bits -= 8;
+    }
+  while (bits > 0);
   val >>= -bits;
-  val &= ((1U << (operand->bits-1))<<1) - 1;
-
-  /* sign extend value if the operand is signed or pc relative */
-  if ((operand->flags & (S390_OPERAND_SIGNED|S390_OPERAND_PCREL)) &&
-      (val & (1U << (operand->bits-1))))
-    val |= (-1U << (operand->bits-1))<<1;
-  /* double value if the operand is pc relative */
+  val &= ((1U << (operand->bits - 1)) << 1) - 1;
+
+  /* Sign extend value if the operand is signed or pc relative.  */
+  if ((operand->flags & (S390_OPERAND_SIGNED | S390_OPERAND_PCREL))
+      && (val & (1U << (operand->bits - 1))))
+    val |= (-1U << (operand->bits - 1)) << 1;
+
+  /* Double value if the operand is pc relative.  */
   if (operand->flags & S390_OPERAND_PCREL)
     val <<= 1;
-  /* length x in an instructions has real length x+1 */
+
+  /* Length x in an instructions has real length x+1.  */
   if (operand->flags & S390_OPERAND_LENGTH)
     val++;
   return val;
@@ -110,122 +115,139 @@ print_insn_s390 (memaddr, info)
   char separator;
 
   if (init_flag == 0)
-    init_disasm(info);
+    init_disasm (info);
 
   /* The output looks better if we put 6 bytes on a line.  */
   info->bytes_per_line = 6;
 
   /* Every S390 instruction is max 6 bytes long.  */
-  memset(buffer, 0, 6);
+  memset (buffer, 0, 6);
   status = (*info->read_memory_func) (memaddr, buffer, 6, info);
-  if (status != 0) {
-    for (bufsize = 0; bufsize < 6; bufsize++)
-      if ((*info->read_memory_func) (memaddr, buffer, bufsize+1, info) != 0)
-        break;
-    if (bufsize <= 0) {
-      (*info->memory_error_func) (status, memaddr, info);
-      return -1;
+  if (status != 0)
+    {
+      for (bufsize = 0; bufsize < 6; bufsize++)
+       if ((*info->read_memory_func) (memaddr, buffer, bufsize + 1, info) != 0)
+         break;
+      if (bufsize <= 0)
+       {
+         (*info->memory_error_func) (status, memaddr, info);
+         return -1;
+       }
+      /* Opsize calculation looks strange but it works
+        00xxxxxx -> 2 bytes, 01xxxxxx/10xxxxxx -> 4 bytes,
+        11xxxxxx -> 6 bytes.  */
+      opsize = ((((buffer[0] >> 6) + 1) >> 1) + 1) << 1;
+      status = opsize > bufsize;
+    }
+  else
+    {
+      bufsize = 6;
+      opsize = ((((buffer[0] >> 6) + 1) >> 1) + 1) << 1;
+    }
+
+  if (status == 0)
+    {
+      /* Find the first match in the opcode table.  */
+      opcode_end = s390_opcodes + s390_num_opcodes;
+      for (opcode = s390_opcodes + opc_index[(int) buffer[0]];
+          (opcode < opcode_end) && (buffer[0] == opcode->opcode[0]);
+          opcode++)
+       {
+         const struct s390_operand *operand;
+         const unsigned char *opindex;
+
+         /* Check architecture.  */
+         if (!(opcode->architecture & current_arch_mask))
+           continue;
+         /* Check signature of the opcode.  */
+         if ((buffer[1] & opcode->mask[1]) != opcode->opcode[1]
+             || (buffer[2] & opcode->mask[2]) != opcode->opcode[2]
+             || (buffer[3] & opcode->mask[3]) != opcode->opcode[3]
+             || (buffer[4] & opcode->mask[4]) != opcode->opcode[4]
+             || (buffer[5] & opcode->mask[5]) != opcode->opcode[5])
+           continue;
+
+         /* The instruction is valid.  */
+         if (opcode->operands[0] != 0)
+           (*info->fprintf_func) (info->stream, "%s\t", opcode->name);
+         else
+           (*info->fprintf_func) (info->stream, "%s", opcode->name);
+
+         /* Extract the operands.  */
+         separator = 0;
+         for (opindex = opcode->operands; *opindex != 0; opindex++)
+           {
+             unsigned int value;
+
+             operand = s390_operands + *opindex;
+             value = s390_extract_operand (buffer, operand);
+
+             if ((operand->flags & S390_OPERAND_INDEX) && value == 0)
+               continue;
+             if ((operand->flags & S390_OPERAND_BASE) &&
+                 value == 0 && separator == '(')
+               {
+                 separator = ',';
+                 continue;
+               }
+
+             if (separator)
+               (*info->fprintf_func) (info->stream, "%c", separator);
+
+             if (operand->flags & S390_OPERAND_GPR)
+               (*info->fprintf_func) (info->stream, "%%r%i", value);
+             else if (operand->flags & S390_OPERAND_FPR)
+               (*info->fprintf_func) (info->stream, "%%f%i", value);
+             else if (operand->flags & S390_OPERAND_AR)
+               (*info->fprintf_func) (info->stream, "%%a%i", value);
+             else if (operand->flags & S390_OPERAND_CR)
+               (*info->fprintf_func) (info->stream, "%%c%i", value);
+             else if (operand->flags & S390_OPERAND_PCREL)
+               (*info->print_address_func) (memaddr + (int) value, info);
+             else if (operand->flags & S390_OPERAND_SIGNED)
+               (*info->fprintf_func) (info->stream, "%i", (int) value);
+             else
+               (*info->fprintf_func) (info->stream, "%i", value);
+
+             if (operand->flags & S390_OPERAND_DISP)
+               {
+                 separator = '(';
+               }
+             else if (operand->flags & S390_OPERAND_BASE)
+               {
+                 (*info->fprintf_func) (info->stream, ")");
+                 separator = ',';
+               }
+             else
+               separator = ',';
+           }
+
+         /* Found instruction, printed it, return its size.  */
+         return opsize;
+       }
+      /* No matching instruction found, fall through to hex print.  */
+    }
+
+  if (bufsize >= 4)
+    {
+      value = (unsigned int) buffer[0];
+      value = (value << 8) + (unsigned int) buffer[1];
+      value = (value << 8) + (unsigned int) buffer[2];
+      value = (value << 8) + (unsigned int) buffer[3];
+      (*info->fprintf_func) (info->stream, ".long\t0x%08x", value);
+      return 4;
+    }
+  else if (bufsize >= 2)
+    {
+      value = (unsigned int) buffer[0];
+      value = (value << 8) + (unsigned int) buffer[1];
+      (*info->fprintf_func) (info->stream, ".short\t0x%04x", value);
+      return 2;
     }
-    /* Opsize calculation looks strange but it works
-       00xxxxxx -> 2 bytes, 01xxxxxx/10xxxxxx -> 4 bytes, 
-       11xxxxxx -> 6 bytes.  */
-    opsize = ((((buffer[0]>>6)+1)>>1)+1)<<1;
-    status = opsize > bufsize;
-  } else {
-    bufsize = 6;
-    opsize = ((((buffer[0]>>6)+1)>>1)+1)<<1;
-  }
-
-  if (status == 0) {
-    /* Find the first match in the opcode table.  */
-    opcode_end = s390_opcodes + s390_num_opcodes;
-    for (opcode = s390_opcodes + opc_index[(int) buffer[0]]; 
-         (opcode < opcode_end) && (buffer[0] == opcode->opcode[0]);
-         opcode++) {
-      const struct s390_operand *operand;
-      const unsigned char *opindex;
-
-      /* check architecture */
-      if (!(opcode->architecture & current_arch_mask))
-        continue;
-      /* check signature of the opcode */
-      if ((buffer[1] & opcode->mask[1]) != opcode->opcode[1] ||
-          (buffer[2] & opcode->mask[2]) != opcode->opcode[2] ||
-          (buffer[3] & opcode->mask[3]) != opcode->opcode[3] ||
-          (buffer[4] & opcode->mask[4]) != opcode->opcode[4] ||
-          (buffer[5] & opcode->mask[5]) != opcode->opcode[5])
-        continue;
-  
-      /* the instruction is valid */
-      if (opcode->operands[0] != 0)
-        (*info->fprintf_func) (info->stream, "%s\t", opcode->name);
-      else
-        (*info->fprintf_func) (info->stream, "%s", opcode->name);
-  
-      /* Extract the operands.  */
-      separator = 0;
-      for (opindex = opcode->operands; *opindex != 0; opindex++) {
-        unsigned int value;
-
-        operand = s390_operands + *opindex;
-        value = s390_extract_operand(buffer, operand);
-
-        if ((operand->flags & S390_OPERAND_INDEX) && value == 0)
-          continue;
-        if ((operand->flags & S390_OPERAND_BASE) && 
-            value == 0 && separator == '(') {
-          separator = ',';
-          continue;
-        }
-
-        if (separator)
-          (*info->fprintf_func) (info->stream, "%c", separator);
-
-        if (operand->flags & S390_OPERAND_GPR)
-          (*info->fprintf_func) (info->stream, "%%r%i", value);
-        else if (operand->flags & S390_OPERAND_FPR)
-          (*info->fprintf_func) (info->stream, "%%f%i", value);
-        else if (operand->flags & S390_OPERAND_AR)
-          (*info->fprintf_func) (info->stream, "%%a%i", value);
-        else if (operand->flags & S390_OPERAND_CR)
-          (*info->fprintf_func) (info->stream, "%%c%i", value);
-        else if (operand->flags & S390_OPERAND_PCREL)
-          (*info->print_address_func) (memaddr + (int) value, info);
-        else if (operand->flags & S390_OPERAND_SIGNED)
-          (*info->fprintf_func) (info->stream, "%i", (int) value);
-        else
-         (*info->fprintf_func) (info->stream, "%i", value);
-
-        if (operand->flags & S390_OPERAND_DISP) {
-         separator = '(';
-        } else if (operand->flags & S390_OPERAND_BASE) {
-         (*info->fprintf_func) (info->stream, ")");
-          separator = ',';
-        } else
-         separator = ',';
-      }
-
-      /* found instruction, printed it, return its size */
-      return opsize;
+  else
+    {
+      value = (unsigned int) buffer[0];
+      (*info->fprintf_func) (info->stream, ".byte\t0x%02x", value);
+      return 1;
     }
-    /* no matching instruction found, fall through to hex print  */
-  }
-
-  if (bufsize >= 4) {
-    value = (unsigned int) buffer[0];
-    value = (value << 8) + (unsigned int) buffer[1];
-    value = (value << 8) + (unsigned int) buffer[2];
-    value = (value << 8) + (unsigned int) buffer[3];
-    (*info->fprintf_func) (info->stream,".long\t0x%08x", value);
-    return 4;
-  } else if (bufsize >= 2) {
-    value = (unsigned int) buffer[0];
-    value = (value << 8) + (unsigned int) buffer[1];
-    (*info->fprintf_func) (info->stream,".short\t0x%04x", value);
-    return 2;
-  } else {
-    value = (unsigned int) buffer[0];
-    (*info->fprintf_func) (info->stream,".byte\t0x%02x", value);
-    return 1;
-  }
 }