#ifndef __MONO_MONO_CONTEXT_H__
#define __MONO_MONO_CONTEXT_H__
-#include <glib.h>
-
#include "mono-compiler.h"
#include "mono-sigcontext.h"
#include "mono-machine.h"
* MONO_CONTEXT_GET_CURRENT captures the current context as close as possible. One reg might be clobbered
* to hold the address of the target MonoContext. It will be a caller save one, so should not be a problem.
*/
-#if defined(MONO_CROSS_COMPILE)
-
-typedef struct {} MonoContext;
-
-#define MONO_CONTEXT_SET_IP(ctx,ip) g_assert_not_reached ()
-#define MONO_CONTEXT_SET_BP(ctx,bp) g_assert_not_reached ()
-#define MONO_CONTEXT_SET_SP(ctx,sp) g_assert_not_reached ()
-
-#define MONO_CONTEXT_GET_IP(ctx) NULL
-#define MONO_CONTEXT_GET_BP(ctx) NULL
-#define MONO_CONTEXT_GET_SP(ctx) NULL
-
-#define MONO_CONTEXT_GET_CURRENT(ctx) do {} while (0)
-
-#elif defined(__i386__) || defined(TARGET_X86)
+#if (defined(__i386__) && !defined(MONO_CROSS_COMPILE)) || (defined(TARGET_X86))
/*HACK, move this to an eventual mono-signal.c*/
#if defined( __linux__) || defined(__sun) || defined(__APPLE__) || defined(__NetBSD__) || \
#define MONO_ARCH_HAS_MONO_CONTEXT 1
-#elif defined(__x86_64__) || defined(TARGET_AMD64) /* defined(__i386__) */
+#elif (defined(__x86_64__) && !defined(MONO_CROSS_COMPILE)) || (defined(TARGET_AMD64)) /* defined(__i386__) */
#include <mono/arch/amd64/amd64-codegen.h>
#define MONO_ARCH_HAS_MONO_CONTEXT 1
-#elif defined(__arm__) || defined(TARGET_ARM) /* defined(__x86_64__) */
+#elif (defined(__arm__) && !defined(MONO_CROSS_COMPILE)) || (defined(TARGET_ARM)) /* defined(__x86_64__) */
#include <mono/arch/arm/arm-codegen.h>
#if defined(HOST_WATCHOS)
#define MONO_CONTEXT_GET_CURRENT(ctx) do { \
+ gpointer _dummy; \
+ ctx.regs [ARMREG_SP] = &_dummy; \
} while (0);
#else
#define MONO_ARCH_HAS_MONO_CONTEXT 1
-#elif defined(__aarch64__) || defined(TARGET_ARM64)
+#elif (defined(__aarch64__) && !defined(MONO_CROSS_COMPILE)) || (defined(TARGET_ARM64))
#include <mono/arch/arm64/arm64-codegen.h>
return fp;
}
-#elif (defined(__mips__) || defined(TARGET_MIPS)) && SIZEOF_REGISTER == 4 /* defined(__ia64__) */
+#elif ((defined(__mips__) && !defined(MONO_CROSS_COMPILE)) || (defined(TARGET_MIPS))) && SIZEOF_REGISTER == 4 /* defined(__ia64__) */
+
+#define MONO_ARCH_HAS_MONO_CONTEXT 1
#include <mono/arch/mips/mips-codegen.h>