* cgen-asm.c (cgen_asm_parse_operand_fn): New global.
(cgen_parse_{{,un}signed_integer,address}): Update call to cgen_asm_parse_operand_fn. * m32r-asm.c (parse_insn_normal): Delete call to cgen_asm_init_parse. (m32r_cgen_assemble_insn): New operand `errmsg'. Delete call to as_bad, return error message to caller. (m32r_cgen_asm_hash_keywords): #if 0 out.
This commit is contained in:
parent
fe2dd6424b
commit
5b3b8cb071
3 changed files with 37 additions and 11 deletions
|
@ -1,3 +1,13 @@
|
|||
Thu Apr 10 14:44:56 1997 Doug Evans <dje@canuck.cygnus.com>
|
||||
|
||||
* cgen-asm.c (cgen_asm_parse_operand_fn): New global.
|
||||
(cgen_parse_{{,un}signed_integer,address}): Update call to
|
||||
cgen_asm_parse_operand_fn.
|
||||
* m32r-asm.c (parse_insn_normal): Delete call to cgen_asm_init_parse.
|
||||
(m32r_cgen_assemble_insn): New operand `errmsg'.
|
||||
Delete call to as_bad, return error message to caller.
|
||||
(m32r_cgen_asm_hash_keywords): #if 0 out.
|
||||
|
||||
Wed Apr 9 12:05:25 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
||||
|
||||
* m68k-dis.c (print_insn_arg) [case 'd']: Print as address register,
|
||||
|
|
|
@ -31,6 +31,10 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#include "bfd.h"
|
||||
#include "opcode/cgen.h"
|
||||
|
||||
/* Operand parsing callback. */
|
||||
const char * (*cgen_asm_parse_operand_fn)
|
||||
PARAMS ((const char **, int, int, enum cgen_asm_result *, bfd_vma *));
|
||||
|
||||
/* This is not published as part of the public interface so we don't
|
||||
declare this in cgen.h. */
|
||||
extern CGEN_OPCODE_DATA *cgen_current_opcode_data;
|
||||
|
@ -176,8 +180,8 @@ cgen_parse_signed_integer (strp, opindex, min, max, valuep)
|
|||
enum cgen_asm_result result;
|
||||
const char *errmsg;
|
||||
|
||||
errmsg = cgen_asm_parse_operand (strp, opindex, BFD_RELOC_NONE,
|
||||
&result, &value);
|
||||
errmsg = (*cgen_asm_parse_operand_fn) (strp, opindex, BFD_RELOC_NONE,
|
||||
&result, &value);
|
||||
/* FIXME: Examine `result'. */
|
||||
if (!errmsg)
|
||||
{
|
||||
|
@ -201,8 +205,8 @@ cgen_parse_unsigned_integer (strp, opindex, min, max, valuep)
|
|||
enum cgen_asm_result result;
|
||||
const char *errmsg;
|
||||
|
||||
errmsg = cgen_asm_parse_operand (strp, opindex, BFD_RELOC_NONE,
|
||||
&result, &value);
|
||||
errmsg = (*cgen_asm_parse_operand_fn) (strp, opindex, BFD_RELOC_NONE,
|
||||
&result, &value);
|
||||
/* FIXME: Examine `result'. */
|
||||
if (!errmsg)
|
||||
{
|
||||
|
@ -226,7 +230,8 @@ cgen_parse_address (strp, opindex, opinfo, valuep)
|
|||
enum cgen_asm_result result;
|
||||
const char *errmsg;
|
||||
|
||||
errmsg = cgen_asm_parse_operand (strp, opindex, opinfo, &result, &value);
|
||||
errmsg = (*cgen_asm_parse_operand_fn) (strp, opindex, opinfo,
|
||||
&result, &value);
|
||||
/* FIXME: Examine `result'. */
|
||||
if (!errmsg)
|
||||
{
|
||||
|
|
|
@ -551,7 +551,6 @@ parse_insn_normal (insn, strp, fields)
|
|||
#endif
|
||||
|
||||
CGEN_INIT_PARSE ();
|
||||
cgen_asm_init_parse ();
|
||||
#ifdef CGEN_MNEMONIC_OPERANDS
|
||||
past_opcode_p = 0;
|
||||
#endif
|
||||
|
@ -678,10 +677,11 @@ insert_insn_normal (insn, fields, buffer)
|
|||
printed). */
|
||||
|
||||
const struct cgen_insn *
|
||||
m32r_cgen_assemble_insn (str, fields, buf)
|
||||
m32r_cgen_assemble_insn (str, fields, buf, errmsg)
|
||||
const char *str;
|
||||
struct cgen_fields *fields;
|
||||
cgen_insn_t *buf;
|
||||
char **errmsg;
|
||||
{
|
||||
const char *start;
|
||||
CGEN_INSN_LIST *ilist;
|
||||
|
@ -740,13 +740,22 @@ m32r_cgen_assemble_insn (str, fields, buf)
|
|||
/* Try the next entry. */
|
||||
}
|
||||
|
||||
/* FIXME: Define this as a callback, or pass back string? */
|
||||
as_bad ("bad instruction `%s'", start);
|
||||
return NULL;
|
||||
/* FIXME: We can return a better error message than this.
|
||||
Need to track why it failed and pick the right one. */
|
||||
{
|
||||
static char errbuf[100];
|
||||
sprintf (errbuf, "bad instruction `%.50s%s'",
|
||||
start, strlen (start) > 50 ? "..." : "");
|
||||
*errmsg = errbuf;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
#if 0 /* This calls back to GAS which we can't do without care. */
|
||||
|
||||
/* Record each member of OPVALS in the assembler's symbol table.
|
||||
FIXME: Not currently used. */
|
||||
This lets GAS parse registers for us.
|
||||
??? Interesting idea but not currently used. */
|
||||
|
||||
void
|
||||
m32r_cgen_asm_hash_keywords (opvals)
|
||||
|
@ -764,3 +773,5 @@ m32r_cgen_asm_hash_keywords (opvals)
|
|||
cgen_asm_record_register (ke->name, ke->value);
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* 0 */
|
||||
|
|
Loading…
Add table
Reference in a new issue