* config/tc-w65.c (s_longa): Prototype. Make static, specify int arg.
(cons, s_align_bytes): Delete declaration. (relax): Delete. (md_begin): Constify "struct opinfo *" var. Don't try to make "name" strings common. (dot): Delete unused function. (w65_expression): Remove unused arg. (parse_exp): Prototype. Remove unused arg. Adjust w65_expression call. (get_operands): Prototype. Constify "struct opinfo *" arg. Fix parse_exp call. (get_specific): Prototype. Constify "struct opinfo *" arg and return value. (check): Remove unused function. (build_Mytes): Prototype. Constify "struct opinfo *" arg. Abort on unhandled switch case. (md_assemble): Remove unused op_start, op_end, nlen, p vars. Constify "opcode". (tc_crawl_symbol_chain): Delete unused function. (tc_headers_hook): Likewise. (tc_Nout_fix_to_chars): Likewise. (md_undefined_symbol): Add ATTRIBUTE_UNUSED. (md_parse_option): Likewise. (md_convert_frag): Likewise. (tc_coff_symbol_emit_hook): Likewise. (md_show_usage): Likewise. * config/tc-w65.h (tc_coff_sizemachdep): Declare. (TC_PARSE_CONS_EXPRESSION): w65_expression takes one arg. (w65_expression): Declare. * po/POTFILES.in: Regenerate.
This commit is contained in:
parent
dc8ec78b76
commit
6297c1fede
4 changed files with 64 additions and 93 deletions
|
@ -1,5 +1,37 @@
|
||||||
2002-12-03 Alan Modra <amodra@bigpond.net.au>
|
2002-12-03 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
|
* config/tc-w65.c (s_longa): Prototype. Make static, specify int arg.
|
||||||
|
(cons, s_align_bytes): Delete declaration.
|
||||||
|
(relax): Delete.
|
||||||
|
(md_begin): Constify "struct opinfo *" var. Don't try to make "name"
|
||||||
|
strings common.
|
||||||
|
(dot): Delete unused function.
|
||||||
|
(w65_expression): Remove unused arg.
|
||||||
|
(parse_exp): Prototype. Remove unused arg. Adjust w65_expression
|
||||||
|
call.
|
||||||
|
(get_operands): Prototype. Constify "struct opinfo *" arg. Fix
|
||||||
|
parse_exp call.
|
||||||
|
(get_specific): Prototype. Constify "struct opinfo *" arg and return
|
||||||
|
value.
|
||||||
|
(check): Remove unused function.
|
||||||
|
(build_Mytes): Prototype. Constify "struct opinfo *" arg. Abort
|
||||||
|
on unhandled switch case.
|
||||||
|
(md_assemble): Remove unused op_start, op_end, nlen, p vars. Constify
|
||||||
|
"opcode".
|
||||||
|
(tc_crawl_symbol_chain): Delete unused function.
|
||||||
|
(tc_headers_hook): Likewise.
|
||||||
|
(tc_Nout_fix_to_chars): Likewise.
|
||||||
|
(md_undefined_symbol): Add ATTRIBUTE_UNUSED.
|
||||||
|
(md_parse_option): Likewise.
|
||||||
|
(md_convert_frag): Likewise.
|
||||||
|
(tc_coff_symbol_emit_hook): Likewise.
|
||||||
|
(md_show_usage): Likewise.
|
||||||
|
* config/tc-w65.h (tc_coff_sizemachdep): Declare.
|
||||||
|
(TC_PARSE_CONS_EXPRESSION): w65_expression takes one arg.
|
||||||
|
(w65_expression): Declare.
|
||||||
|
|
||||||
|
* po/POTFILES.in: Regenerate.
|
||||||
|
|
||||||
* config/tc-arm.c (arm_force_relocation): Return 0 for ARM_IMMEDIATE
|
* config/tc-arm.c (arm_force_relocation): Return 0 for ARM_IMMEDIATE
|
||||||
and ARM_ADRL_IMMEDIATE.
|
and ARM_ADRL_IMMEDIATE.
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,12 @@ const char line_comment_chars[] = "!#";
|
||||||
#define OP_BVC 0x50
|
#define OP_BVC 0x50
|
||||||
#define OP_BVS 0x70
|
#define OP_BVS 0x70
|
||||||
|
|
||||||
void s_longa ();
|
static void s_longa PARAMS ((int));
|
||||||
|
static char *parse_exp PARAMS ((char *));
|
||||||
|
static char *get_operands PARAMS ((const struct opinfo *, char *));
|
||||||
|
static const struct opinfo *get_specific PARAMS ((const struct opinfo *));
|
||||||
|
static void build_Mytes PARAMS ((const struct opinfo *));
|
||||||
|
|
||||||
|
|
||||||
const pseudo_typeS md_pseudo_table[] = {
|
const pseudo_typeS md_pseudo_table[] = {
|
||||||
{"int", cons, 2},
|
{"int", cons, 2},
|
||||||
|
@ -59,15 +64,10 @@ const pseudo_typeS md_pseudo_table[] = {
|
||||||
{0, 0, 0}
|
{0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
void cons ();
|
|
||||||
void s_align_bytes ();
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
int md_reloc_size;
|
int md_reloc_size;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int relax; /* set if -relax seen */
|
|
||||||
|
|
||||||
const char EXP_CHARS[] = "eE";
|
const char EXP_CHARS[] = "eE";
|
||||||
|
|
||||||
/* Chars that mean this number is a floating point constant. */
|
/* Chars that mean this number is a floating point constant. */
|
||||||
|
@ -124,8 +124,9 @@ relax_typeS md_relax_table[C (END, 0)] = {
|
||||||
should set up all the tables, etc that the MD part of the assembler
|
should set up all the tables, etc that the MD part of the assembler
|
||||||
needs. */
|
needs. */
|
||||||
|
|
||||||
void
|
static void
|
||||||
s_longa (xmode)
|
s_longa (xmode)
|
||||||
|
int xmode;
|
||||||
{
|
{
|
||||||
int *p = xmode ? &X : &M;
|
int *p = xmode ? &X : &M;
|
||||||
while (*input_line_pointer == ' ')
|
while (*input_line_pointer == ' ')
|
||||||
|
@ -148,7 +149,7 @@ s_longa (xmode)
|
||||||
void
|
void
|
||||||
md_begin ()
|
md_begin ()
|
||||||
{
|
{
|
||||||
struct opinfo *opcode;
|
const struct opinfo *opcode;
|
||||||
char *prev_name = "";
|
char *prev_name = "";
|
||||||
|
|
||||||
opcode_hash_control = hash_new ();
|
opcode_hash_control = hash_new ();
|
||||||
|
@ -161,12 +162,6 @@ md_begin ()
|
||||||
prev_name = opcode->name;
|
prev_name = opcode->name;
|
||||||
hash_insert (opcode_hash_control, opcode->name, (char *) opcode);
|
hash_insert (opcode_hash_control, opcode->name, (char *) opcode);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
/* Make all the opcodes with the same name point to the same
|
|
||||||
string. */
|
|
||||||
opcode->name = prev_name;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
flag_signed_overflow_ok = 1;
|
flag_signed_overflow_ok = 1;
|
||||||
|
@ -174,30 +169,13 @@ md_begin ()
|
||||||
|
|
||||||
static expressionS immediate; /* absolute expression */
|
static expressionS immediate; /* absolute expression */
|
||||||
static expressionS immediate1; /* absolute expression */
|
static expressionS immediate1; /* absolute expression */
|
||||||
|
|
||||||
static symbolS *
|
|
||||||
dot ()
|
|
||||||
{
|
|
||||||
const char *fake;
|
|
||||||
|
|
||||||
/* JF: '.' is pseudo symbol with value of current location
|
|
||||||
in current segment. */
|
|
||||||
fake = FAKE_LABEL_NAME;
|
|
||||||
return symbol_new (fake,
|
|
||||||
now_seg,
|
|
||||||
(valueT) frag_now_fix (),
|
|
||||||
frag_now);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
int expr_size;
|
int expr_size;
|
||||||
int expr_shift;
|
int expr_shift;
|
||||||
int tc_cons_reloc;
|
int tc_cons_reloc;
|
||||||
|
|
||||||
void
|
void
|
||||||
w65_expression (dest, bytes)
|
w65_expression (dest)
|
||||||
expressionS *dest;
|
expressionS *dest;
|
||||||
unsigned int bytes;
|
|
||||||
{
|
{
|
||||||
expr_size = 0;
|
expr_size = 0;
|
||||||
expr_shift = 0;
|
expr_shift = 0;
|
||||||
|
@ -227,16 +205,15 @@ w65_expression (dest, bytes)
|
||||||
int amode;
|
int amode;
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
parse_exp (s, bytes)
|
parse_exp (s)
|
||||||
char *s;
|
char *s;
|
||||||
int bytes;
|
|
||||||
{
|
{
|
||||||
char *save;
|
char *save;
|
||||||
char *new;
|
char *new;
|
||||||
|
|
||||||
save = input_line_pointer;
|
save = input_line_pointer;
|
||||||
input_line_pointer = s;
|
input_line_pointer = s;
|
||||||
w65_expression (&immediate, bytes);
|
w65_expression (&immediate);
|
||||||
if (immediate.X_op == O_absent)
|
if (immediate.X_op == O_absent)
|
||||||
as_bad (_("missing operand"));
|
as_bad (_("missing operand"));
|
||||||
new = input_line_pointer;
|
new = input_line_pointer;
|
||||||
|
@ -246,7 +223,7 @@ parse_exp (s, bytes)
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
get_operands (info, ptr)
|
get_operands (info, ptr)
|
||||||
struct opinfo *info;
|
const struct opinfo *info;
|
||||||
char *ptr;
|
char *ptr;
|
||||||
{
|
{
|
||||||
register int override_len = 0;
|
register int override_len = 0;
|
||||||
|
@ -474,7 +451,7 @@ get_operands (info, ptr)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ptr = parse_exp (ptr, 2);
|
ptr = parse_exp (ptr);
|
||||||
if (ptr[0] == ',')
|
if (ptr[0] == ',')
|
||||||
{
|
{
|
||||||
if (ptr[1] == 'y')
|
if (ptr[1] == 'y')
|
||||||
|
@ -591,9 +568,9 @@ get_operands (info, ptr)
|
||||||
addressing modes, return the opcode which matches the opcodes
|
addressing modes, return the opcode which matches the opcodes
|
||||||
provided. */
|
provided. */
|
||||||
|
|
||||||
static struct opinfo *
|
static const struct opinfo *
|
||||||
get_specific (opcode)
|
get_specific (opcode)
|
||||||
struct opinfo *opcode;
|
const struct opinfo *opcode;
|
||||||
{
|
{
|
||||||
int ocode = opcode->code;
|
int ocode = opcode->code;
|
||||||
|
|
||||||
|
@ -605,28 +582,11 @@ get_specific (opcode)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
|
||||||
check (operand, low, high)
|
|
||||||
expressionS *operand;
|
|
||||||
int low;
|
|
||||||
int high;
|
|
||||||
{
|
|
||||||
if (operand->X_op != O_constant
|
|
||||||
|| operand->X_add_number < low
|
|
||||||
|| operand->X_add_number > high)
|
|
||||||
{
|
|
||||||
as_bad ("operand must be absolute in range %d..%d", low, high);
|
|
||||||
}
|
|
||||||
return operand->X_add_number;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int log2[] = { 0, 0, 1, 0, 2 };
|
|
||||||
|
|
||||||
/* Now we know what sort of opcodes it is, let's build the bytes. */
|
/* Now we know what sort of opcodes it is, let's build the bytes. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
build_Mytes (opcode)
|
build_Mytes (opcode)
|
||||||
struct opinfo *opcode;
|
const struct opinfo *opcode;
|
||||||
{
|
{
|
||||||
int size;
|
int size;
|
||||||
int type;
|
int type;
|
||||||
|
@ -656,6 +616,8 @@ build_Mytes (opcode)
|
||||||
switch (opcode->amode)
|
switch (opcode->amode)
|
||||||
{
|
{
|
||||||
GETINFO (size, type, pcrel);
|
GETINFO (size, type, pcrel);
|
||||||
|
default:
|
||||||
|
abort ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If something special was done in the expression modify the
|
/* If something special was done in the expression modify the
|
||||||
|
@ -707,12 +669,8 @@ void
|
||||||
md_assemble (str)
|
md_assemble (str)
|
||||||
char *str;
|
char *str;
|
||||||
{
|
{
|
||||||
unsigned char *op_start;
|
const struct opinfo *opcode;
|
||||||
unsigned char *op_end;
|
|
||||||
struct opinfo *opcode;
|
|
||||||
char name[20];
|
char name[20];
|
||||||
int nlen = 0;
|
|
||||||
char *p;
|
|
||||||
|
|
||||||
/* Drop leading whitespace */
|
/* Drop leading whitespace */
|
||||||
while (*str == ' ')
|
while (*str == ' ')
|
||||||
|
@ -756,27 +714,13 @@ md_assemble (str)
|
||||||
build_Mytes (opcode);
|
build_Mytes (opcode);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
tc_crawl_symbol_chain (headers)
|
|
||||||
object_headers *headers;
|
|
||||||
{
|
|
||||||
printf (_("call to tc_crawl_symbol_chain \n"));
|
|
||||||
}
|
|
||||||
|
|
||||||
symbolS *
|
symbolS *
|
||||||
md_undefined_symbol (name)
|
md_undefined_symbol (name)
|
||||||
char *name;
|
char *name ATTRIBUTE_UNUSED;
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
tc_headers_hook (headers)
|
|
||||||
object_headers *headers;
|
|
||||||
{
|
|
||||||
printf (_("call to tc_headers_hook \n"));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Various routines to kill one day. */
|
/* Various routines to kill one day. */
|
||||||
/* Equal to MAX_PRECISION in atof-ieee.c. */
|
/* Equal to MAX_PRECISION in atof-ieee.c. */
|
||||||
#define MAX_LITTLENUMS 6
|
#define MAX_LITTLENUMS 6
|
||||||
|
@ -796,7 +740,6 @@ md_atof (type, litP, sizeP)
|
||||||
LITTLENUM_TYPE words[MAX_LITTLENUMS];
|
LITTLENUM_TYPE words[MAX_LITTLENUMS];
|
||||||
LITTLENUM_TYPE *wordP;
|
LITTLENUM_TYPE *wordP;
|
||||||
char *t;
|
char *t;
|
||||||
char *atof_ieee ();
|
|
||||||
|
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
|
@ -843,26 +786,19 @@ md_atof (type, litP, sizeP)
|
||||||
|
|
||||||
int
|
int
|
||||||
md_parse_option (c, a)
|
md_parse_option (c, a)
|
||||||
int c;
|
int c ATTRIBUTE_UNUSED;
|
||||||
char *a;
|
char *a ATTRIBUTE_UNUSED;
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
tc_Nout_fix_to_chars ()
|
|
||||||
{
|
|
||||||
printf (_("call to tc_Nout_fix_to_chars \n"));
|
|
||||||
abort ();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Called after relaxing, change the frags so they know how big they
|
/* Called after relaxing, change the frags so they know how big they
|
||||||
are. */
|
are. */
|
||||||
|
|
||||||
void
|
void
|
||||||
md_convert_frag (headers, seg, fragP)
|
md_convert_frag (headers, seg, fragP)
|
||||||
object_headers *headers;
|
object_headers *headers ATTRIBUTE_UNUSED;
|
||||||
segT seg;
|
segT seg ATTRIBUTE_UNUSED;
|
||||||
fragS *fragP;
|
fragS *fragP;
|
||||||
{
|
{
|
||||||
int disp_size = 0;
|
int disp_size = 0;
|
||||||
|
@ -1058,7 +994,7 @@ md_pcrel_from (fixP)
|
||||||
|
|
||||||
void
|
void
|
||||||
tc_coff_symbol_emit_hook (x)
|
tc_coff_symbol_emit_hook (x)
|
||||||
symbolS *x;
|
symbolS *x ATTRIBUTE_UNUSED;
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1194,7 +1130,7 @@ struct option md_longopts[] = {
|
||||||
|
|
||||||
void
|
void
|
||||||
md_show_usage (stream)
|
md_show_usage (stream)
|
||||||
FILE *stream;
|
FILE *stream ATTRIBUTE_UNUSED;
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,11 @@ extern void tc_reloc_mangle
|
||||||
#define RELOC_32 1234
|
#define RELOC_32 1234
|
||||||
|
|
||||||
#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep (frag)
|
#define TC_COFF_SIZEMACHDEP(frag) tc_coff_sizemachdep (frag)
|
||||||
#define TC_PARSE_CONS_EXPRESSION(EXP, NBYTES) w65_expression (EXP, NBYTES)
|
int tc_coff_sizemachdep PARAMS ((fragS *));
|
||||||
|
|
||||||
|
#define TC_PARSE_CONS_EXPRESSION(EXP, NBYTES) w65_expression (EXP)
|
||||||
|
void w65_expression PARAMS ((expressionS *));
|
||||||
|
|
||||||
#define TC_COUNT_RELOC(x) (1)
|
#define TC_COUNT_RELOC(x) (1)
|
||||||
#define TC_CONS_RELOC tc_cons_reloc
|
#define TC_CONS_RELOC tc_cons_reloc
|
||||||
#define DONT_OVERFLOW
|
#define DONT_OVERFLOW
|
||||||
|
|
|
@ -161,7 +161,6 @@ flonum.h
|
||||||
frags.c
|
frags.c
|
||||||
frags.c
|
frags.c
|
||||||
frags.h
|
frags.h
|
||||||
gasp.c
|
|
||||||
hash.c
|
hash.c
|
||||||
hash.c
|
hash.c
|
||||||
hash.h
|
hash.h
|
||||||
|
|
Loading…
Reference in a new issue