aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephane Carrez <stcarrez@nerim.fr>2003-01-15 23:50:41 +0100
committerStephane Carrez <ciceron@gcc.gnu.org>2003-01-15 23:50:41 +0100
commitf077f1693bd11aee4daeb9bc9720f1f96161de46 (patch)
tree12c38b19c0fe8b1b2bebc77e0833956cc4ad0fe7
parent09d096a8d7f2822f73cb60fae6748df3e76b2835 (diff)
downloadgcc-f077f1693bd11aee4daeb9bc9720f1f96161de46.zip
gcc-f077f1693bd11aee4daeb9bc9720f1f96161de46.tar.gz
gcc-f077f1693bd11aee4daeb9bc9720f1f96161de46.tar.bz2
m68hc11.h (ASM_SPEC): Handle -m68hcs12...
* config/m68hc11/m68hc11.h (ASM_SPEC): Handle -m68hcs12; Pass -mshort and -mshort-double to the assembler to specify the ABI. (LINK_SPEC): Likewise. (CPP_SPEC): Pass HCS12 specific define. (MASK_M68S12): New define. (TARGET_M68S12): Likewise. (TARGET_SWITCHES): New options -m68hcs12 and -m68S12. (TARGET_VERSION): Update. * config/m68hc11/m68hc12.h (CPP_SPEC): Pass HCS12 specific define. (LINK_SPEC): Update. (ASM_SPEC): Update. * config/m68hc11/m68hc11.c (m68hc11_asm_file_start): Update. * doc/invoke.texi (M68hc1x Options): Document -m68hcs12. From-SVN: r61358
-rw-r--r--gcc/ChangeLog16
-rw-r--r--gcc/config/m68hc11/m68hc11.c7
-rw-r--r--gcc/config/m68hc11/m68hc11.h33
-rw-r--r--gcc/config/m68hc11/m68hc12.h17
-rw-r--r--gcc/doc/invoke.texi8
5 files changed, 64 insertions, 17 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1f7e019..ca7b57f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,21 @@
2003-01-15 Stephane Carrez <stcarrez@nerim.fr>
+ * config/m68hc11/m68hc11.h (ASM_SPEC): Handle -m68hcs12; Pass -mshort
+ and -mshort-double to the assembler to specify the ABI.
+ (LINK_SPEC): Likewise.
+ (CPP_SPEC): Pass HCS12 specific define.
+ (MASK_M68S12): New define.
+ (TARGET_M68S12): Likewise.
+ (TARGET_SWITCHES): New options -m68hcs12 and -m68S12.
+ (TARGET_VERSION): Update.
+ * config/m68hc11/m68hc12.h (CPP_SPEC): Pass HCS12 specific define.
+ (LINK_SPEC): Update.
+ (ASM_SPEC): Update.
+ * config/m68hc11/m68hc11.c (m68hc11_asm_file_start): Update.
+ * doc/invoke.texi (M68hc1x Options): Document -m68hcs12.
+
+2003-01-15 Stephane Carrez <stcarrez@nerim.fr>
+
* config/m68hc11/m68hc11.md ("return"): Use emit_jump_insn to emit
the return code.
diff --git a/gcc/config/m68hc11/m68hc11.c b/gcc/config/m68hc11/m68hc11.c
index 6f61659..cb9593f 100644
--- a/gcc/config/m68hc11/m68hc11.c
+++ b/gcc/config/m68hc11/m68hc11.c
@@ -1,5 +1,5 @@
/* Subroutines for code generation on Motorola 68HC11 and 68HC12.
- Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
Contributed by Stephane Carrez (stcarrez@nerim.fr)
This file is part of GNU CC.
@@ -5509,7 +5509,10 @@ m68hc11_asm_file_start (out, main_file)
const char *main_file;
{
fprintf (out, ";;;-----------------------------------------\n");
- fprintf (out, ";;; Start MC68HC11 gcc assembly output\n");
+ fprintf (out, ";;; Start %s gcc assembly output\n",
+ TARGET_M6811
+ ? "MC68HC11"
+ : TARGET_M68S12 ? "MC68HCS12" : "MC68HC12");
fprintf (out, ";;; gcc compiler %s\n", version_string);
print_options (out);
fprintf (out, ";;;-----------------------------------------\n");
diff --git a/gcc/config/m68hc11/m68hc11.h b/gcc/config/m68hc11/m68hc11.h
index 6911b41..2c72cec 100644
--- a/gcc/config/m68hc11/m68hc11.h
+++ b/gcc/config/m68hc11/m68hc11.h
@@ -1,6 +1,6 @@
/* Definitions of target machine for GNU compiler.
Motorola 68HC11 and 68HC12.
- Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
Contributed by Stephane Carrez (stcarrez@nerim.fr)
This file is part of GNU CC.
@@ -43,13 +43,22 @@ Note:
/* Compile and assemble for a 68hc11 unless there is a -m68hc12 option. */
#ifndef ASM_SPEC
-#define ASM_SPEC "%{m68hc12:-m68hc12}%{!m68hc12:-m68hc11}"
+#define ASM_SPEC \
+"%{m68hc12:-m68hc12}" \
+"%{m68hcs12:-m68hcs12}" \
+"%{!m68hc12:%{!m68hcs12:-m68hc11}} " \
+"%{mshort:-mshort}%{!mshort:-mlong} " \
+"%{fshort-double:-mshort-double}%{!fshort-double:-mlong-double}"
#endif
/* We need to tell the linker the target elf format. Just pass an
emulation option. This can be overridden by -Wl option of gcc. */
#ifndef LINK_SPEC
-#define LINK_SPEC "%{m68hc12:-m m68hc12elf}%{!m68hc12:-m m68hc11elf} %{mrelax:-relax}"
+#define LINK_SPEC \
+"%{m68hc12:-m m68hc12elf}" \
+"%{m68hcs12:-m m68hc12elf}" \
+"%{!m68hc12:%{!m68hcs12:-m m68hc11elf}} " \
+"%{!mnorelax:%{!m68hc12:%{!m68hcs12:-relax}}}"
#endif
#ifndef LIB_SPEC
@@ -65,7 +74,8 @@ Note:
"%{mshort:-D__HAVE_SHORT_INT__ -D__INT__=16}\
%{!mshort:-D__INT__=32}\
%{m68hc12:-Dmc6812 -DMC6812 -Dmc68hc12}\
- %{!m68hc12:-Dmc6811 -DMC6811 -Dmc68hc11}\
+ %{m68hcs12:-Dmc6812 -DMC6812 -Dmc68hcs12}\
+ %{!m68hc12:%{!m68hcs12:-Dmc6811 -DMC6811 -Dmc68hc11}}\
%{fshort-double:-D__HAVE_SHORT_DOUBLE__}\
%{mlong-calls:-D__USE_RTC__}"
#endif
@@ -118,15 +128,16 @@ extern short *reg_renumber; /* def in local_alloc.c */
#define MASK_SHORT 0002 /* Compile with 16-bit `int' */
#define MASK_AUTO_INC_DEC 0004
#define MASK_M6811 0010
-#define MASK_M6812 0020
-#define MASK_NO_DIRECT_MODE 0040
-#define MASK_MIN_MAX 0100
-#define MASK_LONG_CALLS 0200
+#define MASK_M68S12 0040
+#define MASK_NO_DIRECT_MODE 0100
+#define MASK_MIN_MAX 0200
+#define MASK_LONG_CALLS 0400
#define TARGET_OP_TIME (optimize && optimize_size == 0)
#define TARGET_SHORT (target_flags & MASK_SHORT)
#define TARGET_M6811 (target_flags & MASK_M6811)
#define TARGET_M6812 (target_flags & MASK_M6812)
+#define TARGET_M68S12 (target_flags & MASK_M68S12)
#define TARGET_AUTO_INC_DEC (target_flags & MASK_AUTO_INC_DEC)
#define TARGET_MIN_MAX (target_flags & MASK_MIN_MAX)
#define TARGET_NO_DIRECT_MODE (target_flags & MASK_NO_DIRECT_MODE)
@@ -178,10 +189,14 @@ extern short *reg_renumber; /* def in local_alloc.c */
N_("Compile for a 68HC11")}, \
{ "68hc12", MASK_M6812, \
N_("Compile for a 68HC12")}, \
+ { "68hcs12", MASK_M6812 | MASK_M68S12, \
+ N_("Compile for a 68HCS12")}, \
{ "6811", MASK_M6811, \
N_("Compile for a 68HC11")}, \
{ "6812", MASK_M6812, \
N_("Compile for a 68HC12")}, \
+ { "68S12", MASK_M6812 | MASK_M68S12, \
+ N_("Compile for a 68HCS12")}, \
{ "", TARGET_DEFAULT, 0 }}
/* This macro is similar to `TARGET_SWITCHES' but defines names of
@@ -214,7 +229,7 @@ extern const char *m68hc11_soft_reg_count;
#endif
/* Print subsidiary information on the compiler version in use. */
-#define TARGET_VERSION fprintf (stderr, " (MC68HC11/MC68HC12)")
+#define TARGET_VERSION fprintf (stderr, " (MC68HC11/MC68HC12/MC68HCS12)")
/* Sometimes certain combinations of command options do not make
sense on a particular target machine. You can define a macro
diff --git a/gcc/config/m68hc11/m68hc12.h b/gcc/config/m68hc11/m68hc12.h
index a9f09dd..498763e 100644
--- a/gcc/config/m68hc11/m68hc12.h
+++ b/gcc/config/m68hc11/m68hc12.h
@@ -1,6 +1,6 @@
/* Definitions of target machine for GNU compiler, for m68hc12.
- Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
- Contributed by Stephane Carrez (stcarrez@worldnet.fr).
+ Copyright (C) 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
+ Contributed by Stephane Carrez (stcarrez@nerim.fr).
This file is part of GNU CC.
@@ -20,19 +20,26 @@ the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Compile and assemble for a 68hc12 unless there is a -m68hc11 option. */
-#define ASM_SPEC "%{m68hc11:-m68hc11}%{!m68hc11:-m68hc12}"
+#define ASM_SPEC \
+"%{m68hc11:-m68hc11}" \
+"%{m68hcs12:-m68hcs12}" \
+"%{!m68hc11:%{!m68hcs12:-m68hc12}}"
#define LIB_SPEC ""
#define CC1_SPEC ""
/* We need to tell the linker the target elf format. Just pass an
emulation option. This can be overridden by -Wl option of gcc. */
-#define LINK_SPEC "%{m68hc11:-m m68hc11elf}%{!m68hc11:-m m68hc12elf}"
+#define LINK_SPEC \
+"%{m68hc11:-m m68hc11elf}" \
+"%{m68hcs12:-m m68hc12elf}" \
+"%{!m68hc11:%{!m68hcs12:-m m68hc11elf}} %{mrelax:-relax}"
#define CPP_SPEC \
"%{mshort:-D__HAVE_SHORT_INT__ -D__INT__=16}\
%{!mshort:-D__INT__=32}\
%{m68hc11:-Dmc6811 -DMC6811 -Dmc68hc11}\
- %{!m68hc11:-Dmc6812 -DMC6812 -Dmc68hc12}\
+ %{!m68hc11:%{!m68hc12:-Dmc6812 -DMC6812 -Dmc68hc12}}\
+ %{m68hcs12:-Dmc6812 -DMC6812 -Dmc68hcs12}\
%{fshort-double:-D__HAVE_SHORT_DOUBLE__}"
/* Default target_flags if no switches specified. */
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index a96caa7..34b597a 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -345,7 +345,7 @@ in the following sections.
@emph{M68hc1x Options}
@gccoptlist{
--m6811 -m6812 -m68hc11 -m68hc12 @gol
+-m6811 -m6812 -m68hc11 -m68hc12 -m68hcs12 @gol
-mauto-incdec -minmax -mlong-calls -mshort @gol
-msoft-reg-count=@var{count}}
@@ -5505,6 +5505,12 @@ when the compiler is configured for 68HC11-based systems.
Generate output for a 68HC12. This is the default
when the compiler is configured for 68HC12-based systems.
+@item -m68S12
+@itemx -m68hcs12
+@opindex m68S12
+@opindex m68hcs12
+Generate output for a 68HCS12.
+
@item -mauto-incdec
@opindex mauto-incdec
Enable the use of 68HC12 pre and post auto-increment and auto-decrement