diff options
author | Marco Peereboom <marco@cvs.openbsd.org> | 2010-04-29 03:41:52 +0000 |
---|---|---|
committer | Marco Peereboom <marco@cvs.openbsd.org> | 2010-04-29 03:41:52 +0000 |
commit | 8b321c6cad4b0de5bba49c6d9e8c639884266eb1 (patch) | |
tree | d7094b3e849f4588b6ce9804b356a215deb36cca /gnu | |
parent | 52587c81cbc96d2547c5cdbc2095ad36bf1ad427 (diff) |
Add the bits to compile a working powerpc kernel. This is a work in
progress.
most of the smarts from drahn, ok drahn
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/gcc/gcc/config/openbsd.h | 1 | ||||
-rw-r--r-- | gnu/gcc/gcc/config/rs6000/openbsd.h | 132 | ||||
-rw-r--r-- | gnu/usr.bin/cc/cc_tools/Makefile | 5 | ||||
-rw-r--r-- | gnu/usr.bin/cc/libgcc/Makefile | 10 |
4 files changed, 144 insertions, 4 deletions
diff --git a/gnu/gcc/gcc/config/openbsd.h b/gnu/gcc/gcc/config/openbsd.h index c46e7fb5ea5..1f0d8df922b 100644 --- a/gnu/gcc/gcc/config/openbsd.h +++ b/gnu/gcc/gcc/config/openbsd.h @@ -209,7 +209,6 @@ along with GCC; see the file COPYING. If not see #define TYPE_ASM_OP "\t.type\t" #define SIZE_ASM_OP "\t.size\t" #define SET_ASM_OP "\t.set\t" -#define GLOBAL_ASM_OP "\t.globl\t" /* The following macro defines the format used to output the second operand of the .type assembler directive. */ diff --git a/gnu/gcc/gcc/config/rs6000/openbsd.h b/gnu/gcc/gcc/config/rs6000/openbsd.h new file mode 100644 index 00000000000..25e92a18bec --- /dev/null +++ b/gnu/gcc/gcc/config/rs6000/openbsd.h @@ -0,0 +1,132 @@ +/* Configuration file for an rs6000 OpenBSD target. + Copyright (C) 1999 Free Software Foundation, Inc. + +This file is part of GNU CC. + +GNU CC 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 2, or (at your option) +any later version. + +GNU CC 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 GNU CC; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* XXX need to check ASM_WEAKEN_LABEL/ASM_GLOBALIZE_LABEL. */ + +/* Run-time target specifications. */ +#undef TARGET_OS_CPP_BUILTINS /* FIXME: sysv4.h should not define this! */ +#define TARGET_OS_CPP_BUILTINS() \ + do \ + { \ + OPENBSD_OS_CPP_BUILTINS_ELF(); \ + builtin_define ("__PPC"); \ + builtin_define ("__PPC__"); \ + builtin_define ("__powerpc"); \ + builtin_define ("__powerpc__"); \ + builtin_assert ("cpu=powerpc"); \ + builtin_assert ("machine=powerpc"); \ + } \ + while (0) + +/* Override the default from rs6000.h to avoid conflicts with macros + defined in OpenBSD header files. */ + +#undef RS6000_CPU_CPP_ENDIAN_BUILTINS +#define RS6000_CPU_CPP_ENDIAN_BUILTINS() \ + do \ + { \ + if (BYTES_BIG_ENDIAN) \ + { \ + builtin_define ("__BIG_ENDIAN__"); \ + builtin_assert ("machine=bigendian"); \ + } \ + else \ + { \ + builtin_define ("__LITTLE_ENDIAN__"); \ + builtin_assert ("machine=littleendian"); \ + } \ + } \ + while (0) + +#undef CPP_OS_DEFAULT_SPEC +#define CPP_OS_DEFAULT_SPEC "%(cpp_os_openbsd)" + +#undef LINKER_NAME +#define LINKER_NAME "ld" + +#undef LINK_SPEC +#define LINK_SPEC "%{shared:-shared} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker /usr/libexec/ld.so}} \ + %{static:-static}}" + +#undef LIB_DEFAULT_SPEC +#define LIB_DEFAULT_SPEC "%(lib_openbsd)" + +#undef STARTFILE_DEFAULT_SPEC +#define STARTFILE_DEFAULT_SPEC "%(startfile_openbsd)" + +#undef ENDFILE_DEFAULT_SPEC +#define ENDFILE_DEFAULT_SPEC "%(endfile_openbsd)" + +#undef LINK_START_DEFAULT_SPEC +#define LINK_START_DEFAULT_SPEC "%(link_start_openbsd)" + +#undef LINK_OS_DEFAULT_SPEC +#define LINK_OS_DEFAULT_SPEC "%(link_os_openbsd)" + +#undef TARGET_VERSION +#define TARGET_VERSION fprintf (stderr, " (PowerPC OpenBSD)"); + +/* Default ABI to use */ +#undef RS6000_ABI_NAME +#define RS6000_ABI_NAME "openbsd" + +/* Define this macro as a C expression for the initializer of an + array of string to tell the driver program which options are + defaults for this target and thus do not need to be handled + specially when using `MULTILIB_OPTIONS'. + + Do not define this macro if `MULTILIB_OPTIONS' is not defined in + the target makefile fragment or if none of the options listed in + `MULTILIB_OPTIONS' are set by default. *Note Target Fragment::. */ + +#undef MULTILIB_DEFAULTS +#define MULTILIB_DEFAULTS { "mbig", "mcall-openbsd" } + +/* collect2 support (Macros for initialization). */ + + +/* Don't tell collect2 we use COFF as we don't have (yet ?) a dynamic ld + library with the proper functions to handle this -> collect2 will + default to using nm. */ +#undef OBJECT_FORMAT_COFF + +/* Some code gets optimized incorrectly by move_movables() in loop.c */ +#define BROKEN_MOVE_MOVABLES_P + +/* This must agree with <machine/_types.h> */ +#undef SIZE_TYPE +#define SIZE_TYPE "long unsigned int" + +#undef PTRDIFF_TYPE +#define PTRDIFF_TYPE "long int" + +#undef WCHAR_TYPE +#define WCHAR_TYPE "int" + +#undef WCHAR_TYPE_SIZE +#define WCHAR_TYPE_SIZE 32 + +#undef TRAMPOLINE_SIZE +#define TRAMPOLINE_SIZE 40 + diff --git a/gnu/usr.bin/cc/cc_tools/Makefile b/gnu/usr.bin/cc/cc_tools/Makefile index 5710dc5586f..ed8342a8abf 100644 --- a/gnu/usr.bin/cc/cc_tools/Makefile +++ b/gnu/usr.bin/cc/cc_tools/Makefile @@ -1,5 +1,5 @@ # $FreeBSD: src/gnu/usr.bin/cc/cc_tools/Makefile,v 1.88.8.1 2009/04/15 03:14:26 kensmith Exp $ -# $OpenBSD: Makefile,v 1.4 2010/04/25 21:04:27 kettenis Exp $ +# $OpenBSD: Makefile,v 1.5 2010/04/29 03:41:51 marco Exp $ .include <bsd.own.mk> @@ -39,6 +39,9 @@ TARGET_INC+= elfos.h TARGET_INC+= openbsd.h TARGET_INC+= openbsd-libpthread.h TARGET_INC+= openbsd-native.h +.if ${TARGET_ARCH} == "powerpc" +TARGET_INC+= freebsd-spec.h +.endif .if ${TARGET_ARCH} != "i386" && ${TARGET_ARCH} != "amd64" .if exists(${GCCDIR}/config/${GCC_CPU}/sysv4.h) TARGET_INC+= ${GCC_CPU}/sysv4.h diff --git a/gnu/usr.bin/cc/libgcc/Makefile b/gnu/usr.bin/cc/libgcc/Makefile index 886434bcbe9..1f321a93ca1 100644 --- a/gnu/usr.bin/cc/libgcc/Makefile +++ b/gnu/usr.bin/cc/libgcc/Makefile @@ -1,5 +1,5 @@ # $FreeBSD: src/gnu/lib/libgcc/Makefile,v 1.58.8.1 2009/04/15 03:14:26 kensmith Exp $ -# $OpenBSD: Makefile,v 1.3 2010/04/25 21:04:27 kettenis Exp $ +# $OpenBSD: Makefile,v 1.4 2010/04/29 03:41:51 marco Exp $ .include <bsd.own.mk> @@ -287,4 +287,10 @@ beforeinstall: .include <bsd.lib.mk> -.SUFFIXES: .vis .vo + +.SUFFIXES: .vis .vo .asm + +.if ${TARGET_ARCH} == "powerpc" +.asm.o: + ${CC_T} ${${T}_CFLAGS} -xassembler-with-cpp -o ${.TARGET} ${.ALLSRC:M*.asm} +.endif |