]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/arm/linux-eabi.h
host-hpux.c: Change copyright header to refer to version 3 of the GNU General Public...
[thirdparty/gcc.git] / gcc / config / arm / linux-eabi.h
CommitLineData
077fc835 1/* Configuration file for ARM GNU/Linux EABI targets.
2f83c7d6 2 Copyright (C) 2004, 2005, 2006, 2007
077fc835
KH
3 Free Software Foundation, Inc.
4 Contributed by CodeSourcery, LLC
5
6 This file is part of GCC.
7
8 GCC is free software; you can redistribute it and/or modify it
9 under the terms of the GNU General Public License as published
2f83c7d6 10 by the Free Software Foundation; either version 3, or (at your
077fc835
KH
11 option) any later version.
12
13 GCC is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
16 License for more details.
17
18 You should have received a copy of the GNU General Public License
2f83c7d6
NC
19 along with GCC; see the file COPYING3. If not see
20 <http://www.gnu.org/licenses/>. */
077fc835
KH
21
22/* On EABI GNU/Linux, we want both the BPABI builtins and the
23 GNU/Linux builtins. */
24#undef TARGET_OS_CPP_BUILTINS
25#define TARGET_OS_CPP_BUILTINS() \
26 do \
27 { \
28 TARGET_BPABI_CPP_BUILTINS(); \
29 LINUX_TARGET_OS_CPP_BUILTINS(); \
30 } \
31 while (false)
32
33/* We default to a soft-float ABI so that binaries can run on all
34 target hardware. */
35#undef TARGET_DEFAULT_FLOAT_ABI
36#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
37
38/* We default to the "aapcs-linux" ABI so that enums are int-sized by
39 default. */
40#undef ARM_DEFAULT_ABI
41#define ARM_DEFAULT_ABI ARM_ABI_AAPCS_LINUX
42
43/* Default to armv5t so that thumb shared libraries work.
44 The ARM10TDMI core is the default for armv5t, so set
45 SUBTARGET_CPU_DEFAULT to achieve this. */
46#undef SUBTARGET_CPU_DEFAULT
47#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi
48
49#undef SUBTARGET_EXTRA_LINK_SPEC
50#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux_eabi"
51
52/* Use ld-linux.so.3 so that it will be possible to run "classic"
53 GNU/Linux binaries on an EABI system. */
464aea98
JM
54#undef GLIBC_DYNAMIC_LINKER
55#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
077fc835
KH
56
57/* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
58 use the GNU/Linux version, not the generic BPABI version. */
59#undef LINK_SPEC
60#define LINK_SPEC LINUX_TARGET_LINK_SPEC
61
62/* Use the default LIBGCC_SPEC, not the version in linux-elf.h, as we
63 do not use -lfloat. */
64#undef LIBGCC_SPEC
65
5d7c0add 66/* Clear the instruction cache from `beg' to `end'. This makes an
3303be15 67 inline system call to SYS_cacheflush. */
5d7c0add
DJ
68#undef CLEAR_INSN_CACHE
69#define CLEAR_INSN_CACHE(BEG, END) \
70{ \
71 register unsigned long _beg __asm ("a1") = (unsigned long) (BEG); \
72 register unsigned long _end __asm ("a2") = (unsigned long) (END); \
73 register unsigned long _flg __asm ("a3") = 0; \
74 register unsigned long _scno __asm ("r7") = 0xf0002; \
3303be15 75 __asm __volatile ("swi 0 @ sys_cacheflush" \
5d7c0add
DJ
76 : "=r" (_beg) \
77 : "0" (_beg), "r" (_end), "r" (_flg), "r" (_scno)); \
78}