From 9f305dcfe120d6d5d0aa6a818ecdcd11e6880682 Mon Sep 17 00:00:00 2001 From: ceriel Date: Mon, 16 Nov 1992 14:31:49 +0000 Subject: [PATCH] Fixed bug in register initialization for offsets > 4096 --- mach/sparc/ce/ce.src/ms_reg.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/mach/sparc/ce/ce.src/ms_reg.c b/mach/sparc/ce/ce.src/ms_reg.c index 771b907ad..f1a3e53d5 100644 --- a/mach/sparc/ce/ce.src/ms_reg.c +++ b/mach/sparc/ce/ce.src/ms_reg.c @@ -171,12 +171,30 @@ static params_to_regs() /* copy required parameters to registers */ int i, j; for (i = 0; i < nr_reg_vars; i++) - if (reg_dat[i].offset > 0) + if (reg_dat[i].offset >= 4096) { + fprint(codefile, "set %d, %s\n", + reg_dat[i].offset, reg_dat[i].reg); + fprint(codefile, "ld [%%l1+%s], %s\n", + reg_dat[i].reg, reg_dat[i].reg); + } + else if (reg_dat[i].offset > 0) fprint(codefile, "ld [%%l1+%d], %s\n", reg_dat[i].offset, reg_dat[i].reg); for (i = 0; i < nr_flt_vars; i++) - if (flt_dat[i].offset > 0) + if (reg_dat[i].offset >= 4092) { + fprint(codefile, "set %d, %s\n", + reg_dat[i].offset, reg_dat[i].reg); + fprint(codefile, "ld [%%l1+%s], %s\n", + reg_dat[i].reg, reg_dat[i].reg); + if (flt_dat[i].size == EM_DSIZE) { + fprint(codefile, "set %d, %s\n", + reg_dat[i].offset+4, reg_dat[i].reg2); + fprint(codefile, "ld [%%l1+%s], %s\n", + reg_dat[i].reg2, reg_dat[i].reg2); + } + } + else if (flt_dat[i].offset > 0) { fprint(codefile, "ld [%%l1+%d], %s\n", flt_dat[i].offset, flt_dat[i].reg); -- 2.34.1