]>
Commit | Line | Data |
---|---|---|
73a4d10b | 1 | /* Definitions of target machine for gcc for Super-H using sh-superh-elf. |
83ffe9cd | 2 | Copyright (C) 2001-2023 Free Software Foundation, Inc. |
73a4d10b R |
3 | |
4 | This file is part of GNU CC. | |
5 | ||
6 | GNU CC is free software; you can redistribute it and/or modify | |
7 | it under the terms of the GNU General Public License as published by | |
2f83c7d6 | 8 | the Free Software Foundation; either version 3, or (at your option) |
73a4d10b R |
9 | any later version. |
10 | ||
11 | GNU CC is distributed in the hope that it will be useful, | |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 | GNU General Public License for more details. | |
15 | ||
16 | You should have received a copy of the GNU General Public License | |
2f83c7d6 NC |
17 | along with GCC; see the file COPYING3. If not see |
18 | <http://www.gnu.org/licenses/>. */ | |
73a4d10b R |
19 | |
20 | ||
21 | /* This header file is used when the vendor name is set to 'superh'. | |
25e651ca | 22 | config.gcc already configured the compiler for SH4 only and switched |
bd2c6270 | 23 | the default endianness to little (although big endian is still available). |
25e651ca | 24 | This file configures the spec file to the default board configuration |
30dc60c7 | 25 | but in such a way that it can be overridden by a boardspecs file |
73a4d10b R |
26 | (using the -specs= option). This file is expected to disable the |
27 | defaults and provide options --defsym _start and --defsym _stack | |
28 | which are required by the SuperH configuration of GNU ld. | |
29 | ||
6fc0bb99 | 30 | This file is intended to override sh.h. */ |
73a4d10b | 31 | |
73a4d10b R |
32 | #ifndef _SUPERH_H |
33 | #define _SUPERH_H | |
34 | #endif | |
35 | ||
36 | ||
30dc60c7 | 37 | /* Override the linker spec strings to use the new emulation |
73a4d10b R |
38 | The specstrings are concatenated as follows |
39 | LINK_EMUL_PREFIX.(''|'32'|'64'|LINK_DEFAULT_CPU_EMUL).SUBTARGET_LINK_EMUL_SUFFIX | |
40 | */ | |
41 | #undef LINK_EMUL_PREFIX | |
42 | #undef SUBTARGET_LINK_EMUL_SUFFIX | |
43 | ||
44 | #define LINK_EMUL_PREFIX "superh" | |
45 | #define SUBTARGET_LINK_EMUL_SUFFIX "" | |
46 | ||
47 | /* Add the SUBTARGET_LINK_SPEC to add the board and runtime support and | |
48 | change the endianness */ | |
49 | #undef SUBTARGET_LINK_SPEC | |
25e651ca | 50 | #if TARGET_ENDIAN_DEFAULT == MASK_LITTLE_ENDIAN |
73a4d10b R |
51 | #define SUBTARGET_LINK_SPEC "%(board_link) %(ldruntime) %{ml|!mb:-EL}%{mb:-EB}" |
52 | #else | |
53 | #define SUBTARGET_LINK_SPEC "%(board_link) %(ldruntime) %{ml:-EL}%{mb|!ml:-EB}" | |
54 | #endif | |
55 | ||
56 | ||
50fe8924 OE |
57 | /* This is used by the link spec if the boardspecs file is not used |
58 | (for whatever reason). | |
73a4d10b R |
59 | If the boardspecs file overrides this then an alternative can be used. */ |
60 | #undef SUBTARGET_EXTRA_SPECS | |
61 | #define SUBTARGET_EXTRA_SPECS \ | |
62 | { "board_link", "--defsym _start=0x1000 --defsym _stack=0x30000" }, \ | |
63 | { "asruntime", "" }, \ | |
64 | { "cppruntime", "-D__GDB_SIM__" }, \ | |
65 | { "cc1runtime", "" }, \ | |
66 | { "ldruntime", "" }, \ | |
67 | { "libruntime", "-lc -lgloss" } | |
68 | ||
69 | ||
70 | /* Set the SUBTARGET_CPP_SPEC to define __EMBEDDED_CROSS__ which has an effect | |
71 | on newlib and provide the runtime support */ | |
72 | #undef SUBTARGET_CPP_SPEC | |
73 | #define SUBTARGET_CPP_SPEC \ | |
78d310c2 | 74 | "-D__EMBEDDED_CROSS__ %{m4-100*:-D__SH4_100__} %{m4-200*:-D__SH4_200__} %{m4-300*:-D__SH4_300__} %{m4-340:-D__SH4_340__} %{m4-400:-D__SH4_400__} %{m4-500:-D__SH4_500__} \ |
73a4d10b R |
75 | %(cppruntime)" |
76 | ||
77 | /* Override the SUBTARGET_ASM_SPEC to add the runtime support */ | |
78 | #undef SUBTARGET_ASM_SPEC | |
78d310c2 | 79 | #define SUBTARGET_ASM_SPEC "%{m4-100*|m4-200*:-isa=sh4} %{m4-400|m4-340:-isa=sh4-nommu-nofpu} %{m4-500:-isa=sh4-nofpu} %(asruntime)" |
73a4d10b R |
80 | |
81 | /* Override the SUBTARGET_ASM_RELAX_SPEC so it doesn't interfere with the | |
82 | runtime support by adding -isa=sh4 in the wrong place. */ | |
83 | #undef SUBTARGET_ASM_RELAX_SPEC | |
78d310c2 | 84 | #define SUBTARGET_ASM_RELAX_SPEC "%{!m4-100*:%{!m4-200*:%{!m4-300*:%{!m4-340:%{!m4-400:%{!m4-500:-isa=sh4}}}}}}" |
73a4d10b R |
85 | |
86 | /* Create the CC1_SPEC to add the runtime support */ | |
87 | #undef CC1_SPEC | |
88 | #define CC1_SPEC "%(cc1runtime)" | |
89 | ||
90 | #undef CC1PLUS_SPEC | |
91 | #define CC1PLUS_SPEC "%(cc1runtime)" | |
92 | ||
93 | ||
94 | /* Override the LIB_SPEC to add the runtime support */ | |
95 | #undef LIB_SPEC | |
96 | #define LIB_SPEC "%{!shared:%{!symbolic:%(libruntime) -lc}} %{pg:-lprofile -lc}" | |
25e651ca AS |
97 | |
98 | /* Override STARTFILE_SPEC to add profiling and MMU support. */ | |
99 | #undef STARTFILE_SPEC | |
100 | #define STARTFILE_SPEC \ | |
78d310c2 R |
101 | "%{!shared: %{!m4-400*:%{!m4-340*: %{pg:gcrt1-mmu.o%s}%{!pg:crt1-mmu.o%s}}}} \ |
102 | %{!shared: %{m4-340*|m4-400*: %{pg:gcrt1.o%s}%{!pg:crt1.o%s}}} \ | |
25e651ca AS |
103 | crti.o%s \ |
104 | %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}" |