* config/tc-m32r.c (md_begin): Set cgen_asm_parse_operand_fn.
authorDavid Edelsohn <dje.gcc@gmail.com>
Thu, 10 Apr 1997 21:54:15 +0000 (21:54 +0000)
committerDavid Edelsohn <dje.gcc@gmail.com>
Thu, 10 Apr 1997 21:54:15 +0000 (21:54 +0000)
(md_assemble): Call cgen_asm_init_parse.
Update call to m32r_cgen_assemble_insn, call as_bad if assembly failed.

gas/ChangeLog
gas/config/tc-m32r.c

index 68c6194b39a0404918e4112b2c0ba5a6b3bf2b35..880e9a56c333b67a545fdcf02acd3bd8ae6f9082 100644 (file)
@@ -1,3 +1,9 @@
+Thu Apr 10 14:40:00 1997  Doug Evans  <dje@canuck.cygnus.com>
+
+       * config/tc-m32r.c (md_begin): Set cgen_asm_parse_operand_fn.
+       (md_assemble): Call cgen_asm_init_parse.
+       Update call to m32r_cgen_assemble_insn, call as_bad if assembly failed.
+
 Wed Apr  9 11:49:41 1997  Ian Lance Taylor  <ian@cygnus.com>
 
        * config/tc-m68k.c (m68k_ip): Handle #j.
index 4761e3d6475e0a9c1002aa9c8064e9eb96a64d3a..43bf7f75dc9e0c7db8580e34863905a8042a8b97 100644 (file)
@@ -252,6 +252,10 @@ md_begin ()
   subsegT subseg;
 
   /* Initialize the `cgen' interface.  */
+
+  /* This is a callback from cgen to gas to parse operands.  */
+  cgen_asm_parse_operand_fn = cgen_asm_parse_operand;
+  /* Set the machine number and endian.  */
   CGEN_SYM (init_asm) (0 /* mach number */,
                       target_big_endian ? CGEN_ENDIAN_BIG : CGEN_ENDIAN_LITTLE);
 
@@ -306,10 +310,17 @@ md_assemble (str)
 #endif
   struct cgen_fields fields;
   const struct cgen_insn *insn;
+  char *errmsg;
+
+  /* Initialize GAS's cgen interface for a new instruction.  */
+  cgen_asm_init_parse ();
 
-  insn = CGEN_SYM (assemble_insn) (str, &fields, buffer);
+  insn = CGEN_SYM (assemble_insn) (str, &fields, buffer, &errmsg);
   if (!insn)
-    return;
+    {
+      as_bad (errmsg);
+      return;
+    }
 
   if (CGEN_INSN_BITSIZE (insn) == 32)
     {