* config/tc-v850.c (md_assemble): Handle TDAOFF relocs
differently for movea & sst/sld insns. Working on tda for the v850.
This commit is contained in:
parent
de145351e8
commit
8ea15b863f
@ -1,3 +1,10 @@
|
|||||||
|
start-sanitize-v850
|
||||||
|
Tue Oct 22 22:01:25 1996 Jeffrey A Law (law@cygnus.com)
|
||||||
|
|
||||||
|
* config/tc-v850.c (md_assemble): Handle TDAOFF relocs
|
||||||
|
differently for movea & sst/sld insns.
|
||||||
|
|
||||||
|
end-sanitize-v850
|
||||||
Tue Oct 22 17:09:32 1996 Michael Meissner <meissner@tiktok.cygnus.com>
|
Tue Oct 22 17:09:32 1996 Michael Meissner <meissner@tiktok.cygnus.com>
|
||||||
|
|
||||||
* config/tc-d10v.c (parallel_ok): Don't allow illegal combinations
|
* config/tc-d10v.c (parallel_ok): Don't allow illegal combinations
|
||||||
|
@ -501,7 +501,7 @@ md_assemble (str)
|
|||||||
struct v850_opcode *next_opcode;
|
struct v850_opcode *next_opcode;
|
||||||
const unsigned char *opindex_ptr;
|
const unsigned char *opindex_ptr;
|
||||||
int next_opindex;
|
int next_opindex;
|
||||||
unsigned long insn, size;
|
unsigned long insn, insn_size;
|
||||||
char *f;
|
char *f;
|
||||||
int i;
|
int i;
|
||||||
int match;
|
int match;
|
||||||
@ -749,11 +749,11 @@ md_assemble (str)
|
|||||||
|
|
||||||
Four byte insns have an opcode with the two high bits on. */
|
Four byte insns have an opcode with the two high bits on. */
|
||||||
if ((insn & 0x0600) == 0x0600)
|
if ((insn & 0x0600) == 0x0600)
|
||||||
size = 4;
|
insn_size = 4;
|
||||||
else
|
else
|
||||||
size = 2;
|
insn_size = 2;
|
||||||
f = frag_more (size);
|
f = frag_more (insn_size);
|
||||||
md_number_to_chars (f, insn, size);
|
md_number_to_chars (f, insn, insn_size);
|
||||||
|
|
||||||
/* Create any fixups. At this point we do not use a
|
/* Create any fixups. At this point we do not use a
|
||||||
bfd_reloc_code_real_type, but instead just use the
|
bfd_reloc_code_real_type, but instead just use the
|
||||||
@ -777,11 +777,16 @@ md_assemble (str)
|
|||||||
abort();
|
abort();
|
||||||
|
|
||||||
size = bfd_get_reloc_size (reloc_howto);
|
size = bfd_get_reloc_size (reloc_howto);
|
||||||
offset = 4 - size;
|
|
||||||
|
/* The "size" of a TDA_OFFSET reloc varies depending
|
||||||
|
on what kind of instruction it's used in! */
|
||||||
|
if (reloc_howto->type == 11 && insn_size > 2)
|
||||||
|
size = 2;
|
||||||
|
|
||||||
if (size < 1 || size > 4)
|
if (size < 1 || size > 4)
|
||||||
abort();
|
abort();
|
||||||
|
|
||||||
|
offset = 4 - size;
|
||||||
fixP = fix_new_exp (frag_now, f - frag_now->fr_literal + offset, size,
|
fixP = fix_new_exp (frag_now, f - frag_now->fr_literal + offset, size,
|
||||||
&fixups[i].exp,
|
&fixups[i].exp,
|
||||||
reloc_howto->pc_relative,
|
reloc_howto->pc_relative,
|
||||||
|
Loading…
Reference in New Issue
Block a user