From 2f9046641f748e9a27c97759570dcb983cbab4e9 Mon Sep 17 00:00:00 2001 From: Stephane Carrez Date: Sun, 1 Dec 2002 10:20:06 +0000 Subject: [PATCH] * 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. --- gas/ChangeLog | 10 ++++++++++ gas/config/tc-m68hc11.c | 34 +++++++++++++++++++++++++++++++++- gas/doc/as.texinfo | 14 ++++++++++++++ 3 files changed, 57 insertions(+), 1 deletion(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 34d697069aa..f233231a721 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,13 @@ +2002-12-01 Stephane Carrez + + * 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 * symbols.c (report_op_error): New function, broken out of ... diff --git a/gas/config/tc-m68hc11.c b/gas/config/tc-m68hc11.c index 38d45fe9994..34dbf6b41fd 100644 --- a/gas/config/tc-m68hc11.c +++ b/gas/config/tc-m68hc11.c @@ -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; diff --git a/gas/doc/as.texinfo b/gas/doc/as.texinfo index bcefd626579..b3987343d00 100644 --- a/gas/doc/as.texinfo +++ b/gas/doc/as.texinfo @@ -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 -- 2.30.2