1 /* Definitions for ARM EABI ucLinux 2 Copyright (C) 2006, 2007, 2008 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 67