]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Bi-endian support for moxie
authorAnthony Green <green@moxielogic.com>
Thu, 13 Sep 2012 23:35:48 +0000 (23:35 +0000)
committerAnthony Green <green@gcc.gnu.org>
Thu, 13 Sep 2012 23:35:48 +0000 (23:35 +0000)
From-SVN: r191285

gcc/ChangeLog
gcc/config/moxie/moxie.h
gcc/config/moxie/moxie.opt [new file with mode: 0644]
gcc/config/moxie/t-moxie
gcc/doc/invoke.texi

index e8f13001302a0d1c5a8d90ebf6ffdbff1dcfc760..2af6b3df1cfcf67f86325b9c143edc190c49ee72 100644 (file)
@@ -1,3 +1,17 @@
+2012-09-13  Anthony Green  <green@moxielogic.com>
+
+       * config/moxie/moxie.h (LINK_SPEC): Add bi-endian support.
+       (MULTILIB_DEFAULTS): Define.
+       (ASM_SPEC): Define.
+       (BYTES_BIG_ENDIAN, WORDS_BIG_ENDIAN): Add bi-endian support.
+       (TARGET_CPU_CPP_BUILTINS): Add __MOXIE_LITTLE_ENDIAN__ and
+       __MOXIE_BIG_ENDIAN__.
+       * config/moxie/t-moxie (MULTILIB_DIRNAMES, MULTILIB_OPTIONS):
+       Define.
+       * config/moxie/moxie.opt: New file.
+       * doc/invoke.texi (Moxie Options): Add section documenting -mel
+       and -meb.
+
 2012-09-13  Paolo Carlini  <paolo.carlini@oracle.com>
            Manuel López-Ibáñez  <manu@gcc.gnu.org>
 
index c80d26c5ae98126373fd432a6448fde43789ad67..7604ac427a0e5784c3b239d3a8bc17de5a930463 100644 (file)
 #define LIB_SPEC "%{!shared:%{!symbolic:-lc}}"
 
 #undef  LINK_SPEC
-#define LINK_SPEC "%{h*} %{v:-V} \
+#define LINK_SPEC "%{h*} %{v:-V} %{!mel:-EB} %{mel:-EL}\
                   %{static:-Bstatic} %{shared:-shared} %{symbolic:-Bsymbolic}"
 
+#ifndef MULTILIB_DEFAULTS
+#define MULTILIB_DEFAULTS { "meb" }
+#endif
+
 /* Layout of Source Language Data Types */
 
 #define INT_TYPE_SIZE 32
@@ -192,6 +196,7 @@ enum reg_class
 /* The Overall Framework of an Assembler File */
 
 #undef  ASM_SPEC
+#define ASM_SPEC "%{!mel:-EB} %{mel:-EL}"
 #define ASM_COMMENT_START "#"
 #define ASM_APP_ON ""
 #define ASM_APP_OFF ""
@@ -291,8 +296,8 @@ enum reg_class
 /* Storage Layout */
 
 #define BITS_BIG_ENDIAN 0
-#define BYTES_BIG_ENDIAN 1
-#define WORDS_BIG_ENDIAN 1
+#define BYTES_BIG_ENDIAN ( ! TARGET_LITTLE_ENDIAN )
+#define WORDS_BIG_ENDIAN ( ! TARGET_LITTLE_ENDIAN )
 
 /* Alignment required for a function entry point, in bits.  */
 #define FUNCTION_BOUNDARY 16
@@ -473,8 +478,12 @@ enum reg_class
 
 #define TARGET_CPU_CPP_BUILTINS() \
   { \
-    builtin_define_std ("moxie");              \
-    builtin_define_std ("MOXIE");              \
+    builtin_define_std ("moxie");                      \
+    builtin_define_std ("MOXIE");                      \
+    if (TARGET_LITTLE_ENDIAN)                          \
+      builtin_define ("__MOXIE_LITTLE_ENDIAN__");      \
+    else                                               \
+      builtin_define ("__MOXIE_BIG_ENDIAN__");         \
   }
 
 #define HAS_LONG_UNCOND_BRANCH true
diff --git a/gcc/config/moxie/moxie.opt b/gcc/config/moxie/moxie.opt
new file mode 100644 (file)
index 0000000..00f3ff8
--- /dev/null
@@ -0,0 +1,27 @@
+; Options for the moxie compiler port.
+
+; Copyright (C) 2012 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/>.
+
+meb
+Target RejectNegative Report InverseMask(LITTLE_ENDIAN)
+Generate big-endian code
+
+mel
+Target RejectNegative Report Mask(LITTLE_ENDIAN)
+Generate little-endian code
index 5498ecbb3543bba8407efda0c10788325006685f..9111fd603ab4f38b19482217b5931f12e4bfdcc6 100644 (file)
@@ -18,3 +18,6 @@
 # along with GCC; see the file COPYING3.  If not see
 # <http://www.gnu.org/licenses/>.
 
+MULTILIB_OPTIONS     = meb/mel
+MULTILIB_DIRNAMES    = eb el
+
index 61bca25c70e267d26c8bad005231ba4c3298b8e1..9201ff8a326e24e14e8ee0bbb916a4f771e5813a 100644 (file)
@@ -776,6 +776,9 @@ Objective-C and Objective-C++ Dialects}.
 -mreturn-pointer-on-d0 @gol
 -mno-crt0  -mrelax -mliw -msetlb}
 
+@emph{Moxie Options}
+@gccoptlist{-meb  -mel}
+
 @emph{PDP-11 Options}
 @gccoptlist{-mfpu  -msoft-float  -mac0  -mno-ac0  -m40  -m45  -m10 @gol
 -mbcopy  -mbcopy-builtin  -mint32  -mno-int16 @gol
@@ -10529,6 +10532,7 @@ platform.
 * MIPS Options::
 * MMIX Options::
 * MN10300 Options::
+* Moxie Options::
 * PDP-11 Options::
 * picoChip Options::
 * PowerPC Options::
@@ -16448,6 +16452,23 @@ instructions.  This option defines the preprocessor macro
 
 @end table
 
+@node Moxie Options
+@subsection Moxie Options
+@cindex Moxie Options
+
+@table @gcctabopt
+
+@item -meb
+@opindex meb
+Generate big-endian code.  This is the default for @samp{moxie-*-*}
+configurations.
+
+@item -mel
+@opindex mel
+Generate little-endian code.
+
+@end table
+
 @node PDP-11 Options
 @subsection PDP-11 Options
 @cindex PDP-11 Options