+/**
+ * \file
+ */
+
#ifndef __MONO_MINI_SPARC_H__
#define __MONO_MINI_SPARC_H__
#include <mono/arch/sparc/sparc-codegen.h>
+#include <mono/utils/mono-context.h>
#include <glib.h>
#define MONO_ARCH_CODE_ALIGNMENT 32
-#define MONO_ARCH_RETREG1 sparc_i0
-
#ifdef SPARCV9
#define MONO_SPARC_STACK_BIAS 2047
#else
gpointer ebp;
};
-typedef struct MonoContext {
- guint8 *ip;
- gpointer *sp;
- gpointer *fp;
-} MonoContext;
-
typedef struct MonoCompileArch {
gint32 lmf_offset;
gint32 localloc_offset;
- gint32 float_spill_slot_offset;
+ void *float_spill_slot;
} MonoCompileArch;
-#define MONO_CONTEXT_SET_IP(ctx,eip) do { (ctx)->ip = (gpointer)(eip); } while (0);
-#define MONO_CONTEXT_SET_BP(ctx,ebp) do { (ctx)->fp = (gpointer*)(ebp); } while (0);
-#define MONO_CONTEXT_SET_SP(ctx,esp) do { (ctx)->sp = (gpointer*)(esp); } while (0);
-
-#define MONO_CONTEXT_GET_IP(ctx) ((gpointer)((ctx)->ip))
-#define MONO_CONTEXT_GET_BP(ctx) ((gpointer)((ctx)->fp))
-#define MONO_CONTEXT_GET_SP(ctx) ((gpointer)((ctx)->sp))
-
#define MONO_INIT_CONTEXT_FROM_FUNC(ctx,start_func) do { \
mono_arch_flush_register_windows (); \
MONO_CONTEXT_SET_IP ((ctx), (start_func)); \
MONO_CONTEXT_SET_SP ((ctx), __builtin_frame_address (0)); \
} while (0)
-#ifndef __linux__
-/*
- * Can't use sigaction on sparc/linux, since it doesn't support SA_SIGINFO. Instead, we
- * have to use the obsolete sigcontext parameter:
- * http://www.ussg.iu.edu/hypermail/linux/kernel/0110.3/1531.html.
- */
+#define MONO_ARCH_INIT_TOP_LMF_ENTRY(lmf) do { (lmf)->ebp = -1; } while (0)
+
#define MONO_ARCH_USE_SIGACTION 1
-#endif
#ifdef HAVE_WORKING_SIGALTSTACK
/*#define MONO_ARCH_SIGSEGV_ON_ALTSTACK*/
#define MONO_ARCH_EMULATE_LCONV_TO_R8_UN 1
#define MONO_ARCH_EMULATE_FREM 1
#define MONO_ARCH_NEED_DIV_CHECK 1
-#define MONO_ARCH_HAVE_THROW_CORLIB_EXCEPTION 1
-#define MONO_ARCH_HAVE_IMT 1
#define MONO_ARCH_IMT_REG sparc_g1
#define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS 1
+#define MONO_ARCH_HAVE_TLS_INIT 1
+
+void mono_arch_tls_init (void);
#ifdef SPARCV9
#define MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS