* config/tc-d30v.c (do_assemble): Accept a new parameter requesting

a short format insn.
	(md_assemble): Set it for explicitly packed insns.

PR 14601
This commit is contained in:
Richard Henderson 1998-05-06 18:56:08 +00:00
parent 6711d1ef23
commit daaef8f8df
2 changed files with 24 additions and 10 deletions

View file

@ -1,3 +1,14 @@
Wed May 6 11:51:51 1998 Richard Henderson <rth@cygnus.com>
* config/tc-d30v.c (do_assemble): Accept a new parameter requesting
a short format insn.
(md_assemble): Set it for explicitly packed insns.
Tue May 5 13:23:13 1998 Nick Clifton <nickc@cygnus.com>
* config/obj-coff.c (c_symbol_merge): Do not take address of
native fields when performing the memcpy.
Tue May 5 13:10:41 1998 Gavin Koch <gavin@cygnus.com>
* config/tc-mips.c (macro,macro2): Implement

View file

@ -102,7 +102,8 @@ static void write_long PARAMS ((struct d30v_insn *opcode, long long insn, Fixups
static void write_1_short PARAMS ((struct d30v_insn *opcode, long long insn, Fixups *fx));
static int write_2_short PARAMS ((struct d30v_insn *opcode1, long long insn1,
struct d30v_insn *opcode2, long long insn2, exec_type_enum exec_type, Fixups *fx));
static long long do_assemble PARAMS ((char *str, struct d30v_insn *opcode));
static long long do_assemble PARAMS ((char *str, struct d30v_insn *opcode,
int shortp));
static int parallel_ok PARAMS ((struct d30v_insn *opcode1, unsigned long insn1,
struct d30v_insn *opcode2, unsigned long insn2,
exec_type_enum exec_type));
@ -224,10 +225,10 @@ void
md_show_usage (stream)
FILE *stream;
{
fprintf(stream, (_"\nD30V options:\n\
fprintf(stream, (_("\nD30V options:\n\
-O Make adjacent short instructions parallel if possible.\n\
-n Warn about all NOPs inserted by the assembler.\n\
-N Warn about NOPs inserted after word multiplies.\n"));
-N Warn about NOPs inserted after word multiplies.\n")));
}
int
@ -1089,7 +1090,7 @@ md_assemble (str)
d30v_cleanup();
/* assemble first instruction and save it */
prev_insn = do_assemble (str, &prev_opcode);
prev_insn = do_assemble (str, &prev_opcode, 1);
if (prev_insn == -1)
as_fatal (_("cannot assemble instruction "));
if (prev_opcode.form->form >= LONG)
@ -1099,10 +1100,11 @@ md_assemble (str)
}
}
insn = do_assemble (str, &opcode);
insn = do_assemble (str, &opcode,
(extype != EXEC_UNKNOWN || etype != EXEC_UNKNOWN));
if (insn == -1)
{
if (extype)
if (extype != EXEC_UNKNOWN)
{
etype = extype;
return;
@ -1110,10 +1112,10 @@ md_assemble (str)
as_fatal (_("cannot assemble instruction "));
}
if (etype)
if (etype != EXEC_UNKNOWN)
{
extype = etype;
etype = 0;
etype = EXEC_UNKNOWN;
}
/* Word multiply instructions must not be followed by either a load or a
@ -1191,14 +1193,15 @@ md_assemble (str)
/* it returns -1 (an invalid opcode) on error */
static long long
do_assemble (str, opcode)
do_assemble (str, opcode, shortp)
char *str;
struct d30v_insn *opcode;
int shortp;
{
unsigned char *op_start, *save;
unsigned char *op_end;
char name[20];
int cmp_hack, nlen = 0, fsize = 0;
int cmp_hack, nlen = 0, fsize = (shortp ? FORCE_SHORT : 0);
expressionS myops[6];
long long insn;