/* src/vm/jit/sparc64/md-abi.c - functions for Sparc ABI
- Copyright (C) 1996-2005, 2006 R. Grafl, A. Krall, C. Kruegel,
- C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring,
- E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich,
- J. Wenninger, Institut f. Computersprachen - TU Wien
+ Copyright (C) 1996-2005, 2006, 2008
+ CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
This file is part of CACAO.
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: md-abi.h 4357 2006-01-22 23:33:38Z twisti $
-
*/
#include "vm/jit/sparc64/md-abi.h"
+#include "vm/descriptor.hpp"
#include "vm/global.h"
#include "vm/jit/abi.h"
-
-#include "vmcore/descriptor.h"
+#include "vm/jit/stack.h"
/* temp */
-#include "mm/memory.h"
+#include "mm/memory.hpp"
#include <assert.h>
-/* helper macros for allocation methods ***************************************/
-#define MIN(a,b) (((a) <= (b)) ? (a) : (b))
/* register descripton array **************************************************/
}
break;
}
+ assert(pd->regoff != 26);
}
/* Since O0 is used for passing return values, this */
s4 stacksize;
s4 min_nat_regs;
+ /* Note: regoff will be set relative to a stack base of $sp+16 */
+
/* set default values */
-
reguse = 0;
- stacksize = 6;
+ stacksize = 6; /* abi params: allocated, but not used */
/* when we are above this, we have to increase the stacksize with every */
/* single argument to create the proper argument array */
case TYPE_LNG:
if (i < INT_NATARG_CNT) {
pd->inmemory = false;
- pd->regoff = reguse;
+ pd->regoff = nat_argintregs[reguse];
reguse++;
md->argintreguse = reguse;
} else {
pd->inmemory = true;
- pd->regoff = reguse;
+ pd->regoff = reguse * 8;
reguse++;
}
-
- if (i >= min_nat_regs)
- stacksize++;
break;
case TYPE_FLT:
case TYPE_DBL:
md->argfltreguse = reguse;
} else {
pd->inmemory = true;
- pd->regoff = reguse;
+ pd->regoff = reguse * 8;
reguse++;
}
- if (i >= min_nat_regs)
- stacksize++;
break;
}
+
+ if (i >= min_nat_regs)
+ stacksize++;
}
/* Since O0 is used for passing return values, this */
*******************************************************************************/
-void md_return_alloc(jitdata *jd, stackptr stackslot)
+void md_return_alloc(jitdata *jd, stackelement_t* stackslot)
{
/* XXX */
}
* c-basic-offset: 4
* tab-width: 4
* End:
+ * vim:noexpandtab:sw=4:ts=4:
*/