OSDN Git Service

Daily bump.
[pf3gnuchains/gcc-fork.git] / gcc / config / arm / uclinux-eabi.h
1 /* Definitions for ARM EABI ucLinux
2    Copyright (C) 2006, 2007 Free Software Foundation, Inc.
3    Contributed by Paul Brook <paul@codesourcery.com>
4
5    This file is part of GCC.
6
7    GCC is free software; you can redistribute it and/or modify it
8    under the terms of the GNU General Public License as published
9    by the Free Software Foundation; either version 3, or (at your
10    option) any later version.
11
12    GCC is distributed in the hope that it will be useful, but WITHOUT
13    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
15    License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with GCC; see the file COPYING3.  If not see
19    <http://www.gnu.org/licenses/>.  */
20
21 /* Override settings that are different to the uclinux-elf or
22    bpabi defaults.  */
23
24 #undef  TARGET_DEFAULT
25 #define TARGET_DEFAULT (MASK_SINGLE_PIC_BASE | MASK_INTERWORK)
26
27 /* On EABI GNU/Linux, we want both the BPABI builtins and the
28    GNU/Linux builtins.  */
29 #undef TARGET_OS_CPP_BUILTINS
30 #define TARGET_OS_CPP_BUILTINS()                \
31   do                                            \
32     {                                           \
33       TARGET_BPABI_CPP_BUILTINS();              \
34       builtin_define ("__uClinux__");           \
35       builtin_define ("__gnu_linux__");         \
36       builtin_define_std ("linux");             \
37       builtin_define_std ("unix");              \
38       builtin_assert ("system=linux");          \
39       builtin_assert ("system=unix");           \
40       builtin_assert ("system=posix");          \
41     }                                           \
42   while (false)
43
44 #undef SUBTARGET_EXTRA_LINK_SPEC
45 #define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux_eabi -elf2flt" \
46   " --pic-veneer --target2=abs"
47
48 /* We default to the "aapcs-linux" ABI so that enums are int-sized by
49    default.  */
50 #undef ARM_DEFAULT_ABI
51 #define ARM_DEFAULT_ABI ARM_ABI_AAPCS_LINUX
52
53 /* Clear the instruction cache from `beg' to `end'.  This makes an
54    inline system call to SYS_cacheflush.  */
55 #undef CLEAR_INSN_CACHE
56 #define CLEAR_INSN_CACHE(BEG, END)                                      \
57 {                                                                       \
58   register unsigned long _beg __asm ("a1") = (unsigned long) (BEG);     \
59   register unsigned long _end __asm ("a2") = (unsigned long) (END);     \
60   register unsigned long _flg __asm ("a3") = 0;                         \
61   register unsigned long _scno __asm ("r7") = 0xf0002;                  \
62   __asm __volatile ("swi 0x0            @ sys_cacheflush"               \
63                     : "=r" (_beg)                                       \
64                     : "0" (_beg), "r" (_end), "r" (_flg), "r" (_scno)); \
65 }
66