* config/tc-dvp.c (assemble_vif): Put relaxable insns in their
own fragment.
This commit is contained in:
parent
f6f81e4a92
commit
050ac694c5
|
@ -1,3 +1,10 @@
|
|||
start-sanitize-sky
|
||||
Fri Apr 3 12:13:03 1998 Doug Evans <devans@canuck.cygnus.com>
|
||||
|
||||
* config/tc-dvp.c (assemble_vif): Put relaxable insns in their
|
||||
own fragment.
|
||||
|
||||
end-sanitize-sky
|
||||
Fri Apr 3 11:58:19 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
|
||||
|
||||
* config/tc-i386.h: Reorder operand flags and opcode modifier
|
||||
|
|
|
@ -545,6 +545,15 @@ assemble_vif (str)
|
|||
Do this by putting the mpg insn in a relaxable fragment
|
||||
with a symbol that marks the beginning of the aligned data. */
|
||||
|
||||
/* Ensure relaxable fragments are in their own fragment.
|
||||
Otherwise there can be two fixups in one fragment
|
||||
(e.g. a dma tag followed by a `direct' insn) and md_apply_fix3
|
||||
has trouble determining where to apply the fixup (because
|
||||
we set fr_opcode for the `direct' insn because it can move
|
||||
in the fragment). */
|
||||
frag_wane (frag_now);
|
||||
frag_new (0);
|
||||
|
||||
/* This dance with frag_grow is to ensure the variable part and
|
||||
fixed part are in the same fragment. */
|
||||
frag_grow (8);
|
||||
|
@ -588,6 +597,15 @@ assemble_vif (str)
|
|||
Do this by putting the direct insn in a relaxable fragment.
|
||||
with a symbol that marks the beginning of the aligned data. */
|
||||
|
||||
/* Ensure relaxable fragments are in their own fragment.
|
||||
Otherwise there can be two fixups in one fragment
|
||||
(e.g. a dma tag followed by a `direct' insn) and md_apply_fix3
|
||||
has trouble determining where to apply the fixup (because
|
||||
we set fr_opcode for the `direct' insn because it can move
|
||||
in the fragment). */
|
||||
frag_wane (frag_now);
|
||||
frag_new (0);
|
||||
|
||||
/* This dance with frag_grow is to ensure the variable part and
|
||||
fixed part are in the same fragment. */
|
||||
frag_grow (16);
|
||||
|
@ -2614,9 +2632,6 @@ s_endunpack (internal_p)
|
|||
return;
|
||||
}
|
||||
|
||||
/* Round up to next word boundary. */
|
||||
frag_align (2, 0, 0);
|
||||
|
||||
/* Record in the end data symbol the current location. */
|
||||
if (now_seg != S_GET_SEGMENT (vif_data_end))
|
||||
as_bad (".endunpack in different section");
|
||||
|
@ -2627,10 +2642,17 @@ s_endunpack (internal_p)
|
|||
{
|
||||
symbolS *s;
|
||||
s = expr_build_binary (O_subtract, vif_data_end, vif_data_start);
|
||||
/* Round up to next quadword boundary. */
|
||||
/* FIXME: This isn't correct, the size of the input data is not the
|
||||
size of the output data. Someone else can fix this. */
|
||||
s = expr_build_binary (O_add, s, expr_build_uconstant (15));
|
||||
s = expr_build_binary (O_divide, s, expr_build_uconstant (16));
|
||||
unpackloc_sym = expr_build_binary (O_add, unpackloc_sym, s);
|
||||
}
|
||||
|
||||
/* Round up to next word boundary. */
|
||||
frag_align (2, 0, 0);
|
||||
|
||||
set_asm_state (ASM_INIT);
|
||||
|
||||
/* Needn't be reset, but to catch bugs it is. */
|
||||
|
|
Loading…
Reference in New Issue