mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-07-28 04:13:28 +08:00
* config/tc-m68hc11.h (LISTING_HEADER): Use m68hc11_listing_header
function to select the header according to the cpu. (md_after_pass_hook, md_do_align): Remove. (md_cleanup, m68hc11_cleanup): Remove. (md_pcrel_from_section): Declare. * config/tc-m68hc11.c (build_dbranch_insn): Remove insn_size. (build_jump_insn, build_insn): Likewise. (m68hc11_listing_header): New function. (m68hc11_cleanup): Remove.
This commit is contained in:
gas
@ -1,3 +1,15 @@
|
|||||||
|
2001-02-04 Stephane Carrez <Stephane.Carrez@worldnet.fr>
|
||||||
|
|
||||||
|
* config/tc-m68hc11.h (LISTING_HEADER): Use m68hc11_listing_header
|
||||||
|
function to select the header according to the cpu.
|
||||||
|
(md_after_pass_hook, md_do_align): Remove.
|
||||||
|
(md_cleanup, m68hc11_cleanup): Remove.
|
||||||
|
(md_pcrel_from_section): Declare.
|
||||||
|
* config/tc-m68hc11.c (build_dbranch_insn): Remove insn_size.
|
||||||
|
(build_jump_insn, build_insn): Likewise.
|
||||||
|
(m68hc11_listing_header): New function.
|
||||||
|
(m68hc11_cleanup): Remove.
|
||||||
|
|
||||||
2001-02-02 Stephane Carrez <Stephane.Carrez@worldnet.fr>
|
2001-02-02 Stephane Carrez <Stephane.Carrez@worldnet.fr>
|
||||||
|
|
||||||
* config/tc-m68hc11.c (relaxable_symbol): Relax externally visible
|
* config/tc-m68hc11.c (relaxable_symbol): Relax externally visible
|
||||||
|
@ -226,6 +226,8 @@ const pseudo_typeS md_pseudo_table[] = {
|
|||||||
{"fdb", cons, 2},
|
{"fdb", cons, 2},
|
||||||
{"fcc", stringer, 1},
|
{"fcc", stringer, 1},
|
||||||
{"rmb", s_space, 0},
|
{"rmb", s_space, 0},
|
||||||
|
|
||||||
|
/* Dwarf2 support for Gcc. */
|
||||||
{"file", dwarf2_directive_file, 0},
|
{"file", dwarf2_directive_file, 0},
|
||||||
{"loc", dwarf2_directive_loc, 0},
|
{"loc", dwarf2_directive_loc, 0},
|
||||||
|
|
||||||
@ -288,6 +290,16 @@ m68hc11_mach ()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Listing header selected according to cpu. */
|
||||||
|
const char *
|
||||||
|
m68hc11_listing_header ()
|
||||||
|
{
|
||||||
|
if (current_architecture & cpu6811)
|
||||||
|
return "M68HC11 GAS ";
|
||||||
|
else
|
||||||
|
return "M68HC12 GAS ";
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
md_show_usage (stream)
|
md_show_usage (stream)
|
||||||
FILE *stream;
|
FILE *stream;
|
||||||
@ -371,7 +383,7 @@ md_parse_option (c, arg)
|
|||||||
get_default_target ();
|
get_default_target ();
|
||||||
switch (c)
|
switch (c)
|
||||||
{
|
{
|
||||||
/* -S means keep external to 2 bits offset rather than 16 bits one. */
|
/* -S means keep external to 2 bit offset rather than 16 bit one. */
|
||||||
case OPTION_SHORT_BRANCHS:
|
case OPTION_SHORT_BRANCHS:
|
||||||
case 'S':
|
case 'S':
|
||||||
flag_fixed_branchs = 1;
|
flag_fixed_branchs = 1;
|
||||||
@ -1198,7 +1210,7 @@ check_range (num, mode)
|
|||||||
if (mode & M6812_AUTO_INC_DEC)
|
if (mode & M6812_AUTO_INC_DEC)
|
||||||
return (num != 0 && num <= 8 && num >= -8);
|
return (num != 0 && num <= 8 && num >= -8);
|
||||||
|
|
||||||
/* The 68HC12 supports 5, 9 and 16-bits offsets. */
|
/* The 68HC12 supports 5, 9 and 16-bit offsets. */
|
||||||
if (mode & (M6812_INDEXED_IND | M6812_INDEXED | M6812_OP_IDX))
|
if (mode & (M6812_INDEXED_IND | M6812_INDEXED | M6812_OP_IDX))
|
||||||
mode = M6811_OP_IND16;
|
mode = M6811_OP_IND16;
|
||||||
|
|
||||||
@ -1307,7 +1319,7 @@ fixup8 (oper, mode, opmode)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Put a 2 bytes expression described by 'oper'. If this expression contains
|
/* Put a 2 byte expression described by 'oper'. If this expression contains
|
||||||
unresolved symbols, generate a 16-bit fixup. */
|
unresolved symbols, generate a 16-bit fixup. */
|
||||||
static void
|
static void
|
||||||
fixup16 (oper, mode, opmode)
|
fixup16 (oper, mode, opmode)
|
||||||
@ -1392,7 +1404,6 @@ build_jump_insn (opcode, operands, nb_operands, jmp_mode)
|
|||||||
int jmp_mode;
|
int jmp_mode;
|
||||||
{
|
{
|
||||||
unsigned char code;
|
unsigned char code;
|
||||||
int insn_size;
|
|
||||||
char *f;
|
char *f;
|
||||||
unsigned long n;
|
unsigned long n;
|
||||||
|
|
||||||
@ -1403,7 +1414,6 @@ build_jump_insn (opcode, operands, nb_operands, jmp_mode)
|
|||||||
assert (operands[0].reg1 == REG_NONE && operands[0].reg2 == REG_NONE);
|
assert (operands[0].reg1 == REG_NONE && operands[0].reg2 == REG_NONE);
|
||||||
|
|
||||||
code = opcode->opcode;
|
code = opcode->opcode;
|
||||||
insn_size = 1;
|
|
||||||
|
|
||||||
n = operands[0].exp.X_add_number;
|
n = operands[0].exp.X_add_number;
|
||||||
|
|
||||||
@ -1527,7 +1537,6 @@ build_dbranch_insn (opcode, operands, nb_operands, jmp_mode)
|
|||||||
int jmp_mode;
|
int jmp_mode;
|
||||||
{
|
{
|
||||||
unsigned char code;
|
unsigned char code;
|
||||||
int insn_size;
|
|
||||||
char *f;
|
char *f;
|
||||||
unsigned long n;
|
unsigned long n;
|
||||||
|
|
||||||
@ -1538,7 +1547,6 @@ build_dbranch_insn (opcode, operands, nb_operands, jmp_mode)
|
|||||||
assert (operands[0].reg1 != REG_NONE);
|
assert (operands[0].reg1 != REG_NONE);
|
||||||
|
|
||||||
code = opcode->opcode & 0x0FF;
|
code = opcode->opcode & 0x0FF;
|
||||||
insn_size = 1;
|
|
||||||
|
|
||||||
f = m68hc11_new_insn (1);
|
f = m68hc11_new_insn (1);
|
||||||
number_to_chars_bigendian (f, code, 1);
|
number_to_chars_bigendian (f, code, 1);
|
||||||
@ -1872,7 +1880,6 @@ build_insn (opcode, operands, nb_operands)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
char *f;
|
char *f;
|
||||||
int insn_size = 1;
|
|
||||||
long format;
|
long format;
|
||||||
int move_insn = 0;
|
int move_insn = 0;
|
||||||
|
|
||||||
@ -1892,7 +1899,6 @@ build_insn (opcode, operands, nb_operands)
|
|||||||
|
|
||||||
number_to_chars_bigendian (f, page_code, 1);
|
number_to_chars_bigendian (f, page_code, 1);
|
||||||
f++;
|
f++;
|
||||||
insn_size = 2;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
f = m68hc11_new_insn (1);
|
f = m68hc11_new_insn (1);
|
||||||
@ -1908,13 +1914,13 @@ build_insn (opcode, operands, nb_operands)
|
|||||||
move_insn = 1;
|
move_insn = 1;
|
||||||
if (format & M6812_OP_IDX)
|
if (format & M6812_OP_IDX)
|
||||||
{
|
{
|
||||||
insn_size += build_indexed_byte (&operands[0], format, 1);
|
build_indexed_byte (&operands[0], format, 1);
|
||||||
i = 1;
|
i = 1;
|
||||||
format &= ~M6812_OP_IDX;
|
format &= ~M6812_OP_IDX;
|
||||||
}
|
}
|
||||||
if (format & M6812_OP_IDX_P2)
|
if (format & M6812_OP_IDX_P2)
|
||||||
{
|
{
|
||||||
insn_size += build_indexed_byte (&operands[1], format, 1);
|
build_indexed_byte (&operands[1], format, 1);
|
||||||
i = 0;
|
i = 0;
|
||||||
format &= ~M6812_OP_IDX_P2;
|
format &= ~M6812_OP_IDX_P2;
|
||||||
}
|
}
|
||||||
@ -1922,7 +1928,6 @@ build_insn (opcode, operands, nb_operands)
|
|||||||
|
|
||||||
if (format & (M6811_OP_DIRECT | M6811_OP_IMM8))
|
if (format & (M6811_OP_DIRECT | M6811_OP_IMM8))
|
||||||
{
|
{
|
||||||
insn_size++;
|
|
||||||
fixup8 (&operands[i].exp,
|
fixup8 (&operands[i].exp,
|
||||||
format & (M6811_OP_DIRECT | M6811_OP_IMM8 | M6812_OP_TRAP_ID),
|
format & (M6811_OP_DIRECT | M6811_OP_IMM8 | M6812_OP_TRAP_ID),
|
||||||
operands[i].mode);
|
operands[i].mode);
|
||||||
@ -1930,7 +1935,6 @@ build_insn (opcode, operands, nb_operands)
|
|||||||
}
|
}
|
||||||
else if (format & (M6811_OP_IMM16 | M6811_OP_IND16))
|
else if (format & (M6811_OP_IMM16 | M6811_OP_IND16))
|
||||||
{
|
{
|
||||||
insn_size += 2;
|
|
||||||
fixup16 (&operands[i].exp, format & (M6811_OP_IMM16 | M6811_OP_IND16),
|
fixup16 (&operands[i].exp, format & (M6811_OP_IMM16 | M6811_OP_IND16),
|
||||||
operands[i].mode);
|
operands[i].mode);
|
||||||
i++;
|
i++;
|
||||||
@ -1942,36 +1946,31 @@ build_insn (opcode, operands, nb_operands)
|
|||||||
if ((format & M6811_OP_IY) && (operands[0].reg1 != REG_Y))
|
if ((format & M6811_OP_IY) && (operands[0].reg1 != REG_Y))
|
||||||
as_bad (_("Invalid indexed register, expecting register Y."));
|
as_bad (_("Invalid indexed register, expecting register Y."));
|
||||||
|
|
||||||
insn_size++;
|
|
||||||
fixup8 (&operands[0].exp, M6811_OP_IX, operands[0].mode);
|
fixup8 (&operands[0].exp, M6811_OP_IX, operands[0].mode);
|
||||||
i = 1;
|
i = 1;
|
||||||
}
|
}
|
||||||
else if (format &
|
else if (format &
|
||||||
(M6812_OP_IDX | M6812_OP_IDX_2 | M6812_OP_IDX_1 | M6812_OP_D_IDX))
|
(M6812_OP_IDX | M6812_OP_IDX_2 | M6812_OP_IDX_1 | M6812_OP_D_IDX))
|
||||||
{
|
{
|
||||||
insn_size += build_indexed_byte (&operands[i], format, move_insn);
|
build_indexed_byte (&operands[i], format, move_insn);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
else if (format & M6812_OP_REG && current_architecture & cpu6812)
|
else if (format & M6812_OP_REG && current_architecture & cpu6812)
|
||||||
{
|
{
|
||||||
insn_size += build_reg_mode (&operands[i], format);
|
build_reg_mode (&operands[i], format);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
if (format & M6811_OP_BITMASK)
|
if (format & M6811_OP_BITMASK)
|
||||||
{
|
{
|
||||||
insn_size++;
|
|
||||||
fixup8 (&operands[i].exp, M6811_OP_BITMASK, operands[i].mode);
|
fixup8 (&operands[i].exp, M6811_OP_BITMASK, operands[i].mode);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
if (format & M6811_OP_JUMP_REL)
|
if (format & M6811_OP_JUMP_REL)
|
||||||
{
|
{
|
||||||
insn_size++;
|
|
||||||
fixup8 (&operands[i].exp, M6811_OP_JUMP_REL, operands[i].mode);
|
fixup8 (&operands[i].exp, M6811_OP_JUMP_REL, operands[i].mode);
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
else if (format & M6812_OP_IND16_P2)
|
else if (format & M6812_OP_IND16_P2)
|
||||||
{
|
{
|
||||||
insn_size += 2;
|
|
||||||
fixup16 (&operands[1].exp, M6811_OP_IND16, operands[1].mode);
|
fixup16 (&operands[1].exp, M6811_OP_IND16, operands[1].mode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2288,7 +2287,7 @@ md_assemble (str)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Identify a possible instruction alias. There are some on the
|
/* Identify a possible instruction alias. There are some on the
|
||||||
68HC12 to emulate a fiew 68HC11 instructions. */
|
68HC12 to emulate a few 68HC11 instructions. */
|
||||||
if (opc == NULL && (current_architecture & cpu6812))
|
if (opc == NULL && (current_architecture & cpu6812))
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@ -2809,9 +2808,3 @@ md_apply_fix (fixp, valuep)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
|
||||||
m68hc11_cleanup ()
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* tc-m68hc11.h -- Header file for tc-m68hc11.c.
|
/* tc-m68hc11.h -- Header file for tc-m68hc11.c.
|
||||||
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
|
Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GAS, the GNU Assembler.
|
This file is part of GAS, the GNU Assembler.
|
||||||
|
|
||||||
@ -21,6 +21,10 @@
|
|||||||
#define TC_M68HC11
|
#define TC_M68HC11
|
||||||
#define TC_M68HC12
|
#define TC_M68HC12
|
||||||
|
|
||||||
|
#ifdef ANSI_PROTOTYPES
|
||||||
|
struct fix;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Define TC_M68K so that we can use the MRI mode. */
|
/* Define TC_M68K so that we can use the MRI mode. */
|
||||||
#define TC_M68K
|
#define TC_M68K
|
||||||
|
|
||||||
@ -63,21 +67,23 @@ extern const char *m68hc11_arch_format PARAMS ((void));
|
|||||||
#define LISTING_LHS_WIDTH 4 /* One word on the first line */
|
#define LISTING_LHS_WIDTH 4 /* One word on the first line */
|
||||||
#define LISTING_LHS_WIDTH_SECOND 4 /* One word on the second line */
|
#define LISTING_LHS_WIDTH_SECOND 4 /* One word on the second line */
|
||||||
#define LISTING_LHS_CONT_LINES 4 /* And 4 lines max */
|
#define LISTING_LHS_CONT_LINES 4 /* And 4 lines max */
|
||||||
#define LISTING_HEADER "M68HC11 GAS "
|
#define LISTING_HEADER m68hc11_listing_header ()
|
||||||
|
extern const char *m68hc11_listing_header PARAMS (());
|
||||||
|
|
||||||
/* call md_pcrel_from_section, not md_pcrel_from */
|
/* call md_pcrel_from_section, not md_pcrel_from */
|
||||||
#define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section(FIXP, SEC)
|
#define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section(FIXP, SEC)
|
||||||
|
extern long md_pcrel_from_section PARAMS ((struct fix *fixp, segT sec));
|
||||||
|
|
||||||
/* Permit temporary numeric labels. */
|
/* Permit temporary numeric labels. */
|
||||||
#define LOCAL_LABELS_FB 1
|
#define LOCAL_LABELS_FB 1
|
||||||
|
|
||||||
#define DIFF_EXPR_OK /* .-foo gets turned into PC relative relocs */
|
#define DIFF_EXPR_OK /* .-foo gets turned into PC relative relocs */
|
||||||
|
|
||||||
extern void m68hc11_init_after_args PARAMS ((void));
|
|
||||||
#define tc_init_after_args m68hc11_init_after_args
|
#define tc_init_after_args m68hc11_init_after_args
|
||||||
|
extern void m68hc11_init_after_args PARAMS ((void));
|
||||||
|
|
||||||
extern int m68hc11_parse_long_option PARAMS ((char *));
|
|
||||||
#define md_parse_long_option m68hc11_parse_long_option
|
#define md_parse_long_option m68hc11_parse_long_option
|
||||||
|
extern int m68hc11_parse_long_option PARAMS ((char *));
|
||||||
|
|
||||||
#define DWARF2_LINE_MIN_INSN_LENGTH 1
|
#define DWARF2_LINE_MIN_INSN_LENGTH 1
|
||||||
|
|
||||||
@ -88,19 +94,13 @@ extern int m68hc11_parse_long_option PARAMS ((char *));
|
|||||||
|
|
||||||
/* Relax table to translate short relative branches (-128..127) into
|
/* Relax table to translate short relative branches (-128..127) into
|
||||||
absolute branches. */
|
absolute branches. */
|
||||||
extern struct relax_type md_relax_table[];
|
|
||||||
#define TC_GENERIC_RELAX_TABLE md_relax_table
|
#define TC_GENERIC_RELAX_TABLE md_relax_table
|
||||||
|
extern struct relax_type md_relax_table[];
|
||||||
extern int m68hc11_cleanup PARAMS ((void));
|
|
||||||
|
|
||||||
#define md_operand(x)
|
#define md_operand(x)
|
||||||
#define md_after_pass_hook() m68hc11_cleanup()
|
|
||||||
#define md_cleanup() m68hc11_cleanup()
|
|
||||||
#define md_do_align(a,b,c,d,e) m68hc11_cleanup()
|
|
||||||
#define tc_frob_label(sym) do {\
|
#define tc_frob_label(sym) do {\
|
||||||
m68hc11_cleanup(); \
|
|
||||||
S_SET_VALUE (sym, (valueT) frag_now_fix ()); \
|
S_SET_VALUE (sym, (valueT) frag_now_fix ()); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define tc_print_statistics m68hc11_print_statistics
|
#define tc_print_statistics(FILE) m68hc11_print_statistics (FILE)
|
||||||
extern void m68hc11_print_statistics PARAMS ((FILE *));
|
extern void m68hc11_print_statistics PARAMS ((FILE *));
|
||||||
|
Reference in New Issue
Block a user