2004-08-05 Zoltan Varga <vargaz@freemail.hu>
authorZoltan Varga <vargaz@gmail.com>
Thu, 5 Aug 2004 12:08:03 +0000 (12:08 -0000)
committerZoltan Varga <vargaz@gmail.com>
Thu, 5 Aug 2004 12:08:03 +0000 (12:08 -0000)
* mini.c: Use OP_PADD to add offsets to addresses.

* mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.

svn path=/trunk/mono/; revision=31922

mono/mini/ChangeLog
mono/mini/mini-amd64.h
mono/mini/mini.c

index a5b5b753a03e6395f6083d44043d7aee16e6acfe..4f926f8371aa408d662a8fc9ddfe19972f5a2c27 100644 (file)
@@ -1,3 +1,9 @@
+2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
+
+       * mini.c: Use OP_PADD to add offsets to addresses.
+
+       * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
+
 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
 
        * mini-sparc.c (mono_arch_emit_epilog): fix check
index 16d92d08b332f6202e4af65233e4b2c8bc7b8dc7..2d34e717833618d24b53c5555009b6b6fbbf7336 100644 (file)
@@ -143,7 +143,7 @@ typedef struct {
 # define SC_ESP sc_esp
 # define SC_EDI sc_edi
 # define SC_ESI sc_esi
-#elif defined(__x86_64__)
+#else
 # define SC_EAX rax
 # define SC_EBX rbx
 # define SC_ECX rcx
@@ -162,16 +162,7 @@ typedef struct {
 # define SC_R13 r13
 # define SC_R14 r14
 # define SC_R15 r15
-#else
-# define SC_EAX eax
-# define SC_EBX ebx
-# define SC_ECX ecx
-# define SC_EDX edx
-# define SC_EBP ebp
-# define SC_EIP eip
-# define SC_ESP esp
-# define SC_EDI edi
-# define SC_ESI esi
+
 #endif
 
 #define MONO_CONTEXT_SET_IP(ctx,ip) do { (ctx)->rip = (long)(ip); } while (0); 
@@ -191,8 +182,16 @@ typedef struct {
 #define MONO_ARCH_VARARG_ICALLS 1
 
 #ifndef PLATFORM_WIN32
+
 #ifdef HAVE_WORKING_SIGALTSTACK
-#define MONO_ARCH_SIGSEGV_ON_ALTSTACK
+
+/*
+ * FIXME: For some reason, when sigaltstack is enabled, the uc_mcontext member
+ * in ucontext_t is not at the offset indicated by the definition of ucontext_t.
+ */
+
+//#define MONO_ARCH_SIGSEGV_ON_ALTSTACK
+
 /* NetBSD doesn't define SA_STACK */
 #ifndef SA_STACK
 #define SA_STACK SA_ONSTACK
index 8fddaed70c1af39689045399a58378bce5a09635..a3ca11835b591a71dadbae2bdc83ac5b467c7b88 100644 (file)
@@ -2295,7 +2295,7 @@ handle_box (MonoCompile *cfg, MonoBasicBlock *bblock, MonoInst *val, const gucha
        }
        NEW_TEMPLOAD (cfg, dest, temp);
        NEW_ICONST (cfg, vtoffset, sizeof (MonoObject));
-       MONO_INST_NEW (cfg, add, CEE_ADD);
+       MONO_INST_NEW (cfg, add, OP_PADD);
        add->inst_left = dest;
        add->inst_right = vtoffset;
        add->cil_code = ip;
@@ -4235,7 +4235,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        ins->inst_newa_class = klass;
                        ins->cil_code = ip;
 
-                       MONO_INST_NEW (cfg, add, CEE_ADD);
+                       MONO_INST_NEW (cfg, add, OP_PADD);
                        NEW_ICONST (cfg, vtoffset, sizeof (MonoObject));
                        add->inst_left = ins;
                        add->inst_right = vtoffset;
@@ -4286,7 +4286,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        ins->inst_newa_class = klass;
                        ins->cil_code = ip;
 
-                       MONO_INST_NEW (cfg, add, CEE_ADD);
+                       MONO_INST_NEW (cfg, add, OP_PADD);
                        NEW_ICONST (cfg, vtoffset, sizeof (MonoObject));
                        add->inst_left = ins;
                        add->inst_right = vtoffset;
@@ -4416,7 +4416,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                } else {
                                        MonoInst *store;
                                        NEW_ICONST (cfg, offset_ins, foffset);
-                                       MONO_INST_NEW (cfg, ins, CEE_ADD);
+                                       MONO_INST_NEW (cfg, ins, OP_PADD);
                                        ins->cil_code = ip;
                                        ins->inst_left = *sp;
                                        ins->inst_right = offset_ins;
@@ -4486,7 +4486,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        }
                                } else {
                                        NEW_ICONST (cfg, offset_ins, foffset);
-                                       MONO_INST_NEW (cfg, ins, CEE_ADD);
+                                       MONO_INST_NEW (cfg, ins, OP_PADD);
                                        ins->cil_code = ip;
                                        ins->inst_left = *sp;
                                        ins->inst_right = offset_ins;