diff options
Diffstat (limited to 'gcc/config/arm/netbsd.h')
-rw-r--r-- | gcc/config/arm/netbsd.h | 150 |
1 files changed, 0 insertions, 150 deletions
diff --git a/gcc/config/arm/netbsd.h b/gcc/config/arm/netbsd.h deleted file mode 100644 index 4a1adbae991..00000000000 --- a/gcc/config/arm/netbsd.h +++ /dev/null @@ -1,150 +0,0 @@ -/* NetBSD/arm a.out version. - Copyright (C) 1993, 1994, 1997, 1998, 2003, 2004, 2005, 2007, 2008, 2010 - Free Software Foundation, Inc. - Contributed by Mark Brinicombe (amb@physig.ph.kcl.ac.uk) - - This file is part of GCC. - - GCC is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published - by the Free Software Foundation; either version 3, or (at your - option) any later version. - - GCC is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with GCC; see the file COPYING3. If not see - <http://www.gnu.org/licenses/>. */ - -/* Run-time Target Specification. */ -#undef TARGET_VERSION -#define TARGET_VERSION fputs (" (ARM/NetBSD)", stderr); - -/* Unsigned chars produces much better code than signed. */ -#define DEFAULT_SIGNED_CHAR 0 - -/* Since we always use GAS as our assembler we support stabs. */ -#define DBX_DEBUGGING_INFO 1 - -/*#undef ASM_DECLARE_FUNCTION_NAME*/ - -/* ARM6 family default cpu. */ -#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6 - -#undef TARGET_DEFAULT -#define TARGET_DEFAULT (MASK_APCS_FRAME) - -/* Some defines for CPP. - arm32 is the NetBSD port name, so we always define arm32 and __arm32__. */ -#define TARGET_OS_CPP_BUILTINS() \ - do { \ - NETBSD_OS_CPP_BUILTINS_AOUT(); \ - builtin_define_std ("arm32"); \ - builtin_define_std ("unix"); \ - builtin_define_std ("riscbsd"); \ - } while (0) - -#undef SUBTARGET_EXTRA_SPECS -#define SUBTARGET_EXTRA_SPECS \ - { "netbsd_cpp_spec", NETBSD_CPP_SPEC }, \ - { "netbsd_link_spec", NETBSD_LINK_SPEC_AOUT }, - -#undef CPP_SPEC -#define CPP_SPEC "\ -%(cpp_cpu_arch) %(cpp_float) %(cpp_endian) %(netbsd_cpp_spec) \ -" - -/* Because TARGET_DEFAULT sets MASK_SOFT_FLOAT */ -#undef CPP_FLOAT_DEFAULT_SPEC -#define CPP_FLOAT_DEFAULT_SPEC "-D__SOFTFP__" - -/* Pass -X to the linker so that it will strip symbols starting with 'L' */ -#undef LINK_SPEC -#define LINK_SPEC "-X %(netbsd_link_spec)" - -#undef SIZE_TYPE -#define SIZE_TYPE "unsigned int" - -#undef PTRDIFF_TYPE -#define PTRDIFF_TYPE "int" - -/* We don't have any limit on the length as out debugger is GDB. */ -#undef DBX_CONTIN_LENGTH - -/* NetBSD does its profiling differently to the Acorn compiler. We - don't need a word following the mcount call; and to skip it - requires either an assembly stub or use of fomit-frame-pointer when - compiling the profiling functions. Since we break Acorn CC - compatibility below a little more won't hurt. */ - -#undef ARM_FUNCTION_PROFILER -#define ARM_FUNCTION_PROFILER(STREAM,LABELNO) \ -{ \ - fprintf(STREAM, "\tmov\t%sip, %slr\n", REGISTER_PREFIX, REGISTER_PREFIX); \ - fprintf(STREAM, "\tbl\tmcount\n"); \ -} - -/* On the ARM `@' introduces a comment, so we must use something else - for .type directives. */ -#undef TYPE_OPERAND_FMT -#define TYPE_OPERAND_FMT "%%%s" - -/* NetBSD uses the old PCC style aggregate returning conventions. */ -#undef DEFAULT_PCC_STRUCT_RETURN -#define DEFAULT_PCC_STRUCT_RETURN 1 - -/* Although not normally relevant (since by default, all aggregates - are returned in memory) compiling some parts of libc requires - non-APCS style struct returns. */ -#undef TARGET_RETURN_IN_MEMORY - -/* VERY BIG NOTE : Change of structure alignment for RiscBSD. - There are consequences you should be aware of... - - Normally GCC/arm uses a structure alignment of 32 for compatibility - with armcc. This means that structures are padded to a word - boundary. However this causes problems with bugged NetBSD kernel - code (possibly userland code as well - I have not checked every - binary). The nature of this bugged code is to rely on sizeof() - returning the correct size of various structures rounded to the - nearest byte (SCSI and ether code are two examples, the vm system - is another). This code breaks when the structure alignment is 32 - as sizeof() will report a word=rounded size. By changing the - structure alignment to 8. GCC will conform to what is expected by - NetBSD. - - This has several side effects that should be considered. - 1. Structures will only be aligned to the size of the largest member. - i.e. structures containing only bytes will be byte aligned. - structures containing shorts will be half word aligned. - structures containing ints will be word aligned. - - This means structures should be padded to a word boundary if - alignment of 32 is required for byte structures etc. - - 2. A potential performance penalty may exist if strings are no longer - word aligned. GCC will not be able to use word load/stores to copy - short strings. - - This modification is not encouraged but with the present state of the - NetBSD source tree it is currently the only solution that meets the - requirements. */ -#undef DEFAULT_STRUCTURE_SIZE_BOUNDARY -#define DEFAULT_STRUCTURE_SIZE_BOUNDARY 8 - -/* Clear the instruction cache from `BEG' to `END'. This makes a - call to the ARM32_SYNC_ICACHE architecture specific syscall. */ -#define CLEAR_INSN_CACHE(BEG, END) \ -{ \ - extern int sysarch(int number, void *args); \ - struct { \ - unsigned int addr; \ - int len; \ - } s; \ - s.addr = (unsigned int)(BEG); \ - s.len = (END) - (BEG); \ - (void)sysarch(0, &s); \ -} |