Fixed reloc generation to match latest opcoide list from cgen.

This commit is contained in:
Nick Clifton
1998-11-17 23:28:19 +00:00
parent a88a845a87
commit 2ca484a711
2 changed files with 23 additions and 23 deletions

View File

@ -1,5 +1,9 @@
Tue Nov 17 13:42:42 1998 Nick Clifton <nickc@cygnus.com> Tue Nov 17 13:42:42 1998 Nick Clifton <nickc@cygnus.com>
start-sanitize-fr30
* config/tc-fr30.c (md_cgen_lookup_reloc): Updated to match latest
opcode list.
end-sanitize-fr30
* listing.c: Ignore line terminator characters found inside * listing.c: Ignore line terminator characters found inside
strings. strings.

View File

@ -453,13 +453,17 @@ md_cgen_lookup_reloc (insn, operand, fixP)
{ {
switch (CGEN_OPERAND_TYPE (operand)) switch (CGEN_OPERAND_TYPE (operand))
{ {
case FR30_OPERAND_PC : return BFD_RELOC_FR30_12_PCREL; case FR30_OPERAND_LABEL9: fixP->fx_pcrel = 1; return BFD_RELOC_FR30_9_PCREL;
case FR30_OPERAND_RI : case FR30_OPERAND_LABEL12: fixP->fx_pcrel = 1; return BFD_RELOC_FR30_12_PCREL;
case FR30_OPERAND_RJ : case FR30_OPERAND_DISP10: return BFD_RELOC_FR30_10_IN_8;
case FR30_OPERAND_NBIT : case FR30_OPERAND_DISP9: return BFD_RELOC_FR30_9_IN_8;
case FR30_OPERAND_VBIT : case FR30_OPERAND_DISP8: return BFD_RELOC_FR30_8_IN_8;
case FR30_OPERAND_ZBIT : case FR30_OPERAND_UDISP6: return BFD_RELOC_FR30_6_IN_4;
case FR30_OPERAND_CBIT : case FR30_OPERAND_I8: return BFD_RELOC_8;
/* waiting for these to be defined by Dave....
case FR30_OPERAND_I20: return BFD_RELOC_FR30_20;
case FR30_OPERAND_I30: return BFD_RELOC_32;
*/
default : /* avoid -Wall warning */ default : /* avoid -Wall warning */
break; break;
} }
@ -601,9 +605,9 @@ fr30_is_colon_insn (start)
static char * delay_insns [] = static char * delay_insns [] =
{ {
"call", "jmp", "ret", "bra", "bno", "call", "jmp", "ret", "bra", "bno",
"beq", "bne", "bc", "bnc", "bn", "bp", "beq", "bne", "bc", "bnc", "bn",
"bv", "bnv", "blt", "bge", "ble", "bgt", "bp", "bv", "bnv", "blt", "bge",
"bls", "bhi" "ble", "bgt", "bls", "bhi"
}; };
for (i = sizeof (delay_insns) / sizeof (delay_insns[0]); i--;) for (i = sizeof (delay_insns) / sizeof (delay_insns[0]); i--;)
@ -615,10 +619,8 @@ fr30_is_colon_insn (start)
continue; continue;
while (len --) while (len --)
{ if (tolower (start [len]) != insn [len])
if (tolower (start [len]) != insn [len]) break;
break;
}
if (len == -1) if (len == -1)
return restore_colon (1); return restore_colon (1);
@ -631,21 +633,15 @@ fr30_is_colon_insn (start)
/* Check to see if the text following the colon is '8' */ /* Check to see if the text following the colon is '8' */
if (i_l_p[1] == '8' && (i_l_p[2] == ' ' || i_l_p[2] == '\t')) if (i_l_p[1] == '8' && (i_l_p[2] == ' ' || i_l_p[2] == '\t'))
{ return restore_colon (2);
return restore_colon (2);
}
/* Check to see if the text following the colon is '20' */ /* Check to see if the text following the colon is '20' */
else if (i_l_p[1] == '2' && i_l_p[2] =='0' && (i_l_p[3] == ' ' || i_l_p[3] == '\t')) else if (i_l_p[1] == '2' && i_l_p[2] =='0' && (i_l_p[3] == ' ' || i_l_p[3] == '\t'))
{ return restore_colon (3);
return restore_colon (3);
}
/* Check to see if the text following the colon is '32' */ /* Check to see if the text following the colon is '32' */
else if (i_l_p[1] == '3' && i_l_p[2] =='2' && (i_l_p[3] == ' ' || i_l_p[3] == '\t')) else if (i_l_p[1] == '3' && i_l_p[2] =='2' && (i_l_p[3] == ' ' || i_l_p[3] == '\t'))
{ return restore_colon (3);
return restore_colon (3);
}
return 0; return 0;
} }