aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2011-11-07 03:21:19 +0000
committerRalf Corsepius <corsepiu@gcc.gnu.org>2011-11-07 04:21:19 +0100
commite36c5271e3d07d9033da152da535f7b275ae3392 (patch)
tree3d45413982fb92c6b03adbe1ed1a4ba27bd03379
parent6e25d659c18bf160c3ea39e0a5447ff77f379774 (diff)
downloadgcc-e36c5271e3d07d9033da152da535f7b275ae3392.zip
gcc-e36c5271e3d07d9033da152da535f7b275ae3392.tar.gz
gcc-e36c5271e3d07d9033da152da535f7b275ae3392.tar.bz2
config.gcc (arm*-*-rtemseabi*): New target.
2011-11-06 Sebastian Huber <sebastian.huber@embedded-brains.de> * config.gcc (arm*-*-rtemseabi*): New target. * config/arm/rtems-eabi.h: New. * config/arm/t-rtems-eabi: New. From-SVN: r181064
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config.gcc6
-rw-r--r--gcc/config/arm/rtems-eabi.h29
-rw-r--r--gcc/config/arm/t-rtems-eabi8
4 files changed, 48 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 59c4ffc..ddb1ea6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2011-11-06 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * config.gcc (arm*-*-rtemseabi*): New target.
+ * config/arm/rtems-eabi.h: New.
+ * config/arm/t-rtems-eabi: New.
+
2011-11-06 David S. Miller <davem@davemloft.net>
* config/sparc/sparc.md (UNSPEC_SHORT_LOAD): Delete.
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 1f1c545..ccc142e 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -865,7 +865,7 @@ arm*-*-ecos-elf)
tm_file="dbxelf.h elfos.h newlib-stdint.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/ecos-elf.h"
tmake_file="arm/t-arm arm/t-arm-elf"
;;
-arm*-*-eabi* | arm*-*-symbianelf* )
+arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtemseabi*)
# The BPABI long long divmod functions return a 128-bit value in
# registers r0-r3. Correctly modeling that requires the use of
# TImode.
@@ -879,6 +879,10 @@ arm*-*-eabi* | arm*-*-symbianelf* )
tmake_file="${tmake_file} arm/t-bpabi"
use_gcc_stdint=wrap
;;
+ arm*-*-rtemseabi*)
+ tm_file="${tm_file} rtems.h arm/rtems-eabi.h newlib-stdint.h"
+ tmake_file="${tmake_file} arm/t-bpabi t-rtems arm/t-rtems-eabi"
+ ;;
arm*-*-symbianelf*)
tm_file="${tm_file} arm/symbian.h"
# We do not include t-bpabi for Symbian OS because the system
diff --git a/gcc/config/arm/rtems-eabi.h b/gcc/config/arm/rtems-eabi.h
new file mode 100644
index 0000000..ced98a9
--- /dev/null
+++ b/gcc/config/arm/rtems-eabi.h
@@ -0,0 +1,29 @@
+/* Definitions for RTEMS based ARM systems using EABI.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+
+ 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/>. */
+
+#define HAS_INIT_SECTION
+
+#undef TARGET_OS_CPP_BUILTINS
+#define TARGET_OS_CPP_BUILTINS() \
+ do { \
+ builtin_define ("__rtems__"); \
+ builtin_define ("__USE_INIT_FINI__"); \
+ builtin_assert ("system=rtems"); \
+ TARGET_BPABI_CPP_BUILTINS(); \
+ } while (0)
diff --git a/gcc/config/arm/t-rtems-eabi b/gcc/config/arm/t-rtems-eabi
new file mode 100644
index 0000000..f0e714a
--- /dev/null
+++ b/gcc/config/arm/t-rtems-eabi
@@ -0,0 +1,8 @@
+# Custom RTEMS EABI multilibs
+
+MULTILIB_OPTIONS = mthumb march=armv6-m/march=armv7/march=armv7-m
+MULTILIB_DIRNAMES = thumb armv6-m armv7 armv7-m
+MULTILIB_EXCEPTIONS = march=armv6-m march=armv7 march=armv7-m
+MULTILIB_MATCHES =
+MULTILIB_EXCLUSIONS =
+MULTILIB_OSDIRNAMES =