* config/tc-m68hc11.c (elf_flags): Set default ABI to gcc default

(32-bit int, 64-bit double).
	(md_longopts): New options -mshort, -mlong, -mshort-double and
	-mlong-double to control the ABI.
	(md_show_usage): Update.
	(md_parse_option): Handle new options.
	* doc/as.texinfo (Overview): Document new options for HC11/HC12.
This commit is contained in:
Stephane Carrez 2002-12-01 10:20:06 +00:00
parent 2fd84db331
commit 2f9046641f
3 changed files with 57 additions and 1 deletions

View File

@ -1,3 +1,13 @@
2002-12-01 Stephane Carrez <stcarrez@nerim.fr>
* config/tc-m68hc11.c (elf_flags): Set default ABI to gcc default
(32-bit int, 64-bit double).
(md_longopts): New options -mshort, -mlong, -mshort-double and
-mlong-double to control the ABI.
(md_show_usage): Update.
(md_parse_option): Handle new options.
* doc/as.texinfo (Overview): Document new options for HC11/HC12.
2002-12-01 Nathan Sidwell <nathan@codesourcery.com>
* symbols.c (report_op_error): New function, broken out of ...

View File

@ -242,7 +242,7 @@ static int num_opcodes;
static struct m68hc11_opcode *m68hc11_sorted_opcodes;
/* ELF flags to set in the output file header. */
static int elf_flags = 0;
static int elf_flags = E_M68HC11_F64;
/* These are the machine dependent pseudo-ops. These are included so
the assembler can work on the output from the SUN C compiler, which
@ -305,6 +305,18 @@ struct option md_longopts[] = {
#define OPTION_GENERATE_EXAMPLE (OPTION_MD_BASE + 5)
{"generate-example", no_argument, NULL, OPTION_GENERATE_EXAMPLE},
#define OPTION_MSHORT (OPTION_MD_BASE + 6)
{"mshort", no_argument, NULL, OPTION_MSHORT},
#define OPTION_MLONG (OPTION_MD_BASE + 7)
{"mlong", no_argument, NULL, OPTION_MLONG},
#define OPTION_MSHORT_DOUBLE (OPTION_MD_BASE + 8)
{"mshort-double", no_argument, NULL, OPTION_MSHORT_DOUBLE},
#define OPTION_MLONG_DOUBLE (OPTION_MD_BASE + 9)
{"mlong-double", no_argument, NULL, OPTION_MLONG_DOUBLE},
{NULL, no_argument, NULL, 0}
};
size_t md_longopts_size = sizeof (md_longopts);
@ -356,6 +368,10 @@ md_show_usage (stream)
fprintf (stream, _("\
Motorola 68HC11/68HC12 options:\n\
-m68hc11 | -m68hc12 specify the processor [default %s]\n\
-mshort use 16-bit int ABI (default)\n\
-mlong use 32-bit int ABI\n\
-mshort-double use 32-bit double ABI\n\
-mlong-double use 64-bit double ABI (default)\n\
--force-long-branchs always turn relative branchs into absolute ones\n\
-S,--short-branchs do not turn relative branchs into absolute ones\n\
when the offset is out of range\n\
@ -457,6 +473,22 @@ md_parse_option (c, arg)
flag_print_opcodes = 2;
break;
case OPTION_MSHORT:
elf_flags &= ~E_M68HC11_I32;
break;
case OPTION_MLONG:
elf_flags |= E_M68HC11_I32;
break;
case OPTION_MSHORT_DOUBLE:
elf_flags &= ~E_M68HC11_F64;
break;
case OPTION_MLONG_DOUBLE:
elf_flags |= E_M68HC11_F64;
break;
case 'm':
if (strcasecmp (arg, "68hc11") == 0)
current_architecture = cpu6811;

View File

@ -363,6 +363,8 @@ gcc(1), ld(1), and the Info entries for @file{binutils} and @file{ld}.
@emph{Target M68HC11 options:}
[@b{-m68hc11}|@b{-m68hc12}]
[@b{-mshort}|@b{-mlong}]
[@b{-mshort-double}|@b{-mlong-double}]
[@b{--force-long-branchs}] [@b{--short-branchs}]
[@b{--strict-direct-mode}] [@b{--print-insn-syntax}]
[@b{--print-opcodes}] [@b{--generate-example}]
@ -802,6 +804,18 @@ Motorola 68HC11 or 68HC12 series.
Specify what processor is the target. The default is
defined by the configuration option when building the assembler.
@item -mshort
Specify to use the 16-bit integer ABI.
@item -mlong
Specify to use the 32-bit integer ABI.
@item -mshort-double
Specify to use the 32-bit double ABI.
@item -mlong-double
Specify to use the 64-bit double ABI.
@item --force-long-branchs
Relative branches are turned into absolute ones. This concerns
conditional branches, unconditional branches and branches to a