2007-07-19 Mark Probst <mark.probst@gmail.com>
[mono.git] / mono / mini / mini-s390.h
index 8fc8d364d30efd27fe2d31b2a56876bf73b9a98b..8681a77cdb2dbf03671390077fca4e1a700810f9 100644 (file)
@@ -4,13 +4,14 @@
 #include <mono/arch/s390/s390-codegen.h>
 #include <signal.h>
 
+#define MONO_ARCH_CPU_SPEC s390_cpu_desc
+
 #define MONO_MAX_IREGS 16
 #define MONO_MAX_FREGS 16
 
 /*-------------------------------------------*/
 /* Parameters used by the register allocator */
 /*-------------------------------------------*/
-#define MONO_ARCH_HAS_XP_LOCAL_REGALLOC 1
 
 #define MONO_EMIT_NEW_MOVE(cfg,dest,offset,src,imm,size) do {                  \
                 MonoInst *inst;                                                \
@@ -215,7 +216,7 @@ typedef struct
 
 #define MONO_ARCH_IS_GLOBAL_IREG(reg) 0
 
-#define MONO_ARCH_FRAME_ALIGNMENT (sizeof (glong))
+#define MONO_ARCH_FRAME_ALIGNMENT 4
 #define MONO_ARCH_CODE_ALIGNMENT 32
 
 #define MONO_ARCH_BASEREG s390_r15
@@ -256,6 +257,7 @@ typedef struct
                MonoS390StackFrame *sframe;                             \
                __asm__ volatile("lr    %0,15" : "=r" (sframe));        \
                MONO_CONTEXT_SET_BP ((ctx), sframe->prev);              \
+               MONO_CONTEXT_SET_SP ((ctx), sframe->prev);              \
                sframe = (MonoS390StackFrame*)sframe->prev;             \
                MONO_CONTEXT_SET_IP ((ctx), sframe->return_address);    \
        } while (0)