+#define MONO_ARCH_HAVE_ATOMIC_ADD 1
+#define MONO_ARCH_HAVE_ATOMIC_EXCHANGE 1
+#define MONO_ARCH_HAVE_ATOMIC_CAS 1
+#define MONO_ARCH_HAVE_IMT 1
+#define MONO_ARCH_HAVE_TLS_GET 1
+#define MONO_ARCH_IMT_REG X86_EDX
+#define MONO_ARCH_VTABLE_REG X86_EDX
+#define MONO_ARCH_RGCTX_REG X86_EDX
+#define MONO_ARCH_HAVE_GENERALIZED_IMT_THUNK 1
+#define MONO_ARCH_HAVE_LIVERANGE_OPS 1
+#define MONO_ARCH_HAVE_XP_UNWIND 1
+#define MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX 1
+#if defined(__linux__) && !defined(HAVE_MOVING_COLLECTOR)
+#define MONO_ARCH_MONITOR_OBJECT_REG X86_EAX
+#endif
+#define MONO_ARCH_HAVE_STATIC_RGCTX_TRAMPOLINE 1
+
+#define MONO_ARCH_HAVE_CMOV_OPS 1
+
+#ifdef MONO_ARCH_SIMD_INTRINSICS
+#define MONO_ARCH_HAVE_DECOMPOSE_OPTS 1
+#endif
+
+#define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS 1
+
+#if !defined(__APPLE__)
+#define MONO_ARCH_AOT_SUPPORTED 1
+#endif
+
+#if defined(__linux__) || defined(__sun)
+#define MONO_ARCH_ENABLE_MONITOR_IL_FASTPATH 1
+#endif
+
+#define MONO_ARCH_GSHARED_SUPPORTED 1
+#define MONO_ARCH_HAVE_LLVM_IMT_TRAMPOLINE 1
+#define MONO_ARCH_LLVM_SUPPORTED 1
+#define MONO_ARCH_SOFT_DEBUG_SUPPORTED 1
+#define MONO_ARCH_HAVE_FIND_JIT_INFO_EXT 1
+#define MONO_ARCH_HAVE_EXCEPTIONS_INIT 1
+
+/* Used for optimization, not complete */
+#define MONO_ARCH_IS_OP_MEMBASE(opcode) ((opcode) == OP_X86_PUSH_MEMBASE)
+
+#define MONO_ARCH_EMIT_BOUNDS_CHECK(cfg, array_reg, offset, index_reg) do { \
+ MonoInst *inst; \
+ MONO_INST_NEW ((cfg), inst, OP_X86_COMPARE_MEMBASE_REG); \
+ inst->inst_basereg = array_reg; \
+ inst->inst_offset = offset; \
+ inst->sreg2 = index_reg; \
+ MONO_ADD_INS ((cfg)->cbb, inst); \
+ MONO_EMIT_NEW_COND_EXC (cfg, LE_UN, "IndexOutOfRangeException"); \
+ } while (0)
+
+typedef struct {
+ guint8 *address;
+ guint8 saved_byte;
+} MonoBreakpointInfo;
+
+extern MonoBreakpointInfo mono_breakpoint_info [MONO_BREAKPOINT_ARRAY_SIZE];
+
+guint8*
+mono_x86_emit_tls_get (guint8* code, int dreg, int tls_offset) MONO_INTERNAL;
+
+guint32
+mono_x86_get_this_arg_offset (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig) MONO_INTERNAL;