X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fmini-s390.h;h=8681a77cdb2dbf03671390077fca4e1a700810f9;hb=5de77e460e40e70f1bd8df5dc83a0044e1e1c82e;hp=cc29d1d508abb366b50589888ddd3d7aa5c0f362;hpb=6adda995dd226ac77c77388ba63fbac33106ad96;p=mono.git diff --git a/mono/mini/mini-s390.h b/mono/mini/mini-s390.h index cc29d1d508a..8681a77cdb2 100644 --- a/mono/mini/mini-s390.h +++ b/mono/mini/mini-s390.h @@ -4,13 +4,14 @@ #include #include +#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; \ @@ -49,7 +50,7 @@ } \ } \ inst->opcode = OP_S390_MOVE; \ - inst->unused = size; \ + inst->backend.size = size; \ mono_bblock_add_inst (cfg->cbb, inst); \ } while (0) @@ -58,32 +59,32 @@ switch (size) { \ case 0: \ MONO_EMIT_NEW_ICONST(cfg, reg, 0); \ - mono_call_inst_add_outarg_reg (call, reg, dr, FALSE); \ + mono_call_inst_add_outarg_reg(s, call, reg, dr, FALSE); \ break; \ case 1: \ MONO_EMIT_NEW_LOAD_MEMBASE_OP(cfg, OP_LOADU1_MEMBASE, \ reg, sr, so); \ - mono_call_inst_add_outarg_reg (call, reg, dr, FALSE); \ + mono_call_inst_add_outarg_reg(s, call, reg, dr, FALSE); \ break; \ case 2: \ MONO_EMIT_NEW_LOAD_MEMBASE_OP(cfg, OP_LOADU2_MEMBASE, \ reg, sr, so); \ - mono_call_inst_add_outarg_reg (call, reg, dr, FALSE); \ + mono_call_inst_add_outarg_reg(s, call, reg, dr, FALSE); \ break; \ case 4: \ MONO_EMIT_NEW_LOAD_MEMBASE_OP(cfg, OP_LOAD_MEMBASE, \ reg, sr, so); \ - mono_call_inst_add_outarg_reg (call, reg, dr, FALSE); \ + mono_call_inst_add_outarg_reg(s, call, reg, dr, FALSE); \ break; \ case 8: \ MONO_EMIT_NEW_LOAD_MEMBASE_OP(cfg, OP_LOAD_MEMBASE, \ reg, sr, so); \ - mono_call_inst_add_outarg_reg (call, reg, dr, FALSE); \ + mono_call_inst_add_outarg_reg(s, call, reg, dr, FALSE); \ dr++; so += sizeof(guint32); \ reg = mono_regstate_next_int (cfg->rs); \ MONO_EMIT_NEW_LOAD_MEMBASE_OP(cfg, OP_LOAD_MEMBASE, \ reg, sr, so); \ - mono_call_inst_add_outarg_reg (call, reg, dr, FALSE); \ + mono_call_inst_add_outarg_reg(s, call, reg, dr, FALSE); \ break; \ } \ } while (0) @@ -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 @@ -254,8 +255,9 @@ typedef struct #define MONO_INIT_CONTEXT_FROM_FUNC(ctx,func) do { \ MonoS390StackFrame *sframe; \ - __asm__ volatile("l %0,0(15)" : "=r" (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)