include/opcode/
authorPeter Bergner <bergner@vnet.ibm.com>
Fri, 13 Jun 2008 20:16:00 +0000 (20:16 +0000)
committerPeter Bergner <bergner@vnet.ibm.com>
Fri, 13 Jun 2008 20:16:00 +0000 (20:16 +0000)
* ppc.h (ppc_cpu_t): New typedef.
(struct powerpc_opcode <flags>): Use it.
(struct powerpc_operand <insert, extract>): Likewise.
(struct powerpc_macro <flags>): Likewise.

gas/
* config/tc-ppc.c (ppc_cpu): Use ppc_cpu_t typedef.
(ppc_insert_operand): Likewise.
(ppc_machine): Likewise.
* config/tc-ppc.h: #include "opcode/ppc.h"
(struct _ppc_fix_extra <ppc_cpu>): Use ppc_cpu_t typedef.
(ppc_cpu): Update extern decl.

opcodes/
* ppc-dis.c (print_insn_powerpc): Update prototye to use new
ppc_cpu_t typedef.
(struct dis_private): New.
(POWERPC_DIALECT): New define.
(powerpc_dialect): Renamed to...
(powerpc_init_dialect): This.  Update to use ppc_cpu_t and
struct dis_private.
(print_insn_big_powerpc): Update for using structure in
info->private_data.
(print_insn_little_powerpc): Likewise.
(operand_value_powerpc): Change type of dialect param to ppc_cpu_t.
(skip_optional_operands): Likewise.
(print_insn_powerpc): Likewise.  Remove initialization of dialect.
* ppc-opc.c (extract_bat, extract_bba, extract_bdm, extract_bdp,
extract_bo, extract_boe, extract_fxm, extract_mb6, extract_mbe,
extract_nb, extract_nsi, extract_rbs, extract_sh6, extract_spr,
extract_sprg, extract_tbr insert_bat, insert_bba, insert_bdm,
insert_bdp, insert_bo, insert_boe, insert_fxm, insert_mb6, insert_mbe,
insert_nsi, insert_ral, insert_ram, insert_raq, insert_ras, insert_rbs,
insert_sh6, insert_spr, insert_sprg, insert_tbr): Change the dialect
param to be of type ppc_cpu_t.  Update prototype.

gas/ChangeLog
gas/config/tc-ppc.c
gas/config/tc-ppc.h
include/opcode/ChangeLog
include/opcode/ppc.h
opcodes/ChangeLog
opcodes/ppc-dis.c
opcodes/ppc-opc.c

index f26a3effe35ae0cfd25aa8d052bc6d8cbeb36519..cab22f48572497b729e7926b886c99a06e6c4dde 100644 (file)
@@ -1,3 +1,12 @@
+2008-06-13  Peter Bergner  <bergner@vnet.ibm.com>
+
+       * config/tc-ppc.c (ppc_cpu): Use ppc_cpu_t typedef.
+       (ppc_insert_operand): Likewise.
+       (ppc_machine): Likewise.
+       * config/tc-ppc.h: #include "opcode/ppc.h"
+       (struct _ppc_fix_extra <ppc_cpu>): Use ppc_cpu_t typedef.
+       (ppc_cpu): Update extern decl.
+
 2008-06-12  Adam Nemet  <anemet@caviumnetworks.com>
 
        * config/tc-mips.c (validate_mips_insn): Handle field descriptors
index ef54165bb94be9558c21bd7bbca2db48abc19c9f..0aec203e5623a0637347940e0f89bdd9da47c634 100644 (file)
@@ -181,7 +181,7 @@ int ppc_cie_data_alignment;
 
 /* The type of processor we are assembling for.  This is one or more
    of the PPC_OPCODE flags defined in opcode/ppc.h.  */
-unsigned long ppc_cpu = 0;
+ppc_cpu_t ppc_cpu = 0;
 \f
 /* The target specific pseudo-ops which we support.  */
 
@@ -825,7 +825,7 @@ const size_t md_longopts_size = sizeof (md_longopts);
 static int
 parse_cpu (const char *arg)
 {
-  unsigned long altivec_or_spe = ppc_cpu & (PPC_OPCODE_ALTIVEC | PPC_OPCODE_SPE);
+  ppc_cpu_t altivec_or_spe = ppc_cpu & (PPC_OPCODE_ALTIVEC | PPC_OPCODE_SPE);
 
   /* -mpwrx and -mpwr2 mean to assemble for the IBM POWER/2
      (RIOS2).  */
@@ -1573,7 +1573,7 @@ static unsigned long
 ppc_insert_operand (unsigned long insn,
                    const struct powerpc_operand *operand,
                    offsetT val,
-                   unsigned long ppc_cpu,
+                   ppc_cpu_t ppc_cpu,
                    char *file,
                    unsigned int line)
 {
@@ -4138,7 +4138,7 @@ ppc_machine (int ignore ATTRIBUTE_UNUSED)
 {
   char *cpu_string;
 #define MAX_HISTORY 100
-  static unsigned long *cpu_history;
+  static ppc_cpu_t *cpu_history;
   static int curr_hist;
 
   SKIP_WHITESPACE ();
@@ -4159,7 +4159,7 @@ ppc_machine (int ignore ATTRIBUTE_UNUSED)
 
   if (cpu_string != NULL)
     {
-      unsigned long old_cpu = ppc_cpu;
+      ppc_cpu_t old_cpu = ppc_cpu;
       char *p;
 
       for (p = cpu_string; *p != 0; p++)
index 5f6f7f23d4373c910330ebed077ed66c363534d0..2702988ede8f62a01de35ed6b3dafafdc72548d9 100644 (file)
@@ -22,6 +22,8 @@
 
 #define TC_PPC
 
+#include "opcode/ppc.h"
+
 struct fix;
 
 /* Set the endianness we are using.  Default to big endian.  */
@@ -95,10 +97,10 @@ extern void ppc_handle_align (struct frag *);
    for later use in md_apply_fix.  */
 struct _ppc_fix_extra
 {
-  unsigned long ppc_cpu;
+  ppc_cpu_t ppc_cpu;
 };
 
-extern unsigned long ppc_cpu;
+extern ppc_cpu_t ppc_cpu;
 
 #define TC_FIX_TYPE struct _ppc_fix_extra
 #define TC_INIT_FIX_DATA(FIXP) \
index 32b9728bc354a928cb251702ec763449debba380..d217ca4ba2c1d81a661b34c72067fce10f961f75 100644 (file)
@@ -1,3 +1,10 @@
+2008-06-13  Peter Bergner  <bergner@vnet.ibm.com>
+
+       * ppc.h (ppc_cpu_t): New typedef.
+       (struct powerpc_opcode <flags>): Use it.
+       (struct powerpc_operand <insert, extract>): Likewise.
+       (struct powerpc_macro <flags>): Likewise.
+
 2008-06-12  Adam Nemet  <anemet@caviumnetworks.com>
 
        * mips.h: Document new field descriptors +x, +X, +p, +P, +s, +S.
index f4023c7a2f19d8c8930f137c31aae22717a0f07a..7b789aa600f1a5063ef8a62540a96a20b9598958 100644 (file)
@@ -22,6 +22,8 @@ Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, US
 #ifndef PPC_H
 #define PPC_H
 
+typedef unsigned long ppc_cpu_t;
+
 /* The opcode table is an array of struct powerpc_opcode.  */
 
 struct powerpc_opcode
@@ -42,7 +44,7 @@ struct powerpc_opcode
   /* One bit flags for the opcode.  These are used to indicate which
      specific processors support the instructions.  The defined values
      are listed below.  */
-  unsigned long flags;
+  ppc_cpu_t flags;
 
   /* An array of operand codes.  Each code is an index into the
      operand table.  They appear in the order which the operands must
@@ -183,7 +185,7 @@ struct powerpc_operand
      operand value is legal, *ERRMSG will be unchanged (most operands
      can accept any value).  */
   unsigned long (*insert)
-    (unsigned long instruction, long op, int dialect, const char **errmsg);
+    (unsigned long instruction, long op, ppc_cpu_t dialect, const char **errmsg);
 
   /* Extraction function.  This is used by the disassembler.  To
      extract this operand type from an instruction, check this field.
@@ -201,7 +203,7 @@ struct powerpc_operand
      non-zero if this operand type can not actually be extracted from
      this operand (i.e., the instruction does not match).  If the
      operand is valid, *INVALID will not be changed.  */
-  long (*extract) (unsigned long instruction, int dialect, int *invalid);
+  long (*extract) (unsigned long instruction, ppc_cpu_t dialect, int *invalid);
 
   /* One bit syntax flags.  */
   unsigned long flags;
@@ -318,7 +320,7 @@ struct powerpc_macro
   /* One bit flags for the opcode.  These are used to indicate which
      specific processors support the instructions.  The values are the
      same as those for the struct powerpc_opcode flags field.  */
-  unsigned long flags;
+  ppc_cpu_t flags;
 
   /* A format string to turn the macro into a normal instruction.
      Each %N in the string is replaced with operand number N (zero
index 125397550e620c791900c5dba16ee4c69dc02b4a..87d96289fbde358bc48d559603e366b1ead1f019 100644 (file)
@@ -1,3 +1,27 @@
+2008-06-13  Peter Bergner  <bergner@vnet.ibm.com>
+
+       * ppc-dis.c (print_insn_powerpc): Update prototye to use new
+       ppc_cpu_t typedef.
+       (struct dis_private): New.
+       (POWERPC_DIALECT): New define.
+       (powerpc_dialect): Renamed to...
+       (powerpc_init_dialect): This.  Update to use ppc_cpu_t and
+       struct dis_private.
+       (print_insn_big_powerpc): Update for using structure in
+       info->private_data.
+       (print_insn_little_powerpc): Likewise.
+       (operand_value_powerpc): Change type of dialect param to ppc_cpu_t.
+       (skip_optional_operands): Likewise.
+       (print_insn_powerpc): Likewise.  Remove initialization of dialect.
+       * ppc-opc.c (extract_bat, extract_bba, extract_bdm, extract_bdp,
+       extract_bo, extract_boe, extract_fxm, extract_mb6, extract_mbe,
+       extract_nb, extract_nsi, extract_rbs, extract_sh6, extract_spr,
+       extract_sprg, extract_tbr insert_bat, insert_bba, insert_bdm,
+       insert_bdp, insert_bo, insert_boe, insert_fxm, insert_mb6, insert_mbe,
+       insert_nsi, insert_ral, insert_ram, insert_raq, insert_ras, insert_rbs,
+       insert_sh6, insert_spr, insert_sprg, insert_tbr): Change the dialect
+       param to be of type ppc_cpu_t.  Update prototype.
+
 2008-06-12  Adam Nemet  <anemet@caviumnetworks.com>
 
        * mips-dis.c (print_insn_args): Handle field descriptors +x, +p,
index e5bae64c2834c1cce34bc411cc288ee4ed79670c..de586dc9ad6786c9b2d2ed36e37998f53c76663c 100644 (file)
    are provided because this file handles disassembly for the PowerPC
    in both big and little endian mode and also for the POWER (RS/6000)
    chip.  */
+static int print_insn_powerpc (bfd_vma, struct disassemble_info *, int,
+                              ppc_cpu_t);
 
-static int print_insn_powerpc (bfd_vma, struct disassemble_info *, int, int);
+struct dis_private
+{
+  /* Stash the result of parsing disassembler_options here.  */
+  ppc_cpu_t dialect;
+};
+
+#define POWERPC_DIALECT(INFO) \
+  (((struct dis_private *) ((INFO)->private_data))->dialect)
 
 /* Determine which set of machines to disassemble for.  PPC403/601 or
    BookE.  For convenience, also disassemble instructions supported
    by the AltiVec vector unit.  */
 
 static int
-powerpc_dialect (struct disassemble_info *info)
+powerpc_init_dialect (struct disassemble_info *info)
 {
-  int dialect = PPC_OPCODE_PPC;
+  ppc_cpu_t dialect = PPC_OPCODE_PPC;
+  struct dis_private *priv = calloc (sizeof (*priv), 1);
+
+  if (priv == NULL)
+    return FALSE;
 
   if (BFD_DEFAULT_TARGET_SIZE == 64)
     dialect |= PPC_OPCODE_64;
@@ -107,8 +120,10 @@ powerpc_dialect (struct disassemble_info *info)
        dialect |= PPC_OPCODE_64;
     }
 
-  info->private_data = (char *) 0 + dialect;
-  return dialect;
+  info->private_data = priv;
+  POWERPC_DIALECT(info) = dialect;
+
+  return TRUE;
 }
 
 /* Print a big endian PowerPC instruction.  */
@@ -116,8 +131,9 @@ powerpc_dialect (struct disassemble_info *info)
 int
 print_insn_big_powerpc (bfd_vma memaddr, struct disassemble_info *info)
 {
-  int dialect = (char *) info->private_data - (char *) 0;
-  return print_insn_powerpc (memaddr, info, 1, dialect);
+  if (info->private_data == NULL && !powerpc_init_dialect (info))
+    return -1;
+  return print_insn_powerpc (memaddr, info, 1, POWERPC_DIALECT(info));
 }
 
 /* Print a little endian PowerPC instruction.  */
@@ -125,8 +141,9 @@ print_insn_big_powerpc (bfd_vma memaddr, struct disassemble_info *info)
 int
 print_insn_little_powerpc (bfd_vma memaddr, struct disassemble_info *info)
 {
-  int dialect = (char *) info->private_data - (char *) 0;
-  return print_insn_powerpc (memaddr, info, 0, dialect);
+  if (info->private_data == NULL && !powerpc_init_dialect (info))
+    return -1;
+  return print_insn_powerpc (memaddr, info, 0, POWERPC_DIALECT(info));
 }
 
 /* Print a POWER (RS/6000) instruction.  */
@@ -141,7 +158,7 @@ print_insn_rs6000 (bfd_vma memaddr, struct disassemble_info *info)
 
 static long
 operand_value_powerpc (const struct powerpc_operand *operand,
-                      unsigned long insn, int dialect)
+                      unsigned long insn, ppc_cpu_t dialect)
 {
   long value;
   int invalid;
@@ -171,7 +188,7 @@ operand_value_powerpc (const struct powerpc_operand *operand,
 
 static int
 skip_optional_operands (const unsigned char *opindex,
-                       unsigned long insn, int dialect)
+                       unsigned long insn, ppc_cpu_t dialect)
 {
   const struct powerpc_operand *operand;
 
@@ -193,7 +210,7 @@ static int
 print_insn_powerpc (bfd_vma memaddr,
                    struct disassemble_info *info,
                    int bigendian,
-                   int dialect)
+                   ppc_cpu_t dialect)
 {
   bfd_byte buffer[4];
   int status;
@@ -202,9 +219,6 @@ print_insn_powerpc (bfd_vma memaddr,
   const struct powerpc_opcode *opcode_end;
   unsigned long op;
 
-  if (dialect == 0)
-    dialect = powerpc_dialect (info);
-
   status = (*info->read_memory_func) (memaddr, buffer, 4, info);
   if (status != 0)
     {
index 5a8502719ad4d1fea369c6ff2f9dbc57717686d2..b5f41115b7ad07b0cdf7a502f03e6d0ec88a98ce 100644 (file)
 \f
 /* Local insertion and extraction functions.  */
 
-static unsigned long insert_bat (unsigned long, long, int, const char **);
-static long extract_bat (unsigned long, int, int *);
-static unsigned long insert_bba (unsigned long, long, int, const char **);
-static long extract_bba (unsigned long, int, int *);
-static unsigned long insert_bdm (unsigned long, long, int, const char **);
-static long extract_bdm (unsigned long, int, int *);
-static unsigned long insert_bdp (unsigned long, long, int, const char **);
-static long extract_bdp (unsigned long, int, int *);
-static unsigned long insert_bo (unsigned long, long, int, const char **);
-static long extract_bo (unsigned long, int, int *);
-static unsigned long insert_boe (unsigned long, long, int, const char **);
-static long extract_boe (unsigned long, int, int *);
-static unsigned long insert_fxm (unsigned long, long, int, const char **);
-static long extract_fxm (unsigned long, int, int *);
-static unsigned long insert_mbe (unsigned long, long, int, const char **);
-static long extract_mbe (unsigned long, int, int *);
-static unsigned long insert_mb6 (unsigned long, long, int, const char **);
-static long extract_mb6 (unsigned long, int, int *);
-static long extract_nb (unsigned long, int, int *);
-static unsigned long insert_nsi (unsigned long, long, int, const char **);
-static long extract_nsi (unsigned long, int, int *);
-static unsigned long insert_ral (unsigned long, long, int, const char **);
-static unsigned long insert_ram (unsigned long, long, int, const char **);
-static unsigned long insert_raq (unsigned long, long, int, const char **);
-static unsigned long insert_ras (unsigned long, long, int, const char **);
-static unsigned long insert_rbs (unsigned long, long, int, const char **);
-static long extract_rbs (unsigned long, int, int *);
-static unsigned long insert_sh6 (unsigned long, long, int, const char **);
-static long extract_sh6 (unsigned long, int, int *);
-static unsigned long insert_spr (unsigned long, long, int, const char **);
-static long extract_spr (unsigned long, int, int *);
-static unsigned long insert_sprg (unsigned long, long, int, const char **);
-static long extract_sprg (unsigned long, int, int *);
-static unsigned long insert_tbr (unsigned long, long, int, const char **);
-static long extract_tbr (unsigned long, int, int *);
+static unsigned long insert_bat (unsigned long, long, ppc_cpu_t, const char **);
+static long extract_bat (unsigned long, ppc_cpu_t, int *);
+static unsigned long insert_bba (unsigned long, long, ppc_cpu_t, const char **);
+static long extract_bba (unsigned long, ppc_cpu_t, int *);
+static unsigned long insert_bdm (unsigned long, long, ppc_cpu_t, const char **);
+static long extract_bdm (unsigned long, ppc_cpu_t, int *);
+static unsigned long insert_bdp (unsigned long, long, ppc_cpu_t, const char **);
+static long extract_bdp (unsigned long, ppc_cpu_t, int *);
+static unsigned long insert_bo (unsigned long, long, ppc_cpu_t, const char **);
+static long extract_bo (unsigned long, ppc_cpu_t, int *);
+static unsigned long insert_boe (unsigned long, long, ppc_cpu_t, const char **);
+static long extract_boe (unsigned long, ppc_cpu_t, int *);
+static unsigned long insert_fxm (unsigned long, long, ppc_cpu_t, const char **);
+static long extract_fxm (unsigned long, ppc_cpu_t, int *);
+static unsigned long insert_mbe (unsigned long, long, ppc_cpu_t, const char **);
+static long extract_mbe (unsigned long, ppc_cpu_t, int *);
+static unsigned long insert_mb6 (unsigned long, long, ppc_cpu_t, const char **);
+static long extract_mb6 (unsigned long, ppc_cpu_t, int *);
+static long extract_nb (unsigned long, ppc_cpu_t, int *);
+static unsigned long insert_nsi (unsigned long, long, ppc_cpu_t, const char **);
+static long extract_nsi (unsigned long, ppc_cpu_t, int *);
+static unsigned long insert_ral (unsigned long, long, ppc_cpu_t, const char **);
+static unsigned long insert_ram (unsigned long, long, ppc_cpu_t, const char **);
+static unsigned long insert_raq (unsigned long, long, ppc_cpu_t, const char **);
+static unsigned long insert_ras (unsigned long, long, ppc_cpu_t, const char **);
+static unsigned long insert_rbs (unsigned long, long, ppc_cpu_t, const char **);
+static long extract_rbs (unsigned long, ppc_cpu_t, int *);
+static unsigned long insert_sh6 (unsigned long, long, ppc_cpu_t, const char **);
+static long extract_sh6 (unsigned long, ppc_cpu_t, int *);
+static unsigned long insert_spr (unsigned long, long, ppc_cpu_t, const char **);
+static long extract_spr (unsigned long, ppc_cpu_t, int *);
+static unsigned long insert_sprg (unsigned long, long, ppc_cpu_t, const char **);
+static long extract_sprg (unsigned long, ppc_cpu_t, int *);
+static unsigned long insert_tbr (unsigned long, long, ppc_cpu_t, const char **);
+static long extract_tbr (unsigned long, ppc_cpu_t, int *);
 \f
 /* The operands table.
 
@@ -592,7 +592,7 @@ const unsigned int num_powerpc_operands = (sizeof (powerpc_operands)
 static unsigned long
 insert_bat (unsigned long insn,
            long value ATTRIBUTE_UNUSED,
-           int dialect ATTRIBUTE_UNUSED,
+           ppc_cpu_t dialect ATTRIBUTE_UNUSED,
            const char **errmsg ATTRIBUTE_UNUSED)
 {
   return insn | (((insn >> 21) & 0x1f) << 16);
@@ -600,7 +600,7 @@ insert_bat (unsigned long insn,
 
 static long
 extract_bat (unsigned long insn,
-            int dialect ATTRIBUTE_UNUSED,
+            ppc_cpu_t dialect ATTRIBUTE_UNUSED,
             int *invalid)
 {
   if (((insn >> 21) & 0x1f) != ((insn >> 16) & 0x1f))
@@ -617,7 +617,7 @@ extract_bat (unsigned long insn,
 static unsigned long
 insert_bba (unsigned long insn,
            long value ATTRIBUTE_UNUSED,
-           int dialect ATTRIBUTE_UNUSED,
+           ppc_cpu_t dialect ATTRIBUTE_UNUSED,
            const char **errmsg ATTRIBUTE_UNUSED)
 {
   return insn | (((insn >> 16) & 0x1f) << 11);
@@ -625,7 +625,7 @@ insert_bba (unsigned long insn,
 
 static long
 extract_bba (unsigned long insn,
-            int dialect ATTRIBUTE_UNUSED,
+            ppc_cpu_t dialect ATTRIBUTE_UNUSED,
             int *invalid)
 {
   if (((insn >> 16) & 0x1f) != ((insn >> 11) & 0x1f))
@@ -653,7 +653,7 @@ extract_bba (unsigned long insn,
 static unsigned long
 insert_bdm (unsigned long insn,
            long value,
-           int dialect,
+           ppc_cpu_t dialect,
            const char **errmsg ATTRIBUTE_UNUSED)
 {
   if ((dialect & PPC_OPCODE_POWER4) == 0)
@@ -673,7 +673,7 @@ insert_bdm (unsigned long insn,
 
 static long
 extract_bdm (unsigned long insn,
-            int dialect,
+            ppc_cpu_t dialect,
             int *invalid)
 {
   if ((dialect & PPC_OPCODE_POWER4) == 0)
@@ -698,7 +698,7 @@ extract_bdm (unsigned long insn,
 static unsigned long
 insert_bdp (unsigned long insn,
            long value,
-           int dialect,
+           ppc_cpu_t dialect,
            const char **errmsg ATTRIBUTE_UNUSED)
 {
   if ((dialect & PPC_OPCODE_POWER4) == 0)
@@ -718,7 +718,7 @@ insert_bdp (unsigned long insn,
 
 static long
 extract_bdp (unsigned long insn,
-            int dialect,
+            ppc_cpu_t dialect,
             int *invalid)
 {
   if ((dialect & PPC_OPCODE_POWER4) == 0)
@@ -739,7 +739,7 @@ extract_bdp (unsigned long insn,
 /* Check for legal values of a BO field.  */
 
 static int
-valid_bo (long value, int dialect, int extract)
+valid_bo (long value, ppc_cpu_t dialect, int extract)
 {
   if ((dialect & PPC_OPCODE_POWER4) == 0)
     {
@@ -801,7 +801,7 @@ valid_bo (long value, int dialect, int extract)
 static unsigned long
 insert_bo (unsigned long insn,
           long value,
-          int dialect,
+          ppc_cpu_t dialect,
           const char **errmsg)
 {
   if (!valid_bo (value, dialect, 0))
@@ -811,7 +811,7 @@ insert_bo (unsigned long insn,
 
 static long
 extract_bo (unsigned long insn,
-           int dialect,
+           ppc_cpu_t dialect,
            int *invalid)
 {
   long value;
@@ -829,7 +829,7 @@ extract_bo (unsigned long insn,
 static unsigned long
 insert_boe (unsigned long insn,
            long value,
-           int dialect,
+           ppc_cpu_t dialect,
            const char **errmsg)
 {
   if (!valid_bo (value, dialect, 0))
@@ -842,7 +842,7 @@ insert_boe (unsigned long insn,
 
 static long
 extract_boe (unsigned long insn,
-            int dialect,
+            ppc_cpu_t dialect,
             int *invalid)
 {
   long value;
@@ -858,7 +858,7 @@ extract_boe (unsigned long insn,
 static unsigned long
 insert_fxm (unsigned long insn,
            long value,
-           int dialect,
+           ppc_cpu_t dialect,
            const char **errmsg)
 {
   /* If we're handling the mfocrf and mtocrf insns ensure that exactly
@@ -902,7 +902,7 @@ insert_fxm (unsigned long insn,
 
 static long
 extract_fxm (unsigned long insn,
-            int dialect ATTRIBUTE_UNUSED,
+            ppc_cpu_t dialect ATTRIBUTE_UNUSED,
             int *invalid)
 {
   long mask = (insn >> 12) & 0xff;
@@ -933,7 +933,7 @@ extract_fxm (unsigned long insn,
 static unsigned long
 insert_mbe (unsigned long insn,
            long value,
-           int dialect ATTRIBUTE_UNUSED,
+           ppc_cpu_t dialect ATTRIBUTE_UNUSED,
            const char **errmsg)
 {
   unsigned long uval, mask;
@@ -985,7 +985,7 @@ insert_mbe (unsigned long insn,
 
 static long
 extract_mbe (unsigned long insn,
-            int dialect ATTRIBUTE_UNUSED,
+            ppc_cpu_t dialect ATTRIBUTE_UNUSED,
             int *invalid)
 {
   long ret;
@@ -1019,7 +1019,7 @@ extract_mbe (unsigned long insn,
 static unsigned long
 insert_mb6 (unsigned long insn,
            long value,
-           int dialect ATTRIBUTE_UNUSED,
+           ppc_cpu_t dialect ATTRIBUTE_UNUSED,
            const char **errmsg ATTRIBUTE_UNUSED)
 {
   return insn | ((value & 0x1f) << 6) | (value & 0x20);
@@ -1027,7 +1027,7 @@ insert_mb6 (unsigned long insn,
 
 static long
 extract_mb6 (unsigned long insn,
-            int dialect ATTRIBUTE_UNUSED,
+            ppc_cpu_t dialect ATTRIBUTE_UNUSED,
             int *invalid ATTRIBUTE_UNUSED)
 {
   return ((insn >> 6) & 0x1f) | (insn & 0x20);
@@ -1038,7 +1038,7 @@ extract_mb6 (unsigned long insn,
 
 static long
 extract_nb (unsigned long insn,
-           int dialect ATTRIBUTE_UNUSED,
+           ppc_cpu_t dialect ATTRIBUTE_UNUSED,
            int *invalid ATTRIBUTE_UNUSED)
 {
   long ret;
@@ -1057,7 +1057,7 @@ extract_nb (unsigned long insn,
 static unsigned long
 insert_nsi (unsigned long insn,
            long value,
-           int dialect ATTRIBUTE_UNUSED,
+           ppc_cpu_t dialect ATTRIBUTE_UNUSED,
            const char **errmsg ATTRIBUTE_UNUSED)
 {
   return insn | (-value & 0xffff);
@@ -1065,7 +1065,7 @@ insert_nsi (unsigned long insn,
 
 static long
 extract_nsi (unsigned long insn,
-            int dialect ATTRIBUTE_UNUSED,
+            ppc_cpu_t dialect ATTRIBUTE_UNUSED,
             int *invalid)
 {
   *invalid = 1;
@@ -1079,7 +1079,7 @@ extract_nsi (unsigned long insn,
 static unsigned long
 insert_ral (unsigned long insn,
            long value,
-           int dialect ATTRIBUTE_UNUSED,
+           ppc_cpu_t dialect ATTRIBUTE_UNUSED,
            const char **errmsg)
 {
   if (value == 0
@@ -1094,7 +1094,7 @@ insert_ral (unsigned long insn,
 static unsigned long
 insert_ram (unsigned long insn,
            long value,
-           int dialect ATTRIBUTE_UNUSED,
+           ppc_cpu_t dialect ATTRIBUTE_UNUSED,
            const char **errmsg)
 {
   if ((unsigned long) value >= ((insn >> 21) & 0x1f))
@@ -1108,7 +1108,7 @@ insert_ram (unsigned long insn,
 static unsigned long
 insert_raq (unsigned long insn,
            long value,
-           int dialect ATTRIBUTE_UNUSED,
+           ppc_cpu_t dialect ATTRIBUTE_UNUSED,
            const char **errmsg)
 {
   long rtvalue = (insn & RT_MASK) >> 21;
@@ -1125,7 +1125,7 @@ insert_raq (unsigned long insn,
 static unsigned long
 insert_ras (unsigned long insn,
            long value,
-           int dialect ATTRIBUTE_UNUSED,
+           ppc_cpu_t dialect ATTRIBUTE_UNUSED,
            const char **errmsg)
 {
   if (value == 0)
@@ -1142,7 +1142,7 @@ insert_ras (unsigned long insn,
 static unsigned long
 insert_rbs (unsigned long insn,
            long value ATTRIBUTE_UNUSED,
-           int dialect ATTRIBUTE_UNUSED,
+           ppc_cpu_t dialect ATTRIBUTE_UNUSED,
            const char **errmsg ATTRIBUTE_UNUSED)
 {
   return insn | (((insn >> 21) & 0x1f) << 11);
@@ -1150,7 +1150,7 @@ insert_rbs (unsigned long insn,
 
 static long
 extract_rbs (unsigned long insn,
-            int dialect ATTRIBUTE_UNUSED,
+            ppc_cpu_t dialect ATTRIBUTE_UNUSED,
             int *invalid)
 {
   if (((insn >> 21) & 0x1f) != ((insn >> 11) & 0x1f))
@@ -1163,7 +1163,7 @@ extract_rbs (unsigned long insn,
 static unsigned long
 insert_sh6 (unsigned long insn,
            long value,
-           int dialect ATTRIBUTE_UNUSED,
+           ppc_cpu_t dialect ATTRIBUTE_UNUSED,
            const char **errmsg ATTRIBUTE_UNUSED)
 {
   return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4);
@@ -1171,7 +1171,7 @@ insert_sh6 (unsigned long insn,
 
 static long
 extract_sh6 (unsigned long insn,
-            int dialect ATTRIBUTE_UNUSED,
+            ppc_cpu_t dialect ATTRIBUTE_UNUSED,
             int *invalid ATTRIBUTE_UNUSED)
 {
   return ((insn >> 11) & 0x1f) | ((insn << 4) & 0x20);
@@ -1183,7 +1183,7 @@ extract_sh6 (unsigned long insn,
 static unsigned long
 insert_spr (unsigned long insn,
            long value,
-           int dialect ATTRIBUTE_UNUSED,
+           ppc_cpu_t dialect ATTRIBUTE_UNUSED,
            const char **errmsg ATTRIBUTE_UNUSED)
 {
   return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6);
@@ -1191,7 +1191,7 @@ insert_spr (unsigned long insn,
 
 static long
 extract_spr (unsigned long insn,
-            int dialect ATTRIBUTE_UNUSED,
+            ppc_cpu_t dialect ATTRIBUTE_UNUSED,
             int *invalid ATTRIBUTE_UNUSED)
 {
   return ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0);
@@ -1202,7 +1202,7 @@ extract_spr (unsigned long insn,
 static unsigned long
 insert_sprg (unsigned long insn,
             long value,
-            int dialect,
+            ppc_cpu_t dialect,
             const char **errmsg)
 {
   /* This check uses PPC_OPCODE_403 because PPC405 is later defined
@@ -1223,7 +1223,7 @@ insert_sprg (unsigned long insn,
 
 static long
 extract_sprg (unsigned long insn,
-             int dialect,
+             ppc_cpu_t dialect,
              int *invalid)
 {
   unsigned long val = (insn >> 16) & 0x1f;
@@ -1251,7 +1251,7 @@ extract_sprg (unsigned long insn,
 static unsigned long
 insert_tbr (unsigned long insn,
            long value,
-           int dialect ATTRIBUTE_UNUSED,
+           ppc_cpu_t dialect ATTRIBUTE_UNUSED,
            const char **errmsg ATTRIBUTE_UNUSED)
 {
   if (value == 0)
@@ -1261,7 +1261,7 @@ insert_tbr (unsigned long insn,
 
 static long
 extract_tbr (unsigned long insn,
-            int dialect ATTRIBUTE_UNUSED,
+            ppc_cpu_t dialect ATTRIBUTE_UNUSED,
             int *invalid ATTRIBUTE_UNUSED)
 {
   long ret;