gdb/
[deliverable/binutils-gdb.git] / sim / ppc / std-config.h
index 76750f941cb97bce13197d5a4164839bdb56f0e8..3b6b94363def36d591e22ebb21fe56cbe260efab 100644 (file)
@@ -1,10 +1,10 @@
 /*  This file is part of the program psim.
 
-    Copyright (C) 1994-1995, Andrew Cagney <cagney@highland.com.au>
+    Copyright 1994, 1995, 2002 Andrew Cagney <cagney@highland.com.au>
 
     This program 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 of the License, or
+    the Free Software Foundation; either version 3 of the License, or
     (at your option) any later version.
 
     This program is distributed in the hope that it will be useful,
@@ -13,8 +13,7 @@
     GNU General Public License for more details.
  
     You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+    along with this program; if not, see <http://www.gnu.org/licenses/>.
  
     */
 
@@ -289,13 +288,21 @@ extern int current_model_issue;
 
 /* Whether or not input/output just uses stdio, or uses printf_filtered for
    output, and polling input for input.  */
-#define DONT_USE_STDIO                 0
+
+#define DONT_USE_STDIO                 2
 #define DO_USE_STDIO                   1
 
 #ifndef WITH_STDIO
-#define WITH_STDIO                     DONT_USE_STDIO
+#define WITH_STDIO                     0
 #endif
 
+extern int current_stdio;
+#define CURRENT_STDIO (WITH_STDIO      \
+                      ? WITH_STDIO     \
+                      : current_stdio)
+
+
+
 /* INLINE CODE SELECTION:
 
    GCC -O3 attempts to inline any function or procedure in scope.  The
@@ -305,7 +312,7 @@ extern int current_model_issue;
    to both eliminate the overhead of function calls and (as a
    consequence) also eliminate further dead code.
 
-   On a CISC (x86) I've found that I can achieve an order of magintude
+   On a CISC (x86) I've found that I can achieve an order of magnitude
    speed improvement (x3-x5).  In the case of RISC (sparc) while the
    performance gain isn't as great it is still significant.
 
@@ -332,7 +339,7 @@ extern int current_model_issue;
          the module is included into a file being compiled, calls to
         its funtions can be eliminated. 2 implies 1.
 
-      INLINE_LOCALS:
+      PSIM_INLINE_LOCALS:
 
          Make internal (static) functions within the module `inline'.
 
@@ -340,7 +347,7 @@ extern int current_model_issue;
 
       INCLUDE_MODULE == (REVEAL_MODULE | INLINE_MODULE)
 
-      ALL_INLINE == (REVEAL_MODULE | INLINE_MODULE | INLINE_LOCALS)
+      ALL_INLINE == (REVEAL_MODULE | INLINE_MODULE | PSIM_INLINE_LOCALS)
 
    In addition to this, modules have been put into two categories.
 
@@ -430,7 +437,7 @@ extern int current_model_issue;
    local function.
 
    Because of the way that GCC parses __attribute__(), the macro's
-   need to be adjacent to the functioin name rather then at the start
+   need to be adjacent to the function name rather than at the start
    of the line vis:
 
        int STATIC_INLINE_MODULE f(void);
@@ -441,7 +448,7 @@ extern int current_model_issue;
 #define REVEAL_MODULE                  1
 #define INLINE_MODULE                  2
 #define INCLUDE_MODULE                 (INLINE_MODULE | REVEAL_MODULE)
-#define INLINE_LOCALS                  4
+#define PSIM_INLINE_LOCALS                     4
 #define ALL_INLINE                     7
 
 /* Your compilers inline reserved word */
@@ -454,16 +461,39 @@ extern int current_model_issue;
 #endif
 #endif
 
+
 /* Your compilers pass parameters in registers reserved word */
 
+#ifndef WITH_REGPARM
+#define WITH_REGPARM                   0
+#endif
+
+/* Your compilers use an alternative calling sequence reserved word */
+
+#ifndef WITH_STDCALL
+#define WITH_STDCALL                   0
+#endif
+
 #if !defined REGPARM
-#if (defined(i386) || defined(i486) || defined(i586) || defined(__i386__) || defined(__i486__) || defined(__i586__)) && WITH_REGPARM
+#if defined(__GNUC__) && (defined(__i386__) || defined(__i486__) || defined(__i586__) || defined(__i686__))
+#if (WITH_REGPARM && WITH_STDCALL)
+#define REGPARM __attribute__((__regparm__(WITH_REGPARM),__stdcall__))
+#else
+#if (WITH_REGPARM && !WITH_STDCALL)
 #define REGPARM __attribute__((__regparm__(WITH_REGPARM)))
 #else
-#define REGPARM
+#if (!WITH_REGPARM && WITH_STDCALL)
+#define REGPARM __attribute__((__stdcall__))
+#endif
+#endif
+#endif
 #endif
 #endif
 
+#if !defined REGPARM
+#define REGPARM
+#endif
+
 
 
 /* Default prefix for static functions */
@@ -475,7 +505,7 @@ extern int current_model_issue;
 /* Default macro to simplify control several of key the inlines */
 
 #ifndef DEFAULT_INLINE
-#define        DEFAULT_INLINE                  INLINE_LOCALS
+#define        DEFAULT_INLINE                  PSIM_INLINE_LOCALS
 #endif
 
 /* Code that converts between hosts and target byte order.  Used on
@@ -549,7 +579,15 @@ extern int current_model_issue;
    a jump table. */
 
 #ifndef DEVICE_INLINE
-#define DEVICE_INLINE                  INLINE_LOCALS
+#define DEVICE_INLINE                  (DEFAULT_INLINE ? PSIM_INLINE_LOCALS : 0)
+#endif
+
+/* Code called used while the device tree is being built.
+
+   Inlining this is of no benefit */
+
+#ifndef TREE_INLINE
+#define TREE_INLINE                    (DEFAULT_INLINE ? PSIM_INLINE_LOCALS : 0)
 #endif
 
 /* Code called whenever information on a Special Purpose Register is
@@ -572,7 +610,7 @@ extern int current_model_issue;
    inline all of their called functions */
 
 #ifndef SEMANTICS_INLINE
-#define SEMANTICS_INLINE               DEFAULT_INLINE
+#define SEMANTICS_INLINE               (DEFAULT_INLINE & ~INLINE_MODULE)
 #endif
 
 /* When using the instruction cache, code to decode an instruction and
@@ -580,7 +618,7 @@ extern int current_model_issue;
    miss in the instruction cache. */
 
 #ifndef ICACHE_INLINE
-#define ICACHE_INLINE                  DEFAULT_INLINE
+#define ICACHE_INLINE                  (DEFAULT_INLINE & ~INLINE_MODULE)
 #endif
 
 /* General functions called by semantics functions but part of the
@@ -589,7 +627,7 @@ extern int current_model_issue;
    code is reduced. */
 
 #ifndef SUPPORT_INLINE
-#define SUPPORT_INLINE                 INLINE_LOCALS
+#define SUPPORT_INLINE                 PSIM_INLINE_LOCALS
 #endif
 
 /* Model specific code used in simulating functional units.  Note, it actaully
@@ -614,13 +652,13 @@ extern int current_model_issue;
    into this file */
 
 #ifndef IDECOCE_INLINE
-#define IDECODE_INLINE                 INLINE_LOCALS
+#define IDECODE_INLINE                 PSIM_INLINE_LOCALS
 #endif
 
 /* psim, isn't actually inlined */
 
 #ifndef PSIM_INLINE
-#define PSIM_INLINE                    INLINE_LOCALS
+#define PSIM_INLINE                    PSIM_INLINE_LOCALS
 #endif
 
 /* Code to emulate os or rom compatibility.  This code is called via a
This page took 0.025813 seconds and 4 git commands to generate.