+2005-06-04 Zoltan Varga <vargaz@freemail.hu>
+
+ * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
+
2005-06-03 Zoltan Varga <vargaz@freemail.hu>
* mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
{
int template, i;
guint64 instructions [3];
- guint8 gen_buf [8];
+ guint8 gen_buf [16];
Ia64CodegenState gen;
template = ia64_bundle_template (code);
continue;
switch (ins_types_in_template [template][i]) {
+ case IA64_INS_TYPE_A:
+ case IA64_INS_TYPE_M:
+ if ((opcode == 8) && (ia64_ins_x2a (ins) == 2) && (ia64_ins_ve (ins) == 0)) {
+ /* adds */
+ ia64_adds_imm_pred (gen, ia64_ins_qp (ins), ia64_ins_r1 (ins), (guint64)target, ia64_ins_r3 (ins));
+ instructions [i] = gen.instructions [0];
+ }
+ else
+ NOT_IMPLEMENTED;
+ break;
case IA64_INS_TYPE_B:
if ((opcode == 4) && (ia64_ins_btype (ins) == 0)) {
/* br.cond */
alloc_size += 16;
alloc_size = ALIGN_TO (alloc_size, MONO_ARCH_FRAME_ALIGNMENT);
+ cfg->arch.stack_alloc_size = alloc_size;
+
pos = 0;
if (method->save_lmf) {
}
g_free (cinfo);
- if (cfg->stack_offset)
+ if (cfg->arch.stack_alloc_size)
ia64_mov (code, IA64_SP, cfg->arch.reg_saved_sp);
ia64_mov_to_ar_i (code, IA64_PFS, cfg->arch.reg_saved_ar_pfs);
} MonoContext;
typedef struct MonoCompileArch {
+ gint32 stack_alloc_size;
gint32 lmf_offset;
gint32 localloc_offset;
gint32 n_out_regs;
#define MONO_ARCH_HAVE_PIC_AOT 1
#define MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN 1
-
#endif /* __MONO_MINI_IA64_H__ */