178346Sbenno/* Default initializers for a generic GCC target.
278346Sbenno   Copyright (C) 2001-2020 Free Software Foundation, Inc.
378346Sbenno
478346Sbenno   This program is free software; you can redistribute it and/or modify it
578346Sbenno   under the terms of the GNU General Public License as published by the
678346Sbenno   Free Software Foundation; either version 3, or (at your option) any
778346Sbenno   later version.
878346Sbenno
978346Sbenno   This program is distributed in the hope that it will be useful,
1078346Sbenno   but WITHOUT ANY WARRANTY; without even the implied warranty of
1178346Sbenno   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1278346Sbenno   GNU General Public License for more details.
1378346Sbenno
1478346Sbenno   You should have received a copy of the GNU General Public License
1578346Sbenno   along with this program; see the file COPYING3.  If not see
1678346Sbenno   <http://www.gnu.org/licenses/>.
1778346Sbenno
1878346Sbenno   In other words, you are welcome to use, share and improve this program.
1978346Sbenno   You are forbidden to forbid anyone else to use, share and improve
2078346Sbenno   what you give them.   Help stamp out software-hoarding!  */
2178346Sbenno
2278346Sbenno/* See target.def for a description of what this file contains and how to
2378346Sbenno   use it.
2478346Sbenno
2578346Sbenno   We want to have non-NULL default definitions of all hook functions,
2678346Sbenno   even if they do nothing.  */
2778346Sbenno
2878346Sbenno/* Note that if one of these macros must be defined in an OS .h file
2978346Sbenno   rather than the .c file, then we need to wrap the default
3078346Sbenno   definition in a #ifndef, since files include tm.h before this one.  */
3178346Sbenno
3278346Sbenno#define TARGET_ASM_ALIGNED_HI_OP "\t.short\t"
3378346Sbenno#define TARGET_ASM_ALIGNED_SI_OP "\t.long\t"
3478346Sbenno#define TARGET_ASM_ALIGNED_DI_OP NULL
3578346Sbenno#define TARGET_ASM_ALIGNED_TI_OP NULL
3678346Sbenno
3778346Sbenno/* GAS and SYSV4 assemblers accept these.  */
3878346Sbenno#if defined (OBJECT_FORMAT_ELF)
3978346Sbenno#define TARGET_ASM_UNALIGNED_HI_OP "\t.2byte\t"
4078346Sbenno#define TARGET_ASM_UNALIGNED_SI_OP "\t.4byte\t"
4178346Sbenno#define TARGET_ASM_UNALIGNED_DI_OP "\t.8byte\t"
4288792Sjake#define TARGET_ASM_UNALIGNED_TI_OP NULL
4378346Sbenno#else
4478346Sbenno#define TARGET_ASM_UNALIGNED_HI_OP NULL
4578346Sbenno#define TARGET_ASM_UNALIGNED_SI_OP NULL
4678346Sbenno#define TARGET_ASM_UNALIGNED_DI_OP NULL
4778346Sbenno#define TARGET_ASM_UNALIGNED_TI_OP NULL
4878346Sbenno#endif /* OBJECT_FORMAT_ELF */
4978346Sbenno
5078346Sbenno/* There is no standard way to handle P{S,D,T}Imode, targets must implement them
5178346Sbenno   if required.  */
5278346Sbenno#define TARGET_ASM_ALIGNED_PSI_OP NULL
5378346Sbenno#define TARGET_ASM_UNALIGNED_PSI_OP NULL
5478346Sbenno#define TARGET_ASM_ALIGNED_PDI_OP NULL
5578346Sbenno#define TARGET_ASM_UNALIGNED_PDI_OP NULL
5678346Sbenno#define TARGET_ASM_ALIGNED_PTI_OP NULL
5778346Sbenno#define TARGET_ASM_UNALIGNED_PTI_OP NULL
5878346Sbenno
5978346Sbenno#if !defined(TARGET_ASM_CONSTRUCTOR) && !defined(USE_COLLECT2)
6078346Sbenno# ifdef CTORS_SECTION_ASM_OP
6178346Sbenno#  define TARGET_ASM_CONSTRUCTOR default_ctor_section_asm_out_constructor
6278346Sbenno# else
6378346Sbenno#  ifdef TARGET_ASM_NAMED_SECTION
6478346Sbenno#   define TARGET_ASM_CONSTRUCTOR default_named_section_asm_out_constructor
6578346Sbenno#  else
6678346Sbenno#   define TARGET_ASM_CONSTRUCTOR default_stabs_asm_out_constructor
6778346Sbenno#  endif
6878346Sbenno# endif
6978346Sbenno#endif
7078346Sbenno
7178346Sbenno#if !defined(TARGET_ASM_DESTRUCTOR) && !defined(USE_COLLECT2)
7278346Sbenno# ifdef DTORS_SECTION_ASM_OP
7378346Sbenno#  define TARGET_ASM_DESTRUCTOR default_dtor_section_asm_out_destructor
7478346Sbenno# else
7578346Sbenno#  ifdef TARGET_ASM_NAMED_SECTION
7678346Sbenno#   define TARGET_ASM_DESTRUCTOR default_named_section_asm_out_destructor
7778346Sbenno#  else
7878346Sbenno#   define TARGET_ASM_DESTRUCTOR default_stabs_asm_out_destructor
7978346Sbenno#  endif
8078346Sbenno# endif
8178346Sbenno#endif
8278346Sbenno
8378346Sbenno#if !defined(TARGET_HAVE_CTORS_DTORS)
8478346Sbenno# if defined(TARGET_ASM_CONSTRUCTOR) && defined(TARGET_ASM_DESTRUCTOR)
8578346Sbenno# define TARGET_HAVE_CTORS_DTORS true
8678346Sbenno# endif
8778346Sbenno#endif
8878346Sbenno
8983366Sjulian#ifndef TARGET_TERMINATE_DW2_EH_FRAME_INFO
9078346Sbenno#ifdef EH_FRAME_SECTION_NAME
9178346Sbenno#define TARGET_TERMINATE_DW2_EH_FRAME_INFO false
9278346Sbenno#endif
9378346Sbenno#endif
9478346Sbenno
9578346Sbenno#if !defined(TARGET_ASM_OUTPUT_ANCHOR) && !defined(ASM_OUTPUT_DEF)
9678346Sbenno#define TARGET_ASM_OUTPUT_ANCHOR NULL
9778346Sbenno#endif
9878346Sbenno
9978346Sbenno#define TARGET_ASM_ALIGNED_INT_OP				\
10078346Sbenno		       {TARGET_ASM_ALIGNED_HI_OP,		\
10178346Sbenno			TARGET_ASM_ALIGNED_PSI_OP,		\
10278346Sbenno			TARGET_ASM_ALIGNED_SI_OP,		\
10378346Sbenno			TARGET_ASM_ALIGNED_PDI_OP,		\
10478346Sbenno			TARGET_ASM_ALIGNED_DI_OP,		\
10578346Sbenno			TARGET_ASM_ALIGNED_PTI_OP,		\
10678346Sbenno			TARGET_ASM_ALIGNED_TI_OP}
10778346Sbenno
10878346Sbenno#define TARGET_ASM_UNALIGNED_INT_OP				\
10978346Sbenno		       {TARGET_ASM_UNALIGNED_HI_OP,		\
11078346Sbenno			TARGET_ASM_UNALIGNED_PSI_OP,		\
11178346Sbenno			TARGET_ASM_UNALIGNED_SI_OP,		\
11278346Sbenno			TARGET_ASM_UNALIGNED_PDI_OP,		\
11378346Sbenno			TARGET_ASM_UNALIGNED_DI_OP,		\
11478346Sbenno			TARGET_ASM_UNALIGNED_PTI_OP,		\
11578346Sbenno			TARGET_ASM_UNALIGNED_TI_OP}
11678346Sbenno
11783366Sjulian#if !defined (TARGET_FUNCTION_INCOMING_ARG)
11878346Sbenno#define TARGET_FUNCTION_INCOMING_ARG TARGET_FUNCTION_ARG
11978346Sbenno#endif
12078346Sbenno
12178346Sbenno#include "target-hooks-def.h"
12278346Sbenno
12378346Sbenno#include "hooks.h"
12478346Sbenno#include "targhooks.h"
12578346Sbenno#include "insn-target-def.h"
12678346Sbenno