Mon Apr 6 17:08:47 1998 Doug Evans <devans@canuck.cygnus.com>
* config/tc-dvp.c (assemble_vif): Watch for macro insns.
+ 0 is a valid length value (= max+1).
+ (install_vif_length): 0 is a valid length value (= max+1).
end-sanitize-sky
Mon Apr 6 12:06:39 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
/* Ensure relaxable fragments are in their own fragment.
Otherwise md_apply_fix3 mishandles fixups to insns earlier
- in the fragment (because we set fr_opcode for the `direct' insn
+ in the fragment (because we set fr_opcode for the `mpg' insn
because it can move in the fragment). */
frag_wane (frag_now);
frag_new (0);
{
/* data_len == -1 means the value must be computed from
the data. */
- if (data_len == 0 || data_len <= -2)
+ if (data_len <= -2)
as_bad ("invalid data length");
if (output_vif && data_len != -1)
/* Advance over the '*'. */
++input_line_pointer;
}
- /* Check if this is a '*' for mpgloc. */
+ /* Check if this is a '*' for unpackloc. */
else if (cur_opcode
&& (cur_opcode->flags & VIF_OPCODE_UNPACK) != 0
&& (cur_operand->flags & DVP_OPERAND_UNPACK_ADDRESS) != 0
as_bad ("missing `stcycle', can't compute length of `unpack' insn");
len = 1;
}
- if (len < 1 || len > 256)
- as_bad ("`unpack' data length must be between 1 and 256");
+ if (len < 0 || len > 256)
+ as_bad ("`unpack' data length must be between 0 and 256");
+ /* 256 is recorded as 0 in the insn */
len = len == 256 ? 0 : len;
buf[2] = len;
}