From cb6409c1c52546082fcd4bf074ce3de8a71eadb0 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Tue, 28 Apr 1992 22:07:20 -0400 Subject: [PATCH] *** empty log message *** From-SVN: r856 --- gcc/config/m68k/tower-as.h | 72 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/gcc/config/m68k/tower-as.h b/gcc/config/m68k/tower-as.h index c43882e1237..8a1685414bb 100644 --- a/gcc/config/m68k/tower-as.h +++ b/gcc/config/m68k/tower-as.h @@ -30,7 +30,15 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "tower.h" +#undef SELECT_RTX_SECTION +/* Use default settings for system V.3. */ + +#include "svr3.h" + +/* Names to predefine in the preprocessor for this target machine. */ + +#define CPP_PREDEFINES "-Dunix -Dtower32 -Dtower32_600" /* Define __HAVE_68881 in preprocessor only if -m68881 is specified. This will control the use of inline 68881 insns in certain macros. @@ -43,7 +51,8 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #define STARTFILE_SPEC \ "%{p:%{m68881:/usr/lib/fp/mcrt1.o}%{!m68881:/lib/mcrt1.o}} \ - %{!p:%{m68881:/usr/lib/fp/crt1.o}%{!m68881:/lib/crt1.o}}" + %{!p:%{m68881:/usr/lib/fp/crt1.o}%{!m68881:/lib/crt1.o}} \ + crtbegin.o%s" /* These four macros control how m68k.md is expanded. */ @@ -64,13 +73,20 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ /* All the ASM_OUTPUT macros need to conform to the Tower as syntax. */ #define ASM_OUTPUT_SOURCE_FILENAME(FILE, FILENAME) \ - fprintf (FILE, "\tfile\t\"%s\"\n", FILENAME) + do { \ + fprintf (FILE, "\tfile\t\"%s\"\n", FILENAME); \ + fprintf (FILE, "section ~init,\"x\"\n"); \ + fprintf (FILE, "section ~fini,\"x\"\n"); \ + fprintf (FILE, "section ~rodata,\"x\"\n"); \ + fprintf (FILE, "text\n"); \ + } while (0) #define ASM_OUTPUT_SOURCE_LINE(FILE, LINENO) \ fprintf (FILE, "\tln\t%d\n", \ (sdb_begin_function_line \ ? last_linenum - sdb_begin_function_line : 1)) +#undef ASM_OUTPUT_IDENT #define ASM_OUTPUT_IDENT(FILE, NAME) \ fprintf (FILE, "\tident\t\"%s\" \n", NAME) @@ -586,3 +602,55 @@ do { fprintf (asm_out_file, "\ttag\t"); \ #define SDB_GENERATE_FAKE(BUFFER, NUMBER) \ sprintf ((BUFFER), "~%dfake", (NUMBER)); + +#define NO_DOLLAR_IN_LABEL +#define NO_DOT_IN_LABEL + +/* Define a few machine-specific details + of the implementation of constructors. + + The __CTORS_LIST__ goes in the .init section. Define CTOR_LIST_BEGIN + and CTOR_LIST_END to contribute to the .init section an instruction to + push a word containing 0 (or some equivalent of that). + + ASM_OUTPUT_CONSTRUCTOR should be defined + to push the address of the constructor. */ + +#define ASM_LONG "\tlong" +#undef INIT_SECTION_ASM_OP +#define INIT_SECTION_ASM_OP "section\t~init" +#undef FINI_SECTION_ASM_OP +#define FINI_SECTION_ASM_OP "section\t~fini" +#undef CONST_SECTION_ASM_OP +#define CONST_SECTION_ASM_OP "section\t~rodata" + +#define CTOR_LIST_BEGIN \ + asm (INIT_SECTION_ASM_OP); \ + asm ("clr.l -(%sp)") +#define CTOR_LIST_END CTOR_LIST_BEGIN + +#define BSS_SECTION_ASM_OP "section\t~bss" +#define BSS_SECTION_FUNCTION \ +void \ +bss_section () \ +{ \ + if (in_section != in_bss) \ + { \ + fprintf (asm_out_file, "%s\n", BSS_SECTION_ASM_OP); \ + in_section = in_bss; \ + } \ +} + +#define ASM_OUTPUT_CONSTRUCTOR(FILE,NAME) \ + do { \ + init_section (); \ + fprintf (FILE, "\tmov.l &"); \ + assemble_name (FILE, NAME); \ + fprintf (FILE, ",-(%%sp)\n"); \ + } while (0) + +/* We do not want leading underscores. */ + +#undef ASM_OUTPUT_LABELREF +#define ASM_OUTPUT_LABELREF(FILE,NAME) \ + fprintf (FILE, "%s", NAME) -- 2.30.2