/* The common simulator framework for GDB, the GNU Debugger.
- Copyright 2002-2013 Free Software Foundation, Inc.
+ Copyright 2002-2019 Free Software Foundation, Inc.
Contributed by Andrew Cagney and Red Hat.
#define INLINE_GLOBALS 4
#define INLINE_LOCALS 8
-#define REGPARM_MODULE 32
-
#define ALL_H_INLINE (H_REVEALS_MODULE | INLINE_GLOBALS | INLINE_LOCALS)
#define ALL_C_INLINE (C_REVEALS_MODULE | INLINE_GLOBALS | INLINE_LOCALS)
/* ??? Temporary, pending decision to always use extern inline and do a vast
cleanup of inline support. */
#ifndef INLINE2
-#if defined (__GNUC__)
+#if defined (__GNUC_GNU_INLINE__) || defined (__GNUC_STDC_INLINE__)
+#define INLINE2 __inline__ __attribute__ ((__gnu_inline__))
+#elif defined (__GNUC__)
#define INLINE2 __inline__
#else
#define INLINE2 /*inline*/
+\f
-/* Your compilers nonstandard function call mechanism prefix */
+/* sim_arange */
-#if !defined 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
-#if (!WITH_REGPARM && WITH_STDCALL)
-#define REGPARM __attribute__((__stdcall__))
-#endif
-#endif
-#endif
+#if !defined (SIM_ARANGE_INLINE) && (DEFAULT_INLINE)
+# define SIM_ARANGE_INLINE (ALL_H_INLINE)
#endif
+
+#if ((H_REVEALS_MODULE_P (SIM_ARANGE_INLINE) || defined (SIM_INLINE_C)) \
+ && !defined (SIM_ARANGE_C) \
+ && (REVEAL_MODULE_P (SIM_ARANGE_INLINE)))
+# if (SIM_ARANGE_INLINE & INLINE_GLOBALS)
+# define INLINE_SIM_ARANGE(TYPE) static INLINE TYPE UNUSED
+# define EXTERN_SIM_ARANGE_P 0
+# else
+# define INLINE_SIM_ARANGE(TYPE) static TYPE UNUSED
+# define EXTERN_SIM_ARANGE_P 0
+# endif
+#else
+# define INLINE_SIM_ARANGE(TYPE) TYPE
+# define EXTERN_SIM_ARANGE_P 1
#endif
-#if !defined REGPARM
-#define REGPARM
+#if (SIM_ARANGE_INLINE & INLINE_LOCALS)
+# define STATIC_INLINE_SIM_ARANGE(TYPE) static INLINE TYPE
+#else
+# define STATIC_INLINE_SIM_ARANGE(TYPE) static TYPE
#endif
+#define STATIC_SIM_ARANGE(TYPE) static TYPE
+
+
-\f
/* *****
sim-bits and sim-endian are treated differently from the rest
of the modules below. Their default value is ALL_H_INLINE.
# define SIM_BITS_INLINE (ALL_H_INLINE)
#endif
-#if (SIM_BITS_INLINE & REGPARM_MODULE)
-# define REGPARM_SIM_BITS REGPARM
-#else
-# define REGPARM_SIM_BITS
-#endif
-
#if ((H_REVEALS_MODULE_P (SIM_BITS_INLINE) || defined (SIM_INLINE_C)) \
&& !defined (SIM_BITS_C) \
&& (REVEAL_MODULE_P (SIM_BITS_INLINE)))
# define INLINE_SIM_BITS(TYPE) static INLINE TYPE UNUSED
# define EXTERN_SIM_BITS_P 0
# else
-# define INLINE_SIM_BITS(TYPE) static TYPE UNUSED REGPARM_SIM_BITS
+# define INLINE_SIM_BITS(TYPE) static TYPE UNUSED
# define EXTERN_SIM_BITS_P 0
# endif
#else
-# define INLINE_SIM_BITS(TYPE) TYPE REGPARM_SIM_BITS
+# define INLINE_SIM_BITS(TYPE) TYPE
# define EXTERN_SIM_BITS_P 1
#endif
#if (SIM_BITS_INLINE & INLINE_LOCALS)
# define STATIC_INLINE_SIM_BITS(TYPE) static INLINE TYPE
#else
-# define STATIC_INLINE_SIM_BITS(TYPE) static TYPE REGPARM_SIM_BITS
+# define STATIC_INLINE_SIM_BITS(TYPE) static TYPE
#endif
#define STATIC_SIM_BITS(TYPE) static TYPE
# define SIM_CORE_INLINE ALL_C_INLINE
#endif
-#if (SIM_CORE_INLINE & REGPARM_MODULE)
-# define REGPARM_SIM_CORE REGPARM
-#else
-# define REGPARM_SIM_CORE
-#endif
-
#if ((H_REVEALS_MODULE_P (SIM_CORE_INLINE) || defined (SIM_INLINE_C)) \
&& !defined (SIM_CORE_C) \
&& (REVEAL_MODULE_P (SIM_CORE_INLINE)))
# define INLINE_SIM_CORE(TYPE) static INLINE TYPE UNUSED
# define EXTERN_SIM_CORE_P 0
#else
-# define INLINE_SIM_CORE(TYPE) static TYPE UNUSED REGPARM_SIM_CORE
+# define INLINE_SIM_CORE(TYPE) static TYPE UNUSED
# define EXTERN_SIM_CORE_P 0
#endif
#else
-# define INLINE_SIM_CORE(TYPE) TYPE REGPARM_SIM_CORE
+# define INLINE_SIM_CORE(TYPE) TYPE
# define EXTERN_SIM_CORE_P 1
#endif
#if (SIM_CORE_INLINE & INLINE_LOCALS)
# define STATIC_INLINE_SIM_CORE(TYPE) static INLINE TYPE
#else
-# define STATIC_INLINE_SIM_CORE(TYPE) static TYPE REGPARM_SIM_CORE
+# define STATIC_INLINE_SIM_CORE(TYPE) static TYPE
#endif
#define STATIC_SIM_CORE(TYPE) static TYPE
# define SIM_ENDIAN_INLINE ALL_H_INLINE
#endif
-#if (SIM_ENDIAN_INLINE & REGPARM_MODULE)
-# define REGPARM_SIM_ENDIAN REGPARM
-#else
-# define REGPARM_SIM_ENDIAN
-#endif
-
#if ((H_REVEALS_MODULE_P (SIM_ENDIAN_INLINE) || defined (SIM_INLINE_C)) \
&& !defined (SIM_ENDIAN_C) \
&& (REVEAL_MODULE_P (SIM_ENDIAN_INLINE)))
# define INLINE_SIM_ENDIAN(TYPE) static INLINE TYPE UNUSED
# define EXTERN_SIM_ENDIAN_P 0
# else
-# define INLINE_SIM_ENDIAN(TYPE) static TYPE UNUSED REGPARM_SIM_ENDIAN
+# define INLINE_SIM_ENDIAN(TYPE) static TYPE UNUSED
# define EXTERN_SIM_ENDIAN_P 0
# endif
#else
-# define INLINE_SIM_ENDIAN(TYPE) TYPE REGPARM_SIM_ENDIAN
+# define INLINE_SIM_ENDIAN(TYPE) TYPE
# define EXTERN_SIM_ENDIAN_P 1
#endif
#if (SIM_ENDIAN_INLINE & INLINE_LOCALS)
# define STATIC_INLINE_SIM_ENDIAN(TYPE) static INLINE TYPE
#else
-# define STATIC_INLINE_SIM_ENDIAN(TYPE) static TYPE REGPARM_SIM_ENDIAN
+# define STATIC_INLINE_SIM_ENDIAN(TYPE) static TYPE
#endif
#define STATIC_SIM_ENDIAN(TYPE) static TYPE
# define SIM_EVENTS_INLINE ALL_C_INLINE
#endif
-#if (SIM_EVENTS_INLINE & REGPARM_MODULE)
-# define REGPARM_SIM_EVENTS REGPARM
-#else
-# define REGPARM_SIM_EVENTS
-#endif
-
#if ((H_REVEALS_MODULE_P (SIM_EVENTS_INLINE) || defined (SIM_INLINE_C)) \
&& !defined (SIM_EVENTS_C) \
&& (REVEAL_MODULE_P (SIM_EVENTS_INLINE)))
# define INLINE_SIM_EVENTS(TYPE) static INLINE TYPE UNUSED
# define EXTERN_SIM_EVENTS_P 0
# else
-# define INLINE_SIM_EVENTS(TYPE) static TYPE UNUSED REGPARM_SIM_EVENTS
+# define INLINE_SIM_EVENTS(TYPE) static TYPE UNUSED
# define EXTERN_SIM_EVENTS_P 0
# endif
#else
-# define INLINE_SIM_EVENTS(TYPE) TYPE REGPARM_SIM_EVENTS
+# define INLINE_SIM_EVENTS(TYPE) TYPE
# define EXTERN_SIM_EVENTS_P 1
#endif
#if (SIM_EVENTS_INLINE & INLINE_LOCALS)
# define STATIC_INLINE_SIM_EVENTS(TYPE) static INLINE TYPE
#else
-# define STATIC_INLINE_SIM_EVENTS(TYPE) static TYPE REGPARM_SIM_EVENTS
+# define STATIC_INLINE_SIM_EVENTS(TYPE) static TYPE
#endif
#define STATIC_SIM_EVENTS(TYPE) static TYPE
# define SIM_FPU_INLINE ALL_C_INLINE
#endif
-#if (SIM_FPU_INLINE & REGPARM_MODULE)
-# define REGPARM_SIM_FPU REGPARM
-#else
-# define REGPARM_SIM_FPU
-#endif
-
#if ((H_REVEALS_MODULE_P (SIM_FPU_INLINE) || defined (SIM_INLINE_C)) \
&& !defined (SIM_FPU_C) \
&& (REVEAL_MODULE_P (SIM_FPU_INLINE)))
# define INLINE_SIM_FPU(TYPE) static INLINE TYPE UNUSED
# define EXTERN_SIM_FPU_P 0
# else
-# define INLINE_SIM_FPU(TYPE) static TYPE UNUSED REGPARM_SIM_FPU
+# define INLINE_SIM_FPU(TYPE) static TYPE UNUSED
# define EXTERN_SIM_FPU_P 0
# endif
#else
-# define INLINE_SIM_FPU(TYPE) TYPE REGPARM_SIM_FPU
+# define INLINE_SIM_FPU(TYPE) TYPE
# define EXTERN_SIM_FPU_P 1
#endif
#if (SIM_FPU_INLINE & INLINE_LOCALS)
# define STATIC_INLINE_SIM_FPU(TYPE) static INLINE TYPE
#else
-# define STATIC_INLINE_SIM_FPU(TYPE) static TYPE REGPARM_SIM_FPU
+# define STATIC_INLINE_SIM_FPU(TYPE) static TYPE
#endif
#define STATIC_SIM_FPU(TYPE) static TYPE
/* sim-types */
-#if (SIM_TYPES_INLINE & REGPARM_MODULE)
-# define REGPARM_SIM_TYPES REGPARM
-#else
-# define REGPARM_SIM_TYPES
-#endif
-
#if ((H_REVEALS_MODULE_P (SIM_TYPES_INLINE) || defined (SIM_INLINE_C)) \
&& !defined (SIM_TYPES_C) \
&& (REVEAL_MODULE_P (SIM_TYPES_INLINE)))
# define INLINE_SIM_TYPES(TYPE) static INLINE TYPE UNUSED
# define EXTERN_SIM_TYPES_P 0
# else
-# define INLINE_SIM_TYPES(TYPE) static TYPE UNUSED REGPARM_SIM_TYPES
+# define INLINE_SIM_TYPES(TYPE) static TYPE UNUSED
# define EXTERN_SIM_TYPES_P 0
# endif
#else
-# define INLINE_SIM_TYPES(TYPE) TYPE REGPARM_SIM_TYPES
+# define INLINE_SIM_TYPES(TYPE) TYPE
# define EXTERN_SIM_TYPES_P 1
#endif
#if (SIM_TYPES_INLINE & INLINE_LOCALS)
# define STATIC_INLINE_SIM_TYPES(TYPE) static INLINE TYPE
#else
-# define STATIC_INLINE_SIM_TYPES(TYPE) static TYPE REGPARM_SIM_TYPES
+# define STATIC_INLINE_SIM_TYPES(TYPE) static TYPE
#endif
#define STATIC_SIM_TYPES(TYPE) static TYPE
# define SIM_MAIN_INLINE (ALL_C_INLINE)
#endif
-#if (SIM_MAIN_INLINE & REGPARM_MODULE)
-# define REGPARM_SIM_MAIN REGPARM
-#else
-# define REGPARM_SIM_MAIN
-#endif
-
#if ((H_REVEALS_MODULE_P (SIM_MAIN_INLINE) || defined (SIM_INLINE_C)) \
&& !defined (SIM_MAIN_C) \
&& (REVEAL_MODULE_P (SIM_MAIN_INLINE)))
# define INLINE_SIM_MAIN(TYPE) static INLINE TYPE UNUSED
# define EXTERN_SIM_MAIN_P 0
# else
-# define INLINE_SIM_MAIN(TYPE) static TYPE UNUSED REGPARM_SIM_MAIN
+# define INLINE_SIM_MAIN(TYPE) static TYPE UNUSED
# define EXTERN_SIM_MAIN_P 0
# endif
#else
-# define INLINE_SIM_MAIN(TYPE) TYPE REGPARM_SIM_MAIN
+# define INLINE_SIM_MAIN(TYPE) TYPE
# define EXTERN_SIM_MAIN_P 1
#endif
#if (SIM_MAIN_INLINE & INLINE_LOCALS)
# define STATIC_INLINE_SIM_MAIN(TYPE) static INLINE TYPE
#else
-# define STATIC_INLINE_SIM_MAIN(TYPE) static TYPE REGPARM_SIM_MAIN
+# define STATIC_INLINE_SIM_MAIN(TYPE) static TYPE
#endif
#define STATIC_SIM_MAIN(TYPE) static TYPE
\f
/* engine */
-#if (ENGINE_INLINE & REGPARM_MODULE)
-# define REGPARM_ENGINE REGPARM
-#else
-# define REGPARM_ENGINE
-#endif
-
#if ((H_REVEALS_MODULE_P (ENGINE_INLINE) || defined (SIM_INLINE_C)) \
&& !defined (ENGINE_C) \
&& (REVEAL_MODULE_P (ENGINE_INLINE)))
# define INLINE_ENGINE(TYPE) static INLINE TYPE UNUSED
# define EXTERN_ENGINE_P 0
# else
-# define INLINE_ENGINE(TYPE) static TYPE UNUSED REGPARM_ENGINE
+# define INLINE_ENGINE(TYPE) static TYPE UNUSED
# define EXTERN_ENGINE_P 0
# endif
#else
-# define INLINE_ENGINE(TYPE) TYPE REGPARM_ENGINE
+# define INLINE_ENGINE(TYPE) TYPE
# define EXTERN_ENGINE_P 1
#endif
#if (ENGINE_INLINE & INLINE_LOCALS)
# define STATIC_INLINE_ENGINE(TYPE) static INLINE TYPE
#else
-# define STATIC_INLINE_ENGINE(TYPE) static TYPE REGPARM_ENGINE
+# define STATIC_INLINE_ENGINE(TYPE) static TYPE
#endif
#define STATIC_ENGINE(TYPE) static TYPE
/* icache */
-#if (ICACHE_INLINE & REGPARM_MODULE)
-# define REGPARM_ICACHE REGPARM
-#else
-# define REGPARM_ICACHE
-#endif
-
#if ((H_REVEALS_MODULE_P (ICACHE_INLINE) || defined (SIM_INLINE_C)) \
&& !defined (ICACHE_C) \
&& (REVEAL_MODULE_P (ICACHE_INLINE)))
# define INLINE_ICACHE(TYPE) static INLINE TYPE UNUSED
# define EXTERN_ICACHE_P 0
#else
-# define INLINE_ICACHE(TYPE) static TYPE UNUSED REGPARM_ICACHE
+# define INLINE_ICACHE(TYPE) static TYPE UNUSED
# define EXTERN_ICACHE_P 0
#endif
#else
-# define INLINE_ICACHE(TYPE) TYPE REGPARM_ICACHE
+# define INLINE_ICACHE(TYPE) TYPE
# define EXTERN_ICACHE_P 1
#endif
#if (ICACHE_INLINE & INLINE_LOCALS)
# define STATIC_INLINE_ICACHE(TYPE) static INLINE TYPE
#else
-# define STATIC_INLINE_ICACHE(TYPE) static TYPE REGPARM_ICACHE
+# define STATIC_INLINE_ICACHE(TYPE) static TYPE
#endif
#define STATIC_ICACHE(TYPE) static TYPE
/* idecode */
-#if (IDECODE_INLINE & REGPARM_MODULE)
-# define REGPARM_IDECODE REGPARM
-#else
-# define REGPARM_IDECODE
-#endif
-
#if ((H_REVEALS_MODULE_P (IDECODE_INLINE) || defined (SIM_INLINE_C)) \
&& !defined (IDECODE_C) \
&& (REVEAL_MODULE_P (IDECODE_INLINE)))
# define INLINE_IDECODE(TYPE) static INLINE TYPE UNUSED
# define EXTERN_IDECODE_P 0
#else
-# define INLINE_IDECODE(TYPE) static TYPE UNUSED REGPARM_IDECODE
+# define INLINE_IDECODE(TYPE) static TYPE UNUSED
# define EXTERN_IDECODE_P 0
#endif
#else
-# define INLINE_IDECODE(TYPE) TYPE REGPARM_IDECODE
+# define INLINE_IDECODE(TYPE) TYPE
# define EXTERN_IDECODE_P 1
#endif
#if (IDECODE_INLINE & INLINE_LOCALS)
# define STATIC_INLINE_IDECODE(TYPE) static INLINE TYPE
#else
-# define STATIC_INLINE_IDECODE(TYPE) static TYPE REGPARM_IDECODE
+# define STATIC_INLINE_IDECODE(TYPE) static TYPE
#endif
#define STATIC_IDECODE(TYPE) static TYPE
/* semantics */
-#if (SEMANTICS_INLINE & REGPARM_MODULE)
-# define REGPARM_SEMANTICS REGPARM
-#else
-# define REGPARM_SEMANTICS
-#endif
-
#if ((H_REVEALS_MODULE_P (SEMANTICS_INLINE) || defined (SIM_INLINE_C)) \
&& !defined (SEMANTICS_C) \
&& (REVEAL_MODULE_P (SEMANTICS_INLINE)))
# define INLINE_SEMANTICS(TYPE) static INLINE TYPE UNUSED
# define EXTERN_SEMANTICS_P 0
#else
-# define INLINE_SEMANTICS(TYPE) static TYPE UNUSED REGPARM_SEMANTICS
+# define INLINE_SEMANTICS(TYPE) static TYPE UNUSED
# define EXTERN_SEMANTICS_P 0
#endif
#else
-# define INLINE_SEMANTICS(TYPE) TYPE REGPARM_SEMANTICS
+# define INLINE_SEMANTICS(TYPE) TYPE
# define EXTERN_SEMANTICS_P 1
#endif
#if EXTERN_SEMANTICS_P
-# define EXTERN_SEMANTICS(TYPE) TYPE REGPARM_SEMANTICS
+# define EXTERN_SEMANTICS(TYPE) TYPE
#else
-# define EXTERN_SEMANTICS(TYPE) static TYPE UNUSED REGPARM_SEMANTICS
+# define EXTERN_SEMANTICS(TYPE) static TYPE UNUSED
#endif
#if (SEMANTICS_INLINE & INLINE_LOCALS)
# define STATIC_INLINE_SEMANTICS(TYPE) static INLINE TYPE
#else
-# define STATIC_INLINE_SEMANTICS(TYPE) static TYPE REGPARM_SEMANTICS
+# define STATIC_INLINE_SEMANTICS(TYPE) static TYPE
#endif
#define STATIC_SEMANTICS(TYPE) static TYPE
# define SUPPORT_INLINE ALL_C_INLINE
#endif
-#if (SUPPORT_INLINE & REGPARM_MODULE)
-# define REGPARM_SUPPORT REGPARM
-#else
-# define REGPARM_SUPPORT
-#endif
-
#if ((H_REVEALS_MODULE_P (SUPPORT_INLINE) || defined (SIM_INLINE_C)) \
&& !defined (SUPPORT_C) \
&& (REVEAL_MODULE_P (SUPPORT_INLINE)))
# define INLINE_SUPPORT(TYPE) static INLINE TYPE UNUSED
# define EXTERN_SUPPORT_P 0
#else
-# define INLINE_SUPPORT(TYPE) static TYPE UNUSED REGPARM_SUPPORT
+# define INLINE_SUPPORT(TYPE) static TYPE UNUSED
# define EXTERN_SUPPORT_P 0
#endif
#else
-# define INLINE_SUPPORT(TYPE) TYPE REGPARM_SUPPORT
+# define INLINE_SUPPORT(TYPE) TYPE
# define EXTERN_SUPPORT_P 1
#endif
#if (SUPPORT_INLINE & INLINE_LOCALS)
# define STATIC_INLINE_SUPPORT(TYPE) static INLINE TYPE
#else
-# define STATIC_INLINE_SUPPORT(TYPE) static TYPE REGPARM_SUPPORT
+# define STATIC_INLINE_SUPPORT(TYPE) static TYPE
#endif
#define STATIC_SUPPORT(TYPE) static TYPE